SOME/IP 详解系列(4)—— 数据类型
前言
SOME/IP数据类型是该协议中的基础概念,了解数据类型可以帮助我们理解SOME/IP的工作原理和实现方式。在做通信设计时,需要根据具体的应用需求和复杂性,选择合适的数据类型。简单的说,数据类型就是SOME/IP报文的Payload中要传输的数据是什么样的结构,以及如何排列。
数据类型
SOME/IP支持的数据类型可以分为基础数据类型和复杂数据类型两种。基础数据类型涵盖了不同大小和表示方式的整数、布尔值和浮点数;而复杂数据类型则包括String字符串、Array数组、Enumeration枚举、Union联合体(或者叫Variant可变体)和Struct结构体,见下图。

String
字符串,一般用于表示文本信息,如报警提示、故障描述、歌词信息等均可定义为字符串,另外有些场景如果需要直接传输字节流,也可以通过字符串的形式传输。SOME/IP协议支持UTF-8、UTF-16BE和UTF-16LE三种字符串编码,无论哪种都需要在前面加一个Byte Order Mark(BOM)字段,用于标识字节顺序,其值为0xEFBBBF(UTF-8)、0xFEFF(UTF-16BE)和0xFFFE(UTF-16LE)。当字符串结束时,均以“\0”作为结束符,因为编码方式不同,所以UTF-8以0x00结束,UTF-16以0x0000结束。
字符串分为固定长度(Fixed length)和动态长度(Dynamic length)两种。对于固定长度,需要预先定义好其长度,通常是在SOME/IP的静态接口描述文档(通信矩阵)中定义。对于动态长度,因为长度可变,所以无需定义长度,但需要定义其最大长度,另外还需要在BOM字段前添加一个长度字段(Length filed),用于标识其长度,单位为字节,这个Length fi

最低0.47元/天 解锁文章
2578

被折叠的 条评论
为什么被折叠?



