/ / AndroidのTI BLE CC2540から値を読み取ると、ステータス= 10で失敗する[重複]-Android、bluetooth-lowenergy、android-bluetooth

アンドロイドでTI BLE CC2540の値を読み取るとステータス= 10 [重複] - アンドロイド、ブルートゥース低エネルギー、アンドロイドブルートゥースで失敗する

接続してAndroidからデータを読み書きするCC2540チップを搭載したデバイスを持っています。

デバイスが検出され、接続できますが、読み取りコマンドを送信しようとすると、次の場所にステータス= 10が表示されます。

public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status)

私は「BLEセンサータグ」のソースコードを使用し、UUIDを自分のものに変更しました-同じ結果が得られます

Google Playの「BLEデバイスモニター」アプリを使用しました-同じ結果が得られます(スクリーンショットが添付されています)

私の質問は次のとおりです。

  1. 「ステータス= 10」の意味は何ですか?

  2. それはどこから来たのですか?チップ?アンドロイド?

  3. どのようにデバッグできますか?

私はiPhoneデバイスを持っていて、それはうまくいきます...

ここに画像の説明を入力

回答:

回答№1は1

「ステータス= 10」の意味は何ですか?

BLEデバイスモニターのソースにアクセスできないため、実際には何でもかまいません。一般的なGATTプロファイルステータスコードを見つけることができます こちら(BluetoothGatt)

TIの「BleSensorTag」ソースの例を実行すると、同じエラーコードが表示されますか?

それはどこから来たのですか?チップ?アンドロイド? どうすればデバッグできますか?

それがAndroidです BluetoothGattCallback() 関数は、アクセスするチップから解釈します BluetoothAdapter.

「BleSensorTag」ソースコードに焦点を当てることをお勧めします。 ステータスコードについては、

private BluetoothGattCallback mGattCallbacks = new BluetoothGattCallback()

"BluetoothLeService.java"の#82行について。それはあなたがステータスコードとそれらに上書きされたコールバックを取得する場所です Bluetoothデバイス オブジェクト "s connectGatt() 方法。

mBluetoothGatt = device.connectGatt(this, false, mGattCallbacks)

また、BLEパケットがTIを使用して正しい形式であることを確認します スニファー 可能なら。そうでない場合は、何が出力されるかをデバッグすることもできます。 BluetoothAdapter.LeScanCallback

再び「BleSensorTag」で見つけます public void onLeScan(final BluetoothDevice device, final int rssi, byte[] scanRecord) MainActivity.javaのメソッド。そして変化する。

public void onLeScan(final BluetoothDevice device, final int rssi, byte[] scanRecord) {
runOnUiThread(new Runnable() {
public void run() {
// Filter devices

に:

public void onLeScan(final BluetoothDevice device, final int rssi, byte[] scanRecord) {

final byte[] scanRecordStream = scanRecord;

runOnUiThread(new Runnable() {
public void run() {
// Filter devices

Log.i(TAG, "scanRecord:" + Conversion.BytetohexString(scanRecordStream, scanRecordStream.length));

残りは同じで、logcatにバイトストリームが表示されます。

[編集] こちらが LE汎用パケット構造 Core Bluetooth Spec V4.0に準拠

ここに画像の説明を入力

以下は、BLEパケットバイトの例です。構造、それを例として追加しました。コンソールにログを記録し、参照として使用するものがある場合に、パケットの長さを比較したい場合があります。

BLEアドバタイズパケットは、一般的な形式であることが期待できます。

02 01 06 1A FF 4C 00 02 15: iBeacon prefix (fixed)
B9 40 7F 30 F5 F8 46 6E AF F9 25 55 6B 57 FE 6D: proximity UUID (here: Estimote’s fixed UUID)
00 49: major
00 0A: minor
C5: 2’s complement of measured TX power

ハッピーデバッグ。