AVR用のPC

新しい書き込み用PCが完成
AVRの書き込み用のPCをセットアップした。AVRの便利な点は、プリンターポートを使うと、簡単なケーブルを自作するだけで、書き込みができることだ。しかし、困ったことに、最近のPCからはプリンターポートが無くなっている。今回、新しくPCを買おうとしたが当然無い。しかし、マザーボードを見ていたら、ピンだけは残っているものを発見した。そこでそれを購入して、ピンから拡張ボードの部分を使ってDsubコネクタを出せるように細工した。Debian lennyをインストールして、

aptitude install gcc-avr avrdude avr-libc

でAVRに必要なものをインストールする。あと、lpグループにユーザーを加えた。これで一応終了だ。

Read more...

sargeのインストールに成功

古いdebianのインストール方法
ようやく、debian sargeのインストールに成功した。しかし、古いOSはネット上からデータが無くなってくるので、難しかった。結局、netinstのCDを使ったのだが、ネットワークからデータを取りにいく前に一端インストール作業を中断する必要がある。今回は、rootとユーザーの設定をした直後にquitして、loginをしてaptとproxyの設定を行った。/etc/apt/sources.listを編集して、

deb http://archive.debian.org/debian/ sarge main contrib non-free

とし、archiveから取ってくるように設定する。そして、/etc/apt/apt.confを

Acquire::http::Proxy "http://proxy:8080/";
Acquire::ftp::Proxy "ftp://ftp-proxy/";

とし、proxyを設定する。その後でtaskselを実行すると、インストールできる。つまったのは、X11の設定である。PS2のマウスに対してpsauxのps2を選ばなければならなかったのだが、久々だったのでそれを間違えていた。あとは、日本語の表示がおかしかったので、ttf-sazanami-minchoやttf-sazanami-gothicをインストールしたら、まともになった。でも、日本語入力の設定は面倒なので、しなくても良いかな。

Read more...

download old debian

sargeをdownload
古いLinuxでしか動かないプログラムがあったので、仕方無く古いDebianを入れることにした。しかし、ネット上になかなか見つからない。Swedenのsunetやhttp://cdimage.debian.org/cdimage/archive/で一部のisoやjigdoが見つかるのだが、うまく落とさなかったりする。また、aptの設定にも困る気がする。 結局、jigdoでrikenから落とすことができることが分かった。まず、.jigdoで必要ならプロキシの設定をする。そして、jigdo-liteでjigdoのファイルを指定すると、何か聞かれるが、一つ目は蒸ししてリターン。二つ目にサーバーを聞かれるので、http://ftp.riken.jp/Linux/debian/debian-archive/debian/を指定したら、動きだした。 もしかすると、apt-lineにも、これを指定したら良いのかも知れない。それならば、netinstのCDでも良い気がするが、どうなのだろう。

Read more...

スプライン補完

ruby-gslでspline

離散的なデータの間の値を補完しようとしたのだが、関数でfittingすると非常に複雑なものになりそうだったので、スプライン曲線で補完することにした。

スプライン曲線を計算して書こうとすると、意外に難しいらしい。GSLでできるのでは無いかと思って調べてみたら、やはりできた。というわけで、ruby-gslでspline補完するために書いたプログラムがこれ。

require "gsl"
data=[
[2.0144,7.8956747],
[109.2747,0.9246663],
[216.3775,0.6455773],
[319.6925,0.3726170],
].sort_by{|t,v| v}.transpose
ya=NArray.to_na(data[0])
xa=NArray.to_na(data[1])
spline = GSL::Spline.alloc("cspline",xa,ya)
puts spline.eval(4.5)

xaは小さい方から大きい方に単調になっていけないようなので、sortが必要だったが、あっさり動いた。さすがruby。

Read more...

wine0.9.25をsqueezeにインストール

古いwineのインストールは大変だ

windowsで動かしているプログラムが、うまく動かなくて困っていたら、どうやら、windowsのversionが悪さをしているらしいということが分かった。それまではwindows98で動かしていたのだが、windows95かNT4.0でしか動かないらしい。なんでこんな状態になっているのだろう。今更、windows95も無いので、linux上のwineで動かしてみることにした。

squeezeの上で、最新のwineから、winecfgを使って、windows95とかNT4.0仕様で動かすように指定しても、うまくいかない。以前、似たようなことをやったときに、wine0.9.25で動いたことがあったので、これをインストールすることにした。

まずはソースをdownloadして、展開する。そして、コンパイルに必要なbuild-essential flex bison libx11-dev libxext-devをインストールする。しかし、signal_i386.oに関するエラーが出る。いろいろと調べてみたら、wine-0.9.25/dlls/ntdll/signal_i386.cを書き換える必要があるようだ。

/* signal context platform-specific definitions */
のすぐ後に
#define VIF_MASK 0x00080000
#define VIP_MASK 0x00100000
を入れるらしい。やってみたら、wineのインストールには成功した。
Read more...

pdfeditでpdfの加工

pdfのロック
pdfを編集する必要が出てきたので、linuxで使えるpdfの編集ソフトを探すと、pdfeditというのがあるらしい。debianなら、aptitude install pdfeditでインストール完了である。 これを使って、あるpdfを編集しようとしたら、read-onlyだからダメだと言われる。属性は大丈夫なのだが、pdfの中でロックがかかっているようだ。webで調べたら、pdf2psでpsにしてから、ps2pdfでpdfに戻せば良いと書いてあった。試してみたら、ファイルサイズがかなり大きくなってしまったので、これは適切では無いようだ。さらに調べると、Tools-Delinearizeを選んで、ファイルを読み込んで、セーブすると良いらしい。この方法でも少しはファイルが大きくなったが、問題無いレベルである。

Read more...

新しい測定装置

USBTMCのアクセス速度
今日、測定装置が到着したので、早速その制御を試みてみた。その測定装置は、インターフェースはUSBしかない。それをLinuxからUSBTMCで制御するのだ。 以前に別の装置で試したときには、/dev/usbtmc0の権限が問題になった。これはまだ解決できていないが、新たな問題が見つかった。readする際に、時間がかかっていたのだが、それは解決することができた。 rs232cのときにも同じだが、usbtmcでもrubyから"r+“でopenして、読み書きしている。書く方は、writeしたあとでflushすれば、うまく行くことは前に分かった。しかし、読む方は普通のreadを使って一回につき5秒ぐらいかかってしまっている。bufferにたまったdataを読むときに、timeoutを待って、表示されているように思われるので、いろいろと調べていたら、なんとなく原因が分かってきた。rubyのIOのmethodを見ていると、readpartialというものがあり、即座に得られるデータを返してくれるらしい。試しにこれを使ったら、通常の読み込みは思ったとおりに動作した。長い時間待たないといけない場合には、timeoutになってしまったので、bufferに文字があるかどうかをselectかなんかで調べてから読むようにすれば良いのだろう。 あとは、権限問題だ。

Read more...

マイクロソフトの陰謀か

winmail.dat
知り合いからのメールで、winmail.datという添付ファイルがついてきたが、内容が読めない。メールのソースを見てみると、Content-Typeはapplication/ms-tnefになっている。ネットで調べてみると、Outlookで送ったときに起こる、他のメーラーを排除しようという試みの一環のようだ。outlook以外では読むのが難しくなっているらしい。 debianのパッケージには、tnefというものがあり、これをaptitudeでインストールして、tnef winmail.datとして変換したら、pdfに変換してくれた。 昔はmacの場合に、binhexとかで苦しんだことがあったが、今度はwindowsだ。だんだんやり方が悪質になっている気がする。標準的なbase64で送れば良いのに。容量もほとんど変わらないのに。マイナーなフォーマットを使うメリットとしては、outlook以外を使うなという圧力をかけられるということ以外無いように思えてしまう。

Read more...

DebianのLXDEのゴミ箱

ゴミ箱の場所
Debian Linuxでは、LXDEを使っている。最近は、LXDEにもゴミ箱があるのだが、これを空にするときに、うまくいかない時がある。USBメモリなどでは、ゴミ箱は.Trashというフォルダに入っているのだが、HDDではどこにあるのか分からなかった。調べたら、~/.local/share/Trash/filesという場所にあったので、その中身を消したらHDDの容量が2%ほど開放された。

Read more...

測定装置のインターフェース

USBTMCを使ってみた
PCと測定装置の間のインターフェースとしては、少し前まではGPIBが一般的だった。しかし、最近ではGPIBは使えない装置も増えてきた。代わりに増えてきたのがLANかUSBである。LANの場合には、IPの設定や測定装置用のLANの構築が面倒だ。一方USBはどのようにPCに認識されるかが問題である。特にLINUXで制御する場合には問題である。 いろいろと調べていたら、USBTMCという規格があるらしく、LINUXでも標準で対応しているようだ。そこで、近くにあったagilentのUSBを持つ装置をubuntuで試してみた。USBケーブルとつなぐと、/dev/usbtmc0ができて、これをIOとして読み書きできるようだ。そこで、rubyから"r+“でopenしてコマンドを書き込んでみると、いくつかのコマンドは受け付けたが、エラーが返ってくるときもある。いろいろと試してみたら、コマンドを送ったあとで、flushすると、うまく動くようになった。これで、基本的にはLINUXマシンのUSBから装置の制御ができる。 しかし、考慮しなければいけない問題も残っている。まず、USBの装置が何台かあった場合に、それをどのように区別するかである。一つの方法としては、*IDN?をつかって、装置を特定して、プログラムの上からそれを割り当てることができる。また、ファイルのアクセスの権限がrootにしか無いので、これをどうするかである。今回はchownして使ったが、それはあまり良い方法とは言えない。ケーブルを接続するときにできるデバイスなので、あらかじめ権限を変えておくわけには行かないし。おそらく何か設定する方法があるのだろうから、それを探さないと。 USBを使った測定システムを構築することが、これでずいぶん簡単になった。まだあまりUSBの装置は手元に無いが、今度装置を買うときには、GPIBが無くてもUSBがあれば、気にせずに買うことができる。

Read more...