【发布时间】:2014-05-18 02:01:39
【问题描述】:
我想在串行设备上写作。不幸的是,我感觉 QSerialPort 在 linux 下没有正确实现。与其他方法(python)相比,我得到!有时!当我尝试调用时,程序挂起:
serial.open(QIODevice::ReadWrite)
我正在使用来自http://qt-project.org/wiki/QtSerialPort 的示例(见下文)。 QSerialPortInfo 工作正常,因此我可以在打开设备之前搜索它。该问题出现在所有 Qt 5.* 系列中。我目前正在使用 OpenSuse 存储库中的 5.3 beta。其他工具或方法证明设备正在运行(Windows 或 Python)。
// Example use QSerialPortInfo
foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) {
qDebug() << "Name : " << info.portName();
qDebug() << "Description : " << info.description();
qDebug() << "Manufacturer: " << info.manufacturer();
// Example use QSerialPort
QSerialPort serial;
serial.setPort(info);
if (serial.open(QIODevice::ReadWrite)) // Hang of the program
serial.close();
}
工作 python 脚本:
com_port = 4
baud_rate = '9600'
pySerial = serial.Serial(com_port, baud_rate)
编辑: 我用调试器测试过。至少在 linux 上似乎是 Qt 5 的问题。它看起来像与设备锁相连。
【问题讨论】:
-
QSerialDevice 是什么意思?没有这样的课!这些例子对你有用吗?
-
不,这些示例有时只能在我的系统 (OpenSuse) 上使用多个 Qt 版本。 PySerial 始终有效(Windows、Linux)。实际上不知道是我还是只是 Qt 问题。但是,如果它没有挂在 QSerialPort 上,那么一切都很顺利。
-
你说的是哪个例子?您是否尝试过命令行读取器和写入器?您使用的是哪个 Qt 版本?也许您使用的是过时的 QtSerialPort?你是从哪里弄来的?你到底在用什么类型的串口?
-
我使用的是 5.30 beta 包,和 5.2.1 的问题一样。
-
信息类总是能完美运行。我可以确定所有设备。
标签: c++ qt qtcore qtserialport qiodevice