Оформи в виде класса, в control.h описание класса, в control.cpp - реализация. В основном файле #include "control.h" и объявление объекта вроде: Ccontrol control; Все переменные в свойствах класса.
FILTERPIN и LIGHTPIN это выводы, к которым у тебя подключены relay_filter и relay_svet. Судя по всему они используются только в этом классе, поэтому их здесь и надо объявить через #define
Вот наконец-то появилось время продолжить изыскания в данной теме. Гуру, вы со мной?
А не подскажите, можно включить реле через ссылку а не через web интерфейс если используется метод post мне это нужно для включение сигнализации из сторонний программы которая моежт запускать ссылки.
Еще одна мысль: анимация теряет смысл если страница обновляется сразу по клику.
А как же?
Все заработало! А есть варианты, что бы перезагружались не все формы, а только та, в которой сработал переключатель?
Вынести в iframe или использовать ajax запросы.
Сделал так:
После изменения положения переключателя и перезагрузки страницы незаметно скакание переключателей.
Вынес исполнительную часть в отдельный файл control.h. Создал функцию ControlFunction.
Все переменные перечисляю в основном файле, но не знаю как в control.h сказать, что переменные находятся в основном файле.
Оформи в виде класса, в control.h описание класса, в control.cpp - реализация. В основном файле #include "control.h" и объявление объекта вроде: Ccontrol control; Все переменные в свойствах класса.
А вы обошлись без .cpp файла, потому что внутри класса создали функцию?
Можно и в h файл засунуть реализацию, но обычно так делают если реализация класса небольшая.
В h пытался, но появляется ошибка на условиеif.
exit status 1
expected unqualified-id before 'if'
на сколько я понимаю, необходимо указать на главный файл, в котором содержатся переменные и где считывается состояние filter.
Вот так сделай
В основном теле проекта обращение к классу правильное?
Скомпилировалось без ошибок.
Да, верно.
Сейчас всегда сработана ветка else, т.к. я не получаю состояния переключателя из главного файла.
Соответственно если ставлю filter=1, то срабатывает первое условие.
Данной записью
private:
int filter;
byte relay_filter;
мы убрали ошибки при компиляции, но видимо не получем состояние filter.
ООП рекомендует доступ к свойствам класса через set и get функции, вроде:
void set(int f){filter = f;}
int get() {return filter;}
Соответственно вызовы: control.set(x); x=control.get();
Можно сделать переменную публичной и обращаться к ней прямо: x = control.filter;
А вы мне предлагаете сделать функцию в файле control.h и обращаться из главного вайла к ней.
void set(int f){filter = f;}
int get() {return filter;}
Соответственно вызовы: control.set(x); x=control.get();
Можно сделать переменную публичной и обращаться к ней прямо: x = control.filter;
Если я правильно понял, то
void set(int f){filter = f;}
int get() {return filter;}
Это мы пишем в главном проекте, а control.set(x); x=control.get(); в control.h или я вас не правильно понял?
А в проекте, в том месте где образуется значение, пишем: control.setfilter(value);
В том месте где значение нужно передать клиенту: value=control.getfilter();
Либо делаем переменную публичной и обращаемся к ней прямо.
Правильно-ли я сделал так?
или лучше переделать, как вы написали?
В твоем случае разумнее написать свой set/get для каждой переменной:
'FILTERPIN' was not declared in this scope
FILTERPIN и LIGHTPIN это выводы, к которым у тебя подключены relay_filter и relay_svet. Судя по всему они используются только в этом классе, поэтому их здесь и надо объявить через #define
Получаю ошибку в проекте
Номера пинов нужно указать: #define FILTERPIN 10
Настройку этих пинов pinMode нужно перенести из setup() в конструктор этого класса. Добавь:
170 строчка expected primary-expression before 'bool'
Может быть все это можно как-то проще сделать?
Проведи ревизию в строках 25-29. Переменные и определения пинов ушли в класс ControlFunction.
Строки 169-170 убери. Вместо них в строке 118-119:
Аналогично со всеми переменными.
Аналогично со всеми переменными.
Если я так сделаю, то у меня перестанут работать кнопки
В строке 89: if (control.getLight())
аналогично со всеми переменными.
Вот наконец-то появилось время продолжить изыскания в данной теме. Гуру, вы со мной?
Вот наконец-то появилось время продолжить изыскания в данной теме. Гуру, вы со мной?
А не подскажите, можно включить реле через ссылку а не через web интерфейс если используется метод post мне это нужно для включение сигнализации из сторонний программы которая моежт запускать ссылки.