在Mac OS X (Snow Leopard)上使用NI VISA和pyVisa
有没有人成功在Snow Leopard上用NI GPIB模块运行pyVisa?
根据我在NI网站上看到的论坛,似乎NI VISA和pyVisa在Mac OS X上是无法一起使用的。
让我感到困惑的是,NI网站上确实有提到NI VISA支持Mac OS X。但是在他们的支持页面上,却没有把OS X列为支持的操作系统。
如果有人能提供意见或帮助,我将非常感激,因为我真的希望能摆脱使用Windows来进行这个软件开发,并且希望能够支持跨平台。
3 个回答
在Mountain Lion 10.8.5上运行得很好。
- 安装NI-VISA Runtime 5.4。
- 安装pyvisa。
首先要把Python(mac自带的)做成一个i386格式的二进制文件,这样可以强制Python以32位模式运行。
$ lipo -thin i386 -output python-i386 /usr/bin/python2.7
$ ./python-i386
然后:
# make sure pyvisa is available in the built-in python
import sys
sys.path.append('path-to-your-pyvisa')
from pyvisa.vpp43 import visa_library
visa_library.load_library("/Library/Frameworks/Visa.framework/VISA")
import visa
visa.get_instruments_list()
我在OSX 10.8.2(山狮系统)上安装了NI-VISA-5.0.0、NI-VISA-5.1.2和PyVisa-1.4,结果遇到了以下错误:
>>> import pyvisa.vpp43 as vpp43
>>>
>>>
>>> vpp43.visa_library.load_library('/Library/Frameworks/VISA.framework/VISA')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Python/2.7/site-packages/PyVISA-1.4-py2.7.egg/pyvisa/vpp43.py", line 146, in load_library
self.__lib = self.__cdecl_lib = cdll.LoadLibrary(path)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 431, in LoadLibrary
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 353, in __init__
OSError: dlopen(/Library/Frameworks/VISA.framework/VISA, 6): no suitable image found. Did find:
/Library/Frameworks/VISA.framework/VISA: no matching architecture in universal wrapper
/Library/Frameworks/VISA.framework/VISA: no matching architecture in universal wrapper
>>>
结果发现,NI-VISA 5.0在10.6.6上运行得很好。
我遇到的问题是,当我调用pyVisa的visa.Instrument("GPIB::1")时,它提示找不到库。不过,当我调用visa.get_instruments_list()时,显示我的GPIB适配器为GPIB0。用这个设备我就能正常连接了。
为了实现这一点,我需要做一些在NI网站上没有很好记录的更改(至少我找不到)。最重要的是NI-VISA 5.0安装的VISA库的名称。这个库的位置在/Library/Frameworks/Visa.framework/VISA
。我还没有尝试修改nsi文件来自动链接到这个库,虽然pyVisa的文档提到过。
我一直无法用pip安装pyvisa,只能用easy_install。如果有人成功用pip安装pyvisa,我非常想知道怎么做!
系统设置:
Python 2.7,运行在virutalenv和virtualenvwrapper上。Snow Leopard 10.6.6。NI-VISA 5.0
示例代码:
from pyvisa.vpp43 import visa_library
visa_library.load_library("/Library/Frameworks/Visa.framework/VISA")
import visa
visa.get_instruments_list() # Yields: ['ASRL1', 'ASRL2', 'ASRL3', 'ASRL4', 'GPIB0::1']
temp = visa.Instrument("GPIB0::1")
print temp # Yeilds: Instrument("GPIB0::1::INSTR")
更新:
在升级到Lion后,我发现了同样的问题,每次都得手动加载库。这让我觉得我可能漏掉了什么。