0

32 ビット Python バイナリを使用する 64 ビット Redhawk 用のコンポーネントを開発しようとしていますが、この特定のコンポーネントを実行するときに 64 ビット Python ではなく 32 ビット Python を使用するように Redhawk を構成する方法がわかりません。32 ビット Python を使用する必要がある理由は、32 ビット Python でのみ動作するライブラリ (PyVisa、http://pyvisa.readthedocs.org/en/latest/ ) を使用しているためです (https://decibel.ni を参照) 。 .com/content/docs/DOC-2928 )。

受信機を校正するために、PyVisa を使用してラボ機器 (つまり、Agilent 信号発生器) を制御しています。これは Redhawk の奇妙な使い方のように思えるかもしれませんが、信号を特定の周波数と電力レベルに調整することは、受信機/送信機を制御するときに実行する必要がある操作と非常によく似ています。

この 1 つのコンポーネントを開発してテストするためだけに 32 ビットの CentOS をインストールするのは避けたいと思います。システムに 32 ビットと 64 ビットの Redhawk rpm を同時にインストールするのも同様に面倒だと思います。

システムに 64 ビット Python と同時に 32 ビット Python を既にインストールしており、手動で 32 ビット Python バイナリの名前を「python_32」に変更し、パス (/usr/bin/) に配置しました。実装ファイルの先頭にあるシバンを

#!/usr/bin/env python_32

しかし、うまくいかなかったので、試してみました

#!/usr/bin/python_32

これもうまくいきませんでした。

以下のスケルトン実装の例を参照してください。わかりやすくするために、すべてのボイラープレート インポートと関数定義が削除されています。

#!/usr/bin/python_32

import visa
def process(self):
    sg = visa.instrument("TCPIP::10.2.8.236")
    print sg.ask("*IDN?")
    return NORMAL

このコンポーネントを含む単純な波形を起動しようとするたびに、次のエラーが表示されます。これは、64 ビット Python で PyVisa ライブラリを使用しようとしたときに受け取るエラーと同じです。これが、32 ビット Python へのパスを指定する私のシバン ステートメントを Redhawk が無視していると思われる理由です。

OSError: /usr/local/vxipnp/linux/bin/libvisa.so.7: wrong ELF class: ELFCLASS32
Traceback (most recent call last):
  File "/var/redhawk/sdr/dev/.DevMgr_orion/GPP_orion/components/sendSCPI/python/sendSCPI.py", line 9, in <module>
    import visa
  File "/usr/lib/python2.6/site-packages/PyVISA-1.5.dev0.dev-py2.6.egg/visa.py", line 237, in <module>
    resource_manager = ResourceManager()
  File "/usr/lib/python2.6/site-packages/PyVISA-1.5.dev0.dev-py2.6.egg/vpp43.py", line 85, in __new__
    it.init(*args, **kwds)
  File "/usr/lib/python2.6/site-packages/PyVISA-1.5.dev0.dev-py2.6.egg/visa.py", line 230, in init
    self.session = self.vi = vpp43.open_default_resource_manager()
  File "/usr/lib/python2.6/site-packages/PyVISA-1.5.dev0.dev-py2.6.egg/vpp43.py", line 788, in open_default_resource_manager
    visa_library().viOpenDefaultRM(byref(session))
  File "/usr/lib/python2.6/site-packages/PyVISA-1.5.dev0.dev-py2.6.egg/vpp43.py", line 162, in __call__
    self.load_library()
  File "/usr/lib/python2.6/site-packages/PyVISA-1.5.dev0.dev-py2.6.egg/vpp43.py", line 131, in load_library
    self.__lib = self.__cdecl_lib = cdll.LoadLibrary(path)
  File "/usr/lib64/python2.6/ctypes/__init__.py", line 431, in LoadLibrary
    return self._dlltype(name)
  File "/usr/lib64/python2.6/ctypes/__init__.py", line 353, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: /usr/local/vxipnp/linux/bin/libvisa.so.7: wrong ELF class: ELFCLASS32

参考までに、Redhawk バージョン 1.9.0 を実行しています。CentOS 6.4 x64 上の x64。

Redhawk を介して私のラボ機器を制御するためのより良い方法があれば、それも受け入れます。

4

1 に答える 1