2

我正在使用 Qt 5.1,当我的应用程序(在 v4.8.4 中使用 QextSerialPort 工作)无法通信时,我尝试了 ...\5.1.1\Src\qtserialport\examples\serialport\terminal 中的示例。这也失败了。

我有一个模拟 COM 端口的简单 USB 加密狗。如果我使用 RealTerm,我可以向它发送 AT 命令并恢复正常。

但是Qt自带的终端例子并不能与之通信。我查看了一个 API 窥探器,我得到了一个不成功的返回,错误为 WaitCommEvent 和 WriteFile 的“997:Overlapped I/O operation is in progress”。

我在 Windows 7 上运行它,并将 exe 和 DLL 复制到 Windows 8 机器上,但它也无法通信(尽管我没有在那里进行 API 监听)。

有人有什么想法可以尝试吗?未经修改的示例应用程序怎么会失败?我很困惑。

4

2 回答 2

4

请尝试带有可用 QtSerialPort 模块的 Qt 5.2(或尝试从 git 构建 QtSerialPort 的最新版本)。

我有一个简单的USB加密狗...

什么是加密狗模型?视频/PID?

...返回错误“997:Overlapped I/O operation is in progress..

这不是错误。

于 2013-12-17T10:20:26.480 回答
1

终端示例应该可以工作。您可以通过首先让cwritersync示例工作来跟踪问题。

如果这不起作用,请尝试在 RX 和 TX 线之间进行环回,这通常是 9 针串行端口的第 2 和第 3 针。

完成这项工作后,您可以更进一步,尝试使用cwriterasync示例,它更接近终端示例所使用的内容。

一旦,这是有效的,你可以意识到你在终端示例中做错了什么。它可能仍然是 QtSerialPort 错误,但在这种情况下,我们需要有关硬件环境的所有详细信息。

另外,请确保在这种情况下终端示例是否可以正常工作,例如在 Unices 上。

于 2013-12-17T16:21:45.397 回答