Проверка баланса USB-модема через USSD-запрос

Устаноавливаю pyserial

apt-get install python-serial

За основу взял скипт http://smart-talk.ru/2009/07/script-get-balanse-usb-gprs-modem/

cat ussd.py
#!/usr/bin/python2
# coding: UTF-8
import sys
import serial
import string
S_PORT='/dev/ttyUSB2' # Девайс
S_REQ = '*100#' # Номер
S_SPEED=115200
sp = serial.Serial(S_PORT, S_SPEED, timeout=3) # Пытаемся открыть порт
if __name__ == '__main__':
        s_query = 'AT+CUSD=1,AA180C3602,15\015'
        sp.write(s_query) # Отправляем запрос
        rst = ""
        c = 0
        while not(rst.startswith('+CUSD:') or rst.startswith('+CME ERROR:')):
                rst=sp.readline() # читаем пока не получим ответ
                c+=1
                if c>20: break
        try:
                s=string.replace(rst.split(',')[1],'"','')
        except IndexError:
                s="Ответа не дождались..."
        ss=unicode(s.decode("hex"), "utf-16-be").encode("utf8") # преобразую из PDU в нормальный текст
        ss=ss.split(' ')[0]
        print(ss) # выводим результат
        sp.close() # закрываем порт
        sys.exit(0) # выход

Результат работы моего скрипта.

./ussd.py
92.46р.

Ссылки:
http://smart-talk.ru/2009/07/script-get-balanse-usb-gprs-modem/
http://www.ab-log.ru/forum/viewtopic.php?f=1&t=219&start=20
http://mrcat.ru/sms-send-receive
https://github.com/gnomeby/ussd
http://hardisoft.ru/soft/poluchenie-i-dekodirovanie-sms-soobshhenij-v-formate-pdu/
http://subscribe.ru/archive/comp.soft.freebsd/201408/15100619.html
http://www.linux.org.ru/forum/development/5901636