Проблема со скриптом для управления GSM модемом
ОС: Linux Ubuntu 8.04 Модем: Siemens MC35i терминальный
Хочется настроить смс-уведомления, посылаемые сервером, с помощью GSM модема. При работе с модемом через minicom никаких проблем не возникает, модем прекрасно отвечает на AT команды и выполняет их. Но, нужно это дело автоматизировать. Написал скрипт на пхп для этого дела. Но модем команды посланные со скрипта отрабатывает неправильно, он их как бы зацикливает, те отрабатывает по нескольку раз. Пример: 1. Вводит команду первый раз ATZ A
OK
2. Второй раз TZATZ
OK Как видно из примера, даже простую команду сброса модем пытается прочитать по второму разу, естесственно при вводе следующей команды часть первой команды осталась в порту. Сначала думал дело в скрипте, но порывся с инете, скачал несколько других вариантов, и та же самая проблема. Причем варианты рабочие. Те дело не в скрипте. Вот вариант скрипта на питоне: #!/usr/bin/env python
from os import path from optparse import OptionParser from sys import exit,stderr import re
default_tty='/dev/ttyS0'
parser = OptionParser()
parser.add_option('-t','--tty',dest='tty',default=default_tty,help='tty file for sending. Default is:'+default_tty) parser.add_option('-p','--phone',dest='phone',help='phone number for send msg') parser.add_option('-m','--message',dest='message',help='Message for sending') parser.add_option('-f','--file',dest='message_file',help='Text file with text message for sending')
option,args = parser.parse_args()
if not path.exists(option.tty): print >> stderr, "your tty file don't exists: '%s'" % option.tty exit(1)
if not option.message and not option.message_file: print >> stderr, "please give me a message or file for sending" exit(1) elif not option.message: option.message = open(option.message_file).read()
if not option.phone: print >> stderr, "please give me a phone for send a message" exit(1)
regex = re.compile('^\+?[0-9]+$') match = regex.match(option.phone) if not match: print >> stderr, "invalid phone number: %s" % option.phone exit(1)
f = open(option.tty,'w') f.write('AT+CMGS="'+option.phone+'"\n'+option.message+'\n%s' % chr(26)) f.close() ВОПРОС: подскажите, почему при работе в minicom такого не происходит? И в чем вообще может быть проблема? Может нужна какая нибудь настройка ttyS*? Кто нибудь сталкивался вообще с таким?