Итак. Я использую этот код, чтобы прочитать некоторые данные от powertek pa4400a, и иногда я могу читать его без проблем, но иногда я получаю странные ответы. Я даже не могу понять, что означают символы.Искаженные ответы на последовательный порт
QSerialPort asd;
asd.setBaudRate(QSerialPort::Baud19200);
asd.setDataBits(QSerialPort::Data8);
asd.setFlowControl(QSerialPort::NoFlowControl);
asd.setParity(QSerialPort::NoParity);
asd.setStopBits(QSerialPort::OneStop);
asd.setPortName("ttyUSB0");
asd.open(QSerialPort::ReadWrite);
asd.write(com);
asd.waitForReadyRead(10000);
QString ans = asd.readAll();
Строка анс должна выглядеть следующим образом:
"00.00E+0; 00.00E+0;+00.00E+0; 00.00E+0; 000:00:00;<<END OF DATA>>"
Но я получаю что-то вроде этого:
"\xFB"
или любой другой материал, который не так.
Я получил правильный ответ много раз, но что-то случилось, и я больше не могу читать информацию.
Вы ничего плохого не делаете, но у меня нет хорошего опыта с псевдосинхронным кодом, который использует любые методы 'waitForXxx'. Посмотрите, можете ли вы реализовать свою систему команд и ответов, используя подход из [этого ответа] (http://stackoverflow.com/a/32595398/1329652). На какой платформе это? –
Windows, но проблема была в управлении потоком. Я переключился на HardwareControl, и теперь он работает. – Alex