Ошибка при попытке установить связь с областью, VisaIOError: VI_ERROR_TMO (-1073807339): истекло время ожидания до завершения операции - PullRequest
0 голосов
/ 16 октября 2019

Мне нужно связаться с областью, Agilent Infiniium DCA-J 86100C, с python 2.7. Компания Keysight предлагает различные Python-коды, хотя я пытаюсь запустить один из них, чтобы помочь мне учиться, но он потерпел крах. Я использую GPIB и Pyvisa для подключения.

Я уже пытался перейти на символы завершения, но это ничего не изменило. Я не уверен, какую скорость я мог бы попробовать.

SCOPE_VISA_ADDRESS = "GPIB0::7::INSTR"
rm = visa.ResourceManager('C:\\Windows\\System32\\visa32.dll')
KsInfiniiVisionX = rm.open_resource(SCOPE_VISA_ADDRESS)
KsInfiniiVisionX.clear()

KsInfiniiVisionX.query(':SYSTEM:DSP "";*OPC?')
KsInfiniiVisionX.write(":HARDcopy:INKSaver OFF")
KsInfiniiVisionX.write(":DISPlay:DATA? PNG,SCReen,COLor")

my_image = KsInfiniiVisionX.read_raw()
Traceback (most recent call last):
  File "X:\...\Get_screen_image_VISA_Python_modified\InfiniiVision_Save_ScreenShot_to_PC_Python-2.7_modified.py", line 201, in <module>
    my_image = KsInfiniiVisionX.read_raw()
  File "C:\Python27\lib\site-packages\pyvisa\resources\messagebased.py", line 306, in read_raw
    chunk, status = self.visalib.read(self.session, size)
  File "C:\Python27\lib\site-packages\pyvisa\ctwrapper\functions.py", line 1582, in read
    ret = library.viRead(session, buffer, count, byref(return_count))
  File "C:\Python27\lib\site-packages\pyvisa\ctwrapper\highlevel.py", line 188, in _return_handler
    raise errors.VisaIOError(ret_value)
VisaIOError: VI_ERROR_TMO (-1073807339): Timeout expired before operation completed.

1 Ответ

0 голосов
/ 29 октября 2019

Мне удалось получить помощь. Цель состояла в том, чтобы сделать снимок экрана с дисплеем и сохранить его на подключенном ПК. Картинка должна быть изменена перед сохранением. Кроме того, причина, по которой функция ".read_raw ()" не сработала, заключается в том, что мне раньше приходилось делать * OPC, но только в команде .write (), а не в .query ().

    KsInfiniiVisionX.write('DISK:SIMAGE "D:\User Files\screen images\TEST.jpg",SCR,INV')
    KsInfiniiVisionX.write('*OPC?')
    complete = KsInfiniiVisionX.read()

    KsInfiniiVisionX.write('DISK:BFILE? "D:\User Files\screen images\TEST.jpg"')
    my_image = KsInfiniiVisionX.read_raw()

    dum  = (my_image[0:1].decode())
    length = int(my_image[1:2].decode())
    size = int(my_image[2:2+length].decode())

    search = dum+str(length)+str(size)
    my_file=my_image.partition(search.encode())

    base_directory = "X:\\..."
    target = open(base_directory + '{}.jpg'.format(file_name), 'wb')
    target.write(my_file[2])
    target.close()

К сожалению, я не эксперт, поэтому не могу объяснить, ПОЧЕМУ это работает.

...