VB2005とAVRを繋いで作るロジアナ、ネコロジー。
ここのところずっとつきっきりだったPC側ソフト、
ネコロジーPCがひとまず動作するところまで行きました。
画面はこんなかんじ。
上から1行目が0ビット目入力ピンで、上記は
チャタリングが取り込まれたところです。
3行目が2ビット目で、ずっとlow入力。
それ以外のピンはhigh入力という画です。
lowは白、highは緑で表示されます。
ネコロジーAVRとシリアルケーブルで115200bpsで
接続し、8ピン入力でデータを取り込みます。
サンプリングの細かさについては、PC側ソフトの仕様では
既定されません。接続する機器(今回はAVR-MEGA48
によるロジアナ)次第で、もっと速い速度でも今のまま
対応できるのがミソ。
PC側と外付け機器側を結ぶI/F仕様を↓
http://picavr.uunyan.com/avr_m_logiana.html
このページに挙げておいたフォーマット様式
(長いページなのでページ内サーチしてください)に
従って作っているためです。
今後、CPLDなどを使ってもっと速い速度のを
作っても、このPCソフトのままでで対応可能です。
ちなみにMEGA48版では最速2.5Msps、
つまり1サンプルあたり0.4us。
AVR-studioのシミュレーター機能が
もう少し品質高ければもうちょっとだけ速い
レートでも取り込めるんですけど、シミュレーター
自体にバグがあるので、それを避けると
2.5Mspsが目下の限界。
サンプルレートやトリガー条件はネコロジーAVR側
から使用可能なものをリストボックスに取り込んでいます。
使用者がその中からサンプルレートやトリガー条件を
マウスで選択し、「Sampling Start」をポチッと押すと
サンプルがスタートします。
時間が空いたら、VB2005express用の
プロジェクト一式をサイト上にアップして置きます。
使ってみたい方は弄ってみてください。
ちなみに、まだ一通り動いたというだけで、
エラー処理とか例外処理とか安定性とか、
そこらへんはまだまだです。今後の課題。
横方向のスケールも全然表示されてないし、
A点~B点の間の経過時間を調べたり、
データの保存・再読み込みも未搭載。
まぁ、ここまで出来ちゃえば、あとは暇な時に
少しずつ付け足していくのは多分簡単。
こうご期待。
それにしても、VBが.NET環境になっちゃってから、
serialportが別スレッドになっちゃったので、取り扱い
が面倒で仕方ありません。
マルチスレッドは色々メリットはあるんですけど、
プログラミングスタイルとしてはある意味時代を
逆行しているような感じがします。
その昔、変数や処理内容を局所化してわかりやすく
しましょうという意味でgoto文を排除する
「構造化言語」が広く取り込まれ、その後コードの
再利用等を目的に「オブジェクト指向」が取り込まれて
きましたが、マルチスレッドについてはその浸透により、
かつて見たような”煩雑さ”が新たに生まれて、
ソースの可読性を低めているような気がするのは
気のせいでしょうか?
メインの処理を行っているのか、それとも別スレッドの
処理を監視しているのか…それがゴチャゴチャに
混ざっちゃう、みたいな。
そんなものを1つのロジック内にゴチャゴチャと
書いていったら、「本来の処理」がなんなのかが
判りにくくなると思うんですけどね。
単にdelegateとinvokeが見難いというだけでなく…。
きちんと分離して記述できるような方法を、新たな作法
として構築して欲しいなぁ…。
|