Как я могу отправить SMS через AT-команду с помощью трехдиапазонного USB-модема Zoom 7.2m? - PullRequest
1 голос
/ 25 января 2011

Я пытаюсь создать простое приложение python 2.6 для OSX 10.6.6, которое может отправлять и получать SMS-сообщения на моем USB-модеме Zoom 7.2m (3g).

При первоначальном подключении к USB-модему сеансы TTY или CU, по-видимому, не создаются. Я должен запустить программное обеспечение модема, чтобы начать следующие сеансы;

cu.LJADeviceInterface2621 cu.LJADiagConnector2620 cu.LJAMobileConnector2622 tty.LJADeviceInterface2621 tty.LJADiagConnector2620 tty.LJAMobileConnector2622

После большого "веселья", кажется, единственная сессия, на которую я могу читать и писать, это "cu.LJADeviceInterface2621". При попытке подключиться к tty, я получаю сообщение об ошибке -

serial.serialutil.SerialException: не удалось открыть порт /dev/tty.LJADeviceInterface2621: [Errno 16] Ресурс занят: '/dev/tty.LJADeviceInterface2621'

Это хорошо, хотя - у меня по крайней мере есть с чем работать, эквивалентно cu.

Мой сценарий выглядит следующим образом;

            ser = serial.Serial("/dev/cu.LJADeviceInterface2621", 9600, timeout=1)

            print "Setting DTR..."
            ser.setDTR(True)

            sleep(3)
            print "Turning off DTR..."
            ser.setDTR(False)
            searching = True

            ser.setDTR(True)
            while searching:
                    print "Write instruction..."
                    txt=raw_input()
                    if txt.find("ZZ")>-1:
                            txt=txt.replace("ZZ",chr(13))
                    ser.write(txt)

            ser.close()

Теперь у меня также есть другой скрипт, который отслеживает сообщения в cu.LJADeviceInterface2621. Этот сценарий выглядит следующим образом:

            ser = serial.Serial("/dev/cu.LJADeviceInterface2621", 9600, timeout=1)

            print "Attempting search."
            while True:
                    line = ser.readline()
                    print ">", line

Когда оба этих скрипта работают, в коде WRITE я ввожу следующие строки:

(Примечание: ввод ZZ заменяется на Ctrl-Z с помощью сценария записи выше - chr (13))

AT + CMGF = 1ZZ [нажмите ввод, чтобы зафиксировать запись]

OK

AT + CMGW = "+ 447725123123" \ r \ n [нажмите ввод, чтобы зафиксировать запись]

ERROR

Я должен написать текст сообщения, затем Ctrl-Z (chr (13), но я сразу же получаю ошибку.

У модема USB есть действующий сим, с кредитом, у него есть сигнал, я могу отправить текст из программного обеспечения Zoom Modem (однако это работает только в режиме PDU - но модем поддерживает текстовый режим, согласно AT + CMGF =? Команда) и получать сообщения.

Есть идеи?

Рад предоставить больше информации, где это необходимо, спасибо Stu

Ответы [ 2 ]

1 голос
/ 26 января 2011

Также помните, что есть много проектов, которые выполняют эту задачу за вас (pysms - один из них)

0 голосов
/ 26 января 2011

Ну, я никогда не использую этот модем, но полагаю, что он использует стандартные GSM-команды AT, а AT + CMGW неверен.

Вы должны отправить: AT + CMGS = "+ 111111111" \ r \ n SMS-текст Ctrl-Z

И это должно работать

...