打印
[其它产品/技术]

什么是ITLV格式?

[复制链接]
738|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
szt1993|  楼主 | 2024-3-26 14:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
大家可能看到网络上的很多文章用的是TLV(Tag、Length、Value)格式数据。实际中,可以根据实际需要进行修改。我们这里稍微改一下,实际上也是大同小异的。

我们这里的ITLV各字段的含义:

I:ID或Index,用于区分是什么数据。
T:Type,代表数据类型,如int、float等。
L:Length,表示数据的长度(Value的长度)。
V:Value,表示实际的数据。
其中,I、T、L是固定长度的,在制定具体的数据协议之前,需要评估好当前项目的数据会有多少、数据的最大长度是多少,考虑好后续数据扩展也可以保证协议通用。一般I设置为1~2字节,T设置为1字节,L设置为1~4字节。

下面我们制定一个格式:


实际中,如果在物联网系统中数据传输,我们用户自定义的协议字段可能就只包含如上四个字段就可以了。比如我们公司的云平台上的用户数据格式用的就是类似ITLV这样的格式。用户在制定协议时的协议字段包含如上字段就可以了。

没有包头做一些数据区分,也没有校验字段,只包含如上字段就能保证数据可靠传输吗?

因为端云通信采用MQTT,基于TCP,TCP的特点就是可靠的,网络协议中会带有校验。并且,实际在传输用户数据时,还会再用户数据之前增加一些字段区分这就是用户数据。所以,其实基于它的设备SDK来进行开发,操作的数据就是如上的数据。

但是,如果应用于板与板之间的通信,只包含如上字段自然是有风险的。我们至少还需要还要包头、校验字段。

实际中根据需要还可以增加其它字段,比如如果需要分包发送,还需要增加包号;如果多块板之间进行通信,还需要增加发送数据目标地址等。

这里我们增加包头与校验字段:

其中:

(1)Head固定为0x55、0xAA。

(2)Length为1字节,即Value最大为256B。

使用特权

评论回复
沙发
和下土| | 2024-3-27 01:56 | 只看该作者
ITLV 格式还可以用于描述固件、配置文件、日志文件等各种类型的数据。

使用特权

评论回复
板凳
LOVEEVER| | 2024-3-27 14:20 | 只看该作者
JSON文件是这种格式嘛?

使用特权

评论回复
地板
IFX-LeoLI| | 2024-4-25 14:14 | 只看该作者
LOVEEVER 发表于 2024-3-27 14:20
JSON文件是这种格式嘛?

JSON文件首先它是文件,属于比较偏上层用来描述一个对象或配置的数据文件,需要使用专门的JSON解析器解析。
TLV是底层而且在内存中通过位置偏移直接访问和解析的原始数据。

使用特权

评论回复
5
lidi911| | 2024-4-25 19:15 | 只看该作者
我晕,这个是MCU版块啊,在这里讲互联网。

使用特权

评论回复
6
FranklinUNK| | 2024-4-26 15:39 | 只看该作者
这个可以做日志打印吗

使用特权

评论回复
7
yangjiaxu| | 2024-4-29 13:40 | 只看该作者
其实这个只是一个协议,怎么搞还得看与上位机对应才行

使用特权

评论回复
8
suncat0504| | 2024-4-30 16:00 | 只看该作者
对于习惯了Windows窗体开发的人而言,空间的属性、事件是越来越多,开发是方便。硬件开发商,太多的协议,眼花缭乱,其实像楼主说的那样,简洁化的,只保留一些重要属性,方便开发是最好的。

使用特权

评论回复
9
suncat0504| | 2024-4-30 16:01 | 只看该作者
感觉现在学习硬件开发, 在协议上话的时间,也是越来越多了。确实有点难受。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

283

主题

2334

帖子

5

粉丝