2011年12月11日

アンドロイド Bluetooth 連続的に通信

アンドロイドタブレット端末とマイコンを
Bluetoothの無線通信で、ずっとつなぎっぱなしに
して、いろいろテストをしています。

通信自体は0.25秒に一度、マイコン側のセンサーから
情報取得というカタチで、

タブレット側から、1文字分情報を送って
マイコン側から25文字分の情報をもらう。

の繰り返しを0.25秒ごとに行っています。

ポーリング
http://e-words.jp/w/E3839DE383BCE383AAE383B3E382B0.html
という方法をとっています。

ハンドシェイクという言い方をすることもあります。

じっくりテストしてみると、切れないと思っていた通信が
連続通信で、1時間前後で切れてしまう現象を発見しました。

それから3日間くらい、ずっと原因を探すために
改良をしていました。

まず原因の1つは、1回の通信で25文字、データ受信するからと
25バイト分のバッファを用意して動かしていたのですが、

状態をファイルに記録してみると、
1回の受信命令で、ごくまれに、25バイト受信できない
こともあることがわかりました。

2つ目は、タブレット側からデータ要求をだしたあと、
ウェイトを置かずに、データ受信をしていたので、
通常は、なんとかデータ受信ができていても
なにか、タイミングがずれたときに、データ受信が
追いつかないのだろう。ということがなんとなく
わかりました。


最終的には、全部1バイト単位での送受信にして
その単位ごとに少し待ち時間を設ける。

最終的にうまくいったのはこの方法でした。

これで、電波が届く範囲内であれば、通信は切れないと
思います。

夜寝る前にプログラムを実行して、朝起きても、
正常に通信していることが確認できました。

rts001.jpg
posted by kitt at 07:27| Comment(0) | 日記
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: