-1

我需要使用 python 2.7 与示波器进行通信,Agilent Infiniium DCA-J 86100C。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.
4

1 回答 1

1

我能够得到帮助。目标是截取示波器上的显示屏幕截图并将此屏幕截图保存到连接的 PC。图片在保存之前必须修改。此外,函数“.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()

不幸的是,我不是专家,所以我无法解释它为什么有效。

于 2019-10-29T15:44:00.677 回答