Доброго всем дня, прошу всех кто работал со встроенным TCP/IP стеком модема Wismo228 помочь в решении моей проблемы. При попытке скачивания мной файла модемом Wismo228 по http протоколу файл в большинстве случаев не удается скачать полностью.
Модем работает без аппаратного управления потоком (RTS и CTS). Управляю модемом посредством АРМ процессора. Весь обмен между процессором и модемом "подслушиваю" терминальной программой, подключенной через USART-USB переходник. Версия прошивки модема 20.
Модем инициализирую все в порядке, регистрация проходит, GPRS включается. Подключаюсь к серверу как TCP клиент, используя встроенный TCP/IP стек, все проходит хорошо. Получаю CONNECT, открываю сокет и посылаю запрос файла через GET заголовок, в ответ на который, сервер начинает передавать мне данные.
Проблема состоит в том, что подключившись к WEB серверу по HTTP протоколу и послав запрос GET, у меня модем не всегда принимает все посланные сервером данные, размер которых составляет около 100 килобайт. В начале приема данные поступают нормально, но после принятия 10-20кбайт, начинаются приостановки передачи. Очень часто происходит разрыв соединения с выдачей SHUTDOWN. Закачивание файла идет не равномерно, бывают остановки на 1-10 секунд. Иногда во время нормального приема происходит остановка передачи данных модемом и более от модема данные не приходят, в том числе и SHUTDOWN. Из 20 произведенных соединений с передачей данных, успешными являются около 2 соединений, в остальных случаях происходит разрыв соединения и модем выдавал SHUTDOWN.
Сим карту использую оператора Beeline. Подскажите, в чем может заключаться данная проблема?
З.Ы. Правильность GET заголовков посылаемых на сервер проверена через терминальную программу, сервер все время корректно отвечает.
Также прилагаю лог обмена данными между модемом и микроконтроллером.
Код
AT+CMEE=1
OK
AT+CFUN=1
OK
+CREG: 1
AT+CREG?
+CREG: 1,1
OK
*PSSTK: "SETUP MENU",1,2,"Ђ 8; 0 9 =яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя
яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя
яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя",255,255,1,0,0,8
AT+WIPCFG=1
OK
AT+WIPCFG?
+WIPCFG: 0,64
+WIPCFG: 1,0
+WIPCFG: 2,60
+WIPCFG: 3,0
+WIPCFG: 4,536
+WIPCFG: 5,0
+WIPCFG: 12,0
+WIPCFG: 13,0
+WIPCFG: 14,0
OK
AT+WIPBR?
OK
AT+WIPBR=1,6
OK
AT+WIPBR=2,6,11,"internet.beeline.ru"
OK
AT+WIPBR=2,6,0,"beeline"
OK
AT+WIPBR=2,6,1,"beeline"
OK
AT+WIPBR=4,6,0
OK
AT+WIPBR=3,6,15
+WIPBR: 6,15,"10.207.242.200"
OK
AT+WIPCREATE=2,1," sitename.ru",80
OK
+WIPREADY: 2,1
AT+WIPDATA=2,1,1
CONNECT
GET http://sitename.ru/ file.bin HTTP/1.0
Host: sitename.ru
HTTP/1.1 200 OK
Date: Sat, 25 Feb 2012 06:01:51 GMT
Server: Apache/1.3.34 (Unix) mod_deflate/1.0.21 PHP/5.2.17
Last-Modified: Sat, 25 Feb 2012 05:33:23 GMT
ETag: "588149-20000-4f4872a3"
Accept-Ranges: bytes
Content-Length: 131072
Connection: close
Content-Type: application/octet-stream
Тут начинают идти двоичные данные (либо обычный текст в зависимости от запрашиваемого файла), но часто до конца данные так и не доходят.
SHUTDOWN
+WIPPEERCLOSE: 2,1
OK