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

相关推荐
悠悠121386 小时前
NLB WebSocket 连接问题排查与解决方案
websocket·网络协议·php
Macbethad8 小时前
基于WPF的Ethernet/IP主站程序技术方案
网络协议·tcp/ip·wpf
ganshenml8 小时前
【Web】证书(SSL/TLS)与域名之间的关系:完整、通俗、可落地的讲解
前端·网络协议·ssl
xu_yule9 小时前
网络和Linux网络-5(应用层)HTTP协议(方法+报头+状态码)
linux·网络·网络协议·http
西幻凌云10 小时前
了解计算机网络的“物理根基”——物理层与数据链路层
网络·网络协议·计算机网络·数据链路层·物理层
板鸭〈小号〉13 小时前
应用层协议 HTTP
网络·网络协议·http
yuanjj8814 小时前
域格移芯平台模块FTP下载应用
单片机·物联网·网络协议
小李独爱秋15 小时前
Cisco Packet Tracer仿真实验 12:运输层端口
网络·网络协议·计算机网络·智能路由器·仿真实验
xxp432115 小时前
Qt 网络编程 UDP通信
网络·网络协议·udp