Я искал по всей сети, пытаясь найти пример кода, чтобы увидеть, как слушать смс и читать его. Я новичок в командах, поэтому я пытаюсь увидеть некоторые примеры. Я намерен слушать смс и читать контент. Если в сообщении содержалось слово «вперед», я хочу, чтобы оно выполняло определенную функцию. Я использую щит seeedstudio GPRS v1.4 с моим arduino uno.
Я нашел библиотеку, но запутался в функции readSMS (). Библиотека находится здесь: https://github.com/Seeed-Studio/Seeeduino_GPRS.
У меня есть текущий код:
GPRS gprsTest(8,7,9,9600,"1818XXXXXXXXX");//TX,RX,PWR,BaudRate,PhoneNumber
void setup() {
Serial.begin(9600);
gprsTest.preInit();
delay(1000);
while(0 != gprsTest.init()) {
delay(1000);
Serial.print("init error\r\n");
}
}
void loop() {
//nothing to do
gprsTest.readSMS();
}
Моя проблема в том, что я не уверен, что указывать в параметрах функции readSMS.
В соответствии с API функция принимает int, string и еще один int.
int readSMS(int messageIndex, char *message, int length);
Есть идеи? Не совсем какая-либо документация по получению смс
Я не знаком с Seeed-studio (чьи комментарии в заголовочных файлах также не очень хорошо поддерживаются, чтобы помочь вам), но вот основная идея:
Полученные текстовые сообщения сохраняются в независимых индексах в выбранной памяти сообщений (SIM-карта или телефон, который будет модемом в вашем случае). Новые сообщения обычно принимают наименьший неиспользованный индекс (индексы, начинающиеся с 1).
Есть два способа обнаружить новое SMS
1) Модем отправляет строку на выходной порт, чтобы указать новое SMS (например, прерывание)
2) Вы должны прочитать количество непрочитанных сообщений самостоятельно (опрос)
Эти методы требуют знания аппаратно-зависимых AT-команд. Если вы хотите понять / узнать, что происходит, дайте AT-команды CMGR а также CMGF чтение
Тем не менее, информация, которую вы явно запросили, может быть найдена в функции readSMS из gprs.cpp.
messageIndex
индекс выбранной памяти, в которой хранится сообщение.
*message
это буфер, в который будет прочитано сообщение.
length
длина байтов для чтения.
Статус возврата всегда 0 (плохая стратегия).
Я бы порекомендовал различать прочитанные и непрочитанные сообщения, используя пользовательский код. Это зависит от вашей заявки
Других решений пока нет …