Страница 14 из 16

Версия 6.3.х

Добавлено: 28 апр 2020, 00:52
support
ecoins писал(а): 27 апр 2020, 22:52 Есть небольшой недостаток - если выключить из компиляции плату, на которой создан контакт, то ошибка компиляции. Не критично, но не удобно.
Упс, не знал. Поправил

Отправлено спустя 20 минут 6 секунд:
av писал(а): 27 апр 2020, 22:14 [ref=#00aa00]support[/ref], проблема при создании в коде пользовательского блока. Ситуация следующая: нужно создать два блока для TFT Adafruit ST7735 дисплея главный блок с декларированием, настройками в секции setup и второй блок вывода текста на дисплей с входами координат, цвета и т.д. Блоки созданы все в порядке редактор не ругается. При компиляции в IDE FLProg почему то добавляет к задекларированому имени свой индентефикатор, который не совпадает с именами второго блока без дополнительного индентификатора. См. скриншоты:
[spoiler title=Секция декларации]Declare.png[/spoiler]
[spoiler title=Секция Setup]Setup.png[/spoiler]
[spoiler title=Секция Loop второго блока]Loop.png[/spoiler]
[spoiler title=Схема блоков]Схема блоков.png[/spoiler]

А вот что происходит в IDE:

[spoiler title=IDE]IDE.png[/spoiler]

Примерно догадываюсь почему так происходит. Дело в том что в библиотеке пользовательских блоков есть очень похожий блок, но только для Adafruit ILI9341 и имена в секции декларации такие же. Но ведь блоки для другого дисплея не используются в данном проекте а программа все равно присваивает свои дополнительные маркеры. Попытался дать другое имя но не позволяет вероятно библиотека это сделать. Подскажите как обойти этот баг ?
Вот для решения как раз таких проблемм и создаётся новый редактор. В текущем такую функциональность не реализовать

Версия 6.3.х

Добавлено: 28 апр 2020, 01:01
ecoins
av писал(а): 27 апр 2020, 23:30 Извиняюсь за каламбур, но мне кажется что попал в тему "У кого больше". Уважаемые форумчане давайте не будем тему по отлову ошибок и багов превращать в дискуссионный зал . Для этих целей есть соответствующие разделы.
В предыдущем посте Вы писали о проблемах ST7735. Подобных проблем подымается много и зачастую вопросы больше к не разработчику, а к библиотекам Arduino, которые в большинстве случаев написаны очень неаккуратно. Когда устройство тестируется одно - вроде проблем нет, когда проект разрастается, начинаются проблемы - то связь оборвалась, то блок тормозит, то конфликты с другими библиотеками. В большинстве случаев автор об этом наверное и знает, но решать эти задачи с общим развитием проекта сложно и трудоемко.
Разработчик на это не раз обращал внимание - все коды написаны только им или взяты внешние библиотеки как есть.

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

Версия 6.3.х

Добавлено: 28 апр 2020, 10:24
rw6cm
[ref=#00aa00]support[/ref],
При инициализации массивов, если размер массива больше 8 (когда появляется вертикальный скроил),
Строки которые ниже 8 не возможно редактировать, (поставить курсор в строку)
можно только стереть в ней информацию и заново написать.

Версия 6.3.х

Добавлено: 28 апр 2020, 10:36
ecoins
av писал(а): 28 апр 2020, 08:48 Повторюсь но причем здесь библиотеки не понимаю если все проблемные действия производит сама программа.
Предположу, то в Вашем случае программа FLProg ничего не производит - производит то, что создает Arduino IDE используя имеющиеся библиотеки указанных устройств. FLProg только генерит код и подключает библиотеки.
Для того, чтобы с этим разбираться, надо смотреть получаемые тексты на C++ и в них пробовать искать и выделять проблемы. Именно такая деятельность могла бы оказать прикладное значение и быть полезной для развития проекта FLProg.
Но это работа тяжелая, ею заниматься - своё время тратить, вникать в системный софт не хочется - проще написать в этой ветке (явно/неявно) разработчику, что вот у Вас в FLprog что-то не так работает, система Ваша, Вы и исправляйте, потому что это кому-то (обычно пишут о проблемах непосредственно того, кто обращается) надо...
Подобные подходы распространены, возможно в них есть и здравый смысл, но я лично такое не одобряю, считаю это потребительским подходом... без особых личных вложений.

Версия 6.3.х

Добавлено: 01 май 2020, 01:07
ecoins
Блок "Детектор изменения строки"
---------------------------------------------
В тестовом примере выявилось, что переменная String для этого блока создается не в секции setup, а в начале секции loop();
---------------------------
void loop()
{

String _tempVariable_String;
--------------------------
Это внешне безобидная конструкция для переменной String на Nano отнимает 35 мкс в каждом цикле loop().
Если убрать эту переменную в секцию Setup, то проблема уйдет сама по себе.
-----------------------
P.S. При разработке системных библиотек ecoins, мы тщательно избавляемся от лишних операций - из ни собираются десятки,сотни мкс - а потом процесс выходит из под контроля.
Переменные String - эта проблема в FLProg, поскольку даже любая операция присваивания отнимает время...

Версия 6.3.х

Добавлено: 04 май 2020, 10:26
ecoins
Определение переменных в DeclareSection "uint8_t d1:4, x1:4;"
приводит к коду "uint8_t d1:4, x1:4_54531062_1;"
---
Т.е. первому элементу не присваивается уникальный номер, только последнему.
Это происходит во всех случаях, когда используются определение переменных через запятую - уникальный номер присваивается только последнему элементу.

Версия 6.3.х

Добавлено: 04 май 2020, 10:52
edyapd
ecoins писал(а): 04 май 2020, 10:26 Определение переменных в DeclareSection "uint8_t d1:4, x1:4;"
приводит к коду uint8_t d1:4, x1:4_54531062_1;
Я давно заметил этот баг. Но использовал его как фичу. Таким образом можно создать глобальную переменную, которую можно использовать в нескольких блоках. Только надо вставить ещё проверку на наличие этой переменной.

Версия 6.3.х

Добавлено: 04 май 2020, 14:20
ecoins
edyapd писал(а): 04 май 2020, 10:52 Я давно заметил этот баг. Но использовал его как фичу. Таким образом можно создать глобальную переменную, которую можно использовать в нескольких блоках. Только надо вставить ещё проверку на наличие этой переменной.

И вот когда возникает потребность уменьшить пространство переменных (создавать переменные размером не только кратные байту), возникают трудности.
Остроумен и любопытен подход по использованию бага как фичу. Неожиданно.
Но это ведь рискованно - а внесет разработчик изменения и начнутся проблемы... :smile37:

Версия 6.3.х

Добавлено: 04 май 2020, 17:44
support
ecoins писал(а): 04 май 2020, 14:20 Но это ведь рискованно - а внесет разработчик изменения и начнутся проблемы...
В новом редакторе этой проблеммы не будет. Я очень постараюсь выпустить семёрку бэта до 15 го числа. Редактор полностью готов, сейчас интегрирую новый блок в проект.
Блок пользователя.PNG
Блок пользователя1.PNG

Версия 6.3.х

Добавлено: 04 май 2020, 18:35
holodaleksey
скачал на рабочий комп 6,3,1 портабл, столкнулся с невиданным ранее, типа "разорвимойдисплей", винда10. что посоветуете по настройкам интерфейса?

Версия 6.3.х

Добавлено: 04 май 2020, 19:29
EgorKa
[ref]holodaleksey[/ref], так ведь есть настройки размера шрифтов в FLP.

Версия 6.3.х

Добавлено: 04 май 2020, 20:07
aidar_i
av, у Вас в главном блоке должен стоять галочка на Разрешено использовать в проекте один раз!

Версия 6.3.х

Добавлено: 04 май 2020, 21:52
holodaleksey
EgorKa писал(а): 04 май 2020, 19:29 [ref]holodaleksey[/ref], так ведь есть настройки размера шрифтов в FLP.
А с толщиной рамки как быть?
Да и со шрифтами я не совладал полностью, шапки поменял кое как, а с обозначениями выводов внутри блоков - все никак.

Версия 6.3.х

Добавлено: 04 май 2020, 22:29
ecoins
[/quote]
В новом редакторе этой проблеммы не будет. Я очень постараюсь выпустить семёрку бэта до 15 го числа. Редактор полностью готов, сейчас интегрирую новый блок в проект.
[/quote]
Ух-ты! Многообещающе...

Версия 6.3.х

Добавлено: 04 май 2020, 22:41
DrMario
Ошибка при редактировании описания пользовательского контроллера. После чего программа выдавала что не может открыть файл, пришлось удалить и загрузить из резервной копии. Один контроллер грохнулся окончательно, не успел сохранить :(
error.log

Версия 6.3.х

Добавлено: 04 май 2020, 22:49
ecoins
support писал(а): 04 май 2020, 17:44 В новом редакторе этой проблеммы не будет. Я очень постараюсь выпустить семёрку бэта до 15 го числа. Редактор полностью готов, сейчас интегрирую новый блок в проект.
Здорово и соблазнительно.

Версия 6.3.х

Добавлено: 05 май 2020, 03:11
Cancertanly
[ref]holodaleksey[/ref], в новой программе ведь есть масштабирование рабочего поля. Cntrl+колесо мыши по моему

Версия 6.3.х

Добавлено: 05 май 2020, 05:45
support
holodaleksey писал(а): 04 май 2020, 18:35 скачал на рабочий комп 6,3,1 портабл, столкнулся с невиданным ранее, типа "разорвимойдисплей", винда10. что посоветуете по настройкам интерфейса?
Именно в вашей ситуации рекомендую поиграться с настройкой параметра "шаг сетки привязки"

Отправлено спустя 4 минуты 42 секунды:
DrMario писал(а): 04 май 2020, 22:41 Ошибка при редактировании описания пользовательского контроллера. После чего программа выдавала что не может открыть файл, пришлось удалить и загрузить из резервной копии. Один контроллер грохнулся окончательно, не успел сохранить :(
error.log
Пришлите мне пожалуйста, файлик который не открывается. Если он конечно сохранился. Надо понять в чем дело. По логу понятно почему он не открывается, но вот почему в список контроллеров затесался Nil, надо разобраться.

Версия 6.3.х

Добавлено: 05 май 2020, 07:02
DrMario
Прошлый файл не сохранил, но ошибка повторяется, если вставить текст в описание контроллера. Текст был с даташита контроллера, копипастил с гугл переводчика. Уже удалил все подозрительные символы но ошибка повторяется. Файл прикрепить не могу, слишком большой.
Попробуйте вставить этот текст в описание контроллера, если вылета не будет, то залью куда нибудь архив.
Не в тему. Напрягает ситуация с дозволенными размерами, попахивает старыми добрым временами и компами на Z80 :D
Документ Microsoft Word.doc
Отправлено спустя 42 минуты 44 секунды:
Опять не в тему...
В некоторых контроллерах, например в STM32 номера выводов в портах I2C и SPI могут назначаться по выбору. Ну как в softserial выводы RX TX.
Вот пример с даташита для одного вывода SPI1_NSS/I2S1_WS, SPI3_NSS/I2S3_WS, USART2_CK, EVENTOUT
Сейчас в флпроге в кастомном контроллере можно назначить вывод только для одной какой нибудь шины. Будет возможность исправить этот недостаток?

Версия 6.3.х

Добавлено: 05 май 2020, 11:06
Ardudue
support писал(а): 04 май 2020, 17:44 Я очень постараюсь выпустить семёрку бэта до 15 го числа. Редактор полностью готов, сейчас интегрирую новый блок в проект.
в новом редакторе на такой код не будет ругаться? в 6,3,1 сейчас не пускает volatile и функции void которые декларирую до void setup()
код:
[spoiler]

Код: Выделить всё

#include <LiquidCrystal.h>
LiquidCrystal lcd(8,9,10,11,12,13);
volatile int val_fr = 533;      // длительность полупериода f=18000000/val_fr/2(Гц),
volatile int dead_time = 91;    // пауза между периодами, не должна быть меньше 92 и больше val_fr-92
byte uk=0;
int f_val, d_val; 
float rpm, dtm;
//  ********************************************************************
//  ********************************************************************
void poluper1(void) { 
PORTD&=~(1<<5);             // на пин 5 лог 0
PORTD|=(1<<4);              // на пин 4 лог 1, формируем первый полупериод
if(dead_time<92) {OCR1A=val_fr; uk=2;}  // если пауза меньше 92 тогда она формироваться не будет
else {OCR1A=val_fr-dead_time; uk=1;}  // иначе уменьшаем полупериод на длительность паузы чтоб сохранить частоту
  }
void dead_time1(void) { 
PORTD&=~(1<<4);             // на пинах 4 и 5 лог 0, формируем dead_time паузу
OCR1A=dead_time; uk=2;
  }
void poluper2(void) { 
PORTD&=~(1<<4);             // на пин 4 лог 0
PORTD|=(1<<5);              // на пин 5 лог 1, формируем второй полупериод
if(dead_time<92) {OCR1A=val_fr; uk=0;}
else {OCR1A=val_fr-dead_time; uk=3;}
  }
void dead_time2(void) { 
PORTD&=~(1<<5);             // на пинах 4 и 5 лог 0, формируем dead_time паузу
OCR1A=dead_time; uk=0;
  }
//  ********************************************************************

void (*mas[4]) (void)={poluper1, dead_time1, poluper2, dead_time2};   // массив указателей функций       

//  ********************************************************************
//  ********************************************************************
void setup()
[/spoiler]