本帖最后由 KC1265005878 于 2017-10-10 16:03 编辑
麻烦各位大神指导下,看看这个是不是完整的一个通信协议,有两种理解方式,很困惑,搞了很久还是弄不明白
第一种理解,这个是完整的应用层通信协议,0x2D是包头,0x20是包尾,中间是数据。
第二种理解,这个不是完整的通信协议,只是把对应的数据给显示出来,包头包尾没有显示出来,只显示对应的数据。
分数不多,麻烦大神们能够给予指导下,谢谢。。。。。。
因为要加上自己的通信协议,再打包上传给上位机,所以要确认这个是不是完整的通信协议。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
是要把电表的数据读出,然后加上自己的协议,再上传给上位机。
关键不知道电表的通信协议,不知道什么时候开始接收数据,什么时候开始停止接收数据,数据无法解析出来,自己的协议就不知怎么加上来
。
如果串口只接收这个电表的数据就根本不需要判断什么,创建一个接收缓冲区,开接收中断接收数据到缓冲区,
你程序不断查询缓冲区是否有是数据就好了,要是怕接收不全就查询缓冲区有数据时加个延时就好了。
查询到有数据的时候直接把数据copy到你定的协议帧的数据项里就好了,或者也可以判断一下缓冲区的数据末尾有没有空格或0d0a看是不是正确数据再打包。
非要自己判断数据,就把正负号当帧头,空格或0d0a(回车换行)当帧尾,打包时只去掉帧尾就好了
应该像9楼说的那样,用串口中断把数据接收到一个缓冲区,然后主程序就判断缓冲区的数据就可以了,数据取出后再打包到你自己的协议里边去。应答模式应该更好做的,主程序发送读取数据的命令,然后中断里边去接收返回的数据就可以了。应答模式就不存在程序处理不及时导致丢数据的问题了。
一周热门 更多>