Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: SIM800L / TCP - Не завершается AT+CIPSEND
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
DallySon
Всем доброго времени суток.
Имеется связка LINUX/DAemon + GSM устройство. Устройство складирует в базу логи. с Neoway 590E - делает это замечательно. Приложение писишное - тоже.. Т.е. можно считать что с демоном все в порядке.
Решил плату сделать на SIM800L, Neoway - не устраиват лишь из-за повышеных требований к питанию.
И тут столкнулся с проблемой - "Откуда не ждали"... Регистрируюсь в сети и соединяюсь с серваком - как обычно.. все проходит нормально.. tcpdump - ом вижу подключение.
а вот дальше чудеса.. в ответ на приглашение ">" - передаю данные - и пипец - тишина.. завершаю передачу как по "марксу" во всяких ипостасиях ((char)26, 0Х1А )- и все равно - тишина... правда на комманды реагирует.. т.е. можно закрыть соединение и работать дальше - Но вот самой отправки до сервака и не доходит даже.

И сразу вопрос попутно - не вижу данных ответных от сервера.. Т.е. модемовские сообщения - вижу.. а вот что пришло с ТСР (сообщения демона) - нет..
С Neoway - все было просто - запрос отправил - а демон ответил - что там да как там... А здесь все как в яму бросаешь...
сценарий таков:

AT+CIPSHUT
OK
AT+CIPMUX=0
OK
AT+CGATT=1
AT+CSTT="internet.mts.ru","mts","mts"
OK
AT+CIICR
OK
AT+CIFSR
10.183.118.175
AT+CIPSTART="TCP","XXXXX.ru","XXX"
(или так AT+CIPSTART="TCP","XXX.XXX.XXX.XXX","XXXX")
OK

CONNECT OK


AT+CIPSEND

> XXXXXXXXXXXXXX + 0x1A
и вот здесь - как партизан молчит.......


пробовал и так
AT+CIPSEND=5
> XXXXX

SEND OK - как то раз проскочило - но в дампе - пакета не увидел.


а если делаем
AT+CIPCLOSE

CLOSED OK


c модулем работаем по softserial (2,3)

дергают через ресет-пин.


ну вот как то так..
Помогите люди добрые - кто чем может.
Заранее благодарю.



DallySon
Дабы исключить все инсинуации от демона - попробовал этот эксперимент с этими-же терминалами и сокетами.
https://www.youtube.com/watch?v=hUMn_6jiO_U
Ситауция прежняя.. на сервере вижу - появляется соединение с новым клиентом - а дальше - ТИШИНА!!! CIPSEND - никакого действия ни на кого - не оказывает.....
ArtemKAD
Ху из "0x1A" - один символ или таки четыре?
serglg
я тоже понял, что сетевые функции у SIM800L блокированы.
Единственное, что видно - внутренний адрес от МТС получает и всё.
Никаких эффектов.
Но при этом везде исправно говорит ОК.
Там ниже моя тема про мои попытки подключиться к SMTP-серверу с помощью SIM800L
DallySon
Цитата(ArtemKAD @ Jul 8 2017, 20:35) *
Ху из "0x1A" - один символ или таки четыре?

Это символ "CTRL+Z"... оправляю так: gsm.print((char)26), и так gsm.write(0x1A) и так gsm.println((char)26) - один пень....
Или где то туплю?

Цитата(serglg @ Jul 9 2017, 05:21) *
я тоже понял, что сетевые функции у SIM800L блокированы.
Единственное, что видно - внутренний адрес от МТС получает и всё.
Никаких эффектов.
Но при этом везде исправно говорит ОК.
Там ниже моя тема про мои попытки подключиться к SMTP-серверу с помощью SIM800L

Спасибо хоть за догадкуsm.gif а то я уж грешить начал на старостьsm.gif Так а как все-же вышли из положения? или так все и осталось не решенным? я тут уже прикупил 800С. попробую на нем. или тоже не вариант? в вашей ветке(только сейчас прочитал к сожалению) - рекомендуют 800Н. Это принципиально? Или С - покроет наши задачи?
serglg
Цитата(DallySon @ Jul 9 2017, 15:17) *
Это символ "CTRL+Z"... оправляю так: gsm.print((char)26), и так gsm.write(0x1A) и так gsm.println((char)26) - один пень....
Или где то туплю?


Спасибо хоть за догадкуsm.gif а то я уж грешить начал на старостьsm.gif Так а как все-же вышли из положения? или так все и осталось не решенным? я тут уже прикупил 800С. попробую на нем. или тоже не вариант? в вашей ветке(только сейчас прочитал к сожалению) - рекомендуют 800Н. Это принципиально? Или С - покроет наши задачи?


Пока не знаю, обещали подогнать как раз 800Н, попробую посмотреть.
Сообщу.

DallySon
Цитата(serglg @ Jul 9 2017, 17:13) *
Пока не знаю, обещали подогнать как раз 800Н, попробую посмотреть.
Сообщу.

Спасибо, бум ждать. Ну а я, получу С - соответственно отпишусь, если интересно.
Alechek
Цитата(serglg @ Jul 9 2017, 10:21) *
я тоже понял, что сетевые функции у SIM800L блокированы.

Ну уж не надо так - ВСЕ.
SMTP, может, и блокировано, но базовый функционал (простая передача данных) вполне неплохо работает!
Уж с год, наверное, один у меня трудится вместо SIM800H. Нареканий нет.
serglg
Цитата(Alechek @ Jul 11 2017, 00:16) *
Ну уж не надо так - ВСЕ.
SMTP, может, и блокировано, но базовый функционал (простая передача данных) вполне неплохо работает!
Уж с год, наверное, один у меня трудится вместо SIM800H. Нареканий нет.


Команда ping работает? У меня на любые запросы - ERROR.
Alechek
Насчет PING не знаю, не пользую.
CADiLO
PING не во всех вариациях и прошивках даже в 800С и 800Н реализован.
Поэтому при покупке уточняйте. Например в SIM800C24 его нет, а в SIM800C32 есть.
serglg
очень вся эта история с версиями SIM800 (в зависимости от буквы) удивляет и напрягает.
Здесь играет, там не играет, тут жирное пятно...
А есть что-то вроде сводной таблицы различий и особенностей всех SIM800 ?
CADiLO
Есть официальные дистрибьюторы по регионам (список на сайте Симком), звоним и выясняем все подробности.
Вам подскажут какой использовать модуль под вашу задачу. А не ходим на Али и покупаем что попало.
DallySon
ну что ж...
Пришел 800С - абсолютно все так же.. Никакой реакции на отправку данных демону.. Дампом пакета даже не просматривается.. Т.е. получается данные модуль не покидают. А чего эта сволочь ждет - не знаю...
отправка выглядит так:

gsm.println("AT+CIPSEND=6");
gsm.print("123456");

или так

gsm.println("AT+CIPSEND");
gsm.print("123456");
gsm.write((char)26); (или же gsm.write(0x1a) )

и опять полная тишина.. ни ошибок ни ответов...
короче литера С - не принесла успеха...
Может все таки дело не в модуле? Вот только в чем тогда?

Все еще надеюсь...
serglg
я тоже надеялся на приход SIM800C в деле отправки почты. :-)
В конечном итоге всё дело оказалось в почтовом сервере и SIM800C с SIM800L работали одинаково.

DallySon
Цитата(serglg @ Aug 1 2017, 05:36) *
я тоже надеялся на приход SIM800C в деле отправки почты. :-)
В конечном итоге всё дело оказалось в почтовом сервере и SIM800C с SIM800L работали одинаково.


а у меня чудеса продолжаются...
Для исключения всяких линуховых проблем с демонами - написал PHP скрипт... для GET запроса..
из браузера - все опять же работает замечательно.. из строки - запрос укладывает в базу передаваемые параметры.
С СИМКОМА же - все заканчивается на установлении связи (это я вижу по дампу на серваке)..
все выглядит как прописано докторами:

AT+SAPBR=3,1,"CONTYPE","GPRS"
AT+SAPBR=3,1,"APN","internet.mts.ru"
AT+SAPBR=3,1,"USER","mts"
AT+SAPBR=3,1,"PWD","mts"
AT+SAPBR=1,1
AT+HTTPINIT
AT+HTTPPARA="CID",1
AT+HTTPPARA="url","http://XXX.ru:2080/scripts/put.php?id_cli=1&id_u=1&typ_mess=0&pow=2.88&val=0"
AT+HTTPACTION=0

и все. висим до появления +HTTPACTION: 0,408,0 - т.е. вываливаемся по таймауту...

самое интересное - пробовал обращаться к публичным серверам и к примерам в инете (например http://alex-exe.ru/radio/wireless/gsm-sim900-gprs/) -
на команду AT+HTTPACTION=0 получаю не +HTTPACTION:0,200,1647 - а
+HTTPACTION: 0,302,0. т.е. получаю не ОК - а FOUND.... тоже самое и с другими публичными серваками...
помогите люди добрые!!!!!... дайте лопату правильную - дабы копать в верном направлении... уж все изрыто - а результата - нет... Т.е. - картина опять же как и в начале данной темы..




Hub
Цитата(DallySon @ Aug 1 2017, 22:59) *
а у меня чудеса продолжаются...
Для исключения всяких линуховых проблем с демонами - написал PHP скрипт... для GET запроса..
из браузера - все опять же работает замечательно.. из строки - запрос укладывает в базу передаваемые параметры.
С СИМКОМА же - все заканчивается на установлении связи (это я вижу по дампу на серваке)..
все выглядит как прописано докторами:

AT+SAPBR=3,1,"CONTYPE","GPRS"
AT+SAPBR=3,1,"APN","internet.mts.ru"
AT+SAPBR=3,1,"USER","mts"
AT+SAPBR=3,1,"PWD","mts"
AT+SAPBR=1,1
AT+HTTPINIT
AT+HTTPPARA="CID",1
AT+HTTPPARA="url","http://XXX.ru:2080/scripts/put.php?id_cli=1&id_u=1&typ_mess=0&pow=2.88&val=0"
AT+HTTPACTION=0

и все. висим до появления +HTTPACTION: 0,408,0 - т.е. вываливаемся по таймауту...

самое интересное - пробовал обращаться к публичным серверам и к примерам в инете (например http://alex-exe.ru/radio/wireless/gsm-sim900-gprs/) -
на команду AT+HTTPACTION=0 получаю не +HTTPACTION:0,200,1647 - а
+HTTPACTION: 0,302,0. т.е. получаю не ОК - а FOUND.... тоже самое и с другими публичными серваками...
помогите люди добрые!!!!!... дайте лопату правильную - дабы копать в верном направлении... уж все изрыто - а результата - нет... Т.е. - картина опять же как и в начале данной темы..

1. какие тайм-ауты между отправками команд?
2. после 'AT+SAPBR=1,1' крайне желательно отправить 'AT+SAPBR=2,1'
3. почему именно SIM800L? почему не SIM800H?
serglg
Цитата(Hub @ Aug 15 2017, 16:21) *
2. после 'AT+SAPBR=1,1' крайне желательно отправить 'AT+SAPBR=2,1'


У меня это было вроде как чисто для себя, когда отлаживал. Но так и оставил в жизни.
А оказывается в этом глубокий смысл?
Hub
Цитата(serglg @ Aug 16 2017, 06:48) *
У меня это было вроде как чисто для себя, когда отлаживал. Но так и оставил в жизни.
А оказывается в этом глубокий смысл?

да, в этом есть определенный смысл
получилось?
serglg
Цитата(Hub @ Aug 17 2017, 13:38) *
да, в этом есть определенный смысл
получилось?


Ну я изначально так и оставил.
DallySon
Цитата(Hub @ Aug 15 2017, 10:21) *
1. какие тайм-ауты между отправками команд?
2. после 'AT+SAPBR=1,1' крайне желательно отправить 'AT+SAPBR=2,1'
3. почему именно SIM800L? почему не SIM800H?



Спасибо - вставлю.

В конечном итоге все закончилось тем, что на следующий день, без каких либо переделок - я включил - все заработало..
на прогоне - две недели.
Отрабатываю процедуру самовосстановления связи.. За это время связь рвалсь неоднократно, но самовостановление - отрабатывает нормально. Был единственный случай - когда почему то не получилось.. Видимо если бы была AT+SAPBR=2,1 - то все и получилось бы и в том случае.

В общем в итоге оставил вариант с HTTP+PHP.

Всем спасибо.
AlexPC1
Modem.println("AT+CIPSEND=0,6");
delay(300); // Ожидаем появления ">"
Modem.print("123456\r\n"); // \r\n = CTRL+Z

Выдержка из мануала:
Command AT+CIPSEND response">", then type data for send, tap CTRL+Z to send.

Тоесть нельзя сразу отправлять данные в модем. Сначала команда, ожидание приглашения на ввод данных ">" потом ввод и CTRL+Z
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.