国内综合精彩aⅤ无码不卡_日本少妇做爰全过程_欧美性爱在线播放免费_午夜?V日韩一区二区_免费a级毛片无码免费播放_成在人线av无码喷水_亚洲精品网站色视频_国产婷婷精品成人_老师撩起裙子让我桶的视频_秋霞影院国产

Arduino通過提供的代碼開燈,這部分代碼是什么意思???

作者:Blue moon | 更新時(shí)間:2018-08-07 | 瀏覽量:2720

有沒有朋友懂的,幫注釋下唄,感激不盡@貝殼物聯(lián)

想噴的,請(qǐng)繞路

#include <aJSON.h>
//=============  此處必須修該============
String DEVICEID="xxx"; // 你的設(shè)備編號(hào)   ==
String  APIKEY="xxxxxxxx"; // 設(shè)備密碼==
//=======================================
unsigned long lastCheckInTime = 0; //記錄上次報(bào)到時(shí)間
unsigned long lastCheckStatusTime = 0; //記錄上次報(bào)到時(shí)間
const unsigned long postingInterval = 40000; // 每隔40秒向服務(wù)器報(bào)到一次
const unsigned long statusInterval = 100000; // 每隔100秒檢測一次在線狀態(tài)
String inputString = "";
boolean stringComplete = false;
char* parseJson(char *jsonString);                                                                  //???
void setup() {
  Serial.begin(115200);
  delay(6000);
}
void loop() {

//???
  if(millis() - lastCheckInTime > postingInterval || lastCheckInTime==0) {
    checkIn();
  }
  if(millis() - lastCheckStatusTime > statusInterval) {
    checkStatus();
  }

//??
  serialEvent();
  if (stringComplete) {
    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);          
    }
    // clear the string:
    inputString = "";
    stringComplete = false;    
  }
}

 

//??
void checkIn() {
  Serial.print("{\"M\":\"checkin\",\"ID\":\"");
  Serial.print(DEVICEID);
  Serial.print("\",\"K\":\"");
  Serial.print(APIKEY);
  Serial.print("\"}\n");
  lastCheckInTime = millis();   
}

 

//???
void checkOut() {
  Serial.print("{\"M\":\"checkout\",\"ID\":\"");
  Serial.print(DEVICEID);
  Serial.print("\",\"K\":\"");
  Serial.print(APIKEY);
  Serial.print("\"}\n");
}

//???
void checkStatus() {
  Serial.print("{\"M\":\"status\"}\n");
  lastCheckStatusTime = millis();
}

 

//???
void processMessage(aJsonObject *msg){
  aJsonObject* method = aJson.getObjectItem(msg, "M");
  aJsonObject* content = aJson.getObjectItem(msg, "C");     
  aJsonObject* client_id = aJson.getObjectItem(msg, "ID");  
  //char* st = aJson.print(msg);

 

 

//???
  if (!method) {
    return;
  }
  //Serial.println(st); 
  //free(st);
  String M=method->valuestring;
  String C=content->valuestring;
  String F_C_ID=client_id->valuestring;
  if(M=="WELCOME TO BIGIOT"){
    checkOut();
    delay(1000);
    checkIn();
  }

 

//???
  if(M=="connected"){
    checkOut();
    delay(1000);
    checkIn();
  }
  if(M=="say"){
    if(C=="offOn"){
      sayToClient(F_C_ID,"\u4f60\u5230\u5e95\u60f3\u5f00\u8fd8\u662f\u60f3\u5173\uff1f");
    }
    else if(C=="play"){
      sayToClient(F_C_ID,"\u4e00\u8d77\u73a9\u5427\u002d\u005f\u002d\u0021");
    }
    else if(C=="stop"){
      sayToClient(F_C_ID,"\u90a3\u771f\u662f\u505c\u4e0d\u4e0b\u6765\u554a\uff01");
    }else{
      sayToClient(F_C_ID,"\u4f60\u8bf4\u5565\uff1f");
    }
  }
}

 

//???
void sayToClient(String client_id, String content){
  Serial.print("{\"M\":\"say\",\"ID\":\"");
  Serial.print(client_id);
  Serial.print("\",\"C\":\"");
  Serial.print(content);
  Serial.print("\"}\n");
  lastCheckInTime = millis();
}

 

//????
void serialEvent() {
  while (Serial.available()) {
    char inChar = (char)Serial.read();
    inputString += inChar;
    if (inChar == '\n') {
      stringComplete = true;
    }
  }
}


評(píng)論:共11條

SS501 評(píng)論于:2018-08-08 09:52:53
那一部分呢??
Blue moon 回復(fù)于:2018-08-08 10:37:24
回復(fù) @SS501:帶問號(hào)的,其實(shí)沒標(biāo)注的幾乎都看不懂....,希望大神幫幫忙
SS501 評(píng)論于:2018-08-08 10:54:04
我就順著開始:1.2.就是記錄時(shí)間的,就是40秒就向貝殼發(fā)送一次數(shù)據(jù),假如時(shí)間到了100秒就發(fā)送一次請(qǐng)求狀態(tài),這些你可以看一看它的通信協(xié)議,協(xié)議里面有的;3.這就是讀取串口收到的保文,然后用void processMessage()這個(gè)函數(shù)解析出信號(hào);4.void checkIn() 函數(shù)是向貝殼發(fā)送你的在線狀態(tài),不然貝殼平臺(tái)會(huì)一段時(shí)間后顯示你不在線;5.6.這兩個(gè)都是一樣,你看一下通信協(xié)議就知道啦,就是查詢轉(zhuǎn)態(tài)的意思;7.void processMessage()這個(gè)函數(shù)就是解析你串口收到的數(shù)據(jù);8.void sayToClient(String client_id, String content)這個(gè)函數(shù)你也要看一下通信協(xié)議就可以知道;9.void serialEvent() 這個(gè)函數(shù)就是讀取串口數(shù)據(jù), if (inChar == '\n')這句是讀取到最后的換行了,那就說明串口讀取結(jié)束。
Blue moon 回復(fù)于:2018-08-08 11:18:05
回復(fù) @SS501:謝謝大神?。?!膜拜
SS501 評(píng)論于:2018-08-08 11:31:37
沒有啦,互相學(xué)習(xí)學(xué)習(xí),其實(shí)我也是剛剛摸索了兩天自己感觸出來的,只是我自己改了好多,這個(gè)程序我用不了。
Blue moon 回復(fù)于:2018-08-08 14:06:52
回復(fù) @SS501:我這個(gè)能直接用,為啥要改??
SS501 回復(fù)于:2018-08-08 16:50:52
回復(fù) @Blue moon:我用的是Arduino+正點(diǎn)原子的ESP8266模塊,還有你應(yīng)該是燒了ESP8266的固件庫,直接就可以進(jìn)行聯(lián)網(wǎng)透傳,我的是自己程序里面配置的。
SS501 回復(fù)于:2018-08-08 16:55:54
回復(fù) @Blue moon:說實(shí)話啊,我怎么沒有看到你鏈接那個(gè)無線網(wǎng)?還有密碼呢?
Blue moon 回復(fù)于:2018-08-12 18:56:30
回復(fù) @SS501:我把WiFi名稱,密碼燒錄在ESP8266里面了
Blue moon 回復(fù)于:2018-08-12 20:13:25
回復(fù) @SS501:透傳也燒進(jìn)去了
dfkn 評(píng)論于:2019-04-14 16:44:18
留個(gè)記號(hào)
返回頂部