<noscript id="mmkmi"><source id="mmkmi"></source></noscript>
  • <noscript id="mmkmi"><kbd id="mmkmi"></kbd></noscript>
  • <table id="mmkmi"><source id="mmkmi"></source></table>
  • 天貓精靈指令

    作者:1983king | 更新時間:2019-12-25 | 瀏覽量:1190

    這段是從串口接收到的

    {"M":"say","ID":"U123","S":"D999","C":"{\"n\":\"SetBrightness\",\"a\":\"brightness\",\"v\":\"50\"}","SIGN":"Aligenie","T":"1577109735"}

    可以從 C 提取出 v 的值嗎?

    重要代碼如下

    void serialEvent() 
    {
       if (Serial.available()>0) 
       {
         String inputString = Serial.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* contentV = aJson.getObjectItem(content, "v");

       
         if (!method) 
         {
           return;
         } 
         String M=method->valuestring;
         String C=content->valuestring;
         String V=contentV->valuestring;

    if(M=="say")
         {
           if(V == "50" )
            {
              Serial.println(V);                                      
            }

          }

    }


    評論:共5條

    貝殼物聯 評論于:2019-12-26 09:21:12
    可以把C值當做JSON字符串再次解析,就跟處理收到的的msg一樣。
    1983king 回復于:2019-12-26 21:44:32
    回復 @貝殼物聯:明白,謝謝
    SPOPULAY 評論于:2020-01-04 22:49:37
    if (C == "play") Serial.println("play");
    else if (C == "stop")Serial.println("stop");
    else
    {
    aJsonObject *A = bigiot.getJsonObj(C);
    aJsonObject* contentV = aJson.getObjectItem(A, "v");
    String V = contentV->valuestring;
    Serial.println(V);
    }

    Arm 回復于:2020-02-22 21:28:29
    回復 @SPOPULAY:讀取S 也一樣嗎,如果使用子設備需要讀取S 的值吧
    yangjie 評論于:2020-02-25 22:52:33
    按照上面回復的,這樣就可以取到S值了
    void processMessage(aJsonObject *msg){
    aJsonObject* method = aJson.getObjectItem(msg, "M");
    aJsonObject* content = aJson.getObjectItem(msg, "C");
    aJsonObject* contentV = aJson.getObjectItem(content, "v");
    aJsonObject* contentS = aJson.getObjectItem(content, "S");


    if (!method)
    {
    return;
    }
    String M=method->valuestring;
    String C=content->valuestring;
    String V=contentV->valuestring;
    String S=contentS->valuestring;
    返回頂部
    <noscript id="mmkmi"><source id="mmkmi"></source></noscript>
  • <noscript id="mmkmi"><kbd id="mmkmi"></kbd></noscript>
  • <table id="mmkmi"><source id="mmkmi"></source></table>
  • 三上悠亚在线观看