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

 
 
> Обработка массивов с неполными пакетами
Atlantis-
сообщение Oct 19 2015, 15:02
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 491
Регистрация: 18-05-11
Пользователь №: 65 102



Здравствуйте!
Никак не соображу, как лучше обрабатывать массивы данных с неполным пакетом в конце. Конкретный пример: на ПК приходит массив данных:
пакет1(16 байт), пакет2(32 байта), неполный пакет (от 1 до 15 байт). Каждый пакет содержит байт, указывающий кол-во данных в пакете
Вроде как надо неполный пакет сохранить и потом склеить во время следующей посылки, а обрабатывать несколько полных пакетов, но как это все вычислить, может кто подскажет?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
esaulenka
сообщение Oct 19 2015, 15:15
Сообщение #2


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

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Если это ПК, то никто не мешает сделать буфер не из байтов, а из пакетов (длина каждого - максимально возможная по протоколу).
А дальше выгребать из массива побайтно и перекладывать в этот буфер. По окончании буфера запомнить состояние "работаем с пакетом №3, в нём 5 байт из N", при появлении следующего "массива" продолжить разбор.
Буфер из пакетов, само собой, закольцованный.


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
CrimsonPig
сообщение Oct 19 2015, 15:36
Сообщение #3


Местный
***

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



Цитата(esaulenka @ Oct 19 2015, 16:15) *
Буфер из пакетов, само собой, закольцованный.


А зачем закольцованый ? sm.gif
На самом деле, слишком общий вопрос и и мало данных.. На общий вопрос соответствующий ответ:
- опишите свои пакеты структурой данных (классом) с состоянием (длина, сколько данных в него надо принять до состояния "заполненности" итп)
- организуйте FIFO - очередь пакетов, например, с помощью списка указателей на эти структуры (std::list, например), тогда недопринятый пакет всегда будет в конце списка. Принятые пакеты удаляем с головы.

Кроме этого, возможно реализовать примерно еще 764 других варианта решеня поставленной задачи sm.gif

Сообщение отредактировал CrimsonPig - Oct 19 2015, 15:38
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Atlantis-   Обработка массивов с неполными пакетами   Oct 19 2015, 15:02
- - zltigo   QUOTE (Atlantis- @ Oct 19 2015, 18:0...   Oct 19 2015, 15:44
- - megajohn   Цитата(Atlantis- @ Oct 19 2015, 18:0...   Oct 19 2015, 17:30
|- - Dog Pawlowa   Цитата(megajohn @ Oct 19 2015, 20:30) дык...   Oct 19 2015, 20:15
|- - Atlantis-   Цитата(megajohn @ Oct 19 2015, 20:30) дык...   Oct 20 2015, 07:05
- - smalcom   вообще контрольная сумма у пакета должна быть. есл...   Oct 19 2015, 20:19
- - toweroff   Вы бы хоть формат пакета привели, а то тут сейчас ...   Oct 20 2015, 07:44
|- - Atlantis-   Цитата(toweroff @ Oct 20 2015, 10:44) Вы ...   Oct 20 2015, 07:50
|- - Dog Pawlowa   Цитата(Atlantis- @ Oct 20 2015, 10:5...   Oct 20 2015, 09:41
|- - Atlantis-   Цитата(Dog Pawlowa @ Oct 20 2015, 12:41) ...   Oct 20 2015, 10:31
|- - Dog Pawlowa   Цитата(Atlantis- @ Oct 20 2015, 13:3...   Oct 20 2015, 10:47
|- - mcheb   Цитата(Atlantis- @ Oct 20 2015, 13:3...   Oct 20 2015, 10:48
|- - Atlantis-   Цитата(mcheb @ Oct 20 2015, 13:48) http:/...   Oct 20 2015, 14:59
|- - CrimsonPig   Цитата(Atlantis- @ Oct 20 2015, 15:5...   Oct 20 2015, 15:33
- - smalcom   добавьте контрольную сумму и проблема отпадёт   Oct 20 2015, 08:42
- - toweroff   Вот так попробуйте [STX][LEN][DATA][CRC] STX - к...   Oct 20 2015, 15:26
|- - CrimsonPig   Цитата(toweroff @ Oct 20 2015, 16:26) [ST...   Oct 20 2015, 15:49
- - smalcom   Цитататак, что в нулевом байте теперь общее кол-во...   Oct 20 2015, 15:42
|- - Atlantis-   У меня сложная система, 8 микроконтроллеров (1) сч...   Oct 20 2015, 16:54
- - smalcom   ЦитатаТеперь читаем [LEN] байт интересно, а кто эт...   Oct 20 2015, 16:51
|- - Alexashka   Цитата(smalcom @ Oct 20 2015, 20:51) Обын...   Oct 20 2015, 17:50
- - smalcom   Цитатакакой протокол лучше сделать если ничего све...   Oct 20 2015, 17:07
- - Atlantis-   Цитата(smalcom @ Oct 20 2015, 20:07) если...   Nov 11 2015, 07:21
- - Dog Pawlowa   Цитата(Atlantis- @ Nov 11 2015, 10:2...   Nov 11 2015, 09:33


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

 


RSS Текстовая версия Сейчас: 23rd August 2025 - 16:46
Рейтинг@Mail.ru


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