<em id="ri2my"></em>
  • <em id="ri2my"></em>
    <em id="ri2my"><label id="ri2my"><nav id="ri2my"></nav></label></em>
  • <em id="ri2my"><label id="ri2my"></label></em>
    <div id="ri2my"></div>
    1. <em id="ri2my"><label id="ri2my"></label></em>
    2. <em id="ri2my"><ol id="ri2my"></ol></em>
      <em id="ri2my"></em>

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

        作者:Blue moon | 更新時間:2018-08-07 | 瀏覽量:1895

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

        想噴的,請繞路

        #include <aJSON.h>
        //=============  此處必須修該============
        String DEVICEID="xxx"; // 你的設備編號   ==
        String  APIKEY="xxxxxxxx"; // 設備密碼==
        //=======================================
        unsigned long lastCheckInTime = 0; //記錄上次報到時間
        unsigned long lastCheckStatusTime = 0; //記錄上次報到時間
        const unsigned long postingInterval = 40000; // 每隔40秒向服務器報到一次
        const unsigned long statusInterval = 100000; // 每隔100秒檢測一次在線狀態
        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;
            }
          }
        }


        評論:共11條

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

        <em id="ri2my"></em>
      2. <em id="ri2my"></em>
        <em id="ri2my"><label id="ri2my"><nav id="ri2my"></nav></label></em>
      3. <em id="ri2my"><label id="ri2my"></label></em>
        <div id="ri2my"></div>
        1. <em id="ri2my"><label id="ri2my"></label></em>
        2. <em id="ri2my"><ol id="ri2my"></ol></em>
          <em id="ri2my"></em>

          1. 免费高清视频