当前位置: 首页 > 知识库问答 >
问题:

从串行端口Linux C读取空字符

澹台华晖
2023-03-14

我读了很多问题和答案,但没有找到任何解决方案。也许我的问题不对,但我需要一些指导。我在Linux中使用串行端口,从我的Arduino设备读取数据。每当我想从Arduino向Linux发送数据时,我首先发送两个字节,这表示将从Arduino发送的总字节数。我将这两个字节转换为整数值,并开始从串行端口读取数据。比如说,我想把300字节从Ardiuno发送到Linux,我只需要先写{1,44},然后用下面的公式将这个1和44字节转换成int:

char data[] = {1, 44};
int to_read = data[0]
to_read = to_read << 8;
to_read = to_read | data[1];
return to_read;

这将给我300 int的值,这是工作的魅力。但当我必须读取小于255的数据时,问题就来了。假设我想读100个字节,那么前两个字节将是{0,100}。0是空字符,串行端口不处理它(我手动将0写入串行端口,它总是给我写入0字节),我的所有序列出错。所以我的问题是,我能从串口读取空字符吗?或者有人能给我更好的解决方案吗。。

提前感谢。

共有1个答案

洪浩
2023-03-14

我的问题解决了。在C中处理字节时,不要把字节(char)和字符串混淆起来,就像我处理字节数组(char data[]),当我试图用writemethod和strlen(data)的长度在串行端口上写入这些字节时,我只得到了那些不为空的字节strlen在看到第一个空字符后返回数据长度,即\0,因此我没有得到所需的输出。我所做的是,如果我想写数据char data[]={0,4},那么我会这样做:

char data[] = {0, 4};
write(serial_port_fd, data, 2);

告诉write函数写入2个字节。如果我这样写的话,它会写0和4:

char data[] = {0, 4}
write(serial_port_fd, data, strlen(data));

这将不写入任何内容。

还有一件事,如果您想在串行端口上写入不可打印的字符(从字节值0到32),那么请确保您已经为原始输入和输出配置了串行端口。看看这本指南:

http://www.cmrr.umn.edu/~strupp/连载。html#config

 类似资料:
  • 我做了一个python程序,从串行端口读取gps数据。GPS冰球流NMEA数据语句连续插入USB时。我的程序打开端口,然后尝试读取数据,解析它,然后将其与从Arduino提取的其他数据一起写入文本文件。 我遇到的问题是,当我第一次运行程序时,有时它无法读取数据。我放入了一些Try/Exception捕获,发现以某种方式无法从GPS串行端口读取数据 如果我点击Cntrl-C几次,这似乎可以解决它遇到

  • 问题内容: 我有一个Java程序,必须读取Arduino发送的信息。我从这里获取了Java代码。现在,我不太了解它是如何工作的,但是我尝试对其进行修改,并且得到了以下信息: 我创建一个对象串行COM口,我需要在主程序,然后我使用和当我需要它。 效果很好,Arduino获取数据并将其显示在LCD显示屏中。问题是。程序运行时,它会不断从串行端口读取数据(大约每40毫秒一次),但这并不意味着Arduin

  • 这是http://www.gravitech.us/7segmentshield.html给出的代码。 那么怎样才能逐行阅读呢?

  • 我试图从一个串行端口读取数据,这个端口连接着Arduino和操纵杆。 当试图打印出接收到的数据以检查我是否得到它时,它会继续打印出与连接时相同的值。 我正在从我的串行端口以这种格式发送数据: Xaxis: yAxis: SwitchBool 这是我在WPF应用程序中的C#代码 这是我的arduino代码: 下面是一个例子,说明在移动拇指时,Arduino的串行监视器中的数据应该是什么样子的: -1

  • 问题内容: 我以下列方式从打开的串行端口读取某些数据时遇到麻烦。我已经多次使用此代码实例,并且一切正常,但是现在,由于某种原因,我无法弄清楚,我完全无法从串行端口读取任何内容。 我能够写,并且在另一端正确接收了所有消息,但是从未收到答复(正确发送)(不,电缆都还好;)) 我用来打开串行端口的代码如下: 端口初始化后,我通过简单的write命令向其中写入一些内容。 hCom是文件描述符(没关系),并

  • 我有一个Velleman k8090中继板,我试图从中读取一些数据。我可以很好地写入电路板,但每当我输出读取的数据时,我都会得到奇怪的字符,比如菱形或倒置的问号。以下是我的部分代码: 为什么我会有这些奇怪的角色?文件规定它应该返回年份和星期。 编辑:经过一些搜索和故障排除,我现在非常确定它与Python代码或数据类型有关,而不是与硬件有关。这个论坛包含了一个C语言的例子,它从黑板上读取。我从黑板上