Соединение с удалённым узлом и обмен данными Итак, модуль успешно зарегистрировался в сети, активировал режим GPRS. Теперь можно перейти к завершающей стадии работы – соединению с сервером и обмену данными. Для имитации работы удалённого TCP-сервера используем приложение «Hercules». Установив программу на ПК имеющем прямое подключение к Интернет (без прокси-сервера), в закладке "TCP Server” необходимо указать любой незадействованный в ОС номер порта для приёма данных, например 1095. Поля ”TEA Key” должны остаться пустыми, а режим авторизации клиентом отключенным: После нажатия на кнопку "Listen” в окне "Received data” приложение будет отображать все данные, поступившие на порт 1095. Ответить подключившемуся модему можно данными, набранными в поле "Send” нажав на одноименную кнопку. Замечание: чтобы не прождать данных с модуля вечно, отключите на компьютере все «файерволы» и «антихакеры» или создайте соответствующие правила для выбранного номера порта. Команда "AT#SKTD” (Socket Dial) предназначена для соединения с произвольным узлом в сети Интернет. В составе команды заложены два главных параметра соединения: IP-адрес и номер порта для приёма данных соответствующим приложением. Команда на соединение с портом 1095 сервера с IP-адресом 123.456.654.321 в виде строковой константы на Си должна выглядеть так: Ответ 1<CR>, помимо информации об успешном соединении, является признаком выхода модема из режима AT. Отныне любые передаваемые модулю AT-команды эффекта не возымеют и будут "проваливаться” прямо в приёмный буфер сервера. Замечание: в модуле реализован встроенный TCP/IP-стек, это избавляет от необходимости как бы то ни было форматировать отправляемые данные. Всё, что будет передано модулю через UART, как оно есть, поступит в приёмный буфер сервера, учитывая возможные временные задержки на передачу данных в сети GPRS или установленный в модеме таймаут на передачу. Очень важно в потоке принимаемых данных не пропустить сообщение 3<CR> (не забываем 3 в ASCII-виде, т.е. 0x33), которое уведомляет нас о разрыве установленной связи с сервером. Этот ответ, как и 1<CR>, является более чем просто ответом, это признак того, что модем снова вернулся в AT-режим. Текстовый эквивалент сообщения о потере связи - "NO CARRIER". Поскольку сотовые операторы на общих основаниях выделяют модулям только динамические IP-адреса, то устанавливать соединение должно само модемное устройство. Если же по каким-то причинам и сервер лишится своего статического адреса, который использовали клиенты для установки соединения, передать новый "IP" можно при помощи SMS. Для чтения SMS-сообщений принятых модулем предусмотрены следующие AT-команды:
AT+CMGF=1 - текстовый формат чтения принятых SMS; AT+CMGL="ALL" - считать из буфера все принятые на данный момент сообщения; AT+CMGD=1,4 - удалить все SMS из приёмного буфера. |