关闭串行端口比较简单,调用CloseHandle函数就能关闭一个打开的串行端口。CloseHandle只有一个参数,即调用CreateFile函数打开端口时返回的句柄,方法如下:

CloseHandle(hPort);

正如使用CreateFile打开串行端口一样,可以使用ReadFile和WriteFile函数来读写串行端口。假设已经调用CreateFile成功地打开了串行端口,那么只需调用ReadFile即可从串行端口读取数据:

如果从主线程读、写大量的串行数据,主线程就会因为等待相对较慢的串行读或串行写操作而阻塞,不能即时处理其他的消息,因此这里用单独的线程来读写串行端口。对于串行端口来说,还必须配置超时值,否则程序可能陷入到一个等待来自串口字符的死循环。通常,配置超时值和配置串口类似。首先用GetCommTimeouts函数获取当前串口的超时值,然后修改CommTimeouts成员变量的值,用SetCommTimeouts设置新的超时值。

本文引用地址:http://www.eepw.com.cn/article/275211.htm

3.2.2算法分析

根据电梯检测规程要求,缓冲器从全压缩到复位的时间应不大于120秒。上位机从上电检测开始每隔0.1秒发送数据采集命令,并将返回的距离值和开关量信号存储于不同的数组待分析。数组s(m)和F(n)分别存储采集到的距离值和开关信号值(0或1),t为每次数据采集循环时间,T为缓冲器回复时间。软件的算法流程图如5所示: