So-net無料ブログ作成
  • ブログをはじめる
  • ログイン

TBS1052B + octave 4.0.1 ( + Vine linux 6.3 ) [Linux]

Vine linux でもOctave が3.6.4 から4.0.1 へアップグレードされましたね。
パッケージを作ってくださった方に感謝します。
FFT結果を判りやすく表示させるために findpeaks の関数を使いたかったのですが、
旧版ではサポートされておらず、あきらめいていました。
が、今回、新しいバージョンがリリースされ、findpeaksも使えるようになったので、
早速アップグレードした次第です。
FFTについては前の記事でTBS1052B用のoctaveスクリプトを作っていて、
これは新バージョンでもそのまま動作しましたが、
Octave を起動するためのbashスクリプトはそのままでは動きませんでした。
そういった訳で、ほんの少し引っかかった部分があったのでメモします。
3.6.4では octave の起動オプションに --eval とスクリプトファイル指定の併用が可能でしたが、
4.0 .1ではどうもだめっぽい。
bash のスクリプトで取得したデータのファイル名を octave に渡す必要があるため、
--eval オプションの方でデータのファイル名とoctave スクリプトの両方をを渡す形にしました。
そのための スクリプトは下記。スクリプト中の filename は TBS1052B で測定してUSB に保存した
波形データ(CSVファイル)で、octfft.m(後述の octave スクリプトファイル)の中で使用しています。

#!/bin/sh
# TBS 1052B のデータを FFT して表示
OCTDIR="/home/hoge/octave"
csvfile=$(zenity --file-selection --title "TBS 1052B FFT Analysis" --text "send CSV file ")
octcmd="filename='$csvfile' ; cd $OCTDIR ; octfft"
/usr/bin/octave-cli --eval "$octcmd" --persist

Octave スクリプトのパスの設定をしてやるともう少しスマートになると思いますが、
動いているのでまぁいいかと妥協しています。

折角なので findpeaks を使ってピークの表示をしてみました。
表示例は下記。
octave-fft.png
octave スクリプト octfft.m は以下です。

#  USB に保存した TBS1052B の csv データを読み込んで
#  FFT 解析、表示させる octave スクリプト

  TBS1052Bdata=dlmread( filename ,',');
  Timeseri=[TBS1052Bdata(:,4) TBS1052Bdata(:,5)];

# 情報
    infofile=fopen( filename, 'r')
    TBS1052Binfo=fgetl(infofile);
    for i= 1:20
       infostr=fgetl(infofile);
       TBS1052Binfo=[TBS1052Binfo; infostr];
    endfor
    fclose(infofile)
    sourcech=strsplit(TBS1052Binfo( 7,:),",")
    verut   =strsplit(TBS1052Binfo( 8,:),",")
    verscl  =strsplit(TBS1052Binfo( 9,:),",")
    veroff  =strsplit(TBS1052Binfo(10,:),",")
    horut   =strsplit(TBS1052Binfo(11,:),",")
    horscl  =strsplit(TBS1052Binfo(12,:),",")
    ptfmt   =strsplit(TBS1052Binfo(13,:),",")
    y0      =strsplit(TBS1052Binfo(14,:),",")
    prbatt  =strsplit(TBS1052Binfo(15,:),",")
    mdlnum  =strsplit(TBS1052Binfo(16,:),",")
    selnum  =strsplit(TBS1052Binfo(17,:),",")
    firmver =strsplit(TBS1052Binfo(18,:),",")

    source_ch       =sourcech{[2]}
    vertical_unit   =verut{[2]}
    vertical_scale  =verscl{[2]}
    vertical_offset =veroff{[2]}
    horizontal_unit =horut{[2]}
    horizontal_scale=horscl{[2]}
    pt_fmt          =ptfmt{[2]}
    yzero           =y0{[2]}
    probe_atten     =prbatt{[2]}
    model_num       =mdlnum{[2]}
    serial_num      =selnum{[2]}
    firmware_ver    =firmver{[2]}


# サンプリング数(Record Length) 2列の1行目
  num_of_smpl=TBS1052Bdata(1,2)
# サンプリング周期(Sample Interval) 2列の2行目
  smpl_period=TBS1052Bdata(2,2)
# サンプリング長
  smpl_len=TBS1052Bdata(1,2)*TBS1052Bdata(2,2)
# FFT
  FFTcomplex=fft( Timeseri(:,2))/num_of_smpl ;
# ゼロシフト(直流分を周波数範囲の中央にもってくる)
  ZsFFTcomplex=fftshift( FFTcomplex ) ;
# 周波数軸設定
  Ax_freq=linspace(-num_of_smpl/2/(smpl_period*num_of_smpl), (num_of_smpl/2-1)/(smpl_period*num_of_smpl), num_of_smpl);
# 周波数軸を含むFFT行列
  AxFFTcomplex=[Ax_freq.' ZsFFTcomplex];
# 等価振幅と位相のFFT行列
  AxFFTamph=[  AxFFTcomplex((num_of_smpl/2+1):num_of_smpl,1) abs( AxFFTcomplex((num_of_smpl/2+1):num_of_smpl,2))*2 angle( AxFFTcomplex((num_of_smpl/2+1):num_of_smpl,2))*360/(2*pi)];
  AxFFTamph(1,:)=[ AxFFTcomplex((num_of_smpl/2+1),1) abs( AxFFTcomplex((num_of_smpl/2+1),2)) angle( AxFFTcomplex((num_of_smpl/2+1),2))*360/(2*pi)];
# 最大値

  sorAxFFT=sort( AxFFTamph(:,2), "descend")
  indxsf = find( AxFFTamph(:,2) >= sorAxFFT(5) )
  max_list = AxFFTamph(indxsf,:)

# ピーク

  [pksam idxpk] = findpeaks(AxFFTamph(:,2));
  peak_list = [pksam idxpk]
  [peakls idxpks]  = sort( peak_list(:,1), "descend")
  peaksize=size(idxpks)

  for i=1:5
     if ( i <= peaksize(1) )
        peak_list5(i,:) = AxFFTamph(peak_list(idxpks(i),2),:)
     else
        peak_list5(i,:) =  [0.0 0.0 0.0]
     endif
  endfor

# グラフ

  figure('Position',[100,100,560,630])

  subplot(4,1,1)
  plot(Timeseri(:,1),Timeseri(:,2))
  axis([min(Timeseri(:,1)), max(Timeseri(:,1)), -max(abs(Timeseri(:,2)))*1.1, max(abs(Timeseri(:,2)))*1.1])
  title(filename)
  ylabel(strcat( 'amp ','[',vertical_unit,']'))
  xlabel(strcat( 'time ','[',horizontal_unit,']'))


  subplot(4,1,2)
  plot(AxFFTamph(:,1),AxFFTamph(:,2),AxFFTamph(idxpk,1),AxFFTamph(idxpk,2),'.m');
  ylabel( strcat( 'amp ','[',vertical_unit,']'))
  hx=xlabel( strcat( 'freq ','[1/',horizontal_unit,']'))
  axis([ min(AxFFTamph(:,1)), max(AxFFTamph(:,1))])

  ph=subplot(4,1,3)
  plot(AxFFTamph(:,1),AxFFTamph(:,3));
  set(ph,"ytick",[-180 -90 0 90 180])
  ylabel('phase [deg]')
  xlabel( strcat( 'freq ','[1/',horizontal_unit,']'))
  axis([ min(AxFFTamph(:,1)), max(AxFFTamph(:,1))   ,-180,180])
  #bottom_title(strcat( 'number of smple :',sprintf("%d",num_of_smpl)),'sampling period:',sprintf("%e ",smpl_period),"sec")

  subplot(4,1,4)
  plot(1)
  axis([0, 1, 0, 1])
  text( 0, 0.9, [model_num " " firmware_ver  " S/N " serial_num  ;"Record Length "  sprintf("%d [samples] %1.3e [sec] ",num_of_smpl,smpl_len) ; "Sample Interval "  sprintf("%1.3e [sec]",smpl_period)])
  #text( 0, 0.5, [model_num " " firmware_ver ; "S/N " serial_num ;"Record Length "  num_of_smpl " Sample Interval "  smpl_period])
  #xlabel( [model_num "  " firmware_ver ; serial_num] )
  #text( 0, 0.2, [ "freq           Amp            Pha"; sprintf("%1.4e  %1.4e  %1.4e", max_list(1,1), max_list(1,2), max_list(1,3)); sprintf("%1.4e  %1.4e  %1.4e", max_list(2,1), max_list(2,2), max_list(2,3)) ])
  text( 0, 0.1, [ "peak list" ; "freq          Amp           Pha"; sprintf("%1.4e  %1.4e  %3.3f", peak_list5(1,1), peak_list5(1,2) , peak_list5(1,3)); \
                                                                   sprintf("%1.4e  %1.4e  %3.3f", peak_list5(2,1), peak_list5(2,2) , peak_list5(2,3)); \
                                                                   sprintf("%1.4e  %1.4e  %3.3f", peak_list5(3,1), peak_list5(3,2) , peak_list5(3,3)); \
                                                                   sprintf("%1.4e  %1.4e  %3.3f", peak_list5(4,1), peak_list5(4,2) , peak_list5(4,3)); \
                                                                   sprintf("%1.4e  %1.4e  %3.3f", peak_list5(5,1), peak_list5(5,2) , peak_list5(5,3))])

  axis("off")

あとは窓関数の機能を盛り込めば 1ch の FFTアナライザとして一通りの機能をもったものになります。
ここまで来るとカーソルで値を読み取る機能も欲しいですが、
それはちょっとめんどくさそう・・・


TBS1052B + octave 3.6.4 ( + Vine linux 6.3 ) [Linux]

便利だけど、個人的には使わないんだろうなぁと思っていた octave。
これまた個人的には買わないだろうなぁと思っていたデジタルオシロ Tektronix TBS1052B を買っちゃったので、測定データをパソコンに取り込んで周波数分析するために octaveを使ってみた。
データの読み込み、FFT自体は意外と簡単に出来たのだが、GUI連携とグラフで少してこずったのでメモする。
要点は下記。
(1)octave のスクリプトに値を渡すためには --eval オプションを使う。
   (zenity で取得したファイル名を --eval オプションで octave に渡した)
(2)用が済むまで octave は終了させない。--persist オプションを使う。
   (Octave の plot コマンドで表示させたグラフは octave の終了と同時に消える。)

経緯
USBにあるデータを呼び出す際、ファイル名をコマンドラインでいちいち指定するのがめんどいので zenity を使うことにし、取得したファイル名を octave のスクリプトに渡す方法をググってみたのだが、ずばりの情報がなく、argv変数とか試してみたけどうまくいかなかった。
仕方なくHelp を眺めていてこのオプションがあることに気がついた。
最初から Help を見ればよかったんだよな。でも英語なんだよ。おれ英語わかんねぇし・・・
plot できない(おそらく一瞬で消えちゃう)件はちょっとあせった。
端末から octave を起動してコマンドを対話式で操作するとちゃんとグラフを表示してくれるのに、同じ手順のスクリプトファイルを作って呼び出す形で実行するとグラフを表示してくれない。orz
なんで plot が機能しないんだろうと、plot の不具合についていろいろ調べたけど判らず、あきらめモードでしばらく試行錯誤していてやっと plot が悪いんじゃないって気づきました。
「おそらく plot コマンドを実行したあとすぐにプロセスが終了して、それと同時にグラフの表示が消えてしまう。
 plot は正常に機能していて一瞬表示されているのかもしれないが私の目には見えないのだろうな。きっと」
これに気がつくまではあせりましたよ。情報も少ないし。
ということで、--persist オプションで octave を終了させずにスクリプトを終了させることで手を打ちました。
あまり美しいやり方ではないような気はしますが、後で値の確認とかもできるのでこれはこれでいいかと・・・

表示例

Screenshot-TBS1052B.png

zenity を使った octave 起動スクリプト

 #!/bin/sh
# TBS 1052B のデータを FFT して表示
csvfile=$(zenity --file-selection --title "TBS 1052B FFT Analysis" --text "send CSV file ")
/usr/bin/octave --eval 'filename="'$csvfile'"' --persist  /home/hoge/fuga/octfft.m

TBS1052B のデータをFFTするスクリプト octfft.m

 # TBS1052B の CSV データを FFT してグラフ表示
  TBS1052Bdata=dlmread( filename ,',');
  Timeseri=[TBS1052Bdata(:,4) TBS1052Bdata(:,5)];
  TBS1052Binfo=textread( filename, '%s')

# 情報

    sourcech=strsplit(TBS1052Binfo{[22]},",")
    verut   =strsplit(TBS1052Binfo{[26]},",")
    verscl  =strsplit(TBS1052Binfo{[30]},",")
    veroff  =strsplit(TBS1052Binfo{[34]},",")
    horut   =strsplit(TBS1052Binfo{[38]},",")
    horscl  =strsplit(TBS1052Binfo{[42]},",")
    ptfmt   =strsplit(TBS1052Binfo{[46]},",")
    y0      =strsplit(TBS1052Binfo{[49]},",")
    prbatt  =strsplit(TBS1052Binfo{[53]},",")
    mdlnum  =strsplit(TBS1052Binfo{[57]},",")
    selnum  =strsplit(TBS1052Binfo{[61]},",")
    firmver =strsplit(TBS1052Binfo{[65]},",")

    source_ch       =sourcech{[2]}
    vertical_unit   =verut{[2]}
    vertical_scale  =verscl{[2]}
    vertical_offset =veroff{[2]}
    horizontal_unit =horut{[2]}
    horizontal_scale=horscl{[2]}
    pt_fmt          =ptfmt{[2]}
    yzero           =y0{[2]}
    probe_atten     =prbatt{[2]}
    model_num       =mdlnum{[2]}
    serial_num      =selnum{[2]}
    firmware_ver    =firmver{[2]}


# サンプリング数(Record Length) 2列の1行目
  num_of_smpl=TBS1052Bdata(1,2)
# サンプリング周期(Sample Interval) 2列の2行目
  smpl_period=TBS1052Bdata(2,2)
# サンプリング長
  smpl_len=TBS1052Bdata(1,2)*TBS1052Bdata(2,2)
# FFT
  FFTcomplex=fft( Timeseri(:,2))/num_of_smpl ;
# ゼロシフト(直流分を周波数範囲の中央にもってくる)
  ZsFFTcomplex=fftshift( FFTcomplex ) ;
# 周波数軸設定
  Ax_freq=linspace(-num_of_smpl/2/(smpl_period*num_of_smpl), (num_of_smpl/2-1)/(smpl_period*num_of_smpl), num_of_smpl);
# 周波数軸を含むFFT行列
  AxFFTcomplex=[Ax_freq.' ZsFFTcomplex];
# 等価振幅と位相のFFT行列
  AxFFTamph=[  AxFFTcomplex((num_of_smpl/2+1):num_of_smpl,1) abs( AxFFTcomplex((num_of_smpl/2+1):num_of_smpl,2))*2 angle( AxFFTcomplex((num_of_smpl/2+1):num_of_smpl,2))*360/(2*pi)];
#
subplot(3,1,1)
plot(Timeseri(:,1),Timeseri(:,2))
axis([min(Timeseri(:,1)), max(Timeseri(:,1)), -max(abs(Timeseri(:,2)))*1.1, max(abs(Timeseri(:,2)))*1.1])
title(filename)
ylabel(strcat( 'amp ','[',vertical_unit,']'))
xlabel(strcat( 'time ','[',horizontal_unit,']'))

subplot(3,1,2)
plot(AxFFTamph(:,1),AxFFTamph(:,2));
ylabel( strcat( 'amp ','[',vertical_unit,']'))
xlabel( strcat( 'freq ','[1/',horizontal_unit,']'))
axis([ min(AxFFTamph(:,1)), max(AxFFTamph(:,1))])
subplot(3,1,3)
gtestset=plot(AxFFTamph(:,1),AxFFTamph(:,3));
ylabel('phase [deg]')
xlabel( strcat( 'freq ','[1/',horizontal_unit,']'))
axis([ min(AxFFTamph(:,1)), max(AxFFTamph(:,1))   ,-180,180])
#bottom_title(strcat( 'number of smple :',sprintf("%d",num_of_smpl)),'sampling period:',sprintf("%e ",smpl_period),"sec")

GUIというのであれば、アイコンから起動したいですよね。
gnome だとランチャーにスクリプトのパスを設定すればいいのですが、直接 octfft.sh を指定しても動いてくれません。
どうも一旦端末を起動して、そこから octfft.sh を起動する必要があるようです。
そのためのスクリプトが下記。このスクリプトをランチャーで起動すればOK。

#!/bin/sh
# TBS 1052B のデータを FFT して表示

/usr/bin/gnome-terminal -e "/home/hoge/fuga/octfftz.sh"
まぁ、この程度ならわざわざスクリプト書かなくても、ランチャーのコマンドに直接入れてもいいでしょうけどね。

Fritzing + Vine Linux 6.3 [Linux]

Fritzing をインストールしました。
ブレッドボードの実体配線図が書けるソフトです。
Make:関連をのぞいたり、GR-KURUMI関連を調べたりしていて、
このソフトを見つけました。なんか使いやすそう。
という訳で、Vine Linux にインストールしてみました。
ただ、ちょっとだけ引っかかったところがあるのでメモします。

今回もソースからインストールしました。

(1)  Fritzing のバージョンは 0.8.7b
   少しだけ古いバージョンにしました。
   どうしてかと言うと、これより新しいのは make が通らなかったためです。
   私の環境が追いついていないのが原因だと思いますが、
   必要環境が書かれているものが見つからなかったのと、めんどいので、
   トラブルシューティングはさっさと諦め、旧版の0.8.7bをインストールしました。
(2)ソースからのインストール方法はREADME.txtを参照。(でも make install はだめだった。)
   パッケージ管理の都合上、 make install ではなく、 checkinstall してみたが、だめだった。
  まぁ、それでもとりあえずは起動できました。ランチャーを準備すれば起動に困ることはありません。
 (3)Boost-devel が必要
   事前に入れておいてください。
   今回入れたのは
       libboost-devel 1.45.0-2vl6
   で、Synaptic の簡単インストールです。

 インストールの手順は
(1) fritzing-0.8.7b.source.tar.bz2 をダウンロード、適当なディレクトリに入れ、解凍。
(2) 解凍したディレクトリに入り、
     $ qmake
     $ make
 
起動方法は、上記解凍したディレクトリの中に Fritzing という実行ファイルがあるはずなので、それを確認して、
      $./Fritzing
とやる。
毎回、解答したディレクトリに入り・・・  だとめんどいので、ランチャーで動くようにしました。

環境は下記です。
Vine linux 6.3 kernel#3.4.108
gcc 4.4.5
Qt 4.7.2
Boost 1.45.0

下記はスクリーンショット

Screenshot-LED-Matrix.fzz [READ-ONLY]  - Fritzing - [ブレッドボード ビュー].png

 


Skype + Vine Linux 6.2 [Linux]

昨日、クラブのオンエアミーティングで Skype の話題が出た。

そう言えば今のパソコンに変えてから Skype は使っていなかったので
インストールされていない。

Sype (Skype 4.3.0.37)自体は Synaptic の簡単インストールでできたのだが、
ちょっとだけ手こずったのでメモる。

まぁ、Skype のヘルプにも書いてあるのだが、Linux 版は PulseAudio と ALSA を使う。
私のパソコンには一部 devel や tool のパッケージが入っていなかった。
それなので、 PulseAudio と ALSA 関連のパッケージを Synaptic でインストールしたら、
とりあえず音が出て、Test Call もうまく行った。
ここまで来れば多分使えるだろう。


Vine Linux 6.2 に 今度は Canon PIXUS MG5530 のスキャナドライバーをインストールする。 [Linux]

スキャナーはあんまり使わないのだけれど、一応使えるようにした。MG5530は複合機だし。
今回もプリンタドライバーと同様にソースからインストールする。
まず、 gimp-devel をインストールしておく、今回のバージョンは 2.6.12-2vl6 。synaptic の簡単インストール。
(*sane-devel,  libusb1-devel も必要だった。   2018-01-20追記)
次に、Canon の web ページから下記をダウンロード
    scangearmp-source-2.20-1.tar.gz
これをどこか適当なディレクトリに置いて、そのディレクトリに移動した後、下記を実行。

$ rpmbuild -tb scangearmp-source-2.20-1.tar.gz --with build_common_package

そうすると、 /home/hoge/rpm/RPMS/x86_64 に下記のファイルができているはず。
   scangearmp-common-2.20-1.x86_64.rpm
   scangearmp-mg2400series-2.20-1.x86_64.rpm
   scangearmp-mg2500series-2.20-1.x86_64.rpm
   scangearmp-mg3500series-2.20-1.x86_64.rpm
   scangearmp-mg5500series-2.20-1.x86_64.rpm
   scangearmp-mg6400series-2.20-1.x86_64.rpm
   scangearmp-mg6500series-2.20-1.x86_64.rpm
   scangearmp-mg7100series-2.20-1.x86_64.rpm
   scangearmp-p200series-2.20-1.x86_64.rpm
確認できたら、/home/hoge/rpm/RPMS/x86_64 に移動したあと
su になって、下記を実行。

# rpm -ivh scangearmp-common-2.20-1.x86_64.rpm
# rpm -ivh scangearmp-mg5500series-2.20-1.x86_64.rpm

 これで完了。
ネットワークスキャナとして使う場合は Gimp を起動して使う。
設定方法は下記。
   http://hi-take.seesaa.net/article/386700393.html
PCがネットワーク上のスキャナを探すのに比較的時間がかかったが、
すこしのあいだ我慢して待ったらうまく探してくれた。
とりあえずう動いてくれている。

今回少し手こずった部分があるので下記に経緯をのこす。

プリンタドライバーの時はソースの中に rpm パッケージの作り方が書いてあったが、
スキャナドライバーのソース(scangearmp-source-2.20-1.tar.gz)の中にはそれがなかった。
scangearmp-source-2.20-1.tar.gz を解凍して、中をいじくっていて、
autogen.sh を実行した時、下記のエラーが出た。

checking for GIMP... no
configure: error: Package requirements (gimp-2.0 >= 2.0.0) were not met:

No package 'gimp-2.0' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables GIMP_CFLAGS
and GIMP_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

どうも pkg-config で gimp が見つからないようなのだが、
gimp はよく使うのでインストールされているはず。
おかしいと思い、/usr/lib64/pkgconfig を探してみるも、確かに無い。
どうして?と思って synamptic でインストー状況を調べてみたら、
gimp 自体は入っていたのだが、gimp-devel が入っていなかった。
なので、gimp-devel 関連を synaptic でインストールした。
(足りないと困るので gimp 関連のパッケージはだいたい入れちゃった。)

それから、ソースの中を覗いていたら、SPECファイル(scangearmp-common.spec)があるのに気づいて、
それで、プリンタとの時と同様にrpmbuild で rpm パッケージを作った。
プリンタの時は機種名を指定して特定機種の rpm のみ作ることができたが、
スキャナの場合はうまく行かなかったので、指定せず実行したら全部のモデルの rpm が作られた。
まぁ、これはこれで問題は無い。
rpmbuild にオプションの --with build_common_package を付けたが、必要がどうかはわからない。
エラーも無くうまく行ったので付けておいても問題ないだろう。
長いオプションの文字列入力はめんどいけどね。


Linux で vna/J が起動しない時の対処方法 (Vine Linux 6.2 + java , vna/J + miniVNA PRO) [Linux]

デスクトップのパソコンを新調してからしばらく経つが、
そう言えばまだこのPCで minVNA PRO を動かしていなかった。

なので、java をインストールして、vna/J をダウンロードして動かそうとするも、
下記のエラーが出て起動しない。orz

[hoge@localhost ~]$ /usr/bin/java -jar /home/hoge/fuga/vnaJ.3.0.7.jar
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007fea7e892970, pid=16244, tid=140645099726608
#
# JRE version: 6.0_24-b07
# Java VM: Java HotSpot(TM) 64-Bit Server VM (19.1-b02 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  [ld-linux-x86-64.so.2+0x14970]
#
# An error report file with more information is saved as:
# /home/isamu/hs_err_pid16244.log
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
アボートしました
[hoge@localhost ~]$
それで、java 関係をインストールしなおしてみたり、古いPCの設定を覗いたりして半日潰したのだが、
結局、ググった情報をそのまま呪文のように実行したら動いてくれた。
[hoge@localhost ~]$ export LD_BIND_NOW=1
[hoge@localhost ~]$ /usr/bin/java -jar /home/hoge/fuga/vnaJ.3.0.7.jar


ただ、毎回これを入力するのはだとめんどいので適当なシェルスクリプトを書いて、
ランチャーで起動できるようにした。
それから、まえのバージョンのvna/Jは Bluetooth のデバイス /dev/rfcomm0 が
認識できなかったのだが、vna/J 3.0.7 だとゃんと認識してくれたので、
前回のように手動でリンクを張る必要が無くなった。
下記はとりあえず目の前にあったハンディー機のホイップアンテナを測ってみた時の
スクリーンショット。
Screenshot-vna-J Version 3.0.7_l.png
とりあえず、動いてくれた。
(けど、ん〜・・・アンテナとしての特性は微妙・・・)


今回動かした主なソフトのバージョンは下記です。
Vine Linux 6.2 kernel 3.4.98-1vl6
java-1.6.0.24-sun
vna/J 3.0.7



Vine Linux 6.2 に Canon PIXUS MG5530 のプリンタドライバーをインストールする [Linux]

今まで使っていた iP4200 が動かなくなってしまった。
自宅で印刷はあまり頻繁にはやらないので、稼働率はそんなに高くなかったが、
結構長く使っていたのでまぁ、仕方ないか。

ただ、印刷を全くしないわけにも行かないので、新しいプリンタを購入した。
それが Canon PIXUS MG5530 。

それで、ドライバをインストールしなくてはならないのだが、
ほんのちょっとだけすんなり行かなかったのでメモに残す。

ドライバは Canon のページからダウンロード。
最近の Canon のドライバはソースがあるんですね。
というわけで、取ってきたファイルは、
  cnijfilter-source-4.00-1.tar.gz

このファイルを解凍するとREADME があり、インストール用 rpm パッケージの作り方が書いてある。
Vine Linux は rpm 管理なので rpm でインストールするという点で都合がいいですね。
作り方はその README を見ていただくとして、
その前に下記をインストールしておく必要があります。
(いずれも Synaptic の簡単インストール)
  cups-devel
  libusb1-devel

README に書かれているように rpmbuild で rpm ファイルを作り、
su になってインストールしました。
 # rpm -ivh cnijfilter-common-4.00-1.x86_64.rpm
 # rpm -ivh cnijfilter-mg5500series-4.00-1.x86_64.rpm

このあと、プリンタをつないで、Gnome パネルの
[システム]-[システム管理]-[印刷]を選択、
印刷のダイヤログボックスが開くので、[追加]をクリックし、 デバイスのところに MG5530 が表示されるはずなので、
それを選択。
テストページで印刷できることを確認しました。

iP4200の時にはソースがなく、rpm ファイルを解凍してファイルを個別に複写するなどして、
結構面倒だったのですが、今回はソースを公開いただいたので、比較的スムーズにインストールができました。


Vine Linux 6.2 + Qucs 0.0.16 + FreeHDL 0.0.8 [Linux]

パソコンを新調して引越しをしているのだが、その一環で Qucs をインストールした。
以前は、面倒臭がって、どこからか拾ってきた rpm をインストールして使っていたのだが、
ファイルが i586 なのでちょっと古いかな・・・・

というわけで、ソースを取ってきてインストールしました。

まずは、FreeHDL 0.0.8.
Qucs のサイトから freehdl-0.0.8.tar.gz をダウンロードして、展開。
freehdl-0.0.8 というディレクトリができるので、そこに移動して、

   $ ./configure
   $ make
   $ su
   # make install

私は Vine Linux を使っている都合上、パッケージ管理は rpm でやっているので、
本当はcheckinstall したかったのだが、以下のエラーが出て、インストールできず。
   ranlib: could not create temporary file whilst writing archive: No more archived files
仕方がないので、上記のごとく、 make install とやった。
ただ、上のエラーとも関連があるのかもしれないが、ライブラリのリンクがうまく行かず、
手動で ldconfig を実行した。

  # ldconfig

Qucs インストール
最初、qucs-0.0.18 をインストールした。
Readme に書かれていた、./configure はうまく行かず、
cmake でビルドして、make,checkinstall できたのだが、
プログラムうまく動かず、さっさと諦めた。
次に qucs-0.0.17 を入れようとしたが、./configure も cmake も通らず、
これもろくすっぽ原因を調べずに諦めて、
qucs-0.0.16 を入れた。0.0.16には CMakelists.txt がなかったので、
configure でビルドインストールした。

  $ ./configure
  $ make
  $ su
  # checkinstall

とりあえず動いている。
下記がそのスクリーンショット

Screenshot-Qucs 0.0.16-Project:hentenna.png

 


Vine Linux 6.1 + Bluetooth + miniVNA PRO [Linux]

 miniVNA PRO を Bluetooth 経由 Vine Linux 6.1 で使う。

とりあえず使えたが、すんなり行かなかったのでメモを残す。

1. Bluetooth の設定
アダプタはロジテック LBT-UAN03C2BK8。ドライバは準備不要でUSBに挿したら使えた。
(1)メニューの [システム]-[設定]-[ハードウエア]-[bluetooth マネージャー]を開く。
Bluetoothデバイス1.png
(2)miniVNA PRO の電源を入れる。
(3)(1)で開いた bluetooth マネージャーの「検索」をクリックすると
     「PRO SN ******」が表示されるはず。それをクリックで選択して[セットアップ]
Bluetoothデバイス2.png
(4)Pairing の選択になるのでここは「Proceed Without Pairing」(3行目の一番下)を選択
pairing.png
(5)次のダイヤログボックスで 「Serial Port」を選択して [進む]
serialport.png
(6) 新しいダイヤログが開くのでパスワードを入力。
       パスワードはminiVNAのハードウエアガイドに記載されている。
pairing_code.png
(7)ここで接続が完了して、画面右上に/dev/rfcomm0 とか表示される。
serial_port_connected.png

2.vna/j のための設定
(1)vna/j は tty で始まるデバイスしか検索できないみたいなので、
       コマンドライン端末から下記にてリンクを作成。
          # ln -s /dev/rfcomm0 /dev/ttyrfcomm0
(2)vna/jを起動。 [Analyzer]-[set up]とやると、
      「Available ports」の中に先ほどリンクした"ttyrfcomm0"がリストの中に表示されるので
       それを選択。あとは通常運転

     2.(1)の手動リンクはもっとスマートなやり方があると思うが、とりあえずこれで動いた。


Vine 6.1 + FreeCAD ( + Boost 1.41.0 ) [Linux]

Vine 6.1 に FreeCAD 0.13 をインストールしてみた。
正確には取ってきたソースをビルドして出来たバイナリを/home 以下に置いたままの状態で
使っている。
とりあえず起動はできたが、3D-CAD は全くの初心者なので、
このソフトが問題なく動いているのかどうかは実のところよくわからない。
まぁ、それでも、スケッチで書いた長方形に奥行きを与えて枠のような図形は
書くことができたのでとりあえずは動いている。(一番下の図)

1.事前に入れておくべきパッケージ
1.1 README.Linux に書かれているパッケージ
  FreeCAD の README.Linux に色々かいてあるのでそれをインストールするのだが、
  下記以外は synaptic 経由でインストールできたので説明は省略する。
(1)Eigen
    README.Linux だと、Eigen2となっているが、configure とかやっている
  最中に Eigen3は?と聞かれた気がしたので Eigen3 を入れた。
  eigen-eigen-5097c01bcdc4.tar.bz2 というファイルを取ってきてインストールした。
  苦労した印象が無いので多分スムーズに入ったのだろう。
(2)Coin3D
  Coin-3.1.3 を入れた。Coin-3.1.3.tar.gz というファイルを取ってきてインストールした。
  苦労した印象が無いので多分スムーズに入ったのだろう。
(3)SoQt
  これについては、http://ham-jq1qnv.blog.so-net.ne.jp/2013-02-24 を参照。
(4)OpenCASCADE
  OpenCASCADE は公式版とoce(コミュニティー版)がある。
  コミュニティー版のほうがインストールが簡単だという情報があったので、
  こちらを使うことにした。バージョンは 0.11.0 (OCCT 6.5.4)
  oce-master.zip というファイルをダウンロードしてインストールした。
  苦労した印象が無いので多分スムーズに入ったのだろう。
  ただ、このパッケージは cmake FTGL が必要。 synaptic 経由でインストールした。
(5)Boost
  Boost は 1.41.0 を入れること。
  Vine 6.1 の synaptic だと、1.45 で、これだとうまく行かないかもしれない。
  CMakeLists.txt を見ると、対象が1.33 〜 1.41.0 となっているっぽい。
  作業の過程で boost 関連のエラーが多くでたとき、
  1.45 は直ぐに諦めたので試していない。
  1.45 を諦めて、1.33.1 でトライすべく、
  boost 1.33.1 をインストールしようとしたのだが、
  ここでハマッてしまった。
  gcc4.4 だとうまくビルドできず、ソースを直す必要がでた。(参考2)
  そんなには多くないので、ちまちま直して、
  なんとか(/home 以下に)インストールできたのだが、
  synaptic で libboost-devel 1.45 を入れてしまっていたがために、
  FreeCAD をビルドする際、/home 以下へインストールした boost を
  cmake がうまく見つけられずに、
  仕方なく CMakeCache.txt をいじくりまわしたりして遊ばれてしまった。
  (まぁ、cmake を真面目にイジったことがなかったので、
  いい勉強にはなったが・・・ と負け惜しみ^^;)
  そこまでして、なんとか make が通りそうになった時点で、
  今度は Approximation.h が無いとか言って止まってくれちゃいました。
  1.33.1 には Approximation.h が無い。
  boost のバージョンをうまく認識してくれていないんだろうなぁと、色々探しては見たが、
  なにせ、cmake はよくわからなし、俺、SEって訳じゃ無いんだし・・・・orz
  ソースが無いのではどうしようもないので、ここで諦めて、
  boost は 1.41.0 にすることにした。
  当然、Approximation.h があることを確認して乗り換えたが・・・
  それで、boost 1.41.0 を /home 以下へソースからのビルドによるインストールをした
  (参考3)。
  このパッケージは、gcc 4.4 でも問題は無かった。
  最初からこれにしておけば時間がかからなかったのに・・・

1.2 README.Linux に書かれていないパッケージ
(1)matplotlib
  matplotlib-1.2.0 を入れた。
  matplotlib-1.2.0.tar.gz というファイルを取ってきてインストールした。
  苦労した印象が無いので多分スムーズに入ったのだろう。
(2)spnav
  必要かどうかわからないが、configer が探しているようなのでインストールした。(参考4)
  ただし、spnavd についてはインストールしたものの、
  セットアップはせず、起動もしていない。
(3)numpy,swig,doxygen
  いずれも synaptic の簡単インストール

2.FreeCAD のビルド
  freecad-0.13.1830.tar.gz を取ってきて展開。
  README.Linux には ./configure となっているが、freecad-0.13 は cmake を使う。
  これについては参考1を参照。
  それから、boost を /home 以下にインストールしたものを使うので、
  synaptic などで libboost-devel をインストールしている場合は
  アンインストールしておく。cmake が libboost や include を探す時の邪魔になる。
  そうしておいて、展開したファイルのディレクトリに移動して cmake とやる。
   $ cmake .
  CMakeCache.txt ができるので、中を見て、
  Boost_*なんとか*_LIBRARY_DEBUG:FILEPATHと
  Boost_*なんとか*_LIBRARY_RELEASE:FILEPATHが
  /usr/lib64/libboost_*なんとか*.so とかになっていたら、
  /home/hoge/boost/boost_1_41_0/lib/libboost_*なんとか*.so
  とかに変更する。
  例えば、
  //Boost program_options library (debug)
  Boost_PROGRAM_OPTIONS_LIBRARY_DEBUG:FILEPATH=/usr/lib64/libboost_program_options.so
  であれば、
  Boost_PROGRAM_OPTIONS_LIBRARY_DEBUG:FILEPATH=/home/hoge/boost/boost_1_41_0/lib/libboost_program_options.so
  にする。また、
  Boost_INCLUDE_DIR:PATH=Boost_INCLUDE_DIR-NOTFOUND となっていたら、
  Boost_INCLUDE_DIR:PATH=/home/hoge/boost/boost_1_41_0/include
  に変更する。
  次に make する。
   $ make
  すると、"前述展開したディレクトリ/bin" に
  FreeCAD という実行ファイルができているので、
   $ cd bin
   $ ./FreeCAD
  とやると、FreeCAD が起動してくれる。
  実は、上記 make は途中でエラーを起こして止まってしまっている。
  こんな感じ。
   [fuga@piyo freecad-0.13.1830]$ make
   [  0%] Built target coin
   [  1%] Built target soqt
   [  2%] Built target Driver
        省略
   [ 98%] Built target Ship
   [ 99%] Built target OpenSCAD
   [100%] Built target Plot
   make[2]: 循環 data/examples/Schenkel.stp <- data/examples/Schenkel.stp
   依存関係が破棄されました.
   [100%] Generating Schenkel.stp
   Error copying file "/home/fuga/fuga/FreeCAD/freecad-0.13.1830/data/examples/Schenkel.stp" to "/home/fuga/fuga/FreeCAD/freecad-0.13.1830/data/examples/Schenkel.stp".
   make[2]: *** [data/examples/Schenkel.stp] エラー 1
   make[1]: *** [data/examples/CMakeFiles/Example_data.dir/all] エラー 2
   make: *** [all] エラー 2

ただし、FreeCAD 本体のビルドは出来たので、この状態で使用は可能なようだ。
エラーを起こしている部分はデータのようなので、
そのうち原因を見つけて解決したいなぁとは思う。

参考1 http://sourceforge.net/apps/mediawiki/free-cad/index.php?title=CompileOnUnix/jp
参考2 http://ogawa.s18.xrea.com/tdiary/20100106.html
参考3 https://sites.google.com/site/boostjp/
参考4 http://sourceforge.net/apps/mediawiki/free-cad/index.php?title=3Dconnexion_input_devices

FreeCAD_Screenshot.jpg

   図  FreeCAD のスクリーンショット

2D スケッチの長方形に高さを指定して枠のような図形を書いたところ。
おぉ!メニューが日本語になっているじゃないか!
3Dプリンタにデータを渡すにはどうすりゃいいんだろう。持ってないけど。


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は180日以上新しい記事の更新がないブログに表示されております。