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();
我得到的结果像 8
、81
、819
,有时 8193
。即:总是最后一位数字被随机截断。我认为这也是一个时间问题,但我找不到解决办法。
以防万一有人遇到同样的问题:将波特率从 9600 更改为 112500 解决了这个问题。
我正在尝试将一个简单的整数值从 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();
我得到的结果像 8
、81
、819
,有时 8193
。即:总是最后一位数字被随机截断。我认为这也是一个时间问题,但我找不到解决办法。
以防万一有人遇到同样的问题:将波特率从 9600 更改为 112500 解决了这个问题。