2016-08-19 4 views
2

GPIB 장치와 통신하기 위해 python 3과 pyvisa 1.8을 사용하려고합니다.pyvisa 예외 처리기를 설치하는 방법은 무엇입니까?

그러나 다른 유형의 excptions를 구별하는 방법. 예를 들어

:

개방에 실패
try: 
    visa.ResourceManager().open_resources('COM1') 
exception visa.VisaIOError: 
    <some code> 

, 그것은 일반적인 예외 VisaIOError을 생성하지만, 어떻게 포트가 사용중인, 알 수 또는 포트가 존재하지 않거나 뭔가? 같은

:

try: 
    visa.ResourceManager().open_resources('COM1') 
exception <1>: 
    # device busy 
exception <2>: 
    # device does not exist 
exception ... 

예외의 다른 유형을 무엇을 잡으려고 그래서 나는 올바른 위치 < 1> < 2>를해야합니까? 당신은 어떻게 든 그것을 잘못된 데이터를 제공하는 경우

답변

0

비자는 ValueErrors와와 AttributeError를 제기 할 수

감사합니다. IOError가 발생하는 것을 본 적이 없지만 IOError를 발생시킬 수 있다고 생각합니다.

하지만 대부분은 VisaIOError를 발생시킵니다. 당신이 예외에 대한 자세한 정보를 얻을 할 수

사항은 다음과 같습니다

_rm = visa.ResourceManager() 
try: 
    _rm.open_resources('COM1') 
exception visa.VisaIOError as e: 
    print(e.args) 
    print(_rm.last_status) 
    print(_rm.visalib.last_status) 

당신은 visa.constants.StatusCode

if _rm.last_status == visa.constants.StatusCode.error_resource_busy: 
    print("The port is busy!") 

last_status 및 visalib에서 다양한 상수 이러한 상태 코드를 비교할 수 있습니다 .last_status는 때로는 동일한 상태 코드를 제공하지만 때로는 그렇지 않기 때문에 두 코드를 모두 확인해야합니다.

ResourceManager를 인스턴스화합니다. 수업을 할 수없는 인스턴스로 할 수있는 일이 있습니다. 또한 짧은 이름을 지정하면 수업 시간이 짧아집니다.

관련 문제