Форум сайта python.su
Люди, помогите сделать доброе дело.
есть модем беспроводный для Utel(украинский оператор, он же Укртелеком).
в данный момент под линуксом для опрделения баланса и других USSD операций приходится запускать minicom -o console
сие есть не совсем удобно, хочу написать простенький скрипт, который бы принимал USSD строку для запуска.
Собственно вопрос: подскажите название модуля, могущего работать с модемом и отсылать ему команды, получая ответ?
Офлайн
А может на баше реализовать?
Офлайн
man chat.
Пример использования (строка подключения в /etc/ppp/peers/mts):
connect '/usr/sbin/chat -v "" ATZ OK AT+CGDCONT=1,\\"IP\\",\\"internet.mts.ru\\" OK ATDT*99# CONNECT'
Офлайн
UsCrоно может и можно, но возмжно меня хватит потом графический интерфейс доделать.
А может на баше реализовать?
#!/usr/bin/env python
import serial
import sys
def makeRequest(device='/dev/ttyUSB1', ussd='*100#', timeout=5):
m = serial.Serial(device)
m.timeout = timeout
query = 'at+cusd=1,' + ussd + ',15\r\n'
m.write(query)
answer = ''
while answer[:5] != '+CUSD':
answer = m.readline()
print answer[10:-6]
return 0
def main():
if len(sys.argv) > 1:
if sys.argv[1] == 'balance':
makeRequest(ussd='*100#', timeout=5)
elif sys.argv[1] == 'traffic':
makeRequest(ussd='*121#', timeout=5)
else:
print 'Usage:\nbalans.py balance | traffic'
return 0
if __name__ == '__main__':
main()
Отредактировано (Июль 12, 2010 18:08:46)
Офлайн
Посмотрите Выполнение USSD запросов под Linux
Офлайн
Viperспасибо, поглядел.
Посмотрите Выполнение USSD запросов под Linux
#!/usr/bin/env python
import serial
import sys
from Tkinter import *
class App:
device = '/dev/ttyUSB0'
def __init__(self, master):
frame = Frame(master)
frame.pack()
self.button = Button(frame, text="Get balance", fg="red", command=self.getBalance)
self.button.pack(side=LEFT)
self.traffic = Button(frame, text="Get traffic", fg='red', command=self.getTraffic)
self.traffic.pack(side=LEFT)
def getTraffic(self):
modem = Modem()
msg = modem.makeRequest(device=self.device, ussd='*121#', timeout=5)
self.showResult(msg)
def getBalance(self):
modem = Modem()
msg = modem.makeRequest(device=self.device, ussd='*100#', timeout=5)
self.showResult(msg)
def showResult(self, msg):
win = Toplevel()
w = Message(win, text=msg)
w.pack()
class Modem:
def __init__(self):
pass
def makeRequest(self, device='/dev/ttyUSB0', ussd='*100#', timeout=5):
m = serial.Serial(device)
m.timeout = timeout
query = 'at+cusd=1,' + ussd + ',15\r\n'
#print query
m.write(query)
answer = ''
while answer[:5] != '+CUSD':
answer = m.readline()
#print answer
msg = answer[10:-6]
return msg
def main():
root = Tk()
app = App(root)
root.mainloop()
return 0
if __name__ == '__main__':
main()
Офлайн