与Python的USB通信(Newport Instrument)

时间:2018-09-20 03:03:29

标签: dll usb ctypes pyusb pyvisa

我目前正在尝试使用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提供了不同的库和dllwraper。我假设正确的过程是使用Ctypes调用主设备dll。这将导致可能的指令调用。

5.2:如同我对NI驱动程序和PyUSB所做的那样,识别设备。

5.3:打开设备并通过PyUSB代码发送命令。

所以,这是我的问题:

  • PyVISA似乎比PyUSB更容易使用。你们中有人知道使用PyVISA进行相同操作的过程吗?

  • 你们中的任何人都使用Newport设备,甚至使用相同的TLB 6700控制器完成了类似的过程?

先谢谢您,

干杯

1 个答案:

答案 0 :(得分:1)

可能有点晚了,但以防万一,我开发了一个Python代码来控制TLB 67xx。您可以在我的github中找到它。

基本上,我通过(UsbDllWrap)python net(导入clr)调用dll,并使用它来设置波长,开始扫描等。我确实有几个装饰器可以关闭( @InOut。输出)。如果您不将Anaconda用于python,则可能需要调整dll的路径。这是我发现控制NewFocus激光的唯一体面方法,因为无法通过PyVisa控制它们。 显然,这样做只能在Windows上进行。

我仍在研究适用于Linux的跨平台解决方案