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

2018-02-07 02:45:38 +08:00
 yellowtail

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

6031 次点击
所在节点    问与答
6 条回复
yellowtail
2018-02-07 03:03:59 +08:00
会不会是线的问题和仪器的问题呢?线是很便宜的那种,仪器也无法被 keysight 官方的 io control 软件识别
yellowtail
2018-02-07 03:43:37 +08:00
增加 read_termination = '\r'就可以实现了! 不过 read 还是用不了只能用 query 和 ask 代替 而且不使用 write_termination = '\r'没影响 虽然不知道怎么回事...希望可以帮助到其他有类似困难的人吧
yellowtail
2018-02-07 04:08:52 +08:00
还有一个问题就是仪器总是提示 undefined header 代码 113 伴有报警 重复几次以后就不让接入了
234235
2018-02-07 08:54:27 +08:00
既然是 232 接口,就没有必要用 VISA 库,直接调 Serial 库不是更方便?
另外,猜测可能是 DTR RTS 流控的问题,建议你再看一下设备文档,另外可以用串口助手测试一下。
yellowtail
2018-02-26 22:13:47 +08:00
@234235 主要是不会 都是按着例子自己做的 身边没有能问的
234235
2018-02-27 08:58:38 +08:00
我又看了一下,你这个设备是泰克的,用是德的软件肯定识别不了啊。
你是用的 usb 转 232 线吗?先找个串口助手试试指令。
设备是可以调波特率流控和结束符的,你按照文档调一下。能用串口助手通信了,再用 py 去控制。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/429065

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX