问题标签 [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 回答
762 浏览

python - PyVISA 不能写入 7F 以上的十六进制字符

我想使用 PyVISA 通过 RS232 与 Neslab RTE-111 水浴器进行通信。我可以找到该仪器,但我无法与它通信,因为当我尝试发送任何大于“7F”的十六进制字符时,pyvisa“写入”命令会出错。不幸的是,水浴需要发送诸如“CA 00 01 F0 02 01 2C DF”之类的命令。

代码如下。

这给出了错误:

Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Users\Owner\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pyvisa\resources\messagebased.py", line 223, in write count = self.write_raw(message.encode(enco)) UnicodeEncodeError: 'ascii' codec can't encode character '\xca' in position 0: ordinal not in range(128)

对于 \x7f 以下的十六进制值,写入命令似乎工作正常。关于如何发送“\xca”的任何想法?

0 投票
2 回答
920 浏览

python - PyVISA RS232 超时错误(安捷伦电源)

我正在使用 PyVISA 打开与安捷伦电源的通信,当我查询仪器 ID 时,我不断收到超时错误。

我的代码是:

我得到的输出是:

我尝试将读写命令的终止字符指定为 \n,指定波特率,将超时更改为“无”,并将仪器声明为 inst = rm.open_resource('ASRL5::INSTR') 而不是比 inst = rm.open_resource(res[-1])。到目前为止没有任何效果。任何建议将不胜感激!

0 投票
0 回答
169 浏览

python - 在函数中读取数据时出现 pyVISA 错误

我正在编写一个使用 pyVISA 构建值数组并将其保存到 .csv 文件的简单 python 程序。如果我使用 while 循环连续获取数据,该程序可以完美运行,但是当我尝试将 .read() 命令放在函数中时,我收到“给定会话或对象引用无效”错误。此错误仅在我运行该功能时出现。

功能代码段:

但是,这会返回错误:

我编写了更复杂的程序,涉及 tkinter 和 matplotlib 的动画库,我在其中定义了许多涉及读取和写入的实用函数,没有任何问题,但由于某种原因,这个简单的程序没有运行。我不得不假设我错过了一些明显的东西。任何帮助,将不胜感激。

0 投票
1 回答
923 浏览

windows - GPIB 模拟器(PyVISA-sim 的替代品)

在编码时,通过 GPIB 连接仪器并不总是那么容易。Python 提供了使用 PyVISA-sim 模拟仪器的可能性。

除非我弄错了,否则社区并不是很活跃,而且我遇到了几个错误:

1- PyVISA-sim 提供了一大堆“虚拟”工具,但只有一个可以有效地与我的代码通信

2-在创建我自己的 .ymal 文件时,python 无法识别它

我想知道是否有替代方法?

我会比较贪心:有没有GPIB模拟器也可以模拟仪器响应?

例如:在模拟电压表时,虚拟仪器会有效地返回一些“随机”读数。

目标是检查我的 Byte to Single 转换器是否正常工作

谢谢

0 投票
1 回答
1452 浏览

python - pyvisa 无法使用 GPIB-USB-HS 接口连接到 GPIB 仪器

我正在尝试使用 GPIB 与仪器(Agilent 33220A 任意波形发生器)通信,我使用插入计算机 USB 端口的 GPIB-USB-HS 接口。

当我使用 NIMAX explorer 时,仪器正确列出(还有一个通过 USB 连接的 Thorlabs PM100D):

NIMAX explorer 仪器列表

但是,我无法使用 PyVISA 连接到它。这是代码:

输出是:

如您所见,正确列出了通过 USB 连接的 PM100D,但未正确列出连接在 GPIB 10 上的 Agilent。

我尝试直接连接:

但我收到一个 IO 错误:

我在 Windows 7 Pro 64 位操作系统上使用 Python 3.6.0。PyVisa 版本是 1.8。

我不明白我在这里缺少什么。有人有想法吗?

非常感谢 !

0 投票
1 回答
1226 浏览

python - PyVISA - AttributeError:“NIVisaLibrary”对象没有属性“viParseRsrcEx”

我正在尝试使用以下代码连接到设备 Chroma 63600:

但它返回错误:

我正在使用 Ubuntu 16.04,PyCharm 和 Python 2.7 解释器,我已经导入了这个库:

图书馆

也许这些信息有帮助:命令“python -m visa info”返回:

pyvisa信息

0 投票
1 回答
137 浏览

python - Python 脚本调用不同的 python 脚本,然后,从辅助脚本将字符串/结果带到主脚本

我正在编写一个测试软件来控制一些使用 PyVISA 和 VISA 的安捷伦仪器以及一些安捷伦 IO 库。我创建了一个“TesPlan”(testplan.py),它应该“调用”一些其他 Phyton 测试脚本(rf_test.py、rf_test1、rf_test2.py 等)

此时,我正在使用“子流程”来打开并执行我的所有测试,但是,我还没有找到将每个测试的结果纳入我的主测试计划的方法。

请看下面我的代码:

我需要将子测试的状态带入我的主要“测试计划”,以评估状态并允许单元进入下一个测试。

0 投票
1 回答
548 浏览

python-3.x - 用于读取/写入示波器标签的 Python 代码

我编写了一个小的 Python 代码来读回我的泰克示波器上特定通道的标签。以下代码运行良好并给出了预期的结果。

但是,当我尝试更改同一频道的标签时,标签名称不会更改。我也没有收到任何错误。似乎我缺少任何与仪器通信和写入的语法?在下面的代码中,我试图将我的 Ch1 标签重命名为 VDD

请告知是否有人对此有想法。

0 投票
1 回答
204 浏览

python - Python 和 C 应用程序之间的串行端口数据传输(在 Microblaze 上运行)

我正在尝试使用我的 PC 上的 python 控制台来读取和写入在 microblaze 主机上运行的嵌入式 C 应用程序。两者之间的连接是通过 FTDI 芯片的 USB -> UART。

关于我的技能/背景的简要说明:RF/微波工程师,大量的硬件经验和大量的 HDL 经验,但是很少或没有软件经验,当然没有 C 或 python 经验。

问题/问题

  1. 我可以使用 PuTTy 或 Termite 控制台输入命令(例如“频率?”)并从函数接收预期的返回值。我什至可以使用函数的“设置”版本来设置值。在我的 C 应用程序中,uart_write_char 函数正在使用“putchar()”,我怀疑它只是打印字符和字符串,而不是“传输”数据(字节、双精度、浮点数等)。

这是描述 uart_write 函数的代码片段:

*

*我想知道“打印”数据到控制台和“传输”数据到另一端之间是否有区别,所以我可以接收它并将其转储到文件中。

  1. 我想知道在我的 python 端使用 pyVISA 接收通过串口传输的数据的最佳方法。在我使用 ResourceManager() 和 openResource() 打开端口的那一刻,我相应地设置了波特率,但是我似乎无法“查询”设备。查询是一个 pyVISA 函数(?),它是先写后读。在这种情况下,我希望发送命令“频率?” 到嵌入式 microblaze,我希望结果会被传回。如果我可以使用 PuTTy 或 Termite 等控制台成功完成此操作,那么使用 pyVISA 查询功能有什么区别?也许编码?

编辑:我还尝试了https://media.readthedocs.org/pdf/pyvisa/1.6/pyvisa.pdf中记录的 query_ascii_value() 和 query_binary_value() 结果仍然相同,我在 python 中收到超时错误安慰。

更新我已经使用 NI-MAX 来捕获 Trace IO,并且超时似乎在读取端。如果我连接到设备,我假设它会完成写入功能,这是真的吗?这是 Ni-MAX 日志

  1. viOpenDefaultRM (0x00001001) 进程 ID:0x000082C8 线程 ID:0x00006F90 开始时间:15:21:12.0642 调用持续时间 00:00:00.0139 状态:0 (VI_SUCCESS)

  2. viClose (0x00000000) 进程 ID:0x000082C8 线程 ID:0x00006F90 开始时间:15:21:12.0781 调用持续时间 00:00:00.0000 状态:0x3FFF0082 (VI_WARN_NULL_OBJECT)

  3. viParseRsrcEx (0x00001001, "ASRL​​6::INSTR", 4 (0x4), 6 (0x6), "INSTR", "ASRL​​6::INSTR", "COM6") 进程 ID: 0x000082C8 线程 ID: 0x00006F90 开始时间: 15:21 :12.0781 通话时间 00:00:00.0000 状态:0 (VI_SUCCESS)

  4. viOpen (0x00001001, "ASRL​​6::INSTR", 0 (0x0), 0 (0x0), 0x00000001) 进程 ID: 0x000082C8 线程 ID: 0x00006F90 开始时间: 15:21:12.0792 调用持续时间 00:00:00.0657 状态: 0 ( VI_成功)

  5. viParseRsrcEx (0x00001001, "ASRL​​6::INSTR", 4 (0x4), 6 (0x6), "INSTR", NULL, NULL) 进程 ID: 0x000082C8 线程 ID: 0x00006F90 开始时间: 15:21:12.1450 调用持续时间 00:00 :00.0000 状态:0 (VI_SUCCESS)

  6. viWrite (ASRL6::INSTR (0x00000001), "tx_lo_freq?...", 14 (0xE), 14 (0xE)) 进程 ID: 0x000082C8 线程 ID: 0x00006F90 开始时间: 15:21:24.5897 调用持续时间 00:00: 00.0000 状态:0 (VI_SUCCESS)

  1. viRead (ASRL6::INSTR (0x00000001), 0x000001DF461F5420, 20480 (0x5000), 0 (0x0)) 进程 ID: 0x000082C8 线程 ID: 0x00006F90 开始时间: 15:21:24.5897 调用持续时间 00:00:02.01500 00:00: 02.0500 )

我很感激有关此问题的任何建议,并很高兴提供更多代码片段/信息。也热衷于任何关于帖子礼仪的反馈以及改进帖子请求的潜力

干杯,

0 投票
2 回答
2869 浏览

python - 无法获取包含序列号的完整 VISA 地址

我之前没有任何 Python 经验,并试图查看是否可以从具有 USB VISA 地址的设备中查询信息。我正在运行带有 Python 3.5.3 Shell 的 Raspbian GNU/Linux 9 (stretch)。用于 python 的 VISA 包是使用 pip3 安装的:

由于我将设备与 USB 接口连接,因此我也安装了 python USB 包。

当我根据PyVISA 网站使用通用命令时,我可以读取不带序列号的部分 VISA 地址,如下所示:

这是python签证信息:

不知道我做错了什么。如何阅读完整的 VISA 资源名称?没有它,即使我尝试使用完整的 VISA 地址强制打开设备,它也会引发另一个错误。