我是一位实验物理学家,并且是Python的大爱好者。Python仪器驱动程序
我发现它非常适合数据分析和脚本编写,我也用它来连接实验室仪器(网络分析仪,示波器,信号分析仪和信号发生器......)。 我认为Python会成为我领域的MATLAB的一个非常严重的竞争者,如果存在一个合并仪器驱动程序的好库。
到现在为止,我一直在使用一些策略来连接它们直接从我的IPython会议:
使用图书馆pyVisa,这是很好的,对于大多数设备的工作,但有点低级别,并且需要额外的编程层来向用户公开有用的功能。
我已经能够最近使用使用pythondotnet(不IronPython,缺乏NumPy/Matplotlib ...库)IVI-COM或.NET的驱动程序。这种解决方案显然是最令人满意的解决方案,因为IVI驱动程序已经相当高级了,通常由供应商提供,不同供应商的仪器可以互换。
我的第一个问题是一个相当的技术之一: 我读的每个地方COM对象集成在.NET框架,你可以使用COM OBJETS直接写给在.NET。就我而言,我可以通过从pythondotnet导入comtypes模块(请参阅http://code.activestate.com/recipes/578089-using-iviscope-instrument-driver-with-python/)和dotnet
以及clr
来使用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建议,这将是一个很好的起点。
任何意见或链接到相关的信息来源将更受欢迎。
的IronPython对NumPy的/ SciPy的支持:https://www.enthought.com/repo/.iron/ – jhexp
@Samuel:作为兰茨的作者之一,我可以告诉你,支持IVI是路线图。该计划是提供混合类实现可以组合的命令集。可能不会发生的是使用相同的API。 IVI和Python命名约定不兼容。但是我们欢迎讨论,随时加入邮件列表或者发布一个问题来查看替代方案。 – Hernan
您可能不想看看[slave](https://slave.readthedocs.org/en/develop/)我创建的抽象层。我们正在使用它来控制我们的实验室设备。 – P3trus