我正在尝试使用 QSerialPort 类来读取和写入串行端口。现在我正在使用由 eltima 驱动程序实现的虚拟 comports。我可以像这样成功发送字节:
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 或更多,我会得到 value-128 o_o(如果我发送 153 - 我会得到 25。不是 -25 或 103)。这对我来说似乎很奇怪。任何人都可以看到错误在哪里?