【ETestDEV5教程26】通信协议管理之动态属性
ETestDEV是一款面向测试系统的测试软件开发环境主要应用于嵌入式软件测试、快速原型验证、硬件在环测试、工业自动化测试等场景。本教程针对ETestDEV5的使用方法进行详细说明。若有疑问欢迎留言。文章目录1.关键字2.内置函数2.1 ByteSize函数2.2 CheckCode函数2.2.1 内置校验函数名2.2.2 CRC算法描述方式2.3 偏移量函数2.3.1 绝对偏移量函数ValueOf2.3.2 相对偏移量函数ValueOffset1.关键字关键字是通信协议内代指当前协议、当前协议分组的变量用于动态设置自动值、动态设置条件表达式、指定内置函数动态参数等场景。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 绝对偏移量函数ValueOfValueOf(prot,len1,len2) 输入参数 protEProtocol 类型协议对象 len1number 类型从协议的开始字段到引用字段的比特位 en2number 类型引用的协议对象字段的长度 返回值 resultnumber 类型引用的协议字段的值举个例子如下图所示引用的协议对象是root.num协议开始到引用字段一共96bit,root.num一共8bit, 当条件分支引用后置字段时使用valueOf(root.num, 96, 8)。2.3.2 相对偏移量函数ValueOffsetValueOffset(prot,len1,len2) 输入参数 protEProtocol 类型协议对象 len1number 类型相对引用字段的比特位 len2number 类型引用的协议对象字段的长度 返回值 resultnumber 类型引用的协议字段的值举个例子如下图所示引用的协议对象是root.num引用root.num的位置相对num字段早了8bitroot.num一共8bit, 当条件分支引用后置字段时使用ValueOffset(root.num, 8, 8)。