这几天,修改了下程序结构,在串口中断中设置了一个标志位,当串口还在发送数据的时候,不去处理缓冲区,当串口超过一个时间后,没有收到数据,就认为串口数据已经全部接收完毕,标志位再1,再去查询缓冲区.
现在能够实现,每次发过来的数据,,都保存到RXBUF[CNT] 数据(0~~cnt)
数据接收没有问题了
下一步是对数组里面的数据进行分析
RXBUF[CNT]=[81 03 01 04 00 01 05 08 81 08 01 02 01 06 81 0e 01 05 00 02 03 08 01 81 03 02 04 00 00 03 01 81 08 02 01 0B 81 0e 02 00 00 01 05 81 10 0a 08 01 04 e1 00 05 e1 02 08 81 0e 0b 0a 02 00 00 03 e7 00 03 e7 00 04]
81作为数据的头,数组里面这么多81,现在的想法是
对数组一个个判断,当遇到第一个81时候,把81后面第三个数据(数据长度)读取出来,根据数据长度,再把后面的数据读取出来,放到另外一个数组RX_1[]里面;保存后,继续寻找一个81,,直到RX_n[]..分类好各条协议后,再去做相应的显示处理..
考虑到每条协议数据总长度都没有超过15个字节
现场实际最多也就10条数据打成一个大包发送.
RX_n[]=RX_10[]
感觉这个思路有点笨笨的
有没有朋友做过数据分析的,给些好意见哈
|