« ロジアナ LA1010 | トップページ | TWELITE 中継機 »

2021年1月16日 (土)

TWELITE マルチデバイス構成

TWELITE-DIPを2個追加した。

半完成キットだとピンの半田付けが楽しめてグッド。
Img04198

それぞれ2号機(Device ID=2)と3号機(Device ID=3)として、既に構成済みのDIP(以後、これを1号機と呼ぶ)に設定したApplication ID =20210108とともにDevice IDをTWELITE R2で書き込む。
Img04199

2号機(左)と3号機(右)には電源ON表示用の白色LEDに加えて、DO1に緑LEDを配線してある。1号機とともに電源を入れてMONO STICKのシリアルポートを読みだしてみるとDevice ID=1、2、3それぞれから信号が飛んできているのがわかった。
Img04203

Device IDを指定してDO1設定を行ってみる。上の状態は2号機のDO1をLow(緑LED点灯)にして3号機のDO1をHigh(LED消灯)にした状態。選択的に制御が出来ているようだ。

暫く(と言っても1分未満)受信しているとエラーが発生していた。受信プログラムをデータ長さ固定(49文字分)で書いていたらListのOut of Rangeが発生した。つまり、シリアルポートから取得したデータ長が49文字未満だったわけだ。正常受信した場合、文字列は:で始まる。以下が正常受信したときの出力表示結果。

:02811501A2810CD4DD001D19000C141A8000FFFFFFFFFF9C
length 49

一方Out of Rangeが発生した場合(以下)は見た感じ頭の数バイトが無くなっているようだ。

3D65000AE81880002CFFFFFFFE7E
length 28

まだ仮説にすぎないけれど、これはデバイスが増えたことで混信が発生して、その結果受信データが壊れるんじゃないだろうか。そもそも、個々のデバイスは全く独立して動作していて(時計同期はしていない)、個々のデバイスの都合で送信しているはずだ。つまり送りっぱなし。仮に混信が発生してもそれを知る術はないはず。となれば、受信側で受信データの有効性を確認して、有効でないと判断すれば、そのデータを捨てる必要がある。

複数デバイスからの受信内容をテーブルで表示するプログラムを書いてみた。受信したDevice IDごとにソートして、定期的な受信の度に更新する。
List

まぁ、データ通信の基本を書いているような気がするけれども、今更のように気が付いたりしているわけだ。もうちょっと先人の知恵を学んでから悩んだ方が良いみたい。

« ロジアナ LA1010 | トップページ | TWELITE 中継機 »

TWELITE日記」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« ロジアナ LA1010 | トップページ | TWELITE 中継機 »