Обработка блоков данных


Содержание

Frud › Блог › Создание блока сбора данных для виртуальной приборки (ч.1)

Идея виртуальной приборной панели набирает популярность. Многих от установки такой опции отпугивает кажущаяся сложность и цена комплектующих. На самом деле все не так уж сложно и дорого. Планирую написать цикл статей для желающих самостоятельно изготовить виртуальную приборку (далее ВП).
Для начала немного теории.
ВП состоит из 4-х основных частей:
1. Блок сбора данных — устройство которое считывает состояние сенсоров(датчиков) в автомобиле, преобразует эту информацию в цифровой вид и передает ее по цифровому каналу данных.
2. Компьютер на котором запущена программа обработки информации поступающей с блока сбора.
3. Собственно программа ВП, обрабатывающая информацию и визуализирующая данные в виде графических приборов на устройстве вывода (экране).
4. Устройство вывода информации — цветной ЖК дисплей.

Блок сбора данных будем строить на популярной платформе Ардуино. В качестве компьютера можно использовать CarPC на Windows или любое Android устройство (смартфон, планшет, miniPC, TVstick и т.п.)
Для устройства вывода годится любая подходящая по размерам ЖК-матрица, совместимая по интерфейсу с используемым компьютером. При использовании планшета получаем компьютер и матрицу в одном флаконе за приемлемую цену.

Сегодня я расскажу какие данные будет собирать блок и в каком виде они передаются в цифровой канал данных.

Для большинства легковых автомобилей (не считая всяческие турбо-корчи и т.п.) достаточно следующего набора параметров:
1. Скорость движения
2. Обороты ДВС
3. Напряжение бортовой сети
4. Уровень остатка топлива.
5. Температура ОЖ
6. Температура забортная
7. Температура в салоне
8. Состояние контрольных ламп.
9. Счетчик одометра.

Данные передаются в цифровой канал в виде пакетов байт. Наша задача сформировать пакет в котором будут присутствовать все параметры снимаемые блоком сбора. Одним байтом можно передать число от 0 до 255. Двумя байтами от 0 до 65535.
Параметр скорости имеет диапазон от 0 до максимальной скорости. В принципе хватит одного байта. Максимальной измеряемой скорости 255 км/ч достаточно для большинства автомобилей. Но не будем жадничать и выделим для скорости 2 байта, на всякий случай.
Для оборотов ДВС одного байта однозначно мало, 2 байта в самый раз.
Диапазон значений напряжения бортовой сети возьмем от 0.0 до 15.0 В. Одного байта будет достаточно для дискретности отображения в одну десятую Вольта. Значение 150 = 15.0В, 125 = 12.5 В и т.д.
Также один байт выделим для остатка топлива. Значение 200 = 100%. Дискретность отображаемого параметра 0,5%. Для датчика топлива точность более чем достаточная.
Ширины диапазона измеряемых температур в 255 градусов вполне достаточно для применения в автомобиле.
Поэтому для каждой температуры выделим по одному байту.
Контрольная лампа имеет всего два состояния включена и выключена. В этом случае для одной лампы достаточно одного бита. Соответственно в одном байте можно передать состояния 8-ми контрольных ламп, в двух байтах 16-ти и т.д.
Для счетчика одометра зарезервируем 4 байта.

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

Многопоточная обработка блоков данных

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

22.09.2020, 20:35

Принять несколько блоков данных на сервере
#include «server.h» #include using namespace std; Server::Server(QObject* parent).

Многопоточная обработка данных + ввод/вывод
Доброго времени суток! Пишу небольшое консольное приложение, и у меня возникли некоторые вопросы.

Многопоточная обработка данных в 1С 8.х Как правильно и универсально это организовать ?
Добрый день. Есть алгоритм расчета, требующий больших ресурсов и есть понимание что его можно.

Многопоточная обработка
Здравствуйте! Есть while, который берет записи из базы данных и обрабатывает их с помощью методов.

Многопоточная обработка дерева
Есть следующий класс реализующий интерфейс Runnable: public class TreeHandler implements.

Обработка блоков данных

Блок обработки данных представлен главным модулем программы Main. В нем определяются и реализуются типы входных и выходных данных, способы согласования и разграничения потоков данных, а также процедуры и функции управления этими потоками.

Модуль Main содержит следующие процедуры и функции:

процедура FormActivate — содержит действия инициализации программы;

процедуры реагирования на меню — содержат необходимое количество действий для работы с главным меню программы;

процедура учета отжатия клавиш MainFieldKeyPress — учитывает и регистрирует отжатые пользователем клавиши;

процедура StopButtonClick — процедура регистрации нажатия на кнопку «ВЫКЛ».

Необходимо отметить, что данный модуль управляет взаимодействием всех потоков данных, находящихся в программе (см. Рис. 3.5).

Рисунок 3.5 Взаимодействие потоков данных в эмуляторе

В начале работы, модуль Main получает текст приказа, введенного пользователем в поле приказов FieldMain (тип данных — Pchar). После необходимого анализа данного потока, Main передает параметры для выполнения функции введенного пользователем приказа в динамически подключаемую библиотеку функций Resourses.dll (тип данных — Pchar). При завершении действий над приказом пользователя в библиотеке Resourses.dll готовая информация отклика системы на этот приказ пересылается в файл FileOfRes (тип данных — string), после чего данный файл считывается модулем Main для получения необходимой информации о реакции системы на приказ пользователя (тип данных — string). При успешном считывании файла FileOfRes, информация отклика системы на приказ пересылается в поле ввода приказов (тип данных TString). Если приказ пользователя содержал ошибку, о чем его успешно проинформировала система, модуль Main выдает информацию в поле ошибок (тип данных — Tstring). Обмен потоками данных с файлом сессий FileOfSes (тип данных String) осуществляется только в том случае, если пользователь выбрал в меню пункты «Загрузить сессию» или «Сохранить сессию» (см. п. 3.3.2).

Блок программных ресурсов

Блок программных ресурсов в эмуляторе представлен динамически линкуемой библиотекой (Dynamic Link Library) и находится в файле Resourses.dll. Он содержит более 30 функций работы с приказами пользователя, введенными в поле ввода приказов. Каждая функция обрабатывает поступающую от модуля Main информацию и выдает соответствующую реакцию системы на него. Общий принцип построения блока программных ресурсов схож с принципами построения модуля реакций операционных систем современности, то есть обладает следующими свойствами:

динамическое подключение по ходу работы основной программы;

полная реализация приказа введенного пользователем;

большая масштабируемость и адаптивность.

Динамическое подключение важная характеристика программного блока, характерная только для структур, реализованных на основе DLL, и обеспечивающая:

подключение не всего набора функций модуля, а только необходимых для выполнения текущей операции (реагирование на приказ пользователя);

подключение функции модуля DLL, неизвестного на момент компиляции программы (например, по введенному значению или приказу пользователя);

значительная экономия оперативная памяти компьютера. В зависимости от количества процедур или функций от 100% и более (для нашего блока программных ресурсов, в котором реализовано более 30 функций, а подключается всего одна — 3000%);

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

Полная реализация приказа пользователя — свойство, обеспечивающее полное и достаточное количество действий программы, необходимых для реализации отклика системы на любой конкретный приказ пользователя.

Масштабируемость и адаптивность — свойства, необходимые на этапах реализации и сопровождения программного продукта, обеспечивающие, в первую очередь, возможность совершенствования и отладки с незначительными временными затратами, а также легкость переноса его с одной программной платформы на другую.

Применение данных свойств при программировании блока программных ресурсов позволило значительно сократить объем оперативной памяти, требуемой для работы эмулятора, повысило масштабируемость и адаптивность блока и увеличило читаемость и понимаемость программы.


В данном модуле (Resourses.dll) реализованы следующие функции (см. Табл. 3.2);

Функции, реализованные в модуле блока программных ресурсов

блок обработки данных

блок обработки данных
процессор

[Я.Н.Лугинский, М.С.Фези-Жилинская, Ю.С.Кабиров. Англо-русский словарь по электротехнике и электроэнергетике, Москва, 1999 г.]

Тематики

  • электротехника, основные понятия

Синонимы

  • processing unit

Справочник технического переводчика. – Интент . 2009-2013 .

Смотреть что такое «блок обработки данных» в других словарях:

блок-схема обработки данных — диаграмма потоков данных — [Л.Г.Суменко. Англо русский словарь по информационным технологиям. М.: ГП ЦНИИС, 2003.] Тематики информационные технологии в целом Синонимы диаграмма потоков данных EN data flowchart … Справочник технического переводчика

блок обработки информации — Сооружение, оснащенное комплексом технических устройств для измерения и обработки информации о визуальном и инструментальном контроле параметров, обеспечивающих нормальную работу узла учета нефти, протоколирования данных по учету нефти и… … Справочник технического переводчика

блок обработки воздуха компьютерного зала — [Интент] Тематики ЦОДы (центры обработки данных) EN computer room air handler … Справочник технического переводчика

блок обработки команд/ответов — 05.02.33 блок обработки команд/ответов [ command/response unit]: Часть процессора протокола данных, ответственная за обработку команд приложения и отправку ответов с целью управления операциями кодирования, декодирования, структурирования… … Словарь-справочник терминов нормативно-технической документации

ГОСТ 20886-85: Организация данных в системах обработки данных. Термины и определения — Терминология ГОСТ 20886 85: Организация данных в системах обработки данных. Термины и определения оригинал документа: 6. База данных БД Data base Совокупность данных, организованных по определенным правилам, предусматривающим общие принципы… … Словарь-справочник терминов нормативно-технической документации

горячий коридор (в центре обработки данных) — горячий коридор Коридор, в который обращены тыльные стороны стоек. Нагретый воздух от оборудования, размещенного в стойках, выходит в этот коридор и направляется в блок кондиционирования воздуха машинного зала. [http://www.dtln.ru/slovar… … Справочник технического переводчика

горячий коридор (в центре обработки данных) — горячий коридор Коридор, в который обращены тыльные стороны стоек. Нагретый воздух от оборудования, размещенного в стойках, выходит в этот коридор и направляется в блок кондиционирования воздуха машинного зала. [http://www.dtln.ru/slovar… … Справочник технического переводчика

блок распределения питания на полную высоту стойки — [Интент] См. также стоечный блок распределения питания Тематики ЦОДы (центры обработки данных) EN full rack vertical PDU … Справочник технического переводчика

блок распределения питания на половину высоты стойки — [Интент] См. также стоечный блок распределения питания Тематики ЦОДы (центры обработки данных) EN half rack vertical PDU … Справочник технического переводчика

блок распределения воздуха (термин APC) — блок распределения воздуха [Термин APC] Тематики ЦОДы (центры обработки данных) EN air distribution unit … Справочник технического переводчика

Обработка книжных блоков. Схема технологического процесса полной, частичной и минимальной обработки книжного блока.

Обработка блоков после их скрепления предполагает придание будущему книжному изданию дополнительных эксплуатационных свойств, повышающих его прочность и долговечность, улучшающих внешний вид и удобство пользования. Различают две стадии обработки: первичную и вторичную. Назначение первой повысить прочность швейного скрепления тетрадей блока и его компактность, обеспечить свободный доступ к любой странице, получить требуемые размеры блока в соответствии с принятым форматом издания.

Назначение вторичной обработки – повышение долговечности издания и улучшение его эстетических показателей. Часть вторичной обработки необязательна и выполняется по договору с издательством. Это закраска обреза и приклейка ленточки-закладки.

В зависимости от состава операций различают три варианта обработки блоков: полную, частичную, минимальную.

Схема технологического процесса полной обработки книжного блока.

1. Многократный обжим корешка и блока

2. Заклейка корешка

3. Сушка корешка

4. Многократный обжим корешка

5. Обрезка блока с трех сторон

6. Закраска обрезов

7. Кругление корешка

8. Отгибка фальцев

9. Приклейка корешкого материала


10. Приклейка ляссе.

11. Приклейка каптально-бумажной полоски

Схема технологического процесса частичной обработки книжного блока

1. Заклейка корешка

2. Сушка корешка

3. Обжим корешка

4. Обрезка блока с трех сторон

5. Кругление и отгибка фальцев

6. Приклейка корешкового материала

Схема технологического процесса минимальной обработки блока.

1. Заклейка корешка блока, сшитого на марле

2. Сушка корешка

3. Обжим корешка

4. Обрезка блока с трех сторон

5. Приклейка каптально-бумажной ленты

Полная обработка книжного блока сформировалась во второй половине ХХ века. Ее отличительной особенностью является потетрадное шитье блоков без корешкового материала, что позволяет автоматизировать механическую обработку корешка блока. В этом варианте полиграфическая марля приклеивается к корешку после его механической обработки. Этот вариант применим к книжным блокам толщиной от 12 до 50 мм. Если блок имеет толщину менее 12 мм, приклеивать марлю нецелесообразно, так как она не даст прочного соединения из-за малой площади контакта.

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

На современных поточных линиях обжим корешка производится многократно: четырёх кратно на автоматах FM и FN (фирма Колбус) и трехкратно на автоматах БПО-350 (Ходоровский ЗПМ, Украина).

Потетрадное шитье нитками требует обязательной заклейки и последующей сушки корешка, так как на этой операции применяются клеи на водной основе. В процессе заклейки корешка клей наносится на всю поверхность корешка, заполняет углубления между фальцами и частично проникает между ними, а после высыхания образует эластичную, ровную пленку. Основное назначение операции:

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

2. устранить просветы между тетрадями

3. повысить сохранность формы корешка

4. повысить прочность и долговечность готовой книги

Для заклейки корешка применяют поливинилацетатную дисперсию марки ДФ 47/7 ВП, разбавленную водой до содержания сухого остатка от 33 до 45%.

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

В современных заклеечно-сушильных машинах заклейка корешка блока производится в зажатом состоянии при выходе корешка из клея на 5-25 мм.

В процессе заклейки корешковые части тетрадей получают значительные утолщения фальцев за счет клеевой пленки и набухания бумаги под действием влаги. Толщина заклеенного и высушенного корешка блока может превышать толщину переднего края на 10-20% в зависимости от вида бумаги. По этим причинам необходимо обжать корешок до трехсторонней резки, что дает возможность откалибровать толщину блоков в заказе.

Обжим корешка блока производиться при усилии 30 кгс/см2. На малых предприятиях обжим корешка производиться на блокообжимных станках типа БПБ-270. На крупных предприятиях 3 и 4-х кратный обжим производиться на автоматах FN и БПО-350.

Заклеенные, высушенные и обжатые блоки оцениваются по следующим показателям качества:

1. равномерность слоя клея на корешке

2. глубина захода клея между тетрадями ( 1мм – 16 стр. тетради, 2 мм – 32 стр. тетради, допуск + 1 мм).

3. отсутствию затеков клея в отверстия от швейных инструментов

4. отсутствию раскола корешка

5. отсутствие склейки блоков между собой

6. полноте высыхания клея на отлип

Если книжные блоки состоят из тетрадей, то обрезка блоков с трех сторон обеспечивает свободный доступ к любой странице книжного издания. Обрезка позволяет получить ровные и гладкие обрезы и производить ее надо до обработки корешка, так как наличие петель в тетрадях препятствует смещению листов в процессе кругления.

Обрезку переднего поля осуществляют только после обрезки нижнего и верхнего края блока.

Операция выполняется на автоматах типа MD и HD (фирма «Колбус») или 3БТР 125/450.


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

В соответствии с требованиями ГОСТ 5773 на обрезку нижнего поля дается 6-7 мм, верхнего – 4-3 мм, а переднего 5 мм. Допуск на точность обрезки, включая и косину ±0,1 мм.

Книжные блоки после обрезки оцениваются по следующим показателям:

1. точности формата издания

2. отсутствию косины

3. полноте среза фальцев, графеечных проколов и кромок листов.

Информационные блоки на сайте: как преподнести пользователю информацию и не нарушить композицию ресурса

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

Что такое информационные блоки

Понятие «информационный блок» или инфоблок дизайнеры трактуют по-разному. Кто-то использует это определение для всех блоков на сайте, где есть хоть какая-то информация, кто-то для текстового контента, а кто-то называет инфоблоками всплывающие окна. В нашей статье в качестве информационного блока мы будем иметь в виду первый вариант — элементы сайта, на которых размещается информация для пользователей о деятельности компании, условиях покупки, доставки или оплаты и прочее. Пример информационных блоков на сайте:

Также мы классифицируем информационные блоки на несколько категорий:

  1. Текстовый контент. Это блоки, состоящие только из текста. Как правило, к ним относятся описания товаров и их характеристики, блок — описание компании, страницы с условиями доставки и оплаты.
  2. Информация в шапке и подвале сайта. В таких блоках размещаются контактные данные, иконки с корзиной, ссылки на страницы с условиями покупки и прочее.
  3. Призывы к действию. Данные элементы тоже можно считать информационными блоками, так как все больше дизайнеров помещают в блоки информацию о компании и дополнительных преимуществах при заказе.
  4. Поп-апы. Отдельные всплывающие окна с информацией об акциях компании и веб-формами для заказа.
  5. Объявления о работе с сайтом. Такие окна сообщают пользователям о технических неполадках или условиях пользования, рассказывают о правилах работы с сайтом.
  6. Инфоблоки на карточках товаров. Обычно это описание условий покупки, блоки с описанием алгоритма доставки и оплаты и прочее.
  7. Блоки в сайдбаре. Это элементы, расположенные на боковых панелях сайта.

О каждой категории мы поговорим подробнее, разберем особенности дизайна и приведем примеры с различных сайтов.

Текстовый контент: дизайн инфоблоков с текстом

С помощью текста на сайте пользователь узнает основную информацию о деятельности компании, и, следовательно, принимает решение о покупке. Если уделить недостаточно внимания оформлению текстового контента, посетители сайта не узнают о преимуществах и проводимых компанией акциях, не смогут понять, как взаимодействовать с товаром и прочее.

Что нужно для правильного оформления текстовых блоков? Первое, и самое главное — уделить внимание типографике. Читабельные шрифты, яркие заголовки, грамотно расставленные интервалы — все это способствует тому, чтобы пользователь легко воспринимал информацию. Например, возьмем обычный текстовый блок с сайта нашей студии:

Предположим, что мы не позаботились о шрифтах и читабельности текста и оформили этот инфоблок так:

На примере видно, что использование таких шрифтов делают текст нечитабельным, к тому же, данный стиль не подходит специфике нашей компании. Также нет разбиения на абзацы, заголовки не выделены, межстрочный интервал не настроен.

Поэтому крайне важно уделять внимание типографике и оформлению текста. В этой статье мы подробно описали основные особенности типографики в веб-дизайне.

Также при оформлении текстового контента желательно использовать различные иконки и изображения. Они привлекают внимание пользователя к элементам, облегчают восприятие текста благодаря ассоциациям. Например, так могут выглядеть блоки с преимуществами компании:

Шапка и подвал сайта

Один из важных инфоблоков на сайте — контактные данные компании. Это может быть адрес, телефон для связи, режим работы организации и прочее. Например:

При создании дизайна таких инфоблоков важно обращать внимание на:

  1. Типографику — размер текста, можно ли без усилий разобрать надписи.
  2. Цветовую палитру — можно ли заметить надписи на фоне, гармонирует ли текст с основными оттенками на сайте.
  3. Иконки — используются ли изображения в шапке, ассоциируются ли иконки с их назначением (например, для поиска чаще всего используется символ лупы, поэтому лучше применять его).
  4. Интервалы и пустое пространство — текст не должен наезжать на другие надписи или изображения, должно быть достаточно пространства (подробнее об использовании свободного пространства на сайте можно прочитать здесь).
Илон Маск рекомендует:  Как повернуть изображение

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

Некоторые информационные блоки могут размещаться в подвале сайта. Это не обязательно может быть текст. Например, на нашем сайте в футере размещена карта, на которой отмечено местоположение студии IDBI:

Призывы к действию

Еще один важный блок на сайте — призыв действию. Например, призыв подписаться на рассылку, заказать товар или услугу, акция со скидкой при заказе в ближайшее время и прочее. Данный элемент также можно отнести к информационному блоку. Сейчас в дизайне существует тенденция оформлять призывы как можно более четко и понятно для пользователя. На примере представлен призыв к действию с описанием преимуществ:

Данные блоки являются основными инструментами повышения конверсии сайта, поэтому на них нужно обращать особое внимание. Как привлечь внимание пользователя и побудить его к целевому действию?

  1. Обозначить конкретную выгоду. Пользователи охотнее совершают целевые действия, если понимают, какие преимущества получают. Это может быть бесплатный подарок, скидка при первом заказе или что-то подобное.
  2. Оформить отличной от основного контента цветовой палитрой. Чтобы привлечь внимание к блоку, можно оформить элемент с помощью ярких цветовых оттенков, градиента или яркого изображения. Так пользователь остановит свой взгляд на блоке и, возможно, совершит целевое действие.
  3. Продумать расположение блока. Также важно расположить блок таким образом, чтобы он не нарушил целостной композиции сайта и, в то же время, выделился среди контента. Лучше всего размещать призывы к действию на первом экране (самой просматриваемой части сайта) и встраивать в контент.

Более подробно об оформлении призывов к действию мы писали в нашем блоге.

Поп-апы

Всплывающие окна тоже являются информационными блоками. Здесь пользователям часто преподносится информация о действующих акциях компании или дополнительных выгодных условиях. Поп-апы могут как просто возникать при первом заходе на страницу, так и « сворачиваться» и оставаться небольшой иконкой на сайте.

Первый вариант мы используем на нашем сайте. Мы предлагаем пользователям заказать интернет-магазин и описываем преимущества — при заказе клиент получает дизайн логотипа в подарок.

Также некоторые сайты размещают различные интерактивные инфоблоки, которые сворачиваются при нажатии:


В дизайне всплывающих окон также нужно уделять внимание информации, которая предоставляется пользователям — кратко описывать преимущества акций, конкретно формулировать условия для их получения. Яркие изображения привлекут внимание и задержат взгляд пользователя, прежде чем он закроет окно.

Однако, не стоит злоупотреблять использованием поп-апов. Часто всплывающие окна воспринимаются посетителями сайта как назойливая реклама. Потенциальный клиент может уйти к конкурентам.

Технические объявления

Еще одним видом инфоблоков на сайте являются небольшие блоки с информацией о работе сайта. Это может быть предупреждение об использовании Cookie, запрос на подписку и отправку уведомлений, блоки с описанием технических недостатков и прочее. Например:

В чем особенность таких блоков? Они должны быть заметны пользователю, чтобы тот был предупрежден о возможных неполадках и нюансах работы с сайтом. Для этого такие блоки размещают в заметных частях сайта, например, внизу или вверху страницы. Элементы могут быть раскрашены в темные или яркие цвета, в зависимости от палитры сайта.

Однако, данные блоки не должны отвлекать пользователя от контентной части или разрушать общую концепцию сайта. Поэтому кнопки на таких блоках стараются делать в том же стиле, подбирают подходящую типографику. Текст на элементах должен быть коротким и понятным пользователям, в противном случае, посетитель может уйти с сайта, так и не поняв, в чем проблема.

Блоки в сайдбаре

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

В сайдбаре также часто размещаются информационные блоки, в которых отражена информация о компании, проводимых акциях, популярных статьях и прочее. Например:

При создании дизайна таких блоков необходимо учитывать:

  • размеры сайдбара. Как правило, боковая панель занимает от 20 до 40% общего места на странице. Поэтому блоки будут примерно одинаковые по ширине, слишком большой текст не будет помещаться в узкие рамки;
  • «баннерную слепоту». Вследствие того, что в сайдбарах часто размещается реклама, пользователи часто стали игнорировать содержимое боковой панели. Чтобы этого не произошло, нужно делать блоки информативными и полезными для посетителей сайта;
  • изображения и иконки. Чтобы привлечь внимание пользователя к информации, лучше использовать небольшие изображения, иконки и другие полудекоративные элементы.

Например, на сайте «Лабиринта» все акции отмечены иконками:

Если их убрать, надписи станут менее заметные, и большинство пользователей не будут обращать особого внимания на текст.

Инфоблоки в сайдбаре — удобный способ преподнести информацию клиенту, которая всегда будет на виду. Часто в сайдбар помещают блоки с ссылками на социальные сети и возможностью получить консультацию:

Таким образом, при грамотном планировании структуры сайта, инфоблоки могут стать еще одним инструментом повышения конверсии и увеличении прибыли с сайта.

Блоки на карточках товара

Отдельно стоит отметить инфоблоки на карточках товаров. Здесь они играют существенную роль, так как являются основным фактором принятия решения пользователем.

Наша студия дизайна разработала макет для сайта органической косметики. В дизайне карточки товара мы специально предусмотрели место для описания характеристик, прямо под выбором количества товара и кнопки.

При создании дизайна инфоблоков в карточках товара дизайнеру важно учитывать:

  • содержание текста. В данном случае текст и его содержание — главное составляющее в дизайне инфоблока. Нужно, чтобы текст был понятен для пользователя и отвечал на интересующие его вопросы — осуществляется ли доставка в его регион, как он может оплатить товар и прочее. Возможно, это не всегда находится в компетенции дизайнера, однако, данный пункт влияет на юзабилити сайта в целом;
  • расположение блоков. Важно, чтобы описания и призыв к действию (в данном случае кнопка) были на виду у пользователя;
  • иконки и изображения. Чтобы пользователю было легче воспринимать информацию и ориентироваться на странице, можно использовать небольшие изображения (например, при описании алгоритма дальнейших действий) и иконки.

Также при разработке карточки товара нужно обращать внимание на технические «фишки» — наличие на странице zooma или возможность выбирать характеристики продукта с помощью кнопок. В нашем блоге также можно ознакомиться с алгоритмом создания идеальной карточки товара — мы писали об этом здесь.

Студия дизайна IDBI занимается созданием сайтов с различными структурами, в том числе, с блочной. Мы разрабатываем дизайн каждого блока и стараемся соответствовать всем принципам юзабилити. Чтобы текстовый контент легко воспринимался пользователями, мы тщательно подбираем шрифты, размер и цвет текста. Для блоков в сайдбаре или призывов к действию мы подбираем уникальные изображения и привлекательные заголовки. Мы создаем дизайн как для блогов и информационных порталов, так и для интернет-магазинов. Наши работы можно посмотреть в разделе «Портфолио».

Обработка блоков данных для передачи по одному и тому же каналу

Владельцы патента RU 2280327:

Заявлена схема радиосвязи, которая по-новому определяет структуру блока данных протокола, передаваемого по транспортному каналу, чтобы избежать избыточного присоединения идентификатора терминала (UE-ID) и информации о типе UE-ID. Поскольку имеется только один идентификатор терминала (UE-ID) и тип UE-ID в заголовке блока данных протокола, обрабатываемого на одном интервале времени передачи (TTI), эффективность в целом передачи данных увеличивается, и заметно снижаются потери ресурсов радиосвязи, что является техническим результатом. 5 н. и 32 з.п. ф-лы, 14 ил., 1 табл.

Настоящее изобретение относится к передаче данных в системе радиосвязи, более конкретно к обработке блоков данных для передачи по одному и тому же каналу в системе радиосвязи.

Предшествующий уровень техники

В последнее время системы мобильной связи получили заметное развитие, однако, что касается услуг передачи с высокой пропускной способностью данных, системы мобильной связи не могут сравниваться с системами проводной связи. Соответственно, выполняются технические разработки системы IMT-2000, которая представляет собой систему связи, обеспечивающую возможность передач данных с высокой пропускной способностью, и стандартизация данной технологии активно осуществляется на уровне различных компаний и организаций.

Универсальная система мобильной связи (UMTS), представляющая собой систему IMT-2000 европейского типа, является третьим поколением системы мобильной связи, разработанной на основе европейского стандарта GSM (глобальная система мобильной связи), целью которой является обеспечение усовершенствованных услуг мобильной связи на основе базовой сети GSM и технологии беспроводных соединений на основе широкополосного множественного доступа с кодовым разделением каналов (W-CDMA).

В декабре 1998 ETSI в Европе, ARIB/TTC в Японии, Т1 в США и ТТА в Корее образовали Партнерский проект третьего поколения (3GPP), предусматривающий создание детальных спецификаций технологии системы UMTS.

В рамках 3GPP для реализации быстрого и эффективного технического развития системы UMTS были созданы пять групп технических спецификаций (групп TSG) для выполнения стандартизации системы UMTS с учетом независимого характера сетевых элементов и их операций.

Каждая группа TSG разрабатывает, принимает и регулирует стандартную спецификацию в связанной с ней области. В числе этих групп, группа сети радиодоступа (группа TSG-RAN) разрабатывает стандарты для функций, требования и интерфейс наземной сети радиодоступа системы UMTS (сети радиодоступа UTRAN), которая представляет собой новую сеть радиодоступа для поддержки технологии доступа W-CDMA в системе UMTS.

Фиг. 1 иллюстрирует приведенную для примера базовую структуру обобщенной сети UMTS. Как показано на фиг. 1, система UMTS грубо делится на следующие сегменты: терминал (или пользовательское оборудование UE), сеть радиодоступа UTRAN 100 и основная сеть (CN) 200.

Сеть радиодоступа UTRAN 100 включает в себя одну или более подсистем радиосети (RNS) 110, 120. Каждая подсистема RNS 110, 120 включает в себя контроллер радиосети (RNC) 111 и множеств узлов В (базовых станций) 112, 113, управляемых контроллером RNC 111. Контроллер RNC 111 обеспечивает назначение и распределение ресурсов радиосвязи и действует как пункт доступа по отношению к основной сети 200.

Узлы В 112, 113 получают информацию, передаваемую физическим уровнем терминала через восходящую (обратную) линию связи, и передают данные к терминалу через нисходящую (прямую) линию связи. Узлы В 112, 113 работают, таким образом, как пункты доступа сети радиодоступа UTRAN 100 для терминала.

Основной функцией сети UTRAN 100 является формирование и поддержание однонаправленного канала-носителя радиодоступа (канала RAB) для обеспечения связи между терминалом и основной сетью 200. Основная сеть 200 предъявляет требования по качеству обслуживания (QoS) между конечными пунктами передачи к каналу RAB, и канал RAB поддерживает требования QoS, установленные основной сетью 200. Так как сеть UTRAN 100 формирует и поддерживает канал RAB, требования по QoS между конечными пунктами передачи удовлетворяются. Услуга канала RAB может, кроме того, разделяться на lu-услугу однонаправленного канала-носителя и на услугу радиосвязи однонаправленного канала-носителя. lu-услуга однонаправленного канала-носителя поддерживает надежную передачу пользовательских данных между граничными узлами сети UTRAN 100 и основной сетью 200.


Основная сеть 200 включает в свой состав центр коммутации мобильной связи (MSC) 210 и шлюзовой центр коммутации мобильной связи (GMSC) 220, соединенные вместе для поддержки услуги коммутации каналов (CS), обслуживающий узел поддержки GPRS (общие услуги пакетной радиосвязи) (SGSB) 230 и шлюзовой узел поддержки GRRS (GGSN) 240, соединенные вместе для поддержки услуги коммутации пакетов (PS).

Услуги, обеспечиваемые конкретному терминалу, грубо подразделяются на услуги коммутации каналов (CS) и услуги коммутации пакетов (PS). Например, услуга речевой связи является услугой коммутации каналов, в то время как услуга просмотра Web-страниц в сети Интернет классифицируется как услуга коммутации пакетов.

Для поддержки услуг коммутации каналов контролеры RNC 111 соединяются с центром MSC 210 основной сети 200, а центр MSC соединяется с шлюзовым центром GMSC 220, который управляет соединениями с другими сетями.

Для поддержки услуг коммутации пакетов контроллеры RNC 111 соединяются с обслуживающим узлом SGSN 230 и со шлюзовым узлом GGSN 240 основной сети 200. Обслуживающий узел SGSN 230 поддерживает пакетные передачи, направляемые к контроллерам RNC 111, а шлюзовой узел GGSN 240 управляет соединениями с другими сетями коммутации пакетов, такими как Интернет.

Различные типы интерфейсов существуют между сетевыми компонентами, чтобы обеспечить возможность сетевым компонентам передавать информацию друг к другу и принимать информацию друг от друга для осуществления связи между компонентами. Интерфейс между контроллером RNC 11 и основной сетью 200 определяется как lu-интерфейс. В частности, lu-интерфейс между контроллером RNC 111 и основной сетью 200 для систем с коммутацией пакетов определяется как «lu-PS», а lu-интерфейс между контроллером RNC 111 и основной сетью 200 для систем с коммутацией каналов определяется как «lu-CS».

На фиг. 2 показана структура протокола интерфейса радиосвязи между терминалом и сетью радиодоступа UTRAN 100 согласно стандартам сетей радиодоступа 3GPP.

Как показано на фиг. 2, протокол интерфейса радиосвязи имеет горизонтальные уровни, включающие в себя физический уровень, уровень передачи данных и сетевой уровень, и вертикальные плоскости, включающие в себя пользовательскую плоскость (U-плоскость) для передачи пользовательских данных, и плоскость управления (С-плоскость) для передачи управляющей информации.

Пользовательская плоскость представляет собой область, которая обрабатывает информацию трафика пользователя, такую как речь или пакеты протокола сети Интернет (IP-протокола), в то время как плоскость управления представляет собой область, которая обрабатывает управляющую информацию для интерфейса сети, поддержки и управления вызовом и т.д.

Уровни протокола на фиг. 2 могут быть разделены на первый уровень (L1), второй уровень (L2) и третий уровень (L3) на основе трех нижних уровней стандартной модели взаимодействия открытых систем (OSI). Каждый уровень описан ниже более подробно.

Первый уровень (L1), являющийся физическим уровнем, обеспечивает услугу переноса информации на верхний уровень с использованием различных методов радиопередачи. Физический уровень соединен с верхним уровнем, называемым уровнем управления средой доступа (МАС), через транспортный канал. Уровень МАС и физический уровень посылают данные друг к другу и принимают данные друг от друга через транспортный канал.

Второй уровень (L2) включает в себя уровень МАС, уровень управления линией радиосвязи (RLC), уровень управления широковещательной/групповой передачей (ВМС) и уровень протокола сходимости пакетных данных (PDCP).

Уровень МАС обеспечивает услугу распределения параметров МАС для распределения и перераспределения ресурсов радиосвязи. Уровень МАС связан с верхним уровнем, определяемым как уровень управления линией радиосвязи (RLC), через логический канал.

В соответствии с типом передаваемой информации обеспечиваются различные логические каналы. В принципе, когда передается информация плоскости управления, используется канал управления. Когда передается информация пользовательской плоскости, используется канал трафика.

Уровень МАС может быть разделен на подуровень MAC-b, подуровень MAC-d, подуровень MAC-c/sh и подуровень MAC-hs в соответствии с типом управляемого транспортного канала.

Подуровень MAC-b управляет каналом широковещательной передачи (ВСН), который является транспортным каналом, обрабатывающим широковещательную передачу системной информации.

Подуровень MAC-d управляет выделенным каналом (DCH), который является выделенным транспортным каналом для конкретного терминала. Соответственно, подуровень MAC-d сети UTRAN помещен в обслуживающем контроллере сети радиосвязи (SRNC), который управляет соответствующим терминалом, а также подуровень MAC-d находится в каждом терминале (UE).

Подуровень MAC-c/sh управляет общим транспортным каналом, таким как прямой канал доступа (FACH) или обратным совместно используемым каналом (DSCH), который совместно используется множеством терминалов. В сети UTRAN подуровень MAC-c/sh находится в управляющем контроллере радиосети (CRNC). Так как подуровень MAC-c/sh управляет каналом, совместно используемым всеми терминалами в области сотовой ячейки, единственный подуровень MAC-c/sh существует для каждой области сотовой ячейки. Таким образом, один подуровень MAC-c/sh находится в каждом терминале (UE).

Подуровень MAC-hs управляет высокоскоростным прямым совместно используемым каналом (HS-DSCH), который представляет собой транспортный канал прямой линии связи для высокоскоростных передач данных. В сети UTRAN один подуровень MAC-hs находится в узле В в каждой области сотовой ячейки и один подуровень MAC-hs также имеется в каждом терминале (UE).

Уровень RLC поддерживает надежные передачи данных и выполняет функцию сегментирования и конкатенации множества блоков данных услуг (RLC-SDU) уровня RLC, доставляемых с верхнего уровня. Когда уровень RLC получает блок данных RLC-SDU с верхнего уровня, уровень RLC настраивает размер каждого блока данных RLC-SDU соответствующим способом с учетом ресурсов обработки и затем создает определенные блоки данных с информацией заголовка, добавленной к ним. Созданные блоки данных определяются как блоки данных протокола (PDU), которые затем пересылаются на уровень МАС посредством логического канала. Уровень RLC включает в себя буфер RLC для хранения блоков данных RLC-SDU и/или RLC-PDU.

Уровень ВМС планирует сообщения широковещательной передачи в ячейке (сообщения СВ), принимаемые из основной сети, и транслирует сообщения СВ к терминалам, находящимся в конкретной ячейке (ячейках). Уровень ВМС сети UTRAN генерирует сообщение управления широковещательной/групповой передачей (сообщение ВМС) путем добавления информации, такой как идентификатор (ИД) сообщения, последовательный номер и схема кодирования, к сообщению СВ, получаемому с верхнего уровня, и передает сообщение ВМС на уровень RLC. Сообщения ВМС передаются с уровня RLC на уровень МАС посредством логического канала, т.е. общего канала трафика (СТСН). Канал СТСН отображается на транспортный канал, т.е. канал FACH, который отображается на физический канал, т.е. на вспомогательный общий физический канал управления (S-CCPCH).

Уровень протокола сходимости пакетных данных (PDCP) как верхний уровень по отношению к уровню RLC позволяет данные, передаваемые по сетевому протоколу (например, Ipv4, Ipv6), передавать эффективным образом по интерфейсу радиосвязи с относительно малой шириной полосы. Для достижения этого уровень PDCP выполняет функцию сокращения ненужной информации управления, используемой для проводной сети, причем этот тип функции называется сжатием заголовка.

В самой нижней части уровня L3 имеется уровень управления ресурсами радиосвязи (RRC). Уровень RRC определен только в плоскости управления и осуществляет обработку управления логическими каналами, транспортными каналами и физическими каналами для установки, перенастройки и освобождения однонаправленных каналов-носителей. Услуга однонаправленного канала-носителя относится к услуге, обеспечиваемой вторым уровнем L2, для передачи данных между терминалом и сетью UTRAN, и, в принципе, установка однонаправленного канала-носителя относится к определению уровней протокола и характеристик каналов, требуемых для обеспечения конкретной услуги, а также к соответствующей установке существенных параметров и операционных методов.

Уровень RLC может принадлежать пользовательской плоскости или плоскости управления, в зависимости от типа уровня, соединенного с верхним уровнем RLC. То есть если уровень RLC получает данные от уровня RRC, то уровень RLC принадлежит плоскости управления. В противном случае уровень RLC принадлежит пользовательской плоскости.

Ниже более подробно описан заголовок MAC. На фиг. 3 показана структура уровня МАС для сети UTRAN. На фиг. 4-7 показаны структуры подуровней MAC-d и MAC-c/sh сети UTRAN, на которых каждый из прямоугольных блоков показывает функцию уровня MAC. Ниже описаны основные функции.

В типовом случае объект протокола может получать пакеты данных в форме блоков данных услуги (SDU) и может передавать пакеты данных в форме блоков данных протокола (PRU). Например, в пользовательском оборудовании (терминале UE) для обратной линии связи уровень RLC посылает пакеты данных (RLC PDU) на уровень MAC посредством логического канала. Пакеты (блоки) данных RLC PDU, посланные уровнем RLC, принимаются на уровне MAC в форме МАС SDU. Уровень MAC затем обрабатывает эти блоки данных MAC SDU с преобразованием в блоки MAC PDU, которые посылаются на физический уровень посредством транспортного канала.

На уровне MAC все блоки данных протокола (MAC PDU), доставленные на физический уровень по транспортному каналу в течение одного интервала времени передачи (TTI), определяются как набор транспортных блоков (TBS). TBS может состоять из одного или нескольких транспортных блоков (т.е. блоков данных), каждый из которых содержит один блок данных MAC PDU. Транспортные блоки могут передаваться в порядке, как доставлено с уровня RLC. Если уровень MAC выполняет мультиплексирование блоков данных RLC PDU из различных логических каналов, порядок всех транспортных блоков, исходящих из одного и того же самого логического канала, может быть таким же, как порядок последовательности, доставленной с уровня RLC. Порядок различных логических каналов в TBS устанавливается протоколом MAC.

Илон Маск рекомендует:  Как сделать курсивный текст

Уровень MAC выполняет функцию идентификации пользовательских устройств и логических каналов. Имеются две основные причины идентификации: во-первых, пользовательские устройства (терминалы UE) должны различаться друг от друга, поскольку множество терминалов UE совместно используют общий транспортный канал; и, во-вторых, логические каналы должны различаться друг от друга, поскольку выполняется мультиплексирование логических каналов. В случае обратной линии связи, без использования идентификации, принимающая сторона (т.е. сеть UTRAN) не сможет определить, какой терминал UE передал блоки данных, и не сможет определить, какой логический канал был использован для передачи блоков данных.

Для идентификации уровень MAC добавляет один или более из следующих параметров: TCTF (поле типа целевого канала), тип UE-ID, UE-ID и/или поле C/T (управление/трафик), для формирования заголовка блока данных MAC PDU. В соответствии с релевантным уровнем техники заголовок MAC добавляется к каждому блоку данных услуги (MAC SDU) в составе блока данных MAC PDU. То есть даже те MAC SDU, которые передаются в течение того же самого интервала времени передачи TTI, имеют различные заголовки MAC, добавленные к ним. На фиг. 8 показан формат блока данных MAC PDU.

Идентификация терминала UE (т.е. поле UE-ID) необходима в случае, когда выделенный логический канал (такой как DCCH или DTCH) отображается на общий транспортный канал (такой как RACH, FACH, CPCH, DSCH или USCH). Для достижения этого уровень MAC добавляет временный идентификатор сети радиосвязи (RNTI) (который представляет некоторый тип идентификационной информации для терминала UE) к полю UE-ID заголовка. Имеются три типа RNTI: U-RNTI (UTRAN RNTI), C-RNTI (RNTI сотовой ячейки) и DSCH-RNTI. Таким образом, поле типа UE-ID, которое указывает тип используемого идентификатора RNTI, также передается в качестве части заголовка.

Имеется два типа идентификации для логического канала: поле TCTF и поле C/F. Поле TCTF требуется для транспортного канала, где выделенный логический канал (такой как DCCH и DTCH) может быть отображен вместе с другими логическим каналами. То есть для FDD (дуплексный канал с частотным уплотнением) поле TCTF требуется только для канала RACH или канала FACH, в то время как для TDD (дуплексный канал с временным уплотнением) поле TCTF требуется для канала USCH и для канала DSCH.

В случае дуплексного канала с частотным уплотнением (FDD) поле TCTF для канала FACH указывает, что отображенный логический канал является каналом BCCH, CCCH или CTCH или является выделенным логическим каналом (DCCH или DTCH), в то время как поле TCTF для канала RACH указывает, что отображенный логический канал является каналом CCCH или выделенным логическим каналом. Однако поле TCTF не идентифицирует конкретный тип выделенного логического канала, который был использован.

Идентификация выделенного логического канала обеспечивается полем C/F. Причина этого состоит в том, что, во-первых, в отличие от других логических каналов несколько выделенных логических каналов может быть отображено в один транспортный канал, а во-вторых, выделенный логический канал обрабатывается подуровнем MAC-d обслуживающего контролера радиосети SRNC, в то время как другие логические каналы обрабатываются подуровнем MAC-c/sh управляющего контроллера радиосети CRNC.

Каждый из выделенных логических каналов, отображенный на один транспортный канал, имеет идентификатор логического канала, который используется в качестве значения поля C/T. Однако если только один выделенный логический канал отображается на один транспортный канал, то поле C/T не является необходимым.

В таблице 1 приведены различные идентификаторы заголовка МАС, которые используются в соответствии с соотношением отображения между логическим каналом и транспортными каналами для дуплексного канала с частотным уплотнением FDD. В таблице 1 поле C/T существует, когда отображается несколько выделенных логических каналов (DCCH или DTCH). Символ «N» указывает, что заголовка нет, символ «-» указывает, что соотношение отображения отсутствует, и «UE-ID» указывает, что имеется как поле UE-ID, так и поле типа UE-ID. Поле UE-ID существует всегда вместе с полем типа UE-ID.

Таблица 1
DCH RACH FACH DSCH CPCH BCH PCH
DCCH TCTF TCTF
или UE-ID UE-ID UE-ID UE-ID
DTCH C/T C/T C/T C/T C/T
BCCH TCTF N
PCCH N
CCCH TCTF TCTF
CTCH TCTF

Как известно из уровня техники, когда логические каналы DTCH или DCCH отображаются на некоторые транспортные каналы (RACH, FACH, DSCH, CPCH), то как поле UE-ID, так и поле типа UE-ID добавляются уровнем MAC к заголовку каждого блока данных MAC SDU.

Таким способом, если имеется более одного блока данных MAC SDU, подлежащего передаче в течение одного интервала времени передачи TTI, и тот же самый заголовок MAC добавляется к каждому блоку данных MAC SDU, то согласно предшествующему уровню техники заголовок MAC добавляется избыточной степени к каждому блоку данных MAC SDU в течение одного интервала TTI. В частности, когда данные канала DTCH или канала DCCH передаются по общему транспортному каналу, такому как RACH, то поле идентификатора терминала (UE-ID) длиной 16 или 32 бита и поле типа IE-ID длиной 2 бита избыточным образом добавляются к каждому блоку данных MAC SUD.


Настоящее изобретение исходит из понимания того, что предшествующему уровню техники свойственен недостаток, заключающийся в том, что добавление одного и того же поля UE-ID и поля типа UE-ID к каждому заголовку каждого блока данных MAC SDU осуществляется повторяемым и избыточным образом. Соответственно, ввиду избыточности в передаче блоков данных протокола решения, известные из предшествующего уровня техники, являются неэффективными и бесполезно расходуют значительные ресурсы радиосвязи.

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

Для достижения по меньшей мере указанного результата в целом или частично предложена система мобильной связи, содержащая уровень протокола для генерации блока данных протокола (PDU), содержащего полезную нагрузку, образованную конкатенацией одного или более блоков данных услуги и имеющую заголовок, присоединенный к ней, и для передачи блока данных PDU на нижний уровень на интервале времени передачи (TTI).

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

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

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

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

Предпочтительно уровень протокола представляет собой подуровень управления доступом к среде (MAC), управляющий общим ресурсом.

Предпочтительно заголовок включает в себя информацию, относящуюся к идентификатору (UE-ID) терминала.

Предпочтительно заголовок дополнительно включает в себя информацию, относящуюся к типу идентификатора терминала.

Предпочтительно заголовок включает в себя информацию, относящуюся к логическому каналу.

Для достижения по меньшей мере указанных результатов в целом или частично предложена система мобильной связи, содержащая уровень протокола для приема блока данных протокола (PDU) от нижнего уровня на интервале времени передачи (TTI), обнаружения заголовка в принятом блоке данных PDU и сегментирования (распаковки) полезной нагрузки, содержащей один или более блоков данных услуги (SDU).

Предпочтительно блоки данных протокола принимаются по одному и тому же транспортному каналу.

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

Предпочтительно уровень протокола представляет собой подуровень управления доступом к среде (MAC), управляющий общим ресурсом.

Предпочтительно если заголовок включает в себя информацию идентификации терминала, уровень протокола проверяет, идентичен ли идентификатор терминала тому идентификатору терминала, которому принадлежит сам уровень протокола, и если два идентификатора терминала идентичны, то уровень протокола передает распакованные блоки данных SDU объекту верхнего уровня, который указан информацией заголовка. Если, однако, два идентификатора не идентичны, то уровень протокола отбрасывает принятый блок данных PDU.

Для достижения по меньшей мере указанных результатов в целом или частично также предложен способ передачи данных протокола, включающий в себя конкатенацию одного или более блоков данных услуги (SDU), принимаемых с верхнего уровня для формирования полезной нагрузки; присоединение заголовка к полезной нагрузке для генерации блока данных PDU; передачу сформированного блока данных PDU на нижний уровень на интервале времени передачи (TTI) и передачу сформированного блока данных PDU к приемной стороне посредством услуги физического уровня.

Для достижения по меньшей мере указанных результатов в целом или частично дополнительно предложен способ приема данных протокола, включающий в себя прием блока данных протокола (PDU) от нижнего уровня на интервале времени передачи (TTI), разделение заголовка и полезной нагрузки в принятом блоке данных PDU, распаковку полезной нагрузки на один или более блоков данных услуги (SDU) и пересылку распакованных блоков данных SDU на верхний уровень.

Дополнительные преимущества задачи и признаки изобретения излагаются в последующем описании, из которого изобретение будет понятно специалистам в данной области техники и может быть изучено при практической реализации изобретения. Задачи и преимущества изобретения могут быть реализованы в соответствии с тем, как, в частности, указано в формуле изобретения.

Краткое описание чертежей

Изобретение поясняется ниже со ссылками на чертежи, на которых одинаковыми ссылочными позициями обозначены одинаковые элементы на всех чертежах и на которых представлено следующее:

Фиг. 1 — сетевая архитектура системы UMTS;

Фиг. 2 — архитектура протокола интерфейса радиосвязи между терминалом и сетью UTRAN, которые основаны на стандартах сети радиодоступа 3GPP;

Фиг. 3 — структура уровня МАК обобщенной сети UTRAN;

Фиг. 4 — структура подуровня MAC-c/sh обобщенного терминала(UE);

Фиг. 5 — структура подуровня MAC-c/sh обобщенной сети UTRAN;

Фиг. 6 — структура подуровня MAC-d обобщенного терминала(UE);

Фиг. 7 — структура подуровня MAC-d обобщенной сети UTRAN;

Фиг. 8 — формат обобщенного блока данных MAC PDU;

Фиг. 9 — формат заголовка MAC-c/hs в соответствии с одним вариантом осуществления изобретения;

Фиг. 10А-10Е — форматы заголовка MAC-c/hs в соответствии с одним вариантом осуществления изобретения;

Фиг. 11А и 11В — форматы заголовка блока данных SDU подуровня MAC-c/hs в соответствии с одним вариантом осуществления изобретения;

Фиг. 12 — структура подуровня MAC-c/hs в соответствии с одним вариантом осуществления изобретения;

Фиг. 13 — структура подуровня MAC-c/hs сети UTRAN в соответствии с одним вариантом осуществления изобретения;

Фиг. 14 — процесс передачи на подуровне MAC-c/hs в соответствии с одним вариантом осуществления изобретения.

Предпочтительный вариант осуществления изобретения

Только для примера признаки настоящего изобретения описываются ниже для подуровня MAC-c/sh, являющегося конкретным типом подуровня объекта уровня МАС. Однако принципы настоящего изобретения применимы и к другим соответствующим типам объектов уровня MAC, в частности к тем объектам уровня МАС, которые разрабатываются в настоящее время для обработки высокоскоростных передач пакетных данных. Например, предусматривается, что принципы настоящего изобретения будут применимы к различным усовершенствованиям методов передачи данных по обратным выделенным каналам.

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


Таким образом, следует иметь в виду, что настоящее изобретение описывается в отношении конкретных типов логических каналов, транспортных каналов и физических каналов. Однако решения, предусматриваемые настоящим изобретением, в равной мере применимы к различным логическим каналам (выделенным, общим и т.д.), которые отображаются на различные транспортные каналы (выделенные, общие и т.д.), которые затем вновь отображаются на различные физические каналы (выделенные, общие и т.д.).

Фиг. 9 иллюстрирует формат заголовка подуровня MAC-c/sh в соответствии с вариантом осуществления настоящего изобретения. Как показано на фиг. 9, один блок данных PDU подуровня MAC-c/sh передается по транспортному каналу в интервале времени TTI. Каждый блок данных PDU содержит один заголовок подуровня MAC-c/sh и один или более блоков данных SDU подуровня MAC-c/sh. То есть полезная нагрузка блока данных PDU подуровня MAC-c/sh содержит один или более блоков данных SDU подуровня MAC-c/sh. Блок данных PDU подуровня MAC-c/sh может рассматриваться как блок данных PDU уровня MAC. Один блок данных PDU уровня MAC передается в транспортный канал в течение одного интервала времени TTI. Все блоки данных SDU подуровня MAC-c/sh, включенные в блок данных PDU уровня MAC, должны относиться к одному терминалу.

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

На фиг. 10А-10Е показаны форматы заголовка подуровня MAC-c/sh в соответствии с одним вариантом осуществления настоящего изобретения, иллюстрируя типы форматов заголовка подуровня MAC-c/sh для реализации согласно настоящему изобретению.

На чертежах поле TCTF представляет собой поле, указывающее тип логического канала. Более конкретно, поле TCTF является указателем того, является ли логический канал, который переслал соответствующий блок данных SDU подуровня MAC-c/sh, общим каналом управления (СССН), общим каналом трафика (СТСР) или выделенным каналом управления/выделенным каналом трафика (DCCH/DCTH). Поле типа UE-ID является полем, указывающим тип UE-ID, включенного в заголовок. Более конкретно, поле типа UE-ID идентифицирует C-RNTI, U-RNTI, DSCH-RNTI, указатель группы терминалов или указатель услуги широковещательной или групповой передачи.

Поле UE-ID является полем, включающим в себя информацию для идентификации терминала (UE), который передает соответствующий блок данных SDU подуровня MAC-c/sh, информацию для идентификации конкретной группы терминалов или информацию для идентификации конкретной услуги, связанной с конкретным терминалом UE.

Формат заголовка подуровня MAC-c/sh, показанный на фиг. 10А, может быть использован в том случае, когда логическим каналом, используемым для передачи блока данных SDU подуровня MAC-c/sh, является выделенный логический канал, а общий транспортный канал использует различные типы UE-ID и отображается на различные типы логических каналов.

Формат заголовка подуровня MAC-c/sh, показанный на фиг. 10b, может быть использован в том случае, когда логическим каналом, используемым для передачи блока данных SDU подуровня MAC-c/sh, является выделенный логический канал, а общий транспортный канал использует различные типы UE-ID.

Формат заголовка подуровня MAC-c/sh, показанный на фиг. 10С, может быть использован в том случае, когда логическим каналом, используемым для передачи блока данных SDU подуровня MAC-c/sh, является выделенный логический канал, а общий транспортный канал использует один тип UE-ID.

Формат заголовка подуровня MAC-c/sh, показанный на фиг. 10D, может быть использован в том случае, когда общий транспортный канал, используемый для передачи блока данных SDU подуровня MAC-c/sh, отображается на различные типы логических каналов.

Формат заголовка подуровня MAC-c/sh, показанный на фиг. 10Е, может быть использован в том случае, когда логическим каналом, используемым для передачи блока данных SDU подуровня MAC-c/sh, является выделенный логический канал, а общий транспортный канал использует один тип UE-ID и отображается на различные типы логических каналов.

На фиг. 11А и 11В показаны форматы блока данных SDU подуровня MAC-c/sh в соответствии с одним вариантом осуществления настоящего изобретения, иллюстрирующие различные типы форматов блока данных SDU подуровня MAC-c/sh для реализации согласно настоящему изобретению.

Формат блока данных SDU подуровня MAC-c/sh, показанный на фиг. 11А, содержит только блок данных RLC PDU и может быть использован в случае, когда логическим каналом, используемым для передачи блока данных SDU подуровня MAC-c/sh, является выделенный логический канал, и существует только один такой выделенный логический канал. То есть один выделенный логический канал используется для отображения одного транспортного канала. Блок данных RLC PDU эквивалентен блоку данных SDU подуровня MAC-c/sh.

Формат блока данных SDU подуровня MAC-c/sh, показанный на фиг. 11В, может быть использован в случае, когда логическим каналом, используемым для передачи блока данных SDU подуровня MAC-c/sh, является общий логический канал. В случае общего логического канала не может производиться мультиплексирование, так что блок данных SDU подуровня MAC-c/sh является тем же самым, что и блок данных RLC PDU. В данном случае блок данных SDU подуровня MAC-c/sh совпадает с блоком данных PDU подуровня MAC-d.

На фиг. 12 показана структура подуровня MAC-c/sh в соответствии с одним вариантом осуществления изобретения, а на фиг. 13 показана структура подуровня MAC-c/sh сети UTRAN в соответствии с одним вариантом осуществления настоящего изобретения.

Как показано на фиг. 12 и 13, в настоящем изобретении функция конкатенации (и распаковки) блоков данных SDU подуровня MAC-c/sh добавляется к известному подуровню MAC-c/sh в сети радиодоступа UTRAN и в терминале UE соответственно. Для прямого транспортного канала подуровень MAC-c/sh сети UTRAN выполняет функцию конкатенации блоков данных SDU подуровня MAC-c/sh, а подуровень MAC-c/sh терминала выполняет функцию распаковки блоков данных SDU подуровня MAC-c/sh. В то же время для обратного транспортного канала, подуровень MAC-c/sh терминала выполняет функцию конкатенации блоков данных SDU подуровня MAC-c/sh, а подуровень MAC-c/sh сети UTRAN выполняет функцию распаковки блоков данных SDU подуровня MAC-c/sh.

На фиг. 14 показан процесс передачи подуровня MAC-c/sh в соответствии с одним вариантом осуществления настоящего изобретения.

Для передачи по прямой линии связи передающей стороной является сеть радиодоступа UTRAN, а приемной стороной — терминал. В то же время для передачи по обратной линии передающей стороной является терминал, а приемной стороной — сеть радиодоступа UTRAN. На фиг. 14 верхний уровень относится к уровню, позиционированному в верхней части подуровня MAC-c/sh. В частности, верхний уровень является подуровнем MAC-d, если используется выделенный логический канал, и верхний уровень является RLC, если используется общий логический канал.

Во-первых, когда блок данных SDU подуровня MAC-c/sh передается с верхнего уровня 310 к подуровню MAC-c/sh 320 (этап S10), подуровень MAC-c/sh 320 осуществляет конкатенацию множества блоков данных SDU подуровня MAC-c/sh, подлежащих передаче в течение одного интервала TTI для формирования полезной нагрузки, и добавляет заголовок подуровня MAC-c/sh для формирования одного блока данных PDU подуровня MAC-c/sh (этап S20).

Подуровень MAC-c/sh 320 передающей стороны посылает один блок данных PDU подуровня MAC-c/sh к подуровню MAC-c/sh 330 приемной стороны посредством услуги физического уровня в каждом интервале TTI (этап S30).

Подуровень MAC-c/sh 330 удаляет заголовок подуровня MAC-c/sh из принятого блока данных PDU подуровня MAC-c/sh и распаковывает конкатенированные блоки данных SDU подуровня MAC-c/sh (этап S40). Затем подуровень MAC-c/sh 330 пересылает распакованные блоки данных SDU подуровня MAC-c/sh на верхний уровень 340 (этап S50).

Если информация идентификатора терминала (UE-ID) включена в заголовок подуровня MAC-c/sh, то подуровень MAC-c/sh 330 проверяет, является ли идентификатор терминала (UE-ID), включенный в заголовок, идентичный идентификатору терминала (UE-ID), к которому принадлежит сам подуровень MAC-c/sh 330. Если оба идентификатора терминала идентичны, то подуровень MAC-c/sh 330 пересылает распакованные блоки данных PDU верхнего уровня к объекту верхнего уровня, на который указывает информация заголовка. После этого подуровень MAC-c/sh 330 пересылает блок данных SDU подуровня MAC-c/sh на верхний уровень посредством логического канала, на который указывает информация заголовка. Если, однако, два идентификатора не идентичны, то подуровень MAC-c/sh 330 отбрасывает принятый блок PDU подуровня MAC-c/sh.

Один вариант осуществления настоящего изобретения относится к способу обработки данных протокола терминалом, содержащему конкатенирование двух или более блоков данных, принятых с верхнего уровня в течение одного интервала времени передачи (TTI), и добавление одного заголовка к конкатенированным блокам данных.

Другой вариант настоящего изобретения касается способа обработки блоков данных терминалом в системе радиосвязи, причем способ включает обнаружение двух или более блоков данных, переданных от объекта верхнего уровня, выполнение конкатенации обнаруженных блоков данных для формирования конкатенированного блока данных, добавление одного заголовка к блоку конкатенированных данных и посылку блока конкатенированных данных с присоединенным заголовком к объекту нижнего уровня.

Другой вариант настоящего изобретения касается способа обработки блоков данных, включающего прием одного или более блоков данных услуги с верхнего уровня, конкатенацию блоков данных услуги для формирования единой полезной нагрузки уровня управления доступом к среде передачи (полезной нагрузки МАС), добавление одного заголовка к полезной нагрузке МАС для формирования блока данных протокола уровня управления доступа к среде передачи (блока данных PDU уровня МАС) и посылку блока данных PDU уровня МАС к нижнему уровню.

Илон Маск рекомендует:  acronym в HTML

Другой вариант осуществления настоящего изобретения относится к уровню управления доступом к среде передачи (МАС) для терминала, содержащему первый объект для приема на каждом интервале времени передачи (TTI) одного или более блоков данных услуги от верхнего уровня и второй объект для конкатенации двух или более блоков данных услуги в полезную нагрузку уровня управления доступом к среде передачи, для добавления одного заголовка к полезной нагрузке для формирования блока данных протокола уровня управления доступом к среде передачи и для передачи блока данных протокола уровня управления доступом к среде передачи на нижний уровень.

Настоящее изобретение, как описано выше, по-новому определяет структуру блока данных протокола, передаваемого посредством транспортного канала, а также предложен способ передачи, позволяющий избежать избыточного присоединения информации идентификатора терминала (UE-ID) и типа UE-ID.

Кроме того, в настоящем изобретении за счет добавления только одного идентификатора терминала (UE-ID) и типа UE-ID в течение одного интервала TTI эффективность передачи данных увеличивается и существенным образом сокращаются потери ресурсов радиосвязи.

В частности, реализация настоящего изобретения в терминале приводит к значительному сокращению количества ресурсов радиосвязи, которые необходимо использовать в обратной линии связи. Поскольку минимизация требуемой мощности питания батарей и обработки сигналов в терминале всегда является желательной, то настоящее изобретение предпочтительным образом обеспечивает более высокую эффективность передачи данных по обратной линии связи.

Описанные выше варианты осуществления и обеспечиваемые преимущества приведены только для примера и не должны толковаться как ограничивающие объем настоящего изобретения. Принципы настоящего изобретения могут быть применены к способам и устройствам других типов. Настоящее описание является иллюстративным и не ограничивает объем изобретения. Для специалистов в данной области техники должны быть очевидны различные модификации, альтернативы и варианты. В пунктах формулы изобретения признаки, выраженные через средство и функцию, предназначены для включения в свой объем структуры, описанной как выполняющей указанную функцию, и не только структурных эквивалентов, но и эквивалентных структур.

1. Способ обработки обратной линии связи в системе беспроводной связи, заключающийся в том, что выполняют конкатенацию множества блоков данных услуги, имеющих одинаковый размер, присоединяют заголовок к конкатенированным блокам данных услуги для формирования блока данных протокола, причем заголовок содержит, по меньшей мере, один из идентификатора канала и идентификатора данных, и передают блок данных протокола на одном интервале передачи по физическому каналу.

2. Способ по п.1, отличающийся тем, что множество блоков данных услуги принимают, по меньшей мере, из одного общего логического канала.

3. Способ по п.1, отличающийся тем, что множество блоков данных услуги принимают, по меньшей мере, из одного выделенного логического канала.

4. Способ по п.1, отличающийся тем, что идентификатор канала определяет, посланы ли блоки данных услуги из общего логического канала или из выделенного логического канала.

5. Способ по п.1, отличающийся тем, что идентификатор канала определяет тип логического канала.

6. Способ по п.1, отличающийся тем, что идентификатор данных определяет терминал, передающий блоки данных услуги, или группу терминалов, передающих блоки данных услуги, и услугу, связанную с блоками данных услуги.

7. Способ по п.1, отличающийся тем, что заголовок включает в себя идентификатор типа для определения типа передаваемого идентификатора данных.

8. Способ по п.1, отличающийся тем, что физический канал представляет собой канал случайного доступа или выделенный канал.


9. Способ обработки блоков данных канала обратной линии связи в системе беспроводной связи, заключающийся в том, что принимают множество блоков данных, имеющих одинаковый размер, посланных от объекта верхнего уровня, выполняют конкатенацию множества блоков данных для формирования конкатенированного блока данных, присоединяют заголовок к конкатенированному блоку данных услуги для формирования данных обратной линии связи, причем заголовок содержит, по меньшей мере, один из идентификатора канала и идентификатора данных, и передают данные обратной линии связи объекту нижнего уровня.

10. Способ по п.9, отличающийся тем, что данные обратной линии связи передают объекту нижнего уровня в совместно используемом транспортном канале, при этом идентификатор данных определяет, передаются ли блоки данных из общего логического канала или из выделенного логического канала.

11. Способ по п.9, отличающийся тем, что множество блоков данных принимают, по меньшей мере, из одного общего логического канала.

12. Способ по п.9, отличающийся тем, что множество блоков данных принимают, по меньшей мере, из одного выделенного логического канала.

13. Способ по п.9, отличающийся тем, что идентификатор канала определяет, передаются ли блоки данных из общего логического канала или из выделенного логического канала.

14. Способ по п.9, отличающийся тем, что идентификатор канала определяет тип логического канала.

15. Способ по п.9, отличающийся тем, что идентификатор канала определяет терминал, передающий блоки данных, или группу терминалов, передающих блоки данных, и услугу, связанную с блоками данных.

16. Способ по п.9, отличающийся тем, что заголовок включает в себя идентификатор типа для определения типа передаваемого идентификатора данных.

17. Способ по п.9, отличающийся тем, что канал обратной линии связи представляет собой канал случайного доступа или выделенный канал.

18. Терминал для обработки обратной линии связи в системе беспроводной связи, содержащий модуль приема, предназначенный для приема множества блоков данных, имеющих одинаковый размер, посланных от объекта верхнего уровня, модуль объединения, предназначенный для формирования конкатенированного блока данных из множества принятых блоков данных, модуль заголовка, предназначенный для присоединения заголовка к конкатенированному блоку данных для формирования данных обратной линии связи, причем заголовок содержит, по меньшей мере, один из идентификатора канала и идентификатора данных, и модуль передачи, предназначенный для передачи данных обратной линии связи объекту нижнего уровня на одном интервале времени передачи по физическому каналу.

19. Терминал по п.18, отличающийся тем, что модуль объединения выполнен с возможностью приема блоков данных, по меньшей мере, из одного общего логического канала.

20. Терминал по п.18, отличающийся тем, что модуль объединения выполнен с возможностью приема блоков данных, по меньшей мере, из одного выделенного логического канала.

21. Терминал по п.18, отличающийся тем, что идентификатор канала определяет, посланы ли блоки данных из общего логического канала или из выделенного логического канала.

22. Терминал по п.18, отличающийся тем, что идентификатор канала определяет тип логического канала.

23. Терминал по п.18, отличающийся тем, что идентификатор канала определяет терминал, передающий блоки данных, или группу терминалов, передающих блоки данных, и услугу, связанную с блоками данных.

24. Терминал по п.18, отличающийся тем, что модуль заголовка выполнен с возможностью включения в заголовок идентификатора типа, причем идентификатор типа определяет тип передаваемого идентификатора данных.

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

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

27. Способ по п.26, отличающийся тем, что дополнительно включает анализ идентификатора данных в заголовке, чтобы определить, обработаны ли данные.

28. Способ по п.26, отличающийся тем, что дополнительно включает анализ идентификатора канала в заголовке, чтобы определить, посланы ли выделенные данные, и отображение выделенных данных, по меньшей мере, в один выделенный логический канал.

29. Способ по п.26, отличающийся тем, что дополнительно включает анализ идентификатора канала в заголовке, чтобы определить, посланы ли данные общего канала, и отображение общих данных, по меньшей мере, в один общий логический канал.

30. Способ по п.26, отличающийся тем, что заголовок включает в себя идентификатор типа и идентификатор данных, причем способ содержит анализ идентификатора типа и идентификатора данных, чтобы определить, обработаны ли данные.

31. Способ по п.26, отличающийся тем, что физический канал представляет собой канал случайного доступа или выделенный канал.

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

33. Сетевое устройство по п.32, отличающееся тем, что модуль детектирования выполнен с возможностью анализа идентификатора данных в заголовке, чтобы определить, обработаны ли данные обратной линии связи.

34. Сетевое устройство по п.32, отличающееся тем, что модуль демультиплексирования выполнен с возможностью анализа идентификатора канала в заголовке, чтобы определить, посланы ли блоки данных, по меньшей мере, из одного выделенного логического канала, и отображения блоков данных, по меньшей мере, в один выделенный логический канал.

35. Сетевое устройство по п.32, отличающееся тем, что модуль демультиплексирования выполнен с возможностью анализа идентификатора канала в заголовке, чтобы определить, посланы ли блоки данных, по меньшей мере, из одного общего логического канала, и отображения блоков данных, по меньшей мере, в один общий логический канал.

36. Сетевое устройство по п.32, отличающееся тем, что заголовок включает в себя идентификатор типа и идентификатор данных, причем модуль детектирования выполнен с возможностью анализа идентификатора типа и идентификатора данных, чтобы определить, обработаны ли данные обратной линии связи.

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

Динамическое распознавание и обработка блоков данных протокола в потоковом

Я реализовал протокол для маленькой многопользовательской игры. Она была основана на байтах, так десериализации полученных сообщения мне пришлось перебрать поток байт и разобрать его по кусочкам. После того как я все байты и знал тип сообщения, я бросил байты в обратном конструктора, построенного блок данных протокола из исходных байт.

Весь этот процесс был очень некрасиво, на самом деле не OO и был нечитаемым , если / еще код. Я должен был осуществлять reverseConstructor(byte[] bytes) для каждого блока данных протокола (PDU) я добавил. Подход , при котором какой — то схемы определяется в ПБД (например , схема = [1 байт INT ( >

Я получил намек здесь на SO использовать protobufs от Google ( По- видимому , они не фитинг моих потребностей, так как я должен был бы изменить протокол придерживаться Protobuf стандартов).

ИНФОРМАЦИЯ

Я не могу изменить протокол. Есть два различных сценария (я не хочу , чтобы поддерживать их в то же время или даже в одной и той же программы):

  • Эти блоки данных протокола имеет поле длины, закодированное в заголовке
  • Эти блоки данных протокола не имеют поля длины, но можно получить от типа сообщения, когда / где заканчивается сообщение.

Я лично фанат полей длины. Но иногда вы должны придерживаться протокола , что кто — то разработан. Таким образом, протоколы исправления. Все они имеют заголовок , который содержит идентификатор протокола, то уникальный идентификатор сообщения , и в первом сценарии поля длиной.


ВОПРОС

Может кто-нибудь дать мне очень небольшой пример с двумя простыми блоками данных протокола, которые парсятся эффективным, общий метод получения? Единственные примеры, которые я нашел в Protobuf учебников были типа: пользователь отправляет сообщение х, пользователь б ожидает сообщение X и может десериализацию его без проблем.

Но что, если пользователь б должен быть подготовлен для сообщения х, у и г. Как можно справиться с этой ситуацией без особого дублирования кода разумного способа.

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

РЕДАКТИРОВАТЬ

Я думаю , STH , как это путь. Вы можете найти больше кода здесь . Байты считываются динамически , пока объект найден, а затем положение буфера сбрасывается.

JavaDoc — mergeFrom

Разбираем данные в виде сообщения этого типа и объединить его с сообщением строится. Это лишь небольшая обертка MessageLite.Builder.mergeFrom (CodedInputStream). https://developers.google.com/protocol-buffers/docs/reference/java/com/google/protobuf/Message.Builder#mergeFrom (байт [])

Проблема в том , часть сообщений этого типа , но это должно быть возможно решить эту проблему с общим подходом.

ОБРАЗЕЦ

Вот блок данных протокола выборки. Он имеет длину поля. Существует еще один сценарий, где БРП не имеет длину поля. Это ПБД переменного размера. Есть также БРП фиксированного размера.

Для полноты. При этом представление строк в блоках данных протокола.

Информационный портал по безопасности

Атомарная обработка блоков данных без блокировки

Использование алгоритмов без блокировки всегда было чем-то пугающим для разработчика. Очень трудно представить себе организацию доступа к данным без блокировки, таким образом, чтобы два или более потока не могли одновременно обрабатывать один и тот же блок данных. Большинство разработчиков используют стандартные контейнеры типа стеков или связных списков без блокировки, но не более того. В этой же статье я хотел бы рассказать, как организовать доступ к данным в многопоточной среде без блокировки.

Основная идея такого метода заключается в том, что каждый поток использует отдельный буфер, в который копирует данные из основного буфера, обрабатывает их и затем меняет местами указатель на свой буфер с указателем на основной буфер. Рассмотрим следующий код:

В приведённом коде данные перед обработкой копируются из буфера, на который указывает data_ptr в буфер, на который указывает writer_tmp_ptr. А затем эти указатели меняются местами. Причём в data_ptr writer_tmp_ptr записывается с использованием атомарной операции compare_and_swap, которая сравнивает первый аргумент со вторым и если они совпадают, то записывает третий аргумент в первый и возвращает true. Иначе, возвращает false. Для чего это нужно? Рассмотрим на примере функции reader. Допустим поток, выполняющий эту функцию приостановился после строчки a = tmp_ptr->a; В этот момент, tmp_ptr указывает на data. Тут же начал работать поток, выполняющий функцию writer. Выполнив первую итерацию он поменял местами writer_tmp_ptr и data_ptr и начал следующую итерацию, остановившись после строчки data->b++; В данной ситуации writer_tmp_ptr указывает на data и tmp_ptr в функции reader указывает на data. Получается одновременное чтение и модификация одного и того же буфера. Но так как указатели data_ptr и tmp_ptr уже не совпадают, то операция compare_and_swap обнаружит коллизию и выполнит операцию чтения ещё раз. Почему же присваивание reader_tmp_ptr = tmp_ptr не проходит такую проверку?

Всё просто. Переменная reader_tmp_ptr является специфичной переменной для потока, в котором она выполняется. В данном примере я сделал её глобальной, что не совсем правильно, т.к. в случае, с несколькими читающими потоками, пришлось бы заводить ещё одну глобальную переменную для второго потока, и внутри функции определять, какой поток в данный момент выполняется, чтоб использовать ту или иную переменную в качестве уникального для потока указателя на буфер. Оптимальный вариант — это использование т.н. специфичные для потока переменные. Например, библиотека pthread имеет такие замечательные функции, как pthread_getspecific/pthread_setspecific. Целью же написания этого кода было наглядно показать читателю, как работает данный алгоритм. Без оптимизаций, которые могут только запутать представление о самой сути.

Казалось бы, всё идеально, программа должна выводить на экран пары одинаковых значений, но не так всё просто. Представим также, что поток, выполняющий функцию reader, остановился после строчки a = tmp_ptr->a; после чего, поток, выполняющий функцию writer, завершил 2 итерации и выполняет третью. Остановившись после завершения функции process. Далее поток, выполняющий функцию reader возобновляет свою работу. В этой ситуации значения переменных a и b не совпадут, но операция compare_and_swap вернёт true, т.к. data_ptr снова указвает на data, другими словами data_ptr и tmp_ptr снова совпадают. Это называется проблема ABA . Одним из способов решения этой проблемы, является добавление к указателю счётчика, который увеличивается каждый раз, когда ему присваивается новое значение. В следующем примере такая проблема отсутствует.

Следует отметить, что эффективность данного кода зависит от объёма копируемых данных и от сложности функции process. Если требуется атомарная обработка блоков данных, объёмами в несколько десятков мегабайт, то использование мьютексов было бы намного эффективнее. Также неплохо было бы рассмотреть возможность добавления небольшой задержки(порядка нескольких микросекунд) каждый раз после того как compare_and_swap возвращает false, чтоб дать другому потоку возможность закончить операцию. Опять-таки, наличие задержки, и время напрямую будут зависить от специфики выполняемой задачи.

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

Динамическое распознавание и обработка блоков данных протокола в поточном потоке

Я реализовал протокол для небольшой многопользовательской игры. Он был основан на байтах, поэтому для десериализации полученных сообщений мне пришлось перебирать поток байтов и разбирать его по частям. После того, как я получил все байты и знал тип сообщения, я бросил байты в обратном конструкторе, который построил блок данных протокола из необработанных байтов.

Весь этот процесс был очень уродлив, а не OO и имел нечитаемый код if/else. Я должен был реализовать reverseConstructor(byte[] bytes) для каждого блока данных протокола (pdu), который я добавил. Подход, где определен какой-либо тип схемы на pdu (например, schema = [1 байт int ( >

У меня есть намек на SO, чтобы использовать goob protobufs (По-видимому, они не соответствуют моим потребностям, так как мне нужно будет изменить протокол, чтобы придерживаться стандартов protobuf).

INFO

Я не могу изменить протокол. Существуют два разных сценария (I не, чтобы поддерживать их одновременно или даже в одной и той же программе):

  • У блоков данных протокола есть поле длины, закодированное в заголовке
  • У блоков данных протокола нет поля длины, но можно получить из типа сообщения, когда/когда сообщение заканчивается.

Я лично являюсь поклонником полей длины. Но иногда вам приходится придерживаться протокола, который кто-то еще разработал. Поэтому протоколы исправляются. Все они имеют заголовок, который содержит идентификатор протокола, уникальный идентификатор сообщения, а в первом сценарии — поле длины.

Вопрос

Может ли кто-нибудь дать мне небольшой пример с двумя простыми блоками данных протокола, которые анализируются эффективным, универсальным методом приема? Единственные примеры, которые я нашел в учебниках protobuf, были типа: пользователь отправляет сообщение x, пользователь b ожидает сообщение X и может десериализовать его без проблем.

Но что делать, если пользователь b должен быть готов для сообщений x, y и z. Как можно справиться с этой ситуацией без большого дублирования кода интеллектуальным способом.

Я также хотел бы получить советы по разработке принципов, которые позволят мне достичь большего кода здесь без использования библиотеки extern.

ИЗМЕНИТЬ

Я думаю, что это так. Вы можете найти больше кода здесь. Байты читаются динамически до тех пор, пока объект не будет найден, а затем положение буфера reset.

JavaDoc — mergeFrom

Разбирайте данные как сообщение этого типа и объедините их с построенным сообщением. Это всего лишь небольшая обертка вокруг MessageLite.Builder.mergeFrom(CodedInputStream). https://developers.google.com/protocol-buffers/docs/reference/java/com/google/protobuf/Message.Builder#mergeFrom (байт [])

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

ОБРАЗЕЦ

Вот пример блока данных протокола. Он имеет поле длины. Существует еще один сценарий, в котором pdus не имеет поля длины. Это pdu имеет переменный размер. Существуют также pdus фиксированного размера.

Для полноты. Здесь представлено представление строк в блоках данных протокола.

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL