簡體   English   中英

20 字節的藍牙 LE 數據 JSON

[英]Bluetooth LE data JSON in 20 bytes

我在 Arduino 上有一個藍牙 LE 模塊,它向 Android 應用程序發送一個 JSON 字符串。

JSON 字符串如下所示:

{'d_stats':[{'t':'26.62','h':'59.64','p':'755.23','a':'109.02','hrm':'0.00'}]}

Android 應用程序接收 20 字節(20 個字符限制)的數據包,我找不到在收到最后一個數據包時將所有數據包放在一起的方法。

有沒有辦法知道什么時候收到最后一個數據包?

編輯:藍牙以恆定的時間間隔發送數據。 Arduino 板上有一個按鈕,按下該按鈕時,將通過藍牙發送其他數據。 問題在於它與定時傳輸重疊。

我找到了解決方案,雖然不是很優雅。 BLE 將在單個數據包中發送鍵/值對,而不是發送整個 JSON 字符串。 首先在 C 中:

char passMsg(String akey, char* origMsg){
  // akey = object key must be 4 characters long
  // origMsg + akey must be shorter than 20 characters
  char* newmsg = origMsg;
  size_t prevlen = strlen(newmsg);  
  memset(newmsg + prevlen, ' ', 15 - prevlen);
  *(newmsg + 15) = '\0'; 
  String bleMsg = akey + ":"+newmsg;
  ble.print("AT+BLEUARTTX=");            
  ble.println(bleMsg);  
}

這樣我傳遞了一個這樣的字符串: temp:20.45

然后在 Android/Java 中:

String[] rawString = data.replace(" ", "").split(":");
if(rawString.length>1){
  String apiCallKey = rawString[0];
  String apiCallVal = rawString[1];
  callAPI(apiCallKey,apiCallVal);
}

其中data是來自藍牙的原始數據。

呼...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM