关于串口通信协议的疑惑

2019-08-13 20:46发布

本帖最后由 KC1265005878 于 2017-10-10 16:03 编辑

麻烦各位大神指导下,看看这个是不是完整的一个通信协议,有两种理解方式,很困惑,搞了很久还是弄不明白


第一种理解,这个是完整的应用层通信协议,0x2D是包头,0x20是包尾,中间是数据。
第二种理解,这个不是完整的通信协议,只是把对应的数据给显示出来,包头包尾没有显示出来,只显示对应的数据。

分数不多,麻烦大神们能够给予指导下,谢谢。。。。。。
因为要加上自己的通信协议,再打包上传给上位机,所以要确认这个是不是完整的通信协议。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
KC1265005878
1楼-- · 2019-08-14 12:03
slsdz 发表于 2017-10-10 16:45
还以为你要定义协议。
只吐这些数据,判断0x20就行

是要把电表的数据读出,然后加上自己的协议,再上传给上位机。
关键不知道电表的通信协议,不知道什么时候开始接收数据,什么时候开始停止接收数据,数据无法解析出来,自己的协议就不知怎么加上来
一起哈皮
2楼-- · 2019-08-14 17:08
不知道什么时候接收数据?你用的stm23单片机?有串口中断这玩意自己接收啊。
如果串口只接收这个电表的数据就根本不需要判断什么,创建一个接收缓冲区,开接收中断接收数据到缓冲区,
你程序不断查询缓冲区是否有是数据就好了,要是怕接收不全就查询缓冲区有数据时加个延时就好了。
查询到有数据的时候直接把数据copy到你定的协议帧的数据项里就好了,或者也可以判断一下缓冲区的数据末尾有没有空格或0d0a看是不是正确数据再打包。
非要自己判断数据,就把正负号当帧头,空格或0d0a(回车换行)当帧尾,打包时只去掉帧尾就好了
d1z1y2
3楼-- · 2019-08-14 19:40
 精彩回答 2  元偷偷看……
lvkanger
4楼-- · 2019-08-14 23:52
KC1265005878 发表于 2017-10-10 16:35
恩恩,这个是龙成DLB-1000A电流表,它数据会一直往外发的,不是应答模式。
我还有个安捷伦34401A的电压 ...

应该像9楼说的那样,用串口中断把数据接收到一个缓冲区,然后主程序就判断缓冲区的数据就可以了,数据取出后再打包到你自己的协议里边去。应答模式应该更好做的,主程序发送读取数据的命令,然后中断里边去接收返回的数据就可以了。应答模式就不存在程序处理不及时导致丢数据的问题了。
xlong_06
5楼-- · 2019-08-15 05:08
你可以讲你的电流表串口连接在电脑上面看电流表实际发出的数据是怎样子的,正常的话每次会收到固定字节的数据量,然后你根据每次重复的数据量来解析,每一包数据有时间间隔的,用这个区分一个包就好了。

一周热门 更多>