2015年11月13日金曜日

NIのドライバーがMacの64bitに対応していた

久しぶりにNIのウェブサイトを拝見したら,NIのGP-IB関係のソフトウエアが一新されていました.
MacOSX版のNI488.2が64bitに対応しているみたいなので,早速ダウンロードして,Linux用の電気抵抗測定プログラムをMacでmakeし直してみました.

変えたところは,

#include <gpib/ib.h>

を

#include <NI4882/ni4882.h>

と変更し,Makefileの

gcc -lm -lgpib `pkg-config --cflags --libs gtk+-2.0 gthread-2.0`

のlgpibを

gcc -lm -framework NI4882 `pkg-config --cflags --libs gtk+-2.0 gthread-2.0`

としたくらいです.

warningすら出ず,一発で動きました.



2015年7月20日月曜日

GPIB通信エラー

長時間測定しているとGPIBの通信エラーが起こる問題に悩まされています.

いちいち測定器をローカルモードに入れているからエラーが起こるのだろうと推測し,ローカルモードに戻すボタンをGUIに追加して,ループ中はローカルモードに戻さないようにしました.

以前,測定ループ中で通信する測定器がかわるたびにibdevコマンドを入れていちいちデバイスデスクリプタを取得していたらやはり通信エラーが起こったので,プログラムの最初だけ,測定器ごとにあらかじめ異なるデバイスデスクリプタを取得するようにした,という経緯がありました.

いちいちローカルモードに戻していた理由は,測定中に計測器のパネルが入力を受け付けなくなるのがイヤだった,という理由なのですが.
S木T男先輩から,『だったらローカルモードにするボタンをつけておけばいいだろ!』という至極もっともなご指摘をいただいたので,その通りにいたしました.

うまくいくこと祈りながら今日は帰宅します.




2015年6月4日木曜日

Scientific Linux7で変わったこと(TigerVNCとfirewalld)

GPIB制御するラップトップを変更するのは怖いので,musrfitを実行するサーバーだけScientific Linux 7にアップグレードしてみました.

SELinuxをとめないとSSH接続できなかったので,

[root@korma yishii]# setenforce 0
[root@korma yishii]# getenforce
Permissive

[root@korma yishii]# 

設定ファイルを書き換えて,再起動時にもSELinuxを動かさないようにする.

[root@korma yishii]# more /etc/sysconfig/selinux

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=permissive
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are pro
tected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 


[root@korma yishii]# 


こんな感じでした.

iptablesはfirewalldに変わっていました.
VNCはfirewallをとめないと入れなかったので,

[root@korma .vnc]# systemctl stop firewalld
[root@korma .vnc]# systemctl disable firewalld
rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service'
rm '/etc/systemd/system/basic.target.wants/firewalld.service'


vncはtigervncをインストールし,vncpasswdコマンドでパスワードを設定した後,vncserver :1とだけやって起動.
もちろん一般ユーザで実行しないと怖いことになります.
vncを止める時は.vncserver -kill :1だけで切れます.

2015年4月4日土曜日

iPhoneのKindleアプリで,英辞郎をデフォルト辞書として使うために

iPhoneのKindleアプリで,調べたい単語を長押ししたときにポップアップウインドウで辞書が出使える機能があります.

Kindle版の英辞郎を買ってあるので,デフォルトを英辞郎にしたいのですが,本によっては辞書を一度英辞郎に指定しても,次回は日本語ー日本語辞書に戻ってしまうので,いちいち指定し直さなくては行けないのが面倒でした.

ネットで軽く検索してみると,iPhoneの言語設定を英語にするとデフォルトが英英辞典になるという情報をみつけ,日本語辞書が立ち上がるよりはいいかと思い,試しにiPhoneの言語を英語にしてみました.
すると,なぜか無事に英辞郎がデフォルトになりました???

理由は分かりませんが,とりあえずこれで目的は達成できたので,よしとします...


2015年2月7日土曜日

GPIBで測定しながらグラフも表示する

GPIBで測定しながらリアルタイムでGnuplotを使ってグラフを描くようなプログラムをちょこちょこ書いています.

3Heクライオスタットの,4HeVTIの温度とsampleポッドの温度を五秒おきに測定してgnuplotにパイプを渡してプロットしています.



gnuplotはwxtターミナルを使っていて,プロットレンジの拡大などのめんどくさい部分はすべてgnuplotに任せています.
GPIBで測定器と通信してgnuplotに渡す部分を別スレッドにしているのですが,待ち時間もこのスレッドの中に入れてしまっているので,だんだん時刻がズレているのが分かります.

今後の課題です.

2014年10月3日金曜日

Mac上のmusrfitはもはやXを使わない(というか正確にはrootが)

Mac上のmusrfitで,いままで唯一不満だったのが ,rootがXQuartzを使ってしまという点でした.
せっかくmusreditがaqua対応になったのに,おしい!もう一息!と思っていました.

しかし,rootも現時点でVersion 5.34.21となり,今はXを使わなくても動くらしいという情報をつかみました.
そこで,あらためてmusrfitをイチからセットアップ.

詳細はリンク先が詳しいと思いますが,今回そのままではうまくいかなかったことがあったので,メモしておきます.

まず,rootはバイナリではなくソースからインストールするとXを使わないrootが出来上がります.

musrfitは,makeするにあたりboostを見失うので,boostのパスも明示します.
私が実際にconfigureしたときのオプションは以下の通りです.

 $ ./configure --with-boostinc=/sw/opt/boost-1_55/include --with-qt4=/sw/lib/qt4-mac --prefix=$ROOTSYS --enable-NeXus

私はfinkを使っていて,Qtはqt4-base-macのパッケージを中心にそろえています.
っというかその方が(qt4-base-x11とくらべて)XQuartzを使わないので綺麗です.

それから,NeXusフォーマットを有効にする際は,make中になぜかNeXusのヘッダーファイルを 見失うので,/usr/local/include以下にnapiconfig.hとnxconfig.hをコピーしてもってきておくといいみたいです.
(本当はboost同様configureのオプションで対応できるはずだと思うのですが,どうしてもうまくいきませんでした??)



こんな感じでmusrfitが出来上がりました.
musrviewのフォントもアンチエイリアスが効いて綺麗です.


そして,fキーをおすだけでしっかりfftもできます.

2014年5月2日金曜日

Scientific Linux 6.5にGPIBのメモ

移籍して初のPCセットアップでいろいろ忘れていたことがあり苦心しました。

まず、linux-gpibをインストールしたのですが、昔作ったソースがそのままで動かないorz
コンパイルして実行すると、

./a.out: error while loading shared libraries: libgpib.so.0: cannot open shared object file: No such file or directory
とのこと。
これはすぐ解決。

$ export LD_LIBRARY_PATH=/usr/local/lib

でおっけー。
次に、なんだか悩んだのは、再起動すると常に/dev/gpib*のグループが"root"にもどってしまい、 いちいちパーミッションを与えないといけないこと。
これは、ちょっと忘れていたのですが、しばらくして思い出しました。
/etc/udev/rules.d/の下に適当な名前の.rulesファイルを作って、グループとパーミッションを指定してあげればよかった。
たとえば、

 [yishii@gpibnote01 Gtk]$ more /etc/udev/rules.d/96-gpib.rules
KERNEL=="gpib[0-9]*", MODE="0660", GROUP="gpib"
というかんじ。
一般ユーザでgpibインターフェースを使いたいときは必須。
当然、グループgpibに追加したユーザのみ使えます。

またメモしておかないと忘れるので。