2023年1月27日金曜日

Ubuntu20.04上でPyVISAをつかって測定器と通信

 環境はUbuntu 20 04.5

Python: 3.8.10

pip: 20.0.2

pip install pyvisaで実行しようとするも上手く動かない。

"Value Error: Could not locate a VISA implementation. Install either the IVI binary or pyvisa-py."

と言われる。どうやらpyvisa-pyを使わないといけない様子。

そこで言われた通り, pip install pyvisa-pyを実行してみる。

しかし,またimportまではできるものの,ResourceManagerを開こうとすると今度は

"NotImplementedError: Service discovery requires the zeroconf package to be installed."

と怒られる。

そこで素直にpip install zeroconf をして実行すると,今度は実行できるものの,以下のようにlist_resources()で大量の"libgpib: invalid descriptor"というエラーが。。。


しかし,サポートページによると,


とのことだったので,気にせず実行してみたところ大丈夫でした。



2023年1月16日月曜日

Ubuntu20.04(正確にはxubuntu)でGPIB通信

 何度もやっているのでさらっとできると思い込んでいましたが,なんだかんだで5時間くらいかかってしまいました。


環境: Ubuntu 20.0405 LTS

GPIBアダプタ: NI USB HS+

まず,linux-gpibパッケージをインストール。

現時点でのバージョンはlinux-gpib-4.3.5。

ダウンロードして解凍すると,いままでと様子がちがう。。。。

新たにlinux-gpib-kernel−4.3.5.tar.gzとlinux-gpib-user-4.3.5.tar.gzという二つのファイルが現れた。


なんじゃこれと思いながら,まずは両方解凍。

READMEやらなにやら読むこと数分。

どうやらkernel関係のモジュールをmakeしたあとでuser以下の設定ファイル類をインストールするという手順らしい。

まずはkernel。

こちらは単にmakeしてsudo make installでオッケー。

次にuser。

linux-gpib-user-4.3.5ディレクトリに移動し,


    $ ./configure --sysconfdir=/etc

    $ make

    $sudo make install


で完了。

次に,設定ファイル/etc/gpib.confを編集。

変えたのは一箇所だけ。

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

ここにどんなtypeを入れればいいかは公式サイトに書いてある。


つづいて,groupの設定。

$ sudo groupadd gpib

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

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

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

再起動後に,

$ sudo /usr/local/sbin/gpib_config

を実行する。

これはどうやら私の環境では毎回やらないとダメかもしれない。

udevの設定がうまくできればやらなくていいはず。

これで完成。


2023/03/15追記

上の手順の最後,

$ sudo /sbin/ldconfig

を忘れると,

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

とか言われます。

2022年12月6日火曜日

Apple siliconのNI488.2ドライバが一向に開発される気配がないのでLinuxにもどろうか(事前調査)

 2022年12月時点で,NIがmacOSはx84_64しかサポートしていないので,intel mac を新品で買えない現状では研究室の維持が難しくなってしまう。


さらに,最近のmacOSではウインドウをアクティブにしておかないと,処理が遅くなるようなので,これも測定に悪影響を及ぼす恐れがある。

うっかり測定用プログラムが走っているウインドウ以外をクリックしてしまったりすると,測定プログラムがアイドル状態とみなされてしまうのだろう。


LinuxからmacOSに移った理由の一つが,VNCでのぞいたり場合によっては測定条件を変更したりしたいから。

RDPやmacの画面共有(これは所詮VNCだけど)と違って,サーバ側をLinuxにしてVNC接続すると,別のXが立ち上がるようになっている(複数人で使えるように)。

しかし,測定で使用する場合,今まさにディスプレイで表示しているものをそのまま表示して欲しいので,それではちょっと困る。


しかし!最近救世主のようなVNCサーバに出会えた。

X11VNCとかいうやつらしい。

VNC用のパスワードを発行して,現在デスクトップで表示されているものをそのまま共有できるらしい。

そこらへんにころがっているちょっと古いDOS/V機で十分いける!


そこで,ひさびさにLinux-GPIBのウェブサイトを覗いてみる。

すると,

The 4.x.x and later series kernels are also supported by the packages in the linux-gpib for 3.xx and 2.6.x kernels folder.
The latest stable release (linux-gpib-4.3.5) has been tested on linux version 5.19.0-rc7 from kernel.org 

と書いてある。

先日入れたxubuntu22.04のカーネルを調べるために,uname -rしてみると,5.15.0-56-genericとのこと。


条件的には大丈夫そう。

でもなるべくコンダラひきたくない。


これも続きは後日。








2022年11月30日水曜日

Linuxにmusrfitをインストール(令和版)part 1

 mac上のmusrfitに多少の不安があるので、今後のことも考えてlinuxでも実行できるようにしておくことにした。

 

まずはテストとして10年おちのCeleronマシンにインストール。

Scientific Linux7.9で動いているので、ここにインストールしようとしたのだが、cmakeやコンパイラのバージョンが古すぎてインストールできないという困難に直面。 

重いコンダラ引きたくないので、この際OSからインストールし直し、うまく動いたら新しいラップトップに入れ直すことにした。

 

ディストリビューションの選択は、centos系だとhdf4がインストールできないことはわかっていて、nexusやらでつまずくのが嫌なので、apt系。

すると自ずとLubuntuかXubuntu。

ねずみで癒やされたいのでなれているのでxubuntuに。

現在のバージョンは20.04.1。インストールUSBをwindows PCからunetbootinで作成。

対象のPC、BIOSでUSB drive起動の優先順位をあげて、差し込んで再起動。

インストールはあっというま。

再起動しゴニョゴニョしていると、22.04にアップグレードするかと聞かれる。

頭の片隅にコンダラがちらつくが、調子に乗ってアップグレード。


まずはPSIウェブサイトの指示にしたがいインストール。


$  apt-get install git cmake libboost-dev libboost-filesystem-dev libboost-system-dev libgsl-dev libfftw3-dev libxml2-dev qt5-default qtbase5-dev libqt5svg5-dev


ただし、qt5-defaultというパッケージはないと怒られる。

qtbase5などは問題なく入るので、もし名前が変わっているのならきっと必要パッケージとしてどこかで入るだろうと甘く見て次へ進む。

次が問題のhdf4と5。


$ apt-get install libhdf4-dev libhdf5-dev

 

 問題なくインストール。

つづいてnewxus

$ cd Downloads
$ mkdir nexus
$ cd nexus
$ git clone https://github.com/nexusformat/code.git
$ mkdir build
$ cd build
$ cmake -DENABLE_HDF5=1 -DENABLE_HDF4=1 -DENABLE_MXML=0 ../code
$ cmake --build ./ --clean-first
$ sudo make install

 

こちらも問題なくオッケー。

つづいてroot。

説明を見ると、$HOME$/Appsにインストールするようになったようだ。

まぁ、このご時世複数人でPCを共有することもなかろうと、指示通りに。

まずは必要パッケージのインストール。


$ apt-get install libx11-dev libxft-dev libxpm-dev libxext-dev

特に問題なし。

続いてroot。

途中の"git tag -l"によると、現時点でのバージョンはv6-26-10なので、それに合わせて。

 

$ cd $HOME
$ mkdir Apps
$ cd Apps
$ git clone http://github.com/root-project/root.git
$ cd root
$ git tag -l
$ git checkout -b v6-26-10 v6-26-10
$ mkdir root_build
$ cd root_build
$ cmake ../ -Dgminimal=ON -Dasimage=ON -Dmathmore=On -Dminuit2=ON -Dxml=ON -DCMAKE_INSTALL_PREFIX=../root_exec
$ cmake --build ./ --clean-first
$ make install

 

 Celeronのせいか、異常に時間がかかる。

ながくなったので続きは次回。

 

 


2022年10月26日水曜日

musrfitを久しぶりに使おうとしたら,変なエラーが出てしまった

スペクトルを表示しようとmusreditのボタンを押すと以下のような怪しいダイアログが出てしまう。 

musrviewで直に.msrファイルを開こうとしてもエラーが。

% musrview test-histo-ROOT-NPP.msr 

dyld: Library not loaded: /opt/local/lib/libgsl.25.dylib

  Referenced from: /Users/*****/Applications/root/root_exec/lib/libMathMore.so

  Reason: image not found

zsh: abort      musrview test-histo-ROOT-NPP.msr

libgslがないと怒られている。

しかし,実際はlibgslはmacportsでインストールされています。

 % sudo port installed gsl

Warning: port definitions are more than two weeks old, consider updating them by running 'port selfupdate'.

The following ports are currently installed:

  gsl @2.6_0

  gsl @2.7_0

  gsl @2.7.1_0 (active)

なるほど,バージョン2.7がインストールされているのにバージョン2.5を呼び出しているのか。。。

古いバージョンをactivateしようにも,2.6以降しかインストールされていない。

実際,/opt/local/libに見に行ってみると,

 % ls -l libgsl*

-rwxr-xr-x  1 root  admin  2228224 12  2  2021 libgsl.27.dylib*

-rw-r--r--  1 root  admin  3939896 12  2  2021 libgsl.a

lrwxr-xr-x  1 root  admin       15 12  2  2021 libgsl.dylib@ -> libgsl.27.dylib

-rwxr-xr-x  1 root  admin   219792 12  2  2021 libgslcblas.0.dylib*

-rw-r--r--  1 root  admin   331056 12  2  2021 libgslcblas.a

lrwxr-xr-x  1 root  admin       19 12  2  2021 libgslcblas.dylib@ -> libgslcblas.0.dylib

(libgsl.dylib@っていうシンボリックリンクがいるのだから,libMathMore.soがそっちを参照しに行けばいいのに,25をよみにいっているところがアホ)

git pullしてrootをソースから作り直してもおなじメッセージが出る。

macportsで古いgslをインストールするのも手なのですが,ちょっと面倒なのでやっちゃいけないのは承知で以下のようにしてみました。

 % ls -l libgsl*                              

lrwxr-xr-x  1 root  wheel       15 10 26 16:06 libgsl.25.dylib@ -> libgsl.27.dylib

-rwxr-xr-x  1 root  admin  2228224 12  2  2021 libgsl.27.dylib*

-rw-r--r--  1 root  admin  3939896 12  2  2021 libgsl.a

lrwxr-xr-x  1 root  admin       15 12  2  2021 libgsl.dylib@ -> libgsl.27.dylib

-rwxr-xr-x  1 root  admin   219792 12  2  2021 libgslcblas.0.dylib*

-rw-r--r--  1 root  admin   331056 12  2  2021 libgslcblas.a

lrwxr-xr-x  1 root  admin       19 12  2  2021 libgslcblas.dylib@ -> libgslcblas.0.dylib

不具合が出るまでこれで行きます。

きちんとスペクトル表示されました。







2022年10月22日土曜日

大学のAdobe Creative Cloud で,「アプリケーション管理にアクセスする権限がありません」と表示される

 大学の古いmac mini (Late 2012, Catalina)にadobe creative cloudをインストールし直して,ログインしてadfs認証パスしたのですが,表題の通り「アプリケーション管理にアクセスする権限がありません」と表示され,アプリのインストールやアップデートができない状態になってしまいました。

以前この症状になった記憶があったので,google先生に聞いてみたところ,立命館大学のサイトにヒントが書いてありました。

/Library/ApplicationSupport/Adobe/OOBE/Configs/ServiceConfig.xml

の中の,

<visible>false</visible>

の行を

<visible>true</visible>

にsudo viで変更して,Creative Cloud を再起動してadobeのログインをし直すと,無事解決。

2022年10月4日火曜日

macOSでVisual Studio CodeとLaTeXを使うならDropbox

 タイトルが全てです。

Visual Studio Code側では,最初,settings.jsonにレシピとツールをクソ真面目に書いて,ptex2pdf -uだけを複数回実行するのか,ubibtexを間にいれるのかを区別してコンパイルしていたのですが,結局latexmkに頼れば一発だったので,前回のポストのようにしました。

iCludDrive上のファイルは扱えなかったのに,Dropbox上のファイルは問題なく扱える。

正確には,iCloud上のTeX文章もVisual Studio Codeのターミナルを使えばコンパイルできるのですが,⌘sで保存した時にコンパイルという便利さが失われるのでiCloud上のファイルを使うのはやめました。


もともとDropBoxやめようと思ったのは,iPad上のTexifier.appがDropboxを扱えなくなったからなのですが,そもそもiPadはクラウドタイプセットメインになりつつあるので,iPadでTeX文章書くことを諦めるます。

もう少し調べたら何かあるのかもしれませんが。。。。