CAPL学习-DoIP测试仪配置函数

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 文件配置此消息。

相关推荐
鲨鱼辣钊13 分钟前
FastAPI进阶_Day21_WebSocket实时通讯实战
websocket·网络协议·fastapi
2501_915106323 小时前
安卓抓包软件2026,免证书抓包 应用层抓包 代理抓包全解析
网络协议·计算机网络·网络安全·ios·adb·https·udp
Neighbor_OldY4 小时前
云上VPC流日志与网络流量安全分析实战:异常流量、横向移动、C2外连与恶意IP的发现与处置
网络协议·tcp/ip·安全
上海云盾-小余5 小时前
分层防护思路:WAF 应用防护与 TCP 底层防护如何协同
网络·网络协议·tcp/ip
IPdodo_7 小时前
静态 IP 访问异常排查:403/429 归因与迁移验收
服务器·网络·数据库·python·网络协议·php·性能测试
haerapi8 小时前
流式对话接口怎么选:SSE 与 WebSocket 的原理、实现和工程边界
网络·websocket·网络协议
啊阿狸不会拉杆9 小时前
《计算机网络-自顶向下方法》3.3 无连接运输:UDP 读书笔记
网络协议·计算机网络·udp
可爱系程序猿10 小时前
添加网络打印机提示 0x000006ba:从 RPC 服务、Print Spooler 到主机发现排查
网络·网络协议·rpc
Sagittarius_A*11 小时前
协议与应用基础(三):HTTPS、证书链与中间人攻击
网络协议·http·信息安全·https·密码学·中间人攻击·证书链
tang7778913 小时前
爬虫代理池搭建全流程:从IP筛选、去重到自动切换(附完整落地代码)
爬虫·网络协议·tcp/ip·代理ip池·爬虫代理池