首页

 

发表论文

 
自制软件
 
串口通讯
 
VC/C编程
 
网络通讯
 
机器人控制
 
MATLAB
 
   

GSerial程序的使用方法

---兼谈如何用中断方式实现DOS串口通信

作者:龚建伟  版权所有:啸峰工作室http://roaringwind.best.163.com

2001.7.2

     GSerial是我为DOS下串口通信做的一个示例程序,你若是对本文有兴趣,可以立即下载GSerial程序(马上下载GSerial) 。我在“PC机高号中断编程8259初始化及中断服务程序处理”一文中,已经详细地讲了如何在DOS下编程时如何说明中断函数,如何设置中断向量,以及保护现场和退出程序时如何恢复现象,8259的初始化也说得比较详细。你在读完本文后,可以再去看看那篇文章。

这个程序分头文件gserial.h和实现文件gserial.cpp两部分.

首先请注意一下源程序gserial.cpp中开头有这么一段:

/*------------------------------------------------------------------*
GSERIAL.CPP
For asynchronous serial port communications
ATTENTION: Compile this program with Test Stack Overflow OFF.
(TC++3: Options/Compiler/Entry
*------------------------------------------------------------------

你在编程时,注意一下TC++3: 菜单Options/Compiler/Entry中Test Stack Overflow OFF应选上。(保持缺省)

除了类中重载<<

serial& serial::operator<<( char ch )  //发送一个字符

serial &serial::operator<<( char *str ) //发送字符串

我在程序中放置了另两个发送函数

void send_char_com(int portn,int cc)/* send one valid char from the port */
{
while ((read_status_com(portn) & 0x40) == 0);
outportb(portn,cc);
}

void send_string_com(int portn,int strlen,unsigned char *buf)/* send one string from the port */
{
int k; k=0;
do {send_char_com(portn,*(buf + k)); k++;} while ((k < strlen));
}

这是为不习惯用重载的朋友准备的,你可以根据自己的喜好选择。

 

主程序main()函数是一无限循环,以实现随时接收数据,按Esc退出。按其它的键,从串口以ASCII字符形式发送所按的键。

在未修改程序前,你可以这样测试程序功能:

两台计算机用串口线接好后,一台运行本程序,另一台运行串口调试助手(或别的调试工具),串口调试助手中选中自动发送,接好后,运行程序,就可以看到DOS程序的接收数据了,另外,你击任何键,在串口调试助手的接收框中也可以看到所击的字符。

 

回到页顶




 
   
 

                                             

转载本站原版内容,请注明作者,并说明来自http://www.gjwtech.com