我正在编写一个应用程序,它从 BLE 设备的光传感器接收值。我正在尝试确定我收到的是什么。我正在尝试获取传感器提供的 Lux 值,但我担心它需要转换。我不知道这个传感器的测量单位是什么。例如,Android 手机的单位是 SI Lux。应该很容易,但对于这个传感器,规格没有说明。
这是给我输出的代码:
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,第二个字节是地址 00x04 的 LOLUX,默认值为 00:00。
我在这里看什么,我哪里出错了?我受伤的地方是我对所读内容的理解。似乎无法获得良好的搜索上下文来了解它。
谢谢