Мы разрабатываем приложение, которое использует библиотеку Bluetooth для связи с Arduino через Bluetooth через модуль HC-05. Мы создали фиктивную конфигурацию для проверки задержки без каких-либо вычислений от Arduino или приложения, и у нас есть огромная задержка около 1 секунды между запросом и ответом ...
Протокол выглядит просто: Android отправляет байт -2, а если получен байт -2, Arduino отправляет -6, -9 и Android отвечает снова и снова.
Код Android:
h = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case RECIEVE_MESSAGE: // if receive massage
byte[] readBuf = (byte[]) msg.obj;
for(int i=0;i < readBuf.length;i++)
{
if((int) readBuf[i] != 0) {
txtArduino.append(String.valueOf((int) readBuf[i]) + ", ");
}
}
byte[] msg = {-2};
mConnectedThread.writeByte(msg);
break;
}
};
};
Arduino код:
const int receveidBuffLen = 8*4;
void setup() {
Serial.begin(115200);
}
void loop() {
if (Serial.available() > 0)
{
byte buff[receveidBuffLen];
Serial.readBytes(buff, receveidBuffLen);
for(int i=0; i < receveidBuffLen;i++)
{
if(buff[i] == (byte) -2) // 254
{
byte message[2] = {(byte) -6, (byte) -9};
Serial.write(message, 2);
Serial.flush();
}
}
}
delay(3);
}
Кто-нибудь знает, откуда берется задержка?
Мы изменили скорость передачи HC05 (с 9600 до 115 200): ничего не произошло. Мы поменяли HC05 на другой: ничего не произошло. Мы использовали библиотеку Blue2Serial (Bluetooth как SPP) раньше, и задержка была такой же ... Мы использовали другой контроллер (ESP8266), и задержка все еще составляла 1 секунду ...