问题标签 [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.
c# - 创建多设备可控软件
我不知道如何命名我的问题,但我首先想到的是这个“多设备软件”的东西。
我是一名电子工程专业的学生,对仪器控制感兴趣。为此目的使用 C# 并具有 C# 表单应用程序的基本知识。此外,还有一个由 IVI 基金会开发的标准命令集,名为“SCPI 命令”。这是一种简单的仪器控制方法,您无法为功能齐全的仪器控制系统编写一些 SCPI 代码。在这里,“驱动程序”发挥作用。大多数制造商在您购买他们的产品时都会提供设备驱动程序。使用此驱动程序文件,您可以创建功能齐全且响应迅速的软件。您也可以根据自己的需要开发自己的驱动程序。但是,尽管 SCPI 是所有类型仪器的标准,但一些多命令开始给您带来问题。例如,您为 A 品牌编写代码,但该代码不适用于 B 品牌'
主要目标是为多条同轴电缆创建电缆损耗计算软件。您必须使用频谱分析仪和射频信号发生器来执行此任务。我们有几个频谱分析仪和大量的信号发生器在使用中。
通过一个程序,我们必须控制我们所有的设备。这是我的问题。
我想创建一个适用于我们所有频谱分析仪和信号发生器的响应式软件。我怎样才能做到这一点 ?首先,我认为我可以为每个设备创建一个驱动程序,并且主程序通过提示用户或类似的东西来选择正确的驱动程序。但我不知道如何实现这一点。其次,我可以为每种设备组合编写软件的主要部分,并在运行时将该部分与 .txt 文件一起包含到主要软件中。我知道这是一种菜鸟方法,但我认为我可以毫不费力地做到这一点。而且我对第一种方法一无所知。第三,我可以为程序中的每个设备编写所有设备的命令,并使用 if 条件在不同情况之间进行选择。或开关盒结构。如果我不能用其他选项做到这一点,这是唯一的方法。
你可能直到这里才理解我,因为我无法准确描述问题,因为我是一名业余软件开发人员。
假设您有一个信号发生器。您要选择频率 10 MHZ。这是安捷伦 33120A。要使用计算机实现此目的,您需要将此命令发送到设备。
之后,设备将频率设置为 10 MHZ。假设您有另一个制造商的信号发生器,并且要使用此设备实现完全相同的功能,您可能必须发送它;
这两个执行相同的操作,但 SOUR 和 SENS 部分取决于设备。
要使用 C# 创建程序,我们使用 API 与设备进行通信。如果您使用 GPIB 协议,API 的名称是 NI488.2。如果您使用 RS232,您可以使用 VISA API 等。顺便说一下,我们的协议是 GPIB。借助 GPIB,我们使用包装器轻松地将 SCPI 命令与 C# 环境集成。例如,在将 GPIB 库添加到引用后,您可以使用它通过 C# 表单接口发送命令;
现在我遇到了最大的问题。我怎样才能使这部分代码创建一个成功的响应程序?例如使用安捷伦信号发生器和罗德与施瓦茨频谱分析仪的操作员。另一家运营商正在使用 IFR 信号发生器和 HP 频谱分析仪。但他们使用相同的软件。IFR 信号发生器可以使用“SENS:FREQ”进行操作。
在操作开始之前,会弹出一个提示并询问设备的驱动程序。我不知道。这些是我首先想到的。但如果你是我,你是如何做到这一点的?如果您选择一个选项,请告诉我该怎么做。我被这个困住了。现在程序有大约 2000 行代码。“ibwrt”不是程序的唯一部分,“SENS:FREQ”也不是……还有用于其他任务的“SENS:BAND:RES”、“INIT:CONT”等。这并不重要。
我希望你能理解我的问题,因为我知道我无法正确判断。
如果您对问题有任何疑问,请随时发表评论。
谢谢。
TL;博士
我需要通过 C# Forms 接口为每个设备发送命令。我的意思是设备有它们的特殊命令,我需要创建一个可以通过用户选择来控制每个设备的软件,而不是为每个设备创建一个软件。
vb.net - Visual Basic 6.0 语句不在有效的命名空间中
我正在学习Visual Basic 6.0,并且正在构建一个应用程序来捕获屏幕截图。
我找到了一些示例代码来研究应用程序。但是,我得到:
语句不在有效的命名空间中
但是,它将错误指向“Private Sub Main()”。
我将在下面附上截图:
我不确定为什么以及如何解决此问题以构建 EXE 文件...
python-2.7 - 连接到 GPIB 仪器后关闭我的 python 解释器后计算机崩溃
如果我使用 pyvisa 连接到任何一台 GPIB 仪器,然后尝试关闭我的 python 解释器,我的计算机就会崩溃(然后自动重启)。我只有在使用 pyvisa 连接到 GPIB 仪器后才会遇到这个问题,否则我可以控制我的 GPIB 仪器并使用我的解释器而不会出现任何问题。
以下是我正在使用的 python 工具:
蟒蛇 2.7 蟒蛇 xy 2.7.5.1 蜘蛛 2.2.4
有没有其他人遇到过这个问题?你认为我能做些什么来解决它?
谢谢你的帮助。
python-2.7 - 使用 pyvisa 看不到 GPIB 仪器,但我可以在 NI MAX 中看到
我有一个 gpib 仪器,我正试图用 pyvisa 控制。我可以在 NI MAX 中看到仪器为“GPIB0::26::INSTR”,但是当我尝试使用 pyvisa 获取仪器列表时,它只是出现了“COM1”
这是我要执行的代码:
这是代码的输出:
['COM1']
有人有想法么?
谢谢,
c++ - 尝试在 Ubuntu 中将 ibdev 与 g++ 一起使用并出现链接器错误
我正在尝试使用 Xubuntu 14.04.1 LTS 和 3.13.0-35-generic 内核中的 NI GPIB-USB-B 适配器开发代码来控制一些仪器。
在这一点上,我只是使用 ib.h 库中的函数 ibdev() 进行概念验证。当我输入以下命令时:
g++ gpibtest.cpp -o gt
我收到以下问题:“未定义对‘ibdev’的引用”。
我假设 ib.h 库位于正确的位置,因为编译器不会抱怨找不到它。
我认为我可能没有在我的 g++ 命令中输入正确的开关来包含这个库,因为我之前在 time.h 库中遇到过类似的问题,当时我需要包含 -lrt。尽管它很简单,但我一直在寻找几个小时并找不到解决方案。我查看了 ib.h 文件,它确实包含这些函数原型(虽然使用了“extern”),但我不知道在哪里可以找到它们的源代码。这似乎是一个非常基本的问题,解决方案非常简单,如果能提供任何帮助,我将不胜感激。
这是我的简单程序:
vba - 通过 GPIB 通过 Excel VBA 发送命令
我有这个网络分析器,需要通过 Excel VBA 和 GPIB 向它发送命令。我的 GPIB 和其他硬件设置得很好,但我不知道如何简单地通过 GPIB 向分析仪发送命令。我有丰富的编程经验,但我是 VBA 的新手。经过数小时搜索硬件文档和 VBA 教程后,我的精神正在慢慢消亡。我相信我需要在 VBA 中添加正确的引用(工具-> 引用)但是当我尝试运行文档给出的示例代码时(“调用 viOpenDefaultRM(defrm)”)我收到一个错误,即未定义子或函数.
很感谢任何形式的帮助。我是一名工程师,不知何故被投入到需要大量编码的任务中。
python - Python pyVISA GPIB 连接问题
我正在尝试使用 pyVISA 连接到 GPIB 仪器,但出现错误。我正在关注 pyVISA 网站上的简单示例:http: //pyvisa.readthedocs.org/en/master/
我在 IPython 控制台中输入以下代码:
但是,我的 GPIB 仪器没有显示,只有串行端口和我的 USB 仪器。当我启动 Agilent Connection Expert(或 NI MAX)时,我可以看到我所有的 GPIB 仪器并可以与它们通信。我还能够与 Matlab 毫无问题地与仪器进行通信。
因此,当我尝试使用线路连接到仪器时:
它抛出一个错误:
VisaIOError: VI_ERROR_INTF_NUM_NCONFIG (-1073807195): The interface type is valid but the specified interface number is not configured.
我还尝试连接列出资源时出现的 USB 仪器,但它们不会引发此错误。但是,当我尝试做一个简单的查询时:
什么都没有返回,也没有错误被抛出。
我正在使用 Python(X,Y) 2.7.9.0 和 Python 版本 2.7.9 32 位
pyVISA 版本是 1.6.3 NI 位数是 32
感谢任何指导,因为我是 Python 新手。
谢谢
c# - 如何等待服务请求 (RQS)
**注:交叉发布在 LabVIEW 论坛:http ://forums.ni.com/t5/LabVIEW/C-VISA-wait-on-RQS/td-p/3122939
我正在尝试编写一个简单的 C# (.NET 4.0) 程序来通过 VISA GPIB 控制 Keithley 2400 SMU,但我无法让程序等待 Keithley 在扫描结束时发送的服务请求.
扫描是简单的线性电压扫描,由 Keithley 设备内部控制。我已将设备设置为在扫描结束时或达到合规性时发送 ServiceRequest 信号。
我能够将命令发送到 SMU 并读取数据缓冲区,但前提是我在扫描开始命令和读取数据命令之间手动输入超时。
我遇到的一个问题是我对 C# 很陌生——我正在使用这个项目(移植我的 LV 代码的一部分)来学习它。
这是我到目前为止的 C# 代码:
以上所有内容都应该模仿这个LabVIEW代码:
那么,关于我要去哪里错的任何想法?
谢谢,
编辑:
经过一番折腾,我发现服务请求函数OnServiceRequest
实际上是在正确的时间触发的(“服务请求已收到!”打印到控制台)。
c++ - 错误 2607,“错误 LNK1104:无法打开文件”
我已经使用 NI GPIB 4.61 版在 Visual Studio 2010 中编写了 C++ 代码,并添加了代码所需的所有库,但它给出了与“.obj”文件相关的错误。虽然我已经添加了相同代码的 .CPP 文件和与此相关的头文件。
对于同一个问题,我已经看到了很多解决方案,但对我没有任何帮助。正如我在 Stack Overflow 上的解决方案中看到的那样,我在链接器中的库路径中添加了双引号 (" ")。我该如何解决这个问题?
java - 在 Eclipse 中为 GPIB 设备安装 Java API
这可能是一个微不足道的问题,但我在将一个名为 JPIB_Windows 的 Java API 安装到 eclipse 中时遇到了问题,它应该允许我控制通过 GPIB 连接的外部设备。
这是我下载的文件夹的内容。
我在 Eclipse 中创建了一个新项目,右键单击该项目并转到构建路径 -> 配置构建路径。
然后我单击添加外部库并添加 JPIB.jar 文件。该文件已添加,但我仍然无法使用 API 中的类。
为了能够使用 API,我还需要做些什么吗?有没有更好的方法将此 API 导入我的项目?