一度に送信できるデータ量について - TK
2016/06/14 (Tue) 19:59:58
SBDBT5Vを使ってデータのiOSと送受信をさせています。
iOS側からデータを送信する際、一度に9文字(半角9文字)までは正常に送れているのですが、それより多くなると、10文字目からは切れてしまいます。
BLEは一度に20byteまでとの認識でいたのですが、
SBDBTは9byteまでの仕様になっているという認識でよろしいのでしょうか?
Re: 一度に送信できるデータ量について - ランエレ
2016/06/16 (Thu) 00:23:54
TK様
SBDBT5Vをご利用いただきまして誠にありがとうございます。
TK様の前回の書き込みから、「Bluetooth Low Energy iOSデバイスと通信するサンプルプログラム」をお使いだと思いますが、このサンプルプログラムでは1パケット9バイトまでというような制限は行っていません。
このサンプルプログラムではマニュアルに記載してありますように、動作確認にiOSのLightBlueというアプリを使用しています。
LightBlueで20バイトのデータをWriteすると、SBDBT側ではatt_write_callback関数に20バイトのデータが渡ってくることは確認してあります。
LightBlueで21バイトのデータをWriteすると、SBDBT側ではatt_write_callback関数に20バイトと1バイトの2回に分けてデータが渡ってきます。
TK様のほうでは動作が違うようでしたら、差支えない範囲で以下の試験環境を教えていただけると幸いです。
・iOSデバイスの機種
・iOSのバージョン
・iOS側のアプリ名
・送信したデータ
・SBDBT5Vで使用したファームウェア
・SBDBT5Vに接続しているBluetoothアダプタ
以上です。
何卒よろしくお願いいたします。
Re: 一度に送信できるデータ量について - TK
2016/06/18 (Sat) 16:49:27
回答いただきありがとうございます。
iOS側は自作のアプリで行っていたのですが、いろいろと確認したところ、9バイト以上でもきちんと送れていました。
お騒がせいたしました。
ただ、今度は別の問題がございます。
SBDBTとの接続において、データをやり取りしていると、Bluetoothの接続が切れてしまいます。
こちらはLightBlueでも再現できます。
構成は
PIC16F88 <-> SBDBT5V <-> LightBlue
で、
①PICとSBDBT間はフロー制御なし(SBDBTのCRSとRTSをショートさせています)で接続し、
②PICのプログラムは1文字受け取るごとに10バイトの文字を付加してそのままコールバックするプログラムです。
③LightBlueを起動してFFF1に接続、
④notificationを有効にしておいて、
⑤右上の"Hexをタップして"送信データを文字(UTF-8)に変更し
⑥"Write new value"をタップして10バイトの文字列をセットし送信
⑥"Written Values"のところを連続で3以上タップする
⑦フリーズしたようになりデータの更新通知が来なくなる
⑧接続が切れる
これはどういう症状なのでしょうか。
状況的にPICからの送信データが多すぎていて、SBDBTが処理しきれていないような感じに思うのですがどうなのでしょうか。
また、この時notificationをoffにすれば接続は切れないようです。
双方向にデータをやり取りするものを考えていて、
接続が切れないようにしたいのですが、どのようにしたらよいのでしょうか?
また上記構成において、フロー制御を無しにしていることで不都合は起きていますか?
実はPICから送ったはずのデータがiOS側ではかなりの確率で取りこぼしが起きています。
構成としては上記と全く同じで、iOSから送ったデータをPICで受け取り、加工したデータを送り返しています。
この時notificationは有です。
PICからのシリアル出力は全てきちんと出力されていても、SBDBTを介してiOS側で読んでみるとデータが飛んでいることが多いです。
尚当方の環境ですが、
・iPhone6
・iOS 9.3.2
・SBDBT5Vのファーム:sbxbt_ble_src_150529
・SBDBTに接続しているアダプタ:iBUFFALOのBSBT4D09BK
以上長くなりましたが、ご助言いただければと思います。
よろしくお願いいたします。
Re: 一度に送信できるデータ量について - TK
2016/06/19 (Sun) 10:02:50
追加でもう1点質問です。
SBDBTの10番ピンのSTOですが、Bluetooth接続状態になってもHi出力とならず、Loのままなのですが、BLEのファームではそういう仕様でしょうか?
そうであれば、どこを変更すればSTATUS出力ができるようになるか教えて頂けないでしょうか。
ファームは昨日の投稿と同じで
・SBDBT5Vのファーム:sbxbt_ble_src_150529
です。
よろしくお願い致します。
Re: 一度に送信できるデータ量について - ランエレ
2016/06/28 (Tue) 21:19:17
TK様
TK様と同じ環境での試験ができないため憶測ですが、大量のNotificationをiOSに送ると、iOS(LightBlue)での送信が滞ってしまいエラーとなり切断処理になってしまうのではないかと考えています。
1. Notificationのパケット数を減らすため、1つのパケットにできるだけ多くのペイロードを入れられるように一定時間待つようにすると効果があるのではないかと思います。
2.このサンプルプログラムでは10番ピンは使用していませんが、接続時にHにすることもできます。
上記2項目について対応したサンプルプログラムをサポートページにVer.160628として公開いたしました。
参考にしていただけたら幸いです。
何卒よろしくお願い申し上げます。