字符串和子字符串 - 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.
{
这解决了我的问题。
我做错了什么
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.
{
这解决了我的问题。