Текст новой процедуры PLC заменяет текст последней старой

SUN
Posts: 34
Joined: Tue Feb 18, 2020 3:41 pm

Текст новой процедуры PLC заменяет текст последней старой

Post by SUN »

Доброго времени суток уважаемая техподдержка!

Мне встретилась такая закономерность в поведении программы myCNC (win64, на других операционках такое тоже может быть).
После создания новой процедуры PLC (тип не важен) и перехода между закладками, оператору больше нельзя нажимать кнопку "сохранить всё" и чтобы продолжить редактирование PLC процедур нужно перегрузить программу.
И если оператор допустит оплошность и после перехода между закладками PLC нажмёт кнопку "сохранить всё", например в моём случае после редактирования этого самого нового кода, то в файл последней процедуры, в моём случае это: "POPUP_HANDLER" (или "TRIG04") окончательно запишется копия кода новой процедуры.

Подробно. Вот так уже несколько раз, я нечаянно заменил новым кодом старый код последней процедуры:
1. Создаю под именем, например, "M539" кнопкой "+" новый PLC код (не важно какой тип: hardware, software).
Код создаётся последним в списке процедур. Последний в моём списке был "POPUP_HANDLER" (или "TRIG04")
Пишу тело кода, например:
main()
{
gvarset(9036, 200); (использую этот регистр для вывода отладочного значения из тела процедуры PLC)
timer=3;do{timer--;}while(timer>0);
exit(99);
};
2. Жму кнопки: "сохранить всё", "билд"...
3. Проверяю новый код и текст предпоследнего кода "POPUP_HANDLER" (или "TRIG04"). Всё корректно - код ещё старый.
4. Перехожу на любую другую закладку в программе и возвращаюсь назад на закладку только-что созданной процедуры "M539". Вижу, что список процедур пересортировался.
5. Смотрю код последней процедуры, под именем "POPUP_HANDLER" (или "TRIG04"), в этой процедуре вместо старого кода, появился код из "M539".
В этом месте, пока это не проблема. Текст кода последней процедур просто неправильно представляется в программе myCNC, после перехода между закладками. Если выйти из программы не использовав кнопку "сохранить всё", то код последней процедуры "POPUP_HANDLER" (или "TRIG04") загрузится старый и корректно будет отображаться.
7. Если же в таком состоянии нажать кнопку "сохранить всё", то старый код последний процедуры перезаписывается копией новой.

Техподдержка.
Если вдруг для вас это важно и Вы будете исправлять, то пожалуйста не так как это исправлена "ошибка" на закладке "создание кодов из примитивов". Теперь после "исправлений" в win64 не отображаются объекты картинок для генератора кода из примитивов. Проверьте пожалуйста на win64.

mycnc
Posts: 784
Joined: Thu May 10, 2018 2:42 pm
Location: Ottawa, Canada
Contact:

Re: Текст новой процедуры PLC заменяет текст последней старой

Post by mycnc »

SUN wrote:
Thu Apr 09, 2020 11:22 am
Мне встретилась такая закономерность в поведении программы myCNC (win64, на других операционках такое тоже может быть).
После создания новой процедуры PLC (тип не важен) и перехода между закладками, оператору больше нельзя нажимать кнопку "сохранить всё" и чтобы продолжить редактирование PLC процедур нужно перегрузить программу.
Знаем. Можно попробовать после завершения компиляции (перед тем, как уходить из PLC Builder) выбрать другую PLC из списка.
Починим при возможности.

mycnc
Posts: 784
Joined: Thu May 10, 2018 2:42 pm
Location: Ottawa, Canada
Contact:

Re: Текст новой процедуры PLC заменяет текст последней старой

Post by mycnc »

SUN wrote:
Thu Apr 09, 2020 11:22 am
Техподдержка.
Если вдруг для вас это важно и Вы будете исправлять, то пожалуйста не так как это исправлена "ошибка" на закладке "создание кодов из примитивов". Теперь после "исправлений" в win64 не отображаются объекты картинок для генератора кода из примитивов. Проверьте пожалуйста на win64.
Системной библиотеке под Windows что-то не нравится в иконках, которые мы нарисовали и некоторые из них просто не показываются без видимых причин. Большинство из них удалось оживить после плясок с бубном, но несколько проблемных осталось. Более того, иногда после перекомпиляции самопроизвольно пропадают новые иконки.
Исправлять будем, но список задач велик, решение некоторых вопросов (особенно специфически связанных с Windows) может затягиваться.

SUN
Posts: 34
Joined: Tue Feb 18, 2020 3:41 pm

Re: Текст новой процедуры PLC заменяет текст последней старой

Post by SUN »

mycnc спасибо!

Я понял, значит это у меня что-то мной "накосячено" в win64....
Обязательно найду причину почему не отображаются иконки и отпишусь здесь...

SUN
Posts: 34
Joined: Tue Feb 18, 2020 3:41 pm

Re: Текст новой процедуры PLC заменяет текст последней старой

Post by SUN »

Нашёл мою "проблему с иконками в win64".
Я допустил ошибку - не предусмотрел, что имя исполняемого файла "myCNC.exe" может использоваться как константа в проекте myCNC.
Что я делал "не так":
Новые версии исполняемых файлов "myCNC" я систематически именовал как "myCNC_2020_****.exe" и копировал их в папку программы: "C:\MyCNC64\bin\"
Далее создавал пользовательские ярлыки с параметрами командной строки и запускал нужную мне версию. Как оказалось существуют отдельные объекты программы, которые связанные с программой по имени проекта. Не ожидал....

Знаю, что "советы крайне неблагодарное дело".
1. Совет пользователям: запускайте проект myCNC (до Ver:1.88.3857) только с именем файла "mycnc.exe", в противном случае "иконки исчезнут" в win64.
2. Совет разработчикам. Избегайте в своих проектах абсолютных ссылок и не используйте в коде программ доступные пользователю параметры (имена) как константы проекта.

p.s.
Проект программы myCNC должен бы быть открытым....

mycnc
Posts: 784
Joined: Thu May 10, 2018 2:42 pm
Location: Ottawa, Canada
Contact:

Re: Текст новой процедуры PLC заменяет текст последней старой

Post by mycnc »

SUN wrote:
Fri Apr 10, 2020 6:30 am
Я понял, значит это у меня что-то мной "накосячено" в win64....
Обязательно найду причину почему не отображаются иконки и отпишусь здесь...
Нет, я же говорю, это какой-то косяк виндовых библиотек и они не хотят показывать картинки.

Одну проблему под Windows мы знаем -
В SVG задается размер картинки. Если изображение выходит за пределы этих размеров - например сделано размывание, которое уходит во вне, или у градиента или сплайна точка привязки находится вне заданных размеров, или просто какой-то объект унесли в сторону, то Линукс версия обрезает изображение согласно заданным размерам и показывает картинку как надо. Windows версия при этом просто показывает пустое поле.

Но на эту тему мы все картинки проверили. Есть еще что-то.

mycnc
Posts: 784
Joined: Thu May 10, 2018 2:42 pm
Location: Ottawa, Canada
Contact:

Re: Текст новой процедуры PLC заменяет текст последней старой

Post by mycnc »

SUN wrote:
Fri Apr 10, 2020 2:15 pm
2. Совет разработчикам. Избегайте в своих проектах абсолютных ссылок и не используйте в коде программ доступные пользователю параметры (имена) как константы проекта.
Насколько мне известно, абсолютные ссылки не используются.

Поиск внешних файлов ведется от текущего каталога - по умолчанию C:\MyCNC64, но может быть любой другой.

mycnc
Posts: 784
Joined: Thu May 10, 2018 2:42 pm
Location: Ottawa, Canada
Contact:

Re: Текст новой процедуры PLC заменяет текст последней старой

Post by mycnc »

SUN wrote:
Fri Apr 10, 2020 2:15 pm
p.s.
Проект программы myCNC должен бы быть открытым....
С чего вдруг?

SUN
Posts: 34
Joined: Tue Feb 18, 2020 3:41 pm

Re: Текст новой процедуры PLC заменяет текст последней старой

Post by SUN »

Коротко. Главное.
В win64 переименовать файл "muCNC.exe", например, в "myCNC1.exe". Запустить (из командной строки с параметром, если это важно) и на закладке "генератора кода прототипов" иконок не будет. Это говорит о том, что где-то в коде используется константа имени файла.
Впрочем, как хотите, можете не исправлять - не критично.

Пусть будет закрытым. Действительно почему "вдруг?". Я писал "...должен бы быть...". Поздно, надо было с самого начала делать его открытым и Это - "закрытость", считаю главной ошибкой проекта. Личное мнение....

mycnc
Posts: 784
Joined: Thu May 10, 2018 2:42 pm
Location: Ottawa, Canada
Contact:

Re: Текст новой процедуры PLC заменяет текст последней старой

Post by mycnc »

Вы не внимательно читаете мои ответы.

поиск внешних файлов ведется относительно каталога, в котором установлен myCNC.
Запускать myCNC1.exe из каталога bin не корректно
Надо выйти в основной каталог и запустить оттуда -

Code: Select all

bin/myCNC1.exe

Post Reply