智能车运动状态实时监测系统的设计及实现
下位机向上位机传输的是以每20ms传输一组包涵了光电编码器值(speed),电池电压(battary),舵机转角值(angle),传感器当前状态(sensor)的数据,如果是在理想状态下,上位机接收到的应是上述各值循环出现的周期性数据,此时上位机只需将这些数据按顺序装入各自的数组并画图即可。但在实际的无线传输过程中可能出现数据丢失现象。因此加入适当的数据校验是必要的,否则会出现数据装入错误,造成画图的混乱。我们在实际过程中是在每组数据中加入0x00,0xff的帧头,当数据出现错误时,则舍弃该帧数据。
数据的无线收发部分采用的是SUNRAY公司的QC96型无线收发模块,该模块可以收发波特率为9600的串行数据,距离可达100m。
上位机的数据接收及处理
上位机部份主要四个模块来构成:
·数据接收模块
功能:上位机通过串口采集下位机发送的原始数据。
实现:VC++中实现串口通信一般有二种方式,分别是MSComm控件和Windows API函数。MSComm简洁易用,适用于比较简单的系统,Windows API函数应用较广但比较复杂繁琐,由于此模块的串口通信功能相对简单,本系统采用前者。在实际过程中使用的是事件驱动的方式,这种方法响应及时,可靠性高,并且比查询法占用更少的资源。
·存储模块:
功能:可直接存储采集到的原始数据,以备以后更多的分析处理。
实现:在每个OnComm事件被触发后,将串口接收到的数据直接存入temp临时文件,并且可以在用户的要求下将temp临时文件里的值存储到指定文件。
·数据的分析和处理模块:
功能:将采集到的原始数据进行用户选定的分析和处理,主要包括丢弃错误数据,以及去除帧头并进行数据装入任务,同时也可以对已保存的数据进行分析和处理。
评论