如何在Android和Android上解决特征性写入失败?北欧nRF51?

时间:2017-03-04 17:13:35

标签: android bluetooth-lowenergy characteristics

我正在尝试使用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); }

2 个答案:

答案 0 :(得分:0)

我猜你错过了下面的一行。

{{1}}

答案 1 :(得分:0)

确保特征数据不会产生23字节的MTU限制。由于nRF51设备的北欧堆栈(SoftDevice)仅支持23字节的最大MTU大小。您的数据大小为23个字节。