スマホでのBluetooth通信(接続)4

■受信の問題解決せず。
AndroidスマホからPCへデータ送信を行いたいけど、うまくいかない。PC側の問題ではないかと思いあれこれ調べたら、Tera Termで受け取るような記事もあったので、それを参考に設定。

まず、PCのBluetooth設定で受信用のポートを設定。下のCOM4。


次にTera Termを起動して、シリアルのポート設定を確認すると上で追加したポートが表示され、Bluetoothリンク経由の標準シリアル(COM4)との記載がある。これを指定すると、Tera Termが受信待ちのような状態となる。


これでPC側はBluetoothデバイスを経由しての通信待ち状態になっているはず。このときに、スマホから作成したアプリを起動してwrite メソッドを実行すれば、指定したバイトデータが送信されると思うけど、Tera Term上は何の反応もない。アプリ自体もエラーが出るわけでもない。

試しているサンプルは、もともとBluetooth Classicのサンプルで、今回使っている実機がPC側がBluetoothバージョン5.2(ファームウェアのLMPが11)、スマホ側が5.1(Xepria Ace III の仕様から)。バージョン4以降は、Bluetooth LEという通信モードもあるので、何か通信モードの設定が必要とか?そんなことはないと思うけど。

また、以前connectの部分でエラーが出た際に回避するやり方を取っていたので、そのあたりが原因?もう一度回避策の記事を読んでみると、ここのエラーは少し有名なものみたいで、別の対策もあった。こちらの方が変更が少ないようなのでこちらでも試してみた(下のコードでBluetoothSocket, bs_ をgetClass()とかでいじっている行)。ただ、どちらにしてもエラーが出るわけではない。

 try {
     bs_.connect();
     } catch (IOException e) {
       try {
          Log.d("connect2_before", "qqq");
          try {
              bs_ = (BluetoothSocket) bd_.getClass().getMethod("createRfcommSocket", new Class[]{int.class}).invoke(bd_, 1);
              } catch (Exception e3) {
                 Log.e("www", "aa", e3);
                 }
              bs_.connect();
             }
          }

あと、Bluetoothのアクセス権限の周りに原因があるかと思い、サンプルコードにあった BLUETOOTH、BLUETOOTH_ADMIN も追加してみた。

と、いろいろと試しては見たけど、Tera Termに反応なし。

作成したアプリの問題というより、アンドロイドとPC間の設定周りの問題だと思うけど、はまってるところ。生成AIに質問してもヒントになりそうな回答も出ないしなー。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です