QSerialPort 在具有特定设备的 Windows 上无法正常工作
Posted
技术标签:
【中文标题】QSerialPort 在具有特定设备的 Windows 上无法正常工作【英文标题】:QSerialPort not working correctly on Windows with specific device 【发布时间】:2017-02-15 14:19:04 【问题描述】:编辑:我发现了问题!对于任何有类似问题的人,这是我所做的:
设备使用了Hardware Flowcontrol,在Linux下貌似没问题,但是在Windows下,这个参数要明确设置!
问题
我们想读出追踪眼镜框轮廓的设备。 他们使用 RS232 端口。我们已经实现了与 QT 5.7 中的 QSerialPort 类的通信。我们的测试设置目前具有来自不同供应商的两个跟踪器和一台 Windows 7 PC。与示踪剂 1 的通信正常; tracer 2 不会向 Windows PC 发送任何数据。
测试
为了测试,我编写了一个非常简单的程序,它将所有字节打印为通过串行端口接收的 ASCII 字符。它还允许您输入一些文本以将答案发送回设备。 在 Linux 上测试完全相同的源代码可以在两种设备上完美运行。 Testsoftware on Linux (Device Requesting initialization) .在 Windows 上(使用相同的电缆和适配器),日志保持空白。 使用 Nullmodem-Cable 将 Windows PC 连接到 Linux PC 或其他设备,通信按预期工作。
在 Windows 上测试与 PuTTy 的通信,两台设备都可以正常工作。
代码
testapplication 中的代码如下所示:
设置好端口参数并打开后:
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 中是否有任何设置或我需要做任何特殊的事情来设置 serialPort?
【问题讨论】:
【参考方案1】:我自己想通了。请参阅问题顶部的解决方案。
【讨论】:
以上是关于QSerialPort 在具有特定设备的 Windows 上无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章