PIC AVR 工作室->TopPage->AVRの工作->ネコロジーPC

ネコロジー用PCソフト「ネコロジーPC」

ネコロジーPCとは

ネコロジーとPCを接続してPC側で色々な機能を実現 してしまうためのソフトです。ネコロジーとPCをシリアル接続し、WINDOWSのGUI上で信号を見れるようにします。

開発環境にはVisualBasicを使ってみました。10年ぶりくらいのVB。しかも.NET対応の2005です。 (開発言語の選定を間違えたか?.net対応のVBは何かと使いにくい!!!)

ひとまずVersion1として最低限の機能を実現して、その後徐々に機能を追加・改良していこうと思います。

当面の実現機能…Version1

Version1、つまり第1版リリースでの実現機能としては以下のようなことを考えています。

必須機能

オプション機能(体力があったら搭載する)

見送り機能

私の能力や気分、気まぐれなどで搭載機能はコロコロ変わるかも知れません。

ネコロジー全体図

こんな感じに繋いで使います。絵に描くまでもないですが。っていうか、小学生の落書き?

バージョン1、暫定版ダウンロード

ダウンロード

バージョン1の暫定版をひとまず公開します。

ネコロジーPC(VB2005プロジェクト)暫定版のダウンロード

lzh形式でまとめてあります。適当なツールで解凍して、VB2005expressで使ってください。

バージョン1のxon/xoff対応版ダウンロード

WINDOWS7で動かしてみたところ、PC側ソフト(当ソフト)がデータの取りこぼしをするようになったので、フロー制御対応を行いました。 プログラムや画面設計、内部機能等はまったく変更ありません。シリアルI/F周りのプロパティーでxon/xoff対応に変更しただけです。 なお、既にVB2005はサポートがされていないので、VB2008プロジェクトファイルに変更しています。

プロジェクトファイル一式(VB2008用、zipファイルにて梱包)

zip形式でまとめてあります。適当なツールで解凍して、VB2008開いて使ってください。

フロー制御についての補足

フロー制御の方式ですが、色々あってxon/xoffによるフロー制御をチョイスしました。

設計の段階ではPC側のスペック向上につれて取りこぼしなど無くなるはずだと思いつつも、 ”OS側の癖とかで万一データの取りこぼしが発生”するようになっちゃったときのためにxon/xoffコードと通信データがかち合わない様に考慮しておいたのと、 ボードの配線を改めて眺めなおしてみたところRTS/CTS対応は簡単な空中配線程度では難しそうだ、と判ったのでxon/xoffを使用することにしました。

コントロールパネルからドライバの設定でxon/xoffに変更しても、当プログラムが実行されるとVBの設計画面上で設定してある内容に変更されてしまうようで、 仕方なくプログラム側で変更することにしました。

なお、PC側、ファームウェア側両方ともxon/xoff対応版を使用する必要があります。一緒に入れ替えをしてください。 (片方だけだとフロー制御が行われず、特にボード側が未対応版だとPC側から送信したxon/xoff制御コードがごみとして扱われて、不要なエラーメッセージが出ることになります)

なお、USB-シリアル変換ケーブルにて接続をする場合にはドライバ側の設定が必要です。

USBは1バイト1バイトの通信を行っているのではなく、パケット単位で通信を行っています。1パケット分のデータが溜まるか、 もしくは一定時間を経過すると1パケット分一気にデータ転送するようになっています。

xon/xoffもPC側から送信する一種のデータ(特殊コードのデータ)として扱われるので、 PC側が仮にバッファ残り僅少となってxoff送信してもUSB-シリアル変換ケーブルに微小時間留まってから送信されることになります。 このタイムラグの間にPC側の受信バッファが使い切られると”取りこぼし”が生じます。

そうならないように、USB-シリアル変換ケーブルのドライバ設定画面で、必要に応じてwait時間を短く設定しなおしてください。

具体的には、ArvelのUSBシリアルケーブルSRC06USBでは「待ち時間が」デフォルトで16msとなっているので、1msなどと短い時間に設定してください。

現時点の機能、使い方

暫定版につき、上記に挙げた必須機能もまだ未実装のものが残ってます。現時点で組み込めている機能/組み込めてない機能を記します。

(取り込み済み機能)

(取り込み未済機能)

現時点の使い方

実行画面

実行中のキャプチャ画面を貼っておきます。

com4を経由して、ネコロジーAVRと接続している図です。サンプルレート=2.5Msps、トリガ条件=立下りエッジ として取り込みました。(2.5Msps→0.0000004秒毎の取り込み、fall edge→立下りエッジ)

現時点のまとめ

一応、信号を取り込んでそれをGUI画面でグリグリ動かして眺めるという機能までは取り込めました。

データのセーブ、ロード機能が未実装です。

表示される内容や時間単位などは一応確認済みですが、表示されるタイミングとかがまだちょっとおかしいです。

今のところ大体そんな感じです。まあ、データを取り込んで表示してスクロールする範囲内ではなんとか使えるかな、と。

… 続きます …