Режим работы 512 (все 4 выходных канала работают параллельно 4*W), предположительно регистр 6 (все 4 канала)
Согласно вашему первому сообщению:
Adress:
инвертирование всех выходов соответствует 3000 + 6 = 3006 => записываем в адрес 1000 Value = 12294
инвертирование всех выходов соответствует 3000 + 6 = 3006 => записываем в адрес 1001 Value = 12294
инкремент яркости сооветствует 9000 + 6 = 9006 => записываем в адрес 1020 = 36870 (в десятичном формате)
декремент яркости сооветствует a000 + 6 = a006 => записываем в адрес 1021 = 40966 (в десятичном формате)
Проверил, всё работает! Спасибо за помощь!
по аналогии можно продолжить эту таблицу для отдельных каналов.
Adress:
инвертирование выхода 1 по кнопке 1 соответствует 3000 + 0 = 3000 => записываем в адрес 1000 Value = 12288
инвертирование выхода 2 по кнопке 2 соответствует 3000 + 1 = 3001 => записываем в адрес 1001 Value = 12289
инвертирование выхода 3 по кнопке 3 соответствует 3000 + 2 = 3002 => записываем в адрес 1002 Value = 12290
инвертирование выхода 4 по кнопке 4 соответствует 3000 + 3 = 3003 => записываем в адрес 1003 Value = 12291
инкремент яркости кнопка 1 долгое нажатие канал 1 сооветствует 9000 + 0 = 9000 => записываем в адрес 1020 = 36864
декремент яркости кнопка 1 долгое нажатие канал 1 сооветствует a000 + 0 = a000 => записываем в адрес 1020 = 40960
…
основная проблема была в отсутствии информации по режимам работы. То что есть в описании программы rilheva никуда не годится.
Попробую перевести для тех кто использует программу которую вы советуете как основную для винды:
Настройка действий для нажатий
Для настройки действий для типа нажатия нужно в соответствующий регистр записать число, составленное по следующему правилу:
0000 0000 0000 0000
Старшие 4 бита - тип действия:
- 0 - нет действия*
- 0b0001 - установить coil регистр в 0* Здесь указана цифра в двоичном коде, в данном случае 1 в hex
- 0b0010 - установить coil регистр в 1* Здесь 2
- 0b0011 - переключить coil регистр 0 ↔ 1* тут 3
- 0b0100 - установить все coil регистры в 0 (выключить все каналы). Доступно начиная с прошивки 3.3.0* тут 4
- 0b1001 - увеличить значение в holding регистре (увеличивается на 1 за каждое событие от кнопки)* тут 9
- 0b1010 - уменьшить значение в holding регистре (уменьшается на 1 за каждое событие от кнопки)* тут “a”
- 0b1011 - уменьшить/увеличить значение в holding регистре. Направление меняется при каждом новом нажатии.* тут “b”
остальные 3 цифры принимаем 0. Вот и получается, что для увеличения яркости нам надо взять шестнадцатеричное число 9000 и прибавить к нему номер регистра который надо увеличить. Для первого канала это 0, то есть имеем 9000. Затем для того чтобы программа поняла что мы от неё хотим надо полученное число перевести в десятичную систему и вставить нужную цифру туда.
Очень заморочено, и я полностью согласен с Андреем, что использовать консольную утилиту гораздо удобнее. Но это подходит только тем у кого стоит линух.
Если не сложно, прошу добавить это описание в вашу вики для программы rilheva. Будет понятнее.