串口未读取所有数据

罗伯特·佩茨

我有一个运行nanopb的微控制器(Arduino Uno),它通过电线发送protobuf消息。我发现在一种特定情况下,我没有收到完整的消息。我想了一会儿是微控制器,但似乎是从它读取的C#端。

仅当uint32值大于16。16或更小时才发生此问题,并且工作正常。

我在微控制器上设置了一个非常简单的程序,以确保不是我的其他代码在那引起了它。本质上,它是通过电线发送一个结构,其中包含一个uint32_t值:

//Protobuf message:
message Test { required uint32 testInt = 1 }

//Resulting struct:
typedef struct Test {
    uint32_t testInt;
}

//Serial code:
Serial.begin(115200);
pb_ostream_t ostream;

//Removed ostream setup code as it's not relevant here...

Test message;
Test.testInt = 17;
pb_encode_delimited(&ostream, Test_fields, &message);

如果我插入设备并使用“白蚁”查看其数据输出,则会看到以下数据(正确):

[02] [08] [11] (note Termite displays it in hex)

(也就是说,该消息的长度为2个字节,后跟msg起始字节,后跟Test.testInt值,十六进制为17-0x11)

现在,如果我使用C#编写此消息,则在阅读消息时应该看到3个字节,但是我只看到2个。当testInt中的值等于或小于16时,它遇到的是三个字节,等于或大于17个字节,我只能得到两个:

var port = new SerialPort("COM7", 115200, Parity.None, 8, StopBits.One);
port.Handshake = Handshake.RequestToSendXOnXOff;
port.Open();
while (port.IsOpen)
{
    Console.WriteLine(port.ReadByte());
    Thread.Sleep(10);
}
port.Close();
Console.ReadLine();

Output with 16: 2 8 16
Output with 17: 2 8 17

非常感谢您的帮助,我对此不知所措=(

伊恩·默瑟(Ian Mercer)

您将串行端口设置为使用Xon / Xoff。为什么?

XON的代码是17。

如果要发送二进制数据,请不要使用Xon / Xoff。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从stdin C读取所有数据

来自分类Dev

查询未返回所有数据

来自分类Dev

BaseAdapter未显示所有数据

来自分类Dev

Ajax serialize()方法未读取html表单的所有数据字段

来自分类Dev

数据图表未添加所有数据

来自分类Dev

QT套接字不读取所有数据

来自分类Dev

从Qt中的套接字读取所有数据

来自分类Dev

如何使用EOF读取文件中的所有数据

来自分类Dev

highcharts / highstock列未显示所有数据标签

来自分类Dev

请求未返回表单中的所有数据

来自分类Dev

Django模型未保存表单中的所有数据

来自分类Dev

FQL查询未返回所有数据

来自分类Dev

MVC提交未返回所有数据

来自分类Dev

Google ComboChart未显示所有数据行

来自分类Dev

Chartjs 未显示所有数据点

来自分类Dev

ActiveRecord 未提供所有数据库列

来自分类Dev

所有数据未存储在 DynamoDB 中

来自分类Dev

MYSQL LEFT JOIN 未显示所有数据

来自分类Dev

NSData initWithContentsOfURL不能读取所有数据,而只能读取设备上的数据

来自分类Dev

NSData initWithContentsOfURL不能读取所有数据,而只能读取设备上的数据

来自分类Dev

如何确保所有消费者都能从Kafka读取所有数据

来自分类Dev

从所有FIFO中读取完所有数据后,是否应该从FIFO块中读取数据?

来自分类Dev

Firebase 实时数据库读取所有现有数据

来自分类Dev

如何使用Google Fit Android SDK从所有数据源读取数据?

来自分类Dev

python multiprocessing从multiprocessing队列访问数据而不读取所有数据

来自分类Dev

从文件行读取所有数字

来自分类Dev

如何从JavaScript读取串口数据

来自分类Dev

while循环未显示从数据库收集的所有数据

来自分类Dev

数据表信息未填充到循环中的所有数据网格视图

Related 相关文章

热门标签

归档