gpt4 book ai didi

Linux/Qt 自动检测波特率?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:04:18 34 4
gpt4 key购买 nike

我所处的情况是,我们正在连接一个设备,该设备可能会根据型号使用各种不同的波特率。其中一些可能是非标准的,例如 10000,但那是另一天的另一个问题。

理想情况下,我可以使用 Qt 来自动检测波特率,但根据我的研究,由于某些原因,这可能是不可能的,我对此表示同意。但是,是否有任何基于 Linux 的 native 方法来自动检测所连接设备的波特率?即使是第 3 方开源应用程序也足够了。

最佳答案

Linux 串行驱动程序不支持自动波特率,因为大多数硬件不支持它,因为没有就它如何工作达成一致。它是高度特定于应用程序的。

如果您使用的是 FTDI 串行适配器,那么它们中的大多数都支持 bit-bang 模式,您应该在这种模式下将它们用作数字示波器以获得非常容易自动波特率的比特流。

在其他设备上,实现自动波特率的最简单方法是将设备设置为您期望的最高波特率的 2-3 倍,然后像处理分块数字示波器一样处理输入数据,考虑错误位,并使用试探法检测波特率。它会在数量惊人的情况下成功,但您必须正确获取数据源的统计模型。我不知道有任何预先解决的解决方案。

一些额外的内核支持可能需要更好地为来自 UART(无论是硬件还是 USB)的输入添加时间戳,从而减少数据的不确定性,从而减少检测波特率所需的样本数量。

Some of which may be non-standard, like 10000, but that's another problem for another day.

没什么大不了的。我 16 年前就想通了:) This is the answer you're looking for .如果您认为 API 病得很厉害,那么您是对的。

关于Linux/Qt 自动检测波特率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50606274/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com