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程序的接收数据了,另外,你击任何键,在串口调试助手的接收框中也可以看到所击的字符。
回到页顶
|