Я написал нечто подобное раньше. Есть способ с помощью AT-команд сообщить модему, что он будет сигнализировать вам каждый раз при получении SMS.
Для справки, я использовал GSM-модем Maestro 100 во встроенном приложении.
Сначала нужно правильно инициализировать модем. Я использовал текстовый режим для SMS, но вы можете использовать что-то другое. Выберите из них то, что вы хотите. AT + CNMI является наиболее важным.
AT&F0 # Restore factory defaults
ATE0 # Disable command echo
AT+CMGF=1 # Set message format to text mode
AT+CNMI=1,1,0,1,0 # Set new message indicator
AT+CPMS="SM","SM","SM" # Set preferred message storage to SIM
Затем вы подождете сообщения с уведомлением, которое будет выглядеть следующим образом. (Не совпадают по порядковому номеру, который может отличаться в уведомлениях)
+CMTI: "SM",0 # Message notification with index
Когда вы получите это уведомление, получите непрочитанные SMS:
AT+CMGL="REC UNREAD" # Retrieve unread messages
Я бы порекомендовал вам также добавить опрос, возможно, каждые 5 минут или около того, на случай, если вы пропустите уведомление. С последовательной связью вы никогда не можете быть уверены!