V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
yellowtail
V2EX  ›  问与答

通过 rs232 使用 pyvisa 控制仪器(keithley2400), query 和 read 无响应,但是可以通过 write 进行控制

  •  
  •   yellowtail · 2018-02-07 02:45:38 +08:00 · 6185 次点击
    这是一个创建于 2489 天前的主题,其中的信息可能已经有所发展或是发生改变。

    pyvisa 是 1.8 python 是 3.6.3 操作系统为 win10 64

    google 的结果一般是波特率和 terminator (命令结束标志符号)设置的问题 波特率需要统一 和 terminator 需要设置为 /r /自己摸索着设置了一下 还是一样的错误 希望大家能够一些建议 谢谢!

    代码 import visa import time rm=visa.ResourceManager() print(rm.list_resources()) A=rm.open_resource("ASRL5::INSTR") A.timeout=25000 print(A.query('*IDN? ' )) #A.write_termination = '\r' #A.read_termination = '\r' #A.timeout=25000 #A.write("*RST") #A.write(":SENSE:FUNCTION 'RES'") #A.write(":FORMAT:ELEMENTS RES") #A.write(":OUTPUT ON") #for i in range(1,5): #A.write(":READ?") #data = A.read("TRACE:DATA ") #print(data)

    编译器反馈 ('ASRL1::INSTR', 'ASRL5::INSTR', 'ASRL4::INSTR') Traceback (most recent call last): File "E:/2018261630/18261631.py", line 7, in <module> print(A.query('*IDN? ' )) File "C:\Python\lib\site-packages\pyvisa\resources\messagebased.py", line 407, in query return self.read() File "C:\Python\lib\site-packages\pyvisa\resources\messagebased.py", line 332, in read message = self.read_raw().decode(enco) File "C:\Python\lib\site-packages\pyvisa\resources\messagebased.py", line 306, in read_raw chunk, status = self.visalib.read(self.session, size) File "C:\Python\lib\site-packages\pyvisa\ctwrapper\functions.py", line 1582, in read ret = library.viRead(session, buffer, count, byref(return_count)) File "C:\Python\lib\site-packages\pyvisa\ctwrapper\highlevel.py", line 188, in _return_handler raise errors.VisaIOError(ret_value) pyvisa.errors.VisaIOError: VI_ERROR_TMO (-1073807339): Timeout expired before operation completed.

    Process finished with exit code 1

    6 条回复    2018-02-27 08:58:38 +08:00
    yellowtail
        1
    yellowtail  
    OP
       2018-02-07 03:03:59 +08:00
    会不会是线的问题和仪器的问题呢?线是很便宜的那种,仪器也无法被 keysight 官方的 io control 软件识别
    yellowtail
        2
    yellowtail  
    OP
       2018-02-07 03:43:37 +08:00
    增加 read_termination = '\r'就可以实现了! 不过 read 还是用不了只能用 query 和 ask 代替 而且不使用 write_termination = '\r'没影响 虽然不知道怎么回事...希望可以帮助到其他有类似困难的人吧
    yellowtail
        3
    yellowtail  
    OP
       2018-02-07 04:08:52 +08:00
    还有一个问题就是仪器总是提示 undefined header 代码 113 伴有报警 重复几次以后就不让接入了
    234235
        4
    234235  
       2018-02-07 08:54:27 +08:00   ❤️ 1
    既然是 232 接口,就没有必要用 VISA 库,直接调 Serial 库不是更方便?
    另外,猜测可能是 DTR RTS 流控的问题,建议你再看一下设备文档,另外可以用串口助手测试一下。
    yellowtail
        5
    yellowtail  
    OP
       2018-02-26 22:13:47 +08:00
    @234235 主要是不会 都是按着例子自己做的 身边没有能问的
    234235
        6
    234235  
       2018-02-27 08:58:38 +08:00
    我又看了一下,你这个设备是泰克的,用是德的软件肯定识别不了啊。
    你是用的 usb 转 232 线吗?先找个串口助手试试指令。
    设备是可以调波特率流控和结束符的,你按照文档调一下。能用串口助手通信了,再用 py 去控制。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2963 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 12:45 · PVG 20:45 · LAX 04:45 · JFK 07:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.