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

相关推荐
extrao1 天前
🚀 Kea DHCP4 自动分配系统完整搭建
网络协议
不做菜鸟的网工3 天前
BGP特性
网络协议
明月_清风5 天前
开发者网络概念全扫盲:一篇搞定
后端·网络协议
刘马想放假5 天前
Modbus 全栈技术解析:TCP、RTU、ASCII、RTU over TCP
数据结构·网络协议
王二端茶倒水7 天前
一套可落地的无线运营方案,不能只管 AP,还要管用户、计费和运维
网络协议
162723816087 天前
EtherCAT 分布式时钟(DC)原理与配置实战:把多轴真正"对齐到同一时刻"
网络协议
王二端茶倒水7 天前
宽带无线项目,怎么从一次性交付变成长期运营收入?
网络协议
用户2530171996278 天前
第6篇:从技术到产品 — Ghost Proxifier 的设计哲学
网络协议
用户2530171996278 天前
第3篇:注入的艺术 — Ghost Proxifier 核心架构拆解
网络协议