Проблема со скриптом для управления GSM модемом
Добавлено: 27 май 2009, 15:13
ОС: Linux Ubuntu 8.04
Модем: Siemens MC35i терминальный
Хочется настроить смс-уведомления, посылаемые сервером, с помощью GSM модема.
При работе с модемом через minicom никаких проблем не возникает, модем прекрасно отвечает на AT команды и выполняет их.
Но, нужно это дело автоматизировать. Написал скрипт на пхп для этого дела. Но модем команды посланные со скрипта отрабатывает неправильно, он их как бы зацикливает, те отрабатывает по нескольку раз. Пример:
1. Вводит команду первый раз
ATZ
A
OK
2. Второй раз
TZATZ
OK
Как видно из примера, даже простую команду сброса модем пытается прочитать по второму разу,
естесственно при вводе следующей команды часть первой команды осталась в порту.
Сначала думал дело в скрипте, но порывся с инете, скачал несколько других вариантов, и та же самая проблема. Причем варианты рабочие. Те дело не в скрипте.
Вот вариант скрипта на питоне:
ВОПРОС: подскажите, почему при работе в minicom такого не происходит? И в чем вообще может быть проблема? Может нужна какая нибудь настройка ttyS*? Кто нибудь сталкивался вообще с таким?
Модем: 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*? Кто нибудь сталкивался вообще с таким?