2012年12月11日火曜日

MacでGUIプログラム: Designer-qt4編 その1

Macで測定ソフトを作りたいなぁ,と思っているのですが,残念ながらXcodeでObjective-Cは私には複雑すぎて...

そもそもCのヘッダーファイルを.mファイルから呼んできちんとうごくにはどうすればいいかなんて,Xcodeビギナーにはハードルが高すぎました(笑)

そこで,あきらめてGtkかQtで作ろうと思い,せっかくMacで見た目美しく作るのだから,Qtだろう!と勝手に思い立ち,さっそくfinkでQt4をインストール.
パッケージはいくつかあったけど,"qt4-base-mac"を中心にインストール.

すると,依存関係から沢山のパッケージがインストールされ,その中にしっかり"qt4-base-mac-designer"もあるではないか!

そこで,コマンドラインから呼び出そうとしましたが,Linuxのような

$ designer-qt4

がありません!!!

これはLinux版

そこで,どこにインストールされているかを探します.

$ dpkg -L qt4-base-mac-designer

で探すと,/sw/lib/qt4-mac/bin/Designer.appにあると.

しかし,.appの拡張子でわかるように,これは実際はディレクトリですので,コマンドラインからは立ち上がりません.
そこで,Finderからダブルクリックで起動しました.


これを毎回いちいちFinderから起動は面倒なので,Dockに追加しておきました.

実際の開発は明日以降に...

MacかLinuxか,それが問題だ!(GPIBとRS232Cを,Mountain LionかScientificLinux6.3か)

GPIBとRS232Cをつかった測定システム構築のために,どんな環境がいいかいろいろ試しています.

自分一人でやるなら何でもいいのですが,いずれは共同研究者の方や,学生さん達にもお勧め出来るシステムの方が良いと思い,なるべく再現性のよいシステムを考えています.

そもそも,MacがいいのかLinuxがいいのかという選択肢があるわけですが,LinuxでNIのUSB-GPIB-HSを使う場合,2012/12時点でNI-488.2 2.9がkernel 2.6.24までしかサポートしていませんでした.

入手しやすい格安なラップトップ場合,最新のグラフィックボードをつかっていることが多いと思います.
その場合実際は最新のLINUXディストリビューションを使いたいのですが,そうするとNIのドライバが対応していない,という状況に陥ります.
実際,私の環境(HPの5万円程度のラップトップ,ProBook4730s)の場合,グラフィックがAMD Radeon HD 7470Mという比較的新しいもので,ScientificLinux6系でも6.3でやっと対応という状況です.
しかし,6.x系のカーネルは2.6.32-xなので,NI-USB-GPIB-HSが使えません!
5.x系はkernel 2.6.18-xなので大丈夫なのですが,XがVGAモードで起動すらしませんでした.

ScientificLinuxのカーネルバージョンヒストリーはここにあります.

そこで,LINUX-GPIBパッケージを使うのがいいとは思うのですが,過去のエントリにもk書いた通り,rootユーザで毎回ドライバの設定を読ませなくてはいけなかったり,使うユーザをgpibグループに追加しなくてはいけなかったりするし,そもそもあまり『コンダラを引きたくない』ヒトにはオススメ出来ないなぁ,と思っていました.

MacにNIのGPIBドライバがインストールできて,RS232cも簡単に読めれば,Macでやってもいいので,試しにやってみました.

まず,RS232cですが,Linuxではデフォルトでカーネルにドライバーがありましたので,
さすだけでモジュールがロードされていました.
BSDであるMacでもそんなに大きくは変わらないはず.

そこで,一切ドライバーインストールせずにまずはUSB-RS232変換ケーブルをブッさしてみました.
環境は,MacBookAir 11インチのMid2011モデルで,Mountain Lionにアップグレード済みです.

残念なことに,ドライバがロードされた気配もなく,

$ ls /dev/tty.*

としてみても,Bluetooth関係しか見えてきません.
そこで,チップの製造元FTDIのサイトから,Virtual COM Portドライバを探してきました.

インストールはあっけなく終了.
ケーブルを挿してみると,


無事に見えているようです.
一方,NIの488も,ここからリンクをたどってドライバをインストールしました.
2012/12の段階で,NI4882のバージョンは3.0.1でした.

Mountain Lionは対応しているとは書いていなかったのですが,あっさりインストールに成功し,通信できました.
(くれぐれも自己責任でお願いします!!)


GPIB Explorer.appが起動し,GPIBインターフェースが見えています.


付属してきたSample.cの中身をちょこっと変えて,*IDN?を投げかけて結果を読むようにしてみました.
しっかり動いています.

コンパイルは,

$ gcc Sample.c -m32 -framework NI488

でいいみたいです.
NIのウェブサイトに,

NI-488.2 for Mac OS X now functions when using a 64-bit Mac OS X kernel. The driver may currently be used only from 32-bit applications.

と書いてあったので,62ビットOSであってもm32オプションでコンパイルする必要があるみたいです.


2012年12月7日金曜日

OSXLion: finkでgnuplotがインストールできない!!(Xcodeのライセンス問題によりaquatermのインストールができなかった)

Cで書いたプログラムから,popenをつかってgnuplotを呼び出して,計算結果をちょこっと表示しながら進めようと思っていたら,あらまぁ,デスクトップにgnuplotを入れていないことに気づいた.

まだLionなので,さくっとインストール出来るだろうと思って,

$ sudo fink install gnuplot

を実行するも,依存関係でaquatermをインストールするところでこける.
finkをselfupdateしろとか,configureしなおせとかいろいろ言われるのでやってみるが変わらず.
xcodeを再インストールして,コマンドラインツールをインストールしなおしたり,いろいろやってみたけどやっぱり変わらず.

よくよくメッセージを読んでみると,aquatermをインストールするところで以下のような文章が...



+ xcodebuild install -target AquaTerm DSTROOT=/sw/src/fink.build/root-aquaterm-1.1.1-1 INSTALL_PATH=/sw/Applications DYLIB_INSTALL_NAME_BASE=/sw/Library/Frameworks GCC_PREPROCESSOR_DEFINITIONS=AQT_APP ARCHS=x86_64 MACOSX_DEPLOYMENT_TARGET=10.7

Acceptance of the Xcode license requires a writeable home directory or root authentication. Please change to a user with a writeable home directory, or use 'sudo xcodebuild -license' to accept the license at the system level (for all users)



なるほど,Xcodeのライセンスかなんかでこけているのか...
よくわからないけど,一般ユーザーでsudoでfinkしている限りは,ここにかいてある二番目のオプションを実行するほかないと考えられます.

そこで,言われた通り,

$ sudo xcodebuild -license

とタイプすると,ライセンスの文書が長々と流れます.
moreかなにかで表示しているみたいなので,spaceで送って行くと,最後に,

By typing 'agree' you are agreeing to the terms of the software license agreements. Type 'print' to print them or anything else to cancel, [agree, print, cancel]

と聞いてきたので,

agree

とタイプした.
半信半疑で,もう一度

$ sudo fink install gnuplot

とすると,今度は無事にインストール完了.

なんとあっけない.
普段Xcodeを使っていないのがバレバレ,というお話でした.