获取接口

获取当前Mech-Viz工程所用的步骤

获取当前Mech-Viz工程所用步骤的函数如下所示。

def get_viz_task_names(self, msg={}, timeout=None):
    result = self.call_viz("getAllTaskNames", msg, timeout)
    logging.info("Property result: {}".format(json.loads(result)))
    return result

调用 get_viz_task_names() 后,返回 json 格式的字符串,表示获取的所有步骤。

获取Mech-Viz或Mech-Vision工程中的参数

获取 Mech-Viz 或 Mech-Vision 工程中参数的函数如下所示。

def get_property_info(self, msg={}, get_viz=True, timeout=None):
    result = (self.call_viz if get_viz else self.call_vision)("getPropertyInfo", msg, timeout)
    logging.info("{0} property result: {1}".format("Viz" if get_viz else "Vision", json.loads(result)))
    return result

在调用时,未指定 msg 参数中的 “type”,则表示获取所有参数。若指定,则仅获取相应的参数。例如,调用 get_property_info(msg={"type": "move"}) 后,返回 json 格式的字符串,表示获取的移动步骤参数。

获取Mech-Vision或Mech-Viz运行状态

Adapter类中的on_exec_status_changed()函数用于获取Mech-Vision或Mech-Viz运行状态。每次Mech-Vision或Mech-Viz运行结束后,会将自己的运行信息通过on_exec_status_changed()函数回传给Adapter。因此,on_exec_status_changed()函数会在Mech-Vision或Mech-Viz工程运行结束后被调用,具体代码如下。

def on_exec_status_changed(self, req_dict, err_dict=None):
    project_dir = req_dict.get(jk.project_dir, "")
    source_app = req_dict.get(jk.source_app, "")
    exit_info = req_dict.get(jk.exit_info, {})
    error_code = exit_info.get(jk.error_code, "")
    msg = exit_info.get(jk.msg, "")
    project_dict = self.get_vision_projects_dict()
    if source_app == jk.mech_vision and project_dir in project_dict.values():
        project_num = list(project_dict.keys())[list(project_dict.values()).index(project_dir)]
    elif source_app == jk.mech_viz:
        project_num = 0
    else:
        return
    self.err_dict[project_num] = [error_code, msg] if error_code and error_code[-4:] != "0000" else None
    if err_dict:
        err_dict[project_num] = [error_code, msg] if error_code and error_code[-4:] != "0000" else None

上述代码中,以下变量的解释说明如下表所示。

变量名 说明

jk.project_dir

工程路径。

jk.source_app

状态来源,取值为Mech-Vision或Mech-Viz)。

jk.exit_info

软件退出的信息,数据类型为字典。

jk.error_code

状态码编号。

jk.msg

状态码编号对应的详细信息。

project_dict

保存工程相关的信息,数据类型为字典。例如,{1:"simulate_vis"}表示Mech-Vision工程的编号为1,工程名称为simulate_vis。

0表示工程为Mech-Viz工程。

jk.error_code(状态码编号)大致可以分为如下两类(Mech-Vision和Mech-Viz),如下表所示。

类别 状态码编号 状态码编号对应的简要信息

与Mech-Vision相关的状态码

CV-EXXXX

VISION_RUN_ERROR

CV-E0201

VISION_CAMERA_CONNECT_FAIL

CV-E0401

VISION_RECIPE_NOT_SET

CV-E0403

VISION_RECP_NUM_OUT_RANGE

MP-EXXXX

VISION_PLANNER_RUN_ERROR

MP-E0001

VISION_PLANNER_PLAN_FAILED

MP-E0005

VISION_PLANNER_NOT_REACHABLE

MP-E0008

VISION_PLANNER_SINGULARITY

MP-E0011

VISION_PLANNER_COLLISION

MP-E0019

VISION_PLANNER_NO_TARGET_IN_VISUALMOVE

MP-E0021

VISION_PLANNER_VISION_SERVER_NOT_REGISTED

MP-E0022

VISION_PLANNER_SET_TOOL_INVALID

与Mech-Viz相关的状态码

MP-EXXXX

VIZ_RUN_ERROR

MP-E0001

VIZ_PLAN_FAILED

MP-E0005

VIZ_NOT_REACHABLE

MP-E0008

VIZ_SINGULARITY

MP-E0011

VIZ_COLLISION

MP-E0016

VIZ_VISION_NO_RESULT

MP-E0017

VIZ_VISION_NOT_CALLED

MP-E0018

VIZ_VISION_NO_CLOUD_IN_ROI

MP-E0019

VIZ_NO_TARGET_IN_VISUALMOVE

MP-E0020

VIZ_VISION_REUSE_PLAN_FAILED

MP-E0021

VIZ_VISION_SERVER_NOT_REGISTED

MP-E0022

VIZ_SET_TOOL_INVALID

MP-E0023

VIZ_BRANCH_OUTPORT_ERROR

此外,用户可通过继承on_exec_status_changed()函数,对self.err_dict进行处理,示例代码如下。

def on_exec_status_changed(self, req_dict, err_dict=None):
    super().on_exec_status_changed(req_dict, err_dict)
    err_list = self.err_dict.get(0, [])
    if err_list and err_list[0] not in ["MP-E0020"]:
        self.handle_viz_error()

我们重视您的隐私

我们使用 cookie 为您在我们的网站上提供最佳体验。继续使用该网站即表示您同意使用 cookie。如果您拒绝,将使用一个单独的 cookie 来确保您在访问本网站时不会被跟踪或记住。