| const char* In file included from C:\Users\conservator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266/Stream.h:27, from C:\Users\conservator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266/HardwareSerial.h:32, from C:\Users\conservator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266/Arduino.h:303, from C:\Users\conservator\AppData\Local\Temp\arduino\sketches\304EB848CF381B8A7A8E84D646752A81\sketch\mqttToAliyun.ino.cpp:1: C:\Users\conservator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266/Print.h:105:16: note: candidate: 'size_t Print::println(long int, int)' (near match) 105 | size_t println(long, int = DEC); | ^~~~~~~ C:\Users\conservator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266/Print.h:105:16: note: conversion of argument 1 would be ill-formed: C:\Users\conservator\Desktop\mqttToAliyun\mqttToAliyun.ino:130:24: error: invalid conversion from 'const char*' to 'long int' [-fpermissive] 130 | Serial.println("%d",sensor[2]);
时间: 2023-08-09 21:08:42 浏览: 219
如何通过Arduino UNO与ESP8266通讯-项目开发
5星 · 资源好评率100%
这个错误是因为在第130行中,你尝试将一个 `const char*` 类型的字符串传递给 `println` 函数,而 `println` 函数的参数应该是一个 `long int` 类型的整数。这样的类型不匹配导致了编译错误。
要解决这个问题,你需要将传递给 `println` 函数的参数转换为 `long int` 类型。你可以使用 `atol` 函数将字符串转换为长整数,然后再传递给 `println` 函数。下面是一个可能的解决方法:
```cpp
Serial.println(atol(sensor[2]));
```
这样,`atol` 函数将 `sensor[2]` 字符串转换为长整数,然后将其传递给 `println` 函数。请确保在使用 `atol` 函数之前,你已经包含了 `<cstdlib>` 头文件。
阅读全文