[英]Android BLE - Read data of characteristic - How to add characteristic for the button
[英]How to send data in megabytes in Android BLE characteristic?
我制作了一个可以在 Arduino 和手机之间进行通信的应用程序。 但是我有一个问题,就是一个特性只能发送几个字母。
public boolean writeData(BluetoothGattCharacteristic characteristic, byte[] data){
if(btAdapter == null || btGatt == null){
logAdapter.add("BluetoothAdapter not initialized.");
return false;
}
characteristic.setValue(data);
return btGatt.writeCharacteristic(characteristic);
}
如果数据超过 1MB,我是否必须制作更多的 BluetoothGattcharacteristic 并添加 BluetoothGattService? 还是有另一种更好的方法让它工作?
如果你想做这样的事情,你将不得不创建一些包装逻辑。 特征遵循属性的基本规则,最大长度为 512 字节,但一次只能传输 20 字节。
你可以做的是设置一对特征
读取信号后,如果它是“Ready”(表示阅读器已准备好),您可以将信号设置为“Not Ready”并将您的字节写入传输之一,以便接收器可以处理它们。
处理后,您的接收器可以再次将信号设置为“就绪”并冲洗并重复。
为了将您的数据帧彼此区分开来,您可以使用第一个字节作为“计数器”/“id”,每次传输都会递增,这样读者就可以知道何时实际写入了新数据。
但是按照基本思想,您可以对实现进行任意数量的变化。
(请注意,BLE 和特性并不是真正为这种批量数据传输而设计的,所以虽然您当然可以创建一个实现,但它可能会对您的电池寿命产生巨大影响。如果您首先使用电池: ))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.