4798 lines
123 KiB
Markdown
4798 lines
123 KiB
Markdown
# RDS 脚本方法字典
|
||
|
||
## 脚本方法使用示例
|
||
|
||
以下以[异步创建并运行一个任务](#%E5%BC%82%E6%AD%A5%E5%88%9B%E5%BB%BA%E5%B9%B6%E8%BF%90%E8%A1%8C%E4%B8%80%E4%B8%AA%E4%BB%BB%E5%8A%A1)的脚本方法为例进行演示:
|
||
|
||
```
|
||
// 构建createWindTask脚本方法所需要的输入参数
|
||
var inputParams = {"fromSite": "PS-01"};// 天风任务的输入参数
|
||
var taskParam = {
|
||
// 任务类型 id
|
||
"taskId": "12345",
|
||
// 任务名称
|
||
"taskLabel": "Ps2Ws",
|
||
// 指定创建的任务实例的id
|
||
"taskRecordId": "04d11f4f-d17c-4a41-9cf7-67de468035f9",
|
||
//任务优先级(天风任务的参数:task.priority)
|
||
"priority": 10
|
||
// 在天风任务中定义的参数
|
||
"inputParams": JSON.stringify(inputParams)
|
||
};
|
||
|
||
// 调用createWinTask方法,传入上面的输入参数
|
||
jj.createWindTask(JSON.stringify(taskParam));
|
||
```
|
||
|
||
## 任务相关
|
||
|
||
#### 校验任务参数
|
||
|
||
* 方法说明
|
||
|
||
校验输入参数中的 taskId 和 taskLabel 字段,如果同时为空,则返回 false,否则则返回 true。
|
||
|
||
```
|
||
function checkTaskParam(param: string): boolean
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
其参数 `param` 是 JSON 字符串,结构如下:
|
||
|
||
```
|
||
{
|
||
// 任务类型 id
|
||
"taskId": "12345",
|
||
// 任务名称
|
||
"taskLabel": "Ps2Ws"
|
||
}
|
||
```
|
||
|
||
* 输出参数
|
||
* true,taskId 和 taskLabel 字段不是都为空字符串。
|
||
* false,taskId 和 taskLabel 字段同时为空字符串。
|
||
* 异常
|
||
|
||
本方法会抛出异常。
|
||
|
||
#### 异步创建并运行一个任务
|
||
|
||
* 方法说明
|
||
|
||
本方法是非阻塞方法,将在脚本中创建一个线程,来执行天风任务的实例。
|
||
|
||
```
|
||
function createWindTask(param: string): string
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
其参数 `param` 是 JSON 字符串,结构如下:
|
||
|
||
```
|
||
{
|
||
// 任务类型 id
|
||
"taskId": "12345",
|
||
// 任务名称
|
||
"taskLabel": "Ps2Ws",
|
||
// 指定创建的任务实例的id
|
||
"taskRecordId": "04d11f4f-d17c-4a41-9cf7-67de468035f9",
|
||
// 在天风任务中定义的参数
|
||
"inputParams": "{\"fromSite\":\"PS-01\"}"
|
||
}
|
||
```
|
||
|
||
**注意**:`taskId` 和 `taskLabel` 两者必选其一。如果同时存在,将首选使用 `taskId` 字段。
|
||
|
||
**注意,inputParam 字段,是个 JSON 字符串。需要在脚本里将任务参数序列化为 JSON。**
|
||
|
||
* 输出参数
|
||
|
||
JSON字符串
|
||
|
||
```
|
||
{
|
||
"code":200, //200表示成功 -1表示失败
|
||
"msg":"" //提示信息
|
||
}
|
||
```
|
||
|
||
* 异常
|
||
|
||
本方法不抛出异常。
|
||
|
||
#### 根据任务实例 ID 查询任务实例
|
||
|
||
* 方法说明
|
||
|
||
根据任务实例 ID 查询任务数据。
|
||
|
||
```
|
||
function getTaskRecordById(taskRecordId: string): string
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
taskRecordId,string 类型,是任务实例的唯一 ID。
|
||
* 输出参数
|
||
* 如存在指定 ID 的任务实例,返回 JSON 格式的字符串。
|
||
|
||
```
|
||
{
|
||
// 任务实例id
|
||
"id":"123",
|
||
// 天风任务id
|
||
"defId":"6743",
|
||
// 天风任务名
|
||
defLabel:"agvMove",
|
||
// 任务实例状态(1000:运行中,1001:终止,1002:暂停,1003:结束,1004:异常结束,1005:重启异常,1006:异常中断)
|
||
"status":1000,
|
||
// 任务创建时间
|
||
"createdOn":"2022-02-12 11:23:12.0",
|
||
// 任务结束时间
|
||
"endedOn":"2022-02-12 11:26:12.0",
|
||
// 任务状态描述
|
||
"stateDescription":"物料搬运中",
|
||
// 外部订单号
|
||
“outOrderNo”:"D6567812",
|
||
// 机器人Id
|
||
"agvId":""
|
||
}
|
||
```
|
||
* 如果不存在指定 ID 的任务实例,返回 “null”。
|
||
* 异常
|
||
|
||
本方法抛出异常。
|
||
|
||
#### 根据外部单号查询任务实例列表
|
||
|
||
* 方法说明
|
||
|
||
根据外部单号查询任务实例列表。
|
||
|
||
```
|
||
function getTaskRecordListByOutOrderNo(outOrderNo: string): string
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
outOrderNo,string 类型,是外部单号 ID。
|
||
* 输出参数(JSON 格式的字符串):
|
||
|
||
是 JSON 数组,包含查询到的任务实例数据。
|
||
|
||
```
|
||
[{
|
||
// 任务实例id
|
||
"id":"123",
|
||
// 天风任务id
|
||
"defId":"6743",
|
||
// 天风任务名
|
||
defLabel:"agvMove",
|
||
// 任务实例状态(1000:运行中,1001:终止,1002:暂停,1003:结束,1004:异常结束,1005:重启异常,1006:异常中断)
|
||
"status":1000,
|
||
// 任务创建时间
|
||
"createdOn":"2022-02-12 11:23:12",
|
||
// 结束原因
|
||
"endedReason":"运行结束",
|
||
// 任务结束时间
|
||
"endedOn":"2022-02-12 11:26:12",
|
||
// 任务状态描述
|
||
"stateDescription":"物料搬运中",
|
||
// 外部订单号
|
||
“outOrderNo”:"D6567812"
|
||
}]
|
||
```
|
||
|
||
如果不存在指定外部单号的任务实例,返回 "[]"。
|
||
|
||
* 异常
|
||
|
||
本方法抛出异常。
|
||
|
||
#### 根据机器人 ID 查询任务实例列表
|
||
|
||
* 方法说明
|
||
|
||
根据机器人ID查询任务实例列表。
|
||
|
||
```
|
||
function getTaskRecordByAgvId(agvId: string): string
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
agvId,string 类型,是机器人 ID。
|
||
* 输出参数(JSON 格式的字符串):
|
||
|
||
是 JSON 数组,包含查询到的任务实例数据。
|
||
|
||
```
|
||
[{
|
||
// 任务实例id
|
||
"id":"123",
|
||
// 天风任务id
|
||
"defId":"6743",
|
||
// 天风任务名
|
||
defLabel:"agvMove",
|
||
// 任务实例状态(1000:运行中,1001:终止,1002:暂停,1003:结束,1004:异常结束, 1005:重启异常, 1006:异常中断)
|
||
"status":1000,
|
||
// 任务创建时间
|
||
"createdOn":"2022-02-12 11:23:12",
|
||
// 结束原因
|
||
"endedReason":"运行结束",
|
||
// 任务结束时间
|
||
"endedOn":"2022-02-12 11:26:12",
|
||
// 任务状态描述
|
||
"stateDescription":"物料搬运中",
|
||
// 外部订单号
|
||
“outOrderNo”:"D6567812"
|
||
}]
|
||
```
|
||
|
||
如果不存在对应机器人的任务实例数据,返回 "[]"。
|
||
|
||
* 异常
|
||
|
||
本方法抛出异常。
|
||
|
||
#### Core 运单封口
|
||
|
||
* 方法说明
|
||
|
||
将 Core 中指定 ID 的运单封口。
|
||
|
||
```
|
||
function markComplete(orderId: string): void
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
orderId,string 类型,Core 运单执行 ID。
|
||
* 输出参数
|
||
|
||
无
|
||
* 异常
|
||
|
||
本方法会抛出异常。
|
||
|
||
#### 校验任务实例ID是否存在
|
||
|
||
* 方法说明
|
||
|
||
校验任务实例id是否存在。
|
||
|
||
```
|
||
function isTaskRecordIdExist(taskRecordId: string): boolean
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
taskRecordId,string 类型,任务实例id。
|
||
* 输出参数
|
||
* true,存在。
|
||
* false,不存在。
|
||
* 异常
|
||
|
||
本方法会抛出异常。
|
||
|
||
#### 校验任务名称是否存在
|
||
|
||
* 方法说明
|
||
|
||
校验任务名称是否存在。
|
||
|
||
```
|
||
function isTaskLabelExist(taskName: string): boolean
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
taskName,string 类型,任务名称。
|
||
* 输出参数
|
||
* true,存在。
|
||
* false,不存在。
|
||
* 异常
|
||
|
||
本方法会抛出异常。
|
||
|
||
#### 根据查询条件获取任务实例
|
||
|
||
* 方法说明
|
||
|
||
根据参数的条件查询任务实例。
|
||
|
||
```
|
||
function queryTaskRecord(param: string): string
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
其参数 `param` 是 JSON 字符串,结构如下:
|
||
|
||
```
|
||
{
|
||
// 任务类型 id
|
||
"taskId":"",
|
||
// 任务名
|
||
"taskLabel":"",
|
||
// 任务实例 id
|
||
"taskRecordId":"",
|
||
// 任务实例状态(1000:运行中,1001:终止,1002:暂停,1003:结束,1004:异常结束,1005:重启异常,1006:异常中断)
|
||
"status":"",
|
||
// 执行任务的机器人 id
|
||
"agvId":"",
|
||
// 开始时间,需满足‘yyyy-MM-dd HH:mm:ss’格式。如果该值非空,则返回创建日期大于该时间的任务实例
|
||
"startDate":"",
|
||
// 结束时间,需满足‘yyyy-MM-dd HH:mm:ss’格式。如果该值非空,则返回创建日期小于该时间的任务实例
|
||
"endDate":""
|
||
}
|
||
```
|
||
|
||
* 输出参数
|
||
|
||
是 JSON 数组,包含查询到的任务实例数据。
|
||
|
||
```
|
||
[{
|
||
// 任务实例id
|
||
"id":"123",
|
||
// 天风任务id
|
||
"defId":"6743",
|
||
// 天风任务名
|
||
defLabel:"agvMove",
|
||
// 任务实例状态(1000:运行中,1001:终止,1002:暂停,1003:结束,1004:异常结束,1005:重启异常,1006:异常中断)
|
||
"status":1000,
|
||
// 任务创建时间
|
||
"createdOn":"2022-02-12 11:23:12",
|
||
// 结束原因
|
||
"endedReason":"运行结束",
|
||
// 任务结束时间
|
||
"endedOn":"2022-02-12 11:26:12",
|
||
// 任务状态描述
|
||
"stateDescription":"物料搬运中",
|
||
// 外部订单号
|
||
“outOrderNo”:"D6567812"
|
||
}]
|
||
```
|
||
|
||
如果不存在满足条件的任务实例数据,返回 "[]"。
|
||
|
||
* 异常
|
||
|
||
本方法抛出异常。
|
||
|
||
#### 接收并持久化第三方系统任务请求
|
||
|
||
* 方法说明
|
||
|
||
```
|
||
function receiveThirdOrder(orderParam: string): boolean
|
||
```
|
||
|
||
接收第三方系统发送的任务请求,并存入数据库(此时未必创建任务)。表结构如下:
|
||
|
||
```
|
||
CREATE TABLE `t_windthirdorder` (
|
||
`id` varchar(255) NOT NULL,
|
||
`create_date` datetime(6) DEFAULT NULL,
|
||
`params` longtext,
|
||
`status` int DEFAULT '0',
|
||
PRIMARY KEY (`id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
其参数 `orderParam` 是 JSON 字符串,示例如下:
|
||
|
||
```
|
||
{
|
||
"name": "运单名",
|
||
"type": "任务名称taskLabel"
|
||
}
|
||
```
|
||
|
||
注:数据表为通用第三方请求数据表,orderParam 存入表 params 字段,orderParam 字段可自定义结构。
|
||
|
||
* 输出参数
|
||
* true,调用方法成功。
|
||
* false,调用方法失败。
|
||
* 异常
|
||
|
||
本方法不抛出异常。
|
||
|
||
#### 保存任务运行时日志
|
||
|
||
* 方法说明
|
||
|
||
新增RDS任务实例的运行日志,该日志将显示在任务实例的监控界面中。
|
||
|
||
```
|
||
function saveTaskLog(logParam: string): void
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
其参数 `param` 是 JSON 字符串,结构如下:
|
||
|
||
```
|
||
{
|
||
// 任务类型 id
|
||
"taskId": "402883a27cda555f017cda6f55ad01b6",
|
||
// 任务实例 id
|
||
"taskRecordId": "04d11f4f-d17c-4a41-9cf7-67de468035f9",
|
||
// 任务块 id
|
||
"blockId": 2,
|
||
// 日志信息
|
||
"message": "[RootBp]任务开始运行:taskId=402883a27cda555f017cda6f55ad01b6",
|
||
// 日志级别:1,正常运行;2,正常停止;3,异常中断。
|
||
"level": 1
|
||
}
|
||
```
|
||
|
||
* 输出参数
|
||
|
||
无
|
||
* 异常
|
||
|
||
本方法不抛出异常。
|
||
|
||
#### 创建并运行一个任务
|
||
|
||
* 方法说明
|
||
|
||
本方法是阻塞方法,可以在脚本中创建一个天风任务的实例,并在任务执行结束后返回。
|
||
|
||
```
|
||
function syncCreateWindTask(taskParam: string): string
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
其参数 `param` 是 JSON 字符串,结构如下:
|
||
|
||
```
|
||
{
|
||
// 任务类型 id
|
||
"taskId": "12345",
|
||
// 任务名称
|
||
"taskLabel": "Ps2Ws",
|
||
// 指定创建的任务实例的id
|
||
"taskRecordId": "04d11f4f-d17c-4a41-9cf7-67de468035f9",
|
||
// 在天风任务中定义的参数
|
||
"inputParams": "{\"fromSite\":\"PS-01\"}"
|
||
}
|
||
```
|
||
|
||
**注意**,`taskId` 和 `taskLabel` 两者必选其一。如果同时存在,将首选使用 `taskId` 字段。
|
||
|
||
**注意,inputParam 字段,是个 JSON 字符串。需要在脚本里将任务参数序列化为 JSON。**
|
||
|
||
* 输出参数
|
||
* "9013",任务正常结束。
|
||
* "9014",任务异常结束。
|
||
* 异常
|
||
|
||
本方法不抛出异常。
|
||
|
||
#### 终止任务
|
||
|
||
* 方法说明
|
||
|
||
本方法是非阻塞方法,可用于终止多个正在运行的天风任务实例。
|
||
|
||
```
|
||
function terminateTasks(param: string): void
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
其参数 `param` 是 JSON 字符串,结构如下:
|
||
|
||
```
|
||
[
|
||
{
|
||
// 指定创建的任务实例的id
|
||
"taskRecordId": "04d11f4f-d17c-4a41-9cf7-67de468035f9"
|
||
},
|
||
{
|
||
// 指定创建的任务实例的id
|
||
"taskRecordId": "04d11f4f-d17c-4a41-9cf7-67de468035fe"
|
||
}
|
||
]
|
||
```
|
||
|
||
* 输出参数
|
||
|
||
无
|
||
* 异常
|
||
|
||
本方法会抛出异常。
|
||
|
||
#### 查询子任务的任务id列表
|
||
|
||
* 方法说明
|
||
|
||
本方法是非阻塞方法,可根据父任务的id查询所有子任务的id。
|
||
|
||
```
|
||
function getChildrenTaskRecordId(recordId: string): string
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
recordId,父任务的recordId。
|
||
* 输出参数
|
||
|
||
包含子任务id的 JSON 字符串,转换成 JSON 对象之后的示例数据如下所示:
|
||
|
||
```
|
||
[
|
||
"child-58d549a4-6d4c-4e01-a327-269e3d4c1863",
|
||
"child-sdsdfvsd-qrwe-4e02-a327-269eqwcfs863"
|
||
]
|
||
```
|
||
|
||
如果不存在满足条件的子任务,返回 "[]"。
|
||
|
||
* 异常
|
||
|
||
本方法会抛出异常。
|
||
|
||
#### 设置任务优先级
|
||
|
||
* 方法说明
|
||
|
||
本方法是非阻塞方法,可根据设置任务的优先级。
|
||
|
||
```
|
||
function setTaskPriority(taskRecordId: string,priority: number): void
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
taskRecordId,任务的实例id。
|
||
|
||
priority, 任务的优先级
|
||
* 输出参数
|
||
|
||
无
|
||
* 异常
|
||
|
||
本方法不会抛出异常。
|
||
|
||
## 机器人相关
|
||
|
||
#### 校验机器人是否存在
|
||
|
||
* 方法说明
|
||
|
||
校验机器人是否存在。
|
||
|
||
```
|
||
function isRobotExist(robotName: string): boolean
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
robotName,string 类型,机器人名称。
|
||
* 输出参数
|
||
* true,存在。
|
||
* false,不存在。
|
||
* 异常
|
||
|
||
本方法不抛出异常。
|
||
|
||
#### 获取机器人基本信息
|
||
|
||
* 方法说明
|
||
|
||
获取机器人基本信息。
|
||
|
||
```
|
||
function getLiteRobotsStatus(): string
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
无。
|
||
* 输出参数
|
||
|
||
```
|
||
[
|
||
{
|
||
"battery_level": 1, #机器人电池电量, 范围 [0, 1]
|
||
"confidence": 1, #机器人的定位置信度, 范围 [0, 1]
|
||
"currentGroup": "unnamed", #机器人当前所在机器人组
|
||
"current_map": "newCHACHECPD-15_1", #当前地图
|
||
"current_map_invalid": false, #机器人当前地图不在场景中
|
||
"dI": [], #输入信号
|
||
"dO": [], #输出信号
|
||
"disconnect": false, #与机器人网络断连
|
||
"dispatchable": true, #机器人可接单状态
|
||
"dispatchable_status": 0, #可接单状态 = api 设置可接单,1 = api 设置不可接单(小车占用资源), 2 = api 设置不可接单(小车不占用资源)
|
||
"errors": [], #报警码
|
||
"ip": "", #机器人ip
|
||
"low_battery": false, #低电量
|
||
"reloc_status": 1, #0 = FAILED(定位失败), 1 = SUCCESS(定位正确), 2 = RELOCING(正在重定位), 3=COMPLETED(定位完成)
|
||
"task_status": 0, #机器人当前的导航状态:0 = NONE, 1 = WAITING(目前不可能出现该状态), 2 = RUNNING, 3 = SUSPENDED, 4 = COMPLETED, 5 = FAILED, 6 = CANCELED
|
||
"unconfirmed_reloc": false, #未确认定位
|
||
"unlock": 0, #0: 控制权在 RDSCore 手上 1: 控制权被其他人抢走; 2: 控制权没有被抢占
|
||
"uuid": "sim_01" #机器人名
|
||
},
|
||
{
|
||
"battery_level": 1,
|
||
"confidence": 1,
|
||
"currentGroup": "RobotGroup-01",
|
||
"current_map": "newCHACHECPD-15_1",
|
||
"current_map_invalid": false,
|
||
"dI": [],
|
||
"dO": [],
|
||
"disconnect": false,
|
||
"dispatchable": true,
|
||
"dispatchable_status": 0,
|
||
"errors": [],
|
||
"ip": "",
|
||
"low_battery": false,
|
||
"orderId": "ab913f4b-9a35-4cdf-a4e5-07928897e0d2",
|
||
"reloc_status": 1,
|
||
"state": "FINISHED",
|
||
"task_status": 4,
|
||
"unconfirmed_reloc": false,
|
||
"unlock": 0,
|
||
"uuid": "sim_02"
|
||
}
|
||
]
|
||
```
|
||
|
||
* 异常
|
||
|
||
本方法抛出异常。
|
||
|
||
#### 根据Id获取机器人基本信息
|
||
|
||
* 方法说明
|
||
|
||
根据Id获取机器人基本信息。
|
||
|
||
```
|
||
function getLiteRobotsStatuById(agvId:string):string;
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
agvId,string 类型,机器人Id。
|
||
* 输出参数
|
||
|
||
```
|
||
{
|
||
"battery_level": 1, #机器人电池电量, 范围 [0, 1]
|
||
"confidence": 1, #机器人的定位置信度, 范围 [0, 1]
|
||
"currentGroup": "unnamed", #机器人当前所在机器人组
|
||
"current_map": "newCHACHECPD-15_1", #当前地图
|
||
"current_map_invalid": false, #机器人当前地图不在场景中
|
||
"dI": [], #输入信号
|
||
"dO": [], #输出信号
|
||
"disconnect": false, #与机器人网络断连
|
||
"dispatchable": true, #机器人可接单状态
|
||
"dispatchable_status": 0, #可接单状态 = api 设置可接单,1 = api 设置不可接单(小车占用资源), 2 = api 设置不可接单(小车不占用资源)
|
||
"errors": [], #报警码
|
||
"ip": "", #机器人ip
|
||
"low_battery": false, #低电量
|
||
"reloc_status": 1, #0 = FAILED(定位失败), 1 = SUCCESS(定位正确), 2 = RELOCING(正在重定位), 3=COMPLETED(定位完成)
|
||
"task_status": 0, #机器人当前的导航状态:0 = NONE, 1 = WAITING(目前不可能出现该状态), 2 = RUNNING, 3 = SUSPENDED, 4 = COMPLETED, 5 = FAILED, 6 = CANCELED
|
||
"unconfirmed_reloc": false, #未确认定位
|
||
"unlock": 0, #0: 控制权在 RDSCore 手上 1: 控制权被其他人抢走; 2: 控制权没有被抢占
|
||
"uuid": "sim_01" #机器人名
|
||
}
|
||
```
|
||
|
||
* 异常
|
||
|
||
本方法会抛出异常。
|
||
|
||
#### 根据Id获取机器人位置
|
||
|
||
* 方法说明
|
||
|
||
根据机器人id获取机器人的位置
|
||
|
||
```
|
||
getVehicleStation(agvId:string):string;
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
agvId,string 类型,机器人Id。
|
||
* 输出参数
|
||
|
||
```
|
||
{
|
||
"lastStation": "LM32", //上次位置 可能是空
|
||
"station": "AP25" //当前位置 可能是空
|
||
}
|
||
```
|
||
|
||
如果与调度断连返回空对象 {}。
|
||
|
||
* 异常
|
||
|
||
本方法不抛出异常。
|
||
|
||
#### 获取Core报错信息
|
||
|
||
* 方法说明
|
||
|
||
获取Core报错信息。
|
||
|
||
```
|
||
function getCoreAlarms():string;
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
无。
|
||
* 输出参数
|
||
|
||
```
|
||
{
|
||
"errors": [{
|
||
"code": 52106,
|
||
"desc": "(AMB-01: blocked by chengpin-02 in occupy path. blocked by chengpin-02 in block group's edge BlockGroup102)(AMB-02: blocked by AMB-05 in occupy path. blocked by AMB-05 in block group's edge BlockGroup94)(AMB-03: blocked by AMB-05 in block group's lm BlockGroup94)(AMB-05: blocked by AMB-03 in block group's lm BlockGroup105)(chengpin-02: blocked by AMB-01 in occupy path. blocked by AMB-01 in block group's edge BlockGroup102)",
|
||
"times": 5,
|
||
"timestamp": 1681110467
|
||
}, {
|
||
"code": 52201,
|
||
"desc": "(AMB-01,chengpin-02, in BlockGroup102, whose max number is 1 ), The number of robots in same block group is over max number.",
|
||
"times": 1,
|
||
"timestamp": 1681110452
|
||
}],
|
||
"warnings": [{
|
||
"code": 54000,
|
||
"desc": "AMB-02,AMB-05,chengpin-03,chengpin-08, unable to reach park point.",
|
||
"times": 1,
|
||
"timestamp":
|
||
1681110462
|
||
}]
|
||
}
|
||
```
|
||
|
||
当与调度断连时,本方法会返回 null。
|
||
|
||
* 异常
|
||
|
||
本方法不会抛出异常。
|
||
|
||
#### 根据Id获取Core报错信息
|
||
|
||
* 方法说明
|
||
|
||
根据Id获取Core报错信息。
|
||
|
||
```
|
||
function getCoreAlarms(code:int):string;
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
code,int类型,错误码。
|
||
* 输出参数
|
||
|
||
```
|
||
{
|
||
"errors": [{
|
||
"code": 52201,
|
||
"desc": "(AMB-01,chengpin-02, in BlockGroup102, whose max number is 1 ), The number of robots in same block group is over max number.",
|
||
"times": 1,
|
||
"timestamp": 1681110452
|
||
}]
|
||
}
|
||
```
|
||
|
||
当与调度断连时,本方法会返回 null。
|
||
|
||
* 异常
|
||
|
||
本方法不会抛出异常。
|
||
|
||
#### 获取Rbk报错信息
|
||
|
||
* 方法说明
|
||
|
||
获取Rbk报错信息。
|
||
|
||
```
|
||
function getRbkAlarms():string;
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
无。
|
||
* 输出参数
|
||
|
||
```
|
||
{
|
||
"errors": [{
|
||
"code": 52200,
|
||
"desc": "Blocked by : chengpin-02",
|
||
"times": 1,
|
||
"timestamp": 1681116822857
|
||
}, {
|
||
"code": 52200,
|
||
"desc": "Blocked by : AMB-01",
|
||
"times": 1,
|
||
"timestamp": 1681116822858
|
||
}]
|
||
}
|
||
```
|
||
|
||
当与调度断连时,本方法会返回 null。
|
||
|
||
* 异常
|
||
|
||
本方法不会抛出异常。
|
||
|
||
#### 根据Id获取Rbk报错信息
|
||
|
||
* 方法说明
|
||
|
||
根据Id获取Rbk报错信息。
|
||
|
||
```
|
||
function getRbkAlarms(code:int):string;
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
code,int类型,错误码。
|
||
* 输出参数
|
||
|
||
```
|
||
{
|
||
"errors": [{
|
||
"code": 52200,
|
||
"desc": "Blocked by : chengpin-02",
|
||
"times": 1,
|
||
"timestamp": 1681117052956
|
||
}, {
|
||
"code": 52200,
|
||
"desc": "Blocked by : AMB-01",
|
||
"times": 1,
|
||
"timestamp": 1681117052956
|
||
}]
|
||
}
|
||
```
|
||
|
||
当与调度断连时,本方法会返回 null。
|
||
|
||
* 异常
|
||
|
||
本方法不会抛出异常。
|
||
|
||
#### 设置机器人软急停
|
||
|
||
* 方法说明
|
||
|
||
设置机器人软急停。
|
||
|
||
```
|
||
function setSoftStop(vehicleId: string,status: boolean): boolean
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
vehicleId,string 类型,机器人名称。
|
||
|
||
status,boolean类型,true:设置机器人软急停 。false:取消机器人软急停
|
||
* 输出参数
|
||
* true,成功。
|
||
* false,失败。
|
||
* 异常
|
||
|
||
本方法不抛出异常。
|
||
|
||
#### 获取机器人所有信息
|
||
|
||
* 方法说明
|
||
|
||
获取机器人所有信息。
|
||
|
||
```
|
||
function getRobotsStatus(): string
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
无。
|
||
* 输出参数
|
||
|
||
```
|
||
{
|
||
"dynamic_obstacle": {},
|
||
"errors": [
|
||
{
|
||
"52101": 1634020173,
|
||
"desc": "hu-test-1,hu-test-3, have no charge point in map.",
|
||
"times": 1
|
||
},
|
||
{
|
||
"52103": 1634020173,
|
||
"desc": "hu-test-1,hu-test-3, have no park point in map.",
|
||
"times": 1
|
||
},
|
||
{
|
||
"53200": 1634020174,
|
||
"desc": "[{\"error_msg\":\"old: hu-test-1, now: AMB-01, please change back!\",\"ip\":\"106.14.198.1\"}]",
|
||
"times": 1
|
||
}
|
||
],
|
||
"fatals": [],
|
||
"notices": [],
|
||
"report": [
|
||
{
|
||
"area_resources_occupied": [
|
||
{
|
||
"area_name": "new",
|
||
"avoidObs_area_occupied": {
|
||
"radius": -1,
|
||
"x": 0,
|
||
"y": 0
|
||
},
|
||
"blocks_occupied": [],
|
||
"path_occupied": [
|
||
{
|
||
"end_id": "AP1",
|
||
"end_percentage": 0.7882161028093827,
|
||
"source_id": "AP61",
|
||
"start_percentage": 0.7882161028093827
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"basic_info": {
|
||
"current_map": "20200529150233136",
|
||
"dsp_version": "simulation",
|
||
"ip": "106.14.198.1",
|
||
"model": "AMB-150",
|
||
"robot_note": "",
|
||
"version": "v3.3.4.51"
|
||
},
|
||
"changes": {
|
||
"maps": [
|
||
"20200529150233136.smap",
|
||
"default.smap",
|
||
"wwww(1).smap"
|
||
],
|
||
"model": true
|
||
},
|
||
"chassis": {
|
||
"goods_region": {
|
||
"name": "",
|
||
"point": []
|
||
},
|
||
"head": 0.42,
|
||
"radius": 0.0,
|
||
"shape": 1,
|
||
"tail": 0.38,
|
||
"width": 0.56
|
||
},
|
||
"connection_status": 1,
|
||
"current_order": {},
|
||
"dispatchable": false,
|
||
"is_error": false,
|
||
"lock_info": {
|
||
"desc": "",
|
||
"ip": "58.34.135.130",
|
||
"locked": true,
|
||
"nick_name": "DESKTOP-27FKEEM(0d50b)",
|
||
"port": 54733,
|
||
"time_t": "1634023715",
|
||
"type": 2
|
||
},
|
||
"network_delay": 100,
|
||
"rbk_report": {
|
||
"DI": [],
|
||
"DO": [],
|
||
"angle": -1.5626,
|
||
"battery_level": 1.0,
|
||
"blocked": false,
|
||
"brake": false,
|
||
"charging": false,
|
||
"confidence": 0.996,
|
||
"current": -1.0,
|
||
"current_map": "20200529150233136",
|
||
"current_map_md5": "72a91de898406e10b9cedfed51a3a5f9",
|
||
"current_station": "LM1",
|
||
"emergency": false,
|
||
"errors": [],
|
||
"fatals": [],
|
||
"fork": {
|
||
"fork_auto_flag": true,
|
||
"fork_height": -0.0,
|
||
"fork_height_in_place": false,
|
||
"forward_in_place": false,
|
||
"forward_val": 0.0
|
||
},
|
||
"info": {},
|
||
"jack": {
|
||
"jack_emc": false,
|
||
"jack_enable": false,
|
||
"jack_error_code": 0,
|
||
"jack_height": 0.0,
|
||
"jack_isFull": false,
|
||
"jack_load_times": 0,
|
||
"jack_mode": false,
|
||
"jack_speed": 0,
|
||
"jack_state": 0
|
||
},
|
||
"last_station": "CP2",
|
||
"lock_info": {
|
||
"desc": "",
|
||
"ip": "58.34.135.130",
|
||
"locked": true,
|
||
"nick_name": "DESKTOP-27FKEEM(0d50b)",
|
||
"port": 54733,
|
||
"time_t": "1634023715",
|
||
"type": 2
|
||
},
|
||
"notices": [],
|
||
"odo": 24.771,
|
||
"received_on": {
|
||
"data_nsec": "1110998989197957",
|
||
"frame_id": "",
|
||
"pub_nsec": "1110998989197957",
|
||
"seq": "0"
|
||
},
|
||
"reloc_status": 1,
|
||
"requestCurrent": -0.0,
|
||
"requestVoltage": -0.0,
|
||
"roller": {
|
||
"roller_emc": false,
|
||
"roller_enable": false,
|
||
"roller_error_code": 0,
|
||
"roller_isFull": false,
|
||
"roller_mode": false,
|
||
"roller_speed": 0,
|
||
"roller_state": 0
|
||
},
|
||
"soft_emc": false,
|
||
"steer": -0.0,
|
||
"time": 104303118,
|
||
"today_odo": 15.812,
|
||
"total_time": 444534615,
|
||
"voltage": 1.0,
|
||
"vx": -0.0,
|
||
"vy": -0.0,
|
||
"w": -0.0,
|
||
"warnings": [
|
||
{
|
||
"55001": 1634020734,
|
||
"desc": "The robot is in the dispatching state. If you need to control, please regain control and go offline during dispatching.",
|
||
"times": 1
|
||
}
|
||
],
|
||
"x": -0.3316,
|
||
"y": -1.4711
|
||
},
|
||
"undispatchable_reason": {
|
||
"current_map_invalid": false,
|
||
"disconnect": false,
|
||
"dispatchable_status": 0,
|
||
"low_battery": false,
|
||
"unconfirmed_reloc": false,
|
||
"unlock": 1
|
||
},
|
||
"uuid": "hu-test-1",
|
||
"vehicle_id": "AMB-01"
|
||
},
|
||
{
|
||
"area_resources_occupied": [
|
||
{
|
||
"area_name": "new",
|
||
"avoidObs_area_occupied": {
|
||
"radius": -1,
|
||
"x": 0,
|
||
"y": 0
|
||
},
|
||
"blocks_occupied": [],
|
||
"path_occupied": [
|
||
{
|
||
"end_id": "AP33",
|
||
"end_percentage": 1,
|
||
"source_id": "AP32",
|
||
"start_percentage": 1
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"basic_info": {
|
||
"current_map": "zhihuichufang-Area-1ss-sim",
|
||
"dsp_version": "simulation",
|
||
"ip": "106.14.190.57",
|
||
"model": "AMB-300-D",
|
||
"robot_note": "",
|
||
"version": "v3.3.4.51"
|
||
},
|
||
"changes": {
|
||
"maps": [
|
||
"20210107101108218.smap",
|
||
"20210915133008125.smap",
|
||
"WEIYI-2L.smap",
|
||
"default-old.smap",
|
||
"default.smap",
|
||
"default123.smap",
|
||
"jiaxing-fork2.smap",
|
||
"seer-pda-20211011-132546.smap",
|
||
"seer-pda-20211011-132611.smap",
|
||
"seer-pda-20211011-132635.smap",
|
||
"seer-pda-2021930-175116(1).smap",
|
||
"wwww(1).smap",
|
||
"zhacai-sim.smap"
|
||
],
|
||
"model": true
|
||
},
|
||
"chassis": {
|
||
"goods_region": {
|
||
"name": "",
|
||
"point": []
|
||
},
|
||
"head": 0.52,
|
||
"radius": 0.0,
|
||
"shape": 1,
|
||
"tail": 0.48,
|
||
"width": 0.7
|
||
},
|
||
"connection_status": 1,
|
||
"current_order": {},
|
||
"dispatchable": false,
|
||
"is_error": false,
|
||
"lock_info": {
|
||
"desc": "",
|
||
"ip": "58.34.135.130",
|
||
"locked": true,
|
||
"nick_name": "8e06e130-a2fa-4681-8473-bc6f3f9d76fd",
|
||
"port": 58088,
|
||
"time_t": "1634025655",
|
||
"type": 255
|
||
},
|
||
"network_delay": 85,
|
||
"rbk_report": {
|
||
"DI": [],
|
||
"DO": [],
|
||
"angle": -2.9679,
|
||
"battery_level": 1.0,
|
||
"blocked": false,
|
||
"brake": false,
|
||
"charging": false,
|
||
"confidence": 0.9949,
|
||
"current": -1.0,
|
||
"current_map": "zhihuichufang-Area-1ss-sim",
|
||
"current_map_md5": "7a239eb7d76c4cdb1a4edac9524a15c5",
|
||
"current_station": "",
|
||
"emergency": false,
|
||
"errors": [],
|
||
"fatals": [],
|
||
"fork": {
|
||
"fork_auto_flag": true,
|
||
"fork_height": -0.0,
|
||
"fork_height_in_place": false,
|
||
"forward_in_place": false,
|
||
"forward_val": 0.0
|
||
},
|
||
"info": {},
|
||
"jack": {
|
||
"jack_emc": false,
|
||
"jack_enable": false,
|
||
"jack_error_code": 0,
|
||
"jack_height": 0.0,
|
||
"jack_isFull": false,
|
||
"jack_load_times": 0,
|
||
"jack_mode": false,
|
||
"jack_speed": 0,
|
||
"jack_state": 0
|
||
},
|
||
"last_station": "",
|
||
"lock_info": {
|
||
"desc": "",
|
||
"ip": "58.34.135.130",
|
||
"locked": true,
|
||
"nick_name": "8e06e130-a2fa-4681-8473-bc6f3f9d76fd",
|
||
"port": 58088,
|
||
"time_t": "1634025655",
|
||
"type": 255
|
||
},
|
||
"notices": [
|
||
{
|
||
"57005": 1634021893,
|
||
"desc": "json conversion error",
|
||
"times": 21
|
||
}
|
||
],
|
||
"odo": 35984.386,
|
||
"received_on": {
|
||
"data_nsec": "1110998932407317",
|
||
"frame_id": "",
|
||
"pub_nsec": "1110998932407317",
|
||
"seq": "0"
|
||
},
|
||
"reloc_status": 1,
|
||
"requestCurrent": -0.0,
|
||
"requestVoltage": -0.0,
|
||
"roller": {
|
||
"roller_emc": false,
|
||
"roller_enable": false,
|
||
"roller_error_code": 0,
|
||
"roller_isFull": false,
|
||
"roller_mode": false,
|
||
"roller_speed": 0,
|
||
"roller_state": 0
|
||
},
|
||
"soft_emc": false,
|
||
"steer": -0.0,
|
||
"time": 444682933,
|
||
"today_odo": 17.77,
|
||
"total_time": 26574775786,
|
||
"voltage": 1.0,
|
||
"vx": -0.0,
|
||
"vy": -0.0,
|
||
"w": -0.0,
|
||
"warnings": [
|
||
{
|
||
"55001": 1633952368,
|
||
"desc": "The robot is in the dispatching state. If you need to control, please regain control and go offline during dispatching.",
|
||
"times": 1
|
||
}
|
||
],
|
||
"x": -15.8727,
|
||
"y": 11.6028
|
||
},
|
||
"undispatchable_reason": {
|
||
"current_map_invalid": false,
|
||
"disconnect": false,
|
||
"dispatchable_status": 0,
|
||
"low_battery": false,
|
||
"unconfirmed_reloc": false,
|
||
"unlock": 1
|
||
},
|
||
"uuid": "hu-test-3",
|
||
"vehicle_id": "hu-test-3"
|
||
}
|
||
],
|
||
"scene_md5": "b481893504019cd71c03484f4b2419e1",
|
||
"warnings": []
|
||
}
|
||
```
|
||
|
||
当与调度断连时,本方法会返回 null。
|
||
|
||
* 异常
|
||
|
||
本方法抛出异常。
|
||
|
||
#### 查询所有机器人充电阈值
|
||
|
||
* 方法说明
|
||
|
||
获取所有机器人充电阈值信息。
|
||
|
||
```
|
||
function queryChargeParam(): string;
|
||
```
|
||
* 输入参数
|
||
|
||
无。
|
||
* 输出参数
|
||
|
||
```
|
||
[
|
||
{
|
||
"vehicle": "AMB-01",
|
||
"params": {
|
||
"chargeNeed": 40.0,
|
||
"chargeOnly": 30.0,
|
||
"chargedOK": 50.0,
|
||
"chargedFull": 90.0
|
||
}
|
||
},
|
||
{
|
||
"vehicle": "AMB-02",
|
||
"params": {
|
||
"chargeNeed": 50.0,
|
||
"chargeOnly": 20.0,
|
||
"chargedOK": 60.0,
|
||
"chargedFull": 80.0
|
||
}
|
||
}
|
||
]
|
||
```
|
||
|
||
当与调度断连时,本方法会返回 null。
|
||
* 异常
|
||
|
||
本方法不抛出异常。
|
||
|
||
#### 查询机器人充电阈值
|
||
|
||
* 方法说明
|
||
|
||
根据机器人名称获取机器人充电阈值信息。
|
||
|
||
```
|
||
function queryChargeParam(vehicles: string): string;
|
||
```
|
||
* 输入参数
|
||
|
||
vehicles: JSON 格式的字符串(将数组转成字符串格式),查询指定数量的机器人充电阈值信息。
|
||
* 输出参数
|
||
|
||
```
|
||
[
|
||
{
|
||
"vehicle": "AMB-01",
|
||
"params": {
|
||
"chargeNeed": 40.0,
|
||
"chargeOnly": 30.0,
|
||
"chargedOK": 50.0,
|
||
"chargedFull": 90.0
|
||
}
|
||
},
|
||
{
|
||
"vehicle": "AMB-02",
|
||
"params": {
|
||
"chargeNeed": 50.0,
|
||
"chargeOnly": 20.0,
|
||
"chargedOK": 60.0,
|
||
"chargedFull": 80.0
|
||
}
|
||
}
|
||
]
|
||
```
|
||
* 异常
|
||
|
||
本方法不抛出异常。
|
||
|
||
#### 修改机器人充电阈值
|
||
|
||
* 方法说明
|
||
|
||
根据机器人名称修改机器人充电阈值信息。
|
||
|
||
```
|
||
function modifyChargeParam(param: string): boolean;
|
||
```
|
||
* 输入参数
|
||
|
||
vehicles: JSON 格式的字符串(将数组转成字符串格式),查询指定数量的机器人充电阈值信息。
|
||
* 输出参数
|
||
|
||
+ true: 修改成功。
|
||
+ false: 修改失败。
|
||
* 异常
|
||
|
||
本方法不抛出异常。
|
||
* 示例:
|
||
|
||
```
|
||
function boot() {
|
||
// 指定要修改的机器人名称,以及对应的阈值
|
||
const req = {
|
||
"vehicles": ["sim_01"],
|
||
"params": {
|
||
"chargeNeed": 30
|
||
}
|
||
};
|
||
// 查询修改前的阈值信息
|
||
const before = jj.queryChargeParam(JSON.stringify(["sim_01"]));
|
||
// 使用 modifyChargeParam 修改阈值
|
||
const data = jj.modifyChargeParam(JSON.stringify(req));
|
||
// 查询修改后的阈值信息
|
||
const after = jj.queryChargeParam(JSON.stringify(["sim_01"]));
|
||
// 打印结果
|
||
jj.scriptLog("info", "Charge", "query = " + before);
|
||
jj.scriptLog("info", "Charge", "modify = " + data);
|
||
jj.scriptLog("info", "Charge", "query = " + after);
|
||
}
|
||
```
|
||
|
||
得到以下打印信息,表示修改 chargeNeed 参数成功:
|
||
|
||

|
||
|
||
## 库位相关
|
||
|
||
#### 检查站点是否存在
|
||
|
||
* 方法说明
|
||
|
||
检查站点是否存在。
|
||
|
||
```
|
||
function isPointExist(pointName: string):boolean
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
pointName,站点名。
|
||
* 输出参数
|
||
* true,该站点存在。
|
||
* false,该站点不存在。
|
||
* 异常
|
||
|
||
本方法抛出异常。
|
||
|
||
#### 检查库位是否存在
|
||
|
||
* 方法说明
|
||
|
||
检查库位名是否存在
|
||
|
||
```
|
||
function checkSiteExistedBySiteId(siteId: string): boolean
|
||
```
|
||
|
||
* 输入参数
|
||
* siteId,库位名称。
|
||
* 输出参数
|
||
* true,该库位存在。
|
||
* false,该库位不存在。
|
||
* 异常
|
||
|
||
本方法抛出异常。
|
||
|
||
#### 检查库区是否存在
|
||
|
||
* 方法说明
|
||
|
||
检查库区名是否存在
|
||
|
||
```
|
||
function checkSiteGroupExistedByGroupName(groupName: string): boolean
|
||
```
|
||
|
||
* 输入参数
|
||
* groupName,库区名称。
|
||
* 输出参数
|
||
* true,该库区存在。
|
||
* false,该库区不存在。
|
||
* 异常
|
||
|
||
本方法抛出异常。
|
||
|
||
#### 根据条件获取库位
|
||
|
||
* 方法说明
|
||
|
||
根据条件获取库位
|
||
|
||
```
|
||
function findSitesByCondition(conditions: string,sort:string): string
|
||
```
|
||
|
||
* 输入参数
|
||
* conditions,查询条件,模糊查询用'%'标记
|
||
|
||
```
|
||
{
|
||
"area": "area01", //区域名
|
||
"colNum": ["abc","'%bc'","'%b%'","'ab%'"],//列,带'%'表示模糊查询
|
||
"content": ["abc","'%bc'","'%b%'","'ab%'"],//货物
|
||
"depth": ["abc","'%bc'","'%b%'","'ab%'"],//深
|
||
"filled": true, //是否有货
|
||
"groupNames": ["abc","'%bc'","'%b%'","'ab%'"],//库区名
|
||
"level": ["abc","'%bc'","'%b%'","'ab%'"],//货架层数
|
||
"locked": true, //是否已锁定
|
||
"lockedBy": "12345", //锁定的任务实例id
|
||
"no": ["abc","'%bc'","'%b%'","'ab%'"],//库位编号
|
||
"rowNum": ["abc","'%bc'","'%b%'","'ab%'"], //货架行
|
||
"siteIds": ["abc","'%bc'","'%b%'","'ab%'"], //库位id
|
||
"tags": ["abc","'%bc'","'%b%'","'ab%'"],//库位标签
|
||
"type": 1 //库位类别,1物理库位,0逻辑库位
|
||
}
|
||
```
|
||
* sort,根据siteId排序:"ASC"顺序排序,"DESC"倒序排序
|
||
* 输出参数
|
||
|
||
库位列表json
|
||
|
||
```
|
||
[{
|
||
"area": "area01", //区域
|
||
"colNum": "abc-1",//列
|
||
"content": "abc-1", //货物
|
||
"depth": "abc-1",//深
|
||
"disabled": true,//禁用
|
||
"filled": 1,//占用
|
||
"groupNames": "abc",//库区名
|
||
"level": "abc-1",//层
|
||
"locked": 1,//锁定
|
||
"lockedBy": "123456",//锁定的任务id
|
||
"no": "abc-1",//编号
|
||
"preparing": true,//准备中
|
||
"rowNum": "abc-1",//列
|
||
"siteId": "abc-1",//库位id
|
||
"tags": "abc-1",//标签
|
||
"type": 1,//库位类型
|
||
"working": true//工作中
|
||
},
|
||
{
|
||
"area": "area01",
|
||
"colNum": "abc-2",
|
||
"content": "abc-2",
|
||
"depth": "abc-2",
|
||
"disabled": true,
|
||
"filled": 1,
|
||
"groupNames": "abc",
|
||
"level": "abc-2",
|
||
"locked": 1,
|
||
"lockedBy": "123456",
|
||
"no": "abc-2",
|
||
"preparing": true,
|
||
"rowNum": "abc-2",
|
||
"siteId": "abc-2",
|
||
"tags": "abc-2",
|
||
"type": 1,
|
||
"working": true
|
||
}]
|
||
```
|
||
|
||
如果输出值没有满足条件的库位,方法将返回字符串"null"。
|
||
|
||
* 异常
|
||
|
||
本方法抛出异常。
|
||
* 例子
|
||
|
||
1.根据库位id查询库位是否有货
|
||
|
||
```
|
||
function test(){
|
||
var condition = {
|
||
"siteIds": ["E1-1"],
|
||
"filled": true
|
||
}
|
||
var site = jj.findSitesByCondition(JSON.stringify(condition),"ASC")
|
||
}
|
||
```
|
||
|
||
2.查询某一库区内的所有库位
|
||
|
||
```
|
||
function test(){
|
||
var condition = {
|
||
"groupNames": ["E1"]
|
||
}
|
||
var site = jj.findSitesByCondition(JSON.stringify(condition),"ASC")
|
||
}
|
||
```
|
||
|
||
#### 根据条件获取有效库位
|
||
|
||
* 方法说明
|
||
|
||
根据条件获取有效库位,即未禁用(disabled=0)并且同步成功(syncFailed=0)的库位。
|
||
|
||
```
|
||
function findAvailableSitesByCondition(conditions: string,sort:string): string
|
||
```
|
||
|
||
* 输入参数
|
||
* conditions,查询条件,模糊查询用'%'标记
|
||
|
||
```
|
||
{
|
||
"area": "area01", //区域名
|
||
"colNum": ["abc","'%bc'","'%b%'","'ab%'"],//列,带'%'表示模糊查询
|
||
"content": ["abc","'%bc'","'%b%'","'ab%'"],//货物
|
||
"depth": ["abc","'%bc'","'%b%'","'ab%'"],//深
|
||
"filled": true, //是否有货
|
||
"groupNames": ["abc","'%bc'","'%b%'","'ab%'"],//库区名
|
||
"level": ["abc","'%bc'","'%b%'","'ab%'"],//货架层数
|
||
"locked": true, //是否已锁定
|
||
"lockedBy": "12345", //锁定的任务实例id
|
||
"no": ["abc","'%bc'","'%b%'","'ab%'"],//库位编号
|
||
"rowNum": ["abc","'%bc'","'%b%'","'ab%'"], //货架行
|
||
"siteIds": ["abc","'%bc'","'%b%'","'ab%'"], //库位id
|
||
"tags": ["abc","'%bc'","'%b%'","'ab%'"],//库位标签
|
||
"type": 1 //库位类别,1物理库位,0逻辑库位
|
||
}
|
||
```
|
||
* sort,根据siteId排序:"ASC"顺序排序,"DESC"倒序排序
|
||
* 输出参数
|
||
* 包含库位列表的 JSON 字符串,转换成 JSON 对象之后的示例数据如下所示:
|
||
|
||
```
|
||
[{
|
||
"area": "area01", //区域
|
||
"colNum": "abc-1",//列
|
||
"content": "abc-1", //货物
|
||
"depth": "abc-1",//深
|
||
"disabled": true,//禁用
|
||
"filled": 1,//占用
|
||
"groupNames": "abc",//库区名
|
||
"level": "abc-1",//层
|
||
"locked": 1,//锁定
|
||
"lockedBy": "123456",//锁定的任务id
|
||
"no": "abc-1",//编号
|
||
"preparing": true,//准备中
|
||
"rowNum": "abc-1",//列
|
||
"siteId": "abc-1",//库位id
|
||
"tags": "abc-1",//标签
|
||
"type": 1,//是否物理库位
|
||
"working": true//工作中
|
||
},
|
||
{
|
||
"area": "area01",
|
||
"colNum": "abc-2",
|
||
"content": "abc-2",
|
||
"depth": "abc-2",
|
||
"disabled": true,
|
||
"filled": 1,
|
||
"groupNames": "abc",
|
||
"level": "abc-2",
|
||
"locked": 1,
|
||
"lockedBy": "123456",
|
||
"no": "abc-2",
|
||
"preparing": true,
|
||
"rowNum": "abc-2",
|
||
"siteId": "abc-2",
|
||
"tags": "abc-2",
|
||
"type": 1,
|
||
"working": true
|
||
}]
|
||
```
|
||
* 如果没有符合条件的库位,则返回值为 `"null"` ,而不是 `[]` 。
|
||
* 异常
|
||
|
||
本方法抛出异常。
|
||
|
||
#### 根据扩展字段获取有效库位
|
||
|
||
* 方法说明
|
||
|
||
根据扩展字段获取有效库位,即未禁用(disabled=0)并且同步成功(syncFailed=0)的库位。
|
||
|
||
```
|
||
function findAvailableSitesByExtFields(conditions: string): string
|
||
```
|
||
|
||
* 输入参数
|
||
* conditions,查询条件,模糊查询用'%'标记
|
||
|
||
```
|
||
[
|
||
{
|
||
"attributeName": "ext5",
|
||
"attributeValue": "ex%"
|
||
},
|
||
{
|
||
"attributeName": "ext10",
|
||
"attributeValue": "%ex"
|
||
},
|
||
{
|
||
"attributeName": "ex100",
|
||
"attributeValue": "ex3"
|
||
},
|
||
{
|
||
"attributeName": "ex101",
|
||
"attributeValue": "%ex"
|
||
},
|
||
{
|
||
"attributeName": "filled", // 是否占用
|
||
"attributeValue": "0"
|
||
},
|
||
{
|
||
"attributeName": "locked", // 是否锁定
|
||
"attributeValue": "0"
|
||
},
|
||
{
|
||
"attributeName": "area", // 区域
|
||
"attributeValue": "new"
|
||
},
|
||
{
|
||
"attributeName": "groupName", // 库区名
|
||
"attributeValue": "CYJ-IN-UP"
|
||
},
|
||
{
|
||
"attributeName": "siteId", // 库位id
|
||
"attributeValue": "CYJ-IN-01"
|
||
}
|
||
]
|
||
```
|
||
* 请求示例
|
||
|
||
```
|
||
var conditions = [{"attributeName":"ext5", "attributeValue":"ex%"},{"attributeName":"ext10", "attributeValue":"%ex"},{"attributeName":"ex100", "attributeValue":"ex3"},{"attributeName":"ex101", "attributeValue":"%ex"},{"attributeName":"filled", "attributeValue":"0"},{"attributeName":"locked", "attributeValue":"0"},{"attributeName":"area", "attributeValue":"new"},{"attributeName":"groupName", "attributeValue":"CYJ-IN-UP"},{"attributeName":"siteId", "attributeValue":"CYJ-IN-01"}];
|
||
var data = jj.findAvailableSitesByExtFields(JSON.stringify(conditions));
|
||
```
|
||
|
||
* 库位列表json
|
||
* 包含库位列表的 JSON 字符串,转换成 JSON 对象之后的示例数据如下所示:
|
||
|
||
```
|
||
[
|
||
{
|
||
"area": "new",
|
||
"content": null,
|
||
"filled": 1,
|
||
"groupName": null,
|
||
"locked": 0,
|
||
"lockedBy": null,
|
||
"siteId": "CYJ-IN-01",
|
||
"siteName": null,
|
||
"tags": "CYJ-IN-UP",
|
||
"type": null
|
||
}
|
||
]
|
||
```
|
||
* 如果没有符合条件的库位,则返回值为 `"null"` ,而不是 `[]` 。
|
||
* 异常
|
||
|
||
本方法抛出异常。
|
||
|
||
#### 根据条件更新库位
|
||
|
||
* 方法说明
|
||
|
||
根据条件更新库位
|
||
|
||
```
|
||
function updateSitesByCondition(conditions: string,values:string): number
|
||
```
|
||
|
||
* 输入参数
|
||
* conditions,更新条件,模糊查询用'%'标记
|
||
|
||
```
|
||
{
|
||
"area": "area01", //区域名
|
||
"colNum": ["abc","'%bc'","'%b%'","'ab%'"],//列,带'%'表示模糊查询
|
||
"content": ["abc","'%bc'","'%b%'","'ab%'"],//货物
|
||
"depth": ["abc","'%bc'","'%b%'","'ab%'"],//深
|
||
"filled": true, //是否有货
|
||
"groupNames": ["abc","'%bc'","'%b%'","'ab%'"],//库区名
|
||
"level": ["abc","'%bc'","'%b%'","'ab%'"],//货架层数
|
||
"locked": true, //是否已锁定
|
||
"lockedBy": "12345", //锁定的任务实例id
|
||
"no": ["abc","'%bc'","'%b%'","'ab%'"],//库位编号
|
||
"rowNum": ["abc","'%bc'","'%b%'","'ab%'"], //货架行
|
||
"siteIds": ["abc","'%bc'","'%b%'","'ab%'"], //库位id
|
||
"tags": ["abc","'%bc'","'%b%'","'ab%'"],//库位标签
|
||
"type": 1 //库位类别,1物理库位,0逻辑库位
|
||
}
|
||
```
|
||
* values,修改的字段
|
||
|
||
```
|
||
{
|
||
"area": "abc", //区域
|
||
"colNum": "4", //列
|
||
"content": "abc", //货物
|
||
"depth": "2", //深
|
||
"disabled": true, //禁用
|
||
"filled": true, //有货
|
||
"groupName": "abc", //库区名
|
||
"level": "3", //层
|
||
"locked": true, //锁定
|
||
"lockedBy": "12345", //锁定的任务id
|
||
"no": "10", //编号
|
||
"preparing": true, //准备中
|
||
"rowNum": "5", //行
|
||
"siteId": "site_01", //库位名
|
||
"tags": "abc", //标签
|
||
"type": 1, //是否物理库位
|
||
"working": true //工作中
|
||
}
|
||
```
|
||
* 输出参数
|
||
* 更新成功的数据库记录行数
|
||
* 异常
|
||
|
||
本方法抛出异常。
|
||
* 例子
|
||
|
||
1.根据库位id查询有货未加锁的库位并进行加锁
|
||
|
||
```
|
||
function test(){
|
||
var taskId = jj.currentTimeMillis()
|
||
var condition = {
|
||
"siteIds": ["E1-1"],
|
||
"filled": true,
|
||
"disabled": false,
|
||
"locked": false
|
||
}
|
||
var value = {
|
||
"siteIds": ["E1-1"],
|
||
"filled": true,
|
||
"locked": true,
|
||
"lockedBy": taskId+""
|
||
}
|
||
var site = jj.updateSitesByCondition(JSON.stringify(condition),JSON.stringify(value))
|
||
}
|
||
```
|
||
|
||
2.更新库区内的有货未加锁的所有库位并进行加锁
|
||
|
||
```
|
||
function test(){
|
||
var taskId = jj.currentTimeMillis()
|
||
var condition = {
|
||
"groupName": ["E1"],
|
||
"filled": true,
|
||
"disabled": false,
|
||
"locked": false
|
||
}
|
||
var value = {
|
||
"groupName": ["E1"],
|
||
"filled": true,
|
||
"locked": true,
|
||
"lockedBy": taskId+""
|
||
}
|
||
var site = jj.updateSitesByCondition(JSON.stringify(condition),JSON.stringify(value))
|
||
}
|
||
```
|
||
|
||
#### 根据条件更新库位扩展字段值
|
||
|
||
* 方法说明
|
||
|
||
根据库位id和扩展字段名更新扩展字段的值
|
||
|
||
```
|
||
function updateSiteExtFieldByIdAndExtFieldName(conditions: string): void
|
||
```
|
||
|
||
* 输入参数
|
||
* conditions,库位id、扩展字段名和更新值
|
||
|
||
```
|
||
[
|
||
{
|
||
siteId: "Loc-01",
|
||
extFieldName: "test",
|
||
updateValue: "111"
|
||
},
|
||
{
|
||
siteId: "Loc-02",
|
||
extFieldName: "test",
|
||
updateValue: "222"
|
||
},
|
||
{
|
||
siteId: "Loc-03",
|
||
extFieldName: "test",
|
||
updateValue: "333"
|
||
}
|
||
]
|
||
```
|
||
|
||
* 输出参数
|
||
|
||
无。
|
||
* 异常
|
||
|
||
本方法抛出异常
|
||
* 例子
|
||
* 更新Loc-01、Loc-02、Loc-03的扩展字段test的值分别为111、222、333
|
||
|
||
```
|
||
function test(){
|
||
var conditions = [
|
||
{
|
||
siteId: "Loc-01",
|
||
extFieldName: "test",
|
||
updateValue: "111"
|
||
},
|
||
{
|
||
siteId: "Loc-02",
|
||
extFieldName: "test",
|
||
updateValue: "222"
|
||
},
|
||
{
|
||
siteId: "Loc-03",
|
||
extFieldName: "test",
|
||
updateValue: "333"
|
||
}
|
||
]
|
||
|
||
jj.updateSiteExtFieldByIdAndExtFieldName(JSON.stringify(conditions));
|
||
}
|
||
```
|
||
|
||
## 全局缓存数据
|
||
|
||
#### 获取缓存数据
|
||
|
||
* 方法说明
|
||
|
||
**由于 RDS 的脚本里,无法使用全局变量,我们推荐如下方式缓存变量值。**
|
||
|
||
根据已缓存的 key 获取缓存数据。
|
||
|
||
```
|
||
function getCacheParam(key: string): string
|
||
```
|
||
|
||
* 输入参数
|
||
* key,缓存键。
|
||
* 输出参数
|
||
* string,JSON 格式。如果数据不存在,将返回 null。
|
||
* 异常
|
||
|
||
本方法抛出异常。
|
||
|
||
#### 缓存数据
|
||
|
||
* 方法说明
|
||
|
||
将参数中的 key 和 value 键值对在系统中进行缓存,缓存的数据将持久化,之后可通过 getCacheParam 方法根据 key 获取对应的 value。
|
||
|
||
```
|
||
function putCacheParam(key: string, value: string): void
|
||
```
|
||
|
||
* 输入参数
|
||
* key,缓存键。
|
||
* value,缓存值。如果要缓存一个对象,需要先序列化为 JSON 字符串。
|
||
* 输出参数
|
||
|
||
无。
|
||
* 异常
|
||
本方法不会抛出异常。
|
||
|
||
#### 删除缓存数据
|
||
|
||
* 方法说明
|
||
|
||
删除缓存数据。
|
||
|
||
```
|
||
function clearCacheParam(key: string): void
|
||
```
|
||
|
||
* 输入参数
|
||
* key,缓存键。
|
||
* 输出参数
|
||
|
||
本方法无输出参数。
|
||
* 异常
|
||
|
||
本方法不抛出异常。
|
||
|
||
#### 获取所有的缓存数据
|
||
|
||
* 方法说明
|
||
|
||
获取缓存块的全部缓存数据,并以 JSON 格式返回。
|
||
|
||
```
|
||
function getAllCacheParams(): string
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
无。
|
||
* 输出参数
|
||
* string,JSON 格式。如果数据不存在,将返回空串。
|
||
* 异常
|
||
|
||
本方法抛出异常。
|
||
|
||
## 手持端相关
|
||
|
||
#### 通知手持端(工位/岗位)
|
||
|
||
* 方法说明
|
||
|
||
可以给手持端的指定工位或者岗位发送弹框通知。该弹框可以人工确认。如无人工确认,可配置保持时间,超过保持时间,弹框自动消失。
|
||
|
||
```
|
||
function noticeOperator(workTypes: string, workStations: string, content: string, needConfirm: boolean, keepTime: number): void
|
||
```
|
||
|
||
* 输入参数
|
||
* workTypes,string 类型,要通知的岗位。多岗位间逗号分隔。
|
||
* workStations,string 类型,要通知的工位。多工位间逗号分隔。
|
||
* content,string 类型,通知的内容。
|
||
* needConfirm,boolean类型,表示是否需要手持端用户点击确认后,通知弹框才会消失。
|
||
* keepTime,number类型,表示通知弹框在手持端的保持时间,单位秒,超过这个时间弹框将消失。
|
||
|
||
**注意**:本方法采用异步的方式发送群发通知。
|
||
* 输出参数
|
||
|
||
本方法输出参数为空。
|
||
* 异常
|
||
|
||
本方法抛出异常。
|
||
|
||
#### 通知手持端用户
|
||
|
||
* 方法说明
|
||
|
||
可以给手持端的指定用户发送弹框通知。该弹框可以人工确认。如无人工确认,可配置保持时间,超过保持时间,弹框自动消失。
|
||
|
||
```
|
||
function noticeOperatorByUser(userNames: string, content: string, needConfirm: boolean, keepTime: number): void
|
||
```
|
||
|
||
* 输入参数
|
||
* userNames,string 类型,要通知的用户。多用户间逗号分隔。
|
||
* content,string 类型,通知的内容。
|
||
* needConfirm,boolean类型,表示是否需要手持端用户点击确认后,通知弹框才会消失。
|
||
* keepTime,number类型,表示通知弹框在手持端的保持时间,单位秒,超过这个时间弹框将消失。
|
||
|
||
**注意**:本方法采用异步的方式发送群发通知。
|
||
* 输出参数
|
||
|
||
本方法输出参数为空。
|
||
* 异常
|
||
|
||
本方法抛出异常。
|
||
|
||
#### 通过menuId修改手持端按钮的label
|
||
|
||
* 方法说明
|
||
|
||
通过menuId定位修改手持端对应按钮的label(重启之后会失效,恢复到初始状态)
|
||
|
||
```
|
||
function setPadLabelByMenuId(menuId: String, label: String):void
|
||
```
|
||
|
||
* 输入参数
|
||
* menuId,string 类型,要更改的手持端任务按钮的menuId
|
||
* label,string 类型,将手持端按钮上标签的内容修改为label中的内容
|
||
* 输出参数
|
||
|
||
本方法输出参数为空。
|
||
* 异常
|
||
|
||
本方法抛出异常。
|
||
|
||
#### 通过menuId修改手持端按钮的背景色
|
||
|
||
* 方法说明
|
||
|
||
通过menuId修改手持端按钮的背景色(重启之后会失效,恢复到初始状态)
|
||
|
||
```
|
||
function setPadBackgroundByMenuId(menuId: String, background: String):void
|
||
```
|
||
|
||
* 输入参数
|
||
* menuId,string 类型,要更改的手持端任务按钮的menuId
|
||
* background,string 类型,将手持端按钮上标签的背景色修改为background中的颜色(16进制的RGB格式)
|
||
* 输出参数
|
||
|
||
本方法输出参数为空。
|
||
* 异常
|
||
|
||
本方法抛出异常。
|
||
|
||
#### 通过menuId设置手持端按钮是否禁用
|
||
|
||
* 方法说明
|
||
|
||
通过menuId设置手持端按钮是否禁用(重启之后会失效,恢复到初始状态)
|
||
|
||
```
|
||
function setPadDisableByMenuId(menuId: String, disable: boolean):void
|
||
```
|
||
|
||
* 输入参数
|
||
* menuId,string 类型,要更改的手持端任务按钮的menuId
|
||
* disable,布尔类型,手持端按钮是否设置为禁用
|
||
* 输出参数
|
||
|
||
本方法输出参数为空。
|
||
* 异常
|
||
|
||
本方法抛出异常。
|
||
|
||
## 多线程及时间
|
||
|
||
#### 休眠指定时间
|
||
|
||
* 方法说明
|
||
|
||
本方法是阻塞方法,使当前线程休眠指定时间。
|
||
|
||
```
|
||
function sleep(ms: number): void
|
||
```
|
||
|
||
* 输入参数
|
||
* ms,number 类型,休眠的时间,单位毫秒。
|
||
* 输出参数
|
||
|
||
本方法输出参数为空。
|
||
* 异常
|
||
|
||
本方法不抛出异常。
|
||
|
||
#### 获取当前系统时间戳
|
||
|
||
* 方法说明
|
||
|
||
获取当前的系统时间戳。
|
||
|
||
```
|
||
function currentTimeMillis(): number
|
||
```
|
||
|
||
* 输入参数
|
||
无
|
||
* 输出参数
|
||
number 类型,当前系统的毫秒时间戳。
|
||
|
||
#### 获取当前时间
|
||
|
||
* 方法说明
|
||
|
||
获取当前系统的格式化时间。
|
||
|
||
```
|
||
function nowDate(): string
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
无
|
||
* 输出参数
|
||
|
||
字符串:按照 `yyyy-MM-dd HH:mm:ss` 格式。
|
||
* 异常
|
||
|
||
本方法不抛出异常。
|
||
|
||
#### 将时间戳转为日期格式
|
||
|
||
* 方法说明
|
||
|
||
将时间戳转为格式化的日期时间。
|
||
|
||
```
|
||
function timeMillisFormat(time: number): string
|
||
```
|
||
|
||
* 输入参数
|
||
* time,number 类型,当前毫秒时间戳。
|
||
* 输出参数
|
||
|
||
字符串:按照 `yyyy-MM-dd HH:mm:ss` 格式。
|
||
* 异常
|
||
|
||
本方法会抛出异常。
|
||
|
||
## HTTP 请求
|
||
|
||
#### 发送 POST 请求,参数为 JSON 格式
|
||
|
||
* 方法说明
|
||
|
||
本方法是阻塞方法,发送 POST 请求,参数为 JSON 格式。
|
||
|
||
```
|
||
function requestPost(url: string, param: string): string
|
||
```
|
||
|
||
* 输入参数
|
||
* url,string 类型,请求的 URL。
|
||
* param,string 类型,JSON 字符串,请求的参数。
|
||
* 输出参数
|
||
* 若请求成功:返回响应的 JSON 字符串。
|
||
* 若请求失败:null。
|
||
* 异常
|
||
|
||
本方法会不抛出异常。
|
||
|
||
#### 发送 POST 请求,参数为 XML 格式
|
||
|
||
* 方法说明
|
||
|
||
本方法是阻塞方法,发送 POST 请求,参数为 XML格式。在本方法中会自动将传入的 JSON 格式字符串转化为 XML 格式
|
||
|
||
```
|
||
function requestPostXml(url: string, param: string): string
|
||
```
|
||
|
||
* 输入参数
|
||
* url,string 类型,请求的 URL。
|
||
* param,string 类型,JSON 字符串,请求的参数。
|
||
* 输出参数
|
||
* 若请求成功:将响应的 XML 格式 字符串 转化为 JSON 格式并返回。
|
||
* 若请求失败:null。
|
||
* 异常
|
||
|
||
本方法会不抛出异常。
|
||
|
||
#### 发送 PUT请求,参数为 JSON 格式
|
||
|
||
* 方法说明
|
||
|
||
本方法是阻塞方法,发送 PUT请求,参数为 JSON 格式。
|
||
|
||
```
|
||
function requestPutJson(url: string, param: string): string
|
||
```
|
||
|
||
* 输入参数
|
||
* url,string 类型,请求的 URL。
|
||
* param,string 类型,JSON 字符串,请求的参数。
|
||
* 输出参数
|
||
* 若请求成功:返回响应的 JSON 字符串。
|
||
* 若请求失败:null。
|
||
* 异常
|
||
|
||
本方法会不抛出异常。
|
||
|
||
#### 发送 GET 请求
|
||
|
||
* 方法说明
|
||
|
||
本方法是阻塞方法,发送 GET 请求。
|
||
|
||
```
|
||
function requestGet(url: string): string
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
url,string 类型,请求的 URL。
|
||
* 输出参数
|
||
* 若请求成功:请求返回的字符串。
|
||
* 若请求失败:null。
|
||
* 异常
|
||
|
||
本方法会不抛出异常。
|
||
|
||
#### 设置请求头
|
||
|
||
* 方法说明
|
||
|
||
本方法是阻塞方法,设置请求头,设置一次之后,对所有请求都有效。
|
||
|
||
```
|
||
function setHeader(key: string, value: string): void
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
key,string 类型,请求头的key。
|
||
|
||
value,string 类型,请求头的value。
|
||
* 输出参数
|
||
|
||
无
|
||
|
||
#### 发送 POST 请求
|
||
|
||
* 方法说明
|
||
|
||
本方法是阻塞方法,发送 `POST` 请求,参数为 `JSON` 格式。可设置请求媒体(`MediaType`),可设置请求头
|
||
|
||
```
|
||
function requestHttpPost(url: String, param: String, headParam: String, mediaType: String):String
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
url: 请求的 URL
|
||
|
||
param: 请求的入参 json 字符串
|
||
|
||
headParam: 请求头,如有传 json 字符串,无传空字符串
|
||
|
||
mediaType:请求类型默认 application/json,可有如下选择 `JSON`、`JAVASCRIPT`、`HTML`、`XML`、`XWWWFORMURLENCODED` 分别表示:`application/json`、`application/javascript`、`text/html`、`application/xml`、`application/x-www-form-urlencoded`
|
||
* 输出参数
|
||
|
||
成功返回 json 字符串,失败返回 null
|
||
|
||
注意:setHeader 设置对此方法也有效
|
||
|
||
#### 发送 GET 请求
|
||
|
||
* 方法说明
|
||
|
||
本方法是阻塞方法,发送 `GET` 请求,参数为 `JSON` 格式。可设置请求头
|
||
|
||
```
|
||
function requestHttpGet(url: String, headParam: String):String
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
url: 请求的 URL
|
||
|
||
headParam: 请求头,如有传 json 字符串,无传空字符串
|
||
* 输出参数
|
||
|
||
成功返回 json 字符串,失败返回 null
|
||
|
||
注意:setHeader 设置对此方法也有效
|
||
|
||
#### 发送 PUT 请求
|
||
|
||
* 方法说明
|
||
|
||
本方法是阻塞方法,发送 `PUT` 请求,参数为 `JSON` 格式。可设置请求媒体(`MediaType`),可设置请求头
|
||
|
||
```
|
||
function requestHttpPut(url: String, headParam: String, mediaType: String, param: String)
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
url: 请求的 URL
|
||
|
||
headParam: 请求头,如有传 json 字符串,无传空字符串
|
||
|
||
mediaType:请求类型默认 application/json,可有如下选择 `JSON`、`JAVASCRIPT`、`HTML`、`XML`、`XWWWFORMURLENCODED` 分别表示:`application/json`、`application/javascript`、`text/html`、`application/xml`、`application/x-www-form-urlencoded`
|
||
|
||
param: 请求的入参 json 字符串
|
||
* 输出参数
|
||
|
||
成功返回 json 字符串,失败返回 null
|
||
|
||
注意:setHeader 设置对此方法也有效
|
||
|
||
## 日志记录
|
||
|
||
#### 获取日志打印对象
|
||
|
||
* 方法说明
|
||
|
||
获取日志打印对象,可用于将指定信息打印进日志文件。
|
||
|
||
```
|
||
function getLogger(): Logger
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
无
|
||
* 输出参数是日志对象,定义如下:
|
||
|
||
```
|
||
interface Logger {
|
||
info: (message: string) => void;
|
||
debug: (message: string) => void;
|
||
warn: (message: string) => void;
|
||
error: (message: string, e: any) => void;
|
||
}
|
||
```
|
||
|
||
调用方法:
|
||
|
||
```
|
||
jj.getLogger().info("hello world");
|
||
jj.getLogger().error("there is an error.", "");
|
||
```
|
||
|
||
使用以上方法,可在日志文件中打印指定记录。
|
||
|
||
* 异常
|
||
|
||
本方法会抛出异常。
|
||
|
||
#### 在脚本页面下打印日志
|
||
|
||
* 方法说明
|
||
|
||
在 RDS 脚本页面下,打印日志信息。
|
||
|
||
```
|
||
function scriptLog(level: string, functionName: string, content: any): void
|
||
```
|
||
|
||
* 输入参数
|
||
* level,string 类型,日志等级,可选 “INFO”,“ERROR”。
|
||
* functionName,string 类型,一般填入所在函数的签名,用于快速定位信息。
|
||
* content,any 类型,日志信息。
|
||
* 输出参数
|
||
|
||
无
|
||
* 异常
|
||
|
||
本方法会抛出异常。
|
||
|
||
## 注册方法
|
||
|
||
**以下方法,需要在 boot() 函数中调用。**
|
||
|
||
#### 定时执行脚本方法
|
||
|
||
*需求:脚本方法能传参。*
|
||
|
||
* 方法说明
|
||
|
||
将脚本方法设置为定时执行。
|
||
|
||
**注意,该方法需要在 boot() 方法中调用。**
|
||
|
||
```
|
||
function defineScheduledFunctions(isParallel: boolean, delay: number, period: number, functionName: string, args: any[]): void
|
||
```
|
||
|
||
* 输入参数
|
||
* isParallel:boolean 类型,是否并行。
|
||
* delay:number 类型,启动延迟执行的时间,单位毫秒。
|
||
* period:number类型,脚本方法的周期,单位毫秒。
|
||
* functionName:string 类型,周期执行的方法名。
|
||
* args:周期执行的方法的参数。
|
||
* 输出参数
|
||
|
||
无
|
||
|
||
* 异常
|
||
|
||
本方法会抛出异常。
|
||
|
||
#### 注册系统启动初始化方法
|
||
|
||
* 方法说明
|
||
|
||
注册系统启动即执行的初始化方法。
|
||
|
||
```
|
||
function defineInitDataFunctions(functionName:string):void
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
functionName:注册的方法名。
|
||
* 输出参数
|
||
|
||
无
|
||
|
||
* 异常
|
||
|
||
本方法会抛出异常。
|
||
|
||
#### 注册按钮
|
||
|
||
* 方法说明
|
||
|
||
向rds注册管理后台可见的按钮。
|
||
|
||
```
|
||
function registerButton(label: string, remark: string, scriptFunction: string, level: string, type: Number): void
|
||
```
|
||
|
||
* 输入参数
|
||
* label,string 类型,按钮名。
|
||
* remark,string 类型,按钮备注。
|
||
* scriptFunction,string 类型,点击按钮触发的方法名,**注意该方法不能带参数**。
|
||
* level,string 类型,按钮等级,用颜色区分。blue:蓝色,yellow:黄色 ,red:红色。
|
||
* type,Number类型,0: 普通按钮 1: 导出按钮,可选
|
||
* 输出参数
|
||
|
||
无
|
||
|
||
* 异常
|
||
|
||
本方法会抛出异常。
|
||
|
||
#### 注册 Web 接口方法
|
||
|
||
* 方法说明
|
||
|
||
在脚本中注册接口方法。
|
||
|
||
```
|
||
function registerHandler(method: string, path: string, callback: string, auth: boolean): void
|
||
```
|
||
|
||
* 输入参数
|
||
* method:HTTP 请求方式,支持 POST,GET。
|
||
* path:接口的 URL 路径。
|
||
* callback:处理接口的脚本方法名。
|
||
* auth:调用此接口是否需要登录。
|
||
* 输出参数
|
||
|
||
无
|
||
|
||
* 异常
|
||
|
||
本方法会抛出异常。
|
||
|
||
#### 注册事件处理器
|
||
|
||
* 方法说明
|
||
|
||
注册事件处理器,可处理天风任务“触发任务事件”块所抛出的事件。
|
||
|
||
```
|
||
function registerTaskEventFunction(functionName: string): void
|
||
```
|
||
|
||
* 输入参数
|
||
* functionName:注册的方法名。
|
||
* 输出参数
|
||
|
||
无
|
||
|
||
* **注意事项**
|
||
|
||
**若希望处理“触发任务事件”块抛出的事件,需要:**
|
||
* **在脚本中实现与“触发任务事件”块的“事件名”参数同名的函数。**
|
||
* **脚本函数的签名为:**
|
||
|
||
```
|
||
function functionName(param: string): void
|
||
```
|
||
* **在 boot() 方法中,调用 registerTaskEventFunction 方法将脚本函数注册为事件处理器。**
|
||
* 异常
|
||
|
||
本方法会抛出异常。
|
||
|
||
## 业务配置
|
||
|
||
#### 获取 application-biz.yml 的配置
|
||
|
||
* 方法说明
|
||
|
||
获取 application-biz.yml 的配置。
|
||
|
||
```
|
||
function getApplicationBusinessConfigValue(key: string): string
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
key,string 类型,是 application-biz.yml 中所要获取配置的字段名。
|
||
* 输出参数
|
||
|
||
JSON 字符串。
|
||
* 异常
|
||
|
||
无
|
||
|
||
## 数据库
|
||
|
||
#### 执行 SQL 语句
|
||
|
||
* 方法说明
|
||
|
||
通过 SQL 命令操作 RDS 系统数据库,可用于创建自定义数据表。
|
||
|
||
```
|
||
function jdbcExecuteSql(sql: string): Boolean
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
sql:string 类型,创建表的 SQL 语句。示例如下:
|
||
|
||
```
|
||
CREATE TABLE `test` (`id` bigint NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8mb4
|
||
```
|
||
|
||
* 输出参数:
|
||
* true, SQL 命令执行成功。
|
||
* false, SQL 命令执行失败。
|
||
* 异常
|
||
|
||
本方法不抛出异常,方法内捕获到异常后,按执行失败的信息返回处理。
|
||
|
||
#### 使用 SQL 查询数据
|
||
|
||
* 方法说明
|
||
|
||
本方法可以使用自定义的 SQL 查询数据,并返回指定字段。
|
||
|
||
```
|
||
function jdbcQuery(sql: string): string
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
sql:string 类型,SQL 语句。
|
||
* 输出参数是 JSON 格式的字符串。
|
||
|
||
假设查询 sql 参数为:sql="select id, name, age from person\_table"
|
||
|
||
则返回的结果,经 JSON 反序列化后,数据如下:
|
||
|
||
```
|
||
[
|
||
{
|
||
"id": "1",
|
||
"name": "lilei",
|
||
"age": 14
|
||
}
|
||
]
|
||
```
|
||
|
||
* 异常
|
||
|
||
本方法不抛出异常。
|
||
|
||
#### 更新数据
|
||
|
||
* 方法说明
|
||
|
||
更新数据记录。更新内容和目标条件,都支持动态扩展,即可执行动态拼接的 SQL 语句。
|
||
|
||
```
|
||
function jdbcInsertOrUpdate(sql: string, ...sqlParams: any): number
|
||
```
|
||
|
||
* 输入参数
|
||
* sql,string 类型,SQL 语句字符串。
|
||
* sqlParams,any 类型,可动态扩展的参数。
|
||
* 输出参数
|
||
|
||
number 类型:0 表示更新失败,大于 0 的数字表示更新的记录数目。
|
||
* 使用示例:
|
||
|
||
```
|
||
const sql = "update employee set age = 25 where name = ? and id = ?"
|
||
jj.jdbcInsertOrUpdate(sql, "bob", 123)
|
||
```
|
||
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### 查询数据数量
|
||
|
||
* 方法说明
|
||
|
||
执行一条自定义 SQL 语句,以查询满足条件数据的数量。
|
||
|
||
```
|
||
function jdbcQueryCount(sql: string): number | null
|
||
```
|
||
|
||
* 输入参数
|
||
* sql,string 类型,SQL 语句字符串。**注意,只能使用 select count 语句。**
|
||
|
||
```
|
||
select count(1) from person where age = 20
|
||
```
|
||
* 输出参数
|
||
|
||
number 类型,null 表示查询失败,其他数字表示查询到的记录数目。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
## Modbus Tcp
|
||
|
||
#### Func01 读取线圈量
|
||
|
||
* 方法说明
|
||
|
||
Modbus 读取线圈量,功能码 01。
|
||
|
||
```
|
||
function readCoilStatus(ip: string, port: number, slaveId: number, offset: number): boolean | null
|
||
```
|
||
|
||
* 输入参数
|
||
* ip,string 类型,从机 IP。
|
||
* port,number 类型,从机端口。
|
||
* slaveId,number 类型,从机 slave ID。
|
||
* offset,number 类型,Modbus 地址。
|
||
* 输出参数
|
||
* null,读取失败。
|
||
* boolean,读取成功的返回值。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### Func02 读取线圈量
|
||
|
||
* 方法说明
|
||
|
||
Modbus 读取线圈量,功能码 02。
|
||
|
||
```
|
||
function readInputStatus(ip: string, port: number, slaveId: number, offset: number): boolean | null
|
||
```
|
||
|
||
* 输入参数
|
||
* ip,string 类型,从机 IP。
|
||
* port,number 类型,从机端口。
|
||
* slaveId,number 类型,从机 slave ID。
|
||
* offset,number 类型,Modbus 地址。
|
||
* 输出参数
|
||
* null,读取失败。
|
||
* boolean,读取成功的返回值。
|
||
* 异常
|
||
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### Func03 读取保持寄存器
|
||
|
||
* 方法说明
|
||
|
||
Modbus 读取保持寄存器,功能码 03。
|
||
|
||
```
|
||
function readHoldingRegister(ip: string, port: number, slaveId: number, offset: number, dataType: number): number | null
|
||
```
|
||
|
||
* 输入参数
|
||
* ip,string 类型,从机 IP。
|
||
* port,number 类型,从机端口。
|
||
* slaveId,number 类型,从机 slave ID。
|
||
* offset,number 类型,Modbus 地址。
|
||
* dataType,number 类型,2:无符号整形,3:有符号整形。
|
||
* 输出参数
|
||
* null,读取失败。
|
||
* number,读取成功的返回值。
|
||
* 异常
|
||
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### Func04 读取输入寄存器
|
||
|
||
* 方法说明
|
||
|
||
Modbus 读取只读输入寄存器,功能码 04。
|
||
|
||
```
|
||
function readInputRegister(ip: string, port: number, slaveId: number, offset: number, dataType: number): number | null
|
||
```
|
||
|
||
* 输入参数
|
||
* ip,string 类型,从机 IP。
|
||
* port,number 类型,从机端口。
|
||
* slaveId,number 类型,从机 slave ID。
|
||
* offset,number 类型,Modbus 地址。
|
||
* dataType,number 类型,2:无符号整形,3:有符号整形。
|
||
* 输出参数
|
||
* null,读取失败。
|
||
* number,读取成功的返回值。
|
||
* 异常
|
||
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### Func01 批量读取线圈量
|
||
|
||
* 方法说明
|
||
|
||
Modbus 读取线圈量多个连续地址值,并以数组的形式返回其中的值,功能码 01。
|
||
|
||
```
|
||
function batchReadCoilStatus(ip: string, port: number, slaveId: number, offset: number, len: number): Array<boolean> | null
|
||
```
|
||
|
||
* 输入参数
|
||
* ip,string 类型,从机 IP。
|
||
* port,number 类型,从机端口。
|
||
* slaveId,number 类型,从机 slave ID。
|
||
* offset,number 类型,Modbus 首地址。
|
||
* len,number 类型,Modbus 地址数量。
|
||
* 输出参数
|
||
* null,读取失败。
|
||
* Array,读取成功后,返回结果数组。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### Func02 批量读取离散输入
|
||
|
||
* 方法说明
|
||
|
||
Modbus 读取离散输入多个连续地址值,并以数组的形式返回其中的值,功能码 02。
|
||
|
||
```
|
||
function batchReadInputStatus(ip: string, port: number, slaveId: number, offset: number, len: number): Array<boolean> | null
|
||
```
|
||
|
||
* 输入参数
|
||
* ip,string 类型,从机 IP。
|
||
* port,number 类型,从机端口。
|
||
* slaveId,number 类型,从机 slave ID。
|
||
* offset,number 类型,Modbus 首地址。
|
||
* len,number 类型,Modbus 地址数量。
|
||
* 输出参数
|
||
* null,读取失败。
|
||
* Array,读取成功后,返回结果数组。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### Func03 批量读取保持寄存器
|
||
|
||
* 方法说明
|
||
|
||
Modbus 读取保持寄存器多个连续地址值,并以数组的形式返回其中的值,功能码 03。
|
||
|
||
```
|
||
function batchReadHoldingRegisters(ip: string, port: number, slaveId: number, offset: number, len: number): Array<number> | null
|
||
```
|
||
|
||
* 输入参数
|
||
* ip,string 类型,从机 IP。
|
||
* port,number 类型,从机端口。
|
||
* slaveId,number 类型,从机 slave ID。
|
||
* offset,number 类型,Modbus 首地址。
|
||
* len,number 类型,Modbus 地址数量。
|
||
* 输出参数
|
||
* null,读取失败。
|
||
* Array,读取成功后,返回结果数组。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### Func04 批量读取输入寄存器
|
||
|
||
* 方法说明
|
||
|
||
Modbus 读取输入寄存器多个连续地址值,并以数组的形式返回其中的值,功能码 04。
|
||
|
||
```
|
||
function batchReadInputRegisters(ip: string, port: number, slaveId: number, offset: number, len: number): Array<number> | null
|
||
```
|
||
|
||
* 输入参数
|
||
* ip,string 类型,从机 IP。
|
||
* port,number 类型,从机端口。
|
||
* slaveId,number 类型,从机 slave ID。
|
||
* offset,number 类型,Modbus 首地址。
|
||
* len,number 类型,Modbus 地址数量。
|
||
* 输出参数
|
||
* null,读取失败。
|
||
* Array,读取成功后,返回结果数组。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### Func05 写入线圈量
|
||
|
||
* 方法说明
|
||
|
||
Modbus 写入线圈量,功能码 05。
|
||
|
||
```
|
||
function writeCoilStatus(ip: string, port: number, slaveId: number, offset: number, value: boolean): boolean
|
||
```
|
||
|
||
* 输入参数
|
||
* ip,string 类型,从机 IP。
|
||
* port,number 类型,从机端口。
|
||
* slaveId,number 类型,从机 slave ID。
|
||
* offset,number 类型,Modbus 地址。
|
||
* value,boolean 类型,写入的值。
|
||
* 输出参数
|
||
* true,写入成功。
|
||
* false,写入失败。
|
||
* 异常
|
||
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### Func06 写入保持寄存器
|
||
|
||
* 方法说明
|
||
|
||
Modbus 写入保持寄存器,功能码 06。
|
||
|
||
```
|
||
function writeHoldingRegister(ip: string, port: number, slaveId: number, offset: number, dataType: number, value: number): boolean
|
||
```
|
||
|
||
* 输入参数
|
||
* ip,string 类型,从机 IP。
|
||
* port,number 类型,从机端口。
|
||
* slaveId,number 类型,从机 slave ID。
|
||
* offset,number 类型,Modbus 地址。
|
||
* dataType,number 类型,2:无符号整形,3:有符号整形。
|
||
* value,number 类型,写入的值。
|
||
* 输出参数
|
||
* true,写入成功。
|
||
* false,写入失败。
|
||
* 异常
|
||
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### Func0f 批量写入线圈量
|
||
|
||
* 方法说明
|
||
|
||
Modbus 写入线圈量多个连续地址,功能码 0f。
|
||
|
||
```
|
||
function batchWriteCoilStatus(ip: string, port: number, slaveId: number, offset: number, value: Array<boolean>): boolean
|
||
```
|
||
|
||
* 输入参数
|
||
* ip,string 类型,从机 IP。
|
||
* port,number 类型,从机端口。
|
||
* slaveId,number 类型,从机 slave ID。
|
||
* offset,number 类型,Modbus 地址。
|
||
* value,boolean 数组类型,多个需写入的值。
|
||
* 输出参数
|
||
* true,写入成功。
|
||
* false,写入失败。
|
||
* 异常
|
||
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### Func10 批量写入保持寄存器
|
||
|
||
* 方法说明
|
||
|
||
Modbus 写入保持寄存器多个连续地址,功能码 10。
|
||
|
||
```
|
||
function batchWriteHoldingRegister(ip: string, port: number, slaveId: number, offset: number, value: Array<number>): boolean
|
||
```
|
||
|
||
* 输入参数
|
||
* ip,string 类型,从机 IP。
|
||
* port,number 类型,从机端口。
|
||
* slaveId,number 类型,从机 slave ID。
|
||
* offset,number 类型,Modbus 地址。
|
||
* value,number 数组类型,多个需写入的值。
|
||
* 输出参数
|
||
* true,写入成功。
|
||
* false,写入失败。
|
||
* 异常
|
||
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### 通用写入单个地址
|
||
|
||
* 方法说明
|
||
|
||
Modbus 写入单个地址,通过参数 type 指定读取的地址类型。
|
||
|
||
```
|
||
function writeSingleModbusValue(ip: string, port: number, slaveId: number, type: string, offset: number, value: number): boolean
|
||
```
|
||
|
||
* 输入参数
|
||
* ip,string 类型,从机 IP。
|
||
* port,number 类型,从机端口。
|
||
* slaveId,number 类型,从机 slave ID。
|
||
* type,string类型,表示地址类型,可选择‘0x’,‘1x’,‘3x’,‘4x’,和功能码的对应关系如下:
|
||
|
||
0x:对应功能码0x01,表示读线圈。
|
||
1x:对应功能码0x02,表示读离散输入。
|
||
3x:对应功能码0x04,表示读输入寄存器。
|
||
4x:对应功能码0x03,表示读保持寄存器。
|
||
* offset,number 类型,表示Modbus 地址。
|
||
* value,number 类型,表示写入的值。
|
||
* 输出参数
|
||
* true,写入成功。
|
||
* false,写入失败。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### 通用写入多个地址
|
||
|
||
* 方法说明
|
||
|
||
Modbus 写入单个地址,通过参数 type 指定读取的地址类型。
|
||
|
||
```
|
||
function writeBatchModbusValue(ip: string, port: number, slaveId: number, type: string, offset: number, values: number[]): boolean
|
||
```
|
||
|
||
* 输入参数
|
||
* ip,string 类型,从机 IP。
|
||
* port,number 类型,从机端口。
|
||
* slaveId,number 类型,从机 slave ID。
|
||
* type,string类型,表示地址类型,可选择‘0x’,‘1x’,‘3x’,‘4x’,和功能码的对应关系如下:
|
||
|
||
0x:对应功能码0x01,表示读线圈。
|
||
1x:对应功能码0x02,表示读离散输入。
|
||
3x:对应功能码0x04,表示读输入寄存器。
|
||
4x:对应功能码0x03,表示读保持寄存器。
|
||
* offset,number 类型,表示Modbus 地址。
|
||
* values,number 数组类型,表示写入的值。
|
||
* 输出参数
|
||
* true,写入成功。
|
||
* false,写入失败。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### 通过实例名称写入单个地址
|
||
|
||
* 方法说明
|
||
|
||
Modbus 写入单个地址,通过参数 name 指定已经配置的实例名称。
|
||
|
||
```
|
||
function writeSingleModbusValueByInstanceName(name: string, offset: number, value: number): boolean
|
||
```
|
||
|
||
* 输入参数
|
||
* name,string 类型,已经配置的实例名称。
|
||
* offset,number 类型,表示 Modbus 地址。
|
||
* value,number 类型,表示写入的值。
|
||
* 输出参数
|
||
* true,写入成功。
|
||
* false,写入失败。
|
||
* 异常
|
||
如果没有配置 modbus 实例,则会抛出初始化异常。
|
||
|
||
#### 通过实例名称写入多个地址
|
||
|
||
* 方法说明
|
||
|
||
Modbus 写入多个地址,通过参数 name 指定已经配置的实例名称。
|
||
|
||
```
|
||
function writeBatchModbusValueByInstanceName(name: string, offset: number, values: number[]): boolean
|
||
```
|
||
|
||
* 输入参数
|
||
* name,string 类型,已经配置的实例名称。
|
||
* offset,number 类型,表示 Modbus 地址。
|
||
* values,number 数组类型,表示写入的值。
|
||
* 输出参数
|
||
* true,写入成功。
|
||
* false,写入失败。
|
||
* 异常
|
||
如果没有配置 modbus 实例,则会抛出初始化异常。
|
||
|
||
#### 通用读取单个地址
|
||
|
||
* 方法说明
|
||
|
||
Modbus 读取单个地址,通过参数 type 指定读取的地址类型。
|
||
|
||
```
|
||
function readSingleModbusValue(ip: string, port: number, slaveId: number, type: string, offset: number): number | null
|
||
```
|
||
|
||
* 输入参数
|
||
* ip,string 类型,从机 IP。
|
||
* port,number 类型,从机端口。
|
||
* slaveId,number 类型,从机 slave ID。
|
||
* type,string类型,表示地址类型,可选择‘0x’,‘1x’,‘3x’,‘4x’,和功能码的对应关系如下:
|
||
|
||
0x:对应功能码0x01,表示读线圈。
|
||
1x:对应功能码0x02,表示读离散输入。
|
||
3x:对应功能码0x04,表示读输入寄存器。
|
||
4x:对应功能码0x03,表示读保持寄存器。
|
||
* offset,number 类型,Modbus 地址。
|
||
* 输出参数
|
||
* null,读取失败。
|
||
* number,读取成功的返回值。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### 通用读取多个地址
|
||
|
||
* 方法说明
|
||
|
||
Modbus 读取多个地址,通过参数 name 指定已经配置的实例名称。
|
||
|
||
```
|
||
function readBatchModbusValue(ip: string, port: number, slaveId: number, type: string, offset: number, length: number): number[] | null
|
||
```
|
||
|
||
* 输入参数
|
||
* ip: string 类型,从机 IP。
|
||
* port: number 类型,从机端口。
|
||
* slaveId: number 类型,从机 slave ID。
|
||
* type: string类型,表示地址类型,可选择‘0x’,‘1x’,‘3x’,‘4x’,和功能码的对应关系如下:
|
||
|
||
0x:对应功能码0x01,表示读线圈。
|
||
1x:对应功能码0x02,表示读离散输入。
|
||
3x:对应功能码0x04,表示读输入寄存器。
|
||
4x:对应功能码0x03,表示读保持寄存器。
|
||
* offset: number 类型,Modbus 地址。
|
||
* length: number 类型,读取的数据长度。
|
||
* 输出参数
|
||
* null: 读取失败。
|
||
* number[]: 读取成功的返回值数组。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### 通过实例名称读取单个地址
|
||
|
||
* 方法说明
|
||
|
||
Modbus 读取单个地址,通过参数 name 指定已经配置的实例名称。
|
||
|
||
```
|
||
function readSingleModbusValueByInstanceName(name: string, offset: number): number | null
|
||
```
|
||
|
||
* 输入参数
|
||
* name: string 类型,配置的唯一实例名称。
|
||
* offset: number 类型,Modbus 地址。
|
||
* 输出参数
|
||
* null: 读取失败。
|
||
* number: 读取成功的返回值。
|
||
* 异常
|
||
如果没有配置 modbus 实例,则会抛出初始化异常。
|
||
|
||
#### 通过实例名称读取多个地址
|
||
|
||
* 方法说明
|
||
|
||
Modbus 读取多个地址,通过参数 name 指定已经配置的实例名称。
|
||
|
||
```
|
||
function readBatchModbusValueByInstanceName(name: string, offset: number, length: number): number[] | null
|
||
```
|
||
|
||
* 输入参数
|
||
* name: string 类型,配置的唯一实例名称。
|
||
* offset: number 类型,Modbus 地址。
|
||
* length: number 类型,读取的数据长度。
|
||
* 输出参数
|
||
* null: 读取失败。
|
||
* number[]: 读取成功的返回值。
|
||
* 异常
|
||
如果没有配置 modbus 实例,则会抛出初始化异常。
|
||
|
||
## OPC-UA
|
||
|
||
#### OPC 读取数值
|
||
|
||
* 方法说明
|
||
|
||
读取 OPC server 中的某个地址位的值。
|
||
|
||
```
|
||
function readOpcValue(address: string | number): any
|
||
```
|
||
|
||
* 输入参数
|
||
* address,string 类型,读取的地址位。
|
||
* 输出参数
|
||
* 读到的值。
|
||
* 异常
|
||
|
||
读取失败会抛出 RuntimeException 异常 “readOpcValue error”。
|
||
* 方法说明
|
||
|
||
```
|
||
function readOpcValue(namespaceIndex:number, address: string | number): any
|
||
```
|
||
|
||
* 输入参数
|
||
* namespaceIndex, number类型,命名空间索引
|
||
* address,string 类型,读取的地址位。地址类型 g=550e8400-e29b-41d4-a716-446655440000: g= 表示地址类型是 UUID;i=1008: i= 表示地址类型是 number;b=EAk=: b= 表示地址类型是 Opaque;s=1009: s= 表示地址类型是字符串
|
||
* 输出参数
|
||
* 读到的值。
|
||
* 异常
|
||
|
||
读取失败会抛出 RuntimeException 异常 “readOpcValue error”。
|
||
|
||
#### OPC 订阅方式读取数值
|
||
|
||
* 方法说明
|
||
|
||
通过订阅的方式,读取 OPC server 中的某个地址位的值。
|
||
|
||
```
|
||
function readOpcValueBySubscription(namespaceIndex: number, address: string): any
|
||
```
|
||
|
||
* 输入参数
|
||
* namespaceIndex,number 类型,命名空间索引。
|
||
* address,string 类型,读取的地址位。地址类型 g=550e8400-e29b-41d4-a716-446655440000: g= 表示地址类型是 UUID;i=1008: i= 表示地址类型是 number;b=EAk=: b= 表示地址类型是 Opaque;s=1009: s= 表示地址类型是字符串
|
||
* 输出参数
|
||
* 读到的值。
|
||
* 异常
|
||
|
||
读取失败会抛出 RuntimeException 异常 “readOpcValue error”。
|
||
|
||
#### OPC 写入数值
|
||
|
||
* 方法说明
|
||
|
||
读取 OPC server 中的某个地址位的值。
|
||
|
||
```
|
||
function writeOpcValue(address: string | number, value: any): boolean
|
||
```
|
||
|
||
* 输入参数
|
||
* address,string 类型,表示写入的地址。
|
||
* value,any 类型, 写入的值。
|
||
* 输出参数
|
||
|
||
成功返回 true,失败返回 false。
|
||
* 异常
|
||
|
||
本方法不抛出异常。
|
||
* 方法说明
|
||
|
||
读取 OPC server 中的某个地址位的值。
|
||
|
||
```
|
||
function writeOpcValue(namespaceIndex: number,address: string | number, value: any): boolean
|
||
```
|
||
|
||
* 输入参数
|
||
* number类型,命名空间索引
|
||
* address,string 类型,表示写入的地址。地址类型 g=550e8400-e29b-41d4-a716-446655440000: g= 表示地址类型是 UUID;i=1008: i= 表示地址类型是 number;b=EAk=: b= 表示地址类型是 Opaque;s=1009: s= 表示地址类型是字符串
|
||
* value,any 类型, 写入的值。
|
||
* 输出参数
|
||
|
||
成功返回 true,失败返回 false。
|
||
* 异常
|
||
|
||
本方法不抛出异常。
|
||
|
||
## Melsec
|
||
|
||
#### Melsec 读取 boolean
|
||
|
||
* 方法说明
|
||
|
||
Melsec 读取 boolean。
|
||
|
||
```
|
||
function readMelsecBoolean(ip: string, port: string, address: string): boolean | null
|
||
```
|
||
|
||
* 输入参数
|
||
* ip,string 类型,从机 IP。
|
||
* port,number 类型,从机端口。
|
||
* address,string 类型,读取的地址位。
|
||
* 输出参数
|
||
* null,读取失败。
|
||
* boolean,读取成功的返回值。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### Melsec 读取 number
|
||
|
||
* 方法说明
|
||
|
||
Melsec 读取 number。
|
||
|
||
```
|
||
function readMelsecNumber(ip: string, port: string, address: string): number | null
|
||
```
|
||
|
||
* 输入参数
|
||
* ip,string 类型,从机 IP。
|
||
* port,number 类型,从机端口。
|
||
* address,string 类型,读取的地址位。
|
||
* 输出参数
|
||
* null,读取失败。
|
||
* number,读取成功的返回值。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### Melsec 读取 string
|
||
|
||
* 方法说明
|
||
|
||
Melsec 读取 string。
|
||
|
||
```
|
||
function readMelsecString(ip: string, port: string, address: string, length: number) : string | null
|
||
```
|
||
|
||
* 输入参数
|
||
* ip,string 类型,从机 IP。
|
||
* port,number 类型,从机端口。
|
||
* address,string 类型,读取的地址位。
|
||
* length,number 类型,读取的长度。
|
||
* 输出参数
|
||
* null,读取失败。
|
||
* string,读取成功的返回值。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### Melsec 写入 boolean
|
||
|
||
* 方法说明
|
||
|
||
Melsec 写入 boolean。
|
||
|
||
```
|
||
function writeMelsecBoolean(ip: string, port: string, address: string, value: boolean): void
|
||
```
|
||
|
||
* 输入参数
|
||
* ip,string 类型,从机 IP。
|
||
* port,number 类型,从机端口。
|
||
* address,string 类型,写入的地址位。
|
||
* value,boolean 类型,写入的值。
|
||
* 输出参数
|
||
* 成功返回 true,失败返回 false。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### Melsec 写入 number
|
||
|
||
* 方法说明
|
||
|
||
Melsec 写入 number。
|
||
|
||
```
|
||
function writeMelsecNumber(ip: string, port: string, address: string, value: number) : void
|
||
```
|
||
|
||
* 输入参数
|
||
* ip,string 类型,从机 IP。
|
||
* port,number 类型,从机端口。
|
||
* address,string 类型,写入的地址位。
|
||
* value,number 类型,写入的值。
|
||
* 输出参数
|
||
* 成功返回 true,失败返回 false。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### Melsec 写入 string
|
||
|
||
* 方法说明
|
||
|
||
Melsec 写入 string。
|
||
|
||
```
|
||
function writeMelsecString(ip: string, port: string, address: string, value: string) : void
|
||
```
|
||
|
||
* 输入参数
|
||
* ip,string 类型,从机 IP。
|
||
* port,number 类型,从机端口。
|
||
* address,string 类型,写入的地址位。
|
||
* value,string 类型,写入的值。
|
||
* 输出参数
|
||
* 成功返回 true,失败返回 false。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
## Fins
|
||
|
||
#### Fins 读取 string
|
||
|
||
* 方法说明
|
||
|
||
Fins 读取 string。
|
||
|
||
```
|
||
function readFinsString(ip: string, port: number, area: number, finsIoAddr: number, bitOffset: number, wordLength: number) : string
|
||
```
|
||
|
||
* 输入参数
|
||
* ip,string 类型,从机 IP。
|
||
* port,number 类型,从机端口。
|
||
* area,number 类型,读取的存储区域代码,16进制值如:(0x82) 。
|
||
* finsIoAddr,number 类型,读取的地址位 。
|
||
* bitOffset,number 类型,读取的偏移量 。
|
||
* wordLength,number 类型,读取的长度 。
|
||
* 输出参数
|
||
* null,读取失败。
|
||
* string,读取成功的返回值。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### Fins 读取 word
|
||
|
||
* 方法说明
|
||
|
||
Fins 读取 word。
|
||
|
||
```
|
||
function readFinsWord(ip: string, port: number, area: number, finsIoAddr: number, bitOffset: number) : number
|
||
```
|
||
|
||
* 输入参数
|
||
* ip,string 类型,从机 IP。
|
||
* port,number 类型,从机端口。
|
||
* area,number 类型,读取的存储区域代码,16进制值如:(0x82) 。
|
||
* finsIoAddr,number 类型,读取的地址位 。
|
||
* bitOffset,number 类型,读取的偏移量 。
|
||
* 输出参数
|
||
* null,读取失败。
|
||
* number,读取成功的返回值。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### Fins 读取 bit
|
||
|
||
* 方法说明
|
||
|
||
Fins 读取 bit。
|
||
|
||
```
|
||
function readFinsBit(ip: string, port: number, area: number, finsIoAddr: number, bitOffset: number) : number
|
||
```
|
||
|
||
* 输入参数
|
||
* ip,string 类型,从机 IP。
|
||
* port,number 类型,从机端口。
|
||
* area,number 类型,读取的存储区域代码,16进制值如:(0x82) 。
|
||
* finsIoAddr,number 类型,读取的地址位 。
|
||
* bitOffset,number 类型,读取的偏移量
|
||
* 输出参数
|
||
* null,读取失败。
|
||
* number,读取成功的返回值。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### Fins 写入 word
|
||
|
||
* 方法说明
|
||
|
||
Fins 写入 word。
|
||
|
||
```
|
||
function writeFinsWord(ip: string, port: number, area: number, finsIoAddr: number, bitOffset: number, value: number) : void
|
||
```
|
||
|
||
* 输入参数
|
||
* ip,string 类型,从机 IP。
|
||
* port,number 类型,从机端口。
|
||
* area,number 类型,写入的存储区域代码,16进制值如:(0x82) 。
|
||
* finsIoAddr,number 类型,写入的地址位 。
|
||
* bitOffset,number 类型,写入的偏移量 。
|
||
* value,number 类型,写入的值。
|
||
* 输出参数
|
||
* 该方法无输出参数。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### Fins 写入 bit
|
||
|
||
* 方法说明
|
||
|
||
Melsec 写入 string。
|
||
|
||
```
|
||
function writeFinsBit(ip: string, port: number, area: number, finsIoAddr: number, bitOffset: number, value: boolean) : void
|
||
```
|
||
|
||
* 输入参数
|
||
* ip,string 类型,从机 IP。
|
||
* port,number 类型,从机端口。
|
||
* area,number 类型,写入的存储区域代码,16进制值如:(0x82) 。
|
||
* finsIoAddr,number 类型,写入的地址位 。
|
||
* bitOffset,number 类型,写入的偏移量 。
|
||
* value,boolean类型,写入的值。
|
||
* 输出参数
|
||
* 该方法无输出参数。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
## S7
|
||
|
||
#### S7 读取 Int
|
||
|
||
* 方法说明
|
||
|
||
S7 读取 Int。
|
||
|
||
```
|
||
function readS7Int(type: string, ip: string, blockAndOffset: string): number;
|
||
```
|
||
|
||
* 输入参数
|
||
* type,string 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。
|
||
* ip,string 类型,PLC IP。
|
||
* blockAndOffset,string 类型,读取的地址,支持的区域取值示例如下(区分大小写):
|
||
|
||
| 地址名称 | 地址代号 | 示例 |
|
||
| --- | --- | --- |
|
||
| 中间寄存器 | M | M100,M200 |
|
||
| 输入寄存器 | I | I100,I200 |
|
||
| 输出寄存器 | Q | Q100,Q200 |
|
||
| DB块寄存器 | DB | DB1.100,DB1.200.7 |
|
||
| V寄存器 | V | V100,V200 |
|
||
| 定时器的值 | T | T100,T200 |
|
||
| 计数器的值 | C | C100,C200 |
|
||
| 智能输入寄存器 | AI | AI100,AI200 |
|
||
| 智能输出寄存器 | AQ | AQ100,AQ200 |
|
||
* 输出参数
|
||
* null,读取失败。
|
||
* number,读取成功的返回值。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### S7 读取 DInt
|
||
|
||
* 方法说明
|
||
|
||
S7 读取 DInt。
|
||
|
||
```
|
||
function readS7DInt(type: string, ip: string, blockAndOffset: string): number;
|
||
```
|
||
|
||
* 输入参数
|
||
* type,string 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。
|
||
* ip,string 类型,PLC IP。
|
||
* blockAndOffset,string 类型,读取的地址,支持的区域取值示例如下(区分大小写):
|
||
|
||
| 地址名称 | 地址代号 | 示例 |
|
||
| --- | --- | --- |
|
||
| 中间寄存器 | M | M100,M200 |
|
||
| 输入寄存器 | I | I100,I200 |
|
||
| 输出寄存器 | Q | Q100,Q200 |
|
||
| DB块寄存器 | DB | DB1.100,DB1.200.7 |
|
||
| V寄存器 | V | V100,V200 |
|
||
| 定时器的值 | T | T100,T200 |
|
||
| 计数器的值 | C | C100,C200 |
|
||
| 智能输入寄存器 | AI | AI100,AI200 |
|
||
| 智能输出寄存器 | AQ | AQ100,AQ200 |
|
||
* 输出参数
|
||
* null,读取失败。
|
||
* number,读取成功的返回值。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### S7 读取 Word
|
||
|
||
* 方法说明
|
||
|
||
S7 读取 Word。
|
||
|
||
```
|
||
function readS7Word(type: string, ip: string, blockAndOffset: string): number;
|
||
```
|
||
|
||
* 输入参数
|
||
* type,string 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。
|
||
* ip,string 类型,PLC IP。
|
||
* blockAndOffset,string 类型,读取的地址,支持的区域取值示例如下(区分大小写):
|
||
|
||
| 地址名称 | 地址代号 | 示例 |
|
||
| --- | --- | --- |
|
||
| 中间寄存器 | M | M100,M200 |
|
||
| 输入寄存器 | I | I100,I200 |
|
||
| 输出寄存器 | Q | Q100,Q200 |
|
||
| DB块寄存器 | DB | DB1.100,DB1.200.7 |
|
||
| V寄存器 | V | V100,V200 |
|
||
| 定时器的值 | T | T100,T200 |
|
||
| 计数器的值 | C | C100,C200 |
|
||
| 智能输入寄存器 | AI | AI100,AI200 |
|
||
| 智能输出寄存器 | AQ | AQ100,AQ200 |
|
||
* 输出参数
|
||
* null,读取失败。
|
||
* number,读取成功的返回值。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### S7 读取 DWord
|
||
|
||
* 方法说明
|
||
|
||
S7 读取 DWord。
|
||
|
||
```
|
||
function readS7DWord(type: string, ip: string, blockAndOffset: string): number;
|
||
```
|
||
|
||
* 输入参数
|
||
* type,string 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。
|
||
* ip,string 类型,PLC IP。
|
||
* blockAndOffset,string 类型,读取的地址,支持的区域取值示例如下(区分大小写):
|
||
|
||
| 地址名称 | 地址代号 | 示例 |
|
||
| --- | --- | --- |
|
||
| 中间寄存器 | M | M100,M200 |
|
||
| 输入寄存器 | I | I100,I200 |
|
||
| 输出寄存器 | Q | Q100,Q200 |
|
||
| DB块寄存器 | DB | DB1.100,DB1.200.7 |
|
||
| V寄存器 | V | V100,V200 |
|
||
| 定时器的值 | T | T100,T200 |
|
||
| 计数器的值 | C | C100,C200 |
|
||
| 智能输入寄存器 | AI | AI100,AI200 |
|
||
| 智能输出寄存器 | AQ | AQ100,AQ200 |
|
||
* 输出参数
|
||
* null,读取失败。
|
||
* number,读取成功的返回值。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### S7 读取 String
|
||
|
||
* 方法说明
|
||
|
||
S7 读取 String。
|
||
|
||
```
|
||
function readS7String(type: string, ip: string, blockAndOffset: string): string;
|
||
```
|
||
|
||
* 输入参数
|
||
* type,string 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。
|
||
* ip,string 类型,PLC IP。
|
||
* blockAndOffset,string 类型,读取的地址,支持的区域取值示例如下(区分大小写):
|
||
|
||
| 地址名称 | 地址代号 | 示例 |
|
||
| --- | --- | --- |
|
||
| 中间寄存器 | M | M100,M200 |
|
||
| 输入寄存器 | I | I100,I200 |
|
||
| 输出寄存器 | Q | Q100,Q200 |
|
||
| DB块寄存器 | DB | DB1.100,DB1.200.7 |
|
||
| V寄存器 | V | V100,V200 |
|
||
| 定时器的值 | T | T100,T200 |
|
||
| 计数器的值 | C | C100,C200 |
|
||
| 智能输入寄存器 | AI | AI100,AI200 |
|
||
| 智能输出寄存器 | AQ | AQ100,AQ200 |
|
||
* 输出参数
|
||
* null,读取失败。
|
||
* string,读取成功的返回值。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### S7 读取 Bool
|
||
|
||
* 方法说明
|
||
|
||
S7 读取 Bool。
|
||
|
||
```
|
||
function readS7Boolean(type: string, ip: string, blockAndOffset: string): boolean;
|
||
```
|
||
|
||
* 输入参数
|
||
* type,string 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。
|
||
* ip,string 类型,PLC IP。
|
||
* blockAndOffset,string 类型,读取的地址,支持的区域取值示例如下(区分大小写):
|
||
|
||
| 地址名称 | 地址代号 | 示例 |
|
||
| --- | --- | --- |
|
||
| 中间寄存器 | M | M100,M200 |
|
||
| 输入寄存器 | I | I100,I200 |
|
||
| 输出寄存器 | Q | Q100,Q200 |
|
||
| DB块寄存器 | DB | DB1.100,DB1.200.7 |
|
||
| V寄存器 | V | V100,V200 |
|
||
| 定时器的值 | T | T100,T200 |
|
||
| 计数器的值 | C | C100,C200 |
|
||
| 智能输入寄存器 | AI | AI100,AI200 |
|
||
| 智能输出寄存器 | AQ | AQ100,AQ200 |
|
||
* 输出参数
|
||
* null,读取失败。
|
||
* boolean,读取成功的返回值。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### S7 写入 Int
|
||
|
||
* 方法说明
|
||
|
||
S7 写入 Int。
|
||
|
||
```
|
||
function writeS7Int(type: string, ip: string, blockAndOffset: string, value: number): boolean;
|
||
```
|
||
|
||
* 输入参数
|
||
* type,string 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。
|
||
* ip,string 类型,PLC IP。
|
||
* blockAndOffset,string 类型,读取的地址,支持的区域取值示例如下(区分大小写):
|
||
|
||
| 地址名称 | 地址代号 | 示例 |
|
||
| --- | --- | --- |
|
||
| 中间寄存器 | M | M100,M200 |
|
||
| 输入寄存器 | I | I100,I200 |
|
||
| 输出寄存器 | Q | Q100,Q200 |
|
||
| DB块寄存器 | DB | DB1.100,DB1.200.7 |
|
||
| V寄存器 | V | V100,V200 |
|
||
| 定时器的值 | T | T100,T200 |
|
||
| 计数器的值 | C | C100,C200 |
|
||
| 智能输入寄存器 | AI | AI100,AI200 |
|
||
| 智能输出寄存器 | AQ | AQ100,AQ200 |
|
||
* value,number 类型,写入的值。
|
||
* 输出参数
|
||
* 成功返回 true,失败返回 false。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### S7 写入 DInt
|
||
|
||
* 方法说明
|
||
|
||
S7 写入 DInt。
|
||
|
||
```
|
||
function writeS7DInt(type: string, ip: string, blockAndOffset: string, value: number): boolean;
|
||
```
|
||
|
||
* 输入参数
|
||
* type,string 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。
|
||
* ip,string 类型,PLC IP。
|
||
* blockAndOffset,string 类型,读取的地址,支持的区域取值示例如下(区分大小写):
|
||
|
||
| 地址名称 | 地址代号 | 示例 |
|
||
| --- | --- | --- |
|
||
| 中间寄存器 | M | M100,M200 |
|
||
| 输入寄存器 | I | I100,I200 |
|
||
| 输出寄存器 | Q | Q100,Q200 |
|
||
| DB块寄存器 | DB | DB1.100,DB1.200.7 |
|
||
| V寄存器 | V | V100,V200 |
|
||
| 定时器的值 | T | T100,T200 |
|
||
| 计数器的值 | C | C100,C200 |
|
||
| 智能输入寄存器 | AI | AI100,AI200 |
|
||
| 智能输出寄存器 | AQ | AQ100,AQ200 |
|
||
* value,number 类型,写入的值。
|
||
* 输出参数
|
||
* 成功返回 true,失败返回 false。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### S7 写入 Word
|
||
|
||
* 方法说明
|
||
|
||
S7 写入 Word。
|
||
|
||
```
|
||
function writeS7Word(type: string, ip: string, blockAndOffset: string, value: number): boolean;
|
||
```
|
||
|
||
* 输入参数
|
||
* type,string 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。
|
||
* ip,string 类型,PLC IP。
|
||
* blockAndOffset,string 类型,读取的地址,支持的区域取值示例如下(区分大小写):
|
||
|
||
| 地址名称 | 地址代号 | 示例 |
|
||
| --- | --- | --- |
|
||
| 中间寄存器 | M | M100,M200 |
|
||
| 输入寄存器 | I | I100,I200 |
|
||
| 输出寄存器 | Q | Q100,Q200 |
|
||
| DB块寄存器 | DB | DB1.100,DB1.200.7 |
|
||
| V寄存器 | V | V100,V200 |
|
||
| 定时器的值 | T | T100,T200 |
|
||
| 计数器的值 | C | C100,C200 |
|
||
| 智能输入寄存器 | AI | AI100,AI200 |
|
||
| 智能输出寄存器 | AQ | AQ100,AQ200 |
|
||
* value,number 类型,写入的值。
|
||
* 输出参数
|
||
* 成功返回 true,失败返回 false。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### S7 写入 DWord
|
||
|
||
* 方法说明
|
||
|
||
S7 写入 DWord。
|
||
|
||
```
|
||
function writeS7DWord(type: string, ip: string, blockAndOffset: string, value: number): boolean;
|
||
```
|
||
|
||
* 输入参数
|
||
* type,string 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。
|
||
* ip,string 类型,PLC IP。
|
||
* blockAndOffset,string 类型,读取的地址,支持的区域取值示例如下(区分大小写):
|
||
|
||
| 地址名称 | 地址代号 | 示例 |
|
||
| --- | --- | --- |
|
||
| 中间寄存器 | M | M100,M200 |
|
||
| 输入寄存器 | I | I100,I200 |
|
||
| 输出寄存器 | Q | Q100,Q200 |
|
||
| DB块寄存器 | DB | DB1.100,DB1.200.7 |
|
||
| V寄存器 | V | V100,V200 |
|
||
| 定时器的值 | T | T100,T200 |
|
||
| 计数器的值 | C | C100,C200 |
|
||
| 智能输入寄存器 | AI | AI100,AI200 |
|
||
| 智能输出寄存器 | AQ | AQ100,AQ200 |
|
||
* value,number 类型,写入的值。
|
||
* 输出参数
|
||
* 成功返回 true,失败返回 false。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### S7 写入 String
|
||
|
||
* 方法说明
|
||
|
||
S7 写入 String。
|
||
|
||
```
|
||
function writeS7String(type: string, ip: string, blockAndOffset: string, value: string): boolean;
|
||
```
|
||
|
||
* 输入参数
|
||
* type,string 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。
|
||
* ip,string 类型,PLC IP。
|
||
* blockAndOffset,string 类型,读取的地址,支持的区域取值示例如下(区分大小写):
|
||
|
||
| 地址名称 | 地址代号 | 示例 |
|
||
| --- | --- | --- |
|
||
| 中间寄存器 | M | M100,M200 |
|
||
| 输入寄存器 | I | I100,I200 |
|
||
| 输出寄存器 | Q | Q100,Q200 |
|
||
| DB块寄存器 | DB | DB1.100,DB1.200.7 |
|
||
| V寄存器 | V | V100,V200 |
|
||
| 定时器的值 | T | T100,T200 |
|
||
| 计数器的值 | C | C100,C200 |
|
||
| 智能输入寄存器 | AI | AI100,AI200 |
|
||
| 智能输出寄存器 | AQ | AQ100,AQ200 |
|
||
* value,string 类型,写入的值。
|
||
* 输出参数
|
||
* 成功返回 true,失败返回 false。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### S7 写入 Bool
|
||
|
||
* 方法说明
|
||
|
||
S7 写入 Bool。
|
||
|
||
```
|
||
function writeS7Boolean(type: string, ip: string, blockAndOffset: string, value: boolean): boolean;
|
||
```
|
||
|
||
* 输入参数
|
||
* type,string 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。
|
||
* ip,string 类型,PLC IP。
|
||
* blockAndOffset,string 类型,读取的地址,支持的区域取值示例如下(区分大小写):
|
||
|
||
| 地址名称 | 地址代号 | 示例 |
|
||
| --- | --- | --- |
|
||
| 中间寄存器 | M | M100,M200 |
|
||
| 输入寄存器 | I | I100,I200 |
|
||
| 输出寄存器 | Q | Q100,Q200 |
|
||
| DB块寄存器 | DB | DB1.100,DB1.200.7 |
|
||
| V寄存器 | V | V100,V200 |
|
||
| 定时器的值 | T | T100,T200 |
|
||
| 计数器的值 | C | C100,C200 |
|
||
| 智能输入寄存器 | AI | AI100,AI200 |
|
||
| 智能输出寄存器 | AQ | AQ100,AQ200 |
|
||
* value,boolean 类型,写入的值。
|
||
* 输出参数
|
||
* 成功返回 true,失败返回 false。
|
||
* 异常
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### S7 写入
|
||
|
||
* 方法说明
|
||
|
||
S7 写入 Int、DInt、Word、DWord、String、Bool.
|
||
|
||
```
|
||
function writeS7(type String, ip String, slot int, rack int, dataType String, blockAndOffset String, value Any):Bool;
|
||
```
|
||
|
||
* 输入参数
|
||
* type:同上
|
||
* ip:同上
|
||
* slot:CPU 模块的插槽号
|
||
* rack:中央机架
|
||
* dataType:在 Int,DInt,Word,String,Bool 中可选
|
||
* blockAndOffset:同上
|
||
* value: 与 dataType 类型匹配
|
||
* 输出参数
|
||
|
||
成功返回 true,失败返回 false。
|
||
* 异常
|
||
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
#### S7 读取
|
||
|
||
* 方法说明
|
||
|
||
S7 读取 Int、DInt、Word、DWord、String、Bool,类型地址位的值。
|
||
|
||
```
|
||
function readS7(type String, ip String, slot int, rack int, dataType String, blockAndOffset String):Any
|
||
```
|
||
|
||
* 输入参数
|
||
* type:同上
|
||
* ip:同上
|
||
* slot:CPU 模块的插槽号
|
||
* rack:中央机架
|
||
* dataType:在 Int,DInt,Word,String,Bool 中可选
|
||
* blockAndOffset:同上
|
||
* 输出参数
|
||
* null,读取失败。
|
||
* Any,读取成功的返回值。
|
||
* 异常
|
||
|
||
本方法不抛出异常,异常捕获后只作日志记录。
|
||
|
||
## MQTT
|
||
|
||
### MQTT 订阅信息(使用传入的topic)
|
||
|
||
* 方法说明
|
||
|
||
向指定的 topic 订阅信息 ,适用于订阅多个topic的场景。
|
||
|
||
```
|
||
function MQTTSubscribe(topic: string): string;
|
||
```
|
||
|
||
* 输入参数
|
||
* topic,string 类型,订阅的 topic。
|
||
* 输出参数
|
||
|
||
订阅到的信息。
|
||
|
||
如果订阅失败返回 null。
|
||
* 异常
|
||
|
||
本方法不会抛出异常。
|
||
* 使用示例
|
||
* 1. 在 application-biz.yml 里面开启MQTT,并完成相应的配置,如下:
|
||
|
||
```
|
||
# 是否开启 MQTT 服务
|
||
mqttConfigView:
|
||
enable: true
|
||
pubConfig:
|
||
# 服务器端点url
|
||
broker: tcp://broker.emqx.io:1883
|
||
# 订阅的主题,MQTT允许使用通配符订阅主题,不允许使用通配符pub发布消息
|
||
topics:
|
||
- Examples/1/123
|
||
# 设置message的服务质量(0:消息最多传递一次(零次或一次)1:至少传递一次(一次或多次)。2:只传递一次)
|
||
qos: 2
|
||
# 客户端唯一标识
|
||
clientId: RDS-Pub
|
||
# 连接的用户名,不需要就填 null
|
||
username: null
|
||
# 连接的密码,不需要就填 null
|
||
password: null
|
||
# 设置是否清空session,false表示服务器会保留客户端的连接记录,true每次都以新的身份连接服务器
|
||
cleanSession: false
|
||
# 超时时间(seconds)
|
||
connectionTimeout: 30
|
||
# 设置会话心跳时间(seconds)
|
||
keepAliveInterval: 60
|
||
# 设置断开后重新连接
|
||
automaticReconnect: true
|
||
# 表示发送的消息需要一直持久保存(不受服务器重启影响),不但要发送给当前的订阅者,并且以后新来的订阅了此Topic name的订阅者会马上得到推送。
|
||
retained: false
|
||
# 作为publish的遗嘱消息,会存到服务器,在publish端非正常断连的情况下,发送给所有订阅的客户端
|
||
# 不需要就填 null
|
||
willMsg: null
|
||
# 遗嘱消息发布的topic
|
||
willTopic: Examples1
|
||
subConfig:
|
||
# 服务器端点url
|
||
broker: tcp://broker.emqx.io:1883
|
||
# MQTT允许使用通配符sub订阅主题,但不允许使用通配符pub发布消息
|
||
topics:
|
||
- Examples/1/123
|
||
# 设置message的服务质量(0:消息最多传递一次(零次或一次)1:至少传递一次(一次或多次)。2:只传递一次)
|
||
qos: 1
|
||
# 客户端唯一标识
|
||
clientId: RDS-Sub
|
||
# 连接的用户名,不需要就填 null
|
||
username: null
|
||
# 连接的密码,不需要就填 null
|
||
password: null
|
||
# 设置是否清空session,false表示服务器会保留客户端的连接记录,true每次都以新的身份连接服务器
|
||
cleanSession: false
|
||
# 超时时间(seconds)
|
||
connectionTimeout: 30
|
||
# 设置会话心跳时间(seconds)
|
||
keepAliveInterval: 60
|
||
# 设置断开后重新连接
|
||
automaticReconnect: true
|
||
# 表示发送的消息需要一直持久保存(不受服务器重启影响),不但要发送给当前的订阅者,并且以后新来的订阅了此Topic name的订阅者会马上得到推送。
|
||
retained: false
|
||
```
|
||
|
||
* 2. 编写脚本方法
|
||
|
||
```
|
||
var data = jj.MQTTSubscribe("testTopic");
|
||
jj.scriptLog("info","sub1",data);
|
||
```
|
||
|
||
### MQTT 订阅信息(使用配置文件的topic)
|
||
|
||
* 方法说明
|
||
|
||
向 application-biz.yml 配置的 topic 订阅信息 ,适用于只订阅一个topic的场景。
|
||
|
||
```
|
||
function MQTTSubscribe(): string;
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
无。
|
||
* 输出参数
|
||
|
||
订阅到的信息。
|
||
|
||
如果订阅失败返回 null。
|
||
* 异常
|
||
|
||
本方法不会抛出异常。
|
||
* 使用示例
|
||
* 1. 在 application-biz.yml 里面开启MQTT,并完成相应的配置,如下:
|
||
|
||
```
|
||
# 是否开启 MQTT 服务
|
||
mqttConfigView:
|
||
enable: true
|
||
pubConfig:
|
||
# 服务器端点url
|
||
broker: tcp://broker.emqx.io:1883
|
||
# 订阅的主题,MQTT允许使用通配符订阅主题,不允许使用通配符pub发布消息
|
||
topics:
|
||
- Examples/1/123
|
||
# 设置message的服务质量(0:消息最多传递一次(零次或一次)1:至少传递一次(一次或多次)。2:只传递一次)
|
||
qos: 2
|
||
# 客户端唯一标识
|
||
clientId: RDS-Pub
|
||
# 连接的用户名,不需要就填 null
|
||
username: null
|
||
# 连接的密码,不需要就填 null
|
||
password: null
|
||
# 设置是否清空session,false表示服务器会保留客户端的连接记录,true每次都以新的身份连接服务器
|
||
cleanSession: false
|
||
# 超时时间(seconds)
|
||
connectionTimeout: 30
|
||
# 设置会话心跳时间(seconds)
|
||
keepAliveInterval: 60
|
||
# 设置断开后重新连接
|
||
automaticReconnect: true
|
||
# 表示发送的消息需要一直持久保存(不受服务器重启影响),不但要发送给当前的订阅者,并且以后新来的订阅了此Topic name的订阅者会马上得到推送。
|
||
retained: false
|
||
# 作为publish的遗嘱消息,会存到服务器,在publish端非正常断连的情况下,发送给所有订阅的客户端
|
||
# 不需要就填 null
|
||
willMsg: null
|
||
# 遗嘱消息发布的topic
|
||
willTopic: Examples1
|
||
subConfig:
|
||
# 服务器端点url
|
||
broker: tcp://broker.emqx.io:1883
|
||
# MQTT允许使用通配符sub订阅主题,但不允许使用通配符pub发布消息
|
||
topics:
|
||
- Examples/1/123
|
||
# 设置message的服务质量(0:消息最多传递一次(零次或一次)1:至少传递一次(一次或多次)。2:只传递一次)
|
||
qos: 1
|
||
# 客户端唯一标识
|
||
clientId: RDS-Sub
|
||
# 连接的用户名,不需要就填 null
|
||
username: null
|
||
# 连接的密码,不需要就填 null
|
||
password: null
|
||
# 设置是否清空session,false表示服务器会保留客户端的连接记录,true每次都以新的身份连接服务器
|
||
cleanSession: false
|
||
# 超时时间(seconds)
|
||
connectionTimeout: 30
|
||
# 设置会话心跳时间(seconds)
|
||
keepAliveInterval: 60
|
||
# 设置断开后重新连接
|
||
automaticReconnect: true
|
||
# 表示发送的消息需要一直持久保存(不受服务器重启影响),不但要发送给当前的订阅者,并且以后新来的订阅了此Topic name的订阅者会马上得到推送。
|
||
retained: false
|
||
```
|
||
|
||
* 2. 编写脚本方法
|
||
|
||
```
|
||
var data = jj.MQTTSubscribe();
|
||
jj.scriptLog("info","sub",data);
|
||
```
|
||
|
||
### MQTT 发布信息(使用传入的topic)
|
||
|
||
* 方法说明
|
||
|
||
向输入的 topic 发布信息 。
|
||
|
||
```
|
||
function MQTTPublish(topic: string, message: string): void;
|
||
```
|
||
|
||
* 输入参数
|
||
* topic,string 类型,订阅的 topic。
|
||
* message,string 类型,需要发布的信息。
|
||
* 输出参数
|
||
|
||
无。
|
||
* 异常
|
||
|
||
本方法不会抛出异常。
|
||
* 使用示例
|
||
* 1. 在 application-biz.yml 里面开启MQTT,并完成相应的配置,如下:
|
||
|
||
```
|
||
# 是否开启 MQTT 服务
|
||
mqttConfigView:
|
||
enable: true
|
||
pubConfig:
|
||
# 服务器端点url
|
||
broker: tcp://broker.emqx.io:1883
|
||
# 订阅的主题,MQTT允许使用通配符订阅主题,不允许使用通配符pub发布消息
|
||
topics:
|
||
- Examples/1/123
|
||
# 设置message的服务质量(0:消息最多传递一次(零次或一次)1:至少传递一次(一次或多次)。2:只传递一次)
|
||
qos: 2
|
||
# 客户端唯一标识
|
||
clientId: RDS-Pub
|
||
# 连接的用户名,不需要就填 null
|
||
username: null
|
||
# 连接的密码,不需要就填 null
|
||
password: null
|
||
# 设置是否清空session,false表示服务器会保留客户端的连接记录,true每次都以新的身份连接服务器
|
||
cleanSession: false
|
||
# 超时时间(seconds)
|
||
connectionTimeout: 30
|
||
# 设置会话心跳时间(seconds)
|
||
keepAliveInterval: 60
|
||
# 设置断开后重新连接
|
||
automaticReconnect: true
|
||
# 表示发送的消息需要一直持久保存(不受服务器重启影响),不但要发送给当前的订阅者,并且以后新来的订阅了此Topic name的订阅者会马上得到推送。
|
||
retained: false
|
||
# 作为publish的遗嘱消息,会存到服务器,在publish端非正常断连的情况下,发送给所有订阅的客户端
|
||
# 不需要就填 null
|
||
willMsg: null
|
||
# 遗嘱消息发布的topic
|
||
willTopic: Examples1
|
||
subConfig:
|
||
# 服务器端点url
|
||
broker: tcp://broker.emqx.io:1883
|
||
# MQTT允许使用通配符sub订阅主题,但不允许使用通配符pub发布消息
|
||
topics:
|
||
- Examples/1/123
|
||
# 设置message的服务质量(0:消息最多传递一次(零次或一次)1:至少传递一次(一次或多次)。2:只传递一次)
|
||
qos: 1
|
||
# 客户端唯一标识
|
||
clientId: RDS-Sub
|
||
# 连接的用户名,不需要就填 null
|
||
username: null
|
||
# 连接的密码,不需要就填 null
|
||
password: null
|
||
# 设置是否清空session,false表示服务器会保留客户端的连接记录,true每次都以新的身份连接服务器
|
||
cleanSession: false
|
||
# 超时时间(seconds)
|
||
connectionTimeout: 30
|
||
# 设置会话心跳时间(seconds)
|
||
keepAliveInterval: 60
|
||
# 设置断开后重新连接
|
||
automaticReconnect: true
|
||
# 表示发送的消息需要一直持久保存(不受服务器重启影响),不但要发送给当前的订阅者,并且以后新来的订阅了此Topic name的订阅者会马上得到推送。
|
||
retained: false
|
||
```
|
||
|
||
* 2. 编写脚本方法
|
||
|
||
```
|
||
jj.MQTTPublish("testTopic","RDS-Script sub message.");
|
||
```
|
||
|
||
### MQTT 发布信息(使用配置文件的topic)
|
||
|
||
* 方法说明
|
||
|
||
向配置的 topic 发布信息 。
|
||
|
||
```
|
||
function MQTTPublish(message: string): void;
|
||
```
|
||
|
||
* 输入参数
|
||
* message,string 类型,需要发布的信息
|
||
* 输出参数
|
||
|
||
无。
|
||
* 异常
|
||
|
||
本方法不会抛出异常。
|
||
* 使用示例
|
||
* 1. 在 application-biz.yml 里面开启MQTT,并完成相应的配置,如下:
|
||
|
||
```
|
||
# 是否开启 MQTT 服务
|
||
mqttConfigView:
|
||
enable: true
|
||
pubConfig:
|
||
# 服务器端点url
|
||
broker: tcp://broker.emqx.io:1883
|
||
# 订阅的主题,MQTT允许使用通配符订阅主题,不允许使用通配符pub发布消息
|
||
topics:
|
||
- Examples/1/123
|
||
# 设置message的服务质量(0:消息最多传递一次(零次或一次)1:至少传递一次(一次或多次)。2:只传递一次)
|
||
qos: 2
|
||
# 客户端唯一标识
|
||
clientId: RDS-Pub
|
||
# 连接的用户名,不需要就填 null
|
||
username: null
|
||
# 连接的密码,不需要就填 null
|
||
password: null
|
||
# 设置是否清空session,false表示服务器会保留客户端的连接记录,true每次都以新的身份连接服务器
|
||
cleanSession: false
|
||
# 超时时间(seconds)
|
||
connectionTimeout: 30
|
||
# 设置会话心跳时间(seconds)
|
||
keepAliveInterval: 60
|
||
# 设置断开后重新连接
|
||
automaticReconnect: true
|
||
# 表示发送的消息需要一直持久保存(不受服务器重启影响),不但要发送给当前的订阅者,并且以后新来的订阅了此Topic name的订阅者会马上得到推送。
|
||
retained: false
|
||
# 作为publish的遗嘱消息,会存到服务器,在publish端非正常断连的情况下,发送给所有订阅的客户端
|
||
# 不需要就填 null
|
||
willMsg: null
|
||
# 遗嘱消息发布的topic
|
||
willTopic: Examples1
|
||
subConfig:
|
||
# 服务器端点url
|
||
broker: tcp://broker.emqx.io:1883
|
||
# MQTT允许使用通配符sub订阅主题,但不允许使用通配符pub发布消息
|
||
topics:
|
||
- Examples/1/123
|
||
# 设置message的服务质量(0:消息最多传递一次(零次或一次)1:至少传递一次(一次或多次)。2:只传递一次)
|
||
qos: 1
|
||
# 客户端唯一标识
|
||
clientId: RDS-Sub
|
||
# 连接的用户名,不需要就填 null
|
||
username: null
|
||
# 连接的密码,不需要就填 null
|
||
password: null
|
||
# 设置是否清空session,false表示服务器会保留客户端的连接记录,true每次都以新的身份连接服务器
|
||
cleanSession: false
|
||
# 超时时间(seconds)
|
||
connectionTimeout: 30
|
||
# 设置会话心跳时间(seconds)
|
||
keepAliveInterval: 60
|
||
# 设置断开后重新连接
|
||
automaticReconnect: true
|
||
# 表示发送的消息需要一直持久保存(不受服务器重启影响),不但要发送给当前的订阅者,并且以后新来的订阅了此Topic name的订阅者会马上得到推送。
|
||
retained: false
|
||
```
|
||
|
||
* 2. 编写脚本方法
|
||
|
||
```
|
||
jj.MQTTPublish("RDS-Script sub message.");
|
||
```
|
||
|
||
## 需求单
|
||
|
||
### 创建需求单
|
||
|
||
* 方法说明
|
||
|
||
根据指定的参数创建新的需求单。
|
||
|
||
```
|
||
function addDemand(demandJson: string): string
|
||
```
|
||
|
||
* 输入参数
|
||
* demandJson,string 类型,表示需求单的详情,反序列化后的示例如下:
|
||
|
||
```
|
||
{
|
||
"defLabel": "", // 需求单的名称
|
||
"content": "", // 需求内容,序列化之后的 JSON 数据
|
||
"createdBy": "", // 当前需求单的创建者
|
||
"description": "", // 需求单的描述
|
||
"menuId": "", // 补充需求菜单id
|
||
"workTypes": "", // 可操作当前需求单的岗位
|
||
"workStations": "", // 可操作当前需求单的工位
|
||
"attrList": [ // 需求单的扩展字段值,不需要可以不传此参数
|
||
{
|
||
"attributeName": "ExtendedField1",
|
||
"attributeValue": "value1"
|
||
},
|
||
{
|
||
"attributeName": "ExtendedField2",
|
||
"attributeValue": "value2"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
* 输出参数
|
||
|
||
成功时,返回需求单的 ID。
|
||
* 异常
|
||
|
||
本方法会抛出异常。
|
||
|
||
### 根据 ID 更新需求单状态为完成
|
||
|
||
* 方法说明
|
||
|
||
根据 ID 将指定的需求单的状态,更新为完成。
|
||
|
||
```
|
||
function updateDemandFinishedById(demandId: string, supplementContent: string, handler: string): number
|
||
```
|
||
|
||
* 输入参数
|
||
* demandId,string 类型,表示需求单的 ID。
|
||
* supplementContent,string 类型,表示补充需求内容,为序列化之后的 JSON 数据。
|
||
* handler,string 类型,表示处理人。
|
||
* 输出参数
|
||
* 成功时,返回值为 1。
|
||
* 失败时,返回值为 0。
|
||
* 异常
|
||
|
||
本方法会抛出异常。
|
||
|
||
### 根据 createBy 更新需求单状态为完成
|
||
|
||
* 方法说明
|
||
|
||
根据 createBy 将指定的需求单的状态,更新为完成。
|
||
|
||
```
|
||
function updateDemandFinishedByCreateBy(createBy: string, supplementContent: string, handler: string): number
|
||
```
|
||
|
||
* 输入参数
|
||
* createBy,string 类型,表示当前需求单的创建者。
|
||
* supplementContent,string 类型,表示补充需求内容,为序列化之后的 JSON 数据。
|
||
* handler,string 类型,表示处理人。
|
||
* 输出参数
|
||
* 成功时,返回值为 1。
|
||
* 失败时,返回值为 0。
|
||
* 异常
|
||
|
||
本方法会抛出异常。
|
||
|
||
## 文件操作
|
||
|
||
### 根据文件名读取脚本目录下的文件内容
|
||
|
||
* 方法说明
|
||
|
||
根据文件名,读取脚本目录下的文件内容。
|
||
|
||
```
|
||
function readFileToString(fileName: string): string
|
||
```
|
||
|
||
* 输入参数
|
||
* fileName,string 类型,表示目标文件的名称(带后缀,例如 a.txt )。
|
||
* 输出参数
|
||
* 读取文件成功时,返回值为表示文件内容的字符串。
|
||
* 读取文件失败时,返回值为 null 。
|
||
* 异常
|
||
|
||
本方法不会抛出异常。
|
||
|
||
## 分拨单
|
||
|
||
### 标记分拨点满
|
||
|
||
* 方法说明
|
||
|
||
标记分拨点货满,不需要放货
|
||
|
||
```
|
||
function distributeMarkFull(loc:string)
|
||
```
|
||
|
||
* 输入参数
|
||
* loc,string类型,表示库位的id
|
||
* 输出参数
|
||
* 成功时,返回true
|
||
* 失败时,返回false
|
||
|
||
### 标记分拨点缺货
|
||
|
||
* 方法说明
|
||
|
||
标记分拨点缺货,可以放货
|
||
|
||
```
|
||
function distributeMarkNotFull(loc:string)
|
||
```
|
||
|
||
* 输入参数
|
||
* loc,string类型,表示库位的id
|
||
* 输出参数
|
||
* 成功时,返回true
|
||
* 失败时,返回false
|
||
|
||
### 报告放货完成
|
||
|
||
* 方法说明
|
||
|
||
报告当前库位放货完成,可离开
|
||
|
||
```
|
||
function distributeTaskDone(vehicleId:string)
|
||
```
|
||
|
||
* 输入参数
|
||
* vehicleId,string类型,表示机器人的id
|
||
* 输出参数
|
||
* 成功时,返回true
|
||
* 失败时,返回false
|
||
|
||
### 增加分拨点
|
||
|
||
* 方法说明
|
||
|
||
向正在运行的分拨任务,添加分拨点
|
||
|
||
```
|
||
function appendToLocList(taskRecordId:String, toLocList:String, blockNo:String): boolean
|
||
```
|
||
|
||
* 输入参数
|
||
* taskRecordId,String类型,必填,任务实例的Id
|
||
* toLocList,添加分拨点的参数,字符串,数据格式如下:
|
||
|
||
```
|
||
[
|
||
{
|
||
"toLoc": "LM7", //必填分拨点
|
||
"postAction":"" //非必填,分拨点完成的回调
|
||
}
|
||
]
|
||
```
|
||
* blockNo,天风任务块编号("`b8`"),可不填,默认对应任务下正在运行的分拨单,如果涉及多个需要指定块编号
|
||
* 返回值,成功`true`,失败`false`
|
||
* 案例
|
||
|
||
```
|
||
let loc = [{
|
||
"toLoc": "LM7"
|
||
}]
|
||
jj.appendToLocList("6e32d7f2-99fa-42d4-8c4d-cd267190d694",JSON.stringify(loc),"b8")
|
||
#说明:向在天风任务块编号是b8的任务id为6e32d7f2-99fa-42d4-8c4d-cd267190d694的分拨单添加一个分拨点LM7
|
||
```
|
||
|
||
### 删除分拨点
|
||
|
||
* 方法说明
|
||
|
||
向正在运行的分拨任务,删除分拨点
|
||
|
||
```
|
||
function deleteToLocList(taskRecordId:String, toLocs:String, blockNo:String): boolean
|
||
```
|
||
|
||
* 输入参数
|
||
* taskRecordId,String类型,必填,任务实例的Id
|
||
* toLocs, 删除分拨点的参数,字符串,数据格式如下:
|
||
|
||
```
|
||
["LM41"]
|
||
```
|
||
* blockNo,天风任务块编号("`b8`"),可不填,默认对应任务下正在运行的分拨单,如果涉及多个需要指定块编号
|
||
* 返回值,成功`true`,失败`false`
|
||
* 案例
|
||
|
||
```
|
||
let delLoc = ["LM41"];
|
||
jj.deleteToLocList("276ccf58-c429-4e33-ad7b-4bcbe9d56e27", JSON.stringify(delLoc),"b8"))
|
||
#说明:向在天风任务块编号是b8的任务id为6e32d7f2-99fa-42d4-8c4d-cd267190d694的分拨单删除一个分拨点LM41
|
||
```
|
||
|
||
## Websocket
|
||
|
||
### 根据ip向客户端发送消息
|
||
|
||
* 方法说明
|
||
|
||
根据ip向客户端发送消息
|
||
|
||
```
|
||
function sendMsgToWscByClientIp(msg:string,ip:string): void
|
||
```
|
||
|
||
* 输入参数
|
||
* msg,string类型,表示要发送的消息
|
||
* ip,string类型,表示接收消息的客户端ip
|
||
* 输出参数
|
||
* 无。
|
||
* 异常
|
||
|
||
本方法会抛出异常。
|
||
|
||
### 根据客户端名称向客户端发送消息
|
||
|
||
* 方法说明
|
||
|
||
根据客户端名向客户端发送消息
|
||
|
||
```
|
||
function sendMsgToWscByClientName(msg:string,clientName:string): void
|
||
```
|
||
|
||
* 输入参数
|
||
* msg,string类型,表示要发送的消息
|
||
* clientName,string类型,表示接收消息的客户端名
|
||
* 输出参数
|
||
* 无。
|
||
* 异常
|
||
|
||
本方法会抛出异常。
|
||
|
||
### 获取所有客户端ip
|
||
|
||
* 方法说明
|
||
|
||
获取所有websocket客户端的ip
|
||
|
||
```
|
||
function getWebsocketClientIp(): string
|
||
```
|
||
|
||
* 输入参数
|
||
* 无。
|
||
* 输出参数
|
||
* 所有客户端的ip
|
||
* 异常
|
||
|
||
本方法会抛出异常。
|
||
|
||
### 获取所有客户端名
|
||
|
||
* 方法说明
|
||
|
||
获取所有websocket客户端名
|
||
|
||
```
|
||
function getWebsocketClientName(): string
|
||
```
|
||
|
||
* 输入参数
|
||
* 无。
|
||
* 输出参数
|
||
* 所有客户端名
|
||
* 异常
|
||
|
||
本方法会抛出异常。
|
||
|
||
## 其他
|
||
|
||
### 创建唯一的 ID 编号
|
||
|
||
* 方法说明
|
||
|
||
创建唯一的 ID 编号。
|
||
|
||
```
|
||
function createUuid(): string
|
||
```
|
||
|
||
* 输入参数
|
||
|
||
无。
|
||
* 输出参数
|
||
* 表示一个唯一 ID 编号的字符串。
|
||
* 异常
|
||
|
||
本方法会抛出异常。
|
||
|
||
### 发送邮件
|
||
|
||
* 方法说明
|
||
|
||
向目标收件方发送简单邮件。
|
||
|
||
```
|
||
function sendMail(param: string): void
|
||
```
|
||
|
||
* 输入参数
|
||
* param,string 类型,表示邮件的详情,反序列化后的示例如下:
|
||
|
||
```
|
||
{
|
||
"to": "yy@yy.com", // 接收方,必填
|
||
"subject": "Daily Meeting", // 主题,必填
|
||
"text": "xxx", // 内容,必填
|
||
"cc": "xxx@xxx.com,yyy@yyy.com", // 抄送,选填
|
||
"bcc": "zzz@zzz.com" // 秘密抄送,选填
|
||
}
|
||
```
|
||
* 输出参数
|
||
|
||
无。
|
||
* 异常
|
||
|
||
本方法会抛出异常。
|
||
|
||
### 发送用户消息
|
||
|
||
* 方法说明
|
||
|
||
发送用户消息,不仅可以弹窗提醒,还可以在RDS的消息管理界面进行查看。
|
||
|
||
```
|
||
function sendUserMessage(level: string, messageTitle: string, messageBody: string): void
|
||
```
|
||
|
||
* 输入参数
|
||
* level,string 类型,表示消息提醒的等级,有ERROR,WARN,INFO三种等级。
|
||
* messageTitle,string 类型,表示用户消息的标题。
|
||
* messageBody,string 类型,表示用户消息的内容。
|
||
* 输出参数
|
||
|
||
无。
|
||
* 异常
|
||
|
||
本方法不会抛出异常。
|
||
|
||
### JSON字符串转化为XML字符串
|
||
|
||
* 方法说明
|
||
|
||
将json字符串转化为xml字符串
|
||
|
||
```
|
||
function jsonToXml(param: string): string
|
||
```
|
||
|
||
* 输入参数
|
||
* param,string 类型,表示传入的json字符串
|
||
* 输出参数
|
||
* xml字符串
|
||
* 异常
|
||
|
||
本方法会不抛出异常。
|
||
|
||
### MD5字符串加密
|
||
|
||
* 方法说明
|
||
|
||
将字符串进行加密后返回
|
||
|
||
```
|
||
function md5Encode(param: string): string
|
||
```
|
||
|
||
* 输入参数
|
||
* param,string 类型,表示传入的字符串
|
||
* 输出参数
|
||
* 32位小写字符串
|
||
* 异常
|
||
|
||
本方法会抛出异常。
|
||
|
||
### Base64字符串重编码
|
||
|
||
* 方法说明
|
||
|
||
将字符串进行重编码后返回
|
||
|
||
```
|
||
function base64Encode(param: string): string
|
||
```
|
||
|
||
* 输入参数
|
||
* param,string 类型,表示传入的字符串
|
||
* 输出参数
|
||
* UrlBase64 重编码后的字符串
|
||
* 异常
|
||
|
||
本方法会抛出异常。
|
||
|
||
### 转换成分页对象
|
||
|
||
* 方法说明
|
||
|
||
根据给定的参数和数据,转换成分页对象并进行返回。
|
||
|
||
```
|
||
function transToPageObj(totalCount: number, currentPage: number, pageSize: number, totalPage: number, pageList: string): string
|
||
```
|
||
|
||
* 输入参数
|
||
* totalCount, number 类型,表示分页数据的总条数
|
||
* currentPage, number 类型,表示当前是第几页
|
||
* pageSize, number 类型,表示每页显示的数量
|
||
* totalPage, number 类型,表示总页数
|
||
* pageList, string 类型,表示当前页的数据
|
||
* 输出参数
|
||
* 转换后的分页对象字符串
|
||
* 异常
|
||
|
||
本方法不会抛出异常。
|
||
* 请求示例
|
||
|
||
```
|
||
function transToPageObj() {
|
||
|
||
// 1. 提供分页相关参数和源数据
|
||
|
||
// 当前是第几页,最小值就是1!
|
||
var currentPage = 2;
|
||
// 每页的数据条数
|
||
var pageSize = 20;
|
||
// 获取相关的数据,以实际情况为准进行修改
|
||
var data = jj.findSitesByCondition("{}","ASC");
|
||
// 打印查询到的数据
|
||
jj.scriptLog("INFO", "transToPageObj", data);
|
||
// 转换成对象,方便截取当页的数据
|
||
var dataObj = JSON.parse(data);
|
||
// 截取指定页的数据
|
||
var pageListObj = dataObj.slice((currentPage-1)*pageSize, currentPage*pageSize);
|
||
// 将截取的数据转成字符串
|
||
var pageListStr = JSON.stringify(pageListObj);
|
||
|
||
// 2. 调用脚本方法,转换成分页对象
|
||
|
||
// 将数据转换成分页对象
|
||
var res = jj.transToPageObj(dataObj.length, currentPage, pageSize, Math.ceil(dataObj.length/pageSize), pageListStr);
|
||
// 打印转换后的结果
|
||
jj.scriptLog("INFO", "res=", res);
|
||
|
||
// 3. 拿着分页对象进行返回或其他操作
|
||
// TODO
|
||
}
|
||
```
|
||
|
||
### 获取天风任务参数
|
||
|
||
* 方法说明
|
||
|
||
在脚本中直接获取到天风任务参数。
|
||
|
||
```
|
||
function getScriptValue(key: string): string
|
||
```
|
||
|
||
* 输入参数
|
||
* key,变量表达式。
|
||
* 输出参数
|
||
|
||
天风任务中参数key的值的字符串。
|
||
* 异常
|
||
本方法不会抛出异常。该方法如果获取一个不存在的值时将会返回NULL。
|
||
* 请求示例
|
||
|
||
```
|
||
function test() {
|
||
//获取任务变量status
|
||
jj.scriptLog("debug","b1,agvid:",jj.getScriptValue("task.variables.status"))
|
||
//获取b4块选出的库位
|
||
jj.scriptLog("debug","b1,agvid:",jj.getScriptValue("blocks.b4.siteId"))
|
||
//获取输入参数agvId
|
||
jj.scriptLog("debug","b1,agvid:",jj.getScriptValue("taskInputs.agvId"))
|
||
}
|
||
```
|
||
|
||
### 批量放行
|
||
|
||
* 方法说明
|
||
|
||
批量放行机器人,与等待放行块结合使用。
|
||
|
||
```
|
||
function releaseWaitPass(agvIds: Array<String>): boolean
|
||
```
|
||
|
||
* 输入参数
|
||
* agvIds,String 数组类型,需放行的机器人Id。
|
||
* 输出参数
|
||
* true,放行成功。
|
||
* false,放行失败
|
||
* 异常
|
||
本方法不会抛出异常。
|
||
* 请求示例
|
||
|
||
```
|
||
function releaseWaitPass(){
|
||
let agvIds = []//注意参数是数组
|
||
agvIds.push("AMB-150J")//放行一个就只用push一个
|
||
agvIds.push("sim_01")
|
||
jj.releaseWaitPass(agvIds)
|
||
}
|
||
```
|
||
|
||
### 脚本公平锁
|
||
|
||
* 方法说明
|
||
|
||
根据锁名称,获取不同的锁,并发情况下串行执行一段代码
|
||
|
||
```
|
||
function withFairnessLock(lockName: string, fair: boolean, action: () => void): void;
|
||
```
|
||
|
||
* 输入参数
|
||
* lockName:String 锁的名称
|
||
* fair:true: 公平锁更具时间先后顺序获取,false: 非公平锁,随机获取锁
|
||
* action: 执行的代码块
|
||
* 输出参数
|
||
|
||
无
|
||
* 异常
|
||
本方法不会抛出异常。
|
||
* 请求示例
|
||
|
||
```
|
||
jj.withFairnessLock("kk", true, () => {
|
||
// 代码块
|
||
jj.scriptLog("INFO", "test", "test")
|
||
})
|
||
```
|
||
|
||
进程已结束,退出代码为 0
|