2

我遇到了自定义波特率详细说明的问题——SetCommState()失败并出现波特=921600,但成功出现波特=115200——尽管在 Windows 7 64 位和其他一些奇怪的情况下,如下所示:

1)我正在与之交谈的端口是 Silicon Labs 的 USB 到 UART 适配器,带有他们的驱动程序,但(据我了解;不要引用我的话)重新签名以表明自己来自我的公司(我们与我们需要它的硬件产品一起重新分发它)。当我将硬件设备连接到计算机时,COM 端口出现在设备管理器中,当我断开它时消失。我对此了解不多,但我认为这是正常行为。

2) 921600 波特曾经可以工作,在我出售的应用程序和我编写的示例程序中,我上次使用它时运行良好,但昨天开始失败,理由是现在请求 921600 波特会导致SetCommState()失败,并显示“参数为不正确。” 将请求的波特率更改为 115200 可以SetCommState()成功,但会不可接受地减慢通信速度。

3) 921600 波特在 REALTERM 中仍然有效。我可以将端口设置为 921600 波特并打开它;它“正常工作”,没有错误或其他投诉。我可以像往常一样与我的仪器交谈并获取数据等。

4) 我确实在一两周前重新安装了驱动程序,作为解决 Windows 错误地将大量 COM 端口标记为“正在使用”的问题的一部分。驱动安装声称成功,但无法打开端口;设备管理器显示一个黄色三角形/感叹号/问题。经过多次反复试验,最终发现安装过程未能将 .inf 文件复制到 system32 中。我“手动”将该文件复制到适当的位置,然后正常操作——直到今天。

5) 今天的设备管理器显示 115200 波特是设备可用的最高速率,但我完全不确定它是否显示任何更高的速率;我从不担心它,因为它“有效”。

所以,简而言之,直到昨天一切正常,现在突然我自己的应用程序不会做 921600 波特,但 RealTerm 仍然会。

建议?解决方案?

4

0 回答 0