问题标签 [visa]

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 回答
1431 浏览

python - 解析包含 ascii 代码的字符串以浮动

我正在使用pyvisa来控制信号恢复 sr7225 锁定放大器。几乎一切都按预期工作。只有一个问题,当查询的值正好是零并且一个在浮点模式下查询时返回以下

一个 ascii 值附加到响应字符串。我猜附加的 ascii 值\x00是一个错误,但这意味着我不能float()用来将字符串响应转换为浮点数。你会怎么处理这个?

0 投票
3 回答
3869 浏览

python - Python 仪器驱动程序

我是一名实验物理学家,也是Python的狂热爱好者。

我发现它非常适合数据分析和脚本编写,实际上我还使用它来连接实验室仪器(网络分析仪、示波器、信号分析仪和信号发生器......)。如果存在一个包含仪器驱动程序的好库,我认为 Python 将是我所在领域的MATLAB的一个非常重要的竞争对手。

到目前为止,我一直在使用几种策略来直接从我的IPython会话中连接它们:

  • 使用库 pyVisa,这很好,适用于大多数设备,但有点低级,并且需要额外的编程层来向用户公开有用的功能。

  • 我最近能够使用 pythondotnet 使用 IVI-COM 或 .NET 驱动程序(不是IronPython,它缺少NumPy / Matplotlib ...库)。这个方案显然是最令人满意的一个,因为IVI驱动程序已经相当高级,而且它们通常由供应商提供,并且来自不同供应商的仪器可以互换。

我的第一个问题是一个相当技术性的问题:我到处读到COM对象集成在 .NET 框架中,并且您可以在 .NET 中直接使用 COM 对象。就我而言,我可以通过导入 comtypes 模块(参见http://code.activestate.com/recipes/578089-using-iviscope-indotnet ​​strument-driver- with -python/ )和clr来自 pythondotnet来使用 COM 对象,但我根本不明白如何使用clr模块访问那些 COM 对象。有人可以解释 COM 和 .NET 之间的联系吗?

另外,我总是有点困惑,我怎么知道,当我有一个 DLL 文件时,它是否包含一个 .NET 模块,以及我是否可以用 .NET 4.0 版打开它(我是一个完整的这些框架问题的初学者和正确文档的链接会很好)?

第二个问题,更笼统地说,是不是已经有一个模块可以统一地为不同的仪器收集大量的驱动程序?在我看来,我们必须有成千上万的人在同一个问题上工作。

我最近迷上了模块 lantz http://lantz.glugcen.dc.uba.ar/。不幸的是,这是在 Python 3.0 中,而我仍在使用 Python 2.7(带有适用于 Windows 的 pythonxy 发行版)。此外,我有点害怕这个项目没有尝试实施 IVI 建议,这将是一个很好的起点。

任何评论或相关信息来源的链接都将受到欢迎。

0 投票
3 回答
1499 浏览

tcl - 在处理命令时停止 TCL 脚本冻结

好的,我在高层次上做的是扫描系统以查找连接到它的所有 VISA 设备并让它们识别自己。

问题是并非所有 VISA 设备都支持识别自己的功能,而我知道的唯一方法是告诉设备这样做。这迫使那些无法识别自己的人依赖至少 1 秒的超时。在等待超时时,我的 TCL 脚本和 Wish 应用程序冻结,直到超时完成。对于多个设备,这给我留下了尴尬的等待时间,可能长达几秒钟,我无法向用户更新正在发生的事情。

这是我的代码:

我想知道是否有办法在 TCL 方面防止这种情况发生,因为我无法知道我将查询什么类型的设备。我已经尝试在脚本的几个不同位置使用“更新”和“更新空闲任务”,但它只是让我在冻结之间有一点时间。

任何帮助,将不胜感激。提前致谢!

0 投票
1 回答
2492 浏览

python - Python VISA串行轮询函数

我的一种GPIB仪器有问题。这是一个相当古老的协议,它被称为 IEEE-488-1978。我一直在尝试获取该版本 IEEE-488 的参考手册,但没有成功。

问题在于,为了读取仪器的状态寄存器,它需要串行轮询功能(如其参考手册所述)。我不知道如何在 Python 中使用PyVISA这样做。

例如,我用来从设备读取的是_instrument.ask("RV")_,其中的_RV_意思是_Read Version_。另外,为了写一个像温度这样的参数,我会写_instrument.write("ST20.00")_,其中的_ST20.00_意思是_Set Temperature to 20.00 Celcius_

我一直在尝试找到一个 ASCII 命令以使用_ask_Python/VISA 命令发送到仪器并获得返回_Status Register Byte_,但似乎没有什么可行的。

如果有人有关于如何使用 Python/VISA 传递串行轮询功能的建议,那可以解决我的问题。

0 投票
0 回答
1263 浏览

python - PyVISA mac OS X (Mountain Lion) 安捷伦 33250a

我无法使用 GPIB-USB 控制器连接到 Agilent 33250a 仪器。有人知道如何让 PyVISA 识别安捷伦吗?

为了在终端中运行 PyVISA,我使用以下命令:

测试:(Agilent 33250a 未连接)

现在尝试使用 GPIB-USB 控制器连接安捷伦。安装http://www.ftdichip.com/Drivers/VCP.htm(62位)。

终端中的另一个测试:输入:sudo system_profiler SPUSBDataType

输出:

但是,当我连接 Agilent 33250a 时,visa.get_instruments_list() 没有检测到它。又名我仍然得到:

这是因为我无法在 Mac 上安装 IOSuite for Agilent 吗?Agilent IO Suite 仅作为 .exe 文件存在。有任何想法吗?

0 投票
1 回答
950 浏览

multithreading - 从线程设置 TCL vwait 变量

我需要能够设置变量以从线程内部结束 vwait。这是因为我有一个循环,它通常会锁定交互器,因此它运行的任何 GUI 都会锁定,直到它完成。

我希望它像这样的睡眠命令一样运行:

只有当查询设备的 while 循环退出时,我才需要设置 vwait 变量。

这是我目前的代码:

目前该线程仍在冻结 GUI。此外,由于线程中的变量和我期望的变量不同,显然它只是永远等待。

任何建议或帮助表示赞赏。我相信我已经用尽了所有其他更实用的方法来完成这项任务,但欢迎提供更多见解。

0 投票
1 回答
109 浏览

asp.net - 不同应用层之间如何交互?

首先,我现在很困惑,可能无法正确解释自己。让我尝试。我有一个业务层类,其中包含从 UI 层 aspx 页面调用的所有方法。通常如果一个方法抛出异常,我会在 UI 层捕获它并显示一条消息。如果没有,有时我会抓住业务层并仅记录错误。现在我创建了第三个项目/层,它将与外部 api(如 VISA)交互,我将从业务层方法中调用它的方法。api调用后,我返回一个包含json响应、错误代码和描述等的对象。如果出现错误(异常),我需要向用户显示消息。我怎么能在业务层做到这一点(最好的方法。我可以在成功的情况下返回错误字符串或空字符串)?或者我必须从 UI 层调用 api?这是一个将由 api 层发送的响应对象。我将显示错误或根据其内容继续。

0 投票
1 回答
2630 浏览

python - 吉时利的 PyVISA IV 扫描

我正在尝试使用 Keithley 和 PyVISA 进行 IV 曲线测量。我在Keithley 网站上找到了一个 Matlab示例,但有一个部分我无法理解。

这个串行轮询功能究竟是做什么的?spoll我在 PyVISA 中没有这个功能,是吗?

0 投票
1 回答
2462 浏览

c++ - NI VISA 和 viWrite 未检测到命令错误

我正在测试 vanillaviWrite()函数,并意识到当我传入无效的命令字符串时它不会返回错误代码。我觉得这有点奇怪......当然实现应该检测到这个事件。

这是我用来演示的一个小测试用例......(它只是测试代码,所以它不会是完美的:))

该程序输出以下内容:

因此,写入 SCPI 命令“CRAP;” 肯定被设备标记为错误。

这让我想到,啊……我没有启用 ESE 位来启用该位以在 STB 中进行标记。所以我这样做:

仍然没有检测到错误的命令。

好的,所以可能需要启用 SRQ ......也许 VISA 库需要同时启用这两个来处理这个......

所以我这样做:

不,没有区别。它仍然没有检测到错误的命令。

这是标准签证吗?它应该像这样工作吗?这是否意味着如果我想检测这些错误,我总是必须在写入后启用事件VI_EVENT_SERVICE_REQviWaitOnEvent()?我原以为香草viWrite()会为我检测到这一点??

0 投票
2 回答
1051 浏览

python-2.7 - 在 Sikuli 中导入 Python Pyvisa 模块

我在一台计算机上运行 sikuli 脚本,它可以为我的一些仪器自动采集数据。我最近安装了 PyVisa,我能够使用 python 与我的仪器进行连接和通信,没有任何问题。有没有办法可以在 sikuli 中导入 Visa 模块并使用它与我的仪器进行通信,就像我在 python 中一样?