一、发送不在DBC文件中的报文
1. 定义CAN报文变量
定义一个CAN报文的全局变量,如下:
variables
{
//定义一个ID为0x222 名称为msg0x222的CAN报文帧变量
message 0x222 msg0x222; //报文不在DBC中,只能以ID形式声明CAN报文
}
2. 写一个发送函数,设置报文长度,以及发送内容
3. 声明一个定时器,并设置定时器时间
4.在定时器中调用发送报文的函数
2&3&4的代码如下(偷个懒)
/*@!Encoding:936*/
includes
{
}
variables
{
//定义一个ID为0x222 名称为msg0x222的CAN报文帧变量
message 0x222 msg0x222; //报文不在DBC中,只能以ID形式声明CAN报文
msTimer timerSend0x22; //声明一个发送定时器
}
on start
{
//先在start事件里设置timer,设置完后,会自动触发timer事件
write("start...");
setTimer(timerSend0x22,500);
}
on timer timerSend0x22{
//在timer中发送报文
sendMSG0x222();
//write("0x222,send"); 调试的时候可以像这样加一些打印,正式发布的时候记得注释掉
//在timer中设置该timer,确保循环发送
setTimer(timerSend0x22,500);
}
void sendMSG0x222(){
byte i;
msg0x222.dlc = 8;
for(i=0;i<8;i++){
msg0x222.byte(i) = i*2; //给报文赋值
}
output(msg0x222); //发送出去
}

下班了,先写到这,明天继续。
CAPL语言发送非DBC文件报文入门
525

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



