Найти - Пользователи
Полная версия: Модуль для работы с усб модемом
Начало » Python для новичков » Модуль для работы с усб модемом
1
ypeskov
Люди, помогите сделать доброе дело.

есть модем беспроводный для Utel(украинский оператор, он же Укртелеком).

в данный момент под линуксом для опрделения баланса и других USSD операций приходится запускать minicom -o console


сие есть не совсем удобно, хочу написать простенький скрипт, который бы принимал USSD строку для запуска.

Собственно вопрос: подскажите название модуля, могущего работать с модемом и отсылать ему команды, получая ответ?
UsCr
А может на баше реализовать?
.Serj.
man chat.
Пример использования (строка подключения в /etc/ppp/peers/mts):
connect '/usr/sbin/chat -v "" ATZ OK AT+CGDCONT=1,\\"IP\\",\\"internet.mts.ru\\" OK ATDT*99# CONNECT'
ypeskov
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()
это для оператора Utel(Укртелеком)
можно конечно и напрямую в файл /dev/ttyUSB0 писать, но это было бы не кросплатфомренно. а так модуль serial насколько я понял самзнает как работать с устройствами
Viper
Посмотрите Выполнение USSD запросов под Linux
ypeskov
Viper
Посмотрите Выполнение USSD запросов под Linux
спасибо, поглядел.
практически тоже самое :)

я тут прикрутил пстенькй граф дизайн с двумя кнопками :)
файл утянуть можно тут http://forum.remember-calories.com/misc.php?item=1&download=1
#!/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()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB