4.3PC串口通信程序设计[7]
在Windows环境下,串口是系统资源的一部分。应用程序要使用串口进行通信,必须在使用前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。在Windows的系统函数中,均包含了支持通信中断的功能。对串口通信而言,Windows为相应的串口设备开放了用户定义的输出缓冲区和输入缓冲区,应用程序只能对输入/输出缓冲区进行操作,数据进出串口的操作均由系统后台完成。以接收为例,系统每接收一个字符就产生一个低级的硬件中断,系统的串口驱动程序将接收到的字符送入输入缓冲区,此时应用程序就可以通过访问输入缓冲区得到接收到的字符信息。
Windows为用户提供了两种方式实现串口通信:
针对串口通信,微软公司专门提供了MSComm控件,
●使用串口通信控件
使用该控件进行串口通信设计是十分方便的,程序员不必花时间去了解较为复杂的API函数。通过简单的修改控件的属性和使用控件提供的方法,就可以实现对串口的配置、完成串口接收和发送数据。
●使用Windows的API应用程序接口Windows中,串口是以文件的形式被打开和访问的。串口和串口通信驱动需要使用设备控制块(DCB,DeviceControlBlock)进行配置。应用程序使用API函数CreateFile打开串口,ReadFile读串口,CreateEvent建立事件对象和CloseHandle关闭串口。
使用串口通信控件进行串口程序开发极为方便,如果不需要对串口进行高级控制一般多选择使用MSComm控件进行开发。本章介绍在VB下使用MSComm控件进行计算机实验室温控系统串口程序开发。4.3.1MSComm控件介绍[7]
MicronsoftCommunicationsControl(MSComm是Micronsoft公司提供的简化Windows下串口通信编程的ActiveX控件,它为应用程序提供了通过串口收发数据的简便方法。在串口编程中,使用MSComm控件非常方便,仅需通过简单的修改控件的属性和使用控件提供的方法,就可以实现对串口的配置,完成串口接收和发送数据等任务。(一)MSComm控件的通信方法
MSComm控件提供了两种处理通信的方式:事件驱动方式和查询方式。
(二)MSComm控件的属性与常数1.CommPort属性
设置并返回通信端口号。端口号的范围为1~16,但如果用PortOpen属性打开一个并不存在的端口时,MSComm控件会产生错误68(设备无效)。该属性应在打开端口之前设置。
2.RThreshold属性设置返回的要接收的字符数。接收字符后,如果Rthreshold属性被设置为0(默认值),则不产生OnComm事件,如果Rthreshold被设成n,则接收缓冲区收到n个字符时MSComm控件产生OnComm事件。3.CTSHolding属性
确定是否通过查询ClearToSend(CTS