|
|
  |
SIM900. Прием команд от TCP сервера., Transparent mode или командный режим? |
|
|
|
Apr 25 2014, 04:04
|
Участник

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

|
Господа! При разработке устройства с SIM900, которое должно уметь отправлять данные на сервер и получать команды с сервера, опробовал два режима работы: 1. Посылка данных в АТ режиме, командой CIPSEND - приглашение> - данные. В этом режиме при отправке команды с сервера легко нарваться на ситуацию, когда МК ждет ответ от SIM900, а приходит команда с сервера. Но это, в принципе, проблема решаемая. 2. Начал пробовать работу в Transparent mode.
Возник вопрос: Какой режим надежней? Поясню. Если, например в командном режиме ты послал данные, а в ответ не пришел ответ SEND OK, выдерживаешь таймаут и делаешь реконнект. А как в прозрачном режиме получить подтверждение? Только средствами сервера?
То что обмениваться данными в прозрачном режиме гораздо удобней, это факт. Но как с надежностью? Какие у вас мысли на этот счет?
|
|
|
|
|
Apr 25 2014, 15:30
|
Частый гость
 
Группа: Участник
Сообщений: 121
Регистрация: 17-04-09
Пользователь №: 47 838

|
Цитата(Иван Плетнев @ Apr 25 2014, 06:04)  ...послал данные, а в ответ не пришел ответ SEND OK... На сколько я знаю, еще не значит, что команда дошла до сервера. После отправки сообщения серверу жду от него подтверждения приема. Если после трех попыток передачи его нет, делаю реконнект. Командный режим удобнее, т.к. сим продолжает выдавать сообщения о входящих звонках, смсах, уровне сигнала, наличии регистрации. В прозрачном режиме надо мониторить пин ри, думаю это неудобно.
|
|
|
|
|
Apr 25 2014, 19:02
|
Участник

Группа: Участник
Сообщений: 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
|
|
|
|
|
Apr 25 2014, 19:06
|
Знающий
   
Группа: Свой
Сообщений: 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 вам правильно сказал, я это подтверждаю, просто поверьте наслово.
|
|
|
|
|
Jun 21 2014, 10:35
|
Группа: Участник
Сообщений: 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 потвердит принятие данних обратним пакетом.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|