очередь отправки данных

mencup
Offline
Зарегистрирован: 11.08.2019

Здравствуйте. 

Учусь, решил сам сделать небольшой проект.

 

Мой устройство esp32s подключается к Wi-Fi, раз в 5 минут, отправляет данные на сервер :тех информация, время и показания. 

Проблем нету, сервер принимает GET запрос, сравнивает пару id и пароль. Если в базе есть и связка верна разрешает добавление данных в базу данных . 

 

Бывает что нету интернета. А данные терять нельзя.  

Сервер не отвечает, esp32s это видит  и "ругается". 

Как организовать добавление в очередь и отправку этих данных после появления линка ?

Думаю готового решения не найду, но подскажите пожалуйста- в какую сторону "копать" ?

Может есть смысл в такие моменты данные записывать в eeprom (у esp32s чуть другой)   ? 

уж очень не хочется терять данные .. 

Алгоритм и т.п  

sadman41
Offline
Зарегистрирован: 19.10.2016

Look for FIFO on Google

mencup
Offline
Зарегистрирован: 11.08.2019

Спасибо за наводку 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Заодно и LIFO проштудируй, пригодится. 

Алексей.
Алексей. аватар
Offline
Зарегистрирован: 02.02.2018

Там ведь FreeRTOS, всё уже сделано за нас.
Сначала создаете очередь xQueueCreate, без этого ни как. Некуда отправлять и читать будет.
Отправляете сообщение, вызвав xQueueSend, не забывайте проверять возвращаемое значение, если очередь не обрабатывается (не вызывается xQueueReceive) она переполнится, можете при вызове xQueueSend получить результат не равный pdPASS.
Получить количество элементов в очереди можете через uxQueueMessagesWaiting или просто вызовите xQueuePeek, если вернул pdTRUE значит сообщение из очереди получили, но оно ещё там (в очереди) осталось.
Обработали успешно, выполните xQueueReceive и этого сообщения сообщения в очереди больше нет.
 

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

sadman41 пишет:

Look for FIFO on Google

Проще посмотреть на подмножество - кольцевой буффер. Вот, например, вариант реализации - http://we.easyelectronics.ru/Soft/kolcevoy-bufer-na-s-dlya-mk.html