培训、咨询、项目开发,请与【思想】联系
1.结构体
通过前面文章《》的介绍,对于CAN通讯协议有三个非常重要的信息,分别是报文ID、数据场、解析与偏移。实现通讯协议的第一步就是定义一个报文的结构体。
⚪ 定义报文ID
本次使用的例子是基于扩展ID,ID长度为29个位。由于C语言没有29位长度的数据类型所以使用32位数据类型UINT32。如果是标准ID使用16位数据类型UINT16即可。
小提示:数据类型
标准的C语言是没有UINT32、UINT16等这样的变量,这都是根据选用芯片的类型在宏中预先定义的。如:16位系统的UINT32 对应的C语言表达就是unsigned long,而对于32位系统的UINT32则对应的是usigned int。
⚪ 定义数据场
使用UINT8数据类型定义一个八字节的数组,用来存放数据场信息
⚪ 定义解析与偏移结构体
需要另外在定义一个结构体,用来存放偏移与解析值。如上图,包含两个Float型数据。