【发布时间】:2020-12-17 12:44:43
【问题描述】:
您好,我在一些变量转换方面遇到了问题,问题是当尝试编译代码时会收到此错误消息。为什么不能转换?
我将wtrtemp 作为字符串尝试将其更改为int 和float 和const char 相同的问题。 Mqtt 只是从滑块中打印出一个数字。这是从节点red发送的
从 'const char*' 到 'int' 的无效转换 [-fpermissive]
//MQTT incoming
#define mqttFloodInterval "greenHouse/floodInt"
#define mqttFloodDuration "greenHouse/floodDur"
#define mqttLightsOnDuration "greenHouse/lightsOnDur"
#define mqttLightsOffDuration "greenHouse/lightsOffDur"
//MQTT Setup End
int wtrtemp;
void topicsSubscribe(){
client.subscribe(mqttFloodInterval);
client.subscribe(mqttFloodDuration);
client.subscribe(mqttLightsOnDuration);
client.subscribe(mqttLightsOffDuration);
}
Serial.print("MQTT message received on topic: ");
Serial.print(topic);
Serial.print(". Message: ");
messageTemp.remove(0);
for (int i = 0; i < length; i++) {
Serial.print((char)message[i]);
messageTemp += (char)message[i];
}
Serial.println();
Serial.println(messageTemp);
if (String(topic) == mqttFloodDuration) {
wtrtemp = mqttFloodDuration; // The problem is here
Serial.print("*** (Flood Interval Received)");
}
if(wtrtemp == 23){
digitalWrite(15, HIGH); // turn on pump 5 seconds
delay(5000);
}
else {
digitalWrite(15, LOW); // turn off pump 5 seconds
delay(5000);
}
}
【问题讨论】:
-
什么是
mqttFloodDuration? -
从看到的错误中,
mqttFloodDuration很可能是const char*类型的变量,这意味着它可能是一个字符串,如果该字符串应该是数字,那么您将需要额外的代码来将其转换为整数 -
编辑了 mqttFloodDuration 的代码
-
WARhead 可能会搜索如何将
const char*转换为string or int:) -
您希望“greenHouse/floodDur”作为 int 是什么?神奇的数字 23 是什么?