開発者向けFAQ|小型無線多機能センサ(TSND121/151,AMWS020)
※センサの不具合を原因とする障害を除き、自作プログラムは基本的にサポート対象外となります。開発者向けFAQ
- TSND121/TSND151,AMWS020用プログラムの開発はどのようにすればよいですか?
- プログラムの開発環境は何がよいですか?
- シリアルポートの通信設定について教えて下さい。
- 「0x9A …」のような文字を送信しても何も反応しません。
- コマンドを送信出来たが、受信データがおかしい。壊れたデータをたくさん受信します。
- 受信したパラメータがおかしな値になります。
- 重い処理をするとデータを取りこぼします。
- サンプルプログラムはありませんか?
TSND121/TSND151,AMWS020用プログラムの開発はどのようにすればよいですか?
TSND121/TSND151,AMWS020を操作する際には、シリアル通信でコマンドの送受信を行います。
そしてコマンドの仕様等はTSND121コマンドインタフェース仕様書、 TSND151コマンドインタフェース仕様書, AMWS020コマンドインタフェース仕様書で全て公開しておりますので、 自由にプログラムの開発を行うことが可能です。
プログラムの開発環境は何がよいですか?
BluetoothもしくはUSBシリアルでTSND121/TSND151,AMWS020に接続可能であり、また、シリアル通信が可能な環境であれば問題ありません。
Windows、MacOS X、Linux等の環境で実績があります。また、開発言語にも特に制限はなく、C、VisualBasic、C#、C++、JAVA、Objective-C、Python、Perl等様々な言語が利用可能です。
シリアルポートの通信設定について教えて下さい。
シリアルポートの設定は、以下を推奨しています。
・ボーレート:115200bps
(AMWS020の場合,USB接続時のみ921600bps)
・データビット:8bit
・パリティ:None
・ストップビット:One
・フロー制御:なし
「0x9A …」のような文字を送信しても何も反応しません。
データの送受信はバイナリデータで行います。例えば「0x9A」は文字(テキストデータ)として送るのではなく、 16進数の"9A"をバイナリデータとして送信することを意味しています。
コマンドを送信出来たが、受信データがおかしい。壊れたデータをたくさん受信します。
コマンドに対する反応はイベント、もしくは、レスポンスという一塊のデータ列としてセンサから送られて来ます。 そして各データ列は、ヘッダからBCCまでのデータで1つのデータ単位になっています。
しかし、受信のタイミングによっては、この1つのデータ単位が一括で受信出来ない場合があります。
例えば.Netの場合、シリアルデータを受信した際に"SerialPort.DataReceived"イベントが届きます。
しかし、例えばセンサから1つのレスポンスが送信された際に、PC側では1回の受信で1レンスポンスが受け取れるという保障は無く、 複数に分割された状態で受信する場合があります。
この場合、バッファに格納されているデータを全て取り出しても、正しいレスポンスを表すデータ列になりません。
複数回呼ばれる"SerialPort.DataReceived"で受信したバッファの内容を連結した際に、初めて1つのレスポンスデータになります。
その一方で、複数のレスポンスが送信された場合、これらが連結した状態で一度に受信する場合もあります。
このようなことを考慮し、データ受信用のFIFOのキューを作成し、受信したデータは一度このキューに格納するようにして下さい。 そしてキューの中から適時有効なデータ列を取り出して処理(*)するようにして下さい。
(*)例えばキューの先頭からヘッダを検索し、後続するCommand Codeからパラメータ長を求め、当該バイト長のBCCを計算し、合致したら有効なデータ列として処理してキューから削除。
受信したパラメータがおかしな値になります。
複数バイトのデータは、基本的にリトルエンデアンのデータとして送受信します。
また、負の数は二の補数として表現しています。3byteのデータをエンコードする際には、特にご注意下さい。
重い処理をするとデータを取りこぼします。
プログラムをマルチスレッド化してみて下さい。
サンプルプログラムはありませんか?
以下のサンプルプログラムを用意しております。適宜ダウンロードして下さい。
・センサと直接バイナリ通信するVisual Basicのサンプルプログラム
・SensorServerとネットワーク経由で通信するVisual Basicのサンプルプログラム
・SensorServerとネットワーク経由で通信するC++のサンプルプログラム
・センサと直接バイナリ通信するPythonのサンプルプログラム(Python 2.7で動作確認済み)
・センサと直接バイナリ通信するPythonのサンプルプログラム(Python 3.75で動作確認済み)
※一連のサンプルプログラムはサンプルとして提供しているプログラムであり、無保証です。内容の説明や修正などを含むサポートは基本的に行っておりません。