一、applILTxPending函数
1、applILTxPending与output(msg) 相比较的优势是什么?
applILTxPending不用定义多条报文及其他报文参数,更适合周期发送数据库的报文,可以自由选择需要发送的报文,周期、发送类型;
1、applILTxPending与IG节点 相比较的优势是什么?
applILTxPending可以动态更改字节的内容,IG节点不行,且无法做逻辑处理;
1)applILTxPending函数的作用:对指定CANID的报文进行字节的预处理;
2)applILTxPending函数的说明:可以对每一帧报文的特定字节做数据操作处理;
(applILTxPending函数通常用于计算滚动的Checksum和Counter上,对字节的处理非常方便)
3)applILTxPending函数的参数解析:
二、applILTxPending函数用法
1)操作流程
2)CAPL脚本
variables
{
byte cntr; //定义变量
}
dword applILTxPending (long aId, dword aDlc, byte data[])
{
//每发出一帧报文前,就会调用一次applILTxPending函数;
if(aId == 100)//当CANid = 100的时候;
{
data[0] = data[0] & 0xf0 | cntr; //将cntr值放到低4位,cntr不超过15;
Chks_Chkscal(data,cntr); //调用一个函数计算Chks,并给其余字节赋值;
if(cntr++ >=15) //发送每一帧cntr都会加1;
{
cntr = 0;
}
if(aId == 200)//当CANid = 200的时候;
{
data[0] = data[0] & 0xf0 | cntr; //将cntr值放到低4位,cntr不超过15;
Chks_Chksca2(data,cntr); //调用一个函数计算Chks,并给其余字节赋值;
if(cntr++ >=15) //发送每一帧cntr都会加1;
{
cntr = 0;
}
//执行之后就开始发出报文;
}
void Chks_Chkscal(byte data[],byte cntr)
{
//直接给字节赋值或者添加算法;
data[1] = data[0] + 1;
data[2] = 0x1;
data[3] = 0x2;
data[4] = 0x2;
data[5] = 0x3;
data[6] = 0x4;
data[7] = 0x5;
}
void Chks_Chksca2(byte data[],byte cntr)
{
//直接给字节赋值或者添加算法;
data[1] = data[0] + 2;
data[2] = 0x1;
data[3] = 0x2;
data[4] = 0x2;
data[5] = 0x3;
data[6] = 0x4;
data[7] = 0x5;
}
综上,就是简单的applILTxPending的用法;