当前位置: 华文问答 > 科学

【物联网】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。