gpt4 book ai didi

c++ - QSerialPort 读取有符号值

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:57:01 26 4
gpt4 key购买 nike

我正在尝试使用 QSerialPort 类来读取和写入串行端口。现在我正在使用由 eltima 驱动程序实现的虚拟端口。我可以像这样成功发送字节:

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)。这对我来说似乎真的很奇怪。谁能看出错误在哪里?

最佳答案

我的错误真的很愚蠢。 QSerialPort 默认设置为 7 个数据位(这似乎不太实用,实际上),因此每个接收到的字节都将其 MSB 截断(如减去 128)。

不过,奇怪的是,发送工作正常。

关于c++ - QSerialPort 读取有符号值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16962833/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com