k155la3 26 20 июля, 2017 Опубликовано 20 июля, 2017 · Жалоба (1) Вот только не понятно зачем по номеру? . . . (2) . . . Заменяйте их все одновременно. (3) Программирование это не только "coding", это еще и структурирование и декомпозиция т.п. А программизм ради структурирования сродни (сами придумаете). (1) одна из многих причин - обмен данными прибора и PC. Чтобы избежать "шизофрении" - на порядок удобнее работать с кодом параметра (фактически его уникальным Id) и базой параметров. Для "синхронизации" проектов для прибора и PC достаточно чтобы они использовали один файл - базы, где указано соотв-ие параметра, его Id, тип_данных --> размер поля итд. Для "упаковки" в пакет или страницу флеш использую сериализацию. Это надежнее. (2) пока все парам. влазят в страницу (264 байта) - я так и делаю. (3) да :) Я привел пример только как один из многих-бесконечных вариантов реализации. ps - структуры отличное решение, еслиб...... не выравнивание, а темболее - для разных платформ. А также зависимость от опций компилятора. а ну если так то я могу засунуть указатель в структуру принятой команды . . . . я все равно инициализирую структуру команд. так я добавлю указатель на переменную Да, где-то так. У меня по такой идее постоены работа HMI прибора - меню и работа с внешним терминалом по USART. По меню проскакивало обсуждение, тег кажется micromenu. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tiro 0 20 июля, 2017 Опубликовано 20 июля, 2017 · Жалоба (1) одна из многих причин - обмен данными прибора и PC. Чтобы избежать "шизофрении" - на порядок удобнее работать с кодом параметра (фактически его уникальным Id) и базой параметров. Для "синхронизации" проектов для прибора и PC достаточно чтобы они использовали один файл - базы, где указано соотв-ие параметра, его Id, тип_данных --> размер поля итд. Для "упаковки" в пакет или страницу флеш использую сериализацию. Это надежнее. Этот аргумент хорош для придания совместимости с ранее разработанными приборами. И при этом все равно лучше передавать блок параметров. Заметьте, что сериализация все равно машиннозависимая. Если слать параметры и размеры, то это то, от чего хотел уйти. (2) пока все парам. влазят в страницу (264 байта) - я так и делаю. Я привел пример только как один из многих-бесконечных вариантов реализации. ps - структуры отличное решение, еслиб...... не выравнивание, а темболее - для разных платформ. А также зависимость от опций компилятора. Вот с выравниванием тут хорошо. Я сказал "передавать блок параметров", рассортируйте по адресам. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 20 июля, 2017 Опубликовано 20 июля, 2017 (изменено) · Жалоба еще раз 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) Изменено 20 июля, 2017 пользователем Jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kabdim 0 20 июля, 2017 Опубликовано 20 июля, 2017 · Жалоба siplasplas Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tiro 0 20 июля, 2017 Опубликовано 20 июля, 2017 · Жалоба еще раз 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 20 июля, 2017 Опубликовано 20 июля, 2017 (изменено) · Жалоба Если правильно понял, то достаточно прочесть Карнегина и Ричина. После присвоения base_ptr = mot_data без твоих выражений доступ по base_ptr[array_index].mot_number это не base_ptr[array_index].mot_number - это base_ptr[array_index].зависит_от_команды_пришедшей_по_терминалу - мне надо чтоб указатель указывал на base_ptr[array_index].зависит_от_команды_пришедшей_по_терминалу Изменено 20 июля, 2017 пользователем Jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tiro 0 20 июля, 2017 Опубликовано 20 июля, 2017 · Жалоба это не base_ptr[array_index].mot_number - это base_ptr[array_index].зависит_от_команды_пришедшей_по_терминалу - мне надо чтоб указатель указывал на base_ptr[array_index].зависит_от_команды_пришедшей_по_терминалу Если Вас не устраивает предложенный вариант, то для Вас придуман С++14. А так - придумайте команды терминала, соответствующие задаче. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 20 июля, 2017 Опубликовано 20 июля, 2017 · Жалоба 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) занесите в массив - "описатель" структуры. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tiro 0 20 июля, 2017 Опубликовано 20 июля, 2017 · Жалоба может offsetof(x,y) ? И зачем динамически, ОНОж вроде, константа ? Судя по записи выше, предложена перегрузка оператора функцией. С++ Жене в руки. И удачи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 20 июля, 2017 Опубликовано 20 июля, 2017 (изменено) · Жалоба можно так при инициализации .vp = &mot_data[0].член_структуры и потом в команде полчили AXIS и прибавили AXIS * sizeof(mot_data) не очень мне это нравиться, но... Изменено 20 июля, 2017 пользователем Jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tiro 0 20 июля, 2017 Опубликовано 20 июля, 2017 · Жалоба &mot_data[0].член_структуры и base_ptr[array_index].зависит_от_команды_пришедшей_по_терминалу Одна сущность или разные? Первая - статический член структуры, второе - перегруженный оператор. Определись. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 20 июля, 2017 Опубликовано 20 июля, 2017 · Жалоба может offsetof(x,y) ? И зачем динамически, ОНОж вроде, константа ? ps - смещения offsetof(x,y) занесите в массив - "описатель" структуры. а да? offsetof(структура, член) вернет офсет члена в структуре? Одна сущность или разные? Первая - статический член структуры, второе - перегруженный оператор. Определись. ну что то должно быть статическим. либо &mot_data[0].член_структуры, либо offsetof(структура, член) если это работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tiro 0 20 июля, 2017 Опубликовано 20 июля, 2017 · Жалоба а да? offsetof(структура, член) вернет офсет члена в структуре? ну что то должно быть статическим. либо &mot_data[0].член_структуры, либо offsetof(структура, член) если это работает. Компилятор = переводчик с русского на машинный. Учитесь выражаться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться