日報

21時から27時までLabVIEWをいじっていた.一旦消してしまった振幅掃引機能を復活させ,またNI社サポートサイトから落としたファンジェネのドライバを使わず生コマンドを送ることで高速化した.
ファンジェネで振幅を大きく変化させるとアッテネータ1つでは対応できないらしく機械式リレーの「カチッ」という音がしてアッテネータが切り替わり波形が酷く乱れる.よってアッテネータは外部に付け,ファンジェネの振幅設定機能は使わないのがよさそうという判断を先日行った.そのスタイルを強制するためにLabVIEWプログラムから振幅掃引機能を削除し,その状態であれこれ機能付加等の書き換えを行っていた.しかしリレーが切り替わらない範囲でも十分に意味のある振幅掃引ができるかもしれないと思い直した.しかも外部のアッテネータの制御も別に行うのは面倒なので,付けるにしてもレベル固定で,リレーが切り替わらない範囲をうまく最終的に欲しい範囲にマッチさせるためのオフセット変更のためだけに使うのがよさそうだ.よって振幅掃引機能を復活させることに決めたのだが,LabVIEWプログラムのいじり辛さのために酷い目にあった.
タペストリーのような配線を掻き分け既存のダイアグラムをどかし,ブロック構造の境界をドラッグして広げて新しいダイアグラムのための空間を空け,その上で似たような処理をコピペし,再び配線しなければならない.おまけに関数に相当する「サブVI」というものは別ファイルにしないと定義できないので気軽に使えないせいもあり,余計に込み入ってくる.そんなこんなで変更のコストが大き過ぎるのが問題だ.振幅掃引機能を消してしまったのは失敗だったが,しかしコメントアウトのような機能があるにはあるがまともに使えないのであのときとしては仕方なかった.
ドライバというのはPC周辺機器のドライバのような大層なものではなく,単に電圧や振幅といった様々な項目それぞれに対して送るべきコマンドの雛形が内部に入っていて,与えられた数値と共にsprintfのようなことをして,その上でコマンドを送信しているに過ぎない.このとき様々な項目に対応しようとするあまり冗長なコマンドが生成されてしまう(私の使い方では変更がない項目も,毎回 同じ内容のコマンドを送っている等).このせいでGPIB通信にかかる時間が無駄に長くなっていたので,必要なコマンドだけを送る処理を自分で書いた(単にマニュアルから欲しいコマンドの書式を探し,それに従ってsprintf相当の関数を呼んだだけ).
はぁ,しかし論文や教科書を読むとすぐ眠くなったり机の上を片付けたくなるのに,LabVIEWの配線の配置をきれいに並べ替えるようなしょうもない単純作業にはついつい1時間とかかけてしまう自分がいる.こりゃ本当にもう駄目ですね...