Ваши комментарии

Добрый день!
Необходимое вступление (подведение к вопросу).
В настоящий момент занимаюсь модернизацией мнемосхем: добавляю функциональность и наглядность. То есть пытаюсь отобразить на мнемосхеме информацию, облегчающую оперативное наблюдение технологических процессов. Это всевозможные счетчики: интервалов времени, количество включений и т.д. Эта моя деятельность привела к тому, что количество каналов стало неудержимо расти - в настоящий момент это количество перевалило за 200 единиц. И вот, в связи с этим, спонтанно родились два предложения по улучшению SimpLight.

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

далее итерация повторяется столько раз, на сколько страниц вверх нам необходимо переместиться.

Не сочтите это за брюзжание, но гораздо проще было бы работать с перемещением каналов по принципу, который прекрасно работает в редакторе мнемосхем:

Предложение: для перемещения канала по списку активных каналов ввести возможность: выделил канал мышью, а затем при помощи CTRL+стрелка перемещай его вверх-вниз.


2) второе предложение плавно вытекает из первого.
Меня немного тревожит рост числа каналов из-за того, что я вынужден объявлять каналом, то, что по сути своей каналом не является. Поскольку на мнемосхеме я могу привязать к элементу только канал, и ничего больше. А мне всего-навсего необходимо показать количество включений нагревателя. Это значение вычисляется в скрипте и записывается в глобальную переменную, для того чтобы не потерять счетчик включений при перезапуске программы или компьютера.

Предложение: дать возможность привязывать к элементам мнемосхемы, пусть хотя бы только к текстовым полям, переменные, значение которых необходимо отобразить на экране.

Тогда количество каналов значительно уменьшится (в моем случае на одну треть).

С уважением, Кондратенко Анатолий
Новочеркасск
Добрый день!

Обсудите на том же совещании вопрос о сохранении строковой информации в базе данных.
Ну очень (очень, очень) требуется сохранять в базе наряду с числовыми данными и название продукции, которая в данный момент изготавливается на оборудовании.

С уважением, Кондратенко Анатолий
Новочеркасск
Добрый день!

Очень хорошо, что место диспетчера разрабатывается!
Мы весьма заинтересованы в появлении версии, которая бы выполняла все те функции, что возлагались на SIMP Light SPACE.
Хотя бы ориентировочно, когда ждать ?
В этом году, я так понимаю, уже не будет, а как на счет 2015 года ?

С уважением, Кондратенко Анатолий
Новочеркасск
Добрый день!

Попробовал убрать содержимое папки library на другой диск - редактор мнемосхем загружается влёт и полностью работоспособен (квадраты, трубы и т.д. помещаются на мнемосхему, а при выборе изображений просит указать путь к изображению - это терпимо). Поместил папку library в корень диска С: (т.е. убрал из каталога slProject, точнее тамошняя папка library пуста).

С уважением, Анатолий.
Новочеркасск
Хорошо, завтра обязательно проведу тест.
Отпишусь при любом результате.
Добрый день!

Разрешите присоединиться к теме. Целиком и полностью подтверждаю наличие этой проблемы. Сообщение о нехватке памяти стало появляться при использовании последних двух версий программы. Просто у нас это наложилось на проблемы с жестким диском сервера, и поэтому, списал на проблемы железа. Но сейчас диски стоят новые. Стал изучать проблемы ОС (Windos Server 2003) - действительно, оказалось, что ОС "болеет" нерациональным распределением памяти - редактировал реестр, файл подкачки отдал на усмотрение ОС и перенес на несистемный диск - помогло, НО через пару недель опять вернулось. После перезагрузки работоспособность редактора мнемосхем возобновляется, НО при третьем-четвертом запуске опять появляется сообщение о нехватке памяти. После нажатия ОК - редактор все-таки загружается, НО ни один элемент мнемосхемы "не привязан" к каналу, поскольку список каналов пуст.

С уважением, Анатолий.
Новочеркасск
Добрый день!

Точно! Точно! :woohoo:
Там же должен быть двойной слеш.
И главное, что рядом в другом скрипте работаю с текстовыми файлами, там пишу двойной слеш, а тут не доглядел.
И на старуху бывает проруха :lol:
Гран мерси! Теперь мы со звуковыми сообщениями будем! Ура!

С уважением, Анатолий
Новочеркасск
Добрый день!

Новая проблема.
Затеялся сделать "неубиваемый" таймер, т.е. таймер продолжает считать от начала засечки времени даже в случае перезагрузки SIMP Light.
Для этого, очевидно, необходимо временные засечки для моих 8-ми объектов сохранить во внешнем файле. То есть в текстовом файле записаны 8 строк, которые либо сохраняют временную засечку, либо какую-то заглушку,свидетельствующую о том что для этого объекта таймер сейчас не запущен. При перезагрузке системы производится проверка: есть ли для объекта N в соответствующей строке засечка времени. Если таковая будет найдена, то соответствующая глобальная переменная (предназначенная для хранения стартового значения времени этого объекта) будет заполнена этим значением.
Надеюсь, идея понятна.
Задачка не сложная.
НО!
Для решения описанной задачки, необходимо в текстовом файле значения записывать в строго определенном месте. То есть для объекта №1 засечка должна быть первой строкой, для объекта №2 засечка должна быть второй строкой, и т.д.
Это можно реализовать стандартным путем, перезаписыванием всех 8-ми строк, на ходу меняя необходимые строки.
НО!
Изучив функции SIMP Light, отвечающие за работу с текстовыми файлами, я не обнаружил возможности перезаписать существующий файл. Функция SaveToTxtFile не позволяет перезаписать существующий файл, а методично дописывает информацию в конец файла.
Как быть?
Можно было бы переложить эту грязную работу (по уничтожения файла) на плечи внешнего командного файла.
НО!
Тут то же - засада. Как оказалось в С-скриптах функция ExecuteApp напрочь отказывается работать.
Так что, HELP ME :unsure:

С уважением, Анатолий
Новочеркасск
Добрый день!

Спасибо, конечно, за пример.
Пример какой-то непонятный: сделан один канал, мнемосхемы нет… Я так и не смог его запустить. При импорте в Управление проектами он заменяет текущий демо-проект демо-версии, все куда-то пропадает. Бросил всё это. Привели бы эти 5 строк скрипта в тексте да и всё. Идея понятна, только я писАл, что в паскалевских скриптах звук удается получить

ExecuteApp('c:\balabolka\balabolka.exe', '-n Katerina -t привет');

а вот в скриптах на С++ это уже НЕ РАБОТАЕТ! Равно как не работает простейшая конструкция

ExecuteApp("c:\windows\system32\notepad.exe", "");

А так как все скрипты у меня созданы в С++, то очень интересует вопрос ПОЧЕМУ НЕ РАБОТАЕТ ExecuteApp в скриптах С++ ? Что я делаю не так?

С уважением, Анатолий
Новочеркасск
Добрый день!

Функция SetTimeout (а также и SetTimeOut) не работают, при компиляции выдается сообщение "undeclared …"
:(

С уважением, Анатолий
Новочеркасск


Сервис поддержки клиентов работает на платформе UserEcho