Я программирую ESP32 для приема команд Bluetooth и отправки данных Bluetooth обратно на телефон с помощью профиля Serial.Для этого я использую Arduino Espressif Bluetooth Serial Library.Всякий раз, когда я отправляю что-то в ESP32, он обрабатывает это, а затем внезапно закрывает соединение Bluetooth.
И я уже пробовал различные задержки, потому что подумал, что, возможно, процессор не поспевает за другими вещами, из-за которыхоно сломалось.Однако при мониторинге с использованием последовательного соединения через USB он все равно продолжает посылать обновления статуса.Кроме этого, я не мог найти решение (в том числе и в Интернете).
Поскольку я новичок, я не хотел пытаться создать свою собственную библиотеку последовательного интерфейса Bluetooth.ESP не падает при отправке данных.Он также продолжает обрабатывать данные, которые были отправлены.Я вижу, что при отправке символов, которые я отправил через Bluetooth, используя последовательный интерфейс после их сбора.
Невозможно восстановить соединение после этого инцидента, независимо от того, как долго я буду ждать.
Моя функция Main, содержащая вызов функции, а также буфер для записи результата, поскольку я думал, что, возможно, я неправильно использовал это.
void loop() {
if (ESP_BT.available() > 0)
{
char *buffer = (char*) malloc(InputSize);
getCurrentMessage(ESP_BT, buffer, InputSize);
Serial.println(buffer);
strncpy(currentMessage, buffer, InputSize);
free(buffer);
}
if (millis() %2000 == 0){
Serial.println("Debug");
delay(1);
}
}
Функция, которая вызывается, должна читать inputBuffer объектаBluetoothSerial в моем буфере.
void getCurrentMessage(BluetoothSerial ESP_BT, char* receivedChars, int InputSize)
{
Serial.println("DEBUG: getCurrentMessageInit");
static byte ndx = 0;
char rc;
while (ESP_BT.available() > 0){
ESP_BT.println("DEBUG: Message Available");
Serial.println("DEBUG: Message Available");
rc = ESP_BT.read();
receivedChars[ndx] = rc;
ndx++;
delay(100);
if (ndx >= InputSize){
while(ESP_BT.available() > 0){
ESP_BT.read();
}
}
}
}
Я ожидаю, что соединение Bluetooth продолжит работать.Это не делает.Я также получил код ошибки "queue.c: 1442 (xQueueGenericReceive) - ошибка подтверждения!"Если не использовать задержки и ESP, то перезагружается.Это не делает после того, как я включил задержки.