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

相关推荐
Vect__16 小时前
基于线程池从零实现TCP计算器网络服务
c++·网络协议·tcp/ip
wenzhangli721 小时前
OoderAgent SDK(0.6.6) UDP通讯与协议测试深度解析
网络·网络协议·udp
小李独爱秋1 天前
计算机网络经典问题透视:蜂窝网络切换如何“扼杀”你的TCP连接?
网络·网络协议·tcp/ip·计算机网络·php·信息与通信
路由侠内网穿透.1 天前
本地部署代码托管解决方案 Gitea 并实现外部访问( Windows 版本)
运维·服务器·网络协议·gitea
北京耐用通信1 天前
耐达讯自动化Profinet转Devicenet网关:精细化工行业的“协议融合利器”
人工智能·物联网·网络协议·自动化·信息与通信
云小逸1 天前
【nmap源码学习】 Nmap 源码深度解析:nmap_main 函数详解与 NSE 脚本引擎原理
网络协议·学习·安全
迎仔1 天前
03-网络协议基础详解:数字世界的交通规则与语言
网络·网络协议
猫老板的豆1 天前
WebSocket 工具类使用指南
网络·websocket·网络协议
我真会写代码1 天前
WebSocket:告别轮询,实现Web实时通信 WebRTC:无需插件,实现浏览器端实时音视频通信
网络·websocket·网络协议·webrtc·实时音视频
智算菩萨1 天前
【网络工程师入门】DNS域名系统的深度解读与实践应用指南
网络·网络协议·系统架构