SoftwareSerial - переполнение буфера или как принять большой объем данных?

DarkDaemon
Offline
Зарегистрирован: 31.10.2015

Есть 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() очищает буфер, но дальнейший прием данных не идет :(

Radjah
Offline
Зарегистрирован: 06.08.2014

Заюзать мегу с четырмя портами например.

Ну или вычитывать всё до предела.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Напрашивается наоборот, общение с ПК через софт, а с железкой через хард сериал.
Здесь нужно смотреть, что главней. С ПК всегда можно повторить посылку, а с GSM такое может не получиться.