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

各位可以幫我看看代碼有什么問(wèn)題嗎?

作者:Justin233 | 更新時(shí)間:2019-12-12 | 瀏覽量:1361

想要將一個(gè)超聲波傳感器的數(shù)據(jù)實(shí)時(shí)傳輸?shù)狡脚_(tái)上,源代碼(修改了溫度實(shí)時(shí)監(jiān)控所給代碼的數(shù)據(jù)處理部分,其他的地方?jīng)]有改動(dòng))如下,為什么平臺(tái)上接受到的數(shù)據(jù)一直是0?

#include <aJSON.h>
//=============  此處必須修改============
String DEVICEID = ""; // 你的設(shè)備ID=======
String APIKEY = ""; // 設(shè)備密碼==
String INPUTID = ""; //接口ID==============
//=======================================

//const int LM35 = 0;// LM35 Vout 接 A0
const int TrigPin = 6; //發(fā)出超聲波
const int EchoPin = 7; //收到反射回來(lái)的超聲波
float cm; //因?yàn)闇y(cè)得的距離是浮點(diǎn)型的
unsigned long lastCheckStatusTime = 0; //記錄上次報(bào)到時(shí)間
unsigned long lastUpdateTime = 0;//記錄上次上傳數(shù)據(jù)時(shí)間
const unsigned long postingInterval = 40000; // 每隔40秒向服務(wù)器報(bào)到一次
const unsigned long updateInterval = 5000; // 數(shù)據(jù)上傳間隔時(shí)間5秒
unsigned long checkoutTime = 0;//登出時(shí)間
void setup() {
  Serial.begin(115200);
  delay(5000);//等一會(huì)兒ESP8266
}
void loop() {
  //每一定時(shí)間查詢一次設(shè)備在線狀態(tài),同時(shí)替代心跳
  if (millis() - lastCheckStatusTime > postingInterval) {
    checkStatus();
  }
  //checkout 50ms 后 checkin
  if ( checkoutTime != 0 && millis() - checkoutTime > 50 ) {
    checkIn();
    checkoutTime = 0;
  }
  //每隔一定時(shí)間上傳一次數(shù)據(jù)
  if (millis() - lastUpdateTime > updateInterval) {
    digitalWrite(TrigPin, LOW); //低高低電平發(fā)一個(gè)短時(shí)間脈沖去TrigPin 
    delayMicroseconds(2);       // delayMicroseconds在更小的時(shí)間內(nèi)延時(shí)準(zhǔn)確
    digitalWrite(TrigPin, HIGH); 
    delayMicroseconds(10); 
    digitalWrite(TrigPin, LOW); //通過(guò)這里控制超聲波的發(fā)射
  
    cm = pulseIn(EchoPin, HIGH) / 58.0; //將回波時(shí)間換算成cm 
    cm = (int(cm * 100.0)) / 100.0; //保留兩位小數(shù) 
    //Serial.print("Distance:"); 
    //Serial.print(cm); 
    //Serial.print("cm"); 
    //Serial.println(); 
    //cm = 100;
    update1(DEVICEID, INPUTID, cm);
    lastUpdateTime = millis();
  }
  //讀取串口信息
  while (Serial.available()) {
    String inputString = Serial.readStringUntil('\n');
    //檢測(cè)json數(shù)據(jù)是否完整
    int jsonBeginAt = inputString.indexOf("{");
    int jsonEndAt = inputString.lastIndexOf("}");
    if (jsonBeginAt != -1 && jsonEndAt != -1) {
      //凈化json數(shù)據(jù)
      inputString = inputString.substring(jsonBeginAt, jsonEndAt + 1);
      int len = inputString.length() + 1;
      char jsonString[len];
      inputString.toCharArray(jsonString, len);
      aJsonObject *msg = aJson.parse(jsonString);
      processMessage(msg);
      aJson.deleteItem(msg);
    }
  }
}
//設(shè)備登錄
//{"M":"checkin","ID":"xx1","K":"xx2"}\n
void checkIn() {
  Serial.print("{\"M\":\"checkin\",\"ID\":\"");
  Serial.print(DEVICEID);
  Serial.print("\",\"K\":\"");
  Serial.print(APIKEY);
  Serial.print("\"}\n");
}
//強(qiáng)制設(shè)備下線,用消除設(shè)備掉線延時(shí)
//{"M":"checkout","ID":"xx1","K":"xx2"}\n
void checkOut() {
  Serial.print("{\"M\":\"checkout\",\"ID\":\"");
  Serial.print(DEVICEID);
  Serial.print("\",\"K\":\"");
  Serial.print(APIKEY);
  Serial.print("\"}\n");
}

//查詢?cè)O(shè)備在線狀態(tài)
//{"M":"status"}\n
void checkStatus() {
  Serial.print("{\"M\":\"status\"}\n");
  lastCheckStatusTime = millis();
}

//處理來(lái)自ESP8266透?jìng)鞯臄?shù)據(jù)
void processMessage(aJsonObject *msg) {
  aJsonObject* method = aJson.getObjectItem(msg, "M");
  if (!method) {
    return;
  }
  String M = method->valuestring;
  if (M == "WELCOME TO BIGIOT") {
    checkOut();
    checkoutTime = millis();
    return;
  }
  if (M == "connected") {
    checkIn();
  }
}
//上傳一個(gè)接口數(shù)據(jù)
//{"M":"update","ID":"2","V":{"2":"120"}}\n
void update1(String did, String inputid, float value) {
  Serial.print("{\"M\":\"update\",\"ID\":\"");
  Serial.print(did);
  Serial.print("\",\"V\":{\"");
  Serial.print(inputid);
  Serial.print("\":\"");
  Serial.print(value);
  Serial.println("\"}}");
}
//同時(shí)上傳兩個(gè)接口數(shù)據(jù)調(diào)用此函數(shù)
//{"M":"update","ID":"112","V":{"6":"1","36":"116"}}\n
void update2(String did, String inputid1, float value1, String inputid2, float value2) {
  Serial.print("{\"M\":\"update\",\"ID\":\"");
  Serial.print(did);
  Serial.print("\",\"V\":{\"");
  Serial.print(inputid1);
  Serial.print("\":\"");
  Serial.print(value1);
  Serial.print("\",\"");
  Serial.print(inputid2);
  Serial.print("\":\"");
  Serial.print(value2);
  Serial.println("\"}}");
}


評(píng)論:共0條

返回頂部