rvb: (за компом)
[personal profile] rvb
Возникла на днях такая задача: прикрутить сотовый модем Huawei E160G к нетбуку под Убунтой. Собственно соединение настроилось штатными средствами, но вот посмотреть баланс не под виндой - никак. Личный кабинет на этом тарифе, похоже, не полагается, на штатный запрос USSD - ноль эмоций (как оказалось - из-за того, что с кодировками разработчик модема обошелся весьма вольно, и на вход принимается только 7-битный PDU-encoded, а на выходе - UTD-16 в шестнадцатиричном представлении).

В общем, дальше подробности рассказывать не буду, но после поиска по сети (не очень успешного) пришлось вспоминать, как писать на Питоне. В итоге все написалось :)

Тут берем пакет для работы с PDU-кодированными текстами.

А сам скриптик - ниже.

На входе принимает команды USSD-меню, если ничего не передано - запрашивает баланс (*102#).


#!/usr/bin/env python
#
# This script sends USSD requests to the Beeline 
# via Huawei E160G USB-GPRS/3G modem.
#
# written by rvb, 2009
# feel free to use this code under GPL licence
#
import serial
import string
import os 
import pdu
import sys
#
# Definitions
#
KDIALOG='/usr/bin/kdialog'
USBPORT='/dev/ttyUSB1'
USBSPEED=460800
MAXSTRINGLENGTH=300

n = 0
command = ''

for param in sys.argv:
  n = n+1;
  if n>1:
    if command <> '':
      command = command+' ';
    command=command+param;
  
if n==1:
  print 'No commands specified, requesting balance\n'
  command="*102#"

gsmcommand = pdu.encodeText7Bit(command)

#print "Wait a USSD request ... "

try:

  s=serial.Serial(USBPORT,USBSPEED,timeout=5)
  s.write('ATZ \015')
  s.write('AT+CUSD=1,'+gsmcommand+',15 \015')

  line=''
  while line[0:6] != '+CUSD:':
    line=s.readline(MAXSTRINGLENGTH)
  s.close()

  line2=line.split(',')[1]
  line3=string.replace(line2,'"','')
  result=unicode(line3.decode("hex"),"utf-16-be")

  print result

except:

  print "Error when requesting 3G/GPRS modem"

Profile

rvb: (Default)
rvb

January 2013

M T W T F S S
 123456
78910111213
14151617181920
212223 24252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated 25 Feb 2026 11:52
Powered by Dreamwidth Studios