# VWED在线脚本内置函数文档 本文档包含VWED在线脚本系统中所有可用的内置函数,按功能模块分类整理,为用户提供开发指导。 ## 目录 1. [协议通信](#协议通信) - [Fins协议](#fins协议) - [HTTP请求](#http请求) - [MQTT协议](#mqtt协议) - [Melsec协议](#melsec协议) - [Modbus TCP协议](#modbus-tcp协议) - [OPC UA协议](#opc-ua协议) - [S7协议](#s7协议) - [Websocket协议](#websocket协议) 2. [任务管理](#任务管理) 3. [库位管理](#库位管理) 4. [机器人管理](#机器人管理) 5. [缓存数据管理](#缓存数据管理) 6. [系统工具](#系统工具) 7. [数据库操作](#数据库操作) 8. [文件操作](#文件操作) 9. [日志相关](#日志相关) 10. [注册方法](#注册方法) 11. [多线程及时间](#多线程及时间) 12. [手持端相关](#手持端相关) --- ## 协议通信 ### Fins协议 #### read_fins_string **描述**: Fins读取字符串 ```python def read_fins_string(ip: str, port: int, area: int, fins_io_addr: int, bit_offset: int, word_length: int) -> str | None ``` **参数**: - `ip`: str类型,从机IP - `port`: int类型,从机端口 - `area`: int类型,读取的存储区域代码,16进制值如:0x82 - `fins_io_addr`: int类型,读取的地址位 - `bit_offset`: int类型,读取的偏移量 - `word_length`: int类型,读取的长度 **返回值**: 成功返回字符串,失败返回None **异常**: 本方法不抛出异常,异常捕获后只作日志记录 #### read_fins_word **描述**: Fins读取word ```python def read_fins_word(ip: str, port: int, area: int, fins_io_addr: int, bit_offset: int) -> int | None ``` **参数**: - `ip`: str类型,从机IP - `port`: int类型,从机端口 - `area`: int类型,读取的存储区域代码,16进制值如:0x82 - `fins_io_addr`: int类型,读取的地址位 - `bit_offset`: int类型,读取的偏移量 **返回值**: 成功返回整数,失败返回None #### read_fins_bit **描述**: Fins读取bit ```python def read_fins_bit(ip: str, port: int, area: int, fins_io_addr: int, bit_offset: int) -> int | None ``` **参数**: 同read_fins_word **返回值**: 成功返回整数,失败返回None #### write_fins_word **描述**: Fins写入word ```python def write_fins_word(ip: str, port: int, area: int, fins_io_addr: int, bit_offset: int, value: int) -> None ``` **参数**: 在read_fins_word基础上增加value参数(写入的值) #### write_fins_bit **描述**: Fins写入bit ```python def write_fins_bit(ip: str, port: int, area: int, fins_io_addr: int, bit_offset: int, value: bool) -> None ``` **参数**: 在read_fins_bit基础上增加value参数(bool类型,写入的值) --- ### HTTP请求 #### request_post **描述**: 发送POST请求,参数为JSON格式 ```python def request_post(url: str, param: str) -> str | None ``` **参数**: - `url`: str类型,请求的URL - `param`: str类型,JSON字符串,请求的参数 **返回值**: 成功返回响应JSON字符串,失败返回None #### request_get **描述**: 发送GET请求 ```python def request_get(url: str) -> str | None ``` **参数**: - `url`: str类型,请求的URL **返回值**: 成功返回请求返回的字符串,失败返回None #### set_header **描述**: 设置请求头,设置一次后对所有请求都有效 ```python def set_header(key: str, value: str) -> None ``` **参数**: - `key`: str类型,请求头的key - `value`: str类型,请求头的value #### request_post_xml **描述**: 发送POST请求,参数为XML格式 ```python def request_post_xml(url: str, param: str) -> str | None ``` **参数**: - `url`: str类型,请求的URL - `param`: str类型,JSON字符串,会自动转换为XML格式 **返回值**: 成功时将响应的XML格式字符串转化为JSON格式并返回,失败返回None #### request_http_post **描述**: 发送POST请求(增强版),可设置请求媒体类型和请求头 ```python def request_http_post(url: str, param: str, head_param: str, media_type: str) -> str | None ``` **参数**: - `url`: 请求的URL - `param`: 请求的入参json字符串 - `head_param`: 请求头,如有传json字符串,无传空字符串 - `media_type`: 请求类型,可选值:JSON、JAVASCRIPT、HTML、XML、XWWWFORMURLENCODED **返回值**: 成功返回json字符串,失败返回None --- ### MQTT协议 #### mqtt_subscribe **描述**: MQTT订阅信息(使用传入的topic) ```python def mqtt_subscribe(topic: str) -> str ``` **参数**: - `topic`: str类型,订阅的topic **返回值**: 订阅到的信息,失败返回None **使用示例**: ```python data = mqtt_subscribe("test_topic") script_log("info", "sub1", data) ``` #### mqtt_publish **描述**: MQTT发布信息(使用传入的topic) ```python def mqtt_publish(topic: str, message: str) -> None ``` **参数**: - `topic`: str类型,发布的topic - `message`: str类型,需要发布的信息 **使用示例**: ```python mqtt_publish("test_topic", "RDS-Script sub message.") ``` --- ### Melsec协议 #### read_melsec_boolean **描述**: Melsec读取boolean ```python def read_melsec_boolean(ip: str, port: int, address: str) -> bool | None ``` **参数**: - `ip`: str类型,从机IP - `port`: int类型,从机端口 - `address`: str类型,读取的地址位 **返回值**: 成功返回布尔值,失败返回None #### read_melsec_number **描述**: Melsec读取number ```python def read_melsec_number(ip: str, port: int, address: str) -> float | None ``` **参数**: 同read_melsec_boolean **返回值**: 成功返回浮点数,失败返回None #### read_melsec_string **描述**: Melsec读取string ```python def read_melsec_string(ip: str, port: int, address: str, length: int) -> str | None ``` **参数**: 在read_melsec_boolean基础上增加length参数(读取的长度) **返回值**: 成功返回字符串,失败返回None #### write_melsec_boolean **描述**: Melsec写入boolean ```python def write_melsec_boolean(ip: str, port: int, address: str, value: bool) -> bool ``` **参数**: 在read_melsec_boolean基础上增加value参数 **返回值**: 成功返回True,失败返回False #### write_melsec_number **描述**: Melsec写入number ```python def write_melsec_number(ip: str, port: int, address: str, value: float) -> bool ``` #### write_melsec_string **描述**: Melsec写入string ```python def write_melsec_string(ip: str, port: int, address: str, value: str) -> bool ``` --- ### Modbus TCP协议 #### read_coil_status **描述**: Modbus读取线圈量,功能码01 ```python def read_coil_status(ip: str, port: int, slave_id: int, offset: int) -> bool | None ``` **参数**: - `ip`: str类型,从机IP - `port`: int类型,从机端口 - `slave_id`: int类型,从机slave ID - `offset`: int类型,Modbus地址 **返回值**: 成功返回布尔值,失败返回None #### read_input_status **描述**: Modbus读取离散输入,功能码02 ```python def read_input_status(ip: str, port: int, slave_id: int, offset: int) -> bool | None ``` #### read_holding_register **描述**: Modbus读取保持寄存器,功能码03 ```python def read_holding_register(ip: str, port: int, slave_id: int, offset: int, data_type: int) -> int | None ``` **参数**: 在基础参数基础上增加data_type(2:无符号整形,3:有符号整形) #### read_input_register **描述**: Modbus读取输入寄存器,功能码04 ```python def read_input_register(ip: str, port: int, slave_id: int, offset: int, data_type: int) -> int | None ``` #### write_coil_status **描述**: Modbus写入线圈量,功能码05 ```python def write_coil_status(ip: str, port: int, slave_id: int, offset: int, value: bool) -> bool ``` **返回值**: True:写入成功,False:写入失败 #### write_holding_register **描述**: Modbus写入保持寄存器,功能码06 ```python def write_holding_register(ip: str, port: int, slave_id: int, offset: int, data_type: int, value: int) -> bool ``` #### 批量操作函数 ##### batch_read_coil_status **描述**: Modbus批量读取线圈量,功能码01 ```python def batch_read_coil_status(ip: str, port: int, slave_id: int, offset: int, len: int) -> list[bool] | None ``` **参数**: 增加len参数(Modbus地址数量) **返回值**: 成功返回布尔值数组,失败返回None ##### batch_read_holding_registers **描述**: Modbus批量读取保持寄存器,功能码03 ```python def batch_read_holding_registers(ip: str, port: int, slave_id: int, offset: int, len: int) -> list[int] | None ``` ##### batch_write_coil_status **描述**: Modbus批量写入线圈量,功能码0f ```python def batch_write_coil_status(ip: str, port: int, slave_id: int, offset: int, value: list[bool]) -> bool ``` #### 通用操作函数 ##### read_single_modbus_value **描述**: 通用读取单个地址 ```python def read_single_modbus_value(ip: str, port: int, slave_id: int, type_str: str, offset: int) -> int | None ``` **参数**: type_str可选择'0x','1x','3x','4x' ##### read_single_modbus_value_by_instance_name **描述**: 通过实例名称读取单个地址 ```python def read_single_modbus_value_by_instance_name(name: str, offset: int) -> int | None ``` **参数**: - `name`: str类型,配置的唯一实例名称 - `offset`: int类型,Modbus地址 --- ### OPC UA协议 #### read_opc_value **描述**: 读取OPC server中的某个地址位的值 ```python def read_opc_value(address: str | int) -> any def read_opc_value(namespace_index: int, address: str | int) -> any ``` **参数**: - `address`: str类型,读取的地址位 - `namespace_index`: int类型,命名空间索引(可选) **返回值**: 读到的值 **异常**: 读取失败会抛出RuntimeError异常 #### read_opc_value_by_subscription **描述**: 通过订阅方式读取OPC server中的值 ```python def read_opc_value_by_subscription(namespace_index: int, address: str) -> any ``` #### write_opc_value **描述**: 向OPC server中的某个地址位写入值 ```python def write_opc_value(address: str | int, value: any) -> bool def write_opc_value(namespace_index: int, address: str | int, value: any) -> bool ``` **返回值**: 成功返回True,失败返回False --- ### S7协议 #### 数据类型读取函数 ##### read_s7_int **描述**: S7读取Int ```python def read_s7_int(plc_type: str, ip: str, block_and_offset: str) -> Optional[int] ``` **参数**: - `plc_type`: str类型,PLC类型,可选值:S1200/S300/S400/S1500/S200Smart/S200 - `ip`: str类型,PLC IP - `block_and_offset`: str类型,读取的地址 **支持的地址类型**: | 地址名称 | 地址代号 | 示例 | |---------|---------|------| | 中间寄存器 | M | M100,M200 | | 输入寄存器 | I | I100,I200 | | 输出寄存器 | Q | Q100,Q200 | | DB块寄存器 | DB | DB1.100,DB1.200.7 | | V寄存器 | V | V100,V200 | ##### read_s7_dint **描述**: S7读取DInt ```python def read_s7_dint(plc_type: str, ip: str, block_and_offset: str) -> Optional[int] ``` ##### read_s7_word **描述**: S7读取Word ```python def read_s7_word(plc_type: str, ip: str, block_and_offset: str) -> Optional[int] ``` ##### read_s7_dword **描述**: S7读取DWord ```python def read_s7_dword(plc_type: str, ip: str, block_and_offset: str) -> Optional[int] ``` ##### read_s7_string **描述**: S7读取String ```python def read_s7_string(plc_type: str, ip: str, block_and_offset: str) -> Optional[str] ``` ##### read_s7_boolean **描述**: S7读取Bool ```python def read_s7_boolean(plc_type: str, ip: str, block_and_offset: str) -> Optional[bool] ``` #### 数据类型写入函数 ##### write_s7_int **描述**: S7写入Int ```python def write_s7_int(plc_type: str, ip: str, block_and_offset: str, value: int) -> bool ``` ##### write_s7_dint **描述**: S7写入DInt ```python def write_s7_dint(plc_type: str, ip: str, block_and_offset: str, value: int) -> bool ``` ##### write_s7_word **描述**: S7写入Word ```python def write_s7_word(plc_type: str, ip: str, block_and_offset: str, value: int) -> bool ``` ##### write_s7_dword **描述**: S7写入DWord ```python def write_s7_dword(plc_type: str, ip: str, block_and_offset: str, value: int) -> bool ``` ##### write_s7_string **描述**: S7写入String ```python def write_s7_string(plc_type: str, ip: str, block_and_offset: str, value: str) -> bool ``` ##### write_s7_boolean **描述**: S7写入Bool ```python def write_s7_boolean(plc_type: str, ip: str, block_and_offset: str, value: bool) -> bool ``` #### 通用读写函数 ##### read_s7 **描述**: S7通用读取 ```python def read_s7(plc_type: str, ip: str, slot: int, rack: int, data_type: str, block_and_offset: str) -> Any ``` **参数**: - `slot`: CPU模块的插槽号 - `rack`: 中央机架 - `data_type`: 在Int、DInt、Word、DWord、String、Bool中可选 ##### write_s7 **描述**: S7通用写入 ```python def write_s7(plc_type: str, ip: str, slot: int, rack: int, data_type: str, block_and_offset: str, value: Any) -> bool ``` --- ### Websocket协议 #### send_msg_to_wsc_by_client_ip **描述**: 根据IP向客户端发送消息 ```python def send_msg_to_wsc_by_client_ip(msg: str, ip: str) -> None ``` **参数**: - `msg`: 字符串类型,表示要发送的消息 - `ip`: 字符串类型,表示接收消息的客户端IP #### send_msg_to_wsc_by_client_name **描述**: 根据客户端名称向客户端发送消息 ```python def send_msg_to_wsc_by_client_name(msg: str, client_name: str) -> None ``` **参数**: - `msg`: 字符串类型,表示要发送的消息 - `client_name`: 字符串类型,表示接收消息的客户端名称 #### get_websocket_client_ip **描述**: 获取所有WebSocket客户端的IP ```python def get_websocket_client_ip() -> list[str] ``` **返回值**: 返回一个字符串列表,包含所有客户端的IP #### get_websocket_client_name **描述**: 获取所有WebSocket客户端名称 ```python def get_websocket_client_name() -> list[str] ``` **返回值**: 返回一个字符串列表,包含所有客户端名称 --- ## 任务管理 ### check_task_param **描述**: 校验输入参数中的task_id和task_label字段对应的数据是否在数据库中存在 ```python async def check_task_param(param: str) -> bool ``` **参数**: param是JSON字符串,包含task_id和task_label字段 **返回值**: True:任务数据存在,False:不存在 ### create_wind_task **描述**: 异步创建并运行一个任务 ```python async def create_wind_task(param: str) -> str ``` **参数**: param是JSON字符串,包含: - task_id: 任务类型id - task_label: 任务名称 - task_record_id: 任务实例id - input_params: 任务参数(JSON字符串) **返回值**: JSON字符串,包含code(200表示成功,-1表示失败)和msg字段 ### get_task_record_by_id **描述**: 根据任务实例ID查询任务实例 ```python async def get_task_record_by_id(task_record_id: str) -> str ``` **参数**: task_record_id,任务实例的唯一ID **返回值**: 存在返回JSON格式字符串,不存在返回"null" ### sync_create_wind_task **描述**: 创建并运行一个任务(阻塞方法) ```python async def sync_create_wind_task(task_param: str) -> str ``` **返回值**: "9013":任务正常结束,"9014":任务异常结束 ### terminate_tasks **描述**: 终止任务 ```python async def terminate_tasks(param: str) -> None ``` **参数**: param是JSON数组字符串,包含要终止的任务记录ID列表 ### mark_complete **描述**: 任务封口 ```python async def mark_complete(task_id: str, auto_get_token: bool = True) -> Dict[str, Any] ``` **返回值**: 字典类型,包含封口结果信息 --- ## 库位管理 ### is_point_exist **描述**: 检查站点是否存在 ```python async def is_point_exist(point_name: str) -> bool ``` ### check_site_existed_by_site_id **描述**: 检查库位是否存在 ```python async def check_site_existed_by_site_id(site_id: str) -> bool ``` ### find_sites_by_condition **描述**: 根据条件获取库位 ```python async def find_sites_by_condition(conditions: str, sort: str) -> str ``` **参数**: - `conditions`: 查询条件JSON字符串,支持的字段: - area: 区域名 - content: 货物 - filled: 是否有货 - group_names: 库区名 - locked: 是否已锁定 - site_ids: 库位id列表 - tags: 库位标签 - `sort`: 排序方式,"ASC"顺序排序,"DESC"倒序排序 **返回值**: 库位列表JSON字符串 **使用示例**: ```python # 查询库位id为E1-1且有货的库位 condition = { "site_ids": ["E1-1"], "filled": True } site = await find_sites_by_condition(json.dumps(condition), "ASC") ``` ### update_sites_by_condition **描述**: 根据条件更新库位 ```python async def update_sites_by_condition(conditions: str, values: str) -> int ``` **参数**: - `conditions`: 更新条件JSON字符串 - `values`: 修改的字段JSON字符串 **返回值**: 更新成功的数据库记录行数 **使用示例**: ```python # 对库位E1-1进行加锁 condition = {"site_ids": ["E1-1"], "locked": False} value = {"locked": True, "locked_by": "task123"} result = await update_sites_by_condition(json.dumps(condition), json.dumps(value)) ``` ### find_available_sites_by_condition **描述**: 根据条件获取有效库位(未禁用且同步成功的库位) ```python async def find_available_sites_by_condition(conditions: str, sort: str) -> str ``` ### update_site_ext_field_by_id_and_ext_field_name **描述**: 根据条件更新库位扩展字段值 ```python async def update_site_ext_field_by_id_and_ext_field_name(conditions: str) -> None ``` --- ## 机器人管理 ### is_robot_exist **描述**: 校验机器人是否存在 ```python async def is_robot_exist(robot_name: str) -> bool ``` ### get_lite_robots_status **描述**: 获取机器人基本信息 ```python async def get_lite_robots_status() -> str ``` **返回值**: 包含所有机器人详细信息的JSON数组字符串 ### get_lite_robots_status_by_id **描述**: 根据ID获取机器人基本信息 ```python async def get_lite_robots_status_by_id(agv_id: str) -> str ``` **参数**: agv_id,机器人ID或名称 **返回值**: 机器人信息JSON字符串,未找到返回空对象{} ### get_vehicle_station **描述**: 根据ID获取机器人位置 ```python async def get_vehicle_station(agv_id: str) -> str ``` **返回值**: 包含last_station和station字段的JSON字符串 ### query_charge_param **描述**: 查询所有机器人充电阈值 ```python async def query_charge_param() -> Optional[str] ``` **返回值**: 包含机器人充电参数的JSON数组字符串 ### modify_charge_param **描述**: 修改机器人充电阈值 ```python async def modify_charge_param(param: str) -> bool ``` **参数**: param,包含机器人ID和充电参数的JSON字符串 **支持的参数字段**: - exchange_power: 换货电量阈值 - task_power: 任务电量阈值 - charge_power: 充电电量阈值 - min_power: 最小电量 - max_power: 最大电量 --- ## 缓存数据管理 ### get_cache_param **描述**: 获取缓存数据 ```python async def get_cache_param(key: str) -> str | None ``` **参数**: key,缓存键 **返回值**: JSON格式字符串,不存在返回None ### put_cache_param **描述**: 缓存数据 ```python async def put_cache_param(key: str, value: str) -> None ``` **参数**: - `key`: 缓存键 - `value`: 缓存值,如果要缓存对象需要先序列化为JSON字符串 ### clear_cache_param **描述**: 删除缓存数据 ```python async def clear_cache_param(key: str) -> None ``` ### get_all_cache_params **描述**: 获取所有的缓存数据 ```python async def get_all_cache_params() -> str ``` **返回值**: JSON格式字符串,不存在返回空字符串 --- ## 系统工具 ### create_uuid **描述**: 创建唯一的ID编号 ```python def create_uuid() -> str ``` **返回值**: 表示一个唯一ID编号的字符串 ### json_to_xml **描述**: 将JSON字符串转化为XML字符串 ```python def json_to_xml(param: str) -> str ``` ### md5_encode **描述**: MD5字符串加密 ```python def md5_encode(param: str) -> str ``` **返回值**: 32位小写字符串 ### base64_encode **描述**: Base64字符串重编码 ```python def base64_encode(param: str) -> str ``` **返回值**: UrlBase64重编码后的字符串 ### trans_to_page_obj **描述**: 转换成分页对象 ```python def trans_to_page_obj(total_count: int, current_page: int, page_size: int, total_page: int, page_list: str) -> str ``` **参数**: - `total_count`: 分页数据的总条数 - `current_page`: 当前是第几页 - `page_size`: 每页显示的数量 - `total_page`: 总页数 - `page_list`: 当前页的数据 ### get_settings_config_value **描述**: 获取settings.py的配置 ```python def get_settings_config_value(key: str) -> str ``` **参数**: key,settings.py中所要获取配置的字段名 **返回值**: JSON字符串 --- ## 数据库操作 ### jdbc_execute_sql **描述**: 执行SQL语句 ```python def jdbc_execute_sql(sql: str) -> bool ``` **参数**: sql,创建表的SQL语句 **返回值**: True:SQL命令执行成功,False:执行失败 ### jdbc_query **描述**: 使用SQL查询数据 ```python def jdbc_query(sql: str) -> str ``` **参数**: sql,SQL查询语句 **返回值**: JSON格式的查询结果字符串 ### jdbc_insert_or_update **描述**: 更新数据 ```python def jdbc_insert_or_update(sql: str, *sql_params: Any) -> int ``` **参数**: - `sql`: SQL语句字符串 - `sql_params`: 可动态扩展的参数 **返回值**: 0表示更新失败,大于0的数字表示更新的记录数目 **使用示例**: ```python sql = "update employee set age = 25 where name = ? and id = ?" jdbc_insert_or_update(sql, "bob", 123) ``` ### jdbc_query_count **描述**: 查询数据数量 ```python def jdbc_query_count(sql: str) -> Optional[int] ``` **参数**: sql,SQL语句字符串(只能使用select count语句) **返回值**: None表示查询失败,其他数字表示查询到的记录数目 --- ## 文件操作 ### read_file_to_string **描述**: 根据文件名读取脚本目录下的文件内容 ```python def read_file_to_string(file_name: str) -> Optional[str] ``` **参数**: file_name,目标文件的名称(带后缀,例如a.txt) **返回值**: 成功返回文件内容字符串,失败返回None --- ## 日志相关 ### get_logger **描述**: 获取日志打印对象 ```python def get_logger() -> Logger ``` **返回值**: 日志对象,包含info、debug、warn、error方法 **使用示例**: ```python get_logger().info("hello world") get_logger().error("there is an error.", Exception("错误详情")) ``` ### script_log **描述**: 在脚本页面下打印日志 ```python def script_log(level: str, function_name: str, content: any) -> None ``` **参数**: - `level`: 日志等级,可选"INFO"、"ERROR" - `function_name`: 函数签名,用于快速定位信息 - `content`: 日志信息 --- ## 注册方法 **注意:以下方法需要在boot()函数中调用** ### define_scheduled_functions **描述**: 定时执行脚本方法 ```python def define_scheduled_functions(is_parallel: bool, delay: int, period: int, function_name: str, args: list) -> None ``` **参数**: - `is_parallel`: 是否并行 - `delay`: 启动延迟执行的时间,单位毫秒 - `period`: 脚本方法的周期,单位毫秒 - `function_name`: 周期执行的方法名 - `args`: 周期执行的方法的参数 ### register_button **描述**: 向RDS注册管理后台可见的按钮 ```python def register_button(label: str, remark: str, script_function: str, level: str, type: int = 0) -> None ``` **参数**: - `label`: 按钮名 - `remark`: 按钮备注 - `script_function`: 点击按钮触发的方法名(注意该方法不能带参数) - `level`: 按钮等级,用颜色区分(blue:蓝色,yellow:黄色,red:红色) - `type`: 0:普通按钮,1:导出按钮 ### register_handler **描述**: 在脚本中注册接口方法 ```python def register_handler(method: str, path: str, callback: str, auth: bool) -> None ``` **参数**: - `method`: HTTP请求方式,支持POST、GET - `path`: 接口的URL路径 - `callback`: 处理接口的脚本方法名 - `auth`: 调用此接口是否需要登录 --- ## 多线程及时间 ### sleep **描述**: 休眠指定时间 ```python async def sleep(ms: int) -> None ``` **参数**: ms,休眠的时间,单位毫秒 **使用示例**: ```python # 异步休眠1秒 await sleep(1000) ``` ### current_time_millis **描述**: 获取当前系统时间戳 ```python def current_time_millis() -> int ``` **返回值**: 当前系统的毫秒时间戳 ### now_date **描述**: 获取当前时间 ```python def now_date() -> str ``` **返回值**: 按照yyyy-MM-dd HH:mm:ss格式的字符串 ### time_millis_format **描述**: 将时间戳转为日期格式 ```python def time_millis_format(time: int) -> str ``` **参数**: time,毫秒时间戳 **返回值**: 按照yyyy-MM-dd HH:mm:ss格式的字符串 --- ## 手持端相关 ### 通知功能 #### notice_operator **描述**: 通知手持端(工位/岗位) ```javascript function noticeOperator(workTypes: string, workStations: string, content: string, needConfirm: boolean, keepTime: number): void ``` **参数**: - `workTypes`: 要通知的岗位,多岗位间逗号分隔 - `workStations`: 要通知的工位,多工位间逗号分隔 - `content`: 通知的内容 - `needConfirm`: 是否需要手持端用户点击确认后通知弹框才会消失 - `keepTime`: 通知弹框在手持端的保持时间,单位秒 #### notice_operator_by_user **描述**: 通知手持端用户 ```javascript function noticeOperatorByUser(userNames: string, content: string, needConfirm: boolean, keepTime: number): void ``` ### 界面控制 #### set_pad_label_by_menu_id **描述**: 通过menuId修改手持端按钮的label ```javascript function setPadLabelByMenuId(menuId: String, label: String): void ``` #### set_pad_background_by_menu_id **描述**: 通过menuId修改手持端按钮的背景色 ```javascript function setPadBackgroundByMenuId(menuId: String, background: String): void ``` #### set_pad_disable_by_menu_id **描述**: 通过menuId设置手持端按钮是否禁用 ```javascript function setPadDisableByMenuId(menuId: String, disable: boolean): void ``` --- ## 总结 本文档涵盖了VWED在线脚本系统中所有可用的内置函数,按功能模块进行了详细分类。开发者可以根据实际需求选择合适的函数来实现业务逻辑。 ### 主要特性: 1. **协议通信**:支持多种工业协议(Modbus、S7、OPC-UA、MQTT等) 2. **任务管理**:完整的任务生命周期管理 3. **库位管理**:灵活的仓储库位操作 4. **机器人管理**:AMR机器人状态监控和控制 5. **系统工具**:丰富的系统级工具函数 6. **数据库操作**:直接的SQL查询和操作能力 ### 使用建议: - 异步函数需要使用await关键字调用 - 注册相关的函数必须在boot()函数中调用 - 错误处理要根据各函数的异常说明进行相应处理 - 建议在使用前先了解相关协议和系统的基础知识