Вход
Наше всё
Теги
codebook
无线电组件
Поиск
Опросы
Закон
Воскресенье
21 июля
О смысле всего сущего
0xFF
Средства и методы разработки
Мобильная и беспроводная связь
Блошиный рынок
Объявления
Микроконтроллеры
PLD, FPGA, DSP
AVR
PIC
ARM, RISC-V
Технологии
Кибернетика, автоматика, протоколы
Схемы, платы, компоненты
Средства и методы разработки
901933
Топик полностью
BioWolf2000
(05.02.2019 16:28, просмотров: 94)
ответил
michas
на
Есть переменная (регистр модбас) который пишется и читается из внешнего источника. Его надо засинхронизировать с переменной, которая аналогично читается и меняется из другого источника (элемент меню). Как правильно делать такие вещи?
я в union храню
typedef union __attribute__((packed)) mbRegCoil_t { uint8_t Buf[REG_COILS_COUNT / 8 + 1]; //1 struct { #define ADDR_StopAnyActionCommand 1 uint16_t StopAnyActionCommand : 1; #define ADDR_StartCalibrationCommand 2 uint16_t StartCalibrationCommand : 1; #define ADDR_StartMeasurementCommand 3 uint16_t StartMeasurementCommand : 1; ... }; } mbRegCoil_t;
typedef union __attribute__((packed)) mbRegInput_t { uint16_t Buf[REG_INPUT_COUNT]; //30001 struct { uint16_t ProductCode; //30001 uint16_t HWVersion; //30002 uint16_t SWVersion; //30003 union { uint32_t UID32; uint16_t UID[2]; //30004-30005 } ; ... }; } mbRegInput_t;
mbRegInput_t mbRegInput;
Modbus работает с mbRegInput.Buf, а остальная программа с mbRegInput.ProductCode например
Ответить