2025年8月11日月曜日

xubuntu24でlinux-GPIB(4.3.7)をPython3(3.12.3)から使う際にてこずったこと(python バインディングが重要!)

 まっさらのxubuntu24にgitでlinux-gpibの4.3.7をインストールしたのですが,そのままではなんとpythonから見えないというトラブル発生。

症状としては,

$ python3

Python 3.12.3 (main, Jun 18 2025, 17:59:45) [GCC 13.3.0] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> import pyvisa as visa

>>> rm=visa.ResourceManager()

>>> print(rm.list_resources())

()

>>> 

のように,リソースがなにもみえない。

ここでそもそもいままでPyVISAがうまく動いてくれていたことに感謝しながら,pyvisaがどの様に計測器を検出しているかを調べてみた。

すると,pyvisaは,pyvisa-pyというバックエンドを明示的に指定しないといけないらしい。

(今までそんなことなかった気がする)

ResourceManagerについて調べてみる。


>>> print(rm)

Resource Manager of Visa Library at /usr/lib/x86_64-linux-gnu/libvisa.so.0.0.0

>>> 

なんか良さげな感じの返事がきたのですが,これではダメらしい。

明示的にpyvisa-pyを指定するためには,'@py'を指定するらしい。

$ python3

Python 3.12.3 (main, Jun 18 2025, 17:59:45) [GCC 13.3.0] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> import pyvisa as visa

>>> rm=visa.ResourceManager('@py')

>>> print(rm)

Resource Manager of Visa Library at py

>>> 

このように表示されたらOK。

ところが私の環境では,これでもlist_resources()でGPIBが出てこない。

そこで,linux-GPIBパッケージのpythonバインディングがうまくいっていない可能性を疑う。

pythonバインディングがうまく作成されていれば,importできるはず。

$ python3

Python 3.12.3 (main, Jun 18 2025, 17:59:45) [GCC 13.3.0] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> import  gpib

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

ModuleNotFoundError: No module named 'gpib'

やはり。。。

linux-gpib-users/language/python以下にあるっぽいので,そこを覗いてみる。

~/Downloads/linux-gpib-git/linux-gpib-user/language/python$ ls

Gpib.py   Makefile.am  README       gpibtest.py  srq_board.py

Makefile  Makefile.in  gpibinter.c  setup.py     srq_device.py

ここにあたりをつけて,READMEを読んでみると,

This is a python GPIB interface to use gpib library calls from python language.

(Quick hacked)


27 January 2004 -- added functions gpib.readbin() and gpib.writebin(), as well

as variables gpib.ibsta() and gpib.ibcnt(). -- John Ackermann <jra@febo.com>


Installation:


'make' then 'make install'


とのことだったので,makeしてみたが,どうやらpython3-devがらみで足りないものがあった模様。

python3-devとpython3-setuptoolsをaptでインストールしたら無事にmakeとmake installができた。

その後,実は

sudo python3 setup.py install

という処理が必要。

$ python3

Python 3.12.3 (main, Jun 18 2025, 17:59:45) [GCC 13.3.0] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> import pyvisa as visa

>>> rm = visa.ResourceManager('@py')

>>> ls330=rm.open_resource('GPIB0::16::INSTR')

>>> ls330.write("*IDN?")

7

>>> ls330.read()

'LSCI,MODEL330,0,061694\r\n'

>>> ls330.close()

>>> 

思ったより重いコンダラだった。




0 件のコメント:

コメントを投稿