koliada 1 Опубликовано Воскресенье в 08:22 Поделиться Опубликовано Воскресенье в 08:22 Делай на HC-05 реально работает спасибо автору Посмотри в соседней ветке Ссылка на комментарий Поделиться на другие сайты Поделиться
carmasteruser 0 Опубликовано 17 часов назад Поделиться Опубликовано 17 часов назад #include "BluetoothSerial.h" #include "driver/uart.h" #define BAUD_RATE 115200 * 8 #define SIZE_BUFFER 256 #define SIZE_FIFO SIZE_BUFFER * 8 #define SAVE_MODE //#define DEBUG_MODE //#define USE_PIN #ifdef USE_PIN const char* pin = "1234"; #endif const String device_name = "SCANMATIK #A111788"; BluetoothSerial SerialBT; uint8_t buffer[SIZE_BUFFER]; unsigned int available=0; unsigned int availableBT=0; size_t bytesRead=0; size_t bytesWrite=0; #ifdef SAVE_MODE uint32_t min_delay = 1; uint32_t max_delay = min_delay * 1024; uint32_t cur_delay = min_delay; uint32_t critical_size = SIZE_FIFO / 2; #endif #ifdef DEBUG_MODE #include <chrono> using namespace std::chrono; auto timePointSerial = high_resolution_clock::now(); auto timePointBT = high_resolution_clock::now(); #endif void setup() { Serial.setRxBufferSize(SIZE_FIFO); Serial.setTxBufferSize(SIZE_FIFO); Serial.begin(BAUD_RATE); memset(buffer, 0, sizeof(buffer)); // setup UART from hardware (RTS/CTS) uart_set_pin(UART_NUM_0, 1, 3, 22, 19); // UART, TX, RX, RTS, CTS uart_set_hw_flow_ctrl(UART_NUM_0, UART_HW_FLOWCTRL_CTS_RTS, 64); uart_set_mode(UART_NUM_0, UART_MODE_UART); SerialBT.begin(device_name); #ifdef USE_PIN SerialBT.setPin(pin); #endif Serial.print("AT-AB -BypassMode-\n"); } void loop() { available = Serial.available(); if (available > 0) { bytesRead = Serial.readBytes(buffer, min(available, sizeof(buffer))); bytesWrite = SerialBT.write(buffer, bytesRead); #ifdef SAVE_MODE if (cur_delay > min_delay) { cur_delay /= 2; } #endif #ifdef DEBUG_MODE auto timeoutSerial = high_resolution_clock::now() - timePointSerial; Serial.printf("\n\rAvailable from Serial %u, cur_delay %u , timeout %u\n", available, cur_delay, duration_cast<microseconds>(timeoutSerial).count()); Serial.printf("\n\rFrom Serial to BT Read = %u, Write = %u\n", bytesRead, bytesWrite); timePointSerial = high_resolution_clock::now(); #endif } availableBT = SerialBT.available(); if (availableBT > 0) { bytesRead = SerialBT.readBytes(buffer, min(availableBT, sizeof(buffer))); bytesWrite = Serial.write(buffer, bytesRead); #ifdef SAVE_MODE if (cur_delay > min_delay) { cur_delay /= 2; } #endif #ifdef DEBUG_MODE auto timeoutBT = high_resolution_clock::now() - timePointBT; Serial.printf("\n\rAvailable from BT %u, cur_delay %u, timeout %u\n", availableBT, cur_delay, duration_cast<microseconds>(timeoutBT).count()); Serial.printf("\n\rFrom BT to Serial Read = %u, Write = %u\n", bytesRead, bytesWrite); timePointBT = high_resolution_clock::now(); #endif } #ifdef SAVE_MODE if ((available < critical_size) && (availableBT < critical_size)) { delay(cur_delay); } if ((available <= 0) && (availableBT <= 0)) { if (cur_delay < max_delay) { cur_delay *= 2; } } #endif } для визуального контроля работы интерфейсов раскоментировать //#define DEBUG_MODE Это для экспериментов до установки в сканматик. Устанавливать с включенным DEBUG лучше не надо Ссылка на комментарий Поделиться на другие сайты Поделиться
a_m_k 2 Опубликовано 3 часа назад Поделиться Опубликовано 3 часа назад А это подо что скетч? Под ESP32? Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти