ECMAScript

需要将"Web版本"升级到"3.6.6-210927002-code"及以上版本

一. 串口

定制函数


ECMA.SetValue(strTagName, value);

功能:设置单个点值

参数:

名称 类型 说明
strTagName String "采集点名"全称
value 不限 设置的值

返回值:设置成功返回1;设置失败返回0

示例:

var oDate = new Date(); //初始化系统时间函数
var year = oDate.getFullYear();
var month = oDate.getMonth() + 1;
var day = oDate.getDate();
var hour = oDate.getHours();
var minute = oDate.getMinutes();
var second = oDate.getSeconds();

// 获取年月日时分秒,设置年月日时分秒
ECMA.SetValue('API.设备_1@YK1', year);
ECMA.SetValue('API.设备_1@YK2', month);
ECMA.SetValue('API.设备_1@YK3', day);
ECMA.SetValue('API.设备_1@YK4', hour);
ECMA.SetValue('API.设备_1@YK5', minute);
ECMA.SetValue('API.设备_1@YK6', second);

ECMA.SetMultipleValue(obj);

功能:设置多个点值

参数:

名称 类型 说明
obj list 设置多个点值,格式: [ { name: 控制点名, value: 设置的值 }, … ] 可以同时设置多个点值

返回值:设置成功返回1;设置失败返回0

示例:

var multiplevalue_List = [{ "name": "API.设备_1@YK21", "value": 123 }, { "name": "API.设备_1@YK22", "value": 456.789 }, { "name": "API.设备_1@YK23", "value": "1234567890" }, { "name": "API.设备_1@YK24", "value": "测试中文" }];

ECMA.SetMultipleValue(multiplevalue_List);

ECMA.GetValue(strTagName);

功能:获取点值

参数:

名称 类型 说明
strTagName String "采集点名"全称

返回值:该点数据值

示例

var value = ECMA.GetValue('API.设备_1@YK9');

ECMA.Delay(nMiSecondDelay);

功能:延时函数

名称 类型 说明
nMiSecondDelay int 延时函数,参数单位为毫秒

返回值:无

示例

ECMA.Delay(1000);// 延时函数,单位毫秒,延时1000ms

ECMA.isOpen();

功能:获取链路状态.

参数:无

返回值:通讯链路正常返回1;通讯链路异常返回0

示例

// 获取串口状态
var isOpen = ECMA.isOpen();

ECMA.write(data)

功能:发送报文

参数:

名称 类型 说明
data String 发送的报文

返回值:返回成功发送的字节个数

示例:

ECMA.write("12345");// 发送ASCII格式的123456字符串

ECMA.readAll();

功能:读取报文

参数:无

返回值:返回本次读取到的报文

示例:

ECMA.Delay(1000);// 延时函数,单位毫秒,延时1000ms
var read = ECMA.readAll();// 读取返回的报文

ECMA.SetFrameHex();

功能:设置报文格式为十六进制格式,

​ 设置报文格式,十六进制格式.默认报文格式为字符串格式,通过此函数可以将报文格式设置为十六进制形式,在发送时会对js合成的报文做fromHex操作,在读取返回js时会对报文做toHex操作

参数:无

返回值:无

示例:

ECMA.SetFrameHex();// 报文设置HEX格式,一般在脚本开始位置设置,只需设置一次即可

ECMA.Display(str, value);

功能:将信息输出到报文界面,可协助调试过程,正常运行后尽量使用此函数的部分

参数:

名称 类型 说明
str String 可以填写一些调试信息
value 不限 可以输出字符串或者列表等数据类型

返回值:无

示例:

    var data = "112233445566778899001122";// 要发送的报文
    var multiplevalue_List = [{"name":"API.设备_1@YK21","value":123},{"name":"API.设备_1@YK22","value":456.789},{"name":"API.设备_1@YK23","value":"1234567890"},{"name":"API.设备_1@YK24","value":"测试中文"}];
    ECMA.Display("测试1",data);
    ECMA.Display("测试2",multiplevalue_List);

ECMA.GetElapsedTimer_elapsed_seconds();

功能:获取计时器时间,可用于前后两次获取的值进行差值计算,可以算出使用了多少时间

参数:无

返回值:返回计时器时间,单位:秒

示例:

    var timer1 = ECMA.GetElapsedTimer_elapsed_seconds();// 计时器 秒
    var timer2 = ECMA.GetElapsedTimer_elapsed_millisecond();// 计时器 毫秒
    var timer3 = ECMA.GetElapsedTimer_elapsed_microseconds();// 计时器 微秒
    var timer4 = ECMA.GetElapsedTimer_elapsed_nanosecond();// 计时器 纳秒
    ECMA.SetValue('API.设备_1@YK11',timer1);
    ECMA.SetValue('API.设备_1@YK12',timer2);
    ECMA.SetValue('API.设备_1@YK13',timer3);
    ECMA.SetValue('API.设备_1@YK14',timer4);

ECMA.GetElapsedTimer_elapsed_millisecond();

功能:获取计时器时间,可用于前后两次获取的值进行差值计算,可以算出使用了多少时间

参数:无

返回值:返回计时器时间,单位:毫秒

示例:

    var timer1 = ECMA.GetElapsedTimer_elapsed_seconds();// 计时器 秒
    var timer2 = ECMA.GetElapsedTimer_elapsed_millisecond();// 计时器 毫秒
    var timer3 = ECMA.GetElapsedTimer_elapsed_microseconds();// 计时器 微秒
    var timer4 = ECMA.GetElapsedTimer_elapsed_nanosecond();// 计时器 纳秒
    ECMA.SetValue('API.设备_1@YK11',timer1);
    ECMA.SetValue('API.设备_1@YK12',timer2);
    ECMA.SetValue('API.设备_1@YK13',timer3);
    ECMA.SetValue('API.设备_1@YK14',timer4);

ECMA.GetElapsedTimer_elapsed_microseconds();

功能:获取计时器时间,可用于前后两次获取的值进行差值计算,可以算出使用了多少时间

参数:无

返回值:返回计时器时间,单位:微秒

示例:

    var timer1 = ECMA.GetElapsedTimer_elapsed_seconds();// 计时器 秒
    var timer2 = ECMA.GetElapsedTimer_elapsed_millisecond();// 计时器 毫秒
    var timer3 = ECMA.GetElapsedTimer_elapsed_microseconds();// 计时器 微秒
    var timer4 = ECMA.GetElapsedTimer_elapsed_nanosecond();// 计时器 纳秒
    ECMA.SetValue('API.设备_1@YK11',timer1);
    ECMA.SetValue('API.设备_1@YK12',timer2);
    ECMA.SetValue('API.设备_1@YK13',timer3);
    ECMA.SetValue('API.设备_1@YK14',timer4);

ECMA.GetElapsedTimer_elapsed_nanosecond();

功能:获取计时器时间,可用于前后两次获取的值进行差值计算,可以算出使用了多少时间

参数:无

返回值:返回计时器时间,单位:纳秒

示例:

    var timer1 = ECMA.GetElapsedTimer_elapsed_seconds();// 计时器 秒
    var timer2 = ECMA.GetElapsedTimer_elapsed_millisecond();// 计时器 毫秒
    var timer3 = ECMA.GetElapsedTimer_elapsed_microseconds();// 计时器 微秒
    var timer4 = ECMA.GetElapsedTimer_elapsed_nanosecond();// 计时器 纳秒
    ECMA.SetValue('API.设备_1@YK11',timer1);
    ECMA.SetValue('API.设备_1@YK12',timer2);
    ECMA.SetValue('API.设备_1@YK13',timer3);
    ECMA.SetValue('API.设备_1@YK14',timer4);

ECMA.DB_Sql_exec(strSql);

功能:直接编写SQL语句操作数据库

参数:

名称 类型 说明
strSql String 要执行的sql语句

返回值:返回执行结果,为Object,包含三个部分:

名称 类型 说明
err_type String 错误类型
err_text String 错误描述
rows Array 如果为查询语句则返回查询到的数据

示例:

    var dateformat = moment().format('YYYY-MM-DD hh:mm:ss');// 格式化当前时间
    ECMA.Display("时间格式化",dateformat);// 打印格式化后的时间字符串

    // var sql = "insert into test(ID,Value,AcpTime) values ("+num+",123,\"2021-05-13 11:22:33\");";
    var sql = "insert into test(ID,Value,AcpTime) values ("+num+","+num*100+",\""+dateformat+"\");";// 合成插入sql语句
    var dbresult = ECMA.DB_Sql_exec(sql);// 执行并获取返回值
    ECMA.Display("数据库写入测试",dbresult);// 打印执行结果

    dbresult = ECMA.DB_Sql_exec("select * from test;");// 查询test表所有数据
    ECMA.Display("数据库查询测试",dbresult);// 打印执行结果

上述示例打印执行结果:

Time:2021/09/30 08:55:04.170
Debug:Display
参数1:时间格式化
参数2:2021-09-30 08:55:04
Time:2021/09/30 08:55:04.189
Debug:Display
参数1:数据库写入测试
参数2:{
    "err_text": " ",
    "err_type": 0,
    "rows": [
    ]
}

Time:2021/09/30 08:55:04.235
Debug:Display
参数1:数据库查询测试
参数2:{
    "err_text": " ",
    "err_type": 0,
    "rows": [
        {
            "AcpTime": "2021-09-30T08:54:59",
            "ID": 1,
            "Value": 100
        },
        {
            "AcpTime": "2021-09-30T08:55:02",
            "ID": 2,
            "Value": 200
        },
        {
            "AcpTime": "2021-09-30T08:55:04",
            "ID": 3,
            "Value": 300
        }
    ]
}

测试用例:

ECMA.SetFrameHex();// 脚本起始位置将报文格式设置为HEX格式

// 本脚本只执行一次,因此如果需要循环执行则需要在循环内编写脚本语言
// 以下为循环执行
while (1) {
    var oDate = new Date(); //初始化系统时间函数
    var year = oDate.getFullYear();
    var month = oDate.getMonth() + 1;
    var day = oDate.getDate();
    var hour = oDate.getHours();
    var minute = oDate.getMinutes();
    var second = oDate.getSeconds();

    // 获取年月日时分秒,设置年月日时分秒
    ECMA.SetValue('API.设备_1@YK1', year);
    ECMA.SetValue('API.设备_1@YK2', month);
    ECMA.SetValue('API.设备_1@YK3', day);
    ECMA.SetValue('API.设备_1@YK4', hour);
    ECMA.SetValue('API.设备_1@YK5', minute);
    ECMA.SetValue('API.设备_1@YK6', second);

    // 判断串口是否打开
    var isOpen = ECMA.isOpen();
    ECMA.SetValue('API.设备_1@YK7', isOpen);

    var data = "112233445566778899001122";// 要发送的报文
    var size = ECMA.write(data);// 发送报文,并获取发送报文的字节数
    ECMA.SetValue('API.设备_1@YK8', size);// 将发送报文的字节数设置给某个点,设置单个点值

    ECMA.Delay(1000);// 延时函数,单位毫秒,延时1000ms

    var read = ECMA.readAll();// 读取收到的报文,一般执行完"写(ECMA.write)"功能后需要延时一段时间再"读(ECMA.readAll)"报文
    ECMA.SetValue('API.设备_1@YK9', read);

    var timer1 = ECMA.GetElapsedTimer_elapsed_seconds();// 计时器 秒
    var timer2 = ECMA.GetElapsedTimer_elapsed_millisecond();// 计时器 毫秒
    var timer3 = ECMA.GetElapsedTimer_elapsed_microseconds();// 计时器 微秒
    var timer4 = ECMA.GetElapsedTimer_elapsed_nanosecond();// 计时器 纳秒
    ECMA.SetValue('API.设备_1@YK11',timer1);
    ECMA.SetValue('API.设备_1@YK12',timer2);
    ECMA.SetValue('API.设备_1@YK13',timer3);
    ECMA.SetValue('API.设备_1@YK14',timer4);

    var multiplevalue_List = [{"name":"API.设备_1@YK21","value":123},{"name":"API.设备_1@YK22","value":456.789},{"name":"API.设备_1@YK23","value":"1234567890"},{"name":"API.设备_1@YK24","value":"测试中文"}];

    ECMA.SetMultipleValue(multiplevalue_List);// 批量设置多个点值

    ECMA.Display("测试1",data);// 调试信息输出到报文界面
    ECMA.Display("测试2",multiplevalue_List);// 调试信息输出到报文界面

}

通道配置示例图

通道配置示例图

results matching ""

    No results matching ""