Вызвать HTTP-запрос GPRS асинхронно в Arduino

Обычно модули GPRS (SIM800, 900, A6 и т.д.), Которые используются с arduino, вызываются синхронно в HTTP-запросе (GET / POST). В большинстве случаев это занимает более 10 секунд, и это делает систему очень медленной. Есть ли способ использовать их (библиотеки или модуль) асинхронно (или есть какие-либо альтернативы) и выполнять эти запросы в фоновом режиме во время выполнения основного бизнеса?

, 👍0


1 ответ


1

Конечно, есть. Все, что вы делаете, это считываете и записываете последовательные данные. Все, что вам нужно сделать, это научиться делать это без блокировки.

Большая часть кода, который я вижу вокруг, имеет вид:

Send AT command
Delay for numerous seconds
Read and discard anything that might be there
Send another AT command
Delay for more seconds
Read and discard anything that might be there
... etc ...

Это совершенно неправильный способ делать что-то.

Вместо этого вы должны использовать неблокирующее чтение для поиска фактического ответа OK от отправленных вами AT-команд и использовать его для прохождения различных этапов конечного автомата.

Некоторые ресурсы для чтения из моего блога:

  • Считывание серийного номера на Arduino
  • Конечный автомат
  • Зло строк Arduino
  • Разделение текста на C
,