BLE搭載の測定器からのデータを、BLEクライアント機能を使って受信しています。
今まではパソコンへのデータ転送は手入力でしたが、色々な所で使うようになって、データ転送手段を考えなくてはならなくなりました。
シリアル通信とかSDカードを使う方法も考えられますが、接続とかしてる間にキーボードで手入力した方が速いでしょう。
業務で使用するツールは面倒くさいとすぐに使われなくなってしまいます。
そこでBLEキーボードの機能を追加してみることにしました。
パソコンに転送したいデータを選んで、BLEキーボード機能で転送できたら使い易いかもしれません。
BLEキーボード機能はクライアントとの共存はできないだろうと思って試した事はありませんでしたが、サンプルスケッチから必要な部分をコピペしたらあっけなく動作しました。以下が実装例です。
使い始める前にはBluetoothの接続登録を整理しておかないと、測定器の接続が先にパソコンに取られたりします。
BleKeyboard bleKeyboard;
void setup() {
{
bleKeyboard.begin();
}
void loop() {
if(!doConnect) //元ソフトのクライアントとしての処理
{
//以下を追加
if (bleKeyboard.isConnected())
{
if (kbConnected==false) //接続状態表示を追加
{
M5.Lcd.printf("KBON");
kbConnected = true;
}
}
else
{
if (kbConnected)
{
kbConnected = false;
M5.Lcd.printf("KBOF");
}
}
if(M5.BtnA.isPressed())
{
if(kbConnected==true) //接続されていたら8バイトの数字データを送信
{
for(int i=0;i<8;i++)
{
int c=dat[i];
if(c=='0') bleKeyboard.write('0');
if(c=='1') bleKeyboard.write('1');
if(c=='2') bleKeyboard.write('2');
if(c=='3') bleKeyboard.write('3');
if(c=='4') bleKeyboard.write('4');
if(c=='5') bleKeyboard.write('5');
if(c=='6') bleKeyboard.write('6');
if(c=='7') bleKeyboard.write('7');
if(c=='8') bleKeyboard.write('8');
if(c=='9') bleKeyboard.write('9');
if(c=='/') bleKeyboard.write('/');
if(c=='.') bleKeyboard.write('.');
delay(100);
}
}
}
//以下は元ソフトのまま
}