CAPL学习-SOME/IP交互层-符号数据库访问类函数

Symbolic Database Access

SomeIpEstablishTCPConnection

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

函数

建立一个或多个数据库中定义的 TCP 连接。

语法
capl 复制代码
dword SomeIpEstablishTCPConnection(); // 形式 1  
dword SomeIpEstablishTCPConnection(dword aepHandle); // 形式 2  
dword SomeIpEstablishTCPConnection(dword aepHandle, dword remoteIPv4Address); // 形式 3  
dword SomeIpEstablishTCPConnection(dword aepHandle, dword remoteIPv4Address, dword remotePort); // 形式 4  
dword SomeIpEstablishTCPConnection(dword aepHandle, byte remoteIPv6Address[]); // 形式 5  
long SomeIpEstablishTCPConnection(dword aepHandle, byte remoteIPv6Address[], dword remotePort); // 形式 6  
long SomeIpEstablishTCPConnection(dword aepHandle, IP_Endpoint remoteIPEndpoint); // 形式 7  
功能说明
  • 形式 1:建立本节点的所有 TCP 连接(作为 TCP 客户端)。
  • 形式 2:建立 TCP 客户端的所有 TCP 连接。
  • 形式 3/5:建立 TCP 客户端到特定 TCP 服务器的所有 TCP 连接。
  • 形式 4/6:建立 TCP 客户端到特定 TCP 服务器的 TCP 连接。
  • TCP 连接可通过 SomeIpCloseEstablishedTCPConnection 函数关闭。
参数
  • aepHandle:发起连接的源应用端点,必须在数据库中定义。
  • remotePort:用于发送和接收消息的端口。
  • remoteIPv4Address :需建立连接的 IPv4 地址,可通过 IPGetAddressAsNumber 转换。
  • remoteIPv6Address :需建立连接的 IPv6 地址,可通过 IpGetAddressAsArray 转换。
  • remoteIPEndpointIP_Endpoint 类型对象,包含远程端点的地址和端口。
返回值
  • 0:函数执行成功。
  • >0:错误代码。
可用性
版本 支持形式 限制范围 测量设置 仿真/测试设置
11.0 SP3 1-6 以太网 ---
12.0 SP2 7 以太网 ---
示例
capl 复制代码
variables  
{  
  dword aep; // 应用端点句柄  
}  

on start  
{  
  // 句柄必须关联数据库中有效的应用端点  
  aep = SomeIpOpenLocalApplicationEndpoint(IP_Endpoint(TCP:192.168.1.1:40000));  
}  

on key 'o'  
{  
  // 连接到特定端点  
  if (SomeIpEstablishTCPConnection(aep, IP_Endpoint(TCP:192.168.1.2:50000)) != 0)  
  {  
    write("连接未建立");  
  }  
}  

on key 'c'  
{  
  // 关闭节点上下文中的所有连接  
  if (SomeIpCloseEstablishedTCPConnection() == 0)  
  {  
    write("连接已关闭");  
  }  
}  

SomeIpGetConsumedObjectHandle

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

函数

搜索已单独创建的被消费对象(consumed object)。

语法
capl 复制代码
DWORD SomeIpGetConsumedObjectHandle(char objectSymbolicQualifier[]);  
参数
  • objectSymbolicQualifier:唯一标识 FIBEX 4.1 数据库对象的符号限定符。语法参见《SOME/IP 符号数据库访问》。
返回值
  • 0 :发生错误,可通过 SomeIpGetLastError 函数获取错误详情。
  • >0:目标对象的句柄。
可用性
版本 限制范围 测量设置 仿真/测试设置
8.2 SP2 以太网 ---
示例
capl 复制代码
variables  
{  
  DWORD gCev; // 被消费事件句柄  
  DWORD gCfNotifier; // 被消费字段通知句柄  
  DWORD gCfGetter; // 被消费字段获取器句柄  
  DWORD gCfSetter; // 被消费字段设置器句柄  
  msTimer gTimer;  
}  

on start  
{  
  // 以下代码需 FIBEX 4.1 数据库支持:  
  // - 节点通过不可靠端点(UDP 套接字)消费以下对象:  
  //   - 服务实例 "Service_Test"  
  //   - 事件组 "All"(属于 "Service_Test")  
  //   - 事件 "Event_Test"(属于 "All")  
  //   - 字段 "Field_Test"(属于 "All",包含通知器、获取器和设置器)  
  //   - 提供事件组 "All" 的节点  

  // 获取被消费事件 "Event_Test" 的句柄  
  gCev = SomeIpGetConsumedObjectHandle("Service_Test::Event_Test");  
  // 注册事件通知的 CAPL 回调  
  SomeIpRegisterCallback(gCev, "OnSomeIpEventReceived");  

  // 获取被消费字段通知 "Field_Test" 的句柄  
  gCfNotifier = SomeIpGetConsumedObjectHandle("Field_Test");  
  // 注册字段通知的 CAPL 回调  
  SomeIpRegisterCallback(gCfNotifier, "OnSomeIpFieldNotificationReceived");  

  // 获取被消费字段获取器 "Field_Test" 的句柄  
  gCfGetter = SomeIpGetConsumedObjectHandle("get_Field_Test");  
  // 注册获取器响应的 CAPL 回调  
  SomeIpRegisterCallback(gCfGetter, "OnSomeIpFieldGetterResponse");  

  // 获取被消费字段设置器 "Field_Test" 的句柄  
  gCfSetter = SomeIpGetConsumedObjectHandle("set_Field_Test");  
  // 注册设置器响应的 CAPL 回调  
  SomeIpRegisterCallback(gCfSetter, "OnSomeIpFieldSetterResponse");  

  // 启动定时器  
  setTimer(gTimer, 3000);  
}  

on timer gTimer  
{  
  // 调用字段设置器和获取器  
  SomeIpCallMethod(gCfGetter);  
  SomeIpCallMethod(gCfSetter);  
  // 重启定时器  
  setTimer(gTimer, 3000);  
}  

void OnSomeIpEventReceived(dword cevHandle, dword messageHandle)  
{  
  write("事件通知已接收");  
  // 此处添加自定义逻辑  
}  

void OnSomeIpFieldNotificationReceived(dword cfHandle, dword messageHandle)  
{  
  write("字段通知已接收");  
  // 此处添加自定义逻辑  
}  

void OnSomeIpFieldGetterResponse(dword methodCallHandle, dword messageResponseHandle)  
{  
  write("字段获取器响应已接收");  
  // 此处添加自定义逻辑  
}  

void OnSomeIpFieldSetterResponse(dword methodCallHandle, dword messageResponseHandle)  
{  
  write("字段设置器响应已接收");  
  // 此处添加自定义逻辑  
}  

SomeIpRegisterCallback

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

函数

为已单独创建的对象注册/注销 CAPL 回调函数。

语法
capl 复制代码
LONG SomeIpRegisterCallback(dword objHandle, char callbackName[]);  
功能说明

为 SOME/IP IL 对象注册新的 CAPL 回调函数。若已注册回调,会先注销原回调,再替换为新回调。

参数
  • objHandle :已存在的 SOME/IP IL 对象句柄,支持以下对象及对应回调:
    • 提供的事件(<OnSomeIpPrepareEvent>
    • 提供的方法(<OnSomeIpMethodRequest>
    • 被消费的事件(<OnSomeIpEventReceived>
    • 被消费的字段(<OnSomeIpFieldNotification>
    • 被消费的方法(<OnSomeIpMethodResponse>
  • callbackName:待注册的新回调函数名。
返回值
  • 0:函数执行成功。
  • >0:错误代码。
可用性
版本 限制范围 测量设置 仿真/测试设置
8.2 SP2 以太网 ---
示例

相关推荐
暗然而日章2 小时前
C++基础:Stanford CS106L学习笔记 13 特殊成员函数(SMFs)
c++·笔记·学习
小智RE0-走在路上2 小时前
Python学习笔记(6)--列表,元组,字符串,序列切片
笔记·python·学习
d111111111d3 小时前
什么是内存对齐?在STM32上面如何通过编辑器指令来实现内存对齐。
笔记·stm32·单片机·嵌入式硬件·学习·编辑器
小妖6663 小时前
力扣(LeetCode)- 93. 复原 IP 地址(JavaScript)
javascript·tcp/ip·leetcode
蒙奇D索大4 小时前
【数据结构】考研408 | 伪随机探测与双重散列精讲:散列的艺术与均衡之道
数据结构·笔记·学习·考研
舞动青春884 小时前
Ubuntu安装QEMU过程及问题记录
linux·学习·ubuntu
知识分享小能手4 小时前
Ubuntu入门学习教程,从入门到精通,Ubuntu 22.04的基本配置 (3)
linux·学习·ubuntu
黑客思维者4 小时前
机器学习012:监督学习【回归算法】(对比)-- AI预测世界的“瑞士军刀”
人工智能·学习·机器学习·回归·逻辑回归
我想我不够好。4 小时前
实操练习 12.20
学习