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

从串口读取

虞滨海
2023-03-14

这是http://www.gravitech.us/7segmentshield.html给出的代码。

void SerialMonitorPrint (byte Temperature_H, int Decimal, bool IsPositive)
{
Serial.print("The temperature is ");
if (!IsPositive)
{
  Serial.print("-");
}
Serial.print(Temperature_H, DEC);
Serial.print(".");
Serial.print(Decimal, DEC);
Serial.print(" degree C");
Serial.print("\n\n");
}
while(1)
{
    char buffer[100];
    int chars_read = read(fd, &buffer, sizeof(buffer));
    buffer[chars_read] = '\0';
    printf("%s", buffer);
}

那么怎样才能逐行阅读呢?

共有1个答案

丰赞
2023-03-14

您不能保证对read的一次调用就能得到一行文本。您需要缓冲数据。最简单的方法是一次读取一个字符,并在到达换行符时停止。如果希望每次读取尽可能多的字符,缓冲代码就会变得更加复杂。

尝试这样开始:

char buffer[100] = {0};
int pos = 0;

while( pos < 99 ) {
    read(fd, buffer+pos, 1);           // Note you should be checking the result
    if( buffer[pos] == '\n' ) break;
    pos++;
}

// Normally you would null-terminate string, but noticed I initialised the
// buffer to all zeroes at the beginning.  So this is not strictly necessary.
// However, in this case it will remove the newline character.
buffer[pos] = 0;
 类似资料:
  • 我试图读取3温度设备使用WinForm和Modbus 485协议。基本上,我必须定期向每个设备写入命令,等待响应,当我得到响应时,处理它。每个设备都有一个唯一的通信地址。为了定期发送命令,我使用了计时器。这就是我发送命令的方式和处理响应的地方: 对于每个设备,等等。这是我的serialport数据接收事件: 所以我的沟通应该是: 然后再次发送命令device1。问题是,我有时得到通信超时错误,我知

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

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

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

  • 本文向大家介绍Android串口通信之串口读写实例,包括了Android串口通信之串口读写实例的使用技巧和注意事项,需要的朋友参考一下 在Android串口通信:基本知识梳理的基础上,我结合我项目中使用串口的实例,进行总结; Android使用jni直接进行串口设备的读写网上已经有开源项目了,本文是基于网上的开源项目在实际项目中的使用做的调整和优化; Google串口开源项目 下面是我项目中的相关

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