BLE写特征问题

时间:2017-08-21 12:58:07

标签: android bluetooth-lowenergy android-ble bluetooth-gatt

我试图writeCharacteristic()到BLE设备。

我使用Google示例应用建立连接,连接正常。我可以看到BLE服务和服务特征。

writeCharacteristic()方法返回true,onCharacteristicWrite()回调返回状态BluetoothGatt.GATT_SUCCESS但设备没有发生任何事情: 我尝试了堆栈溢出的所有解决方案,没有任何帮助。 这是我的代码:

BluetoothLeService班级,我有sendData()方法,获得byte[] 由于33字节的最大有效载荷,我分别发送每个命令。

public void sendData(byte[] data) {

        String lService = "71387664-eb78-11e6-b006-92361f002671";
        String lCharacteristic = "71387663-eb78-11e6-b006-92361f002671";

        BluetoothGattService mBluetoothLeService = null;
        BluetoothGattCharacteristic mBluetoothGattCharacteristic = null;

        if (mBluetoothGattCharacteristic == null) {
            mBluetoothGattCharacteristic = mBluetoothGatt.getService(UUID.fromString(lService)).getCharacteristic(UUID.fromString(lCharacteristic));

        }

        mBluetoothGattCharacteristic.setValue(data);

        boolean write = mBluetoothGatt.writeCharacteristic(mBluetoothGattCharacteristic);
    }

3 个答案:

答案 0 :(得分:0)

在您的代码中,您检查特征的属性? 如果在设备上写东西,那么特征必须具有写属性或写无响应属性或写&通知财产。 因此,请检查您的代码,了解您所写的特征。

答案 1 :(得分:0)

您的代码看起来没问题,如果您已获得GATT_SUCCESS,则表示该功能已成功写入。 您还可以尝试读取此特征并检查值是否已更新。此外,可能已成功写入特性,但只有在断开与设备的连接后才会触发相应的设备功能。而且设备方面也可能存在一些错误。

答案 2 :(得分:0)

我发现了这个问题。希望我的回答能帮到别人。 问题是,我发送的byte []数组大于允许的数字(20字节)。另外,我需要在这个byte []数组中添加“\ r”,这样,BLE Devise知道它是命令的结束。 另外,我需要在onCharacteristicRead()中获得响应后创建一个队列并从中弹出。

class DataQueues {  

        private ArrayList<byte[]> queueArray;
        private int queuSize;   

        protected DataQueues() {
            queueArray = new ArrayList<>();
        }    
        protected void addToQueue(byte[] bytesArr) {
            queueArray.add(bytesArr);    
        }  

        protected byte[] popQueue() {    
            if (queueArray.size() >= 0)
                return queueArray.remove(0);
            else {
                return null;
            }    
        }    
        protected int getArrSize() {
            return queueArray.size();
        }
    }

希望这会对某人有所帮助。