Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Arduino, работа с gsm модемом, как узнать баланс симки?

Константин Ли Ученик (90), закрыт 7 лет назад
Подскажите пожалуйста, как можно узнать сколько денег на симке в gsm модеме, AT команду я знаю (AT+CUSD=1,"#100#"), но как ответ записать в переменную?
Лучший ответ
Иван Сигаев Искусственный Интеллект (149588) 7 лет назад
Для начала - не все модемы обрабатывают USSD команды

А сам алгоритм простой: посылаешь команду, парсишь ответ
Константин ЛиУченик (90) 7 лет назад
Мой ussd обрабатывает нормально.
И да, алгоритм то простой, но вот можно пожалуйста хотя бы примерно набросать как это делать (модуль работает без подключения к serial порту)
Иван Сигаев Искусственный Интеллект (149588) Что значит без serial-порта? а как он команды принимает?
Остальные ответы
Станислав Мыслитель (5292) 7 лет назад
Схему подключения модуля и дуни свою скиньте
Константин ЛиУченик (90) 7 лет назад
вопрос, решён, код написал сам:
#include
String balance1;
String currStr = "";
SoftwareSerial gprsSerial(2, 3);
int status_command, state_while = 0;

void setup()
{
Serial.begin(2400);
gprsSerial.begin(2400);
}

void loop()
{
while (state_while == 0)
{
if (status_command == 0) {
gprsSerial.println("AT+CUSD=1,\"#100#\""); //запрос баланса
status_command = 1;
delay(300);
}
if (gprsSerial.available()) {
char currSymb = gprsSerial.read();
if ('\r' == currSymb) { //если символ перевод каретки
if (currStr.startsWith("+CUSD: 0,")) {
int zzz = currStr.indexOf('UAH');
balance1 = currStr.substring(10, zzz - 3); //баланс на сим карте
status_command = 0;
state_while = 1;
/
Похожие вопросы