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 以太网 ---
示例

相关推荐
码农小韩10 小时前
基于Linux的C++学习——动态数组容器vector
linux·c语言·开发语言·数据结构·c++·单片机·学习
嵌入式-老费10 小时前
外壳3D结构设计(学习的方法)
学习
山土成旧客10 小时前
【Python学习打卡-Day40】从“能跑就行”到“工程标准”:PyTorch训练与测试的规范化写法
pytorch·python·学习
Yyuanyuxin10 小时前
保姆级学习开发安卓手机软件(一)--安装软件及配置
学习
●VON11 小时前
跨模态暗流:多模态安全攻防全景解析
人工智能·学习·安全·von
星火开发设计11 小时前
C++ map 全面解析与实战指南
java·数据结构·c++·学习·算法·map·知识
栗子叶11 小时前
IP协议 地址划分&MAC地址作用&ip addr命令
网络·tcp/ip·macos
副露のmagic12 小时前
更弱智的算法学习 day25
python·学习·算法
强子感冒了12 小时前
Java 学习笔记:File类核心API详解与使用指南
java·笔记·学习
别了,李亚普诺夫12 小时前
USB拓展坞-PCB设计学习笔记
笔记·学习