问题标签 [gpib]
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.
python - 将 MATLAB 中的 GPIB 转换为 PyVISA
我继承了一些用于通过 GPIB 连接对 XYZ 平台进行编程的 MATLAB 代码。为了使其与 Python 中的一些现有代码更兼容,我需要以某种方式对其进行翻译,例如使用 PyVISA 包。我真的很想得到一些帮助!
所以,到目前为止我所做的只是基本的东西,即
由此我可以使用识别命令并正确获取设备的 ID:
那么,知道如何将以下 MATLAB 转换为适当的 PyVISA 命令吗?我最大的问题是我真的不知道如何翻译语法......
matlab - 使用 GPIB 发送“\r\n”字符
首先,对不起,如果我的英语不完美。我正在使用 Matlab 生成波形并创建一个二进制文件(基于波形点),我想将其发送到 Agilent 33522A 函数发生器以生成任意波形。我的问题是我的计算机中生成的二进制文件包含“\r\n”字符,当尝试在 33522a 中下载数据时出现错误。我试图更改 EOSCharacter,但在我的二进制文件中找到 \n 的任何地方都会替换它。
如果我生成二进制文件以便所有数据都包含在一行中,我可以发送数据,但是函数发生器不会读取一些信息,例如采样率、采样数和最大/最小电压。
我的二进制文件是这样的:
Line 1
Line 2
Line 3
Data:
integer value 1
intege value 2
...
我玩过 EOI 模式、EOS 模式和 EOS 字符,但我没有成功在 Agilent 33522A 的内存中写入一个包含多行数据的文件;如果我将数据放入 USB 记忆棒中,则二进制文件会被 aparat 正确读取,即使它在每行的末尾都包含 \r\n 字符。
关于如何通过 GPIB 发送包含多个 CR 和 LF \r\n 字符的二进制文件的任何想法?
c++ - 从 'const void*' 到 'PVOID {aka void*}' 的无效转换 [-fpermissive]
我正在编写一个程序(嗯......使用来自 Tektronix 的示例代码)来测试通过网络到我们实验室的频谱分析仪的消息交换。
提供了一个名为“decl-32.h”的头文件,示例代码中包含以下行,以及它产生的错误:
ibwrt(GpibDevice, "SYSTem:ERRor:ALL?", strlen("SYSTem:ERRor:ALL?"));
“从 'const void*' 到 'PVOID {aka void*}' [-fpermissive] 的无效转换”
在头文件中,以下代码行被突出显示为错误,以及以下错误:
extern int __stdcall ibwrt (int ud, PVOID buf, long cnt);
“初始化 'int ibwrt(int, PVOID, long int)' [-fpermissive] 的参数 2”
问题是我不熟悉这种复杂的变量定义、使用和转换。
有人可以给我一些建议吗?我相信这与许多不熟悉此类变量类型和转换等的其他人有关。
先感谢您!
c - 如何仅使用 ansi-c 在 Windows 机器上连接 GPIB 设备
如何仅使用 ANSI-C 和可能的 Windows 标头打开和关闭与 GPIB 设备的连接。
是否有这样做的默认方式或 gpib 本身是否涉及第三方驱动程序?
c++ - 在 Linux 中检测从管道/fifo 的另一端读取的尝试
我正在考虑在 C/C++ 中为 linux 实现一种守护进程/服务,它将通过 shell(使用 linux-gpib 库)与特定的 gpib 设备进行通信。这个想法是,守护进程将扫描所有现有设备,并为每个设备创建一个文件/管道/dev/gpib#-*
(*
它们在指定 gpib 总线上的地址在哪里)。用途如 of /dev/com#
。然后我可以输入命令行:
echo "*IDN?" > /dev/gpib1-12
哪个会发送“*IDN?” 连接到 1 号机上的设备 12。到目前为止,一切顺利...
当我想从设备中检索数据时,问题就开始了。我希望它类比地工作,这样
cat /dev/gpib1-12
会写出设备要说的内容......但我不知道我发送到设备的哪个命令会使设备返回一个字符串(值)而哪个不会。所以我的选择是:
- 反复检查(while-loop)设备是否有任何要回复的内容,然后将其发送到相应的管道。
-或者- - 仅当客户端程序尝试从
/dev/gpib#-*
管道读取时才查询设备。这必须通过“信号”和“等待”来提供。
出于明显的原因(性能和/或延迟障碍),我不想实施解决方案1。我不知道如何做另一件事……我觉得,它必须可以在 ol'mighty linux 上实现,但是如何实现呢?我确实读过这个,我认为该功能的一些旋转select()
是正确的前进方向,但我不知道如何使用它来解决我的问题。我也偶然发现了这个,那个家伙解释了如何做类似的事情,但又如此不同(代码mosfet.c)。
问题是:如何通过信号、等待或中断从管道/FIFO/文件的另一端读取尝试立即检测并做出反应?
感谢您的回答。
PS:这里是早上七点半(是的,又是一个不眠之夜),所以请原谅我蹩脚的
英语……我正在询问(通过文件 I/O 访问单个设备)是否可以通过 linux-gpib 库,请告诉我。我确实阅读了 linux-gpib 的文档和 src,但没有发现任何帮助。所有 linux-gpib 库提供的都是与 C、Python 等的绑定。
PPS:是否有其他替代方法可以使用管道?
python - Anritsu PyVISA 问题
我在与 Anritsu MG69377B 微波发生器通信时遇到问题。
我进入远程模式并识别仪器没有问题,但是任何其他返回值的命令都会超时,并且仪器似乎确实响应了任何写入命令。我正在使用PyVISA与仪器通信。
*机顶盒?是一个标准的 IEEE 命令,应该适用于任何遵循该标准的仪器(基本上就是全部)。我查看了手册,似乎也找不到其他代码的语法有任何问题。使用 PyVISA 远程连接时,该仪器似乎无法正常工作。(不确定这是 PyVISA 问题还是我的仪器问题)。
python - pyvisa 给出错误但 linux-gpib 有效
我正在尝试在Ubuntu 13.04(Raring Ringtail)下使用 pyvisa 控制 Agilent 33120A 任意波形发生器。我已经使用我们实验室的 NI GPIB-USB-B 适配器安装并设置了与仪器通信所需的一切。适配器固件已加载,来自 linux-gpib 的内核模块也已加载。
我可以成功地进行一些试运行,例如通过运行# ibtest
(命令行工具),我可以写入*IDN?
设备,并收到设备 ID 'HEWLETT-PACKARD,33120A,0,8.0-5.0-1.0'
:。我还成功测试了其他命令,例如设置电压和频率等。有用。
问题是,pyvisa 总是抛出一个VisaIOError
......我不知道如何让它工作。我以 root 身份运行 python-2.7,因此(现在)我不必处理任何访问权限。这是代码和输出:
库正确加载。甚至没有必要,但为了安全起见,我明确地加载了库。显然,pyvisa 没有找到任何工具。我还尝试board=0, pad=10, sad=0
使用以下任一命令显式打开我的仪器:
但是会抛出与上面相同的异常。
基本上,一切都设置好了,但是 pyvisa 什么也看不到。
使用的版本:
- pyvisa-1.4
- python-2.7
- linux-gpib-3.2.20
- libvisa-0.0.20130812-1 ( https://launchpad.net/ubuntu/trusty/amd64/libvisa0/ ) Ubuntu 14.04 (Trusty Tahr) 的最新版本,因为该库不在 Ubuntu 13.04 的存储库中)
我希望得到一些建议。
c# - 在 C# 中使用 VisaNS 和 NI-488.2 库处理 GPIB SRQ
我正在编写一个 C# 应用程序,它使用 National Instruments GPIB-USB-B 接口和 National Instruments VisaNS NI-488.2 库通过 GPIB 与 Agilent 34970A 数据记录器通信。我成功地将数据记录器设置为以固定间隔扫描其输入,并且我想读取数据以响应来自仪器的 SRQ(因为 GPIB 将用于在扫描之间与其他仪器通信)
到目前为止,我已经成功地处理了第一个 SRQ,但只是第一个。随后的扫描要么不引发 SRQ,要么没有正确处理 SRQ。代码太多,无法在此处完整发布,但关键部分是:
当我运行此代码时,数据记录器的第一次扫描会导致OnSRQ()
调用处理程序,但后续扫描不会。我可能无法正确编程数据记录器,但在程序运行时使用 NI-488.2 通信器应用程序,我可以看到 STB 寄存器中的 SRQ 位按预期设置。
有任何想法吗?
python - PyVISA 缺少方法
我正在使用 numpy/scipy/ipython 运行 Win 7 x64、NI 488.2、PyVISA 1.5 和 python。我正在尝试通过 GPIB-USB 连接联系 Keithley 仪器并发送简单命令。但是,当我尝试创建仪器对象时,我发现 PyVISA 的 ResourceManager 缺少用于查找、读取和写入仪器所需的方法。
按照 PyVISA 页面上的示例代码,现在我有:
它返回 get_instrument 不存在的错误。使用 tab-completion 查看资源管理器 rm 中可用的内容。表明它实际上缺少它应该具有的所有方法,仅包含 rm.init、rm.close 和其他一些方法。这些要么什么都不做,要么返回一个 4099L。尝试调用 rm 本身只会打印字符串“ResourceManager()”。
经进一步检查,visa.VisaLibrary() 无处可寻,表明问题是安装拙劣;但是,在重新下载并重新安装整个软件包(使用 pip)时,丢失文件的问题仍然存在。签证模块本身加载良好,只是缺少大部分重要文件。我搞砸了安装,还是有其他事情发生?