當前位置: 華文問答 > 科學

【物聯網】7.物聯網通訊

2021-11-17科學

嵌入式開發中其實最重要的就是數據傳輸,這部份由於頻繁的使用,高效的格式和演算法就變得很重要,演算法這部份會在其他文章單獨敘述,這裏主要是想說下數據格式

使用過微控制器開發的同學應該比較熟悉,可能就是自己定義的整型(int)或者字串等之類的型別,但是這都是簡單的通訊使用,對於物聯網這種復雜且未來升級需求大的計畫,就需要其他專門的數據格式來做這個工作

物聯網的角度來說,XML 和JSON是可以比較簡單的操作的

舉個例子,假設裝置要發送傳感器的值,此時除了發送傳感器的值以外,還要一並行送數據接收時間、裝置的機器資訊以及使用者資訊等數據。自然,裝置還會通知多個傳感器的值和機器的狀態。

下面的圖就是用XML 和JSON 分別表示了兩台傳感器的資訊、裝置的狀態、獲取數據的時間,以及發送數據的裝置名稱等

比較二者可知,XML 的格式比JSON 更容易理解。然而XML 的字元數較多,數據量較大。相對而言,JSON 比XML 字元數少,數據量也小。

XML 和JSON 這兩種數據格式都在每種語言中實作了各自的庫,使用者透過程式就能很輕松地使用這些庫

存在的問題

裝置傳來的數據和Web 不一樣,大多是傳感器、影像、語音等數值數據。相較於文本而言,這樣的數據更適合用二進制來處理。不過,我們前文介紹的XML 和JSON 都是用文本格式來處理數據的。

基於物聯網服務處理這些格式時,要把文本數據轉換成數值數據和二進制數據。因此需要進行兩項工作,即解析XML 和JSON 格式,以及把解析結果從文本格式轉換到二進制形式。這樣一來,就需要分兩步來處理。

解決方案之一:MessagePack

如果能直接以二進制形式接收數據,是不是就能更迅速地處理數據了呢?由此,一種數據格式應運而生,它就是 MessagePack


MessagePack 的數據格式雖然跟JSON 相似,其數據卻保留了二進制的形式。因此,雖然這種數據格式不方便人們直接閱讀,但電腦卻能很容易地處理。

又因為MessagePack 發送的是二進制數據,所以比起以文本形式發送數據的JSON,數據更加緊湊。MessagePack 跟XML 和JSON 一樣,都提供了面向多種程式語言的庫,另外,近年來多個OSS(開源軟體)也都采用了MessagePack。