Добрый день. Последние пару дней пытаюсь выжать из SIM800C максимальную скорость передачи по GPRS через встроенный TCP/IP-стек (upload, то есть, в направлении устройство->модуль->GPRS->Internet->ПК).
Максимум, что у меня получилось - это передача 1 Мб данных за 6 минут, что соответствует 22 Кб/сек (результат от времени суток не зависит).
При том, что в даташите написана максимальная скорость для GPRS 85.6 Кб/сек - есть куда стремиться.
Условия: стабильно хорошая связь, +CSQ: 25,0, скорость UART 115.2 Кб/сек, Revision:1418B02SIM800C24
Алгоритм следующий:
1) открываю TCP соединение
AT+CIICR
AT+CIPSTART=...
2) отправляю данные
AT+CIPSEND=900..1400
> <данные>
3) проверяю заполненность буфера модема
AT+CIPACK
Команда возвращает 3 значения:
-размер отправленных данных
-размер успешно принятых удаленным узлом данных
-размер данных, ожидающих отправкиЕсли размер ожидающих данных меньше 4кБ, перехожу к шагу 2
В противном случае, жду некоторое время (100 мсек) и повторяю шаг 3
Если размер ожидающих данных становится больше ~5кБ, то модуль сам разрывает соединение.
Если включить EDGE (AT+CEGPRS=1,12), то ситуация качественно не меняется. Возможно, скорость увеличивается процентов на 10, но и то не факт, т.к. может быть просто погрешность измерения такая. К тому же, в модуле ни слова про EDGE.
Подозреваю, что "узкое горлышко" - это реализация TCP/IP стека в модуле.
Меня интересует, кто как решал задачу реализации передачи данных через GPRS в модулях SIMCOM с максимальность скоростью, и какие результаты, при этом, были получены.
Получиться ли добиться большей скорости, если использовать другие способы передачи данных, например в прозрачном режиме (transparent mode, AT+CIPMODE=1)?
PS Кстати, при получении TCP пакетов я вижу такую картину. Как-то странно данные на пакеты разбиваются. С учетом того, что я разом (одной командой AT+CIPSEND) отправляю не менее 900 байт.