网关支持对读取数据和写入数据进行数据运算;运算符
运算符 | 功能 | 说明 |
+,-,/,* | 加减乘除 | |
&,|,^ | 按位与,按位或,异或 | |
** | 乘方 | |
% | 取模 | |
>>,<< | 左移,右移 | |
|| | 逻辑或 | |
&& | 逻辑与 | |
属性名称命名规则1. 属性名称的组成 标识符可以由以下字符组成: 字母(Unicode 字母,包括大写和小写字母,如 A-Z、a-z)。 数字(0-9)。 下划线 _。 标识符不能包含其他特殊字符(如 @、#、$、%、空格 等)。2. 属性名称的开头 标识符必须以字母或下划线 _ 开头。 标识符不能以数字开头。3. 属性名称区分大小写 区分大小写的。例如: name 和 Name 是两个不同的标识符。 myVar 和 myvar 也是两个不同的标识符。4. 关键字不能作为属性名称 有 25 个保留关键字,这些关键字不能用作标识符。以下是关键字列表: break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var5. 预定义属性名称 有一些预定义的标识符(如 int、string、true、false 等),虽然它们不是关键字,但建议避免将它们用作自定义标识符,以免引起混淆。使用举例:在设备模型属性的”读取计算公式“和”写入计算公式“输入框中填写注)计算公式不能出现非法字符,原属性用字符‘’(t)‘’代入运算,不要用属性标签代入运算公式,如noise*10(非法)。 另外:关注具有读写属性的变量,读取公式和写入公式运算公式应为逆运算逻辑,例如:读公式(t)*10,写公式(t)/101、加减乘除运算
加 | (t)+2 |
减 | (t)-1 |
乘 | (t)*100 |
除 | (t)/100 |
2、取位运算取某一位值可以采用>> 和 &
取第15位 | ((t)>>15)&1 |
取第14位 | ((t)>>14)&1 |
取第13位 | ((t)>>13)&1 |
取第12位 | ((t)>>12)&1 |
取第11位 | ((t)>>11)&1 |
取第10位 | ((t)>>10)&1 |
取第9位 | ((t)>>9)&1 |
取第8位 | ((t)>>8)&1 |
取第7位 | ((t)>>7)&1 |
取第6位 | ((t)>>6)&1 |
取第5位 | ((t)>>5)&1 |
取第4位 | ((t)>>4)&1 |
取第3位 | ((t)>>3)&1 |
取第2位 | ((t)>>2)&1 |
取第1位 | ((t)>>1)&1 |
取第0位 | (t)&1 |
取高8位
Plain Text复制代码
1
((t)&240)>>8取低8位
Plain Text复制代码
1
(t)&153、BCD转10进制
uint16
Plain Text复制代码
1
(((t)>>12)&15)*1000+(((t)>>8)&15)*100+(((t)>>4)&15)*10+(((t))&15)
uint32
Plain Text复制代码
1
(((t)>>28)&15)*10000000+(((t)>>24)&15)*1000000+(((t)>>20)&15)*100000+(((t)>>16)&15)*10000+(((t)>>12)&15)*1000+(((t)>>8)&15)*100+(((t)>>4)&15)*10+(((t))&15)4、逻辑判断例子:当采集的值==100时就把值设置成-1
Go运行代码复制代码
1
(t)==100?-1:(t)5、10进制转BCD
Plain Text复制代码
1
((((t)/1000)%10)<<12)+((((t)/100)%10)<<8)+((((t)/10)%10)<<4)+((t)%10)