QSerialPort 在使用特定设备的 Windows 上无法正常工作

问题描述 投票:0回答:1

编辑:我发现问题了!对于任何有类似问题的人,这就是我所做的:

设备使用了硬件流控制,这在 Linux 上显然没有问题,但在 Windows 上,必须显式设置此参数!

问题

我们想要读出追踪眼镜架轮廓的设备。 他们使用 RS232 端口。我们已经从 QT 5.7 开始实现了与 QSerialPort 类的通信。我们的测试设置当前具有来自不同供应商的两个跟踪器和一台 Windows 7 PC。与跟踪器 1 的通信工作正常;跟踪器 2 不会向 Windows PC 发送任何数据。

测试

为了测试,我编写了一个非常简单的程序,它仅将通过串行端口接收到的所有字节打印为 ASCII 字符。它还允许您输入一些文本以将答案发送回设备。 在 Linux 上测试完全相同的源代码在两种设备上都能完美运行。 Linux 上的测试软件(设备请求初始化) 。在 Windows 上(使用相同的电缆和适配器),日志保持空白。 使用 Nullmodem 电缆将 Windows PC 连接到 Linux PC 或其他设备,通信按预期工作。

在Windows上测试与PuTTy的通信,两台设备均正常工作。

代码

测试应用程序中的代码如下所示:

设置端口参数并打开后:

QObject::connect(&m_serialPort, SIGNAL(readyRead()), this, SLOT(bytesReady()));

插槽:

void Device::bytesReady(){
while(m_serialPort.bytesAvailable()){
    emit read(m_serialPort.read(1).at(0));
}

}

之后,“Konsole”类将接收到的字节转换为可读的 ASCII 字符并将其显示在 QTextEdit 中

结论/问题

我们怀疑 Qt 或 Windows 中存在错误,但我们不知道如何进一步调查该问题。 Linux 上的测试表明设备本身运行良好,我们的测试程序也运行良好。 Windows 中是否有任何设置或我必须执行任何特殊操作来设置串行端口?

c++ windows qt serial-port
1个回答
1
投票

我自己想出来了。请参阅问题顶部的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.