CAPL学习-ETH功能函数-对象类

1 Objects

1. Eth

CAPL 函数 >> 以太网 >> 函数概述 >> Eth

函数

用于获取以太网链路的状态和统计信息。使用 ethResetStatistics 可重置统计值。

语法

Eth <Ethernet Channel Number>;

参数
  • Ethernet Channel Number:通道号(1...32)。
选择器
选择器 类型 访问权限 说明
status long 只读 链路状态:0-链路断开,1-链路连接
bitrate dword 只读 比特率(kBit/sec)
TxBitrate dword 只读 当前发送比特率(kBit/sec)
RxBitrate dword 只读 当前接收比特率(kBit/sec)
TxPacketRate dword 只读 当前发送包速率(pkt/sec)
RxPacketRate dword 只读 当前接收包速率(pkt/sec)
TxPacketCount qword 只读 发送的以太网包数量
RxPacketCount qword 只读 接收的以太网包数量
TxByteCount qword 只读 发送的字节数
RxByteCount qword 只读 接收的字节数
TxErrorCount dword 只读 发送错误包数量
RxErrorCount dword 只读 接收错误包数量
SQI dword 只读 服务质量指示:0-错误发生,1-无余量,2-临界,3-可接受,4-良好,5-优秀,6-不可用
可用性
  • 版本:8.5(基础功能),11.0(统计选择器)
  • 适用场景:以太网测量/仿真测试
示例
capl 复制代码
switch(Eth1.status)
{
  case 0:
    write("Eth1 以太网链路已断开");
    break;
  case 1:
    write("Eth1 以太网链路已连接,速率为 %dMBit/sec", Eth1.bitrate/1000);
}

2. ethernetErrorPacket

CAPL 函数 >> 以太网 >> 函数概述 >> ethernetErrorPacket

函数

用于在 on ethernetErrorPacket 事件处理程序中访问错误包数据。

语法

ethernetErrorPacket <errorPacket var>;

参数
  • errorPacket var:错误包变量名(字符串)。
选择器
选择器 类型 访问权限 说明
time_ns int64 只读 时间戳(纳秒)
dir byte 只读 方向
msgChannel word - 应用通道(如 Eth 1)
hwChannel word 只读 硬件通道(仅 Vector 接口支持,如 VN5640)
hwPort ethernetPort 只读 网络访问端口(仅网络模式)
Length word - 以太网 payload 长度(从 Ethertype 后开始)
FCS word 只读 帧校验和(部分硬件不支持,值为 0)
FrameLen word 只读 帧持续时间(纳秒,部分硬件不支持)
SOF word 只读 帧起始时间戳(纳秒,部分硬件不支持)
Type word/qword - Ethertype 类型
Source qword - 源 MAC 地址(6 字节,网络字节序)
Destination qword - 目的 MAC 地址(6 字节,网络字节序)
ErrorCode byte 只读 错误码:1-无效帧长,2-无效 CRC,4-无效数据,8-冲突检测(半双工)
可用性
  • 版本:8.5(基础功能),后续版本扩展选择器支持
示例
capl 复制代码
on ethernetErrorPacket *
{
  write("在 Eth%d 上收到以太网错误包", this.msgChannel);
  output(this); // 仅在测量模式下的 CAPL 节点中需要
}

3. ethernetPacket

CAPL 函数 >> 以太网 >> 函数概述 >> ethernetPacket

函数

用于创建以太网发送对象,可通过选择器操作包数据。

语法

ethernetPacket <packet var>;

参数
  • packet var:包变量名(字符串)。
选择器
选择器 类型 访问权限 说明
time_ns int64 只读 时间戳(纳秒)
dir byte 只读 方向(Rx/Tx)
msgChannel word - 应用通道(如 Eth 1)
hwChannel/hwPort word/ethernetPort 只读 硬件通道/端口(仅特定硬件支持)
Length word - payload 长度(从 Ethertype 后开始)
Source/Destination qword - 源/目的 MAC 地址(6 字节,网络字节序)
byte(x)/word(x)/... 多种类型 - 数据字段(x 为偏移量,从 Ethertype 后开始)
Type word - Ethertype 类型
. 多种类型 - 协议字段(如 TCP.port,取决于协议解析)
方法
  • 数据操作Clear()GetData()SetData()
  • 协议解析GetDestinationIPAddress()GetVlanId()HasVlan()
  • 错误注入FaultInjectFCS()FaultInjectDisableLengthPadding()
示例
capl 复制代码
ethernetPacket txPacket;
int i;
txPacket.msgChannel = 1;
txPacket.source = EthGetMacAddressAsNumber("20:00:00:00:00:01");
txPacket.destination = EthGetMacAddressAsNumber("FF:FF:FF:FF:FF:FF");
txPacket.Length = 100;
txPacket.type = 0xF123;
for(i = 0; i < txPacket.Length; i++)
{
  txPacket.Byte(i) = i & 0xFF;
}
output(txPacket);

4. IP_Address

CAPL 函数 >> 以太网 >> 函数概述 >> IP_Address

函数

初始化 IPv4/IPv6 地址变量。

语法
  • 形式 1:IP_Address <addr> <var name>;(带具体地址)
  • 形式 2:IP_Address <var name>;(不带地址)
参数
  • addr :IPv4/IPv6 地址(如 192.168.0.1ff::1)。
  • var name:变量名。
选择器
选择器 类型 说明
IPv4Address dword IPv4 地址值(字节序参考 IP 地址规范)
ScopeID dword IPv6 作用域 ID
方法
  • IsIPv4Address()/IsIPv6Address():判断地址类型
  • ParseAddressFromString()/PrintAddressToString():字符串解析/转换
  • IsBroadcast()/IsMulticast():判断广播/组播地址
示例
capl 复制代码
variables
{
  IP_Address 192.168.0.1 ipv4Addr;
  IP_Address ff::1 ipv6Addr;
}

on start
{
  IP_Address addr;
  addr.ParseAddressFromString("192.168.1.1");
  write("IP 地址: %s", addr.PrintAddressToString());
}

5. IP_Endpoint

CAPL 函数 >> 以太网 >> 函数概述 >> IP_Endpoint

函数

初始化 IP 端点(IP 地址+端口)变量。

语法
  • 形式 1:IP_Endpoint <endpoint> <var name>;(带具体端点)
  • 形式 2:IP_Endpoint <var name>;(不带端点)
参数
  • endpoint :IPv4/IPv6 地址+端口(如 TCP:192.168.1.1:4000UDP:[ff::1]:6000)。
  • var name:变量名。
选择器
选择器 类型 说明
PortNumber dword 端口号(主机字节序)
IP_Address IP_Address 关联的 IP 地址对象
方法
  • IsTCP()/IsUDP():判断传输协议
  • ParseEndpointFromString()/PrintEndpointToString():字符串解析/转换
  • SetToTCP()/SetToUDP():设置协议类型
示例
capl 复制代码
variables
{
  IP_Endpoint TCP:192.168.1.1:4000 ipEndpoint1;
  IP_Endpoint UDP:[ff::1]:6000 ipEndpoint4;
}

on start
{
  IP_Endpoint ep;
  ep = IP_Endpoint("192.168.1.2:4001");
  write("端口号: %d", ep.PortNumber);
}

2 基于网络架构特有

ethernetPort::::

函数

初始化一个带有端口限定的 ethernetPort 类型变量。

语法
capl 复制代码
ethernetPort ethernetPort.<NetworkName>.<PortName>;
参数
  • NetworkName

    以太网网络的名称。

  • PortName

    端口的名称。

可用性
版本 适用范围 测量设置 仿真/测试设置
12.0 SP4 Ethernet
示例
capl 复制代码
on start  
{  
  ethernetport clientPort;  
  clientPort = ethernetport::Ethernet1::ChatClient1;  
  // ... 对 clientPort 执行操作  
}  
参见
  • ethSetLinkStatus
  • ethGetLinkStatus
  • on ethernetStatus
相关推荐
卓码软件测评2 小时前
CNAS软件测试机构:【Postman集合从接口组织到自动化测试套件的过程】
网络·测试工具·性能优化·测试用例·压力测试·postman
阿巴~阿巴~3 小时前
HTTP服务器实现请求解析与响应构建:从基础架构到动态交互
服务器·网络·网络协议·http·交互·请求解析·响应构建
qq_296544653 小时前
驱动精灵、驱动人生、NVIDIA专业显卡驱动、360驱动大师、联想乐驱动,电脑驱动修复工具大全
网络·电脑·负载均衡
wadesir3 小时前
Linux网络优化服务配置(从零开始提升服务器网络性能)
linux·服务器·网络
小李独爱秋3 小时前
计算机网络经典问题透视:简述一下TCP拥塞控制算法中的拥塞避免算法
服务器·网络·tcp/ip·计算机网络·php
行走的陀螺仪3 小时前
实时通信底层原理深度剖析:短轮询、长轮询与WebSocket的本质差异
前端·网络·websocket·网络协议
keven-wang4 小时前
网路基础-如何将电脑通过wifi接入的网络通过有线网口共享给其他设备?
网络·wifi转有线·电脑wifi 供有线设备上网
谷粒.6 小时前
Cypress vs Playwright vs Selenium:现代Web自动化测试框架深度评测
java·前端·网络·人工智能·python·selenium·测试工具
斯南12 小时前
wireshark的基本使用,过滤请求,过滤数据,追踪数据
网络·测试工具·wireshark