Мешает уникальный модификатор

Аватара пользователя
AlexRyzh
Сержант
Сообщения: 107
Зарегистрирован: 22.12.2015{, 11:06}
Репутация: 1
Откуда: Мелитополь
Контактная информация:

Мешает уникальный модификатор

#1

Сообщение AlexRyzh » 13.04.2016{, 05:53}

С помощью невероятно полезной возможности создавать пользовательские блоки CODE, это уникальный инструмент и с его помощью можно решить ЛЮБУЮ временную недоработку программы. Именно так я и делаю. Если чего-то нет пока в программе, если что-то работает не так или вылетает... делаю пользовательский блок, пишу туда свой рабочий код и проблема решена.
Но уникальный модификатор, который дописывается переменным и параметрам, ставит огромные и толстые палки в колеса.
Я уже писал по поводу проблем с монитором ( http://forum.flprogwiki.ru/viewtopic.php?f=5&t=672 ), в программе нет блока для этого монитора, я сделал свой блок, но код монитора использует спецификатор extern, и переменную, которую он использует нельзя изменять "Спецификатор extern сообщает компилятору, что следующие за ним типы и имена переменных объявляются где-то в другом месте." В связи с этим я не раз просил автора убрать с пользовательского кода уникальный модификатор, или хотя бы сделать возможность выбора добавлять модификатор в этом блоке или нет!

Но с монитором я уже смерился, после компиляции вручную удаляю добавленный модификатор и заливаю в плату. Хотя и крайне напряжно при тестировании программы, когда заливать приходится несколько раз в день.
Теперь добавилась еще проблема с этим модификатором. Как известно, блок для ESP8266 временно не работает. Но это не проблема, я пишу пользовательский блок и успешно пользуюсь этим модулем. И блок прекрасно работает, если нужно передать что-то одно 1 раз за цикл программы. Но так же возникает проблема с уникальностью модификатора в переменных.

Проблема в следующем: Мне нужно в определенный момент отправить какие-то данные на роутер. И эта эта отправка должна производиться в разное время, с разными параметрами и разными данными... Поэтому нужно писать минимум 2 блока для этого модуля. 1 блок для определения переменных, инициализации и подключения роутера, 2-й блок для отправки данных в нужный момент, 3-й блок для отправки данных в свой нужный момент и т.д.... Но если так сделать, то в 1-м блоке переменным дописывается один модификатор, а в 2-м, 3-м ... этим переменным дописывается другой модификатор, и естественно компилятор получает разные (не декларированные) переменные! Ну такое править, это уже слишком. При тестировании и модуль иметь не захочешь... %)

Пробовал писать все в одном блоке, но тогда смысл программы почти теряется и работает не так как нужно. А если делать чтоб работало так как нужно, тогда весь код лучше написать вручную  %)
Уникальным модификатором автор программы пытается решить проблему уникальности переменных для автора проекта. Но если у меня (автора проекта) и возникнет такая проблема, я решу ее 1 раз и забуду, а при таком раскладе приходится с каждой компиляцией вручную править кучу кода!!!
Умоляю автора убрать добавление уникального модификатора или сделать возможность выбора.


P.S. Ну и заодно о глюке с разрешением записи пользовательского кода CODE. Вход En то появляется то исчезает
6272512.jpg
0172875.jpg
Если даже и воспользоваться им, работает не корректно, т.е. не срабатывает на разрешение. Но это не проблема, это так попутно, я не пользуюсь встроенным входом разрешения, я использую свой, на вход добавляю специально переменную En. В начале кода пишу if (En) {  и далее код
Последний раз редактировалось AlexRyzh 13.04.2016{, 07:46}, всего редактировалось 1 раз.

Аватара пользователя
dekorator
Лейтенант
Сообщения: 427
Зарегистрирован: 06.09.2015{, 09:39}
Репутация: 7
Откуда: Баку

Мешает уникальный модификатор

#2

Сообщение dekorator » 13.04.2016{, 08:04}

AlexRyzh писал(а):С каждой компиляцией вручную править кучу кода!!!Умоляю автора убрать добавление уникального модификатора или сделать возможность выбора.
Мольбы скорее всего не помогут Изображение . Нужно чтоб "голосовалка" давала 400-500 за раз Изображение , в противном случае велик шанс впасть в немилость или получить стандартную отмазку - "я пока не готов" или " не хватает времени, может когда-нибудь. "

Аватара пользователя
support
Супермодератор
Сообщения: 1900
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 787
Откуда: Астрахань
Имя: Сергей
Контактная информация:

Мешает уникальный модификатор

#3

Сообщение support » 13.04.2016{, 10:11}

Отмазка "не хватает времени", и "я пока не готов" очень хорошо помогает, в оссобенности когда она соответствует действительности. Но это так - лирика.
Теперь серьёзно. По поводу идентификатора. Я действительно много думаю над этой проблеммой, и планировал произвести серьёзную доработку пользовательских блоков в комплексе. Для чего нужен идентфикатор? В основном для возможности неоднократного применения блока в проекте. Что бы при повторном использовании не было повторной реинициализации переменных.
Что я придумал и могу предложить в качестве решения. В свойствах блока создается новая галочка "Только для однократного применения" (ну или что то там подобное). При установке этой галочки уникальные идентификаторы не проставляются совсем, что есть в блоке, то в таком и виде попадает в скетчь. При этом программа не позволит повторно вставить такой блок в проект если его экземпляр уже присутствует в проекте. На плечи разработчика блока ложится контроль возможности совпадения имён переменных с другими блоками в проекте. Для этого и существует в редакторе блока пользователя генератор уникального числа который можно использовать при создании имён переменных.
Если такой вариант устроит - то я постараюсь, если успею в текущей версии это реализовать. (опять отмазка - времени не хватает))) Я правда ещё работаю на основной работе, но это не важно))))
Автор программы FLProg.

Аватара пользователя
dekorator
Лейтенант
Сообщения: 427
Зарегистрирован: 06.09.2015{, 09:39}
Репутация: 7
Откуда: Баку

Мешает уникальный модификатор

#4

Сообщение dekorator » 13.04.2016{, 10:23}

Галочка в полне устроит. По умолчанию пусть стоит. Пока "стоит" :)) ,идентификаторы дописываются, снимаем и разруливаем сами. При снятии предупреждение на всякий случай.

P.S. Отмазка "нехватает времени" особенно когда не готов, - помогает в любом случае!!! (шутка)
Последний раз редактировалось dekorator 13.04.2016{, 10:24}, всего редактировалось 1 раз.

Аватара пользователя
AlexRyzh
Сержант
Сообщения: 107
Зарегистрирован: 22.12.2015{, 11:06}
Репутация: 1
Откуда: Мелитополь
Контактная информация:

Мешает уникальный модификатор

#5

Сообщение AlexRyzh » 13.04.2016{, 12:18}

Вполне устроит такая галочка. Но лучше вообще убрать модификатор. Как я уже говорил, если с модификатором не работает что-то из-за этого модификатора, то это вина РАЗРАБОТЧИКА!!! Зачем Вам этот лишний гемор? В описании блока предупредить пользователя о самостоятельном контроле уникальности переменных. И все, дальше проблема пользователя! 
Все равно блок CODE работает не корректно во многих ситуациях ( и сохранение иногда не корректно, и код если с ошибкой, блок ошибку не видит). и только после попытки компиляции выявляется ошибка в коде. Но тут легко, вернулся в код 1 раз исправил и забыл!!!
Я лично всегда буду ставить эту галочку в пользовательском блоке КОДА.

Аватара пользователя
AlexRyzh
Сержант
Сообщения: 107
Зарегистрирован: 22.12.2015{, 11:06}
Репутация: 1
Откуда: Мелитополь
Контактная информация:

Мешает уникальный модификатор

#6

Сообщение AlexRyzh » 13.04.2016{, 12:42}

И толку мало от того, что я могу вставить блок С ИДЕНТИФИКАТОРАМИ 2 раза в проект???
Вот что получается. Как поведет себя программа после такой компиляции???
6321127.jpg
Но при этом ни блок, ни компилятор ругаться не будут. Компилятор скушает, то что ему дал и будет лагать!
А при таком раскладе (когда уникальность будет упущена автором), компилятор выдаст ошибку. Опять же 1 раз ее нашел, исправил, и забыл!
0526188.jpg
Спасибо разработчику за понимание и нелегкий труд  Изображение
Последний раз редактировалось AlexRyzh 13.04.2016{, 12:44}, всего редактировалось 1 раз.

Аватара пользователя
support
Супермодератор
Сообщения: 1900
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 787
Откуда: Астрахань
Имя: Сергей
Контактная информация:

Мешает уникальный модификатор

#7

Сообщение support » 13.04.2016{, 12:44}

AlexRyzh писал(а):Но лучше вообще убрать модификатор.
А если блок планируется использовать более одного раза. Например расчет чего то повторяющегося. Какая ни будь сложная математика например.  Или работа с массивами не покрытая стандартными блоками. Что тогда делать? под каждый вызов писать отдельный блок?
Автор программы FLProg.

Аватара пользователя
AlexRyzh
Сержант
Сообщения: 107
Зарегистрирован: 22.12.2015{, 11:06}
Репутация: 1
Откуда: Мелитополь
Контактная информация:

Мешает уникальный модификатор

#8

Сообщение AlexRyzh » 13.04.2016{, 12:54}

dekorator писал(а):При установке этой галочки уникальные идентификаторы не проставляются совсем, что есть в блоке, то в таком и виде попадает в скетчь.
Это очень круто!!! было бы. Тогда можно создать один пользовательский блок для определения переменных и начальных установок для всех блоков. А другие блоки делать только с исполняемым кодом. 
Может не всем и не всегда это удобно, но мне кажется так будет довольно удобно и понятно.

Добавлено (13.04.2016, 12:54)
---------------------------------------------
AlexRyzh писал(а):А если блок планируется использовать более одного раза. Например расчет чего то повторяющегося. Какая ни будь сложная математика например.  Или работа с массивами не покрытая стандартными блоками. Что тогда делать? под каждый вызов писать отдельный блок?
Тут Вы правы. Но как видно из моего поста выше - палка о двух концах.
Поэтому самый лучший выход - галочка. Чтоб пользователь решал быть уникальному модификатору или нет.

Аватара пользователя
Alex16
Рядовой
Сообщения: 70
Зарегистрирован: 05.01.2016{, 01:20}
Репутация: 1
Откуда: Армавир

Мешает уникальный модификатор

#9

Сообщение Alex16 » 13.04.2016{, 13:20}

support писал(а):если блок планируется использовать более одного раза.  Что тогда делать? под каждый вызов писать отдельный блок?
В классическом программировании есть понятие "Процедура и Функция" описываются однократно, а используются многократно.
Может в этом направлении надо идти. Входа блока это параметры для процедуры или функции.
AlexA

Аватара пользователя
AlexRyzh
Сержант
Сообщения: 107
Зарегистрирован: 22.12.2015{, 11:06}
Репутация: 1
Откуда: Мелитополь
Контактная информация:

Мешает уникальный модификатор

#10

Сообщение AlexRyzh » 13.04.2016{, 13:27}

И все таки или я чего-то не понимаю... или одно из двух.
При вставке блока КОДЕ несколько раз переменные плодятся пропорционально. Это невероятно громоздкий код ради 2-х - 3-х переменных. Кроме того в боке есть и установочные параметры, которые тоже тоже плодятся как грибы. Мое мнение такое, что в любом случае блок КОДЕ нельзя вставлять в проект 2 раза. (и более).
7042452.jpg
Кроме того, представим ситуацию ( ну образно, как буд-то такое может быть), когда программист пишет проект для Ардуино и при этом даже не знает что есть программа FLProg. Как же ему тогда быть с этими проблемами?
support писал(а):расчет чего то повторяющегося. Какая ни будь сложная математика например.  Или работа с массивами не покрытая стандартными блоками.
Ночутье мне подсказывает что он напишет нужный код, который получится не таким громоздким с повторяющимися переменными...  и вот этот код можно будет вставить в блок, и блок вставить в проект 1 раз!
Это не утверждение, это лично мое понимание происходящего... делюсь мыслями  :crazy:
P.S.  И еще, лично мое мнение лучше убрать добавление модификатора, пока не придумана заветная галочка Изображение
А придумается галочка, тогда и модификатор прилепить, вдруг кому пригодится
Последний раз редактировалось AlexRyzh 13.04.2016{, 13:30}, всего редактировалось 1 раз.

Аватара пользователя
support
Супермодератор
Сообщения: 1900
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 787
Откуда: Астрахань
Имя: Сергей
Контактная информация:

Мешает уникальный модификатор

#11

Сообщение support » 13.04.2016{, 13:32}

Блоки пользователей  на FBD и LAD так примерно и работают. Они компилируются в функции, для блока формируется структура описывающая его входа, выхода и переменные. Это аналогично DB - шкам у сименса. Для каждого вызова блока создаётся инстанс этой структуры. При вызове блока в этот инстанс записываются входные данные, он передается функции , после того как функция отработала - из структуры по необходимости забираются данные.
Ну в общем идея слизана из организационных блоков Step-7
Автор программы FLProg.

Аватара пользователя
support
Супермодератор
Сообщения: 1900
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 787
Откуда: Астрахань
Имя: Сергей
Контактная информация:

Мешает уникальный модификатор

#12

Сообщение support » 13.04.2016{, 13:35}

AlexRyzh писал(а):P.S. И еще, лично мое мнение лучше убрать добавление модификатора, пока не придумана заветная галочка smile
Если все будет хорошо, и меня сильно на работе не загрузят "заветная галочка" появится в следующей версии. Я уже всё продумал. Осталось реализовать. Версия выйдет в через несколько дней.
Автор программы FLProg.

Аватара пользователя
support
Супермодератор
Сообщения: 1900
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 787
Откуда: Астрахань
Имя: Сергей
Контактная информация:

Мешает уникальный модификатор

#13

Сообщение support » 13.04.2016{, 18:20}

Заветная галочка готова.
Автор программы FLProg.

Аватара пользователя
dekorator
Лейтенант
Сообщения: 427
Зарегистрирован: 06.09.2015{, 09:39}
Репутация: 7
Откуда: Баку

Мешает уникальный модификатор

#14

Сообщение dekorator » 13.04.2016{, 18:27}

Бог услышал мои молитвы!!!

Аватара пользователя
AlexRyzh
Сержант
Сообщения: 107
Зарегистрирован: 22.12.2015{, 11:06}
Репутация: 1
Откуда: Мелитополь
Контактная информация:

Мешает уникальный модификатор

#15

Сообщение AlexRyzh » 13.04.2016{, 23:27}

А за это респект!!!! Спасибо огромное человеческое Изображение

Аватара пользователя
Alex16
Рядовой
Сообщения: 70
Зарегистрирован: 05.01.2016{, 01:20}
Репутация: 1
Откуда: Армавир

Мешает уникальный модификатор

#16

Сообщение Alex16 » 14.04.2016{, 03:01}

Пример Функции
Вложения
123.flp
(94.38 КБ) 70 скачиваний
AlexA

Аватара пользователя
AlexRyzh
Сержант
Сообщения: 107
Зарегистрирован: 22.12.2015{, 11:06}
Репутация: 1
Откуда: Мелитополь
Контактная информация:

Мешает уникальный модификатор

#17

Сообщение AlexRyzh » 14.04.2016{, 08:01}

Alex16 писал(а):Пример Функции
Спасибо. Теперь я могу сделать удобные блоки для своего дисплея. В 1-м блоке прописать установки для дисплея и функцию вывода на экран, а для каждого экрана блок с кодом, который принимает переменные и отправляет их в функцию.
Думаю будет удобно первую плату создавать с именем "Setups_Functions progect" и туда вставлять соответствующие блоки. А исполнительные блоки, которые будут использовать указанные переменные, параметры, функции,  вставлять в проекте где удобно. И НИКАКОЙ уникальный модификатор не помешает Изображение тесной связи между такими блоками    Изображение
P.S. И еще не дает покоя вопрос: Это как должен выглядеть блок CODE с уникальным модификатором, чтоб его можно было вставлять в проект несколько раз, без паразитного размножения переменных Изображение
Последний раз редактировалось AlexRyzh 14.04.2016{, 08:24}, всего редактировалось 1 раз.

Evgesha
Лейтенант
Сообщения: 525
Зарегистрирован: 29.10.2015{, 09:57}
Репутация: 20
Откуда: Kazakhstan
Имя: Evgesha

Мешает уникальный модификатор

#18

Сообщение Evgesha » 14.04.2016{, 09:32}

AlexRyzh, поделитесь пожалуйста блоком монитора готовым !!!! когда времячко найдете.
ПОМОЩЬ ПРОЕКТУ FLPROG:
http://flprog.ru/pomoshh-proektu/

Аватара пользователя
AlexRyzh
Сержант
Сообщения: 107
Зарегистрирован: 22.12.2015{, 11:06}
Репутация: 1
Откуда: Мелитополь
Контактная информация:

Мешает уникальный модификатор

#19

Сообщение AlexRyzh » 14.04.2016{, 16:02}

Evgesha писал(а):поделитесь пожалуйста блоком монитора готовым !!!!
О каком мониторе речь?

Evgesha
Лейтенант
Сообщения: 525
Зарегистрирован: 29.10.2015{, 09:57}
Репутация: 20
Откуда: Kazakhstan
Имя: Evgesha

Мешает уникальный модификатор

#20

Сообщение Evgesha » 14.04.2016{, 17:10}

О том который перелистывать экраны проще. Олед по и 2 с шине. Маленький цветной типа.
ПОМОЩЬ ПРОЕКТУ FLPROG:
http://flprog.ru/pomoshh-proektu/

Ответить

Вернуться в «Архив версия 1.11»