@Saymon21
Linux system administrator

Выполение USSD запроса из скрипта Python

Имеется смс-шлюз на базе Nokia 5130 xpressmusic, поключенный кабелем к серверу на ubuntu.
Решил проверять баланс скриптом на Python выполняя ussd запрос *102#, однако никак не могу получить корректный ответ от телефона.
Сам скрипт:
import serial
 
ser = serial.Serial('/dev/ttyACM0')
ser.write('AT+CUSD=1,"*102#",15\r\n') #   
#ser.write('ATD*102#\r\n')
#ser.write('AT+csq\r\n')
while True:
	print ser.readline()

Результат работы:
# python ./test.py
AT+CUSD=1,"*102#",15
ATZCPAS
OK
ATZ
OK

В чём могут быть проблемы?
ps. На телефоне стоит симка от Ростелекома.
  • Вопрос задан
  • 4232 просмотра
Решения вопроса 1
@Saymon21 Автор вопроса
Linux system administrator
Оставлю вариант, который сработал...

import base64

f = open('/dev/ttyACM1','w+a')
f.write('AT+CUSD=1,"*102#",15\r\n')
while True:
        line = f.readline()
        if len(line) == 0:
                continue
        else:
                if line.startswith('+CUSD'):
                        print  base64.b16decode(line[10:line.rfind('"')]).decode('utf-16-be')
                        break
                else:
                        print line
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@moonsly
Может стоять не та кодировка для АТ-команд, лечится командой AT+CSCS=UCS2/IRA:
www.activexperts.com/mmtoolkit/at/commands/?at=%2BCSCS
Также ваш девайс может вообще не поддерживать кодировку, в которой приходит ответ на USSD-запрос (если баланс приходит с кириллицей) - тогда только менять девайс на тот, который поддерживает кодировку в АТ-командах.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы