MQTT專案完成總結筆記

2021-07-27 19:02:26 字數 1198 閱讀 2660

完成專案期間遇到很多問題,特此作筆記:

1、安卓只能識別128以下得數,若128以上的數則需將其強轉為byte即(byte)0xaa

2、解決485傳輸資料異常問題:因輸入輸出模式之間切換過快,導致資料傳輸異常

解決辦法:新增delay函式

private void delay(int ms)  catch (interruptedexception e) 

}

3、解決在檢驗校驗位時直接相加判斷是否與最後一位相等,在安卓中不可用。因為16進製制加起來超過了byte量程所以將其  &0xff  即可。

4、解決使用string.format( , )可實現動態陣列 例:

string humi = string.format("溫度:%d℃\n濕度:%d%%", temp_number, wet_number);

5、關於base64解碼問題,當從伺服器得到資料進行第一次base64解碼後 得到的json資料中的payload依然是base64編碼的。所以需要對json資料進行處理,並進行二次解碼。

原始碼如下

com.alibaba.fastjson.jsonobject jobj=com.alibaba.fastjson.json.parseobject(getfrombase64(popmsg.getmessagebodyasrawstring()));//解碼原始碼

string payload=jobj.get("payload").tostring();//提取payload中的資料

system.out.println("message "+getfrombase64(payload));//列印並解碼

6、關於mqtt執行緒問題。需要在activity中的ondestory()中:
transporter.sampleclient.disconnect();
7、關於mqtt應用執行過程中,斷開裝置網路連線,程式停止工作。並報錯channel is unrecoverably broken and will be disposed!

則需將mqtt中的set.qos(1)修改為set.qos(0);

MQTT學習筆記四 MQTT報文結構

mqtt是乙個二進位制的協議,採用的是命令和命令確認的方式。其中,topic name,client id,user name和password是utf 8的字串。有效載荷 payload 是二進位制,格式和內容根據應用本身來指定。協議包含固定報頭,可變報頭和有效載荷三部分內容。其中,固定報頭是必須...

MQTT協議學習總結

mqtt 協議是建立在 tcp 協議之上的,就好比汽車地盤上有四個輪胎就能跑了,但是想要大家開車更舒服,我們還是得給底盤加個殼。為什麼要在 tcp 協議之上再封裝一層 mqtt 協議呢?舉個例子,如果你要用 tcp 協議做乙個即時聊天室,那麼你 首先寫乙個伺服器程式,監聽某個埠,這樣客戶端就能連線上...

專案完成後的小總結

專案完成了,突然想做個總結但是有點無從下手了。做之前對於客戶端給的介面很模式。然而定義好了格式要求就如此的愉快了。先說說專案主要實現的功能吧 1,按鍵精靈 2,獲取 資料 3,各種input輸入條件判斷 4,傳送資料 有json格式和string格式 5,獲取預警條件列表和預警結果列表,6,排序,7...