Serial.print() 在使用 QSerialPort 读取时截断数据

Serial.print() truncates data when reading with QSerialPort

我正在尝试将一个简单的整数值从 Arduino Mega 2560 写入 Qt 应用程序。当我使用 serial->write(some_data); 从 Qt 应用程序通过开放端口发送数据时,波特率设置为 9600 并且 Serial.read() 工作正常。

digitalWrite(SS, LOW);
if (Serial.available() == 2) {
  response1 = SPI.transfer(Serial.read());
  response2 = SPI.transfer(Serial.read());
}
digitalWrite(SS, HIGH);

以上代码运行良好。我之前读过另一篇文章,必须添加 delay(3) 才能完成这项工作。现在我想发回响应

Serial.print((response2 << 8 ) | (response1 & 0xFF));

但总有截断的数字。我从逻辑分析仪知道响应是例如8193 所以使用 QByteArray b = serial->readAll(); 我得到的结果像 881819,有时 8193。即:总是最后一位数字被随机截断。我认为这也是一个时间问题,但我找不到解决办法。

以防万一有人遇到同样的问题:将波特率从 9600 更改为 112500 解决了这个问题。