Проверка баланса GPRS-модема через USSD-запрос
Создадим скрипт на языке python, который будет выводить баланс в окне терминала.
С задачей справиться достаточно просто при помощи модуля pyserial – устанавливаем его:
sudo apt-get install python-serial
Создадим файл, например, ussdbal.py
gedit ussdbal.py
Код скрипта:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #!/usr/bin/env python # coding: UTF-8 import sys import serial import string S_PORT='/dev/ttyACM0' S_REQ = '"#102#"' # Результат запроса латиницей, оператор билайн. S_SPEED=115200 if len(sys.argv)>1: # Если есть аргументы в командной строке S_PORT=sys.argv[1] # предполагаем, что это имя устройства (модема) try: sp = serial.Serial(S_PORT, S_SPEED, timeout=3) # Пытаемся открыть порт except: # Открыть не удалось print 'Error: Устройство \"%s\" занято или не существует!' % S_PORT sys.exit() # Завершаем работу if __name__ == '__main__': print 'Запрос баланса. Ожидайте...' s_query = 'AT+CUSD=1,'+S_REQ+',15 \015' # Формируем запрос sp.write(s_query) # Отправляем запрос str = "" while not(str.startswith('+CUSD:')): str=sp.readline() # читаем пока не получим ответ s=string.replace(str.split(',')[1],'"','') print(s) # выводим результат sp.close() # закрываем порт sys.exit() # выход |
Делаем файл исполняемым:
chmod 755 ussdbal.py
Скрипт готов к запуску. Запускаем из терминала:
./ussdbal.py
можно указать устройство:
./ussdbal.py /dev/ttyUSB0
Обратите внимание на то, что корректность переданного в командной строке аргумента не проверяется.

пробую ваш скрипт подкрутить для своих нужд….
есть жсм шлюз, отправляю запрос, порт занят, просто идет ожидание……
и все…. шлюз никак не отвечает, хотя даже на не правильный запрос выдает, Input error, но система M$
если есть минутка, мой жаббер: noname@unstable.nl
Если шлюз, на момент подачи запроса, подключен к сети – возможно тут проблема (занят порт)? На би и мтс, у меня данный скрипт прекрасно работал в одном регионе (я его в отпуске писал), а после приезда домой, отказался работать на всех доступных мне операторах – мтс, би и меге. Это и остановило его дальнейшее развитие (хотелось апплет для гнома написать). Вот доработанная версия скрипта, работоспособная, но, работает не во всех регионах