BLE デバイスの光センサーから値を受け取るアプリを作成しています。私は自分が何を受け取っているのかを判断しようとしています。センサーが提供するルクス値を取得しようとしていますが、変換が必要なことが懸念されます。このセンサーの測定単位がわかりません。たとえば、Android フォンの単位は SI ルクスです。簡単なはずですが、このセンサーの仕様は明記されていません。
出力を提供しているコードは次のとおりです。
case MSG_LIGHT:
characteristic = (BluetoothGattCharacteristic) msg.obj;
if (characteristic.getValue() == null) {
Log.w(TAG, "Error obtaining light value");
return;
}
int formatlgt1 = -1;
formatlgt1 = BluetoothGattCharacteristic.FORMAT_SINT8;
Log.i(LIGHT, "Light RawValue1 " + characteristic.getIntValue(formatlgt1, 0));
Log.i(LIGHT, "Light RawValue2 " + characteristic.getIntValue(formatlgt1, 1));
Log.w(LIGHT, "Light UUID " + characteristic.getUuid());
Log.w(LIGHT, "Light Stored Value " + characteristic.getValue());
Log.w(LIGHT, "Light Descriptors " + characteristic.getDescriptors());
Log.d(LIGHT, "Light Characteristic " + characteristic);
updateLightValues(characteristic);
break;
簡単です。センサーを読み取り、読み取り時にそのセンサーからのさまざまな出力を教えてください。次に、出力は次のとおりです。
Light RawValue1 4
Light RawValue2 9
Light UUID 0000aa91-0000-1000-8000-00805f9b34fb
Light Stored Value [B@431d30b0
Light Descriptors [android.bluetooth.BluetoothGattDescriptor@4300e508, android.bluetooth.BluetoothGattDescriptor@4300eaf8]
Light Characteristic android.bluetooth.BluetoothGattCharacteristic@43002b10
これの測定値はRawValues 1と2であると解釈していますが、保存されているものをログに記録しています. 問題は、StoredValue が [B@431d30b0 であり、私を超えていることです。メーカーの説明によると、最初のバイトはアドレス 00x03 の HILUX であり、2 番目のバイトはアドレス 00x04 の LOLUX であり、デフォルト値は 00:00 です。
私はここで何を見ていますか、どこが間違っていますか? 私が傷ついているのは、私が読んでいるものに対する私の理解です。それについて学ぶための良い検索コンテキストを取得できないようです。
ありがとう