-
capzap ...а ведь хочется иметь условные "Кнопки", "Лампы", "Датчики дверей" и прочие не в виде полей структуры. А они могут быть раскиданы по разным модулям IO.
Я руками всё присваиваю (и думаю написать тулзу, которая этот код будет генерировать автоматически). Делаю задачу с названием типа TaskIO, и там окучиваю:
* Опрос модулей (OCL, CommLib)
* Разбор битовых полей
* Режим теста IO (когда специальный вход врубает все-все выходы)
* Разбор данных с Modbus-устройств (это когда от датчика получаешь "Температура х 100" и надо перевести в REAL).
Система устоялась ща, но неудобная - это факт.
Добавил. Каналы я именую по тому, как модули обозначаются в щите (у меня весь ОВЕН - с префиксом W - W1, W2, W3) и по их типу. То есть: W2_32DI, W3_32DO, W6_8AI (если читаем пакетно).
В документации идёт большая таблица со списком IO по модулям, и поэтому если по ней видно что какая-нибудь кнопка света спальни верха подключена на 10ый вход модуля W2, то в коде присваивание будет выглядеть так:
Код:
hwBtnLightSpalnVerh := W2_32DI.9;
-
capzap Так я готов учиться. Если речь идёт про какой-нить UNION из DWORD и битовых полей или MemCpy из буфера в структуру - то это я понял.
Но как быть, если я хочу видеть весь список переменных с префиксами (я же не просто так их делаю), ну типа:
hwBtnLightNNN
hwBtnMasterNNN
hwBtnTPolNNN
hwBtnVentNNN
а они будут распиханы по разным модулям IO? Я же хотел и хочу уйти от абстракции и работать в коде с булевыми переменными.
-
capzap Почитал. Так это шило на мыло: от W2_32DI никуда не уходим. А я хочу список своих переменных без ссылок на модули IO.
-
Я понял, ага: у тебя идёт от помещения, а у меня - от назначения.
-
А как ты так структурируешь через точку? Делаешь кучу своих типов данных? Или объектную модель, которая на лету собирает метаданные как у 1С?