import json from sys import argv def validate_resp(_id, response, w2t): match _id: case 'DATA ERR': w2t(f"数据处理错误,需要确认", 0, 4, 'red', tab_name='Automatic Test') case 'DATA READ ERR': w2t(f"无法读取数据,需要确认", 0, 3, 'red', tab_name='Automatic Test') case 'NOT SUPPORT': w2t(f"不支持的功能,需要确认", 0, 2, 'red', tab_name='Automatic Test') if not response: w2t(f"无法获取{id}请求的响应信息", 0, 1, 'red', tab_name='Automatic Test') def execution(cmd, hr, w2t, **kwargs): _id = hr.excution(cmd, **kwargs) _msg = hr.get_from_id(_id) if not _msg: w2t(f"无法获取{_id}请求的响应信息", 0, 6, 'red', tab_name='Automatic Test') else: _response = json.loads(_msg) validate_resp(_id, _response, w2t) return _response def get_state(hr, w2t): # 获取机器状态 _response = execution('state.get_state', hr, w2t) stat_desc = {'engine': '上电状态', 'operate': '操作模式', 'rc_state': '控制器状态', 'robot_action': '机器人动作', 'safety_mode': '安全模式', 'servo_mode': '伺服工作模式', 'task_space': '工作任务空间'} for component, state in _response['data'].items(): w2t(f"{stat_desc[component]}: {state}", tab_name='Automatic Test') # 获取设备伺服信息 _response = execution('device.get_params', hr, w2t) dev_desc = {0: '伺服版本', 1: '伺服参数', 2: '安全板固件', 3: '控制器', 4: '通讯总线', 5: '解释器', 6: '运动控制', 8: '力控版本', 9: '末端固件', 10: '机型文件', 11: '环境包'} dev_vers = {} for device in _response['data']['devices']: dev_vers[device['type']] = device['version'] for i in sorted(dev_desc.keys()): w2t(f"{dev_desc[i]}: {dev_vers[i]}", tab_name='Automatic Test') # 设置示教器模式 _response = execution('state.set_tp_mode', hr, w2t, tp_mode='without') def warning_info(hr, w2t): for msg in hr.c_msg: if 'alarm' in msg.lower(): w2t(msg, tab_name='Automatic Test') for msg in hr.c_msg_xs: if 'alarm' in msg.lower(): w2t(msg, tab_name='Automatic Test') def main(hr, func, w2t): if hr is None: w2t("无法连接机器人,检查是否已经使用Robot Assist软件连接机器,重试中...", 0, 49, 'red', tab_name='Automatic Test') # func: get_state/ match func: case 'get_state': get_state(hr, w2t) case 'warning_info': warning_info(hr, w2t) if __name__ == '__main__': main(*argv[1:]) # 一、设置/检测机器人状态: # 1. 上电 # 2. 软限位打开 # 3. 示教器断开 # 4. 操作模式/机器人类型 # 5. 控制器状态/工作任务控件/机器人动态 # 二、加载RL程序开始运行 # 1. 怎么触发急停 # 2. 怎么恢复急停 # 3. 怎么采集曲线 # 4. # 三、运行过程中,收集数据,并处理出结果 # 四