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

 
 
 
Reply to this topicStart new topic
> вопросы чайника по TCP-IP стеку SIM300, объясните, pls ?
rx3apf
сообщение Oct 3 2009, 20:37
Сообщение #1


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



1. В чем суть команды at+cgdcont= и нужно ли ее использовать при работе посредством собственного стека ? Вопрос возник потому, что я обнаружил, что в настройках моего мобильного GPRS для телефона эта команда не была прописана в дополнительных параметрах и я лишь случайно это обнаружил (хотя скопировать в настройки SIM300) - и все работало. Аналогично, при работе с SIM300 тоже работает и без нее, хоть по atd*99, хоть через внутренний стек. Но один раз я ее использовал... Она нужна ? Она нужна, но не всем (в данном случае МТС) ? Она нужна хотя бы один раз для конкретного IMEI и где-то у оператора запоминается на какое-то время ?

2. Аналогично, at+ciicr. Я никак не мог запустить сессию, не понимая в чем причина (вроде все ж ошибка 6). Стал смотреть примеры, дал at+cgdcont - не помогло. at+ciicr - помогло. А потом стало и без нее работать, довольно много раз. А потом как-то опять вылезла ошибка 6. Так вот, что делает at+ciicr, и почему потом работает и без нее ?

3. Открываю сессию udp, посылаю пакеты (на другом конце простенькая заглушка, возвращает эхо), вижу ответы. Посылаю с интервалом в минуту - работает. Две минуты - работает. Где-то три - туда дуй... В смысле, получатель пакеты получает, эхо отправляет, но до модема они не доходят. at+cipclose не помогает, требуется at+cipshut. Это оператор такое делает ? Время зависит от настроек у оператора ? Чтобы жило, дергать чаще ? А когда я делаю at+cipshut, сессия закрывается и тарифицируется до полных 40 кило или сколько там у кого ?)

4. Открываю TCP-сессию, открытие срывается (connection failed), по таймауту. Состояние почему-то остается connecting, и повторное открытие дает ошибку, нужен close или shut. Почему оно само не переходит в IP INITIAL ?
Go to the top of the page
 
+Quote Post
HARMHARM
сообщение Oct 4 2009, 05:01
Сообщение #2


читатель даташитов
****

Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999



Цитата(rx3apf @ Oct 3 2009, 23:37) *
1. В чем суть команды at+cgdcont= и нужно ли ее использовать при работе посредством собственного стека ? Вопрос возник потому, что я обнаружил, что в настройках моего мобильного GPRS для телефона эта команда не была прописана в дополнительных параметрах и я лишь случайно это обнаружил (хотя скопировать в настройки SIM300) - и все работало. Аналогично, при работе с SIM300 тоже работает и без нее, хоть по atd*99, хоть через внутренний стек. Но один раз я ее использовал... Она нужна ? Она нужна, но не всем (в данном случае МТС) ? Она нужна хотя бы один раз для конкретного IMEI и где-то у оператора запоминается на какое-то время ?

Сейчас у операторов стало популярно ставить APN="internet", USER и PASSWORD в "". Может быть, что в модеме по умолчанию те же параметры.
По моим данным:
Код
TGprsParams GprsParams[] =
{
    { "25501", "internet", "", ""},                   // MTS
    { "25502", "internet.beeline.ua", "", ""},        // Beeline
    { "25503", "www.kyivstar.net", "", ""},           // Kyivstar
    { "25506", "internet", "", ""}                   // life:)
};

У MTC кажись припейд отличается. На Киевстаре без "at+cgdcont" не работает ни с SIM300, ни с мобильного.

Цитата
2. Аналогично, at+ciicr. Я никак не мог запустить сессию, не понимая в чем причина (вроде все ж ошибка 6). Стал смотреть примеры, дал at+cgdcont - не помогло. at+ciicr - помогло. А потом стало и без нее работать, довольно много раз. А потом как-то опять вылезла ошибка 6. Так вот, что делает at+ciicr, и почему потом работает и без нее ?

Потому что можно прямо делать +CIPSTART. Эта команда включает в себя и +CIICR. У меня тоже появлялась ошибка 6, но не помню про неё ничего уже.

Цитата
3. Открываю сессию udp, посылаю пакеты (на другом конце простенькая заглушка, возвращает эхо), вижу ответы. Посылаю с интервалом в минуту - работает. Две минуты - работает. Где-то три - туда дуй... В смысле, получатель пакеты получает, эхо отправляет, но до модема они не доходят. at+cipclose не помогает, требуется at+cipshut. Это оператор такое делает ? Время зависит от настроек у оператора ? Чтобы жило, дергать чаще ? А когда я делаю at+cipshut, сессия закрывается и тарифицируется до полных 40 кило или сколько там у кого ?)

Я использую TCP сессии. При простое примерно 5 минут соединение закрывается, причем не сервером. В итоге на Киевстаре кипалайв раз 3 минуты, и всё работает. С UDP не пробовал.
Go to the top of the page
 
+Quote Post
Master of Nature
сообщение Oct 5 2009, 11:42
Сообщение #3


Мыслящий
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 20-07-07
Из: Самара
Пользователь №: 29 270



Цитата(rx3apf @ Oct 4 2009, 01:37) *
1. В чем суть команды at+cgdcont= и нужно ли ее использовать при работе посредством собственного стека ? Вопрос возник потому, что я обнаружил, что в настройках моего мобильного GPRS для телефона эта команда не была прописана в дополнительных параметрах и я лишь случайно это обнаружил (хотя скопировать в настройки SIM300) - и все работало. Аналогично, при работе с SIM300 тоже работает и без нее, хоть по atd*99, хоть через внутренний стек. Но один раз я ее использовал... Она нужна ? Она нужна, но не всем (в данном случае МТС) ? Она нужна хотя бы один раз для конкретного IMEI и где-то у оператора запоминается на какое-то время ?

AT+CGDCONT=<cid>,"IP,"<apn>" задает точку доступа
причем <cid> номер конкретной настройки внутри модема.
при вызове по команде ATD*99***<cid># устанавливается GPRS соединение с указанными настройками.
количество настроек (диапазон <cid>) можно посмотреть по AT+CGDCONT=?
Если данная настройка записана в памяти модуля, то повторная команда не нужна.
Возможно проблема возникает при смене оператора, т.к. для другого оператора требуется другая настройка.

Цитата(rx3apf @ Oct 4 2009, 01:37) *
2. Аналогично, at+ciicr. Я никак не мог запустить сессию, не понимая в чем причина (вроде все ж ошибка 6). Стал смотреть примеры, дал at+cgdcont - не помогло. at+ciicr - помогло. А потом стало и без нее работать, довольно много раз. А потом как-то опять вылезла ошибка 6. Так вот, что делает at+ciicr, и почему потом работает и без нее ?


Для внутреннего стека лучше пользоваться командой AT+CSTT=<apn>,<user>,<pwd>


--------------------
FAQ по AD
Форум по AD
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью.
...стоит запомнить ...вернее задуматься.
Go to the top of the page
 
+Quote Post
stream
сообщение Oct 6 2009, 10:05
Сообщение #4


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

Группа: Участник
Сообщений: 142
Регистрация: 20-08-07
Из: Тула
Пользователь №: 29 919



Цитата(rx3apf @ Oct 4 2009, 00:37) *
1. В чем суть команды at+cgdcont= и нужно ли ее использовать при работе посредством собственного стека ?
Точка доступа в инет. Оператор может делать разные точки доступа для разных способов. Например, для realIp у МТС - отдельная точка.

Цитата
Она нужна, но не всем (в данном случае МТС) ?
Зависит от оператора, в МТС - необязательна (если тебе нужен "обычный" интернет"), а вот в билайне без точного указания точки доступа, имени и пароля не работало.

Цитата
Она нужна хотя бы один раз для конкретного IMEI и где-то у оператора запоминается на какое-то время ?
Она нужна каждый раз при открытии GPRS-сессии, когда тебе присваивается IP-адрес. Запоминается в модеме до перезагрузки.

Цитата
3. Открываю сессию udp, посылаю пакеты (на другом конце простенькая заглушка, возвращает эхо), вижу ответы. Посылаю с интервалом в минуту - работает. Две минуты - работает. Где-то три - туда дуй... В смысле, получатель пакеты получает, эхо отправляет, но до модема они не доходят. at+cipclose не помогает, требуется at+cipshut. Это оператор такое делает ? Время зависит от настроек у оператора ? Чтобы жило, дергать чаще ? А когда я делаю at+cipshut, сессия закрывается и тарифицируется до полных 40 кило или сколько там у кого ?)

Настройка NAT у оператора - мутная вода, на которую мы влиять не можем. У всех свои тараканы. В данном случае в NAT оператора тебе открывают UDP-forwaring. А когда его закрывать? В идеале - по таймауту от последнего прошедшего через него пакета. А в реале все пучит и колбасит.
Я надеюсь, для ответа-эха ты всегда берешь адрес и порт из пришедшего пакета?

Цитата
4. Открываю TCP-сессию, открытие срывается (connection failed), по таймауту. Состояние почему-то остается connecting, и повторное открытие дает ошибку, нужен close или shut. Почему оно само не переходит в IP INITIAL ?

Патамушта SIM300 так написана.
Go to the top of the page
 
+Quote Post
Baser
сообщение Oct 6 2009, 19:42
Сообщение #5


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(rx3apf @ Oct 3 2009, 23:37) *
1. В чем суть команды at+cgdcont= и нужно ли ее использовать при работе посредством собственного стека ?

Само описание команды см. ответ Master of Nature

Ставил в свое время эксперименты, которые показали, что внутренний стек модема не использует значения переменных, которые задаются этой командой. То есть их можно программировать, они запоминаются, но применяются только при работе через ATD*99***<cid>#

При использовании внутреннего стека нужно задавать APN командами AT+CIPCSGP= или AT+CSTT= (на выбор), иначе не работает.
Я применяю AT+CIPCSGP= и AT+CIPSTART=
Проверено в GSM сетях нескольких стран - проблем не наблюдалось...
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Oct 7 2009, 19:08
Сообщение #6


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Всем спасибо за ответы, буду переваривать и думать. Потом еще спрошу wink.gif

Цитата(HARMHARM @ Oct 4 2009, 09:01) *
Потому что можно прямо делать +CIPSTART. Эта команда включает в себя и +CIICR. У меня тоже появлялась ошибка 6, но не помню про неё ничего уже.

Вот по моим ощущением +CIPSTART не включает в себя +CIICR. Потому как раз двадцать самыми разными вариантами давал +CIPSTART, и в ответ все "ERROR". А как дал +CIICR - заработало. Воспроизводимость ситуации, к сожалению, очень низкая - потом долго работало и без этого. Повторилось только один раз, и опять же - несколько раз +CIPSTART давал.


Цитата(stream @ Oct 6 2009, 14:05) *
Она нужна каждый раз при открытии GPRS-сессии, когда тебе присваивается IP-адрес. Запоминается в модеме до перезагрузки.

Независимо от того, пользуюсь ли я atd*99 или встроенным стеком ? Если МТС-у она не нужна, то, значит, я пока сам проверить и не могу, а знать надо бы...
Цитата
Я надеюсь, для ответа-эха ты всегда берешь адрес и порт из пришедшего пакета?

Вероятно да. Я не сам писал (для PC, на ЯВУ я ничего не пишу), взял TCP-COM, настроил на бридж реального COM, закоротил RxD с TxD - вот и эхо... Учитывая воспроизводимость картины, даже лениво анализатором пакетов смотреть, на какой адрес и порт уходит...


Цитата(Baser @ Oct 6 2009, 23:42) *
При использовании внутреннего стека нужно задавать APN командами AT+CIPCSGP= или AT+CSTT= (на выбор), иначе не работает.

Вот теперь что-то прояснилось. Хотя непонятно, почему и без них заработало - может быть, потому, что МТС более снисходительно относится к наличию/отсутствия этих данных...
Go to the top of the page
 
+Quote Post
Master of Nature
сообщение Oct 8 2009, 04:39
Сообщение #7


Мыслящий
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 20-07-07
Из: Самара
Пользователь №: 29 270



Цитата(rx3apf @ Oct 8 2009, 00:08) *
Независимо от того, пользуюсь ли я atd*99 или встроенным стеком ? Если МТС-у она не нужна, то, значит, я пока сам проверить и не могу, а знать надо бы...

Вообще-то при использовании встроенного стека используется другая команда для настройки точки доступа.
+CGDCONT - стандартная команда по спецификации GPRS
ATD*99# - тоже - доступ согласно стандарту
+CIPxxxxx - команды чисто симкомовские, в стандартах не упомянутые


--------------------
FAQ по AD
Форум по AD
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью.
...стоит запомнить ...вернее задуматься.
Go to the top of the page
 
+Quote Post
kyson
сообщение Oct 8 2009, 05:48
Сообщение #8





Группа: Новичок
Сообщений: 2
Регистрация: 7-10-09
Пользователь №: 52 806



Доброе время суток! У кого-нибудь получалось передавать и принимать бинарные данные через TCP стек. Есть проблема при получении бинарных данных. В ответе модема съедаются нули. Причем, если включить печать заголовка пакета, то длина пакета указывается с учетом нулей.
Go to the top of the page
 
+Quote Post
Master of Nature
сообщение Oct 8 2009, 06:27
Сообщение #9


Мыслящий
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 20-07-07
Из: Самара
Пользователь №: 29 270



Цитата(kyson @ Oct 8 2009, 10:48) *
Доброе время суток! У кого-нибудь получалось передавать и принимать бинарные данные через TCP стек. Есть проблема при получении бинарных данных. В ответе модема съедаются нули. Причем, если включить печать заголовка пакета, то длина пакета указывается с учетом нулей.

Подозреваю что проблема не в модеме, а в программе.
Просмотрите код внимательно, возможно вы их (нули) сами пропускаете.


--------------------
FAQ по AD
Форум по AD
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью.
...стоит запомнить ...вернее задуматься.
Go to the top of the page
 
+Quote Post
kyson
сообщение Oct 9 2009, 11:58
Сообщение #10





Группа: Новичок
Сообщений: 2
Регистрация: 7-10-09
Пользователь №: 52 806



Цитата(Master of Nature @ Oct 8 2009, 11:27) *
Подозреваю что проблема не в модеме, а в программе.
Просмотрите код внимательно, возможно вы их (нули) сами пропускаете.


СПасибо! Действительно, так и оказалось. Программа, которая использовалась для тестов
собрана на компоненте TComPort, а он использовал событие OnRxChar, для получения данных с порта.
Почемуто-то в этом компопоненте не работает событие OnRxBuf. sad.gif
При использовани функций WinApi нули стали приходить.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 26th July 2025 - 03:02
Рейтинг@Mail.ru


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