目录
CanTpGetRxIdentifier
CanTpGetTxIdentifier
CanTpSetRxIdentifier
CanTpSetTxIdentifier
代码示例
CanTpGetPadding & CanTpSetPadding
代码示例
CanTpGetAcceptOtherMode & CanTpSetAcceptOtherMode
代码示例
对于使用OSEK.dll文件调用发送诊断数据和接收诊断数据,对于诊断发送ID和接收ID的设置是为重中之重,如果没有这个设置,我们将无法对我们的诊断数据进行发送和接收的检查,因此我们需要对其进行设置;如果对于大型的脚本框架来说,在脚本的不同的位置,我们可能还需要对于诊断ID进行获取和校验,因此这类函数也是必要的。下面我们就来介绍下这4个函数:发送ID的设置、接收ID的设置、发送ID的获取、接收ID的获取。
CanTpGetRxIdentifier
功能:获取连接用于接收 (Rx) 协议数据的消息的 CAN ID。
CanTpGetTxIdentifier
功能:获取连接用于发送 (Tx) 协议数据的消息的 CAN ID。
CanTpSetRxIdentifier
功能:设置连接用于接收 (Rx) 协议数据的消息的 CAN ID。
CanTpSetTxIdentifier
功能:设置连接用于发送 (Tx) 协议数据的消息的 CAN ID。
代码示例
long handle;
handle = CanTpCreateConnection(0);
if( handle <= 0)
return; // error
CanTpSetRxIdentifier( handle, 0x80000000 | 0xABCDEF);
CanTpSetTxIdentifier( handle, 0x80000000 | 0x987654);
CanTpGetPadding & CanTpSetPadding
功能:获取和设置 CAN 消息填充的状态,并指定填充字节(如果使用);CanTpGetPadding 返回 connHandle 引用的 TP 连接设置的 paddingValue。 即,默认值或先前使用 Set 函数设置的值(或者可能是错误值)。
paddingValue值设置:
-1:不要将 CAN 消息填充到 8 个数据字节,即 CAN 消息的 DLC 将有所不同。
0 - 255:给定的字节值用于将 CAN 消息填充为 8 个数据字节。
256:CAN 消息以 DLC 8 发送,但字节未初始化,即字节的内容是任意的并且取决于先前发送的消息。
其他:保留
connHandle:传输协议的句柄
返回值:
0:设置成功
-1:设置失败
代码示例
创建的TP连接的填充值设置为0xAA。
long handle;
//正常链接模式
handle = CanTpCreateConnection( 0);
CanTpSetTxIdentifier(handle, 0x100);
CanTpSetRxIdentifier(handle, 0x101);
// 将填充字节值设置为 0xAA
CanTpSetPadding(handle, 0xAA);
CanTpGetAcceptOtherMode & CanTpSetAcceptOtherMode
功能:获取或设置有关 CAN 2.0 或 FD 帧的连接行为:激活后,CAN 2.0 连接将接受 CAN FD 帧,甚至可能继续发送 CAN FD 帧。 CAN FD 连接将接收 CAN 2.0 帧,甚至可能继续发送 CAN 2.0 帧。
注意:此函数可能会导致 TP 层出现非标准行为,因此必须谨慎使用!
connHandle:传输协议连接的句柄。
acceptType:
0:忽略 CAN FD (CAN 2.0) 连接上的 CAN 2.0 (CAN FD) 帧(默认)
1:在CAN FD(CAN 2.0)连接上接受CAN 2.0(CAN FD)帧,但继续发送CAN FD(CAN 2.0)
2:在CAN FD(CAN 2.0)连接上接收CAN 2.0(CAN FD)帧,并通过发送CAN 2.0(CAN FD)帧来适应其余的数据传输
返回值:
Code | Short Description |
-19 | 没有这样的连接,即连接创建失败或给定的句柄未知。 |
-18 | 连接已知,但同时已关闭。 |
-17 | 该功能尚未实现。 |
-16 | CAPL 函数接收到错误的参数。 |
-15 | CAPL 函数只能从适当的回调函数中调用。 |
-14 | 无法为其所应用的寻址模式调用函数。 |
-13 | 这在回调函数中是不可能的。 |
-12 | 故障注入未激活。 |
0 | 好的,没有错误 |
代码示例
long CreateCANFDConnection( WORD txId, WORD rxId)
{
long handle;
handle = CanTpCreateConnection( 0); // normal链接模式
CanTpSetTxIdentifier( handle, txId);
CanTpSetRxIdentifier( handle, rxId);
CanTpSetMaxCANFDFrameLength( handle, 24); // 使能CANFD
CanTpSetBitRateSwitch( handle, 1); // activate BRS
CanTpSetAcceptOtherMode( handle, 2); // 适应peer指示的模式
return handle;
}