esp8266 arduino 编译出错,请问是什么问题。

作者:yjf | 更新时间:2020-12-03 | 浏览量:122

程序:

#include #include
//=============  此处必须修该============
String DEVICEID="*****";//你的设备编号==改成你贝壳物联里智能设备的ID
String APIKEY="*****";//设备密码==改成你贝壳物联里智能设备的密码
const char* ssid="CMCC-hkws";//WiFi名称  你的WIFI名称
const char* password="147258369";//WiFi密码 你的WIFI密码
//=======================================
#define OUT 2//输出控制继电器端口 
//=======================================
unsigned long lastCheckInTime=0;//记录上次报到时间
const unsigned long postingInterval=40000;//每隔40秒向服务器报到一次
const char* host="www.bigiot.net";
const int httpPort=8181;
WiFiClient client;
void setup()
{
  pinMode(OUT,OUTPUT);//设置输出
  digitalWrite(OUT,LOW);//上电打开输出
  pinMode(LED_BUILTIN,OUTPUT);//设备板载LED输出模式
  digitalWrite(LED_BUILTIN,HIGH);//关闭LED 
  Serial.begin(115200);
  Serial.println();
  Serial.println();
  WiFi.begin(ssid,password);//连接WiFi  
  while(WiFi.status()!= WL_CONNECTED)//等待WiFi连接成功
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println(); 
}
void loop() 
{  
  // Use WiFiClient class to create TCP connections
  if(!client.connected())
  {
    if(!client.connect(host, httpPort)) 
    {
      Serial.println("connection failed");
      delay(5000);
      return;
    }
  }
  if(millis()-lastCheckInTime>postingInterval||lastCheckInTime==0)
    checkIn();

  // Read all the lines of the reply from server and print them to Serial
  if (client.available())
  {
    String inputString=client.readStringUntil('\n');
    inputString.trim();
    Serial.println(inputString);
    int len=inputString.length()+1;
    if(inputString.startsWith("{") && inputString.endsWith("}"))
    {
      char jsonString[len];
      inputString.toCharArray(jsonString,len);
      aJsonObject *msg = aJson.parse(jsonString);
      processMessage(msg);
      aJson.deleteItem(msg);          
    }
  }
}
void processMessage(aJsonObject *msg)
{
  aJsonObject* method=aJson.getObjectItem(msg,"M");
  aJsonObject* content=aJson.getObjectItem(msg,"C");     
  aJsonObject* client_id=aJson.getObjectItem(msg,"ID");
  if(!method)
    return; 
  String M=method->valuestring;
  if(M=="say")
  {  
    String C=content->valuestring;
    String F_C_ID=client_id->valuestring;
    digitalWrite(LED_BUILTIN,LOW);//接收到指令就闪一下LED
    delay(50);
    digitalWrite(LED_BUILTIN,HIGH); 
    if(C=="stop")                                     //接收到的是停止指令
    {
      digitalWrite(OUT,HIGH);//关闭
      sayToClient(F_C_ID,"LED All off!");        
    }

  if(C=="play")                                   //接收到的是停止指令//接收到的不是停止指令
    {
      digitalWrite(OUT,LOW);//打开
      sayToClient(F_C_ID,"LED All on!");    
    }
  }
}
void checkIn()
{
  String msg="{\"M\":\"checkin\",\"ID\":\"" + DEVICEID + "\",\"K\":\"" + APIKEY + "\"}\n";
  client.print(msg);
  lastCheckInTime=millis(); 
}
void sayToClient(String client_id, String content)
{
  String msg="{\"M\":\"say\",\"ID\":\"" + client_id + "\",\"C\":\"" + content + "\"}\n";
  client.print(msg);
  lastCheckInTime=millis();
}

错误信息:

Arduino:1.8.12 (Mac OS X), 开发板:"NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, Disabled, All SSL ciphers (most compatible), 4M (no SPIFFS), v2 Lower Memory, Disabled, None, Only Sketch, 115200"

sketch_dec03c:64:21: error: variable or field 'processMessage' declared void
 void processMessage(aJsonObject *msg)
                     ^
sketch_dec03c:64:21: error: 'aJsonObject' was not declared in this scope
sketch_dec03c:64:34: error: 'msg' was not declared in this scope
 void processMessage(aJsonObject *msg)
                                  ^
/Users/yyyy/Documents/Arduino/sketch_dec03c/sketch_dec03c.ino: In function 'void loop()':
sketch_dec03c:58:7: error: 'aJsonObject' was not declared in this scope
       aJsonObject *msg = aJson.parse(jsonString);
       ^
sketch_dec03c:58:20: error: 'msg' was not declared in this scope
       aJsonObject *msg = aJson.parse(jsonString);
                    ^
sketch_dec03c:58:26: error: 'aJson' was not declared in this scope
       aJsonObject *msg = aJson.parse(jsonString);
                          ^
sketch_dec03c:59:25: error: 'processMessage' was not declared in this scope
       processMessage(msg);
                         ^
/Users/yuanjiafu/Documents/Arduino/sketch_dec03c/sketch_dec03c.ino: At global scope:
sketch_dec03c:64:21: error: variable or field 'processMessage' declared void
 void processMessage(aJsonObject *msg)
                     ^
sketch_dec03c:64:21: error: 'aJsonObject' was not declared in this scope
sketch_dec03c:64:34: error: 'msg' was not declared in this scope
 void processMessage(aJsonObject *msg)
                                  ^
exit status 1
variable or field 'processMessage' declared void

在文件 -> 首选项开启
“编译过程中显示详细输出”选项
这份报告会包含更多信息。


评论:共2条

贝壳物联 评论于:2020-12-08 09:21:20
应该是没有添加ajson库文件,或者添加的不对,或者版本不对。
戏里23 评论于:2020-12-17 09:45:33
开发板下载错了吧 或者开发板选着错误
评论支持使用[code][/code]标签添加代码
返回顶部