Я пытаюсь использовать класс QSerialPort для чтения и записи в последовательный порт. Прямо сейчас я использую виртуальные команды, реализованные драйвером eltima. Я могу успешно послать байт, как это:QSerialPort чтение значного значения
QSerialPortInfo info = QSerialPortInfo("COM30");
QSerialPort serial;
serial.setPort(info);
serial.setBaudRate(57600);
serial.open(QIODevice::ReadWrite);
char arr[] = {0xAA, 0xBB, 0xCC, 0xDD};
serial.write(arr, 4);
Я пытаюсь чтения, как это (я хочу прочитать только один байт, этот код вызывается по таймеру, если данные готовы для чтения):
virtual uint8_t getByte(void)
{
char arr[2] = {0};
int8_t err = qPort.read(arr, 1);
DEBUG_ASSERT(err != -1);
if(! isNewByte())
{
onReceiveFinished();
}
return arr[0];
}
Если я отправляю на виртуальный порт (то есть в свою программу) любое значение менее 128, я получаю его правильно (как показывает отладчик). Однако, если я попытаюсь отправить 128 или больше, я получаю значение 128 o_o (если я отправлю 153 - я получаю 25. Не -25 или 103). Это кажется чем-то действительно странным для меня. Может ли кто-нибудь увидеть, где ошибка?