serial-port - 如何比较 Serial.read() 中的字符串?

标签 serial-port arduino

我在下面有这个代码,我来自 this forum我遵循了。它对我不起作用,但他们声称代码很好。我已经尝试了几种字符串比较方法,例如 string.equals(string)和标准==运营商,仍然没有运气。

int ledPin = 13;
String readString;

void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT); 
  Serial.println("serial on/off test 0021"); // so I can keep track
}

void loop() {
  while (Serial.available()) {
    delay(3);  
    char c = Serial.read();
    readString += c; 
  }
  if (readString.length() >0) {
    if (readString == "on") {
      Serial.println("switching on");
      digitalWrite(ledPin, HIGH);
    }
    if (readString == "off") {
      digitalWrite(ledPin, LOW);
    }
    readString="";
  } 
}

最佳答案

我可以通过简单地添加 readString.trim(); 来解决昨晚的问题在字符串比较之前。这是因为将有换行符,其中 id 没有在 arduino 控制台中打印任何内容。

我将函数放在下面的代码中:

int ledPin = 13;
String readString;

void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT); 
  Serial.println("serial on/off test 0021"); // so I can keep track
}

void loop() {

  while (Serial.available()) {
    delay(3);  
    char c = Serial.read();
    readString += c; 
  }
  readString.trim();
  if (readString.length() >0) {
    if (readString == "on"){
      Serial.println("switching on");
      digitalWrite(ledPin, HIGH);
    }
    if (readString == "off")
    {
      Serial.println("switching off");
      digitalWrite(ledPin, LOW);
    }

    readString="";
  } 
}

关于serial-port - 如何比较 Serial.read() 中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24961402/

相关文章:

c++ - Visual Studio 2010 c++ 与 zigbee 通信

java - 如何使用java在一定时间后自动将数据存储到mySql数据库?

c - 使用带光电体积描记图传感器的 Arduino 确定心跳

python - 如何使用 I²C 连接 Arduino Uno 和 Raspberry Pi

c# - 从串口读取的数据是分离的。代码+结果里面

c# - 是否可以只用C#编程模拟com口收发数据?

蓝牙配对但没有 COM 端口

.net - 奇怪的串行端口名称不起作用

c - 在Processing/Arduino中使用延迟功能时出现高延迟

c++ - 字符字符串数组的初始化程序中的问题