CanTpCreateConnection - 创建TP连接
功能:使用给定的地址模式(add人Mode)创建新连接,可用于诊断数据的收发。
说明:无法更改已有连接的寻址模式;如果确实有需要,可以关闭当前连接后再创建一个新连接来使用。
addrMode:(对应的是各种诊断的寻址模式,我们根据自己需要选择对应的模式即可)
0:Normal
1:Extended (based)
2:NormalFixed
3:Mixed
4:Mixed /11 bit)
5:Extended (free)
返回值:
≤ 0:
Code | Short Description |
-19 | 没有这样的连接,即连接创建失败或给定的句柄未知。 |
-18 | 连接已知,但同时已关闭。 |
-17 | 该功能尚未实现。 |
-16 | CAPL 函数接收到错误的参数。 |
-15 | CAPL 函数只能从适当的回调函数中调用。 |
-14 | 无法为其所应用的寻址模式调用函数。 |
-13 | 这在回调函数中是不可能的。 |
-12 | 故障注入未激活。 |
0 | 没有问题 |
> 0:可在其他 CanTp... 函数调用中使用的连接句柄。
代码示例
创建并配置正常模式连接;我们当前市面上百分之九十以上的项目都是使用的常规的CAN&CANFD诊断通信,因此基本都是选择这种模式来创建连接。
//定义一个句柄,后续的都需要使用,我们一般使用全局变量,方便后面的调用
long handle;
//创建一个常规寻址模式的链接,并返回句柄handle
handle = CanTpCreateConnection(0);
//设置诊断请求ID
CanTpSetTxIdentifier(handle, 0x100);
//设置诊断应答ID
CanTpSetRxIdentifier(handle, 0x101);
CanTpCloseConnection - 关闭已经创建的连接
功能:关闭现有使用的连接。后续该链接将无法再次被使用,并且指示此连接将失败的 CAPL 函数调用。
代码示例
关闭数据库连接以确保CAPL程序完全控制该节点中的TP。
long dbHandle;
//获取当前存在的连接
dbHandle = CanTpGetDBConnection();
if( dbHandle > 0)//表示当前连接有效CanTpCloseConnection( dbHandle);
CanTpGetAddressingMode - 获取当前寻址模式
功能:返回给定连接的寻址模式。
注意:由于无法更改现有连接的寻址模式,因此该函数通常用于确定数据库连接的模式,因为所有其他连接都是由 CAPL 程序创建的。
返回值:与CanTpCreateConnection的返回值一致
代码示例
检索数据库连接的寻址模式。
long mode;
mode = CanTpGetAddressingMode(CanTpGetDBConnection());
if( mode < 0)write( "There is no database connection!");
elsewrite( "Database connection uses mode %d", mode);
CanTpGetDBConnection - 获取当前连接
功能:此函数返回通过分配给该模拟节点的数据库节点配置的连接句柄。
说明:用于定义节点的 TP 连接的 CANdb 属性针对工具链进行了标准化,并且通常由 OEM 在通信矩阵中指定。调用此函数时,OSEKTL API 将被停用(独立于返回值)。 可以通过调用适当的 OSEKTL 函数来重新激活它。
返回值:参考CanTpCreateConnection
代码示例
获取数据库连接并在其上发送一些数据。
long dbHandle;
BYTE data[100];
dbHandle = CanTpGetDBConnection();
if( dbHandle > 0)CanTpSendData( dbHandle, data, elcount(data));