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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
k155la3
сообщение Jul 20 2017, 13:46
Сообщение #16


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(Tiro @ Jul 20 2017, 15:55) *
(1) Вот только не понятно зачем по номеру? . . .
(2) . . . Заменяйте их все одновременно.
(3) Программирование это не только "coding", это еще и структурирование и декомпозиция т.п. А программизм ради структурирования сродни (сами придумаете).

(1) одна из многих причин - обмен данными прибора и PC. Чтобы избежать "шизофрении" - на порядок удобнее работать с кодом параметра
(фактически его уникальным Id) и базой параметров. Для "синхронизации" проектов для прибора и PC достаточно чтобы они использовали
один файл - базы, где указано соотв-ие параметра, его Id, тип_данных --> размер поля итд.
Для "упаковки" в пакет или страницу флеш использую сериализацию. Это надежнее.
(2) пока все парам. влазят в страницу (264 байта) - я так и делаю.
(3) да sm.gif

Я привел пример только как один из многих-бесконечных вариантов реализации.
ps - структуры отличное решение, еслиб...... не выравнивание, а темболее - для разных платформ. А также зависимость от опций компилятора.




Цитата(Jenya7 @ Jul 20 2017, 15:44) *
а ну если так то я могу засунуть указатель в структуру принятой команды
. . . .
я все равно инициализирую структуру команд. так я добавлю указатель на переменную

Да, где-то так. У меня по такой идее постоены работа HMI прибора - меню и работа с внешним терминалом по USART.
По меню проскакивало обсуждение, тег кажется micromenu.
Go to the top of the page
 
+Quote Post
Tiro
сообщение Jul 20 2017, 13:58
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 781
Регистрация: 3-10-04
Из: Санкт-Петербург
Пользователь №: 768



Цитата(k155la3 @ Jul 20 2017, 16:46) *
(1) одна из многих причин - обмен данными прибора и PC. Чтобы избежать "шизофрении" - на порядок удобнее работать с кодом параметра
(фактически его уникальным Id) и базой параметров. Для "синхронизации" проектов для прибора и PC достаточно чтобы они использовали
один файл - базы, где указано соотв-ие параметра, его Id, тип_данных --> размер поля итд.
Для "упаковки" в пакет или страницу флеш использую сериализацию. Это надежнее.

Этот аргумент хорош для придания совместимости с ранее разработанными приборами.
И при этом все равно лучше передавать блок параметров.
Заметьте, что сериализация все равно машиннозависимая. Если слать параметры и размеры, то это то, от чего хотел уйти.
(2) пока все парам. влазят в страницу (264 байта) - я так и делаю.
Цитата(k155la3 @ Jul 20 2017, 16:46) *
Я привел пример только как один из многих-бесконечных вариантов реализации.
ps - структуры отличное решение, еслиб...... не выравнивание, а темболее - для разных платформ. А также зависимость от опций компилятора.

Вот с выравниванием тут хорошо. Я сказал "передавать блок параметров", рассортируйте по адресам.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jul 20 2017, 13:59
Сообщение #18


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



еще раз
uint32_t *base_ptr;
base_ptr = mot_data+(sizeof(mot_data)*array_index);
как мне динамически передать struct_member - base_ptr->struct_member

хотя нет. sizeof возращает размер в байтах значит надо приводить к uint8_t?
uint8_t *base_ptr = mot_data+(sizeof(mot_data)*array_index)

Сообщение отредактировал Jenya7 - Jul 20 2017, 14:05
Go to the top of the page
 
+Quote Post
Kabdim
сообщение Jul 20 2017, 14:03
Сообщение #19


Знающий
****

Группа: Свой
Сообщений: 558
Регистрация: 26-11-14
Из: Зеленоград
Пользователь №: 83 842



siplasplas
Go to the top of the page
 
+Quote Post
Tiro
сообщение Jul 20 2017, 14:07
Сообщение #20


Знающий
****

Группа: Свой
Сообщений: 781
Регистрация: 3-10-04
Из: Санкт-Петербург
Пользователь №: 768



Цитата(Jenya7 @ Jul 20 2017, 16:59) *
еще раз
uint32_t *base_ptr;
base_ptr = mot_data+(sizeof(mot_data)*array_index);
как мне динамически передать struct_member - base_ptr->struct_member

Если правильно понял, то достаточно прочесть Карнегина и Ричина. После присвоения base_ptr = mot_data без твоих выражений доступ по base_ptr[array_index].mot_number
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jul 20 2017, 14:18
Сообщение #21


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(Tiro @ Jul 20 2017, 20:07) *
Если правильно понял, то достаточно прочесть Карнегина и Ричина. После присвоения base_ptr = mot_data без твоих выражений доступ по base_ptr[array_index].mot_number

это не base_ptr[array_index].mot_number - это base_ptr[array_index].зависит_от_команды_пришедшей_по_терминалу - мне надо чтоб указатель указывал на base_ptr[array_index].зависит_от_команды_пришедшей_по_терминалу

Сообщение отредактировал Jenya7 - Jul 20 2017, 14:19
Go to the top of the page
 
+Quote Post
Tiro
сообщение Jul 20 2017, 14:22
Сообщение #22


Знающий
****

Группа: Свой
Сообщений: 781
Регистрация: 3-10-04
Из: Санкт-Петербург
Пользователь №: 768



Цитата(Jenya7 @ Jul 20 2017, 17:18) *
это не base_ptr[array_index].mot_number - это base_ptr[array_index].зависит_от_команды_пришедшей_по_терминалу - мне надо чтоб указатель указывал на base_ptr[array_index].зависит_от_команды_пришедшей_по_терминалу

Если Вас не устраивает предложенный вариант, то для Вас придуман С++14. А так - придумайте команды терминала, соответствующие задаче.
Go to the top of the page
 
+Quote Post
k155la3
сообщение Jul 20 2017, 14:24
Сообщение #23


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(Jenya7 @ Jul 20 2017, 16:59) *
uint32_t *base_ptr;
base_ptr = mot_data+(sizeof(mot_data)*array_index);
как мне динамически передать struct_member - base_ptr->struct_member

может offsetof(x,y) ?
И зачем динамически, ОНОж вроде, константа ?
ps - смещения offsetof(x,y) занесите в массив - "описатель" структуры.
Go to the top of the page
 
+Quote Post
Tiro
сообщение Jul 20 2017, 14:26
Сообщение #24


Знающий
****

Группа: Свой
Сообщений: 781
Регистрация: 3-10-04
Из: Санкт-Петербург
Пользователь №: 768



Цитата(k155la3 @ Jul 20 2017, 17:24) *
может offsetof(x,y) ?
И зачем динамически, ОНОж вроде, константа ?

Судя по записи выше, предложена перегрузка оператора функцией. С++ Жене в руки. И удачи.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jul 20 2017, 14:36
Сообщение #25


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



можно так
при инициализации
.vp = &mot_data[0].член_структуры
и потом в команде полчили AXIS
и прибавили AXIS * sizeof(mot_data)
не очень мне это нравиться, но...

Сообщение отредактировал Jenya7 - Jul 20 2017, 14:37
Go to the top of the page
 
+Quote Post
Tiro
сообщение Jul 20 2017, 14:44
Сообщение #26


Знающий
****

Группа: Свой
Сообщений: 781
Регистрация: 3-10-04
Из: Санкт-Петербург
Пользователь №: 768



Цитата(Jenya7 @ Jul 20 2017, 17:36) *
&mot_data[0].член_структуры
и
base_ptr[array_index].зависит_от_команды_пришедшей_по_терминалу

Одна сущность или разные? Первая - статический член структуры, второе - перегруженный оператор. Определись.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jul 20 2017, 14:47
Сообщение #27


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(k155la3 @ Jul 20 2017, 20:24) *
может offsetof(x,y) ?
И зачем динамически, ОНОж вроде, константа ?
ps - смещения offsetof(x,y) занесите в массив - "описатель" структуры.

а да? offsetof(структура, член) вернет офсет члена в структуре?

Цитата(Tiro @ Jul 20 2017, 20:44) *
Одна сущность или разные? Первая - статический член структуры, второе - перегруженный оператор. Определись.

ну что то должно быть статическим. либо &mot_data[0].член_структуры, либо offsetof(структура, член) если это работает.
Go to the top of the page
 
+Quote Post
Tiro
сообщение Jul 20 2017, 14:49
Сообщение #28


Знающий
****

Группа: Свой
Сообщений: 781
Регистрация: 3-10-04
Из: Санкт-Петербург
Пользователь №: 768



Цитата(Jenya7 @ Jul 20 2017, 17:47) *
а да? offsetof(структура, член) вернет офсет члена в структуре?
ну что то должно быть статическим. либо &mot_data[0].член_структуры, либо offsetof(структура, член) если это работает.

Компилятор = переводчик с русского на машинный. Учитесь выражаться.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 13:45
Рейтинг@Mail.ru


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