当前位置:首页 > 电子产品 > 正文

仪表每次采集数据后通过串行口给微机发送一串数据

仪表每次采集数据后通过串行口给微机发送一串数据  第1张

仪表每次传送所有传感器的数据,即60个传感器的数据。对于每个传感器的数据都由12个字节组成,以OOFFH开头,占用2个字节;然后是数据内容,占用8个字节,其中前两个表示传感器的编号,*后两个字节是校验位。与主动发送式智能仪表的通信就是不需要微机发送命令,而智能仪表主动地将数据发送到微机上,从而实现数据的采集与处理。仪表每次传送的数据串在内存缓冲区内以队列的形式存放。整个队列设一个头指针head和一个尾指针atil。尾指针指向队列尾,头指针随着数据的提取而改变。仪表每次采集数据后,通过串行口给微机发送一串数据,按照tRhreshofd参数的设置,当接收到固定长度即12*60个字符后,就触发ComEvReeeive事件,将这一串数据接收到微机上,存放在内存缓冲区里,等待触发itmer事件来处理数据。

利用itmer事件处理数据。微机触发itmer事件来处理数据。每次从缓冲区内取出60个传感器的一串数据,以队列的形式存放。其中每个传感器发送的数据都是以25开头,*后两字节为校验位。对每个记录仪来说,当微机接收到一串数据后,如果不是队列尾,而且不等于255,则将指针下移一位。如果指针头haed指向数据尾atil,则进行处理下一个记录仪的数据。如果指针头head没有指向数据尾atil,而取到的数据为25,则开始接收数据,进行下面的处理:取出数据,将head下移一位,直到取到的字节数等于每个传感器发送数据长度即12减2时,跟校验字节比较,如果相等则说明接收数据正确,将此数据保存,然后将接收数据个数加1,再进行下一串数据的处理;如果不正确,则直接进行下一串数据的处理。当接收数据个数等于60的时候,说明微机接收了60个传感器的数据,一次接收处理数据完成。当head指向atil时,就转向另一个记录仪进行操作。

你可能想看: