Я хочу писать на последовательном устройстве. К сожалению, у меня такое ощущение, что QSerialPort неправильно реализован в Linux. В отличие от других методов (python) я получаю !иногда! зависание программы при попытке позвонить:
serial.open(QIODevice::ReadWrite)
Я использую пример из http://qt-project.org/wiki/QtSerialPort (см. ниже). QSerialPortInfo работает правильно, поэтому я могу найти свое устройство, прежде чем открыть его. Проблема появилась во всех сериях Qt 5.*. В настоящее время я использую бета-версию 5.3 из репозитория OpenSuse. Другие инструменты или методы, подтверждающие, что устройство работает (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();
}
Рабочий скрипт на питоне:
com_port = 4
baud_rate = '9600'
pySerial = serial.Serial(com_port, baud_rate)
Изменить: я тестировал отладчиком. Кажется, это проблема Qt 5, по крайней мере, с Linux. Похоже, связано с блокировкой устройства.