数据名") 获取设备的数据 :::info 参数格式: 设备名->数据名 ::: SetDeviceData("数据名",数据) 设置设备的数据 :::i...">系统脚本 | ISM 组态监控系统数据名") 获取设备的数据 :::info 参数格式: 设备名->数据名 ::: SetDeviceData("数据名",数据) 设置设备的数据 :::i...">
跳至主要內容

系统脚本


前言

为了解决多设备数据运算和多设备数据联动,ISM提供了类go语言的格式的系统脚本

新建脚本

执行间隔是脚本的执行间隔时间

image.png

输入完脚本后,点击检查,可以检查脚本是否有错误。

脚本函数

GetDeviceData("设备名->数据名") 获取设备的数据

相关信息

参数格式:

设备名->数据名

SetDeviceData("数据名",数据) 设置设备的数据

相关信息

参数格式

参数1:设备名->数据名,

参数2:浮点数

GetModuleDevice("模型名称") 获取系统所有绑定的数据模型设备

相关信息

参数:

模型名称

结果:

返回的数据是对象数组

例子

g = GetModuleDevice("tcp")

for i in g {
  Print(i.Name)
  f = i.Name+"->功率1"
  f1 = i.Name+"->功率2"
  f2 = i.Name+"->功率和"
  y = GetDeviceData(f)
  x = GetDeviceData(f1)
  SetDeviceData(f2,x+y)
}

RecordVideo("",100,"path")函数

相关信息

第一个参数:视频名称(这个是添加的视频名称)

第二个参数:录像的时间,单位为秒

第三个参数:保存路径 注意windows下面的路径有反斜杠,要这样表达两个反斜杠表达一个反斜杠

Print(变量名) 打印函数

GetRemoteDbData("数据库类型","用户名","密码",“主机”,端口,“数据库名称”,“SQL语句”)

相关信息

参数:

数据库类型:目前只支持mysql

用户名:连接数据库的用户

密码:连接数据库的用户的密码

主机:数据库主机

端口:数据库主机端口

数据库名称:连接的数据库

SQL语句:执行的SQL语句

例子:

y = GetRemoteDbData("mysql","test","pwd123456","127.0.0.1",3308,"ism","select id ,count from alarm_notice where uuid='feae-dead-eead-erfb'")

for i in y {
  Print(i.Name)
  Print(y.id)
  Print(y.count)
}

BitGet("t->BitValue",5)函数 获取一个整型数据的每个位的值。

相关信息

第一个参数:设备里的数据,格式:设备名->数据名,如t->BitValue

第二个参数:要求获取数据的第几位,如第6位,BitGet("t->BitValue",6)

BitSet("t->BitValue",5,1)函数 设置一个整型数据的某个位的值。

相关信息

第一个参数:设备里的数据,格式:设备名->数据名,如t->BitValue

第二个参数:要求设置数据的第几位

第三个参数:设置此位的值,取值0和1

语法

定义变量

x = 1
y = x + 1

条件

if x < 1 || y < 1 {
	println(x)
} else if x < 1 && y < 1 {
	Print(y)
} else {
	Print(x + y)
}

切片

a = []interface{1, 2, 3}
Print(a) // [1 2 3]
Print(a[0]) // 1

键值对

a = map[interface]interface{"x": 1}
Print(a) // map[x:1]
a.b = 2
a["c"] = 3
Print(a["b"]) // 2
Print(a.c) // 3

结构体

a = make(struct {
	A int64,
	B float64
})
a.A = 4
a.B = 5.5
Print(a.A) // 4
Print(a.B) // 5.5

函数

func a (x) {
	Print(x + 1)
}
a(5) // 6
上次编辑于:
贡献者: hexinjun888