Установил QT5.1. В состав уже входила библиотека qserialport, которой я попытался воспользоваться. Возникла следующая проблема.
Стенд: есть микроконтроллер Atmega8, он формирует счетчик размера 32 разряда. Число разбивается на 3 байта ( больше мне не надо ) и отсылается через com порт. Т.е. через com порт идет : 1 0 0 , 2 0 0 , 3 0 0 ........3 2 0 ..... и .т.д. Параметры com порта 2400, 8 бит, even, 1 stop, noflowcontrol.
Принимающая сторона компьютер с двумя операционными системами (Linux & win(на virtual box)). Есть программа на QT которая принимает эти данные. Проблема возникает в win, когда число переваливает за 128 ( т.е. за размер char),
то один бит как бы переходит в след. байт. В LINUX такой проблемы нет.
Пример приема данных:
1 0 0 , 2 0 0 ...... 127 0 0 , 128 0 0 , 1 1 0 (
??).
Собирается программа без ошибок. Странности возникают при запуске:
1. Предупреждение void QSerialPortPrivate::detectDefaultSettings(): Unexpected flow control settings. ( в программе стоит
if(!serial_port.setFlowControl(QSerialPort::NoFlowControl))
{
qDebug()<<"error set flow control"<<com_port_name<<endl;
qDebug()<<"error number"<<serial_port.errorString()<<endl;
serial_port.close();
emit connect_status("error set flow control");
return;
}
2. Один раз воникло такое же предупреждение о размере данных ( data8) и о чудо программа заработала как надо) т.е.
128 0 0 , 129 0 0 ........ 255 0 0 , 1 1 0 и т.д.
Может быть кто сталкивался с такой ситуацией.
Всем заранее спасибо за внимание.