реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> SIM900. Прием команд от TCP сервера., Transparent mode или командный режим?
Иван Плетнев
сообщение Apr 25 2014, 04:04
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 12-04-14
Пользователь №: 81 340



Господа!
При разработке устройства с SIM900, которое должно уметь отправлять данные на сервер и получать команды с сервера, опробовал два режима работы:
1. Посылка данных в АТ режиме, командой CIPSEND - приглашение> - данные. В этом режиме при отправке команды с сервера легко нарваться на ситуацию, когда МК ждет ответ от SIM900, а приходит команда с сервера. Но это, в принципе, проблема решаемая.
2. Начал пробовать работу в Transparent mode.

Возник вопрос: Какой режим надежней? Поясню. Если, например в командном режиме ты послал данные, а в ответ не пришел ответ SEND OK, выдерживаешь таймаут и делаешь реконнект. А как в прозрачном режиме получить подтверждение? Только средствами сервера?

То что обмениваться данными в прозрачном режиме гораздо удобней, это факт. Но как с надежностью? Какие у вас мысли на этот счет?
Go to the top of the page
 
+Quote Post
zebrox
сообщение Apr 25 2014, 15:30
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 121
Регистрация: 17-04-09
Пользователь №: 47 838



Цитата(Иван Плетнев @ Apr 25 2014, 06:04) *
...послал данные, а в ответ не пришел ответ SEND OK...

На сколько я знаю, еще не значит, что команда дошла до сервера.
После отправки сообщения серверу жду от него подтверждения приема.
Если после трех попыток передачи его нет, делаю реконнект.
Командный режим удобнее, т.к. сим продолжает выдавать сообщения о входящих звонках, смсах, уровне сигнала, наличии регистрации.
В прозрачном режиме надо мониторить пин ри, думаю это неудобно.
Go to the top of the page
 
+Quote Post
Иван Плетнев
сообщение Apr 25 2014, 19:02
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 12-04-14
Пользователь №: 81 340



Цитата(zebrox @ Apr 25 2014, 23:30) *
На сколько я знаю, еще не значит, что команда дошла до сервера.
После отправки сообщения серверу жду от него подтверждения приема.
Если после трех попыток передачи его нет, делаю реконнект.
Командный режим удобнее, т.к. сим продолжает выдавать сообщения о входящих звонках, смсах, уровне сигнала, наличии регистрации.
В прозрачном режиме надо мониторить пин ри, думаю это неудобно.


Если мы говорим про TCP (не UDP) то SEND OK как раз значит, что команда дошла до сервера, потому что это на самом деле - подтверждение ACK (Acknowledge), формируемое на сервере средствами TCP протокола. Бывает, что команда до сервера дошла, а SEND OK нет. Но наоборот быть не может. Если UDP, то действительно, SEND OK просто говорит о факте отправки, потому что в UDP подтверждение не предусмотрено.

Сообщение отредактировал Иван Плетнев - Apr 25 2014, 19:03
Go to the top of the page
 
+Quote Post
ssokol
сообщение Apr 25 2014, 19:06
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 615
Регистрация: 14-02-08
Из: г. Рыбинск, Ярославская область
Пользователь №: 35 028



Цитата(Иван Плетнев @ Apr 25 2014, 23:02) *
Если мы говорим про TCP (не UDP) то SEND OK как раз значит, что команда дошла до сервера, потому что это на самом деле - подтверждение ACK (Acknowledge), формируемое на сервере средствами TCP протокола. Бывает, что команда до сервера дошла, а SEND OK нет. Но наоборот быть не может. Если UDP, то действительно, SEND OK просто говорит о факте отправки, потому что в UDP подтверждение не предусмотрено.

zebrox вам правильно сказал, я это подтверждаю, просто поверьте наслово.
Go to the top of the page
 
+Quote Post
Alechek
сообщение Apr 28 2014, 06:52
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Странно, конечно...
Цитата(SIM900_AT Command Manual_V1.08.pdf)
8.2.4 AT+CIPQSEND Select Data Transmitting Mode

Write Command
AT+CIPQSEND =<n>

Parameter <n>
0 Normal mode – when the server receives TCP data, it will
responsd SEND OK.
1 Quick send mode – when the data is sent to module, it will
responsd DATA ACCEPT: <n>,<length>, while not
responding SEND OK.
Go to the top of the page
 
+Quote Post
eta-sys
сообщение Jun 21 2014, 10:35
Сообщение #6





Группа: Участник
Сообщений: 9
Регистрация: 24-05-12
Пользователь №: 71 985



Цитата(Alechek @ Apr 28 2014, 09:52) *
Странно, конечно...


Дело в том, что по GPRS данние не посилаються в чистом TCP пакете, а дополнително запакуються в PDP. Таким образом TCP не являеться PPP (поинт-то-поинт), а какби через Proxy сервера у поставчика GSM усуги. Когда данние посилаете, GSM впервую очередь передает заявку на обем данниь которие хочеть послать, получает потверждение на обем, которой ему предоставляеться и передает не более чем указано. GSM получеть квитанцию на успешно принятих данние. Потом снова и снова до передачи всех данних. Так SEND OK приходить если все данние приняти в Proxy у поставчика успешно. Потом данние пакируют в стандартний TCP и отпавляют по NET к нужному IP. Потом обратно.
Для того, чтоби гарантировать что данние прошли успешно, нужно дальний IP потвердит принятие данних обратним пакетом.
Go to the top of the page
 
+Quote Post
Alechek
сообщение Jun 23 2014, 05:28
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Да, я эту особенность заметил еще во времена SIM300. Поэтому от TCP отказался, ибо какой смысл городить свою надстройку над TCP, если есть UDP.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th August 2025 - 22:24
Рейтинг@Mail.ru


Страница сгенерированна за 0.01414 секунд с 7
ELECTRONIX ©2004-2016