|
большие пакеты tcp/ip и SIM300D |
|
|
|
Aug 19 2009, 15:23
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 30-10-07
Пользователь №: 31 885

|
Уважаемый all, вот уж не знаю, что и думать с этим модулем, прям засада какая то.... ну по порядку: есть две одинаковые платы с разными модулями: SIMCOM_Ltd SIMCOM_SIM300D Revision:1008B14SIM300D32_SST34HF3284 и SIMCOM_Ltd SIMCOM_SIM300D Revision:1008B10SIM300D32_SPANSION
Модули ведут себя одинаково и так же одинаково с двумя провами - kyivstar и mts
устанавливаю tcp соединение с сервером:
AT+CREG? +CREG: 0,1 OK
AT+CIPCSGP=1,"www.ab.kyivstar.net" OK
AT+CIPHEAD=1 OK
at+cipstatus OK STATE: IP INITIAL
at+cipstart="tcp","ххх.ххх.ххх.ххх","хххх" OK CONNECT OK
at+cipsend=16
>0123456789ABCDEF
SEND OK (данные приходят на сервер)
а потом увеличиваю размер пакета
at+cipsend=160
> 0123456789ABCDEF(х10)
и тишина на вечно... висим...!!!!!! При этом - используется CTS/RTS, в процессе передачи CTS еще не разу не выставлялось в занято (высокий уровень), разводка питания подразумевается правильная, емкости 0,1 + 100uF тантал + 2200uF low ESR + Li-ion аккум + зарядка. PowerKey через полевик от процессора. Микроконтроллер ATmega1280 питается от 3,3В через стабилизатор от аккума.
что может быть??? где копать??? на всяк случай еще привожу настройки профиля для 1008B14SIM300D32_SST34HF3284:
ACTIVE PROFILE E: 0 L: 0 M: 0 Q: 0 V: 1 X: 4 S0: 0 S2: 43 S3: 13 S4: 10 S5: 8 S6: 2 S7: 60 S8: 2 S10: 15 +CRC: 0 +CR: 0 +FCLASS: 0 +IMODE: 0 +DR: 0 +CMGF: 1 +CSDH: 0 +ILRR: 0 +CRLP: 61,61,128,6,0,3 +CMEE: 1 +CBST: 7,0,1 +IFC: 2,2 +ICF: 3,3 +CNMI: 2,1,0,0,0 +CSTA: 129 +CSCS: "IRA" +IPR: 0 +DS: 3,0,512,20 &C: 1 &D: 2 +CCWE: 0 +CDTX: 0 +CTZU: 0 +CTZR: 0 +CV120: 1,1,1,0,0,0 +CEXTHS: 0 +CEXTBUT: 0 +CSMINS: 0 +CMUX: 0 +CCUG: 0,0,0 +CLIP: 1 +COLP: 0 +CCWA: 0 +CAOC: 1 +CLIR: 0 +CUSD: 0 +CSSU: 0 +CSSI: 0 +CDIP: 0 +CSCLK: 0 +CIURC: 1 +SCLASS0: 0 +CSDT: 0 +CMIC: 2,2 +ECHO(NORMAL_AUDIO): 0,0,0 +ECHO(AUX_AUDIO): 0,0,0 +SIDET(NORMAL_AUDIO): 4096 +SIDET(AUX_AUDIO): 4096 +CLCAL: 1 +CCPD: 1 +CMTE: 1 +CSCA: "+380672021111",145 +CSMP: 17,255,0,241
Сообщение отредактировал megaboy - Aug 19 2009, 15:31
|
|
|
|
|
Aug 20 2009, 05:50
|
Местный
  
Группа: Свой
Сообщений: 483
Регистрация: 1-09-06
Из: Гродно РБ
Пользователь №: 20 011

|
Цитата(megaboy @ Aug 19 2009, 18:23)  at+cipstart="tcp","ххх.ххх.ххх.ххх","хххх" OK CONNECT OK
at+cipsend=16
>0123456789ABCDEF
SEND OK (данные приходят на сервер)
а потом увеличиваю размер пакета
at+cipsend=160
> 0123456789ABCDEF(х10)
и тишина на вечно... висим...!!!!!! При этом - используется CTS/RTS, в процессе передачи CTS еще не разу не выставлялось в занято (высокий уровень), разводка питания подразумевается правильная, емкости 0,1 + 100uF тантал + 2200uF low ESR + Li-ion аккум + зарядка. PowerKey через полевик от процессора. Микроконтроллер ATmega1280 питается от 3,3В через стабилизатор от аккума.
что может быть??? где копать??? на всяк случай еще привожу настройки профиля для 1008B14SIM300D32_SST34HF3284: А Вы уверены что отправляете 160 байт в модуль. если хотябы на 1 байт меньше то модуль будет ждать. а что касается второй стороны, то это врятли. попробуйте еще посылать не указывая длину посылки at+cipsend а в конце посылки слать ^Z
|
|
|
|
|
Aug 20 2009, 09:03
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 30-10-07
Пользователь №: 31 885

|
Цитата(M_Z @ Aug 20 2009, 08:50)  А Вы уверены что отправляете 160 байт в модуль. если хотябы на 1 байт меньше то модуль будет ждать. а что касается второй стороны, то это врятли. попробуйте еще посылать не указывая длину посылки at+cipsend а в конце посылки слать ^Z Вы правы, не все данные уходили, оказался баг в софте, счетчик отправки 8 битный был... но заметил еще парочку осбенностей, который возможно будут интересны на будущее. Речь идет о прошивке 1008B14SIM300D32_SST34HF3284. Линия CTS таки не поднималась не разу, сколько б не отправлял пакетов размером около килобайта, т.е. по локальному порту модем вероятно прекрасно справляется с нагрузкой на скорости 57600. Подозреваю, что такое может иметь место для пакетов, размер которых больше заявленного производителем (1460 байт). Еще не всегда сразу приходит SEND OK, при этом данные уже могут быть на сервере, а данный ответ может прийти через секунд 80. Но чаще он таки приходит сразу, в пределах 1-2 сек, поэтому наверно не стоит ориентироваться на этот ответ, как на гарантию доставки. Имхо, надежнее просто время от времени проверять статус для проверки соединения. to av-master На счет прозрачного режима, а как он может помочь, если например параллельно с передачей данных нужно еще отлавливать входящий звонок? В случае с +ipd:XXX можем точно разруливать где данные, а где URC приходят, в прозрачном эта процедура становиться не тривиальной....
Сообщение отредактировал megaboy - Aug 20 2009, 09:06
|
|
|
|
|
Aug 20 2009, 11:38
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 30-10-07
Пользователь №: 31 885

|
to av-master Я так понимаю, вы используете DTR для переключения данные/команды? (&D = 1) а вот что произойдет с входящими данными, если мы временно перешли в командный режим, подняв DTR. Через некоторе время снова переключились на данные, сбросив DTR. При этом мы потеряем данные или они тут же вывалятся? (при условии, что не будет переполнен внутренний буфер модема) Да, и еще тут было замечено Цитата(av-master @ Aug 20 2009, 01:06)  у меня редко проходи 20-ка байтов обычно на 2 -3 куска рвет. приложение потом в кучу собирает. у меня по началу тоже такая байда была, оказалось это на сервере чето подправить надо было в верхнем софте, после этого не было ни одной фрагментации для входящих данных, если пакет не превышает заявленный для модуля максимум.
Сообщение отредактировал megaboy - Aug 20 2009, 11:40
|
|
|
|
|
Aug 25 2009, 15:12
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 30-10-07
Пользователь №: 31 885

|
Сегодня заметил еще один очень неприятный момент с модемом.
at+cipsend=1024 (и менее)
>(получаем приглашение)
at+cipsend=1025 (и более)
ERROR
в доке ж вроде упоминается про 1460 байт, а не 1024... кто нить встречался с этим на практике?
|
|
|
|
|
Aug 26 2009, 08:38
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 30-10-07
Пользователь №: 31 885

|
Хм... Вообще то SIM300_ATC_V2.02.pdf ангельским по белому написано для команды AT+CIPSEND:
Parameter <Length> a numeric parameter which indicates the length of sending data, it must be less then 1460. Note: There are at most 1460 bytes that can be sent each time.
В начале документа в summary для команд еще уточнятеся: 8.2.2 AT+CIPSEND Modified the discription of response in the write command And changed the maximum length from 1024 to 1460
т.к. прошивка у меня относительно новая 1008B14SIM300D32_SST34HF3284, полагал, что этот мануал должен соответствовать железке
Сообщение отредактировал megaboy - Aug 26 2009, 08:46
|
|
|
|
|
Aug 26 2009, 09:11
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 10-11-08
Пользователь №: 41 507

|
Посмотрите внимательно, megaboy, документ "Release Notes" для прошивки 1008B14SIM300D32_SST34HF3284. На странице 3 сказано что при работе с данной прошивкой необходимо руководствоваться следующими документами ("Related documents"), в частности нас интересует "SIM300D AT Command Set, V2.00". А согласно этой версии руководства по AT-командам, для команды AT+CIPSEND максимальный размер посылки ограничивается 1024 байтами.
|
|
|
|
|
Aug 26 2009, 10:12
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 10-11-08
Пользователь №: 41 507

|
Смею поспорить с CADiLO  Может всё-таки длина буфера увеличена до 1460 байт начиная с 15-й версии ? Использую прошивку 1008B14SIM300D32_SST34HF3284. Больше 1024 байт данных отправить за раз не могу, та же ситуация о чём говорил megaboy: Цитата at+cipsend=1024 (и менее) >(получаем приглашение)
at+cipsend=1025 (и более) ERROR Всё таки в 14-й версии ограничение пакета - 1024 байта, тогда как с 15-й версии (судя по документу " SIM300_ATC_V2.01.pdf") максимальный размер пакета увеличен до 1460 байт.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|