LINUX.ORG.RU
ФорумAdmin

Проблема со скриптом для управления GSM модемом


0

0

ОС: 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*? Кто нибудь сталкивался вообще с таким?

Ответ на: комментарий от phil_ny

smstools3 это демон, который мониторит определённую директорию на предмет появления новых файлов.

Соответственно вы его ставите, настраиваете и запускаете. А своим скриптом тупо создаёте эти текстовые файлики в нужной директории и забываете о них - демон их сам подберёт и отправит, а-ля почтовик.

cyberax
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.