Вызвать HTTP-запрос GPRS асинхронно в Arduino
Обычно модули GPRS (SIM800, 900, A6 и т.д.), Которые используются с arduino, вызываются синхронно в HTTP-запросе (GET / POST). В большинстве случаев это занимает более 10 секунд, и это делает систему очень медленной. Есть ли способ использовать их (библиотеки или модуль) асинхронно (или есть какие-либо альтернативы) и выполнять эти запросы в фоновом режиме во время выполнения основного бизнеса?
@Salitha Indrajith Pathiraja, 👍0
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
- Как создать несколько запущенных потоков?
- Как публиковать запросы HTTP POST на моем веб-сайте?
- Почтовый запрос HTTP в формате JSON с использованием модуля SIM900
- Как правильно отправлять данные через http с помощью sim908?
- HTTP GET запрос с использованием Arduino Uno и ESP8266
- Как составить URL-адрес HTTP-запроса GET с параметрами ключ/значение
- ESP8266 Ошибка неверного запроса 400
- Несколько независимых шаблонов светодиодов