关于如何侦测未知串口通讯波特率的问题求助。

2020-01-23 14:31发布

如题,现在接到了一个没有任何资料的设备,要求通过串口与其进行数据交换。

目前最大的障碍是不知道该串口的波特率,有没有什么好办法探测到串口通讯的波特率?

波特率可以说是本次任务的第一个难点,也是决定成败的关键。如果无法准确地探测到串口的波特率,那么一切后续工作都无从谈起了。

不知道大家以前是否曾经遇到过类似的问题,是通过什么手段解决的?

希望各位坛友不吝赐教,广伸援手,小生在此谢过了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
flyunlimit
1楼-- · 2020-01-25 09:27
回复【13楼】flyunlimit 飞行面条
“波特率可以说是本次任务的第一个难点,也是决定成败的关键。如果无法准确地探测到串口的波特率,那么一切后续工作都无从谈起了。 ”
如何知道未知串口的波特率这应该是一个电子工程师手到擒来的事。用示波器测、用串口助手看,几分钟就搞定的事也值得楼主发帖子,还说这么严重。我不得不怀疑楼主的能力,以及“本次任务的第一个难点”不是串口波特率而是负责人的能力。
-----------------------------------------------------------------------

呵呵,您的态度十分明确,甚至可谓稍显傲慢。
对此我并不觉得奇怪,因为我确实没有交代清楚当时的场景和情况。

但是由于种种原因,我无法将具体情况说的过于明晰,
只能说,串口调试助手是我在发帖之前就已经使用过的,
但是对方的设备是只有在接收到特定的串口指令之后才会发送数据做出响应,
如果没有正确的指令,对方设备会一直保持缄默,
而原来用来发送串口指令的设备被严格控制,
我没有机会对其进行剖析和测量,二者之间通讯连接用的电缆也是不允许破坏的,。

另外还有一个问题您是否考虑过,为什么是未知串口格式?为什么没有任何资料?
按说,既然是上级下达的研究任务,我们是有充足的理由向原设备研制单位索取任何资料,
但是这次的任务不一样,没有这样的条件。
这就说明原设备的研制单位在有意防着我们,活者是在防着任何企图通过串口获取数据的人。
至于防备到什么程度,我只能说是你死我活的地步。
如果让您设计这样一个系统,会轻易暴漏自己设备的通讯格式吗?

如果问题真的如此简单,您又觉得我没有想到,那只能说您低估了我的能力。

这个帖子已经过去近两年的时间了,其实整个项目已经结束了,并且取得了成果。
现在大致说说当时采用的方法和最终的结果吧。

以下内容都是在没有任何资料的情况下,经过大量的数据采集之后对数据进行分析,
并一步步模仿通讯过程摸索出来的。

首先,经过我们的测试和分析,双方设备在一次完整的通讯过程中总共使用了四种波特率,上行和下行各两种,
举个例子,控制方首先以4800的波特率发送指令,长度不定,随后以9600的波特率发送指令执行参数,长度不定。
机载设备在收到这个指令及其参数后,以14400的波特率发送第一个数据包的头,64个字节,接着以115200的波特率发送第一个数据包内容,内容长度不定,至少为256k字节,发送过程中,每128个字节为一组,进行校验,在控制方收到校验字节并进行校验后,必须在5ms之内返回特定指令以继续下一个128字节的通讯过程,否则机载设备将结束通讯过程并有20秒左右的闭锁期,期间不接受任何指令,在数据包发送结束后,以14400的波特率发送16个字节的特定内容,以示该数据包的用途,随后控制方以4800的波特率发送第二组控制指令并以9600的波特率发送第二组指令执行参数,设备进行第二次回应,发送第二个数据包……,如此循环,共8次通讯过程,得到8个数据包,总共将近3M字节的数据量。

如前所述,原设备的控制方设备被严格控制,我们只能使用而不能有任何破坏包括打开机壳之类的操作,而原设备双方通讯连接所用的电缆也是不允许破坏的。我们当时采用的办法是专门订购了配套的接插件,在二者之间的电缆连接处延长一段,并将上行和下行的差分信号共计4条线和地线引出来,经过MAX3491转换成TTL电平之后,送入由FPGA和SDRAM构成的记录设备,将整个通讯过程中上行信号和下行信号的电平时序完整地录制下来,一个字节一个字节地观察,找出规律,再用我们自研的设备一步步模仿控制方的行为,对设备进行操作,并最终完成了数据获取的任务的。

当时【1楼】 armecos 网友提到的“超级现代串口协议分析仪”之类的软件我也测试过,经过分析,这类软件只能监测软件运行的这台计算机上的串口通讯的数据,虽然并不受不同波特率影响,但是前提必须是通讯过程是正确的,也就是说,如果波特率不对,监测软件照样是什么也收不到,或者收到错误的数据。

所以我觉得,这类软件似乎都是通过监测系统的串口缓冲区内容来进行数据分析的,自然不必关心硬件通讯的波特率了。可是如果波特率不对,硬件串口设备收不到正确的数据,那么缓冲区里的数据也就不可能正确,那么这类串口监视软件也就无法监视串口数据了。

都过去两年时间的帖子,又被大家挖出来,真是深感荣幸,上面啰啰嗦嗦说了一大堆,似乎有狡辩之嫌,实则不然,
只是不甘心自己当时费尽心机破_解对方设备层层壁垒的努力被网友用“几分钟就搞定的事”来一笔带过,
同时也意识到,尽管当时还真的没有想到他们搞得这么复杂,但是当时发帖时确实没有说清楚自己遇到的困难,
所以引起大家的不满和鄙视也算是咎由自取了。

还是要感谢上面各位网友的热心帮助和批评指正,小生再一次说声谢过了。
ForkEureka
2楼-- · 2020-01-25 13:16
 精彩回答 2  元偷偷看……
gaoyukun
3楼-- · 2020-01-25 15:58
擦,没看发帖时间。该死的11楼
flyunlimit
4楼-- · 2020-01-25 18:00
其实最后都是波形。
Hz01800475
5楼-- · 2020-01-25 19:50
记起教授给的习作:

教授自制的一个设备, 不知波特率,但知是 8N1,教授按一下键设备就发出一个64位(64x8bits)的讯息。 同学要在单片机实验板上的 LCD 显示这 64位 讯息, 只有一次机会。

全班只有 20% 的人成功。
eblc1388
6楼-- · 2020-01-25 22:12
楼主的做法对我提示很大,没想到串口也玩跳频。

一周热门 更多>