当前位置: 首页 > news >正文

【ETestDEV5教程26】通信协议管理之动态属性

ETestDEV是一款面向测试系统的测试软件开发环境,主要应用于嵌入式软件测试、快速原型验证、硬件在环测试、工业自动化测试等场景。本教程针对ETestDEV5的使用方法进行详细说明。若有疑问,欢迎留言。

文章目录

  • 1.关键字
  • 2.内置函数
    • 2.1 ByteSize函数
    • 2.2 CheckCode函数
      • 2.2.1 内置校验函数名
      • 2.2.2 CRC算法描述方式
    • 2.3 偏移量函数
      • 2.3.1 绝对偏移量函数ValueOf
      • 2.3.2 相对偏移量函数ValueOffset

1.关键字

关键字是通信协议内代指当前协议、当前协议分组的变量,用于动态设置自动值、动态设置条件表达式、指定内置函数动态参数等场景。

  • this:表示整个协议对象,如下图所示。

  • root:表示整个协议对象,如下图所示。

  • super:在分组协议字段里使用,表示分组协议对象,如下图所示。

2.内置函数

协议内置函数用于协议定义时动态计算或调用内置算法。内置函数包括ByteSize函数、CheckCode函数、偏移量函数。

2.1 ByteSize函数

可以用于计算指定协议字段或协议的长度。接收一个协议字段或协议的引用,返回协议字段或协议的字节长度,ByteSize只能接收整字节,如下图所示。

2.2 CheckCode函数

用于计算校验值;接收3个参数,依次为校验函数、校验开始协议段、校验结尾协议段。后两个参数为可选参数,默认从协议第一个协议段开始,至校验字段的前一个协议段结束。
第一个参数有两种赋值方式:内置校验函数名、CRC算法描述方式,下面依次介绍。

2.2.1 内置校验函数名


举个例子:使用8位校验和,进行说明。
SUM_8,保留溢出的数据,自动验证使用SUM_8。当求出的校验和大小超过1个字节能表示的最大值255时,溢出的数据保留。
如下图所示,8位校验和是280,大于255。由于SUM_8函数可以保留溢出的数据,因此协议字段Check的值是280。

2.2.2 CRC算法描述方式

描述使用数组的方式描述CRC算法,数组前3个值为数字,后两个值为布尔值,依次为[多项式值,CRC初始值,结果异或值,是否反转输入,是否反转输出]。
CRC算法参考循环冗余校验函数,如下表所示:

2.3 偏移量函数

协议打包时分支条件引用后置字段,协议解包时增加偏移量函数。

2.3.1 绝对偏移量函数ValueOf

ValueOf(prot,len1,len2) 输入参数: prot:EProtocol 类型,协议对象 len1:number 类型,从协议的开始字段到引用字段的比特位 en2:number 类型,引用的协议对象字段的长度 返回值: result:number 类型,引用的协议字段的值

举个例子,如下图所示,引用的协议对象是root.num,协议开始到引用字段一共96bit,root.num一共8bit, 当条件分支引用后置字段时,使用valueOf(root.num, 96, 8)。

2.3.2 相对偏移量函数ValueOffset

ValueOffset(prot,len1,len2) 输入参数: prot:EProtocol 类型,协议对象 len1:number 类型,相对引用字段的比特位 len2:number 类型,引用的协议对象字段的长度 返回值: result:number 类型,引用的协议字段的值

举个例子,如下图所示,引用的协议对象是root.num,引用root.num的位置相对num字段早了8bit,root.num一共8bit, 当条件分支引用后置字段时,使用ValueOffset(root.num, 8, 8)。

http://www.cnnetsun.cn/news/1481282.html

相关文章:

  • OpenClaw多模型切换:Qwen3.5-4B-Claude与本地Llama3混用方案
  • 如何构建算法面试知识体系:从数据结构到系统设计的完整攻略
  • Duix Mobile:构建全离线实时数字人交互的突破性方案
  • JAVA旅行攻略旅游手册旅行搭子系统源码支持小程序+公众号+APP+H5
  • 为什么高端耳机都是开放式?2026十大开放式耳机入手推荐
  • OpenClaw版本升级:GLM-4.7-Flash兼容性测试指南
  • Spring Boot 3 项目中接入国内外主流 AI 大模型(Qwen、DeepSeek、GLM、Kimi、豆包、Minimax 及国外模型),适配优先级选择
  • 隐私优先方案:OpenClaw+nanobot本地化邮件处理助手
  • STM32与毫米波雷达的非接触健康监测系统设计
  • 3大突破:让中医药AI技术走进基层医疗
  • GEO 合规场景下技术革新的价值重构:从合规约束到竞争优势
  • OpenClaw权限管理:Qwen3-VL:30B在飞书中的访问控制实践
  • OSEK-NM直接网络管理一:逻辑环构建与状态机解析
  • 【deepseek】pcie 12v 和3.3v 上电时序
  • 用Python从零实现带遗忘因子的递推最小二乘法(附完整代码与调参指南)
  • 无需本地GPU:星图平台OpenClaw镜像+百川2-13B云端体验指南
  • 嵌入式MCU轻量级命令行工具nr_micro_shell解析
  • 颠覆式音频编辑:Audacity AI插件的OpenVINO技术应用指南
  • C语言单元测试框架CuTest设计与实现详解
  • Zeek流量分析实战:从PCAP解析到自定义脚本开发(含flowN/flowmeter配置)
  • C++内联函数:彻底搞懂引用内联函数的核心用法
  • GitLab中解除默认保护并删除主分支的完整指南
  • 广东大巴模式影响内陆,各地都出现低价大巴,与高铁、绿皮抢客,低价出行惠民
  • 英特尔Linux处理器微码更新:保障系统安全与稳定的关键指南
  • Win10蓝牙接收文件失败?22H2版本最新解决方案(附自动接收设置)
  • 从零到国三:常州工学院Robocon团队的逆袭之路
  • 企业级微信自动化框架:WeChatFerry的技术实现与商业价值分析
  • Polars 2.0清洗效能天花板在哪?我们用金融/电商/物联网三大行业真实数据集压力测试后,终于敢说这句话
  • 论文AI率怎么稳过知网维普?2026最新基准测试:5款实测工具教你一次定稿
  • STM32超低功耗实战:STOP模式选择与唤醒机制解析