|
Androidに
USB製品を接続
[ 1 2 3 4 5 ] |
DACS USB送受信サンプルプログラム の動作
NEXUS7 のアプリ一覧にて「DACS USB送受信サンプルプログラム」をタップします。おなじみロボットのアイコンです。
正常に接続できていれば、「OPENできました」という表示になります。画面の下側にはキーボードがありますので、
ここから文字を入力すると、キー入力欄に入力した文字列が表示となります。
サンプルプログラムは、データ送受信の基本機能のみに絞り、できるだけ簡単にしたプログラムです。
デジタル出力コマンドとして、たとえば W0123456 と入力してみてください。
Wは大文字ですのでご注意。Wに続く次の1文字はID番号(通常は0)となります。それに続く文字は、16進数を表現する0~9,A~Fが6文字分となります。
ENTERキ-を押す(タップする)と、キー入力欄にある文字列をDACS-2500などのUSBデバイスに送信します。送信した文字列は、送信欄に表示となります。
ほぼ同時に、USBデバイスが応答してくるデジタル入力レスポンスを受信し、この文字列が受信欄に表示となります。
文字列後方の表示は、受信までの応答時間計測結果(目安)です。
送信するコマンドと受信するレスポンスの詳細は、各製品の取扱説明書をご覧ください。
キー入力部分に、なにも表示がない状態でENTERキーを押すとプログラムが終了します。
キー入力部分になにか文字がある場合は、BSキーにてすべての文字を消してからENTERキーを押してください。
サンプルプログラムのソースを解説
DacsUsbSample → src → jp → dacs_giken にある DacsUsbSample.java がソースプログラムです。このファイルを開いてみてください。
詳細をプログラム中のコメントで確認できます。
onCreate(Bundle savedInstanceState)
プログラム起動時に画面の初期表示と、USBデバイスのOPEN処理を実行します。
_editText キー入力 _sendView 送信データ _recView 受信データの各表示初期化に続いて、
FTDIドライバのインスタンス作成と、USBデバイスのOPENを行います。
正常にOPENできると、受信データの読取り処理スレッドを開始します。
OPEN処理では、シリアル通信の設定を行っていますが、これらはDACS-9600用のものです。
DACS-1500,DACS-1700,DACS-2500など、基板内部でシリアル転送を使用していないボードでは、
設定の必要はありません。設定をしても問題が発生するわけでもありませんので、サンプルプログラムでは共用のため記述しています。
onEditorAction(TextView testview, int id, KeyEvent keyEvent)
ENTER(GO)キーを押した(タップした)ときに動作します。
ENTERキーを押したとき、キー入力している文字列にCRコードを追加して、USBデバイスに送信します。
送信データは画面の送信データ表示部分に表示します。
USBデバイスに送信するデータは、バイト配列でなければなりません。文字列のままではコンパイルエラーとなります。
送信処理に続いて、USBデバイスから9文字分(CRコードを含む)のデータが返ってくるのを待って、
正常に受信できれば、バイト配列の受信データを文字列に変換して、画面の受信データ表示部分に表示します。
ENTERキーを押したとき、キー入力している文字列が空であれば、デバイスをcloseして、プログラムを終了します。
readThread
USBデバイスからのデータを受信するスレッドです。
getQueueStatus() にて受信データ数(inable)を確認し、read(rbuf, inable) にて、バイト配列 rbuf に受信データを読取ります。
できることならば、スレッドを使用しないで、onEditorAction のなかで、read(rbuf, inable) としてデータを読取りたいところですが、
そうすると、とても奇妙な結果となってしまいます。getQueueStatus() で受信したデータ数が返ってくるのですが、
なぜか、read(rbuf, inable) にて rbuf にデータが入ってきません。
Windowsのプログラムでは、スレッドを利用しなくても、問題なく受信データを取得することができましたが、
Android では、このスレッドを避けることができません。ちょっぴり複雑な気持ちですネ-----。
DACS-2600用サンプルプログラム
デジタル入出力基板 DACS-2600 は1byte(8bit)データを送受信します。他のデジタル入出力基板の文字列送受信方式とは異なります。
DACS-2600を使用する場合は、下記サンプルプログラムをダウンロードして、DacsUsbSample.java と string.xml の内容を、次のプログラム内容に書きかえてください。
DACS-2600用サンプルプログラム → DacsUsbSample_2600
標準サンプルプログラムとは、次の点が異なります。キー入力欄には、1バイトデータに相当する数値0~255を入力します。
送信データ欄および受信データ欄には、1バイトデータ(0~255およびその16進数)を表示します。
最後までお読みいただきありがとうございました。(完)
前のページへ
このページに直接こられた方は、こちらをクリックして、
ダックス技研株式会社 計測制御用電子機器のHOMEに移動してください。
USB接続のDIO、計測ユニットなどDACS製品を掲載しています。 |
|