Упростил запрос баланса и, главное,
добавил отправку SMS. Пока только латиницей.
http://lj.rossia.org/users/igorpashev/9
http://www.developershome.com/sms/smsIn
http://www.communica.se/multitech/gprs_
#!/usr/bin/env python3
#coding: utf8
import io
class Modem:
def __init__(self, dev='/dev/ttyUSB1'):
self.stream = io.open(dev, 'w+b', 0)
def __write(self, s):
self.stream.write(str.encode('{}\r\n'.format(s)))
def close(self):
self.stream.close()
def ussd(self, code):
self.__write('AT+CUSD=1,{},15'.format(code))
def balance(self, code='*100#'):
self.ussd(code)
for l in self.stream:
if l.startswith(b'+CUSD'):
msg = l[10:l.rfind(b'"')].decode('ascii')
return bytes.fromhex(msg).decode('utf-16-be')
def sendSMS(self, phone, msg):
self.__write('AT+CMGS="{}"'.format(phone))
self.__write('{}\x1a'.format(msg))
modem = Modem()
modem.sendSMS('+7XXXXXXXXXX', 'test')
![]() |
| Альбом: Any key |
Подсмотрел здесь: http://ru.gentoo-wiki.com/wiki/MF62
Переписал на Python 3, сделал расширяемым.
В таком виде показывает баланс и рекламу :-)
Раскрасил так:
pygmentize -f html -O 'noclasses=true' 1.py
#!/usr/bin/env python3
#coding: utf8
import time, io
class Modem:
p = None
def __init__(self, dev='/dev/ttyUSB1'):
self.open(dev)
def open(self, dev):
#self.close()
self.p = io.open(dev, 'w+b', 0)
def write(self, s):
self.p.write(str.encode(s) + b'\r\n')
time.sleep(0.1)
def close(self):
self.p.close()
def ussd(self, code):
self.write('AT+CPBS="SM"')
self.write('AT+CPMS="SM","SM",""')
self.write('AT+ZSNT=0,0,2')
self.write('AT+CUSD=1,' + code + ',15')
for ln in self.p:
if ln.startswith(b'+CUSD'):
msg = ln[10:ln.rfind(b'"')].decode('ascii')
return bytes.fromhex(msg).decode('utf-16-be')
def balance(self, code='*100#'):
return self.ussd(code)
modem = Modem()
print(modem.balance())
На каждый чих — отдельная библиотека, пофиг, что нигде больше не используется.
Искал экранную клавиатуру.
GOK — дофига зависимостей, в том числе libcanberra — звуковые схемы. ЗАЧЕМ?
И эту зависимость не отключить, нафига вообще скрипт configure?
onboard — написан на питоне, но установщик написан на python-distutils-extra
EXTRA! — ещё самих distutils нету, а тут extra. Сам установщик — только
копирует файлы. Писец. Да, ещё модуль virtkey.
Ну нельзя же всё так дробить!
Обновление к http://lj.rossia.org/users/igorpashev/3
http://github.com/ip1981/newslack
Что нового в программе:
* Можно указать рабочую директорию: ./newslack /mnt/host/etc
* Можно применить частичный патч: надо выделить часть текста, и будут применены блоки, охваченные выделением.
После обновления Слаки с директории /etc
остаётся несколько файлов типа rc.inet1.new,
которые по идее должны заменить старые файлы (типа rc.inet1).
Я обычно это делал руками: diff -u rc.inet1 rc.inet1.new,
а затем принимал решение о замене.
мне это надоело, и я написал программу на Питоне,
которая это автоматизирует.
Программа графическая, использует Qt4, pygments.

http://picasaweb.google.ru/lh/photo/EVms
( #!/usr/bin/python )