Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Склеиваются UDP пакеты
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
Страницы: 1, 2
butthead2
Цитата(smalcom @ Dec 1 2016, 03:00) *
хотите научить - учите. поучать не надо. был конкретный вопрос и очень важный,

ТС ответ получил, неоднократно и от разных участников и под разным ракурсом. В том числе как от проблемы избавиться. Дальше тут обсуждать нечего.
Считать поучениями или чем то другим это ваше право.

Цитата(smalcom @ Dec 1 2016, 00:42) *
вы даже не видите того, что не увидели.

Интересная логическая конструкция, я в замешательстве.
Я вижу редкие вкрапления толковых постов по теме + три страницы обсасывания особенностей протокола UDP.
Знакомое слово "UDP", понеслась! Кривая реализация стека, ату его ату!

Цитата(smalcom @ Dec 1 2016, 00:42) *
не то, что неинтересно, а нудно и расстраивает. если интересно - читайте ветку по новой, конспектируйте.

Понятно, ответа нет. Вы и вопрос скорее всего не читали, к ветке он не относится.

smalcom
Цитата
Так и не понял из-за чего сыр-бор развели. С UDP я никгда не работал

спец
Daniil
Цитата
У него аппаратное управление потоком и какая-то программулька на ПК

"Программулька" не на ПК, с модемом работает микроконтроллер, но не думаю что это что-то меняет.

Цитата
Может он RTS/CTS'ом не умеет пользоваться, может CIPRXGET вызывает раз в час. Т.е. доказательств отсутствия ошибки ТСа нет. Развели балаган. Книжки читайте, да хоть вики.

RTS/CTS'ом пользоваться умею, пробовал временно отключать, ситуация та же.
Принятый пакет ловлю по URC, кроме того идет постоянный вызов CIPRXGET с небольшим (снижал до 1сек) интервалом (на случай если вдруг что пропустил). Помимо всего прочего, я смотрел напрямую данные с модема на ПК (пока он общается с контроллером), URC реально не приходит. Логи пока предоставить не могу, по техническим причинам.

Цитата
Затуп у него 99% в протоколе - рассчет на то что пакеты будут приходить по отдельности и данные будут вылезать такими же порциями, где порция = данные строго одного пакета. Сидит и перекраивает. Или свой стек поднимает.

Тогда затупы в протоколах почти у всех, кто использует любые протоколы поверх UDP через встроенный стек модема.

2 smalcom
Я правильно понимаю, что вы пытаетесь сказать что проблема у меня, а модем работает как положено, выдавая все принятые данные по UDP одним потоком, как в TCP?
Alechek
Цитата(smalcom @ Dec 1 2016, 02:42) *
это когда чукча не читатель, а писатель, то ничего не понятно. А если открыть AT_Command_Manual и сложить буквы в слова, то сразу становится понятно, что делает эта команда.

Вот тут попрошу без оскорблений. Мне наср@ать что делает эта команда. Но из названия следует, что модем при использовании этой команды все-таки работает с пакетами. И ее описание дальнейшее этому не противоречит.

Daniil, настойки модема скажите. А то тут клавиатуру скоро все сломают smile3046.gif и в рукопашную перейдут smile3009.gif !
Достаточно команды AT+CIPSCONT? после всех инициализаций.
smalcom
Цитата
Я правильно понимаю, что вы пытаетесь сказать что проблема у меня, а модем работает как положено, выдавая все принятые данные по UDP одним потоком, как в TCP?

вы начали предложение правильно, а закончили нет. я хочу сказать, что ошибка у вас в программе и из-за этого модем себя так ведёт как вы наблюдаете. хотелось бы посмотреть журнал обмена.

ведь для
Цитата
идет постоянный вызов CIPRXGET

тоже надо настраивать модем. А как вы его настраиваете неизвестно - нет журнала.

--------
Цитата
Мне наср@ать что делает эта команда.

ну, а в дискуссии надо участвовать без дефекации. и это ваше недержание реальная проблема, судя по вашим проблемам с модемом в соседник ветках.
Daniil
2 Alechek
Код
AT+CIPSCONT?
+CIPSCONT: 1
+CIPCSGP: 1
Gprs Config APN: internet.mts.ru
Gprs Config UserId: mts
Gprs Config Password: mts
+CIPHEAD: 0
+CIPSHOWTP: 0
+CIPSRIP: 0
+CIPATS: 0,0
+CIPSPRT: 1,0
+CIPQSEND: 0
+CIPMODE: 0
+CIPCCFG: 5,2,1024,1,0,1460,50
+CIPMUX: 1
+CIPDPDP: 1,10,3
+CIPRXGET: 1
+CIPRDTIMER: 2000,3500


Цитата
тоже надо настраивать модем. А как вы его настраиваете неизвестно - нет журнала

В чем там настройка? Автоматчиеский / ручной режим приема, другого я не вижу (я про CIPRXGET).
Журнал модема мне пока недоступен, т.к. модем физически далеко. Доступна только отладочная консоль.
Есть инициализация из старого лога, особо ничего не менял.
Код
AT
OK
AT+CSMINS?
+CSMINS: 0,1

OK
ATE1
OK
AT+IFC=2,2
OK
AT+CFUN=1
OK

+CPIN: READY
AT+CPIN?
+CPIN: READY

OK
AT+GSMBUSY=1
OK
AT+CREG?
+CREG: 0,2

OK
AT+CREG?
+CREG: 0,2

OK

Call Ready
AT+CREG?
+CREG: 0,2

OK

SMS Ready
AT+CREG?
+CREG: 0,1

OK
AT+CGATT?
+CGATT: 0

OK
AT+CGATT?
+CGATT: 1

OK
AT+CIPRXGET=1
OK
AT+CIPMUX=1
OK
AT+SAPBR=3,1,"CONTYPE","GPRS"
OK
AT+CSTT="internet.mts.ru","mts","mts"
OK
AT+SAPBR=3,1,"APN","internet.mts.ru"
OK
AT+SAPBR=3,1,"USER","mts"
OK
AT+SAPBR=3,1,"PWD","mts"
OK
AT+CIICR
OK
Alechek
Daniil, вариантов я вижу 3:

1. Действительно ли надо вручную выгребать данные? Попробуйте работать с +CIPRXGET=0. При заборе данных в ручном режиме никаких упоминаний про пакеты нет.
2. Установите +CIPHEAD=1
3. Попробуйте работать без режима мультиплексора +CIPMUX=0

В Вашем случае и с Вашими настройками вполне допускаю, что пакеты в данные склеивает модем.
Daniil
Цитата(Alechek @ Dec 1 2016, 20:07) *
Daniil, вариантов я вижу 3:

1. Действительно ли надо вручную выгребать данные? Попробуйте работать с +CIPRXGET=0. При заборе данных в ручном режиме никаких упоминаний про пакеты нет.
2. Установите +CIPHEAD=1
3. Попробуйте работать без режима мультиплексора +CIPMUX=0

В Вашем случае и с Вашими настройками вполне допускаю, что пакеты в данные склеивает модем.


1. Прямой необходимости нет, просто это позволяет контролировать максимальный объем принимаемых данных. Но при возможности проверю, спасибо.
2. Проверял, не помогает. Адрес и порт один и тот же.
3. Не могу, у меня в будущем ожидается 2 соединения.
Alechek
Цитата(Daniil @ Dec 1 2016, 18:34) *
1. Прямой необходимости нет, просто это позволяет контролировать максимальный объем принимаемых данных.

При IPHEAD=1 (чтобы узнать длину) и аппаратном управлении потоком в таком контроле максимального объема нет необходимости.
Daniil
Цитата(Alechek @ Dec 1 2016, 20:42) *
При IPHEAD=1 (чтобы узнать длину) и аппаратном управлении потоком в таком контроле максимального объема нет необходимости.

Я понимаю, просто изначально концепция была такая. Может быть пошел в неверном направлении...
В любом случае - спасибо за идею sm.gif
smalcom
Цитата
Журнал модема мне пока недоступен, т.к. модем физически далеко.

не отладочный журнал. Журнал обмена с модемом, вы же последовательный порт используете? Вот журнал обмена через порт.
butthead2
Цитата(smalcom @ Dec 1 2016, 04:21) *
спец

И это говорит человек который в этом топике не выдал ни одной фразы по теме. И даже не пытался понять в чем проблема.
Лучше уж помолчите и не уводите ТС в ненужную ему сторону
smalcom
Цитата
фразы по теме

вы уже показали, что ваша тема отлична от темы ветки, потому ничего и не видно вам.

у меня есть доказательства того поведения модема, что я озвучил - диаграммы обмена с модемом. А у вас кроме балабольства что-то есть?
butthead2
Цитата(smalcom @ Dec 1 2016, 19:52) *
у меня есть доказательства того поведения модема, что я озвучил - диаграммы обмена с модемом. А у вас кроме балабольства что-то есть?

Фейспалмsad.gif
Даже стало интересно, какие же это у вас доказательства которые уличают во вранье документацию на модем и соответственно меня тоже. Ах да, меня еще и в попутно в балабольстве.
С вопросом по сокетам уже слились, так не откажите в удовольствии посмотреть хоть эти доказательства

пс. Или хотя бы доказательства склеивания пакетов. Не пользовательских данных на выходе а именно пакетов
CADiLO
Так - "мальчики-девочки" - срач прекращаем. Рассказываю. Нервы потратил, ответ получил.

Модем действительно в буфер принимает поток as-is. Он не клеит, а просто заполняет буфер тем что пришло от оператора.

Как пришло - так и получите. Представьте сквозной канал с FIFO - это оно и есть.

И если данные слепились - вопрос не к Симкому а к писателям RTOS.

СТЕК ЛИЦЕНЗИОННЫЙ !!! и Симком там менять ничего не может - как МТК написало, так и работает.

Дополнение:

На уровне ЕАТ есть точки входа в API от РРР и выше - кто хочет поменять алгоритм, может воспользоваться.
Хоть свой стек рисуйте.

Alechek
Цитата(CADiLO @ Dec 3 2016, 00:29) *
СТЕК ЛИЦЕНЗИОННЫЙ !!! и Симком там менять ничего не может - как МТК написало, так и работает.

Вот это новость! blink.gif Мое мировоззрение опять меняется...
Правда, непонятно, причем здесь МТК? А как же SIM300-SIM900? Там тоже Медиатек подсобил? 01.gif
Я так понимаю, стек у Симкома лицензионный и одинаков для всех их модулей. Не будут же они несколько лицензий покупать...
Так что вопрос все-таки к Симкому. В названии команды IPHEAD слово "пакет" присутствует.
Опять таки, AT+CIPSRIP Show Remote IP Address and Port When Received Data , что, для всех входящих пакетов, даже с разных адресов:портов одна очередь пользовательских данных?
Что-то тут недоговорено....
smalcom
Цитата
Фейспалм

У вас проблема на нейронном уровне. Вероятно, что у вас в кармане даже фото жены имеется, чтобы не забыть. Хотя, судя по созданным темам - там фото родителей.
Учитывая сию печальную болезнь могу подытожить, что до того уровня где я бы слился вам ещё столько учиться, что врядли столько проживёте.
Alechek
Цитата(smalcom @ Dec 3 2016, 12:28) *
что до того уровня где я бы слился вам ещё столько учиться, что врядли столько проживёте.

smalcom, все уже давно поняли, что Вы самый знающий.
Только умный не станет так засорять тему. Остыньте.

Кстати, CADiLO, я правиьно понял, что если UDP пакеты от оператора пришли в нарушенном порядке, то так они кучей данных в этом нарушенном порядке и вывалятся?
smalcom
Цитата
smalcom, все уже давно поняли, что Вы самый знающий.

я такого не говорил. видимо вы компаньоны или партнёры, или как там у вас это называется.
ArtemKAD
Цитата(Alechek @ Dec 3 2016, 08:26) *
Вот это новость! blink.gif Мое мировоззрение опять меняется...
Правда, непонятно, причем здесь МТК? А как же SIM300-SIM900? Там тоже Медиатек подсобил? 01.gif


Это все оттого, что Вы историю компании SimCom не знаете. У них всегда были стеки сторонних производителей. На Sim100/300 от Motorola или точнее TTPCom. Собственно изначально модули стали результатом сотрудничества TTPCom, AD и Sim Technology.
Alechek
Не буду спорить, что не знаю всех подробностей.
Вот только по поим представлениям, АТ интерфейс - это пользовательская надстройка над ОС, на которой работает чипсет модуля. И встроенный в модуль PPP/TCP/IP/FTP/HTTP - тоже пользовательская надстройка. Пусть лицензированная.
Так причем здесь Медиатек с его ОС? Он писал AT интерфейс? В т.ч. и чисто Симкомовские команды?

Конечный вопрос стоит так: отличается ли внешнее поведение по работе с данными, пересылаемыми посредством встроенного TCPIP стека модулей SIM300-SIM900-SIM800 в части их разбиения-объединения?

Так как у нас транспорт поверх UDP писан из расчета, что передача будет идти пакетами. Если 2 раза вызвал +CIPSEND, значит и придет 2 пакета, пускай в другом порядке, но 2. И в обратку, если сервер послал 2 пакета, у меня возникнет 2 раза +IPD URC.
C SIM300-SIM900 все отлажено. Подвохи от 800-й серии постоянно жду....
Baser
Цитата(Alechek @ Dec 3 2016, 08:26) *
В названии команды IPHEAD слово "пакет" присутствует.
Опять таки, AT+CIPSRIP Show Remote IP Address and Port When Received Data , что, для всех входящих пакетов, даже с разных адресов:портов одна очередь пользовательских данных?
Что-то тут недоговорено....

Естественно, для каждого соединения свой приемный буфер.
Но: UART -то один, поэтому если вы не удосужились применить ни одну из команд
AT+CIPHEAD=1
AT+CIPSRIP=1
то, при наличии нескольких соединений и автоматической выдаче данных в порт,
пришедшие с разных соединений данные будут вываливаться поочередно в этот порт, и у вас не будет возможности их различить.
А если заголовки включены, то каждая порция данных из отдельного соединения будет иметь свой заголовок включая длину данных.

Вообще, хоть документация не сильно подробная, но она все же есть, и в ней достаточно информации.
Посмотрите например: SIM800 Series_TCPIP_Application Note

Цитата(Alechek @ Dec 3 2016, 10:21) *
я правиьно понял, что если UDP пакеты от оператора пришли в нарушенном порядке, то так они кучей данных в этом нарушенном порядке и вывалятся?

Сомневаюсь, что стек модема будет заниматься перекладыванием входных пакетов по их порядковым номерам...

Цитата(Alechek @ Dec 3 2016, 14:27) *
И в обратку, если сервер послал 2 пакета, у меня возникнет 2 раза +IPD URC.

А вот на это точно не нужно рассчитывать.
Тем более, что вопрос топикстартера как раз и описывал ситуацию, когда +IPD URC одно на несколько пришедших почти одновременно пакетов.
Alechek
Цитата(Baser @ Dec 3 2016, 22:51) *
А вот на это точно не нужно рассчитывать.
Тем более, что вопрос топикстартера как раз и описывал ситуацию, когда +IPD URC одно на несколько пришедших почти одновременно пакетов.

Во-первых, все расчитывалось во времена SIM300. Там работало.
Во вторых, пока что все вилами на воде. И китайцы могли не так понять Эдуарда, и он их... Так как после его ответа все равно остались вопросы.


Цитата(Baser @ Dec 3 2016, 22:51) *
Естественно, для каждого соединения свой приемный буфер.

Ага, щаз.
Расширенный UDP режим, +CIPUDPMODE=1. Какое соединение?
К нам летят пакеты с разных адрсов. Сколько буферов?
Baser
Цитата(Alechek @ Dec 3 2016, 21:50) *
Расширенный UDP режим, +CIPUDPMODE=1. Какое соединение?
К нам летят пакеты с разных адрсов. Сколько буферов?

С этим режимом не работал, определенно сказать ничего не могу laughing.gif

Для TCP вроде все однозначно, а для режима расширенного UDP непонятно для чего дополнительно есть мультиконект на 5 соединений.
Если и при одном соединении можно динамически переключать адрес кому посылать и принимать от любого.

Но это, как я понимаю, к изначальному вопросу ТС отношение не имеет, это уже новая постановка вопроса sm.gif
Alechek
Цитата(Baser @ Dec 4 2016, 03:39) *
Для TCP вроде все однозначно, а для режима расширенного UDP непонятно для чего дополнительно есть мультиконект на 5 соединений.
Но это, как я понимаю, к изначальному вопросу ТС отношение не имеет, это уже новая постановка вопроса sm.gif

Имеет. То, что его пакеты собирал в данные модуль - с этим определились.
Осталось выяснить, можно ли с этого избежать.

Расширенный UDP - это как слушающий UDP сервер.
butthead2
Цитата(smalcom @ Dec 3 2016, 10:28) *
того уровня где я бы слился вам ещё столько учиться, что врядли столько проживёте.

Иного и не ожидал. Очередной поток словоблудия.
Поздравляю с почетным титутулом Самого Знающего Болтуна
aiwa
Цитата(CADiLO @ Dec 2 2016, 21:29) *
Дополнение:
На уровне ЕАТ есть точки входа в API от РРР и выше - кто хочет поменять алгоритм, может воспользоваться.
Хоть свой стек рисуйте.

А где про это можно почитать? В прилагаемой к ЕАТ документации - только raw-сокеты с IPPROTO.
Velund
QUOTE (butthead2 @ Nov 29 2016, 15:13) *
пс. Модемы telit в этом плане ведут себя ровно так же как и симком. Да и в описании других я никогда не встречал никаких пакетов.
Так что задумайтесь "на чьей стороне проблема"


Модемы Телит давно уже умеют работать с UDP и как надо, а не только как симком. wink.gif Давно уже как умеют, с 185 прошивки у GL868 ЕМНИП. Правда нам с уважаемым коллегой из Атомы, присутствующим здесь на форуме, пришлось немного телитовской кровушки попить и мозгов их програмистстких повыносить. wink.gif

PS: Впрочим как симком клеить датаграммы они тоже еще умеют - для совместимости с уже разработанными приложениями. wink.gif Надо просто при открытии сокета шепнуть модему на ушко, что от него ждут - именно датаграмм, или потока. wink.gif По дефолту будет поток, без разделения на датаграммы.
butthead2
Цитата(Velund @ Dec 27 2016, 12:58) *
пришлось немного телитовской кровушки попить и мозгов их програмистстких повыносить

"Не приставай к царю!" (с)
Главное что они прислушиваются, а потом тихонько делают.

Цитата(Velund @ Dec 27 2016, 12:58) *
По дефолту будет поток, без разделения на датаграммы.

Вот за правильные дефолты телитовцам низкий поклон. Новый модуль со свежей прошивкой можно ставить при ремонте любого старья.
С симкомом (да и другими китайцами) после пайки очередной партии неоднократно приходилось играть в игру под названием "И где на этот раз поменялся формат? А зачем?"
smalcom
С момента последнего сообщения ТСа
https://electronix.ru/forum/index.php?showt...t&p=1465804
прошло 27 дней. В преддверии праздника хотелось бы услышать как он решил проблему со склеивающимися UDP-пакетами.
Сергей Борщ
QUOTE (Velund @ Dec 27 2016, 11:58) *
Надо просто при открытии сокета шепнуть модему на ушко, что от него ждут - именно датаграмм, или потока. wink.gif
Простите, а разве не именно этим и отличаются UDP и TCP? Не знаю, как там у Телита, а у Симкома они открываются разными командами. Или Телиту кроме "масло" надо еще отдельно говорить "масляное"?
molecul
Цитата(Сергей Борщ @ Dec 28 2016, 09:45) *
Простите, а разве не именно этим и отличаются UDP и TCP? Не знаю, как там у Телита, а у Симкома они открываются разными командами. Или Телиту кроме "масло" надо еще отдельно говорить "масляное"?

Уважаемый Velund имел в виду, что по умолчанию датаграммы идут потоком, и отделить что откуда пришло (если источников много) весьма проблематично. Telit же по его настоятельной maniac.gif просьбе (и к радости некоторых других потребителей) сделал возможность показывать подробную информацию об источнике:
Цитата
Data view with UDP datagram informations:
SRING: <sourceIP>,<sourcePort><connId>,<recData>,
<dataLeft>,<data> same as before with <sourceIP>,<sourcePort> and
<dataLeft> that means the number of bytes left in the UDP datagram
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.