SoftwareSerial - переполнение буфера или как принять большой объем данных?
- Войдите на сайт для отправки комментариев
Пнд, 16/11/2015 - 02:14
Есть GSM модуль, который присылает в ответ почти 400 байт. Буфер в файле SoftwareSerial.h до 400 байт не могу увеличить, т.к. программа занимает много памяти. Писать собственный SoftwareSerial лень + хочется универсальности :) Хардварный UART не могу занимать, т.к. он нужен для общения с ПК. Меня интересуют последние 200 байт получаемой информации. Можно ли получить их средствами SoftwareSerial с буфером 64 байта? Вот код стандартной функции, который отвечает за запись принятого байта:
SoftwareSerial::recv() ... // save new data in buffer: tail points to where byte goes _receive_buffer[_receive_buffer_tail] = d; // save new byte
Функция flush() очищает буфер, но дальнейший прием данных не идет :(
Заюзать мегу с четырмя портами например.
Ну или вычитывать всё до предела.
Напрашивается наоборот, общение с ПК через софт, а с железкой через хард сериал.
Здесь нужно смотреть, что главней. С ПК всегда можно повторить посылку, а с GSM такое может не получиться.