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()

>>> 

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




MacからVisual Studio Codeを使ってlinuxにSSH接続してXも転送しながら開発(メモ)

 Linux側にVSCodeをインストールするときは,公式サイトの方法を参考にすると良さそう。

MacのVSCodeからlinuxに接続して,Xも通したい時は,まず当然ですがMacとlinuxでsshができる様に,linux側に

$ sudo apt install openssh-server

でsshサーバをインストールし,

$ systemctl enable ssh

してsshが起動時に有効になる様にしてから,XQuartzをインストールしてあるmacから一度

$ ssh -X <ユーザ名>@<接続先のIPアドレス>

で接続を試す。

それから,MacのVSCodeでRemote-SSHをインストールし,以下の様に設定する。

Command + Shift + P

して,

Remote-SSH: Open SSH Configuration File ...

を選んで,

/Users/<自分のユーザ名>/.ssh/config

を選択し,以下の様に記述すればオッケー。


Host <接続先のIPアドレス>
HostName <接続先のホスト名>
ForwardX11 yes
ForwardX11Trusted yes
User <接続先のユーザ名>

gpibドライバをセットアップし直し(xubuntu 24.04)

測定器が増えてきたので別のラップトップにGPIBのセッティングをしなおした。

公式サイトからGitで取得。

$ git clone https://git.code.sf.net/p/linux-gpib/git linux-gpib-git

linux-gpib-gitフォルダ以下のlinux-gpib-userとlinux-gpib-kernelを指示通りコンパイルしインストール。

(-userの方は./configure の前に ./bootstrapが必要になった。)


設定ファイル/etc/gpib.confの編集。

minor=0の次の行をboard_type = "ni_usb_b"になおす。

つづいて,groupの設定。

$ sudo groupadd gpib

でグループを作り,/etc/groupの最後の行に追加されたgpibの部分に以下のように自分のuser名を入れる。

gpib:x:1001:<ユーザー名>

ここまでできたらシステムを再起動。

再起動後に,

$ sudo /usr/local/sbin/gpib_config

を実行する。

しかしここでトラブル。

いつものような

error while loading shared libraries: libgpib.so.0: cannot open shared object file: No such file or directory

が出てきてうまくいかない。
modplobeしてもきちんとカーネルモジュールはできているのに。。。

結局,/usr/local/lib/libgpib.so.0を/lib/にシンボリックリンクを貼って解決。

ちなみに,上記作業中,autotoolsとflexとbisonをaptでインストールしないとbuildできなかった。


それから,


gtk-3.0-dev

pkg-config


もaptでインストールした。