Блок пользователя содержащий другие блоки пользователя.

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Ответить
Аватара пользователя
Max
Лейтенант
Сообщения: 691
Зарегистрирован: 06 сен 2015, 13:12
Откуда: Тюмень-Баку
Имя: Максим

Блок пользователя содержащий другие блоки пользователя.

Сообщение Max »

Кто пробовал делать блоки пользователя содержащие другие блоки пользователя и в свою очередь имеющие в себе еще блоки пользователя? Ну, по типу матрешки.
Да уж...

Проблем не возникнет с компиляцией и работоспособностью?
Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01 май 2016, 01:04
Откуда: Коломна
Имя: Станислав
Контактная информация:

Блок пользователя содержащий другие блоки пользователя.

Сообщение Boroda »

В пользовательский блок FBD вообще нельзя воткнуть другой пользовательский блок - нет вкладки "пользовательские".
Последний раз редактировалось Boroda 24 июн 2016, 12:16, всего редактировалось 1 раз.
Аватара пользователя
slavas
Лейтенант
Сообщения: 596
Зарегистрирован: 14 сен 2015, 22:29
Откуда: Санкт-Петербург

Блок пользователя содержащий другие блоки пользователя.

Сообщение slavas »

огород в огороде, проще нарисовать пользовательский блок с использованием элементов других пользовательских блоков или идей.
Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01 май 2016, 01:04
Откуда: Коломна
Имя: Станислав
Контактная информация:

Блок пользователя содержащий другие блоки пользователя.

Сообщение Boroda »

slavas писал(а):огород в огороде
А как, допустим, вставить ПБ на СИ состоящий из одной строчки (например, Out=In1 xor In2 xor In3 xor In4;) в ПБ на FBD? Стандартного-то блока XOR для переменных типа Byte нет. Лепить FBD огород:
- прочитать бит0/1/2/3/4/5/6/7 переменной IN1
- прочитать бит0/1/2/3/4/5/6/7 переменной IN2
- каждую пару заксорить
- записать биты0/1/2/3/4/5/6/7 в переменную темп
- прочитать бит0/1/2/3/4/5/6/7 переменной темп
- прочитать бит0/1/2/3/4/5/6/7 переменной IN3
- каждую пару заксорить
- записать биты0/1/2/3/4/5/6/7 в переменную темп
- и т.д.

Представляете себе размер коробочки?

Тоже самое с побитовым сдвигом вправо/влево (ну тут можно делением/умножением обойтись), AND и OR.
Последний раз редактировалось Boroda 24 июн 2016, 13:26, всего редактировалось 1 раз.
Аватара пользователя
Max
Лейтенант
Сообщения: 691
Зарегистрирован: 06 сен 2015, 13:12
Откуда: Тюмень-Баку
Имя: Максим

Блок пользователя содержащий другие блоки пользователя.

Сообщение Max »

Комментирую дальше. Вероятно, что блоки не должны будут содержать одинаковые (имена) переменные.

Добавлено (24.06.2016, 14:10)
---------------------------------------------
Boroda писал(а):В пользовательский блок FBD вообще нельзя воткнуть другой пользовательский блок - нет вкладки "пользовательские".
Вот если в пользовательском блоке нет одинаковых переменных, или вообще нет переменных, то по идее его можно было бы использовать в своем блоке? Было бы крайне удобно и не надо было бы повторять логику нужного имеющегося блока.
Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01 май 2016, 01:04
Откуда: Коломна
Имя: Станислав
Контактная информация:

Блок пользователя содержащий другие блоки пользователя.

Сообщение Boroda »

Max писал(а):если в пользовательском блоке нет одинаковых переменных
Так они и так перед компиляцией преобразуются.

[spoiler=Спойлер]Было в блоке пользователя:

byte N_byte;
unsigned long time;
unsigned long time_old;
byte bsumm;
byte bsumm_in;

Стало в Arduino IDE (два блока на плате):

byte N_byte_125723286_1;
unsigned long time_125723286_1;
unsigned long time_old_125723286_1;
byte bsumm_125723286_1;
byte bsumm_in_125723286_1;

и второй

byte N_byte_125723286_2;
unsigned long time_125723286_2;
unsigned long time_old_125723286_2;
byte bsumm_125723286_2;
byte bsumm_in_125723286_2;[/spoiler]

Добавлено (24.06.2016, 14:28)
---------------------------------------------
Правда тогда наверное переменная блока в блоке будет например такой: byte Temp_125723286_1_789723286_1, а если вложение будет десятым, то сами представляете, что будет. Тут палка о двух концах... А когда длина имени переменной превысит 255 символов - у компилятора крыша съедет...
Последний раз редактировалось Boroda 24 июн 2016, 14:41, всего редактировалось 1 раз.
Аватара пользователя
slavas
Лейтенант
Сообщения: 596
Зарегистрирован: 14 сен 2015, 22:29
Откуда: Санкт-Петербург

Блок пользователя содержащий другие блоки пользователя.

Сообщение slavas »

а как вы вообще собираетесь вставлять блоки?
Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01 май 2016, 01:04
Откуда: Коломна
Имя: Станислав
Контактная информация:

Блок пользователя содержащий другие блоки пользователя.

Сообщение Boroda »

slavas писал(а):а как вы вообще собираетесь вставлять блоки?
А пока никак не получится, и предположу, что Автор так же думает, потому как базовай функционал писался давно и все уже забылось. А трогать работающее чревато последствиями.

Добавлено (24.06.2016, 16:59)
---------------------------------------------
Поэтому, если надо сделать какую-либо хитрую коробочку - открываю Arduino.cc или Arduino.ru и пытаюсь на СИ наваять, благо опыта в программировании на ST, Асме и Бейсике навалом.
Последний раз редактировалось Boroda 24 июн 2016, 17:01, всего редактировалось 1 раз.
Аватара пользователя
Max
Лейтенант
Сообщения: 691
Зарегистрирован: 06 сен 2015, 13:12
Откуда: Тюмень-Баку
Имя: Максим

Блок пользователя содержащий другие блоки пользователя.

Сообщение Max »

Boroda писал(а):А пока никак не получится
Ну, это понятно...
Есть свои специфичные блоки (для себя) и хотелось бы их задействовать (так же для себя) не делая повторно работу, которую уже делал... Вот и весь смысл темы.
Ответить

Вернуться в «Спросить у знатоков»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей