打印

串口接受数据怎么区分不同协议?

[复制链接]
2180|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tgyh|  楼主 | 2011-11-5 23:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在需做个转接板,几种协议转接,难题是其中有两个协议帧头相同,只是长度不同,且帧尾是数据位的效验码。协议不是我做的,叫我做个转接板兼容(发一个协议出去就行),现在这两个协议不好判断(其它协议还好),请教高手有什么好的方法??

相关帖子

沙发
zjp8683463| | 2011-11-6 01:36 | 只看该作者
硬件和协议没有联系.

使用特权

评论回复
板凳
宋业科| | 2011-11-6 04:28 | 只看该作者
协议转换要用单片机用软件判断。

使用特权

评论回复
地板
handlike| | 2011-11-6 10:41 | 只看该作者
(1)除了协议长度不同外,第二、第三字节...就没有特征字了?
  如果没有是不是从收到数据中某个字节常为1或0和另一个协议作为区别(这办法有点不太靠谱),可以分析一  下
(2)用一个三串口的MCU。用二个串口接收指定的协议如1口指定A协议,2口B协议,从第三个串口输出1协议  (或2协议)

使用特权

评论回复
5
tgyh|  楼主 | 2011-11-6 15:36 | 只看该作者
我没有表述清楚,我是想当串口接到这两个协议的时候应该用什么方法去区分它,因为我要把它们转化成另一种协议指令发送出去。 2# zjp8683463

使用特权

评论回复
6
liaopei| | 2011-11-6 16:32 | 只看该作者
好好学习

使用特权

评论回复
7
chunyang| | 2011-11-6 21:46 | 只看该作者
必须弄清楚原协议,否则没法重新生成新的协议。

使用特权

评论回复
8
zjp8683463| | 2011-11-6 22:21 | 只看该作者
如果有结束符就好办些.

使用特权

评论回复
9
yangjiawxl| | 2011-11-6 23:05 | 只看该作者
分析协议啊

使用特权

评论回复
10
ejack| | 2011-11-7 07:28 | 只看该作者
请仔细分析这两个协议中可供区分的信息。如果协议不是你做的,把作者或维护者揪过来一起分析。
例如长度不同,那么这个长度信息是否包含在帧内?如果包含则有希望区分。

如果当初协议只是简单地约定为“帧头标识符+数据段+帧尾校验符”的方式,那么要想简单区分是不可能了,只能由作者或维护者分析两种协议数据段内容的重复性,并提供给你判定依据。

使用特权

评论回复
11
HWM| | 2011-11-7 08:03 | 只看该作者
to LZ:

分析两个协议。若有歧义的话,必须修改原协议以消除歧义。如果无歧义,将其合并作为单一协议看待即可。

“难题是其中有两个协议帧头相同,只是长度不同,且帧尾是数据位的效验码。”,若是定长的,明显有歧义。

使用特权

评论回复
12
shorthorn| | 2011-11-7 08:34 | 只看该作者
若不是标准工业协议,最好找协议的资料,要没有,就自己画时间比较计算,难的是在校验部分,格式的话你利用多组数据比较就可以

使用特权

评论回复
13
xxdcq| | 2011-11-7 16:39 | 只看该作者
我们的模块可以实现此功能
不管什么协议都可以转成一种固定协议
不过模块需要先操作学习各种协议,然后就可以识别之
http://www.yofeng.com/LrComCtr.asp

使用特权

评论回复
14
tgyh|  楼主 | 2011-11-7 23:44 | 只看该作者
首先谢谢各位的热心帮助,公司不能上网,不能及时回复大家关于问题的疑惑,今天去分析了下两个协议(A、B)的组成,A和B帧头相同,地址位2字节,数据位6字节各自定义的,但是A在地址位后多了1个字节比如:0xF0(不知原因),最后是各自的效验算法。应该作者自己定义的已不知去向,以前两协议是分开不同模块对应用的,现在要整合,现在想把协议改过来不太好办,很久的东西了。

使用特权

评论回复
15
ejack| | 2011-11-8 07:27 | 只看该作者
虽然A多一个固定字节,但可能与B数据段的有效内容重复,因此也不能作为判定的依据。
目前来看A和B只能在接收完成后进行长度判断进行区分。不过这样是否与其它协议产生冲突,LZ需自行定夺。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

53

帖子

0

粉丝