인터페이스를 획득하기

현재 최신 버전 (2.1.2)에 대한 매뉴얼을 보고 계십니다. 다른 버전에 액세스하려면 페이지 오른쪽 상단 모서리에 있는 '버전 전환' 버튼을 클릭하세요.

■ 현재 사용하고 있는 제품의 버전이 확실하지 않은 경우에는 언제든지 당사 기술 지원팀에 문의하시기 바랍니다.

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()

이 페이지가 도움이 되었습니까?

다음 방법을 통해 피드백을 보내주실 수 있습니다:

저희는 귀하의 개인정보를 소중히 다룹니다.

당사 웹사이트는 최상의 사용자 경험을 제공하기 위해 쿠키를 사용하고 있습니다. "모두 수락"을 클릭하시면 쿠키 사용에 동의하시는 것이며, "모두 거부"를 클릭하시면 이 웹사이트 방문 시 귀하의 정보가 추적되거나 기억되지 않도록 단일 쿠키만 사용됩니다.