我正在尝试从Arduino向nodemcu发送多个数据。但是它一直显示错误
deserializeJson()失败,代码为InvalidInput
这是代码
Arduino UNO
#include <SoftwareSerial.h>
#include <ArduinoJson.h>
SoftwareSerial s(5,6);
void setup() {
s.begin(9600);
}
void loop() {
StaticJsonDocument<1000> doc;
doc["data1"] = 100;
doc["data2"] = 200;
serializeJson(doc,s);
delay(1000);
}
nodemcu
#include <SoftwareSerial.h>
SoftwareSerial s(D6,D5);
#include <ArduinoJson.h>
void setup() {
// Initialize Serial port
Serial.begin(9600);
s.begin(9600);
while (!Serial) continue;
}
void loop() {
StaticJsonDocument<200> doc;
while(s.available()){
//delay(1000);
Serial.write(s.read());
auto error = deserializeJson(doc,s);
if(error) {
Serial.println();
Serial.print(F("deserializeJson() failed with code "));
Serial.println(error.c_str());
}
serializeJsonPretty(doc,Serial);
delay(1000);
}
}
这是结果
{
deserializeJson() failed with code IncompleteInput
false"
deserializeJson() failed with code InvalidInput
null:
deserializeJson() failed with code InvalidInput
100"
deserializeJson() failed with code InvalidInput
null:
deserializeJson() failed with code InvalidInput
200{
deserializeJson() failed with code IncompleteInput
false"
deserializeJson() failed with code InvalidInput
null:
deserializeJson() failed with code InvalidInput
答案 0 :(得分:0)
页面How to do serial communication between two boards?指出InvalidInput是由于以下原因之一:
除了在两侧使用相同的MCU外,您无法做任何时钟偏斜的事情。
最好提高“调试”串行端口的速度。它必须比“传输”串行端口快一个数量级。
您可以使用logic level converter来解决电压不匹配的问题。