Jump to content

    
Sign in to follow this  
andreal

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

Recommended Posts

Всем привет!

 

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

 

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

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

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

 

Спасибо.

 

 

Share this post


Link to post
Share on other sites
...Во что серриализовать? XML, просто набор символов, двоичнный набор байт?...

 

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

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

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

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

 

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

 

(круглый)

Edited by kolobok0

Share this post


Link to post
Share on other sites
тут мне кажется принципиальной разницы нет. критерии просты: ...

 

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

 

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

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

 

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

 

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites
...Что такое сериализация класса вне контекста среды разработки?...

 

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

 

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

 

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

 

 

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

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

 

(круглый)

 

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

 

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

 

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

 

(круглый)

 

Share this post


Link to post
Share on other sites

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

 

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

 

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

.....

 

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

 

Share this post


Link to post
Share on other sites

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

Edited by Shaeto

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this