目录
canGetDataLength -- 获取CAN消息有效负载长度
代码示例
canOutputErrorFrame -- 模拟发送错误帧消息
代码示例
isStdId & isExtId -- 判断报文是标准帧&扩展帧
代码示例
mkExtId -- 将标准帧转换为扩展帧
代码示例
valOfId -- CAN消息的长值标识符
代码示例
canConfigureBusOff -- 总线设置为Busoff
代码示例
canGetDataLength -- 获取CAN消息有效负载长度
功能: 返回 can 消息的有效负载长度。
msg:CAN报文消息,通过变量message变量定义的CAN消息,也可以是this。
返回值:0 - 64(CAN&CANFD的长度范围)
代码示例
on message CAN1.*
{
int message_len;
if(this.id == 0x100)
{
message_len = canGetDataLength(this);
write("Message 0x100 length is %d", message_len);
}
}
canOutputErrorFrame -- 模拟发送错误帧消息
功能:向 CAN 总线发送错误帧;显性位的数量和尾部隐性位的数量作为参数给出。
errorFrame:errorFrame 类型的变量。
dominant:显性位的数量
recessive:隐性位的数量
返回值:
1:发送成功
0:发送失败(例如 驱动不支持)
代码示例
errorframe error1;
CAN2.errorFrame error2;
//在 CAN1 上输出具有 12 个显性位的错误帧
canOutputErrorFrame(error1, 12, 0);
//在 CAN1 上输出具有 12 个显性位的错误帧
canOutputErrorFrame(error2, 6, 0);
isStdId & isExtId -- 判断报文是标准帧&扩展帧
功能:检查标准帧&扩展帧的参数;检查扩展标识符(29 位)或标准标识符(11 位)的参数。
message:CAN消息类型的变量
id:CAN消息的 ID 部分
返回值:
1:isStdId 如果是标准帧则返回1;isExtId 如果是扩展帧则返回1
0:isStdId 如果不是标准帧则返回0;isExtId 如果不是扩展帧则返回1
代码示例
if(isExtId(this))
write("extended identifier");
else
write("standard identifier");
//代码等同于
if(isStdId(m100.id))
write("standard identifier");
else
write("extended identifier");
mkExtId -- 将标准帧转换为扩展帧
功能:将标准帧报文ID修改为扩展帧报文
id:CAN消息的 ID 部分
返回值:扩展标识符
代码示例
msg.id = mkExtId(this.id);
//msg.id变为扩展帧报文
valOfId -- CAN消息的长值标识符
功能:返回与其类型无关的消息标识符的值,作为长值的标识符
message:CAN消息类型的变量
id:CAN消息的 ID 部分
返回值:作为长值的标识符。
代码示例
on message *
{
long x;
x = valOfId(this);
write("Received Identifier: %d",x);
output(this);
}
canConfigureBusOff -- 总线设置为Busoff
功能:将总线状态设置为 BussOff,使用消息的定义 ID 将总线状态设置为 BusOff。
注意:此功能至少需要 Vector 驱动程序 9.6 和支持 ISO CAN FD 的网络接口。
Channel:CAN 通道。
canId:用于将总线状态设置为 BusOff 的消息 ID。
flags:
0 : 关闭干扰
1 : 打开干扰
返回值:
1:已成功打开定义 ID 的干扰。
0:无法打开定义 ID 的干扰。
代码示例
variables
{
message 0x1 msg; // define CAN message
}
on key '1'
{
// 启用干扰
canConfigureBusOff(msg.msgChannel, msg.Id, 1);
}
on key '2'
{
output(msg);
}
on key '3'
{
//关闭干扰
canConfigureBusOff(msg.msgChannel, msg.Id, 0);
}
on key 'r'
{
resetCanEx(1);
}