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-9600の親機は消費電流の節約制御ができます。

  DACS-9600の親機、DACS-96HSには、内蔵している無線モジュールの電源を、ソフトウェアによりON/OFFできる機能があります。 無線モジュール電源ONにて、消費電流 5V 60~70ms(受信待機時)。OFFにて 5V 15mA以下となります。。 次のプログラムは、アプリ起動時(デバイスopen時)に無線モジュールの電源をON、アプリ終了時(デバイスclose時)にOFFとします。 DacsUsbSample.java と string.xml の内容を、次のプログラム内容に書きかえると電源制御機能が働きます。 また、DACS-9600独自の識別コード送受信にも対応しています。 詳細はプログラム内のコメントをご覧ください。
  (注1) DACS-96HS以外ではこの機能は動作しません。
  (注2) 2013年8月1日以降出荷分のDACS-96HSにて有効となります。

  電源節約機能付きDACS-9600用サンプルプログラム   →   DacsUsbSample_9600_WithPowerControl

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製品を掲載しています。

    ダックス技研株式会社     〒709-0721 岡山県赤磐市桜が丘東5-5-380

Copyright(C) DACS electronics