Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сериализация объекта для передачи через uart
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Программирование
andreal
Всем привет!

Контроллер прошивается на языке высокого уровня c++. в нем у меня есть класс, который полностью надо передать на компьютер через uart, т.е com порт. Для этого мой класс надо сериализовать как я правильно понимаю в поток байт.

1) Во что серриализовать? XML, просто набор символов, двоичнный набор байт?
2) Какие средства с открытым кодом на сях можно встроить в мой код, чтобы производил серриализацию из п1.
Тут можно впринцепе и ручками все сделать, если определиться с первым пунктом, но все же хотелось бы уже готовое решение.

Спасибо.

kolobok0
Цитата(andreal @ Oct 10 2011, 12:26) *
...Во что серриализовать? XML, просто набор символов, двоичнный набор байт?...


тут мне кажется принципиальной разницы нет. критерии просты:
1) готовность МК прошивки поддержать "говорливый" протокол.
2) удобство контроля обмена по ком порту, обычными штатными средствами форточек.
3) в будущем, связка поинт ту поинт останется? или потребуется многое ко многому? (или по другому) Будет ли необходимо переделывать протокол, при использовании других каналов связи?

ответив на эти вопросы, вы найдёте сами ответ.

(круглый)
AlexandrY
Цитата(kolobok0 @ Oct 17 2011, 10:58) *
тут мне кажется принципиальной разницы нет. критерии просты: ...


А я так вообще не понял о чем речь.

Что такое сериализация класса вне контекста среды разработки?
Форматы сериализации вроде никто не публикует и не описывает.

Придумывать собственную сериализацию для сторонней среды разработки мне кажется вообще не реализуемой задачей.
gosha
Как я понял, надо организовать пакетную передачу данных?
Завести признак начала данных и контролную сумму в конце пакета данных?
kolobok0
Цитата(AlexandrY @ Oct 17 2011, 12:31) *
...Что такое сериализация класса вне контекста среды разработки?...


при чём тут среда(четверг, тяпница) разработки? или что Вы имеете ввиду под термином "среда разработки"?

вот чтиво на вечер:

Сериализация


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

(круглый)

Цитата(gosha @ Oct 18 2011, 12:16) *
..надо организовать пакетную передачу данных? Завести признак ... контролную сумму...


Вы чего народ? вопрос от TC под свои знания, что ли подгоняете? вопрос же конкретный был.

не в курсах - не отвечай. копни поисковик, если интересно.

(круглый)
Shaeto
учитывая что вопрос про c++ обычно сериализация идет через класс потока, напишите или используйте любой готовый примитивный поток для передачи основных типов данных с указанием в потоке размерности и типа. собственно это и заменит xml. если уж совсем хочется универсальности то гоните все через хэш типа "имя"="значение", и разбираете на входе по именам. в таком случае поток должен уметь преобразовывать основные типы в строки ну и естественно строки посылать. crc8 хорошо бы добавить.

то есть поток будет выглядеть как то так:

1. crc8 [длина строки имени] [строка имени] [длина строки значения] [строка значения]
.....

достаточно удобный правда и медленный способ, но уж во сто крат быстрее любого xml.
_Pasha
Цитата(Shaeto @ Nov 28 2011, 11:17) *
crc8 хорошо бы добавить.

Я бы поставил тип CRC в зависимость от общей длины сообщения, допустим, до 32 байт рулит ЦРЦ8, а далее - ЦРЦ16.
Shaeto
не думаю что есть смысл усложнять, можно просто использовать crc-16 как основной, если уж речь шла изначально про xml то явно ничего один дополнительный байт не испортит sm.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.