Доброго всем времени суток.
Пишу на qt программу опроса устройства, использую этот самый QtSerialPort в потоке. Вот так его открываю
if (port->open(QIODevice::ReadWrite)) {
switch (_connParam.iIndexBaudrate){
case 0: port->setBaudRate(QSerialPort::Baud1200); break;
case 1: port->setBaudRate(QSerialPort::Baud2400); break;
case 2: port->setBaudRate(QSerialPort::Baud4800); break;
case 3: port->setBaudRate(QSerialPort::Baud9600); break;
case 4: port->setBaudRate(QSerialPort::Baud19200); break;
}
port->setDataBits(QSerialPort::Data8);
port->setParity(QSerialPort::NoParity);
port->setStopBits(QSerialPort::OneStop);
port->setFlowControl(QSerialPort::NoFlowControl);
port->open(QIODevice::ReadWrite);
запись в порт
port->clear(QSerialPort::AllDirections);
port->write(buf);
чтение порта
int iDelay=(int)(80*1000*11/port->baudRate());
do {
buf.append(port->readAll());
} while (port->waitForReadyRead(iDelay));
однако это работает только если не трогать настройки порта в процессе работы программы. Если поменять скорость, то приёмный буфер будет пустой при чтении, но если перезапустить программу и запустить чтение на новой скорости, то всё пройдёт нормально. Никто с таким не сталкивался?