使用关键字message声明can消息,有几种方式:
message 0xA m1; //用消息id声明can消息
message 100 m2; //用消息id声明can消息
message EngineData m3; //用总线上加载的dbc数据库里消息名称声明can消息
如果用消息id声明can消息,消息id可以是10进制或16进制。有些人觉得10进制和16进制是不是有区别,其实对于数字来说,不同进制只是写法不同,进位机制不同,数字大小是一样的
如果用dbc数据库里消息名称声明can消息,必须加载dbc文件
can消息的id根据长度的不同,又分为标准帧和扩展帧。标准帧的id为11个bit,扩展帧的id为29个bit,所以如果你想根据帧id来声明扩展帧,需要在帧id后面加x
message 100x msg1; //消息id后面加x,表示扩展帧
message 0x123456x msg2;
如果你想声明can消息,但是你又不确定can消息的id是多少,你可以声明用“*”号声明一条任何id的消息
message * msg1;
声明无帧id的can消息,多用于不确定帧id或者用来存储can消息
但是如果你想通过output函数把can消息发到总线上,必须给消息添加id
message * msg1;
msg1.dlc = 8;
output(msg1);
如果我想一次性声明多条消息怎么办?
我们知道多个元素的组合叫作数组,