我是一名实验物理学家,也是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 建议,这将是一个很好的起点。
任何评论或相关信息来源的链接都将受到欢迎。