【问题标题】:How to store string received with Serial.read() in Arduino?如何在 Arduino 中存储使用 Serial.read() 接收的字符串?
【发布时间】:2018-01-19 13:58:31
【问题描述】:

我设法使用串行端口库从 NodeJs 运行时发送数据。

目标是将接收自 Serial.read() 的字符串存储在 Arduino 中。什么是正确的:

int string = Serial.read()

或:

char string[20] = Serial.read()

网上的文档很多,而且不一样

P/s:我从 nodejs 以缓冲区形式发送字符串,但我认为这并不重要,因为 arduino 仍然将其作为字符串实现。

【问题讨论】:

  • 阅读the docs 并调用一个应该返回字符串而不是字符的方法?或者查看大量现有的串行教程中的任何一个?

标签: string arduino


【解决方案1】:

来自 Arduino 文档:

int incomingByte = 0;   // for incoming serial data
void setup() {
        Serial.begin(9600);     // opens serial port, sets data rate to 9600 bps
}

void loop() {

        // send data only when you receive data:
        if (Serial.available() > 0) {
                // read the incoming byte:
                incomingByte = Serial.read();

                // say what you got:
                Serial.print("I received: ");
                Serial.println(incomingByte, DEC);
        }
}

https://www.arduino.cc/en/Serial/Read

.read():

返回可用的传入串行数据的第一个字节(如果没有,则返回 -1 数据可用)- int

仅供参考:我已经多次使用此代码,并且它可以 100% 运行。

【讨论】:

  • 我发送一个类似 "255,255" 的字符串。当我使用它时,incomingByte 是一个值为 "255,255" 的字符串吗?因为首先我们将它声明为 int ,而不是 string
  • 如果是你的情况,你可以使用Serial.readString() : String a; void setup() { Serial.begin(9600); // opens serial port, sets data rate to 9600 bps } void loop() { while(Serial.available()) { a= Serial.readString();// read the incoming data as string Serial.println(a); } }
  • 好的,谢谢,现在我明白了。但是 arduino 中的 string 和 char a[] 有什么区别,因为当我尝试 {int number = a[0]} 取字符串中的第一个整数时,它不会变成 2
  • 如果需要获取值,指定字符串索引,可以使用charAt(n)。你可以在这里找到更多信息:arduino.cc/reference/en/language/variables/data-types/string/…
猜你喜欢
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多