我正在开发一个Android应用程序,该应用程序需要将数据从加速度计发送到arduino。问题在于,仅在下一次传输开始的中途发送字符串。我尝试过的任何事情,例如SystemClock.sleep();没有帮助,这意味着任何下一行都会中断字符串的传输。
public void onSensorChanged(SensorEvent event) {
acceler[0]=event.values[0];
acceler[1]=event.values[1];
acceler[2]=event.values[2];
transmit();
}
private void transmit() {
String str =":" + acceler[0] + " " + acceler[1] + " " + acceler[2] + "\n\r";
final byte[] tx = str.getBytes();
if(mConnected) {
TXcharact.setValue(tx);
mBluetoothLeService.writeCharacteristic(TXcharact);
}
}
答案 0 :(得分:0)
这取决于BLE规范,但是您的str似乎太长,无法立即发送。
Maximum packet length for Bluetooth LE?
“ BLE最多允许您传输20个字节。”
“您是对的,BLE规范不允许写操作超过20个字节。”
因此,将它们拆分并使用一些等待队列来存储它们。