问题标签 [pyvisa]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
294 浏览

python - 将浮点列表转换为类似字节的对象会导致图像损坏

我正在尝试将数据从 Keysight 示波器转换为.pngImage。当我在网上查看如何做到这一点时,我偶然发现了以下代码:

上面代码的问题是我不确定是什么do_query_ieee_block。我以为它在下面,pyvisa但在那里找不到。在网上查看后,我了解到这query_binary_valuespyvisa假设数据在IEEE.

根据这些信息,我编写了以下代码:

这会创建一个图像,但结果很糟糕:

损坏的图像

并从截图工具:

损坏的图像

正如你所看到的,只有图像的上 10% 是好的,但其余的不是(需要提到的是,每次我从范围内检索新数据时,我都会得到一个损坏的不同区域,介于 50-90图片的 %。大多数情况下,损坏的区域在 80-90% 之间,如上图所示)。

所以基本上我的问题是:

  1. 难道是我没有从仪器中读取全部数据?如果是这样,如何克服这个问题?

  2. 会不会是因为包装方式不对?如果是这样,解决方案是什么?

0 投票
1 回答
41 浏览

python - 使用 visa 和 get_instrument() 时出现“异常忽略:”。为什么?

我似乎收到了与 visa.ResourceManager.get_instrument() 命令相关的“异常忽略:”警告消息。但是,我不明白为什么我会收到警告。

  • 请注意,没有与警告相关的方法或类或任何其他内容。这让我觉得当我的脚本退出时它正在发生。
  • 我可以通过注释掉代码中的“self.rm.get_instrument()”行来消除警告。

即使出现警告,从中提取此代码的脚本也似乎可以正常运行。然而,有一个我不明白的警告让我很紧张。

我的代码示例如下。我正在使用 Python 3.5.1 和 Visa 1.8。

关于警告根本原因的建议将不胜感激。

编辑:我添加了我收到的警告(?)消息,格式为代码。

这是我收到的警告(?)消息。

0 投票
1 回答
305 浏览

python - add line between points in pyvista plotter

I have 3d points in file.I read them :

And display them this way

I want to add a line between some points (i.e from point to point as they appear in the file) Can I do this? how?

0 投票
2 回答
875 浏览

python - 当我的 TCP 设备通过 USB 到以太网适配器连接时,我为 pyvisa 使用什么连接字符串?

我正在尝试与支持 SCPI 的 BraggMETER 询问器进行通信。

操作系统:Windows 10

连接硬件:j5create JUH470 USB 3.0 Multi-Adapter Gigabit Ethernet / 3-Port USB 3.0 HUB

我的部分困惑:我应该作为 USB 设备还是作为 TCPIP 设备访问?

当我通过 Telnet 连接时,一切顺利。IP 地址和端口分别为 10.0.0.10 和 3500。

在 Python 中,我使用的是 pyvisa 库。

错误总是在rm.open_resource。我尝试了许多连接字符串。他们给出了不同的错误。以下是其中三个:

更新 1

我下载了 National Instruments NI-Max 并使用了他们的 NI I/O trace。此连接字符串“有效”:

但是,我仍然收到超时错误。尝试确保发送换行符终止字符并将超时时间提高到 5 秒(这确实生效,因为它延迟了超时错误的记录)。没有骰子。仍然给出超时错误。

更新 2

虽然设置不同,但其他人报告了使用 NI GPIB-to-USB 卡 (GPIB-USB-HS) 的问题。常见的线程是USB适配器...

https://community.keysight.com/thread/37567

0 投票
0 回答
905 浏览

python-3.x - 使用 Python (Pyvisa) 连接到仪器

我正在尝试使用 python 自动化 Keithley 2000 源表。我使用以下代码连接到仪器(GPIB):

由于 gpib 不是在这里建立的,所以我尝试了以下所有方法,但出现以下错误:

有谁能帮助我吗?

0 投票
1 回答
1292 浏览

python - 在 Python 中使用 PyVISA 通过 GPIB 连接到仪器

我正在研究接触电阻,为此我将使用 Keithley 2400 源表和 Keithley 2182a 纳伏表。两台仪器都通过带有 Keithley KUSB-488b 适配器的 USB 连接到 Windows 计算机。

我正在使用 Python、Pyvisa 模块和 National Instruments 后端 (NI VISA) 创建一个脚本,让我能够进行所需的测量。但是,我在与仪器通信时遇到了麻烦。根据 Pyvisa 开发人员提供的官方文档,我已经运行了几个简单的脚本,但是我无法连接任何一种仪器。以下简单的代码块可能有助于我的解释:

第 4 行的结果应该给我一个我的仪器地址的列表。但是,这些都不正确,因此VI_ERROR_TMO当我尝试第 4 行提供的四个地址时,我得到一个超时错误 ()。这个简单代码块的第 4 行的预期输出将是两个仪器的 GPIB 地址,根据文档。我尝试使用 KI-488 诊断工具与两个设备进行通信。这两个我都成功地沟通了。SMU 的地址是 GPIB::24,纳伏表是 GPIB::7。

我还尝试在更复杂的脚本(当前扫描)中传递从诊断工具获得的 GPIB 地址。然而这导致

pyvisa.errors.VisaIOError: VI_ERROR_LIBRARY_NFOUND (-1073807202)

我在网上搜索了类似的错误,其中大多数是缺少 dll 或位数不正确的结果。然而这不是我的情况,因为一个简单的python -m visa info证明实现的后端是正确的。我也尝试过通过resourcemanager( path ),但这也没有成功。

另外,我尝试安装 Keithley I/O Layer,但还是没有成功。此外,在 Keithley 通信器中,这两个设备实际上都带有相应的 GPIB 地址。问题在于使用 Python 和正确的地址。

0 投票
1 回答
85 浏览

python - 从另一个 Python 文件导入类时出现问题

我对 Python 很陌生,我很难理解使用 Python 的某些方面。

我正在编写代码来使用pyvisa控制几个仪器。为简单起见,我在这里只展示一种仪器(Thor Labs 功率计)。如果我将所有代码放在一个文件中,我可以让事情正常工作。下面的代码首先搜索可用的仪器,并定义仪器 ID ( ThorID ):

然后我定义类功率计

最后 3 行打开与仪表的连接并设置波长(至 400 nm)。我可以在一个 .py 文件中确认所有这些代码是否有效。

尝试将 Class 拆分为单独的 .py 文件时遇到了很多麻烦。我想这样做是为了让我的代码更整洁......最终我将添加一个 GUI 和另一个类,我不想要一个巨大的繁琐的文本单体。

我天真的第一次尝试将此作为我的主要代码,上面编写的类保存在PM_class.py中:

但我在PM_class.py中收到错误- NameError: name 'ThorID' is not defined

我不明白,因为在我尝试导入类之前,ThorID 已在该行中明确定义?

任何有关如何解决此问题的建议都将非常受欢迎!

0 投票
0 回答
20 浏览

python - 使用导入的函数作为 tkinter 回调

我正在尝试编写一些 Python 代码来控制一些使用 pyvisa 的仪器。我是 Python 新手,所以请多多包涵。我有一些有效的代码,但我真的很难弄清楚如何将它与基于 tkinter 的 GUI 接口。

对于我的工作代码,我有一个包含Main.py主代码的主文件 ( ) 和两个模块 (powermeter.pypowersupply.py),其中包含用于连接两个仪器的函数。这工作正常。此处显示了一些示例代码,为简单起见,我仅显示了与一种仪器(电源)相关的代码。connect()来自模块 powersupply.py 的一个功能(再次,为了简单起见仅显示一个)是:

主程序在可用的 VISA 仪器列表中搜索与我对我们使用的仪表品牌/型号的期望相匹配的 VISA ID。这被保存到变量ThorID中。

然后,我可以使用该函数connect()在找到仪表后连接到仪表,然后返回变量pm,(据我所知)这是其他函数所需的完整 VISA 资源名称/ID(此处未显示):

到目前为止,一切都很好。但是,在考虑如何将其集成到 GUI 时,我的理解完全崩溃了。在 GUI 中有一个按钮 ( tk.Button) Connect to device。当我按下这个按钮时,本质上我想执行命令pm = powermeter.connect(rm, ThorID),建立连接并返回变量pm。但是tkinter要我使用语法command = function_name(),我知道语法command = pm = powermeter.connect(rm, ThorID)不对!

我尝试在主程序中定义另一个函数,称为 eg connect_instruments()。但是,这似乎也是错误的方法,因为它似乎在我按下按钮之前就执行了!

如果有人可以在这里提供一些建议,那就太好了。老实说,我发现这令人难以置信的混乱,即使我想做的事情(按下此按钮时执行此代码)看起来很简单!

0 投票
2 回答
76 浏览

python - python - pyvisa - 试图从没有读取_termination的设备读取可变长度数据

我可以使用 miniterm.py 读写信号发生器。流中没有 read_termination 字符(根据设备制造商的手册)。我附上了 miniterm 的调试输出以显示一些事务。我是否缺少让 pyvisa 读取任意长度的返回字符串而不终止的东西?

------------------------miniterm 输出 ------------ --

设置:/dev/ttyUSB0 9600,8,N,1 RTS:活动 DTR:活动 BREAK:不活动 CTS:不活动 DSR:不活动 RI:不活动 CD:不活动 软件流控制:不活动 硬件流控制:不活动 串行输入编码:UTF- 8串口输出编码:UTF-8 EOL:LF过滤器:调试默认直接

[TX:'R'] [TX:'M'] [TX:'W'] [TX:'\n'] [RX:'3'] 3 [RX:'6'] 6 [TX:'R '] [TX:'F'] [TX:'W'] [TX:'\n'] [RX:'0'] 0 [TX:'R'] [TX:'M'] [TX:' A'] [TX:'\n'] [RX:'2'] 2 [RX:'0'] 0 [RX:'0'] 0 [TX:'R'] [TX:'F'] [ TX:'A'] [TX:'\n'] [RX:'1'] 1 [RX:'0'] 0 [RX:'0'] 0 [RX:'0'] 0


任何指向正确方向的指针都会有所帮助。这是一种非常奇怪的设备。我尝试过的大多数事情都以“正在使用的设备”或“超时”错误结束。

先感谢您。

罗宾

0 投票
0 回答
328 浏览

python - 使用pyvisa包与泰克示波器通信时read_raw抛出超时错误

我正在尝试使用与 MDO3014 示波器通信的 pyvisa 读取原始数据。

我试过的代码如下: -

我收到超时错误,错误日志的回溯如下:-