字符串和子字符串 - Arduino、esp32

String and substring - Arduino, esp32

我做错了什么 line = client.readStringUntil('\r');if (line.substring(0) == "1");

 // Read all the lines of the reply from server and print them to Serial
  while(client.available()){
  line = client.readStringUntil('\r'); //    String
    Serial.println(line); 
  }

// Rele 1

  if (line.substring(0) == "1") 
 {
    Serial.println("Rele 1 ON");
    digitalWrite(Rele_1, LOW);
    myBr1 = 1;
 }
 else if (line.substring(0) == "0") 
 {
    Serial.println("Rele 1 OFF");
    digitalWrite(Rele_1, HIGH);
    myBr1 = 0;
 }
 else
 {
    Serial.println("Rele 1 OFF the charts - Check what you give me....");
    digitalWrite(Rele_1, HIGH);
    myBr1 = 0;
 }

当我运行这段代码时,串行打印行给我:000 但是 Relay 1 给我:Rele 1 OFF the charts - Check what you gave me.... 如果我强迫 line=001; 串行打印返回 1,而不是 001 我现在有 2 个继电器,还有一点可以开始 OTA 更新。将添加更多继电器。 我混淆了什么,我该如何纠正?

对于您的测试,您应该强制 line="001" 并将引号设为字符串,而不是 int。这就是它打印 1 而不是 001

的原因

对于 line.substring(0) == "1" 的用法,line.substring(0) 将 return "001" 而不是 "1"。正确的做法是 line.substring(0,1) == "1" 只读取第一个字符。

我今天学会了“0”和“0”以及0之间的区别。 通过更改:

  if (line.substring(0) == "1") 
 {

 if (line.charAt(1) == '1')   // Bryter 1. 
    {

这解决了我的问题。