dll - 与 Python 的 USB 通信(Newport Instrument)
问题描述
我目前正在尝试使用 python 与激光控制器 TLB 6700 (New Focus - Newport) 进行 USB 通信。
https://www.newport.com/f/velocity-wide-&-fine-tunable-lasers
这是我的第一个 python 任务,我遇到了一些麻烦。所以,按步骤:
1) 该设备有自己的驱动程序,以及控制它的商业软件。但是,我想开发自己的代码来执行几个自动化过程。
2) newport 驱动程序不兼容NI。这意味着如果我使用 Newport 驱动程序,我将无法使用 PyVisa 识别设备。
3)出于同样的原因,我想我也不能使用 PyUSB。即使我对此也不太确定。
4) 我发现的一个解决方案是使用 NI-Interactive 控件为设备安装辅助 NI 驱动程序。按照这个过程,我可以用 PyUSB 识别设备。
5) 但是,我不明白如何激活设备和发送命令。我想正确的程序是这样的:
5.1:调用库。Newport 提供了不同的库和 dllwrapers。我假设正确的过程是使用 Ctypes 调用主设备 dll。这将导致可能的指令调用。
5.2:识别设备,就像我使用 NI 驱动程序和通过 PyUSB 所做的那样。
5.3:打开设备,通过PyUSB代码发送命令。
所以,这是我的问题:
PyVISA 似乎比 PyUSB 更容易使用。你们中的任何人都知道使用 PyVISA 执行相同操作的程序吗?
你们中的任何人都使用 Newport 设备,甚至使用相同的 TLB 6700 控制器进行过类似的程序吗?
先感谢您,
干杯,
解决方案
可能有点晚了,但以防万一,我开发了一个 python 代码来控制 TLB 67xx。你可以在我的github 上找到它。
基本上,我通过 (UsbDllWrap) python net (import clr) 调用 dll 并使用它来设置波长、开始扫描等……我确实有几个可以关闭的装饰器(例如@InOut.output)。如果您不使用 Anaconda for python,您可能需要调整 dll 的路径。这是我发现控制 NewFocus 激光器的唯一不错的方法,因为无法通过 PyVisa 控制它们。显然,这样做只能在 Windows 上进行。
我仍在研究可能适用于 Linux 的跨平台解决方案
推荐阅读
- asp.net-core - MVC Core. RedirectToAction(action, controller, routeValues, fragment). Access fragment parameter value in target Action
- java - ByteArrayOutputStream 写入 IndexOutOfBoundsException
- julia - 在 Julia 中检查对角支配矩阵
- r - gganimate 日期和计数的线图
- delphi - 程序 NEW 导致分段错误
- python - 将屏幕空间转换为世界空间以在 python 中创建点云
- c++ - 没有位集/向量的简单解码器(隐写术)
- linux - bash脚本什么也没找到
- python - 使用 scipy Python 提高计算积分计算效率的方法
- r - 使用 fable 包交叉验证每月时间序列