GE_TXCLEAR| PURGE_RXCLEAR ) ;
清收发缓冲区;
(3)以下初始化CommTimeOuts和设置超时参数 ;
CommTimeOuts.ReadIntervalTimeout = 0×FFFFFFFF ;
CommTimeOuts.ReadTotalTimeoutMultiplier = 0 ;
CommTimeOuts.ReadTotalTimeoutConstant = 4000 ;
CommTimeOuts.WriteTotalTimeoutMultiplier = 0;
CommTimeOuts.WriteTotalTimeoutConstant = 4000 ;
SetCommTimeouts(hCom, &CommTimeOuts ); //设置超时参数
ComDcb.DCBlength = sizeof( DCB ) ;
GetCommState( hCom, &ComDcb ) ; //获取当前参数
ComDcb.BaudRate =9600; //波特率
ComDcb.ByteSize = 8; //数据位
ComDcb.Parity = 0; //校验 0~4=no, odd, even, mark, space
SetCommState(hCom, &ComDcb ) ;
}
(4)设置新的通信参数;
DWORD dRead,dReadNum;
unsigned char buff [200];
dRead=ReadFile(hCom, buff, 100, &dReadNum, NULL); //接收100个字符, dReadNu为实际接收字节数 ;
4.2.2 利用端口函数直接操作
这种方式主要是采用两个端口函数_inp(), _outp()实现对串口的读写,其中读端口函数的原型为: int _inp(unsigned shot port) ;该函数从端口读取一个字节,端口号为0-65535;写端口的函数原型为: int _outp(unsigned shot port, int databyte) 该函数向指定端口写入一个字节。 不同的计算机串口地址可能不一样,通过向串口的控制及收发寄存器进行读写,可以实现灵活的串口通信功能,一般涉及具体的硬件电路讨论比较复杂。
4.2.3 基于MSComm控件
MSCOMM控件,即Microsoft Communication Control,是Microsoft为简化Windows下串行通信编程而提供的ActiveX控件。它提供了一系列标准通信命令的使用接口,利用它可以建立与串口的连接,并可以通过串口连接到其他通信设备(如调制解调器),发出命令,交换数据以及监视和响应串行连接中发生的事件和错误。MSCOMM控件可用于创建电话拨号程序、串口通信程序和功能完备的终端程序,MSCOMM控件提供了两种处理通信的方式[7]。
(1)事件驱动方式。
当通信事件发生时,MSCOMM控件会触发OnComm事件,调用者可以捕获该事件,通过检查其CommEvent属性便可确认发生的是哪种事件或错误,从而进行相应的处理。这种方法的优点是响应及时、可靠性高。
(2)查询方式。
在程序的每个关键功能之后,可以通过检查CommEvent属性的值来查询事件和错误。如果应用程序较小,这种方法可能更可取。例如,如果写一个简单的电话拨号程序,则没有必要每接收1个字符都产生事件,因为惟一等待接收的字符是调制解调器的"确定"响应[14]。
(3) MSComm 控件有很多重要的属性, 其中常用的是如下几个:
①CommPort 设置并返回通信口号, 缺省值为COM1, 可设置1~ 16 个。
② SetStrings 设置并返回波特率、奇偶校验、数据位、停止位
上一篇:
酒店预订系统设计与实现毕业论文(2003doc)