1.DoIP_ConfigureRoutingActivationRequest
函数
配置测试仪发送的路由激活请求消息。
语法
capl
void DoIP_ConfigureRoutingActivationRequest(long mode, dword activationType, dword valueReserved);
参数
- mode
- 0:不发送路由激活类型
- 1:发送1字节激活类型,值必须 ≤ 0xFF(默认)
- 2:发送2字节激活类型,值必须 ≤ 0xFFFF
- activationType:当mode为1或2时发送的值。
- valueReserved:消息中保留字段的值。
返回值 ---
可用性
- 版本:8.1 SP4
- 适用场景:仿真/测试设置
示例
capl
// 发送2字节激活类型0x1234,并设置保留字段
DoIP_ConfigureRoutingActivationRequest(2, 0x1234, 0x76543210);
2.DoIP_ConfigureRoutingActivationRetries
函数
激活或停用DoIP路由激活重试机制。仅对指定的否定确认(NACK)码进行重试,可通过代码列表配置。nackCodesCount为0时使用默认列表。
语法
capl
void DoIP_ConfigureRoutingActivationRetries(dword numberOfRetries, dword retryPeriod_ms, byte nackCodes[], dword nackCodesCount);
参数
- numberOfRetries:重试次数(0=停用,默认)。
- retryPeriod_ms:重试间隔时间(毫秒),若numberOfRetries>0则必须>0。
- nackCodes:触发重试的NACK码数组。
- nackCodesCount:数组中NACK码的数量(0=使用默认值0x04和0x11)。
返回值 ---
可用性
- 版本:11.0
- 适用场景:仿真/测试设置
示例
capl
// 激活重试:默认NACK码(0x04/0x11)时最多重试3次,间隔100ms
ActivateRetries() {
byte nackCodes[1];
DoIP_ConfigureRoutingActivationRetries(3, 100, nackCodes, 0);
}
// 停用重试
DeactivateRetries() {
byte nackCodes[1];
DoIP_ConfigureRoutingActivationRetries(0, 0, nackCodes, 0);
}
3. DoIP_ConnectToVehicle
函数
尝试连接到已配置的车辆,可能启动车辆识别阶段以获取IP地址。
语法
capl
void DoIP_ConnectToVehicle();
注意
不得在on prestart处理程序中调用。
参数 ---
返回值 ---
可用性
- 版本:8.1 SP4
- 适用场景:仿真/测试设置
示例
capl
// 按键'c'触发连接车辆
On key 'c' {
DoIP_ConnectToVehicle();
}
4. DoIP_GetReconnectInterval, DoIP_SetReconnectInterval
函数
获取或配置测试仪的重连间隔与最大尝试次数。车辆断开连接后,测试仪会先等待DoIP_SetReconnectDelay配置的延迟时间,再发送TCP连接请求。
语法
capl
dword DoIP_GetReconnectInterval();
void DoIP_SetReconnectInterval(dword reconnectInterval_ms, dword maxAttempts);
参数
- reconnectInterval_ms:TCP连接请求间隔时间(毫秒)。
- maxAttempts:最大连接尝试次数。
返回值
- 形式1:dword(当前重连间隔)
- 形式2:void
可用性
- 版本:9.0 SP3
- 适用场景:仿真/测试设置
示例
capl
// 配置重连:每200ms尝试1次,最多15次,延迟500ms后开始
void Configure_DoIP() {
DoIP_SetReconnectInterval(200, 15);
DoIP_SetReconnectDelay(500);
}
5. DoIP_InitAsTester
函数
将DoIP.DLL切换为测试仪模式(默认模式为ECU仿真)。测试模块中需在on preStart中调用,内置诊断通道无需调用。
语法
capl
void DoIP_InitAsTester();
参数 ---
返回值 ---
可用性
- 版本:8.1 SP4
- 适用场景:仿真/测试设置
示例
capl
on preStart {
// 确保DoIP.DLL不作为车辆模式运行
DoIP_InitAsTester();
}
6. DoIP_SendEntityStatusRequest
函数
以受限广播或指定地址发送实体状态请求。
语法
capl
void DoIP_SendEntityStatusRequest();
void DoIP_SendEntityStatusRequest(char IPaddress[]);
参数
- IPaddress:目标IP地址(非受限广播,可为定向广播地址)。
返回值 ---
可用性
- 版本:9.0
- 适用场景:仿真/测试设置
示例
capl
// 发送实体状态请求并等待响应
Testcase TC_EntityStatus() {
DoIP_SendEntityStatusRequest();
testWaitForTextEvent(cTE_EntityStatusRespInd, 500);
}
7.DoIP_SendPowerModeInformationRequest
函数
以受限广播或指定地址发送电源模式信息请求。
语法
capl
void DoIP_SendPowerModeInformationRequest();
void DoIP_SendPowerModeInformationRequest(char IPaddress[]);
参数
- IPaddress:目标IP地址(非受限广播,可为定向广播地址)。
返回值 ---
可用性
- 版本:8.1 SP4
- 适用场景:仿真/测试设置
示例
capl
// 发送电源模式请求并等待响应
Testcase TC_PowerMode() {
DoIP_SendPowerModeInformationRequest();
testWaitForTextEvent(cTE_PowerModeRespInd, 500);
}
8. DoIP_SendRoutingActivationRequest
函数
向已连接车辆发送路由激活请求(连接建立时自动执行)。
语法
capl
void DoIP_SendRoutingActivationRequest();
参数 ---
返回值 ---
可用性
- 版本:8.1 SP4
- 适用场景:仿真/测试设置
示例 ---
9. DoIP_SetIdentificationRequestEID, DoIP_SetIdentificationRequestVIN
函数
配置测试仪发送的车辆识别请求(VIR)消息,可设置实体ID(EID)或车辆识别号(VIN)。
语法
capl
void DoIP_SetIdentificationRequestEID(byte EID[]);
void DoIP_SetIdentificationRequestVIN(char VIN[]);
参数
- EID:实体ID数组(如MAC地址)。
- VIN:车辆识别号字符串(空字符串=不指定特定车辆)。
返回值 ---
可用性
- 版本:8.1 SP2
- 适用场景:仿真/测试设置
示例
capl
// 设置MAC地址0x20:11:22:33:44:55
BYTE eid[6] = {0x20, 0x11, 0x22, 0x33, 0x44, 0x55};
DoIP_SetIdentificationRequestEID(eid);
// 设置VIN
DoIP_SetIdentificationRequestVIN("VECT0RVEH1CLE1234");
// 不指定车辆(所有车辆响应)
DoIP_SetIdentificationRequestVIN("");
10. DoIP_SetMulticastScopeId
函数
为测试仪发送的IPv6组播请求设置作用域ID(网络适配器索引),需在DoIP_SetLocalIPaddress前调用。
语法
capl
void DoIP_SetMulticastScopeId(dword scopeId);
参数
- scopeId:IPv6组播请求的网络适配器作用域ID。
返回值 ---
可用性
- 版本:12.0 SP2
- 适用场景:仿真/测试设置
示例
capl
// 获取指定IP地址的适配器索引
dword GetTCPIPAdapterScopeId(char ipAddr[]) {
dword adapterCount = ipGetAdapterCount();
for(dword adapterIndex = 1; adapterIndex <= adapterCount; adapterIndex++) {
IP_Address ipAddresses[16];
dword addressCount;
ipGetAdapterAddress(adapterIndex, ipAddresses, addressCount);
for(dword addressIndex = 0; addressIndex < addressCount; addressIndex++) {
char ipAddressString[256];
ipAddresses[addressIndex].PrintAddressToString(ipAddressString);
if(strncmp(ipAddr, ipAddressString, strlen(ipAddr)) == 0)
return adapterIndex;
}
}
return 0;
}
// 配置组播作用域ID
dword scopeId = GetTCPIPAdapterScopeId(testerIPaddr);
DoIP_SetMulticastScopeId(scopeId);
11.DoIP_SetRoutingActivationOEMSpecific
CAPL 函数 >> 诊断 >> DoIP_SetRoutingActivationOEMSpecific
函数功能
设置路由激活请求消息(RAR)中的 OEM 专用参数。
语法
c
void DoIP_SetRoutingActivationOEMSpecific(long sendOEMSpecific, dword OEMspecific);
参数
sendOEMSpecific:- 0:不发送 OEM 专用字段(默认);
- 1:发送 OEM 专用字段。
OEMspecific:激活时发送的 OEM 专用字段值。
返回值
无
可用性
- 版本:8.1 SP4 及以上
- 适用场景:仿真/测试设置
示例
c
// 在 RAR 消息中发送常量值
DoIP_SetRoutingActivationOEMSpecific(1, 0x31425927);
注:也可通过 DoIP.INI 文件配置此消息。