2012-03-15 9 views
2

RFIDリーダーデバイスに接続しようとしています。私は(多くの詳細は省略)BluetoothSocketを作成し、以下のようにそれに接続して呼び出すことで、それに接続することができる午前:RFIDはBluetoothSocketでシリアル接続を取得します

public static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); 
BluetoothSocket socket = device.createRfcommSocketToServiceRecord(MY_UUID); 

予想通り、このくらいの作品、およびデバイスとの接続を確立することができます。

私の問題は、デバイスAPIがシリアルポートで動作するように設計されていることです。

String uri = "eapi:///com1"; 

Androidが世界にこのようにシリアルポートを開くように見えない:APIを使用するためには、私はそれを次のようになり、文字列を渡す必要があります。 Linux上で私のような文字列を使用して接続できるようにすることができると期待する:携帯電話上の/ devディレクトリを通じて探し

String uri = "eapi:///dev/ttyS0"; 

並べ替えの何も表示されません。さらに、/ devのエントリは、接続を確立しても変更されません。これは、AndroidデバイスがBluetoothデバイスに接続するときに、/ devにシリアルデバイスを作成しないと考えています。

BluetoothSocketがデバイスへの接続に使用しているCOMポートには、どうすればアクセスできますか?アンドロイドにcom1や/ dev/ttyS0のような仮想デバイスがありますか?

クラスRfcommSocketを使用していたAPIの古いバージョンには、私を助けるかもしれないgetPort()メソッドとgetFileDescriptor()メソッドがありました。現在のBluetoothソケットは、これらの詳細を隠すようです。

ありがとうございます!

編集: Androidはシリアルストリーム用の仮想デバイスを作成していないことが判明しました。代わりに、クライアントコードをbluetoothsocketに直接統合しました。

答えて

0

生のBluetoothソケットがあり、それが接続されている場合は、データフォーマット/変換をコードで手動で処理し、シリアルストリームを使わずに相手に送信してみませんか?限られた数のブルートゥースプロファイルがAndroid OS AFAIKでサポートされています。

関連する問題