Перейти к содержанию
    

Сериализация объекта для передачи через uart

Всем привет!

 

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

 

1) Во что серриализовать? XML, просто набор символов, двоичнный набор байт?

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

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

 

Спасибо.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...Во что серриализовать? XML, просто набор символов, двоичнный набор байт?...

 

тут мне кажется принципиальной разницы нет. критерии просты:

1) готовность МК прошивки поддержать "говорливый" протокол.

2) удобство контроля обмена по ком порту, обычными штатными средствами форточек.

3) в будущем, связка поинт ту поинт останется? или потребуется многое ко многому? (или по другому) Будет ли необходимо переделывать протокол, при использовании других каналов связи?

 

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

 

(круглый)

Изменено пользователем kolobok0

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

тут мне кажется принципиальной разницы нет. критерии просты: ...

 

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

 

Что такое сериализация класса вне контекста среды разработки?

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

 

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как я понял, надо организовать пакетную передачу данных?

Завести признак начала данных и контролную сумму в конце пакета данных?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

 

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

 

 

если совсем в двух словах:

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

 

(круглый)

 

..надо организовать пакетную передачу данных? Завести признак ... контролную сумму...

 

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

 

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

 

(круглый)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

.....

 

достаточно удобный правда и медленный способ, но уж во сто крат быстрее любого xml.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

crc8 хорошо бы добавить.

Я бы поставил тип CRC в зависимость от общей длины сообщения, допустим, до 32 байт рулит ЦРЦ8, а далее - ЦРЦ16.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не думаю что есть смысл усложнять, можно просто использовать crc-16 как основной, если уж речь шла изначально про xml то явно ничего один дополнительный байт не испортит :)

Изменено пользователем Shaeto

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...