Расшифровка плита пб: Плиты ПБ — производство, особенности, маркировка.

Содержание

Плиты ПБ — производство, особенности, маркировка.

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

Плиты ПБ, как и ПК производятся в соответствии с ГОСТ 9561 в редакции 2016 г.

Плиты ПБ — это плиты железобетонные многопустотные толщиной 220 мм, производимые методом непрерывного безопалубочного формования на длинных стендах. Предназначены для опирания с двух сторон.

Технология непрерывного безопалубочного формования ЖБИ является относительно новой и мало применялась в СССР в связи с отсутствием необходимого оборудования. Впервые данные изделия и технология безопалубочного формования официально описаны в ГОСТ 9561 (ред. 1991 г.)

Активно использовать технологию отечественные производители ЖБИ начали в период строительного бума 2000 – 2015 гг. Помимо плит ПБ, линии безопалубочного формования позволяют производить сваи, дорожные плиты, перемычки, лотки, и другие ЖБИ высокого качества и в большом объеме.

Минимальный размер цеха для размещения линии безопалубочного формования ЖБИ: 120 м — длина, 18 м – ширина, 7 м – высота потолка. Необходим также бетоносмесительный узел и склад готовой продукции.

Стоимость запуска линии достаточно высока, а ее обслуживание и обеспечение выпуска качественной продукции, требует высококвалифицированного персонала, поэтому продукт достойного качества могут выпускать только крупные заводы ЖБИ, обладающие высокой культурой производства.

Технология производства состоит из следующих этапов:

  1. На металлических стендах (дорожках) линии БОФ располагается стальная проволока класса Bp-II и выше. Количество и схема расположения прутков зависит от расчетной нагрузки плиты и может быть от 8 до 54 шт.

 

  1. Проволока натягивается специальными домкратами под давлением 80 МПа, чтобы впоследствии передать свое напряжение готовому изделию.

 

  1. Мостовым краном на линию устанавливается виброформующая установка, на которую подается бетон с БСУ. Виброформующая установка, двигаясь по стенду, формирует собственно бетонную плиту.

 

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

 

  1. Для правильного схватывания бетона заготовку на стенде накрывают термоодеялом, а сам металлический стенд нагревают до температуры 40 – 60 градусов. Как правило, длительность пропарки составляет 16 часов.

 

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

 

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

 

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

Основными недостатками плит ПБ являются:

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

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

Маркировка плит ПБ:

Плиты ПБ – плиты многопустотные железобетонные безопалубочного формования толщиной 220 мм.

Плиты 3.1 ПБ – плиты многопустотные железобетонные безопалубочного формования толщиной 160 мм.

Плиты 2 ПБ – плиты многопустотные железобетонные безопалубочного формования толщиной 265 мм.

По умолчанию плиты ПБ выпускаются с расчетной нагрузкой 800 кгс/м2. Также возможен выпуск изделий с расчетными нагрузками

от 300 до 1600 кгс/м2.

Первая цифра индекса обозначает длину изделия в дециметрах, вторая – ширину.

Плиты железобетонные ПБ – это современный и прочный строительный материал, купить плиты ПБ Вы можете в компании «ЖБИ Эксперт».

Маркировка плит перекрытия и расчет их количества для дома


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


Основные виды плит

Регламент маркировки плит перекрытия прописан в ГОСТ 23009. Обычно пишется всего 2 группы обозначений, но иногда бывает и 3:

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

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

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

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


Плиты с пустотами

Плиты перекрытия такого типа производятся в соответствии со стандартом ГОСТ 9561. Рассмотрим маркировку пустотных плит перекрытия:

  • ПК — плиты перекрытия стандартной толщины 22 см, разрабатываются старым способом при помощи опалубки.
  • ПБ — имеют те же характеристики, что и плиты ПК, только производятся более технологичным способом без использования опалубки.
  • ПНО — изготавливаются также, как и плиты ПК, но они более легкие, за свет малой толщины, всего 16 см;
  • 3,1ПБ и 1,6ПБ — более легкие плиты перекрытия (16 см), изготовленные без использования опалубки.


Остальные типы плит

Как правило, на заводах, которые изготавливают пустотные плиты, делают ещё два вида плит, которые имеют специальное назначение:

  • Полнотелые (П, ПТ) — как правило, не пользуются большим спросом у застройщиков из-за большого веса, который оказывает большую нагрузку на несущие стены здания. Из плюсов можно отметить высокую прочность изделия.
  • Ребристые (ПР, ПП, ПГ) — такие плиты очень прочные и переносят большие нагрузки из-за наличия ребер жесткости. Преимущественно используются в постройке каких-либо технических или общественных зданий, таких как торговые центры.


Примеры маркировки плит и их расшифровка

Плита с пустотами ПБ 70-10-14:

  • ПБ — изготовленная по безопалубочной технологии пустотная плита толщиной 22 см.
  • 70 — выражение длины, в данном случае 70 дм или 7 м.
  • 10 — обозначение ширины плиты, в частности 10 дм или 1 м.
  • 14 — означает предельную нагрузку на квадратный метр изделия, составляет 1400 кг.

Пример сплошной плиты перекрытия П 55-10-3:

  • П — обозначение плиты со сплошным сечением.
  • 55 — выражение длинны, 5.5 м.
  • 10 — обозначение длины плиты, 1 м.
  • 3 — означает класс прочности В3

В чем отличия ПБ от ПК?

Отличительные качества

Марка плиты

ПБ

ПК

Технология производства

Безопалубочный метод

Опалубочный метод

Максимальная длина

10,8 м

7,2 м

Несущая способность

Плиты такого вида по своей несущей способности варьируются от 300 до 1500 кг на метр квадратный.

Имеется стандартное значение несущей способности на уровне 800 кг/м

2. Однако встречаются экземпляры с показателями до 1300 кг/м2.

Состояние поверхности

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

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

Армирование

Армирование делается из напряженной арматуры.

Армирование применяется для плит с длиной более 4 метров.

Резка

Рекомендуется проводить процедуру резки только на заводе.

 

Применяем бетон

Для изготовления используют марки бетона от М400 до М500.

Для изготовления используют марки бетона от М200 до М400.


Как рассчитать плиты перекрытия

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

Масса

Марка плиты

ПК

ПБ

ПНО

1,6ПБ и 3,1ПБ

Вес конструкции в расчете на квадратный метр

275-315

290-240

200-220

210-250


Размеры самых востребованных плит

Марка плиты

Дина, см

Ширина, см

Толщина, см

ПБ

От 160 до 1080

100, 120, 150

22

ПК

ОТ 160 до 720

100, 120, 150, 180

22

ПНО

От 160 до 630

100, 120, 150

16

1,6ПБ и 3,1ПБ

От 160 до 900

100, 120, 150

16


Иные характеристики

Ключевую роль в выборе плит перекрытия играет также и характеристика несущей способности. Значение этой характеристики может варьироваться от 300 до 1600 кг на метр квадратный в зависимости от вида плиты и её габаритов.


Примерные цены

Тип

Примерная стоимость, руб

ПНО

От 2000 до 12000

ПБ

От 2000 до 30000

ПК

От 1900 до 20000

1,6ПБ и 3,1ПБ

От 2500 до 20000

Если вам необходимо заказать плиты перекрытия, то следует обратиться в IS GROUP. Мы готовы предоставить различные конструкции, в любой регион страны. У нас вы сможете найти различные дорожные плиты, аэродромные плиты блоки ФБС, СВАИ, плиты перекрытия и многие другие плиты ЖБИ. Доставка осуществляется железнодорожным транспортом. Если в вашем городе нет компании, которая может обеспечить вас строительными материалами, то обязательно обратитесь к нам по телефону +7 (495) 175 23 21.

Маркировка плит перекрытий

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

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

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

  • В первой обозначается тип плиты, к примеру, ПБ, ПК или НВ, а также её длина и ширина в дециметрах.
  • Вторая группа отвечает за допустимую нагрузку на плиту. Данный параметр указывается в килопаскалях.

Рассмотрим данные обозначения на конкретном примере. У нас есть плита с маркировкой ПК 60-12-8. Отсюда следует, что буквы ПК обозначают тип данной плиты, 60 – это её длина в дециметрах, 12 – ширина, а 8 – допустимая нагрузка.

Максимальная длина плиты может составлять 16,2 метра. Изделия стандартной ширины имеют 10 – 18 дм при толщине 220 – 400 мм.

Что такое плиты маркировки ПБ

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

  1. Складских помещений.
  2. Торгово-развлекательных центров.
  3. Гаражей, предназначенных для нескольких машин.
  4. Также такие плиты нередко применяются в каркасном домостроении.

Плиты перекрытия с маркировкой ПК

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

Как маркируются плиты перекрытий >> Расшифровка маркировок

19.10.2016

Как правило, изготовление ЖБИ выполняется в соответствие с ГОСТами, в которых указываются правила производства. Также возможно создание изделий по определенным техническим условиям.

Разница между плитами, изготовленными по ТУ, и теми, что созданы по ГОСТам, заключается в материалах и примесях.

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

Как расшифровать маркировку

Чтобы маркировка плит была понятна потребителю, разработаны стандарты ее нанесения.

Процесс регулируется ГОСТами за номерами 26434-85 и 9561-91.

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

В каждой разновидности используется буква, которая сообщает о виде плит.

  • «1П» – один слой, сплошные, 120 мм;
  • «2П» – имеют такую же конструкцию, но толщина равна 160 мм;
  • «1ПК» – толщина составляет 220 мм, имеются круглые пустоты в 159 мм;
  • «2ПК» – то же самое, но круглые пустоты имеют диаметр в 140 мм;
  • «ПБ» – сделанные по принципу безопалубочного формования конструкции, которые имеют толщину в 200 мм.

После буквы находится число.

— Первые цифры – это размер ЖБИ.

— Вторые – нагрузка, на которую они рассчитаны.

— Затем расположено обозначение класса бетона.

— В конце находится класс арматуры.

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

Расшифровка маркировки плиты перекрытия с дополнительными параметрами

Если речь идет о плите ПК, перед стандартными символами могут быть указаны как толщина изделия и размер пустот, так и тип опирания. Например, «1ПКТ» – это плита, которая предназначена для трехстороннего опирания. «1ПКК» – четырехстороннего. А вот «1ПК» рассчитана на две стороны опирания.

Первая цифра (находится в пределах от 4 до 7) говорит о том, какие габариты (толщину) имеет конструкция, а также каков диаметр пустот в соответствии с указанной в ГОСТ таблице. Если вместо буквы «К» используется «Г», значит, пустоты имеют форму груши.

При работе с облегченными железобетонными изделиями используются те же принципы. Принципы, по которым наносится маркировка, перечислены в ГОСТ 23009.



Маркировка дорожных плит: ГОСТ, расшифровка маркировки, марки плит для дороги

Маркировка дорожных плит должна выполняться согласно ГОСТ 21924.0-84.

Общие требования к маркировке

Текст состоит из буквенно-цифровых символов, разделяемых дефисами и точками. Он должен содержать:

  • марку изделия;
  • наименование фирмы-изготовителя либо товарный знак;
  • штамп проверки техническим контролем предприятия;
  • дату изготовления плиты;
  • информацию о массе изделия (если она превышает 0,8 т).

На плите также необходимо наличие монтажных знаков, указывающих:

  • места строповки;
  • центр тяжести;
  • точки опирания плиты при складировании в стеллаж;
  • установочные риски.

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

Маркировка дорожных плит должна выполняться следующими способами:

  1. краской через трафарет;
  2. штампом;
  3. маркировочной машиной;
  4. штампованием, наносимым при изготовлении изделия.

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

Расшифровка маркировки дорожных плит

Марка дорожной плиты состоит из пяти основных групп символов, например, 2П30.18-30. Первая группа указывает на назначение изделия, состоит из цифр 1 или 2. Единица обозначает плиту для постоянных дорог, цифра 2 указывает на принадлежность к изделиям для временных дорог.

Второй символ — буквенный, он обозначает форму изделия:

  • П — прямоугольная;
  • ПБ — такая же, но с одним совмещённым бортом; ПББ — с двумя совмещёнными бортами;
  • ПТ — форма трапеции;
  • ПШ — плита шестиугольная, имеет модификации ПШД, ПШП, ДШП, ПШШ, представляющие по форме её
  • половинки разной конфигурации.

Совмещённый борт — это выступ высотой 150 мм на нижней поверхности плиты (в ПБ — на одной длинной стороне, в ПББ — на двух коротких). Шестиугольные плиты применяются и производятся очень редко.

Следующие две группы символов, разделяемых точкой — это округлённый размер плиты в дециметрах. В приведенном выше примере цифры 30.18 обозначают длину 3 м, ширину 1,75 м.

В трапециевидных и шестиугольных указывается только один размер:

  • для ПТ это длина, например, 55 обозначает 5,5 м;
  • для ПШ это размер стороны, например, 12 обозначает 1,16 м.

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

В обозначении предварительно напряжённых плит после допустимой нагрузки дополнительно указывают класс арматурной стали, например АIV.
Маркировка 1П60.18-30АV соответствует дорожной плите для постоянных дорог размером 6 м Х 1,75 м, с допустимой нагрузкой 30 т и арматурой IV класса.

Маркировка по ГОСТ 25912.1

По этому стандарту выпускают ПАГ — плиты аэродромные гладкие. По показателям
прочности и долговечности их нередко используют и в качестве дорожных.

Условное обозначение этих изделий включает наименование (ПАГ), толщину плиты в сантиметрах (от 14 до 20) и класс напрягаемой арматурной стали (А-IV, А-IVC, Ат-IV). Пример: ПАГ-14V — плита ПАГ толщиной 14 см из арматуры класса V.

Маркировка по ГОСТ Р 56600-2015

Норматив распространяется на дорожные плиты из железобетона с предварительно напряжённой арматурой.

Маркировка плиты дорожной ПДН, соответствующей стандарту, состоит из цифры 1 или 2 (для постоянных или временных дорог), букв ПДН — плита дорожная напряжённая, чисел от 14 до 18, обозначающих толщину в сантиметрах. Пример: 1ПДН — 14.
Существуют и другие типы маркировок дорожных плит, выпускаемых по иным стандартам и ТУ.

Типы плит перекрытия.

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

1. Многопустотные плиты перекрытия


Многопустотные плиты перекрытия
Этот вид изделий можно назвать универсальным, т.к. его использование не ограничено типом сооружения. Основной отличительной чертой таких плит перекрытия является наличие пустот, располагающихся параллельно длине. Они практически всегда имеют круглое сечение (хотя существуют плиты и с овальным сечением, ПГ, например). Также характерно изготовление углубленных пазов по боковым граням. Производство многопустотных плит перекрытия четко определяется ГОСТом. Регламентируется длина и ширина плиты. Также существуют определенные требования к армированию. Возможно, использовать арматуру только определенного класса. И она обязательно должно иметь антикоррозийное покрытие. Многопустотные плиты перекрытия имеют широчайшую сферу применения и могут быть использованы во всех типах сооружений (как жилых, так и нежилых). Чтобы разобраться, для чего предназначена та или иная плита, достаточно обратить внимание на ее маркировку, которая обычно наносится сбоку или сверху плиты. Это группы цифр и букв, в которых первое значение указывает тип плиты, размеры в дециметрах, второе – номер несущей способности или расчетную нагрузку в килопаскалях, класс стали арматуры, вид бетона и третье – дополнительные параметры, если оны важны.
К примеру, существуют многопустотные плиты перекрытия (ПБ, ПК, НВ) высотой 220 мм. Их маркировка будет выглядеть следующим образом: П 63-12-8, h=220м

Nanopb: Справочник по API

Nanopb: Справочник по API В комплекте:

Варианты компиляции

Следующие параметры можно указать одним из двух способов:

  1. Использование переключателя -D в командной строке компилятора C.
  2. Использование #define в верхней части pb.h.

ПРИМЕЧАНИЕ. У вас должны быть одинаковые настройки для библиотеки nanopb и всего кода, который включает заголовки nanopb.

  • PB_ENABLE_MALLOC : включить поддержку динамического распределения в декодере.
  • PB_MAX_REQUIRED_FIELDS : Максимальное количество proto2 обязательных полей для проверки наличия. Значение по умолчанию — 64. Предупреждение компилятора сообщит, нужно ли вам это.
  • PB_FIELD_32BIT : добавлена ​​поддержка для номеров тегов полей более 65535, полей размером более 64 КБ и массивов более 65535 записей. Предупреждение компилятора скажет, нужно ли вам это.
  • PB_NO_ERRMSG : отключить поддержку сообщений об ошибках для сохранения размера кода. Единственная информация об ошибке — это возвращаемое значение true / false .
  • PB_BUFFER_ONLY : отключить поддержку пользовательских потоков. Поддерживает только кодирование и декодирование с буферами памяти. Ускоряет выполнение и немного уменьшает размер кода.
  • PB_SYSTEM_HEADER : замените файлы заголовков стандартов одним специфичным для системы файлом заголовка. Значение должно включать кавычки, например #define PB_SYSTEM_HEADER "foo.h" . См. Пример в extra / pb_syshdr.h.
  • PB_WITHOUT_64BIT : отключить поддержку 64-битных целочисленных полей для старых компиляторов или для небольшого ускорения на 8-битных платформах.
  • PB_ENCODE_ARRAYS_UNPACKED : кодировать скалярные массивы в распакованном формате, который занимает больше места. Используется только в том случае, если декодер на принимающей стороне не может обрабатывать упакованные массивы, такие как версии protobuf.js до 2020 г.
  • PB_CONVERT_DOBULE_FLOAT : преобразование двойных чисел в числа с плавающей запятой для платформ, которые не поддерживают 64-битный тип данных double . В основном процессоры AVR .
  • PB_VALIDATE_UTF8 : Проверить, являются ли входящие строки допустимыми последовательностями UTF-8.Добавляет небольшое снижение производительности и размера кода.

Параметры PB_MAX_REQUIRED_FIELDS и PB_FIELD_32BIT позволяют повысить некоторые ограничения типов данных для соответствия более крупным сообщениям. Их потребность автоматически распознается C-препроцессором #if -directives в сгенерированных файлах .pb.c . По умолчанию используется наименьший тип данных (наименьшее количество используемых ресурсов).

Параметры прото файла

Поведение генератора можно настроить с помощью нескольких опций, определенных в nanopb.proto в папке генератора. Вот список наиболее распространенных опций, но полный список смотрите в файле:

  • max_size : Максимальный размер выделен для полей байтов и строки . Для строк это включает завершающий ноль.
  • max_length : максимальная длина строки полей. Установка этого значения эквивалентна установке max_size на значение длины +1.
  • max_count : Максимальное количество записей в массивах ( повторяющихся полей).
  • тип : выберите способ выделения памяти для созданного поля. Значение по умолчанию — FT_DEFAULT , по умолчанию — FT_STATIC , если возможно, и FT_CALLBACK , если невозможно. Вы можете использовать FT_CALLBACK , FT_POINTER , FT_STATIC или FT_IGNORE для выбора поля обратного вызова, динамически выделяемого dfield, статически назначенного поля или для полного игнорирования поля.
  • long_names : префикс имени перечисления к значению перечисления в определениях, т.е.е. EnumName_EnumValue . Включено по умолчанию.
  • pack_struct : Сделать сгенерированные структуры упакованными, что сэкономит место в ОЗУ, но замедлит выполнение. Это можно использовать, только если ЦП поддерживает невыровненный доступ к переменным.
  • skip_message : пропустить все сообщение из поколения. Может использоваться для удаления типов сообщений, которые не нужны приложению.
  • no_unions : сгенерировать одно из полей как несколько дополнительных полей вместо объединения C {} .
  • anonymous_oneof : сгенерировать одно из полей как анонимное объединение.
  • msgid : указывает уникальный идентификатор для этого типа сообщения. Может использоваться кодом пользователя в качестве идентификатора.
  • fixed_length : создать поля размером байтов с постоянной длиной, определяемой параметром max_size . В этом случае отдельное поле .size не будет создано.
  • fixed_count : создание массивов постоянной длины, определяемой параметром max_count .
  • package : Имя пакета, применимое только для генератора нанопр. По умолчанию используется имя, определенное ключевым словом package в файле .proto, которое применяется для всех языков.
  • int_size : переопределить целочисленный тип поля. Например, укажите int_size = IS_8 , чтобы преобразовать int32 из определения протокола в int8_t в структуре.

Эти параметры можно определить для файлов .proto перед их преобразованием с помощью генератора nanopb.ру. Есть три способа определить параметры:

  1. Использование отдельного файла .options. Это позволяет использовать подстановочные знаки для применения одинаковых параметров к нескольким полям.
  2. Определение параметров в командной строке nanopb_generator.py. Это имеет смысл только для настроек, которые применяются ко всему файлу.
  3. Определение параметров в файле .proto с использованием расширений nanopb. Это сохраняет параметры близко к полям, к которым они применяются, но может быть проблематичным, если один и тот же файл .proto используется во многих проектах.

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

Определение параметров в файле .options

Предпочтительный способ определения параметров — иметь отдельный файл «myproto.options» в том же каталоге, что и «myproto.proto». :

Генератор автоматически найдет этот файл и прочитает из него параметры. Формат файла следующий:

  • Строки, начинающиеся с # или // , считаются комментариями.
  • Пустые строки игнорируются.
  • Все остальные строки должны начинаться с шаблона имени поля, за которым следует один или несколько параметров. Например: MyMessage.myfield max_size: 5 max_count: 10 .
  • Шаблон имени поля сопоставляется со строкой формы Message.field . Для вложенных сообщений строка Message.SubMessage.field . Целый файл может быть сопоставлен по имени файла dir / file.proto .
  • Шаблон имени поля может использовать нотацию, распознаваемую Python fnmatch ():
    • * соответствует любой части строки, например Message.* для всех полей
    • ? соответствует любому одиночному символу
    • [seq] соответствует любому из символов s , e и q
    • [! Seq] соответствует любому другому символу
  • Параметры записываются как имя_параметра: значение_параметра , и несколько параметров могут быть определены в одной строке, разделенных пробелом.
  • Параметры, определенные позже в файле, переопределяют параметры, указанные ранее, поэтому имеет смысл сначала определить параметры подстановочных знаков в файле, а более конкретные — позже.

Для устранения проблем с применением опций можно использовать опцию -v для генератора nanopb. В протоколе параметры плагина указываются с помощью --nanopb_opt :

Protoc в настоящее время не передает путь включения в плагины. Следовательно, если ваш .proto находится в подкаталоге, у nanopb могут возникнуть проблемы с поиском связанного файла .options . Обходной путь — указать путь включения отдельно к плагину nanopb, например:

Если желательно, имя файла опций можно задать с помощью аргумента генератора -f .

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

nanopb_generator.py имеет простой параметр командной строки -s OPTION: VALUE . Параметр применяется ко всему обрабатываемому файлу.

Определение параметров в файле .proto

Формат файла .proto позволяет определять пользовательские параметры для полей. Библиотека nanopb поставляется с nanopb.proto , которая делает именно это, позволяя вам определять параметры непосредственно в файле .proto:

  импорт "нанопб.прото ";

message MyMessage {
    требуемая строка name = 1 [(nanopb) .max_size = 40];
    повторяющиеся int32 ids = 4 [(nanopb) .max_count = 5];
}  

Небольшая сложность заключается в том, что вы должны указать путь включения протокола protoc, чтобы можно было найти nanopb.proto. Поэтому, чтобы скомпилировать файл .proto, который использует параметры, используйте команду protoc, подобную:

Параметры могут быть определены в областях файла, сообщения и поля:

  вариант (nanopb_fileopt) .max_size = 20; // Область файла
сообщение Сообщение
{
    вариант (nanopb_msgopt).max_size = 30; // Область сообщения
    обязательная строка fieldsize = 1 [(nanopb) .max_size = 40]; // Область действия поля
}  

пб.х

pb_byte_t

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

Для большинства платформ это эквивалент uint8_t . Однако некоторые платформы не поддерживают 8-битные переменные, и на этих платформах для каждого байта необходимо использовать 16 или 32 бита.

pb_size_t

Тип, используемый для хранения номеров тегов и размеров полей сообщения.По умолчанию тип 16-битный:

Если требуются номера тегов или поля, превышающие 65535, можно использовать параметр PB_FIELD_32BIT для изменения типа на 32-битное значение.

pb_type_t

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

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

PB_LTYPE_BOOL 0x00 Boolean.
PB_LTYPE_VARINT 0x01 Целое число.
PB_LTYPE_UVARINT 0x02 Целое число без знака.
PB_LTYPE_SVARINT 0x03 Целое число в зигзагообразной кодировке.
PB_LTYPE_FIXED32 0x04 32-битное целое число или с плавающей запятой.
PB_LTYPE_FIXED64 0x05 64-битное целое число или с плавающей запятой.
PB_LTYPE_BYTES 0x06 Структура с полем size_t и байтовым массивом.
PB_LTYPE_STRING 0x07 Строка с завершающим нулем.
PB_LTYPE_SUBMESSAGE 0x08 Структура вложенного сообщения.
PB_LTYPE_SUBMSG_W_CB 0x09 Подсообщение с обратным вызовом до декодирования.
PB_LTYPE_EXTENSION 0x0A Указатель на pb_extension_t .
PB_LTYPE_FIXED_LENGTH_BYTES 0x0B Встроенный pb_byte_t массив фиксированного размера.

Биты 4–5 определяют, является ли поле обязательным, необязательным или повторяющимся. Существуют отдельные определения для семантически разных режимов, хотя некоторые из них имеют общие значения и различаются на основе значений других полей:

PB_HTYPE_REQUIRED 0x00 Убедитесь, что поле существует в декодированном сообщении.
PB_HTYPE_OPTIONAL 0x10 Используйте отдельный has_ ​​ boolean, чтобы указать, присутствует ли поле.
PB_HTYPE_SINGULAR 0x10 Поле Proto3, которое присутствует, когда его значение не равно нулю.
PB_HTYPE_REPEATED 0x20 Повторяющееся поле с предварительно выделенным массивом. Разделите _count для количества элементов.
PB_HTYPE_FIXARRAY 0x20 Повторяющееся поле постоянной длины.
PB_HTYPE_ONEOF 0x30 Oneof-field, может присутствовать только одно поле из каждой группы.

Биты 6-7 определяют способ распределения памяти для поля:

PB_ATYPE_STATIC 0x00 Статически выделенное хранилище в структуре.
PB_ATYPE_POINTER 0x80 Динамически выделяемое хранилище. Поле Struct содержит указатель на хранилище.
PB_ATYPE_CALLBACK 0x40 Поле с динамическим размером памяти. Поле структуры содержит указатель на функцию обратного вызова.

pb_msgdesc_t

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

field_count Общее количество полей в сообщении.
field_info Указатель на компактное представление полевой информации.
submsg_info Указатель на массив указателей на дескрипторы вложенных сообщений.
default_value Значения по умолчанию для этого сообщения как закодированного сообщения protobuf.
field_callback Функция, используемая для обработки всех полей обратного вызова в этом сообщении. По умолчанию pb_default_field_callback () , который загружает обратные вызовы для каждого поля из структуры pb_callback_t .

pb_field_iter_t

Описывает одно поле структуры с положением в памяти относительно других. Информация поля сохраняется в компактном формате и загружается в pb_field_iter_t с помощью функций, определенных в pb_common.h .

дескриптор Указатель на pb_msgdesc_t для сообщения, содержащего это поле.
сообщение Указатель на начало структуры сообщения.
индекс Индекс поля внутри сообщения
field_info_index Индекс внутреннего массива field_info
required_field_index Индекс, учитывающий только обязательные поля
submessage_index Индекс, учитывающий только вложенные сообщения
тег Номер тега, определенный в .proto для этого поля.
размер_данных sizeof () поля в структуре. Для повторяющихся полей это одна запись в массиве.
размер_массива Максимальное количество элементов в статически распределенном массиве.
тип Тип (pb_type_t) поля.
p Поле Указатель на хранилище поля в структуре.
p Данные Указатель на содержимое данных.Для массивов и указателей он может отличаться от pField .
p Размер Указатель для подсчета или имеет поле, или NULL, если в этом поле его нет.
submsg_desc Для полей вложенного сообщения указывает на дескриптор вложенного сообщения.

По умолчанию pb_size_t является 16-битным, ограничивая размеры и теги 65535. Предел можно увеличить, задав PB_FIELD_32BIT .

pb_bytes_array_t

Массив байтов с полем для хранения длины:

В реальном массиве длина байтов может быть другой.Макросы PB_BYTES_ARRAY_T () и PB_BYTES_ARRAY_T_ALLOCSIZE () используются для выделения памяти переменной длины для байтовых полей.

pb_callback_t

Часть структуры сообщения, для полей с типом PB_HTYPE_CALLBACK:

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

При вызове pb_encode, funcs.encode используется, аналогично при вызове pb_decode используется funcs.decode . Указатели функций хранятся в той же ячейке памяти, но имеют несовместимые типы. Вы можете установить указатель функции на NULL, чтобы пропустить поле.

pb_wire_type_t

Протокол буферизует типы проводов. Они используются с pb_encode_tag. :

pb_extension_type_t

Определяет функции обработчика и вспомогательные данные для поля, которое расширяет другое сообщение. Обычно генерируется автоматически nanopb_generator.py .

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

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

pb_extension_t

Связывает вместе тип поля расширения и хранилище для значения поля. Для структур сообщений с расширениями генератор добавит поле pb_extension_t * . Он должен указывать на связанный список расширений.

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

PB_GET_ERROR

Получить текущее сообщение об ошибке из потока или строку-заполнитель, если сообщения об ошибке нет:

Это должно использоваться для ошибок печати, например:

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

PB_RETURN_ERROR

Установить сообщение об ошибке и вернуть false:

Это должно использоваться для обработки условий ошибки внутри функций nanopb и функций обратного вызова пользователя:

Параметр msg должен быть постоянной строкой.

PB_BIND

Этот макрос генерирует pb_msgdesc_t и связанные с ним массивы на основе списка полей в формате X-macro. :

msgname Имя типа сообщения.Ожидается существование макроса msgname_FIELDLIST .
имя структуры Имя структуры C для привязки.
ширина Количество слов на дескриптор поля или AUTO для использования минимально возможного размера.

Этот макрос автоматически вызывается внутри автоматически сгенерированных файлов .pb.c . Пользовательский код также может вызывать его для связывания типов сообщений с настраиваемыми структурами или типами классов.

pb_encode.h

pb_ostream_from_buffer

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

buf Буфер памяти для записи.
увеличенный размер Максимальное количество байтов для записи.
возвращает Выходной поток.

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

pb_write

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

поток Выходной поток для записи.
buf Указатель на буфер с данными для записи.
количество Количество байтов для записи.
возвращает Истина в случае успеха, ложь, если превышена максимальная длина или произошла ошибка ввода-вывода.

ПРИМЕЧАНИЕ: В случае ошибки значение bytes_written не увеличивается. В зависимости от используемого обратного вызова повторный вызов pb_write после того, как он потерпел неудачу, может вызвать неопределенное поведение. Сам Nanopb никогда этого не делает, вместо этого он возвращает ошибку пользовательскому приложению. Встроенный pb_ostream_from_buffer можно безопасно вызывать снова после неудачной записи.

pb_encode

Кодирует содержимое структуры как сообщение буферизации протокола и записывает его в выходной поток. :

поток Выходной поток для записи.
полей Дескриптор сообщения, обычно создается автоматически.
src_struct Указатель на структуру сообщения. Должно соответствовать полей дескриптора.
возвращает Истина в случае успеха, ложь при любом состоянии ошибки.Сообщение об ошибке установлено на stream-> errmsg .

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

pb_encode_ex

Кодирует сообщение с расширенным поведением, установленным флагами:

поток Выходной поток для записи.
полей Дескриптор сообщения, обычно создается автоматически.
src_struct Указатель на структуру сообщения. Должно соответствовать полей дескриптора.
флаги Расширенные опции, см. Ниже.
возвращает Истина в случае успеха, ложь при любом состоянии ошибки. Сообщение об ошибке установлено на stream-> errmsg .

Можно определить следующие параметры:

  • PB_ENCODE_DELIMITED : Укажите длину сообщения с помощью префикса длины в кодировке varint.Совместим с parseDelimitedFrom в библиотеке Google protobuf.
  • PB_ENCODE_NULLTERMINATED : Укажите длину сообщения, добавив после него нулевое значение тега. Поддерживается декодером nanopb, но не большинством других библиотек protobuf.

pb_get_encoded_size

Вычисляет длину закодированного сообщения.

размер Расчетный размер закодированного сообщения.
полей Дескриптор сообщения, обычно создается автоматически.
src_struct Указатель на данные, которые будут сериализованы.
возвращает Истина в случае успеха, ложь при обнаружении ошибок в описании поля или если кодировщик поля возвращает ложь.

Кодировщики полей обратного вызова

Функции с именами pb_encode_ используются при работе с полями обратного вызова.Типичная причина использования обратных вызовов - наличие массива неограниченного размера. В этом случае pb_encode вызовет вашу функцию обратного вызова, которая, в свою очередь, будет повторно вызывать функции pb_encode_ для записи значений.

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

Запись упакованных массивов немного сложнее: вам нужно использовать pb_encode_tag и указать PB_WT_STRING в качестве типа провода.Затем вам нужно точно знать, сколько данных вы собираетесь записать, и использовать pb_encode_varint для записи количества байтов перед записью фактических данных. Подпотоки можно использовать для определения количества байтов заранее; см. исходный код pb_encode_submessage для примера.

См. Документацию по формату кодирования Google Protobuf для получения справочной информации о проводном формате Protobuf.

pb_encode_tag

Начинает поле в двоичном формате буферов протокола: кодирует номер поля и тип провода данных.

поток Выходной поток для записи. Будет записано 1-5 байтов.
тип провода PB_WT_VARINT , PB_WT_64BIT , PB_WT_STRING или PB_WT_32BIT
field_number Идентификатор поля, определенного в файле .proto. Вы можете получить его из поля -> тег .
возвращает Истина в случае успеха, ложь в случае ошибки ввода-вывода.
pb_encode_tag_for_field

То же, что и pb_encode_tag, за исключением того, что принимает параметры из структуры pb_field_iter_t .

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

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

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

BOOL, VARINT, UVARINT, SVARINT PB_WT_VARINT
ФИКСИРОВАННАЯ 64 PB_WT_64BIT
СТРОКА, БАЙТОВ, ПОДСООБЩЕНИЕ, FIXED_LENGTH_BYTES PB_WT_STRING
ФИКСИРОВАННАЯ 32 PB_WT_32BIT
pb_encode_varint

Кодирует целое число со знаком или без знака в формате varint.Работает для полей типа bool , enum , int32 , int64 , uint32 и uint64 :

поток Выходной поток для записи. Будет записано 1-10 байт.
значение Значение для кодирования, приведение к uint64_t .
возвращает Истина в случае успеха, ложь в случае ошибки ввода-вывода.

ПРИМЕЧАНИЕ. Значение в аргументе будет преобразовано в uint64_t .Чтобы кодировать значения со знаком, аргумент должен быть сначала приведен к int64_t для правильного расширения знака.

pb_encode_svarint

Кодирует целое число со знаком в зигзагообразном формате. Работает для полей типа sint32 и sint64 :

(параметры такие же, как для pb_encode_varint

pb_encode_string

Записывает длину строки как varint, а затем содержимое строки. Работает для полей типа байтов и строк :

поток Выходной поток для записи.
буфер Указатель на строковые данные.
размер Количество байтов в строке. Передайте strlen (s) для струнных.
возвращает Истина в случае успеха, ложь в случае ошибки ввода-вывода.
pb_encode_fixed32

Записывает 4 байта в поток и меняет местами байты на архитектурах с прямым порядком байтов. Работает для полей типа fixed32 , sfixed32 и float :

поток Выходной поток для записи.Будет записано 4 байта.
значение Указатель на 4-байтовую большую переменную C, например uint32_t foo; .
возвращает Истина в случае успеха, ложь в случае ошибки ввода-вывода.
pb_encode_fixed64

Записывает 8 байтов в поток и меняет местами байты в архитектуре с прямым порядком байтов. Работает для полей типа fixed64 , sfixed64 и double :

поток Выходной поток для записи.Будет записано 8 байт.
значение Указатель на 8-байтовую большую переменную C, например uint64_t foo; .
возвращает Истина в случае успеха, ложь в случае ошибки ввода-вывода.
pb_encode_float_as_double

Кодирует 32-битное значение с плавающей запятой , чтобы оно выглядело как 64-битное double в закодированном сообщении. Это иногда необходимо, когда такие платформы, как AVR, которые не поддерживают 64-битные double , должны взаимодействовать с использованием типа сообщения, содержащего поля double .

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

Кодирует поле вложенного сообщения, включая его размер. Работает для полей любого типа сообщения.

поток Выходной поток для записи.
полей Указатель на автоматически сгенерированный дескриптор сообщения для типа вложенного сообщения, например MyMessage_fields .
src Указатель на структуру, в которой находятся данные вложенного сообщения.
возвращает Истина в случае успеха, ложь в случае ошибок ввода-вывода, ошибок pb_encode или если размер вложенного сообщения изменяется между вызовами.

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

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

pb_decode.h

pb_istream_from_buffer

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

buf Указатель на массив байтов для чтения.
увеличенный размер Размер байтового массива.
возвращает Входной поток готов к использованию.

pb_read

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

поток Входной поток для чтения.
buf Буфер для хранения данных или NULL , чтобы просто читать данные, не сохраняя их где-либо.
количество Число байтов для чтения.
возвращает Истина в случае успеха, ложь, если stream-> bytes_left меньше count или если возникает ошибка ввода-вывода.

О конце файла сигнализирует stream-> bytes_left , равное нулю после того, как pb_read вернет false.

pb_decode

Считывает и декодирует все поля структуры. Читается до EOF во входном потоке.

поток Входной поток для чтения.
полей Дескриптор сообщения, обычно создается автоматически.
dest_struct Указатель на структуру сообщения, в которой будут храниться данные.
возвращает Истина в случае успеха, ложь при любом состоянии ошибки.Сообщение об ошибке будет в stream-> errmsg .

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

Для необязательных полей эта функция применяет значение по умолчанию и устанавливает для has_ ​​ значение false, если поле отсутствует.

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

pb_decode_ex

То же, что и pb_decode, но допускает расширенные параметры.

поток Входной поток для чтения.
полей Дескриптор сообщения, обычно создается автоматически.
dest_struct Указатель на структуру сообщения, в которой будут храниться данные.
флаги Расширенные опции, см. Ниже
возвращает Истина в случае успеха, ложь при любом состоянии ошибки. Сообщение об ошибке будет в stream-> errmsg .

Следующие параметры могут быть определены и объединены с поразрядным | оператор:

  • PB_DECODE_NOINIT : не инициализировать структуру перед декодированием. Это можно использовать для объединения нескольких сообщений или если вы уже сами инициализировали структуру сообщения.

  • PB_DECODE_DELIMITED : Ожидается префикс длины в формате varint перед сообщением. Аналог PB_ENCODE_DELIMITED .

  • PB_DECODE_NULLTERMINATED : Ожидается, что сообщение будет завершено нулевым тегом. Аналог PB_ENCODE_NULLTERMINATED .

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

pb_release

Освобождает все динамически размещенные поля:

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

Эта функция доступна, только если определено PB_ENABLE_MALLOC .Он освободит все поля типа указателя в структуре и установит указатели на NULL .

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

pb_decode_tag

Расшифровать тег, который стоит перед полем в кодировке protobuf:

поток Входной поток для чтения.
тип_провода Указатель на переменную, в которой будет сохранен тип провода поля.
тег Указатель на переменную, в которой будет сохранен тег поля.
eof Указатель на переменную, в которой хранится состояние конца файла.
возвращает Истина в случае успеха, ложь в случае ошибки или EOF.

Когда сообщение (поток) заканчивается, эта функция вернет false и установит для eof значение true. При других ошибках eof будет установлено в false.

pb_skip_field

Удалить данные поля из потока без фактического их декодирования:

поток Входной поток для чтения.
тип_провода Тип поля, которое нужно пропустить.
возвращает Истина в случае успеха, ложь в случае ошибки ввода-вывода.

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

Декодеры поля обратного вызова

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

Для декодирования числовых (включая нумерованные и логические) значений используйте pb_decode_varint, pb_decode_svarint, pb_decode_fixed32 и pb_decode_fixed64. Они принимают указатель на 32- или 64-разрядную переменную C, которую затем можно преобразовать в меньший тип данных для хранения.

Для декодирования полей строк и байтов длина уже декодирована, а функции обратного вызова предоставляется субпоток с ограниченной длиной.Следовательно, вы можете проверить общую длину в stream-> bytes_left и прочитать данные с помощью pb_read.

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

pb_decode_varint

Считывает и декодирует целое число в кодировке varint.

поток Входной поток для чтения. Будет прочитано 1-10 байтов.
назначение Хранение декодированного целого числа.Значение не определено при ошибке.
возвращает Истина в случае успеха, ложь, если значение превышает диапазон uint64_t или возникает ошибка ввода-вывода.
pb_decode_varint32

То же, что и pb_decode_varint , но ограничивает значение 32 битами:

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

pb_decode_svarint

Аналогично pb_decode_varint, за исключением того, что выполняет зигзагообразное декодирование значения. Это соответствует типам данных Protocol Buffers sint32 и sint64 . :

(параметры такие же, как у pb_decode_varint)

pb_decode_fixed32

Декодирует значение fixed32 , sfixed32 или float .

поток Входной поток для чтения. Будет прочитано 4 байта.
назначение Указатель на пункт назначения int32_t , uint32_t или с плавающей запятой .
возвращает Истина при успехе, ложь при ошибках ввода-вывода.

Эта функция считывает 4 байта из входного потока. В архитектурах с прямым порядком байтов он меняет порядок байтов на обратный. Наконец, он записывает байты в dest .

pb_decode_fixed64

Декодирует fixed64 , sfixed64 или double value. :

поток Входной поток для чтения. Будет прочитано 8 байт.
назначение Указатель на пункт назначения int64_t , uint64_t или double .
возвращает Истина при успехе, ложь при ошибках ввода-вывода.

То же, что и pb_decode_fixed32, за исключением того, что читает 8 байтов.

pb_decode_double_as_float

Декодирует 64-битное значение double в 32-битную переменную с плавающей запятой . Аналог pb_encode_float_as_double. :

поток Входной поток для чтения. Будет прочитано 8 байт.
назначение Указатель на пункт назначения float .
возвращает Истина при успехе, ложь при ошибках ввода-вывода.
pb_make_string_substream

Расшифруйте длину поля с помощью типа провода PB_WT_STRING и создайте подстроку

Кодирование пластины Пенсильвании

Пенсильвания Табличка кодовая

Страница обновлена 31.10.2020

ПЕРЕЙДИТЕ К ТАБЛИЦЕ КОДОВ

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

Страница состоит из первых двух столбцов, в которых перечислены префиксы и суффиксы в буквенно-цифровой порядок. Некоторые приставки номеров фиксированы. За пример Таблички выпускников Penn State всегда начинаются с P / S. Некоторая тарелка префиксы прогрессивные, например Пассажирские номера, которые начались с серии DAA. Следует отметить, что не все комбинации в прогрессивной серии используются и не все буквы. Некоторые комбинации опущены для различные причины могут быть сочтены оскорбительными, могут использоваться где-то еще и т. д.Определенный буквы не используются регулярно, такие как I, O, Q, U. Это не жесткое правило, но обычно эти буквы не используются. появляются в прогрессивном сериале. Однако они появляются в определенных префиксах кода. и суффиксы. За Например, буква I появляется на табличке "Коммерческий инвентарь животноводства". Буква O появляется на табличке Омнибуса. В качестве примечания может быть полезно посетите веб-страницы Plate Highs, чтобы лучше понять, где различная тарелка прогрессии в настоящее время стоят.

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

Некоторые префиксы также можно найти в положение суффикса, например, муниципальные (MG) номера.На некоторых пластинах используется комбинация префикса и суффикса, например, Коммерческий инвентарь животноводства, который имеет префикс CI и суффикс H. Специальная организационная / специальность пластины обычно имеют логотип, 2 уложенных друг на друга префикса или суффикса, а затем 5 цифр. Этот не всегда так. У некоторых есть 2 сложенных друг за другом буквы префикса и только 4 числа. С распространением специальных организационных и специальных табличек, это стало необходимо расширить коды номеров за пределы двух букв на многих типах.Например утки Unlimited использует DU в качестве префикса. Затем Университет Дюкен и Drexel University пришли, все желающие использовать DU, поэтому возникла необходимость совместно использовать префиксы путем расширения их до 3-х символов. Теперь Ducks использует DU0, Duquesne использует DU2, а Drexel имеет DU4. НАСКАР серия использует использование трехсимвольных буквенно-цифровых префиксов за которыми следуют четыре числа. Мотоцикл и мопед бирки дилера используют 4-значное число, затем очень маленькими буквами поперек внизу таблички расположены буквы MCD или MPD.Это приставки используются для обозначения типа пластины, даже если они находятся внизу пластины. В некоторых типах пластин не используется любые префиксные или суффиксные коды. Это не означает, что не используется какой-либо конкретный формат, только что эти пластины не используют никаких альфа-префиксов.

Таблички DCNR также перечислены внизу стол

Руководство по APTDecoder

APTDecoder - это бесплатное программное обеспечение от Patrik Tast из Встервика в Финляндии, которое позволяет записывать аудио NOAA APT, преобразовывать его в изображения погоды, а затем обрабатывать их для добавления цвета, удаления шума и т. Д. создать блог и многое другое.Хотя APTDecoder все еще находится в стадии непрерывной разработки, он уже предлагает множество функций. что делает его мощным соперником другим признанным фаворитам в этой области.

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

Ссылки для скачивания двух версий:
APTDecoder v 1.0,2,70
APTDecoder версии 2.0.5.88

Скачать ежеквартальную статью GEO 2005 по адресу:
Статья APTDecoder

Начальная настройка

APTDecoder предлагает множество пользовательских опций.

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

Откройте меню «Справка / О программе» и щелкните там, где написано «Создать ярлык на рабочем столе»
Щелкните «Настройки / Общие настройки» и на вкладке «Общие» отметьте «Включить автоматическую запись и обработку» так что проходы спутников будут фиксироваться автоматически.
Откройте «Настройки / Наземная станция» и введите свою широту, долготу, высоту и название станции.
Убедитесь, что вы подключены к сети, затем откройте «Спутниковые / кеплеровские элементы» и щелкните «Загрузить» для импорта. последние 2-строчные элементы
Откройте «Спутники / активные APT-спутники» и поставьте галочку напротив названий этих спутников из которые вы хотите создавать изображения.
Примечание : Если спутник не отмечен, программа ничего делать не будет!

Захват первого изображения

Теперь просто оставьте APTDecoder включенным. Легенда вверху экрана сообщает, какой спутник приближается и постоянно обновляет свой азимут и высоту, а также указывает максимальную высоту и AOS (Acquisition Of Сообщите время, когда спутник поднимется над вашим горизонтом). Затем начинается захват сигнала, изображение отображается в в режиме реального времени по мере его наращивания.


Создание изображения NOAA в окне APTDecoder

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

Настройка громкости записи

Для пользователей Windows XP - Windows 7

Если у вас уже есть другое программное обеспечение, такое как WXsat или WXtoImg , удовлетворительно работающее на вашем ПК, запись уровень должен оказаться удовлетворительным для APTDecoder , и ваши изображения должны отображать полный диапазон тонов.В противном случае подождите пока не будет сформирован спутниковый снимок, нажмите «Инструменты / Управление записью» . Установите флажок 'Select' для входной канал, подключенный к ресиверу (линейный вход или микрофон, в зависимости от ситуации), и отрегулируйте его ползунок громкости пока декодируемое изображение NOAA не покажет хороший диапазон тонов без «выгорания» деталей облаков.

Для пользователей Windows 10 - Важно

Не делать щелкните «Инструменты / Управление записью» , так как это попытается задействовать служебную программу, которой нет в Windows ‑ 10, и вызовет остановку программы. Вместо откройте панель Windows 10 « Звук / Запись », щелкните правой кнопкой мыши соответствующий параметр (линейный вход, микрофон и т. Д.), Щелкните Свойства , выберите вкладку уровней и отрегулируйте ползунок громкости. там. или что угодно)

Система подачи документов

APTDecoder создает новую папку данных каждый год, содержащую подпапку для каждого месяца. и дополнительная подпапка, если требуется, для каждого дня месяца. Каждый проход NOAA генерирует три файла: файл WAV. содержащий спутниковый звук, изображение JPEG в стандартном формате NOAA, состоящее из двух расположенных рядом изображений, и текстовый файл, который содержит полную информацию о проходе (название спутника, время AOS и LOS, сведения о станции и набор двухстрочных элементов).

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

Оптимизация приема изображений

Даже если вы потрудитесь тщательно установить уровень записи, вы вполне можете обнаружить, что ваши изображения все еще вам не хватает яркости и контраста. APTDecoder имеет встроенные инструменты для изменения параметров изображения по умолчанию. в меню «Настройки / Общие настройки / Свойства изображения / Улучшения» .

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

Изменение изображений

После получения основного двухканального изображения NOAA его можно обработать различными способами. Два канала, Видео-A (дневной видимый канал-2) и видео-B (инфракрасный канал-4) могут отображаться индивидуально или дополнительно улучшаться с помощью инструментов в меню.Фальшивый цвет можно применять несколькими способами, как в виде составного цветного изображения. и как ИК с усилением цвета. Полный спектр возможностей изображения, доступных в меню:

Normal - базовая двухканальная передача NOAA
Видео А - видимый канал-2 днем, канал-3 ИК ночью
Видео Б - канал-2 инфракрасный
Ложный цвет (A, B)
Повышенная ложная цветовая температура (каналы 2 + 4)
Фальшивый цвет при низкой температуре, усиленный (каналы 2 + 4)
ИК-яркостная температура (ч 4)
ИК усиленный низкотемпературный (канал 4)

Меню Enhance предоставляет инструменты для нормализации и выравнивания изображения, а также для регулировки контрастности и изменить настройку гаммы.

Меню Effect предлагает дополнительные инструменты, некоторые из которых более полезны, чем другие. «Лупа» открывает небольшой масштабируемое окно, показывающее область под курсором с увеличением до 500%; «Уменьшить шум», «Медианный фильтр», Параметры «Удаление пятен» и «Повышение резкости» работают хорошо.

Выбор цветовой палитры

Некоторым из вышеперечисленных режимов изображения можно назначить индивидуальную цветовую палитру с помощью Меню «Настройки / Поисковые таблицы цветов» .

Щелкните желтый значок папки рядом с режимом, для которого нужно изменить палитру, выберите новый из отображаемый список выбора, затем нажмите «ОК».

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

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


Изображение APTDecoder, показывающее применена индивидуальная цветовая палитра

Монитор плоской Земли

Спутниковый трекер под названием Flat Earth Monitor является неотъемлемой частью APTDecoder.Работает постоянно в фоновом режиме, но может отображаться из меню «Инструменты» . Спутники, которые вы отображаете, и то, хотите ли вы рисовать Следы и отображение положения солнца и луны контролируются в меню «Настройки» .

Другие функции

Ежедневный журнал

APTDecoder может подготовить веб-страницу, содержащую любые или все изображения, которые вы обрабатываете в течение дня. Это очень элегантная HTML-страница (index.html), хранящегося в папке 'APTdecoder \ html \ daily', в которой отображается уменьшенная копия каждое изображение вместе с аккуратной таблицей, в которой перечислены все детали каждого спутника. При нажатии на любую миниатюру открывается полноразмерное изображение. Чтобы создать журнал, просто установите флажок «Создать журнал html» на вкладке «Общие» .

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

Радиоуправление

APTDecoder поддерживает управление настройкой радио для приемников метеорологических спутников RX2, R2FX и EMGO.


К этой странице обращались раз с 16 декабря 2005 г.
Счетчик

m-marcus.com предлагает дверную фурнитуру - рычаги на пластине - короткая пластина Avon Privacy PB

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

Project Hardware Дверная ручка для комплекта Privacy Set Avon Short Design с отделкой из полированной латуни

Марка Оборудование проекта
Материал Цинковый сплав
Отделка Полированная латунь
Размеры продукта
Длина задней пластины 119
Ширина задней панели 41

Все размеры указаны в миллиметрах, если не указано иное.

Гарантия 10-летний механизм
О отделке

Полированная латунь

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

Полезная информация
  • Ручка для внутренних дверей, где требуется конфиденциальность
  • Эта ручка будет работать со стандартной трубчатой ​​защелкой UK
  • Для новых дверей вам также необходимо приобрести трубчатую защелку, размер которой соответствует вашей двери
  • Для 2 1 / Трубчатая защелка 2 "приобретает YKTL2-PB, а для трубчатой ​​защелки 3" - YKTL3-PB
Коробка содержит
  • 1 пара дверных ручек
  • 1 шпиндель
  • Все крепежные винты и крепежные детали
Состояние запаса В наличии
Цена розничная
£ 21.

LEAVE A REPLY

Ваш адрес email не будет опубликован. Обязательные поля помечены *