【发布时间】:2012-11-30 05:31:33
【问题描述】:
我是一名实验物理学家,也是Python的忠实拥护者。
我发现它非常适合数据分析和脚本编写,实际上我还使用它来连接实验室仪器(网络分析仪、示波器、信号分析仪和信号发生器......)。 如果存在一个包含仪器驱动程序的不错的库,我认为 Python 将成为我所在领域的 MATLAB 的一个非常重要的竞争对手。
到目前为止,我一直在使用多种策略直接从我的IPython 会话中与它们交互:
-
使用库 pyVisa,它很好,适用于大多数设备,但有点低级,需要额外的编程层才能向用户公开有用的功能。
我最近能够通过 pythondotnet 使用 IVI-COM 或 .NET 驱动程序(不是 IronPython,它缺少 NumPy/Matplotlib... 库)。这个方案显然是最满意的方案,因为IVI驱动已经相当高级了,而且通常是厂商提供的,不同厂商的仪器可以互换。
我的第一个问题是一个相当技术性的问题:
我到处读到COM 对象集成在.NET 框架中,并且您可以在.NET 中直接使用COM 对象。就我而言,我可以通过从 pythondotnet 导入 comtypes 模块(参见http://code.activestate.com/recipes/578089-using-iviscope-instrument-driver-with-python/)和dotnet 和clr 来使用COM 对象,但我根本不明白如何使用@ 访问这些COM 对象987654334@ 模块。有人能解释一下 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:enthought.com/repo/.iron
-
@Samuel:作为 Lantz 的作者之一,我可以告诉你,支持 IVI 在路线图上。该计划是提供混合类实现可以组合的命令集。可能不会发生的是使用相同的 API。 IVI 和 Python 命名约定不兼容。但我们愿意讨论,请随时加入邮件列表或打开问题以查看替代方案。
-
你可能不想看slave 我创建的一个抽象层。我们用它来控制我们的实验室设备。
标签: python .net com driver visa