我正在尝试使用Android Nexus 5X应用程序来处理NRF51芯片,并面临一些问题,特别是写入特性。真的希望得到一些帮助。
我试图通过应用程序在nrf上设置实时时钟(RTC)。关于GATT服务行为的详细信息如下:
属性:读 - 强制,写 - 强制,WriteWithoutResponse - 排除,SignedWrite - 排除,通知 - 排除,指示 - 排除,可写辅助 - 排除,广播 - 排除。
安全:ENC_NO_MITM
描述符:无
连接到nrf之后,我执行了' onServiceDiscovered()'如下。我能够执行readCharacteristic,这导致调用了'conCharacteristicRead()',但writeCharacteristic()失败了。将欣赏任何指导。非常感谢!
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
// Get the characteristic
BluetoothGattCharacteristic loggingRTCCharacteristic = gatt.getService(loggingServiceUUID).getCharacteristic(loggingRTCControlPointCharacteristicUUID);
// Read characteristic (which succeeded, as onReadCharacteristic is invoked)
boolean successFlag = gatt.readCharacteristic(loggingRTCCharacteristic);
// Check for success.
// Set a plausible timestamp.
int year_lsb = 221; int year_msb = 7;
int month = 3;
int dayOfMonth = 4;
int dayOfWeek = 7;
int hour = 9;
int min = 3;
int sec = 15;
byte[] timeStamp = {(byte)year_lsb, (byte)year_msb, (byte)month, (byte)dayOfMonth, (byte)dayOfWeek, (byte)hour, (byte)min, (byte)sec};
logingRTCCharacteristic.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_DEFAULT);
// This returns a failure. The onCharacteristicWrite() function is not invoked either.
successFlag = gatt.writeCharacteristic(loggingRTCCharacteristic); }
答案 0 :(得分:0)
我猜你错过了下面的一行。
{{1}}
答案 1 :(得分:0)
确保特征数据不会产生23字节的MTU限制。由于nRF51设备的北欧堆栈(SoftDevice)仅支持23字节的最大MTU大小。您的数据大小为23个字节。