新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于ARM9的电梯缓冲器复位时间测试仪的设计

基于ARM9的电梯缓冲器复位时间测试仪的设计

作者:时间:2015-04-18来源:网络收藏

  3.2.1 串口通讯协议说明

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

  模块串口波特率9600,无奇偶效验,一位停止位。控制命令通过一致的帧结构通讯,帧长度4字节:命令+数据0+数据1+校验和。效验和=命令+数据0+数据1的相加和的低8位。系统通过上位机串口直接对下位机模块进行操作。上位机向下位机发送启动16位距离读取命令:Ox22+度数+NC+SUM。当测量完毕时,这时返回的数据是:Ox22+距离高+距离低+SUM;当测量无效时返回的距离高位和低位数据都是Oxff。(注:NC代表任意数据,SUM代表效验和)串行端口在下属于流接口设备,是串行设备接口常规I/O驱动程序的调用与通信相关的具体函数的结合。串行设备被视为用于打开、关闭和读写串行端口的常规的可安装的流设备。的串口函数和Windows的串口函数基本相同,但有几点值得注意:只支持Unicode字符集,在编程时必须特别注意; Windows CE不支持重叠的I/O操作。在所有的流设备驱动程序中,均使用CreateFile来打开串行端口设备,如果这个端口不存在,CreateFile返回ERROR_FILE_NOT_FOUND。因此,用户指定的端口必须是存在并且可用的,而且要遵循Windows CE流接口设备驱动程序的命名规则,即COM后接要打开的端口号再紧跟一个冒号。

  

 

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

  CloseHandle(hPort);

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

  

 

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

  3.2.2 算法分析

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

  

 

  4 结束语

  基于ARM技术和Windows CE系统的电梯缓冲器复位时间测试仪功能齐备,精确性高,实用性强,满足了新的检测规程的要求。本设计方案首次实现了缓冲器复位过程中瞬时脱离点的检测,实现了各种状态时刻的精确计时和状态识别,解决了信号同步,结果自动判断和输出等问题。随着技术的进一步发展,必将向着多功能、智能化的方向发展。

c语言相关文章:c语言教程


网线测试仪相关文章:网线测试仪原理

上一页 1 2 下一页

关键词: ARM9 Windows CE

评论


相关推荐

技术专区

关闭