【问题标题】:QtSerialPort example fails [closed]QtSerialPort 示例失败 [关闭]
【发布时间】:2014-01-04 21:08:01
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 在 5.1.1 的 Linux 上是否也会失败?你试过 git 或 5.2 的 csyncreader/writer 吗?
  • 另外,您能否发布一个不适合您的简单应用程序?或者,您可以运行这个应该针对 5.1.1 构建的示例:qt.gitorious.org/qt/qtserialport/source/… 然后,请粘贴输出。
  • 我也想在 linux 上尝试一下,但我还没有机会。当我今晚回到家运行 Linux 时,我会这样做。
  • 好的,当然。同时,您可以尝试 csyncwriter 示例。让我知道这是否有效。如果没有,请粘贴控制台的输出。您需要从 Windows 上的标准输入提供该命令行示例,并将其写入端口。
  • 我以为最简单的例子就是我第一次提到的那个,即qt.gitorious.org/qt/qtserialport/source/…

标签: c++ windows qt serial-port qtserialport


【解决方案1】:

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

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

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

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

这不是错误。

【讨论】:

  • 终端示例也应该适用于 5.1。
  • 实际上,这是一个错误(bug),我们最终需要修复它。我认为像这样的帖子需要先发表评论,因为它实际上并没有解决问题中的问题。
  • 加密狗是 vid/pid 为 403/6001 的 BT 加密狗(由示例应用正确检测到)
  • 是否使用了MS蓝牙堆栈或BlueSoleil或其他软件?
  • 我相信它是 FTDI 驱动程序,因为这就是 USB 串行端口 (COM10) 属性页面上的驱动程序选项卡在驱动程序提供程序下所说的内容。
【解决方案2】:

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

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

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

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

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

【讨论】:

  • 我发现了问题!! :-) 当我在 QByteArray myData = testPort.readAll(); 前面添加 QApplication::processEvents(QEventLoop::ExcludeUserInputEvents); 时,我的代码一切正常,然后 readAll 返回我所期望的。我想我以某种方式错误地使用了同步读取,或者其中存在错误。
  • @David:有趣;感谢您的跟进!我很高兴它现在有效。 ;-)
猜你喜欢
  • 1970-01-01
  • 2012-08-03
  • 2013-02-16
  • 2023-03-10
  • 2014-02-02
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多