我想在串行设备上写。不幸的是,我感觉 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 的问题。它看起来像与设备锁相连。