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

 
 
 
Reply to this topicStart new topic
> Сериализация объекта для передачи через uart
andreal
сообщение Oct 10 2011, 08:26
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 26-09-11
Пользователь №: 67 383



Всем привет!

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

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

Спасибо.

Go to the top of the page
 
+Quote Post
kolobok0
сообщение Oct 17 2011, 07:58
Сообщение #2


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



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


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

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

(круглый)

Сообщение отредактировал kolobok0 - Oct 17 2011, 07:59
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Oct 17 2011, 08:31
Сообщение #3


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



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


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

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

Придумывать собственную сериализацию для сторонней среды разработки мне кажется вообще не реализуемой задачей.
Go to the top of the page
 
+Quote Post
gosha
сообщение Oct 18 2011, 08:16
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 216
Регистрация: 15-06-04
Из: Менделеево
Пользователь №: 30



Как я понял, надо организовать пакетную передачу данных?
Завести признак начала данных и контролную сумму в конце пакета данных?
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Oct 20 2011, 09:45
Сообщение #5


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(AlexandrY @ Oct 17 2011, 12:31) *
...Что такое сериализация класса вне контекста среды разработки?...


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

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

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


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

(круглый)

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


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

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

(круглый)
Go to the top of the page
 
+Quote Post
Shaeto
сообщение Nov 28 2011, 08:17
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 27-11-11
Из: Россия, Великий Новгород
Пользователь №: 68 546



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

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

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

достаточно удобный правда и медленный способ, но уж во сто крат быстрее любого xml.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Nov 29 2011, 01:24
Сообщение #7


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Shaeto @ Nov 28 2011, 11:17) *
crc8 хорошо бы добавить.

Я бы поставил тип CRC в зависимость от общей длины сообщения, допустим, до 32 байт рулит ЦРЦ8, а далее - ЦРЦ16.
Go to the top of the page
 
+Quote Post
Shaeto
сообщение Nov 29 2011, 06:41
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 27-11-11
Из: Россия, Великий Новгород
Пользователь №: 68 546



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

Сообщение отредактировал Shaeto - Nov 29 2011, 06:41
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 04:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01477 секунд с 7
ELECTRONIX ©2004-2016