Delphi实现远程串口的数据采集
http://tech.ddvip.com 2006年07月31日 社区交流
本文详细介绍Delphi实现远程串口的数据采集
(2) 对该串口句柄对应的设备进行配置,如波特率、数据位、停止位、是否奇偶校验等。这部分首先使用GetCommState()函数得到当前的串口配置信息,将这些信息存放在一个DCB结构中,然后对该DCB结构里面的内容进行重新按要求设置,最后调用SetCommState()函数使修改的设置生效。
(3) 配置串口事件。SetCommMask()函数可以设置多个串口信息事件,其串口的信息事件可以是以下任意的组合:
EV_BREAK:在输入时Windows检测到中断;
EV_CTS :CTS信号改变状态;
EV_DSR :DSR信号改变状态;
EV_ERR :发生线状态错误;
EV_RING :检测到振铃指示;
EV_RLSD :接收线信号探测状态发生改变;
EV_RXCHAR:接收缓冲区里收到字符;EV_RXFLAG:收到事件字符,并放入接收缓冲区;
EV_TXEMPTY:输出缓冲区空。
(4) 创建串口监视线程监视串口事件。首先使用WaitForSingleObject()、WaitForCommEvent()、WaitForMultipleObjects()等等待函数对线程进行控制,当没有数据收发时,将线程阻塞,减少其CPU的资源占用;当有数据收发时,线程自动启动,完成数据的收发。最后调用CreateThread()函数启动线程。
(5) 串口使用结束,用CloseHandle()函数关闭串口,回收资源。
由此可见,利用Win32 API函数编写串口通信程序比较复杂,需要掌握大量的系统和通信知识,其优点是实现的功能强大,应用面广泛,适合编写较为复杂的地层次应用程序。
3. 使用MSComm控件进行串口编程
Microsoft Communication Control(MSComm)是Microsoft公司提供的Windows下串行通信编程的AcitiveX控件。该控件具有丰富的与串口通信密切相关的属性及事件,提供了一系列标准通信命令接口,可以用它创建全双工、事件驱动、高效实用的通信程序。MSComm控件通过串口传输和接收数据,为应用程序提供串行通信功能。
作者:YDX 责编:豆豆技术应用