我所处的情况是,我们连接的设备可能会根据型号的不同而使用各种不同的波特率。其中一些可能是非标准的,比如10000,但这是另一个问题。
理想情况下,我可以使用Qt自动检测波特率,但从我的研究来看,这可能是不可能的,因为一些原因,我对此没有意见。但是,有没有基于Linux的本地方法可以自动检测连接设备的波特率?即使是第三方开源应用程序也能满足需求。
发布于 2018-06-01 04:57:36
Linux串行驱动程序不支持autobauding,因为大多数硬件都不支持它,因为没有关于它如何工作的协议。它是高度特定于应用程序的。
如果您使用的是FTDI串行适配器,那么它们中的大多数都支持bit-bang模式,并且您应该在这种模式下将它们用作数字示波器,以获得非常容易自动波特率的比特流。
在其他设备上,实现自动波特率的最简单方法是将设备设置为您期望的最高波特率的2-3倍,然后将输入数据视为块数字示波器,并考虑错误比特,并使用启发式方法来检测波特率。它将在数量惊人的情况下成功,但您必须正确地获取数据源的统计模型。我不知道有什么预先设定好的解决方案。
可以使用一些额外的内核支持来更好地对来自UART (无论是硬件还是USB)的输入进行时间戳,从而减少数据中的不确定性,从而减少检测波特率所需的采样数量。
,其中一些可能是非标准的,比如10000,但这是另一个问题。
没什么大不了的。我16年前就明白了:) This is the answer you're looking for。如果您认为API是病态的,就是非常非常病态的,那么您就对了。
https://stackoverflow.com/questions/50606274
复制相似问题