CAPL学习-SOME/IP交互层-值处理类函数1

Value Access

SomeIpGetDestinationAddress

函数

获取SOME/IP消息的目的IP地址。

语法

capl 复制代码
dword SomeIpGetDestinationAddress(dword messageHandle);  // 形式1(IPv4)
long SomeIpGetDestinationAddress(dword messageHandle, byte ipv6Address[]);  // 形式2(IPv6)

参数

  • messageHandle:接收的SOME/IP消息句柄(仅在OnSomeIpMessage回调函数中调用)。
  • ipv6Address:存储IPv6地址的字节数组(形式2专用)。

返回值

  • 形式1:IPv4目的地址(网络字节序);错误时返回0,可通过SomeIpGetLastError获取错误码。
  • 形式2:0表示成功,>0表示错误码(IPv6地址写入ipv6Address数组)。

说明

  • 可使用IpGetAddressAsString函数将数值型IP地址转换为字符串格式。

可用性

  • 形式1:CANoe 8.1及以上,支持以太网仿真/测试环境。
  • 形式2:CANoe 10.0 SP4及以上,支持以太网仿真/测试环境。

示例

capl 复制代码
void OnSomeIpMessage(DWORD messageHandle) {
  DWORD dstAddress = 0;
  LONG errorCode = 0;
  LONG errorOccured = 0;
  char buffer[100];
  
  // 获取IPv4目的地址
  if ((dstAddress = SomeIpGetDestinationAddress(messageHandle)) == 0) {
    if ((errorCode = SomeIpGetLastError()) != 0) {
      write("SOME/IP IL错误:错误码:%d", errorCode);
      errorOccured = 1;
    }
  }
  
  if (errorOccured == 0) {
    IpGetAddressAsString(dstAddress, buffer, elcount(buffer));
    write("接收到SOME/IP消息,目的地址:%s", buffer);
  }
}

SomeIpGetDestinationPort

函数

获取SOME/IP消息的目的端口号(UDP/TCP)。

语法

capl 复制代码
dword SomeIpGetDestinationPort(dword messageHandle);

参数

  • messageHandle:接收的SOME/IP消息句柄(仅在OnSomeIpMessage回调函数中调用)。

返回值

  • 目的端口号;错误时返回0,可通过SomeIpGetLastError获取错误码。

可用性

  • CANoe 8.1及以上,支持以太网仿真/测试环境。

示例

capl 复制代码
void OnSomeIpMessage(DWORD messageHandle) {
  DWORD dstPort = 0;
  LONG errorCode = 0;
  LONG errorOccured = 0;
  
  if ((dstPort = SomeIpGetDestinationPort(messageHandle)) == 0) {
    if ((errorCode = SomeIpGetLastError()) != 0) {
      write("SOME/IP IL错误:错误码:%d", errorCode);
      errorOccured = 1;
    }
  }
  
  if (errorOccured == 0) {
    write("接收到SOME/IP消息,目的端口:%d", dstPort);
  }
}

SomeIpGetInterfaceVersion

函数

获取SOME/IP消息头中的接口版本号。

语法

capl 复制代码
dword SomeIpGetInterfaceVersion(dword messageHandle);

参数

  • messageHandle:SOME/IP消息句柄。

返回值

  • 接口版本号;错误时返回0,可通过SomeIpGetLastError获取错误码。

可用性

  • CANoe 8.1及以上,支持以太网仿真/测试环境。

示例

capl 复制代码
void OnSomeIpMessage(DWORD messageHandle) {
  DWORD interfaceVers = 0;
  LONG errorCode = 0;
  LONG errorOccured = 0;
  
  if ((interfaceVers = SomeIpGetInterfaceVersion(messageHandle)) == 0) {
    if ((errorCode = SomeIpGetLastError()) != 0) {
      write("SOME/IP IL错误:错误码:%d", errorCode);
      errorOccured = 1;
    }
  }
  
  if (errorOccured == 0) {
    write("接收到SOME/IP消息,接口版本:0x%02x(%d)", interfaceVers, interfaceVers);
  }
}

SomeIpGetLength

函数

获取SOME/IP消息头中的长度字段(字节数)。

语法

capl 复制代码
dword SomeIpGetLength(dword messageHandle);

参数

  • messageHandle:SOME/IP消息句柄。

返回值

  • 消息长度(不含消息ID和长度字段本身);错误时返回0,可通过SomeIpGetLastError获取错误码。

可用性

  • CANoe 8.1及以上,支持以太网仿真/测试环境。

SomeIpGetMessageId

函数

获取SOME/IP消息头中的消息ID。

语法

capl 复制代码
dword SomeIpGetMessageId(dword messageHandle);

参数

  • messageHandle:SOME/IP消息句柄。

返回值

  • SOME/IP消息ID;错误时返回0,可通过SomeIpGetLastError获取错误码。

可用性

  • CANoe 8.1及以上,支持以太网仿真/测试环境。

示例

capl 复制代码
void OnSomeIpMessage(DWORD messageHandle) {
  DWORD msgId = 0;
  LONG errorCode = 0;
  LONG errorOccured = 0;
  
  if ((msgId = SomeIpGetMessageId(messageHandle)) == 0) {
    if ((errorCode = SomeIpGetLastError()) != 0) {
      write("SOME/IP IL错误:错误码:%d", errorCode);
      errorOccured = 1;
    }
  }
  
  if (errorOccured == 0) {
    write("接收到SOME/IP消息,消息ID:0x%08x", msgId);
  }
}

SomeIpGetMessageType

函数

获取SOME/IP消息头中的消息类型。

语法

capl 复制代码
dword SomeIpGetMessageType(dword messageHandle);

参数

  • messageHandle:SOME/IP消息句柄。

返回值

  • 消息类型(十六进制):
    • 0x00:REQUEST(请求)
    • 0x01:REQUEST_NO_RETURN(无返回请求)
    • 0x02:NOTIFICATION(通知)
    • 0x40:REQUEST ACK(请求确认)
    • 0x41:REQUEST_NO_RETURN ACK(无返回请求确认)
    • 0x42:NOTIFICATION ACK(通知确认)
    • 0x80:RESPONSE(响应)
    • 0x81:ERROR(错误)
    • 0xC0:RESPONSE ACK(响应确认)
    • 0xC1:ERROR ACK(错误确认)
  • 错误时返回0,可通过SomeIpGetLastError获取错误码。

可用性

  • CANoe 8.1及以上,支持以太网仿真/测试环境。

示例

capl 复制代码
void OnSomeIpMessage(DWORD messageHandle) {
  DWORD msgType = 0;
  LONG errorCode = 0;
  LONG errorOccured = 0;
  
  if ((msgType = SomeIpGetMessageType(messageHandle)) == 0) {
    if ((errorCode = SomeIpGetLastError()) != 0) {
      write("SOME/IP IL错误:错误码:%d", errorCode);
      errorOccured = 1;
    }
  }
  
  if (errorOccured == 0) {
    write("接收到SOME/IP消息,消息类型:0x%02x", msgType);
  }
}

SomeIpGetProtocol

函数

获取SOME/IP消息使用的传输协议(TCP/UDP)。

语法

capl 复制代码
dword SomeIpGetProtocol(dword messageHandle);

参数

  • messageHandle:接收的SOME/IP消息句柄(仅在OnSomeIpMessage回调函数中调用)。

返回值

  • 0:错误(通过SomeIpGetLastError获取错误码)
  • 6:TCP协议
  • 17:UDP协议

可用性

  • CANoe 8.1及以上,支持以太网仿真/测试环境。

示例

capl 复制代码
void OnSomeIpMessage(DWORD messageHandle) {
  DWORD protocol = 0;
  LONG errorCode = 0;
  LONG errorOccured = 0;
  
  if ((protocol = SomeIpGetProtocol(messageHandle)) == 0) {
    if ((errorCode = SomeIpGetLastError()) != 0) {
      write("SOME/IP IL错误:错误码:%d", errorCode);
      errorOccured = 1;
    }
  }
  
  if (errorOccured == 0) {
    write("接收到SOME/IP消息,协议类型:0x%x(%d)", protocol, protocol);
  }
}

SomeIpGetProtocolVersion

函数

获取SOME/IP消息头中的协议版本号。

语法

capl 复制代码
dword SomeIpGetProtocolVersion(dword messageHandle);

参数

  • messageHandle:SOME/IP消息句柄。

返回值

  • 协议版本号;错误时返回0,可通过SomeIpGetLastError获取错误码。

可用性

  • CANoe 8.1及以上,支持以太网仿真/测试环境。

示例

capl 复制代码
void OnSomeIpMessage(DWORD messageHandle) {
  DWORD protVers = 0;
  LONG errorCode = 0;
  LONG errorOccured = 0;
  
  if ((protVers = SomeIpGetProtocolVersion(messageHandle)) == 0) {
    if ((errorCode = SomeIpGetLastError()) != 0) {
      write("SOME/IP IL错误:错误码:%d", errorCode);
      errorOccured = 1;
    }
  }
  
  if (errorOccured == 0) {
    write("接收到SOME/IP消息,协议版本:0x%02x(%d)", protVers, protVers);
  }
}

SomeIpGetRequestId

CAPL 函数 >> 以太网 >> SOME/IP IL >> SomeIpGetRequestId

函数

语法
dword SomeIpGetRequestId ( dword messageHandle );

功能

该函数返回 SOME/IP 消息头中的请求 ID(Request ID)。

参数

  • messageHandle:SOME/IP 消息的句柄(例如,参见 OnSomeIpMessage)。

返回值

  • 请求 ID。
  • 若发生错误,函数返回值为 0。可通过 SomeIpGetLastError 函数检查该值是否有效或是否发生错误。

可用性

版本 适用范围 测量设置 仿真/测试设置
8.1 以太网 ---

示例

capl 复制代码
void OnSomeIpMessage( DWORD messageHandle )
{
  DWORD requestId = 0;
  LONG errorCode = 0;
  LONG errorOccured = 0;
  
  // 从 SOME/IP 消息中获取数据
  if((requestId = SomeIpGetRequestId(messageHandle)) == 0)
  {
    // 检查上一个函数是否执行正确
    if((errorCode = SomeIpGetLastError()) != 0)
    {
      write("SOME/IP IL 错误发生:错误代码:%d", errorCode);
      errorOccured = 1;
    } // if
  } // if
  
  if(errorOccured == 0)
  {
    write("接收到请求 ID 为 0x%08x 的 SOME/IP 消息", requestId);
  } // if
}

SomeIpGetReturnCode

CAPL 函数 >> 以太网 >> SOME/IP IL >> SomeIpGetReturnCode

函数

语法
dword SomeIpGetReturnCode ( dword messageHandle );

功能

该函数返回 SOME/IP 消息头中的返回码(Return Code)。

参数

  • messageHandle:SOME/IP 消息的句柄(例如,参见 OnSomeIpMessage)。

返回值

  • 返回码:
    • 0x00:E_OK(成功)
    • 0x01:E_NOT_OK(失败)
    • 0x02:E_UNKNOWN_SERVICE(未知服务)
    • 0x03:E_UNKNOWN_METHOD(未知方法)
    • 0x04:E_NOT_READY(未就绪)
    • 0x05:E_NOT_REACHABLE(不可达)
    • 0x06:E_TIMEOUT(超时)
    • 0x07:E_WRONG_PROTOCOL_VERSION(协议版本错误)
    • 0x08:E_WRONG_INTERFACE_VERSION(接口版本错误)
    • 0x09:E_MALFORMED_MESSAGE(消息格式错误)
    • 0x09--0x1F:保留(RESERVED)。
  • 若消息类型为请求(REQUEST)、无返回请求(REQUEST_NO_RETURN)或通知(NOTIFICATION),返回码为 N/A 并设为 0x00(E_OK)。
  • 若发生错误,函数返回值为 0。可通过 SomeIpGetLastError 函数检查该值是否有效或是否发生错误。

可用性

版本 适用范围 测量设置 仿真/测试设置
8.1 以太网 ---

示例

capl 复制代码
void OnSomeIpMessage( DWORD messageHandle )
{
  DWORD retCode = 0;
  LONG errorCode = 0;
  LONG errorOccured = 0;
  
  // 从 SOME/IP 消息中获取数据
  if((retCode = SomeIpGetReturnCode(messageHandle)) == 0)
  {
    // 检查上一个函数是否执行正确
    if((errorCode = SomeIpGetLastError()) != 0)
    {
      write("SOME/IP IL 错误发生:错误代码:%d", errorCode);
      errorOccured = 1;
    } // if
  } // if
  
  if(errorOccured == 0)
  {
    write("接收到返回码为 0x%02x 的 SOME/IP 消息", retCode);
  } // if
}

SomeIpGetSourceAddress

CAPL 函数 >> 以太网 >> SOME/IP IL >> SomeIpGetSourceAddress

函数

语法

  • 形式 1:dword SomeIpGetSourceAddress ( dword messageHandle );
  • 形式 2:long SomeIpGetSourceAddress ( dword messageHandle, byte ipv6Address[] );

功能

  • 形式 1:返回 IPv4 发送方地址。
  • 形式 2:将 IPv6 地址写入指定参数。

参数

  • messageHandle:SOME/IP 消息的句柄。 注意 :该函数只能在 OnSomeIpMessage 回调函数中调用。
  • ipv6Address:用于存储 IPv6 地址的参数。

返回值

  • 形式 1:IPv4 发送方地址(网络字节序),以数值形式返回。
    • 若发生错误,返回值为 0。可通过 SomeIpGetLastError 函数检查有效性或错误。
    • 注意 :可使用 IpGetAddressAsString 函数将数值返回值转换为简写形式的字符串。
  • 形式 2:
    • 0:函数执行成功。
    • >0:错误代码。

可用性

版本 适用范围 测量设置 仿真/测试设置
8.1 以太网(形式 1) ---
10.0 SP4 以太网(形式 2) ---

示例

capl 复制代码
void OnSomeIpMessage( DWORD messageHandle )
{
  DWORD srcAddress = 0;
  LONG errorCode = 0;
  LONG errorOccured = 0;
  char buffer[100];
  
  // 从 SOME/IP 消息中获取数据
  if((srcAddress = SomeIpGetSourceAddress(messageHandle)) == 0)
  {
    // 检查上一个函数是否执行正确
    if((errorCode = SomeIpGetLastError()) != 0)
    {
      write("SOME/IP IL 错误发生:错误代码:%d", errorCode);
      errorOccured = 1;
    } // if
  } // if
  
  if(errorOccured == 0)
  {
    IpGetAddressAsString(srcAddress, buffer, elcount(buffer));
    write("接收到来自源地址 %s 的 SOME/IP 消息", buffer);
  } // if
}

SomeIpGetSourcePort

CAPL 函数 >> 以太网 >> SOME/IP IL >> SomeIpGetSourcePort

函数

语法
dword SomeIpGetSourcePort ( dword messageHandle );

功能

该函数返回源端口(UDP/TCP)。

参数

  • messageHandle:接收到的 SOME/IP 消息的句柄。 注意 :该函数只能在 OnSomeIpMessage 回调函数中调用。

返回值

  • 源端口。
  • 若发生错误,函数返回值为 0。可通过 SomeIpGetLastError 函数检查该值是否有效或是否发生错误。

可用性

版本 适用范围 测量设置 仿真/测试设置
8.1 以太网 ---

示例

capl 复制代码
void OnSomeIpMessage( DWORD messageHandle )
{
  DWORD srcPort = 0;
  LONG errorCode = 0;
  LONG errorOccured = 0;
  
  // 从 SOME/IP 消息中获取数据
  if((srcPort = SomeIpGetSourcePort(messageHandle)) == 0)
  {
    // 检查上一个函数是否执行正确
    if((errorCode = SomeIpGetLastError()) != 0)
    {
      write("SOME/IP IL 错误发生:错误代码:%d", errorCode);
      errorOccured = 1;
    } // if
  } // if
  
  if(errorOccured == 0)
  {
    write("接收到来自源端口 %d 的 SOME/IP 消息", srcPort);
  } // if
}

SomeIpGetValueDWord

CAPL 函数 >> 以太网 >> SOME/IP IL >> SomeIpGetValueDWord

函数

语法
dword SomeIpGetValueDWord( dword objectHandle, char valuePath[] );

功能

该函数用于从 objectHandle 参数指定的对象中读取原始值,通过符号访问路径访问该值。

注意 :指定访问路径时必须遵循相应语法。访问路径由待读取值的数据库描述生成(另见《基于数据库的访问路径语法》)。

该函数也可读取服务发现(Service Discovery)消息的内容,此时通过预定义访问路径访问值(另见《预定义 SD 访问路径语法》)。

参数

  • objectHandle:SOME/IP IL 对象的句柄,该对象必须在 FIBEX 数据库中完整描述。支持以下对象:
    • 消息(Messages)
    • 字段(Fields)
    • 方法调用:通过 SomeIpCreateMethodCall 创建的方法调用句柄。
  • valuePath:待读取值的访问路径。

返回值

  • 原始值。
  • 若发生错误,函数返回值为 0。可通过 SomeIpGetLastError 函数检查有效性或错误。

可用性

版本 适用范围 测量设置 仿真/测试设置
8.1 以太网 ---

示例

capl 复制代码
variables
{
  DWORD gPm; // 提供的方法句柄
}

void Initialize()
{
  DWORD aep; // 应用端点句柄
  DWORD psi; // 提供的服务实例句柄
  
  // 打开应用端点
  aep = SomeIpOpenLocalApplicationEndpoint(17, 50002);
  
  // 创建服务实例
  psi = SomeIpCreateProvidedServiceInstance(aep, 11, 1);
  
  // 创建方法
  gPm = SomeIpAddMethod(psi, 31, "OnMethodRequest");
}

void OnMethodRequest(dword methodHandle, dword messageHandle, dword messageResponseHandle)
{
  WORD val1; // 输入参数 1 的值
  WORD val2; // 输入参数 2 的值
  DWORD res; // 返回参数的值
  
  // 从请求中获取值
  val1 = (WORD)SomeIpGetValueDWord(messageHandle, "Member_value1");
  val2 = (WORD)SomeIpGetValueDWord(messageHandle, "Member_value2");
  
  // 计算结果
  res = val1 + val2;
  
  // 设置响应值
  SomeIpSetValueDWord(messageResponseHandle, "Result", (val1 + val2));
}

SomeIpGetValueFloat

CAPL 函数 >> 以太网 >> SOME/IP IL >> SomeIpGetValueFloat

函数

语法
float SomeIpGetValueFloat( dword objectHandle, char valuePath[] );

功能

该函数用于从 objectHandle 参数指定的对象中读取原始浮点值,通过符号访问路径访问该值。

注意 :指定访问路径时必须遵循相应语法。访问路径由待读取值的数据库描述生成(另见《基于数据库的访问路径语法》)。

该函数也可读取服务发现消息的内容,此时通过预定义访问路径访问值(另见《预定义 SD 访问路径语法》)。

参数

  • objectHandle:SOME/IP IL 对象的句柄(需在 FIBEX 数据库中完整描述),支持消息、字段及通过 SomeIpCreateMethodCall 创建的方法调用。
  • valuePath:待读取值的访问路径。

返回值

  • 原始浮点值。
  • 若发生错误,返回值为 0。可通过 SomeIpGetLastError 函数检查有效性或错误。

可用性

版本 适用范围 测量设置 仿真/测试设置
8.1 以太网 ---

示例

参见 SomeIpGetValueDWord

SomeIpGetValueInt64

CAPL 函数 >> 以太网 >> SOME/IP IL >> SomeIpGetValueInt64

函数

语法
int64 SomeIpGetValueInt64( dword objectHandle, char valuePath[] );

功能

该函数用于从 objectHandle 参数指定的对象中读取原始 64 位整数值,通过符号访问路径访问该值。

注意 :访问路径语法及支持对象同 SomeIpGetValueDWord

参数

  • objectHandle:SOME/IP IL 对象句柄(需在 FIBEX 数据库中描述)。
  • valuePath:待读取值的访问路径。

返回值

  • 原始 64 位整数值。
  • 若发生错误,返回值为 0。可通过 SomeIpGetLastError 检查错误。

可用性

版本 适用范围 测量设置 仿真/测试设置
8.1 以太网 ---

示例

参见 SomeIpGetValueDWord

SomeIpGetValueLong

CAPL 函数 >> 以太网 >> SOME/IP IL >> SomeIpGetValueLong

函数

语法
long SomeIpGetValueLong( dword objectHandle, char valuePath[] );

功能

该函数用于从 objectHandle 参数指定的对象中读取原始长整数值,通过符号访问路径访问该值。

注意 :访问路径语法及支持对象同 SomeIpGetValueDWord

参数

  • objectHandle:SOME/IP IL 对象句柄(需在 FIBEX 数据库中描述)。
  • valuePath:待读取值的访问路径。

返回值

  • 原始长整数值。
  • 若发生错误,返回值为 0。可通过 SomeIpGetLastError 检查错误。

可用性

版本 适用范围 测量设置 仿真/测试设置
8.1 以太网 ---

示例

参见 SomeIpGetValueDWord

SomeIpGetValuePhys

函数
语法
float SomeIpGetValuePhys( dword objectHandle, char valuePath[] );

功能

该函数用于从 objectHandle 参数指定的对象中读取物理值。数据类型和转换公式等必要信息必须存储在 FIBEX 数据库中。

注意

  • 若数据库中未存储转换公式,将隐式应用恒等转换(系数为 1,偏移量为 0)。
  • 对于大数值,实数转换为整数可能导致偏差。

参数

  • objectHandle:SOME/IP IL 对象句柄,支持消息、字段、方法调用(通过 SomeIpCreateMethodCall 创建)。
  • valuePath:待读取值的路径,复杂路径需遵循数据库访问路径语法。

返回值

物理值;若出错则返回 0,可通过 SomeIpGetLastError 检查错误。

可用性

自版本 8.2 起支持,仅限 Ethernet 仿真/测试环境。

示例

假设 FIBEX 数据库中包含方法 ID 31 的方法,含两个输入参数 Member_value1Member_value2 和返回参数 Result,前两者在数据库中设置了系数和偏移量。

capl 复制代码
variables  
{  
  DWORD gPm; // 提供的方法句柄  
}  

void Initialize()  
{  
  DWORD aep; // 应用端点句柄  
  DWORD psi; // 提供的服务实例句柄  

  // 打开应用端点  
  aep = SomeIpOpenLocalApplicationEndpoint(17, 50002);  
  // 创建服务实例  
  psi = SomeIpCreateProvidedServiceInstance(aep, 11, 1);  
  // 创建方法  
  gPm = SomeIpAddMethod(psi, 31, "OnMethodRequest");  
}  

void OnMethodRequest(dword methodHandle, dword messageHandle, dword messageResponseHandle)  
{  
  WORD val1; // 输入参数 1 的值  
  WORD val2; // 输入参数 2 的值  
  DWORD res; // 返回参数的值  

  // 从请求中获取值  
  val1 = (WORD)SomeIpGetValuePhys(messageHandle, "Member_value1");  
  val2 = (WORD)SomeIpGetValuePhys(messageHandle, "Member_value2");  

  // 计算结果  
  res = val1 + val2;  

  // 设置响应值  
  SomeIpSetValueDWord(messageResponseHandle, "Result", res);  
}  

SomeIpGetValueQWord

函数
语法
qword SomeIpGetValueQWord( dword objectHandle, char valuePath[] );

功能

通过符号访问路径从 objectHandle 指定的对象中读取原始值。

注意

  • 访问路径需遵循数据库描述的语法(见数据库访问路径语法)。
  • 支持读取服务发现(SD)消息内容,需使用预定义 SD 访问路径。

参数

  • objectHandle:SOME/IP IL 对象句柄(需在 FIBEX 数据库中完整描述),支持消息、字段、方法调用。
  • valuePath:待读取值的访问路径。

返回值

原始值;若出错则返回 0,可通过 SomeIpGetLastError 检查错误。

可用性

自版本 8.1 起支持,仅限 Ethernet 仿真/测试环境。

示例 :参见 SomeIpGetValueDWord

版本 :14 SP2

© Vector Informatik GmbH

SomeIpGetValueString

函数
语法
dword SomeIpGetValueString( dword objectHandle, char valuePath[], dword bufferLength, char buffer[] );

功能

objectHandle 指定的对象中读取字符串;对于枚举类型,返回符号值。

注意

  • 目前仅支持基本类型 A_ASCIISTRING
  • 访问路径需遵循数据库描述语法,支持通过预定义 SD 路径读取服务发现消息内容。

参数

  • objectHandle:SOME/IP IL 对象句柄(需在 FIBEX 数据库中完整描述),支持消息、字段、方法调用。
  • valuePath:待读取值的路径。
  • bufferLength:缓冲区字节长度;若缓冲区过小,仅复制能容纳的字符(含空终止符)。
  • buffer:输出参数,存放空终止字符串。

返回值

复制的字节数;若出错则返回 0,可通过 SomeIpGetLastError 查询错误码。

可用性

自版本 8.1 起支持,仅限 Ethernet 仿真/测试环境。

示例

capl 复制代码
variables  
{  
  DWORD gPm; // 提供的方法句柄  
}  

void Initialize()  
{  
  DWORD aep; // 应用端点句柄  
  DWORD psi; // 提供的服务实例句柄  

  // 打开应用端点  
  aep = SomeIpOpenLocalApplicationEndpoint(17, 50002);  
  // 创建服务实例  
  psi = SomeIpCreateProvidedServiceInstance(aep, 11, 1);  
  // 创建方法  
  gPm = SomeIpAddMethod(psi, 31, "OnMethodRequest");  
}  

void OnMethodRequest(dword methodHandle, dword messageHandle, dword messageResponseHandle)  
{  
  CHAR Member_value1[256]; // 输入参数 1 的值  
  WORD val2; // 输入参数 2 的值  

  // 从请求中获取字符串值  
  SomeIpGetValueString(messageHandle, "Member_value1", elcount(Member_value1), Member_value1);  
  val2 = (WORD)SomeIpGetValueDWord(messageHandle, "Member_value2");  
  // 业务逻辑处理  
}  
相关推荐
车载测试工程师7 小时前
CAPL学习-SOME/IP交互层-值处理类函数2
学习·tcp/ip·以太网·capl·canoe
云和数据.ChenGuang7 小时前
F5 Big-IP by SNMP.硬件负载均衡
网络协议·tcp/ip·负载均衡·数据库运维工程师·运维教程
鼎道开发者联盟8 小时前
鼎道AIGUI元件体系如何让DingOS实现“积木”式交互
人工智能·ui·ai·aigc·交互·gui
巴拉巴拉~~8 小时前
Flutter 通用列表项组件 CommonListItemWidget:全场景布局 + 交互增强
flutter·php·交互
Json____8 小时前
springboot框架对接物联网,配置TCP协议依赖,与设备通信,让TCP变的如此简单
java·spring boot·后端·tcp/ip
专业开发者8 小时前
学习模块:Wi-Fi 测试与认证
学习
Mr.Jessy13 小时前
JavaScript高级:构造函数与原型
开发语言·前端·javascript·学习·ecmascript
似水流年QC16 小时前
深入探索 WebHID:Web 标准下的硬件交互实现
前端·交互·webhid
玄斎17 小时前
MySQL 单表操作通关指南:建库 / 建表 / 插入 / 增删改查
运维·服务器·数据库·学习·程序人生·mysql·oracle