Помощь в написании скрипта

Avatar
  • обновлен
Здравствуйте. нужен пример скрипта на паскале, скрипт по таймеру
1. читаем физ канал,
2. проверяем соответствие значения уставке, допустим он должен быть больше определенного значения 30
3. если значение меньше уставки, пишем в вирт канал флаг для контроля допустим 1, причем флаг не должен записаться в течении 5 циклов таймера скрипта, т.е. если течении 5 циклов опроса значение не соответствует уставке и на 6 цикл не сооответствует то должен писаться флаг, если в любом цикле норма, счетчик опроса в 0 и снова
может быть не буду понят но прошу помощи
Avatar
SIMP Tech (Сергей)
файл не создается - выпустил отдельный пост по сему вопросу
http://simplight.ru/forum/redaktor-kanalov/918-problemy-s-savetotxtfile

У Вас будет возможность предоставить доступ по teamviwer, на месте посмотрим в чем может быть причина. Если да, то данные для подключения пришлите на simp@miniscada.com
Avatar
Владимир
файл не создается - выпустил отдельный пост по сему вопросу
http://simplight.ru/forum/redaktor-kanalov/918-problemy-s-savetotxtfile
Avatar
SIMP Tech (Сергей)
Бодрого дня!
Пробовал посмотреть на выполнение под запущенным монитором, эффекта не увидел

На выходе файл создается? Или файл есть но он пустой?
Avatar
Владимир
Бодрого дня!
Пробовал посмотреть на выполнение под запущенным монитором, эффекта не увидел
Avatar
SIMP Tech (Сергей)
День добрый.

Задача такова - нужно писать в txt файл несколько параметров,
В файл record1.txt пытаюсь вывести заранее подготовленную строку
В файл record.txt пытаюсь вывести строку которая формируется в самой функции SaveToTxtFile

ни тот ни другой вариант не работают, компиляция проходит без ошибок, но эффекта 0, в чем проблема?


Var In1, In2, In3, In4, str: String;
Begin
In1:=ReadValue('натяжение');
In2:=ReadValue('Dmin');
In3:=ReadValue('Dmax');
In4:=ReadValue('оборотов в мин');
str := TimeToStr(now) + ' ves ' + ReadValue('натяжение') + ' Dmin ' + ReadValue('Dmin') + ' Dmax '+ ReadValue('Dmax');
SaveToTxtFile('d:\record1.txt', str);
SaveToTxtFile('d:\record.txt', TimeToStr(now) + ' ves ' + ReadValue('натяжение') + ' Dmin ' + ReadValue('Dmin') + ' Dmax '+ ReadValue('Dmax') );
end.

Скажите пожалуйста Вы пробудете работу скрипта под отладкой?
Avatar
SIMP Tech (Сергей)
Не-не.
TStringList.SaveToFile пишет имя канала, как и требуется.

Нет нет, баг сохраняется. Запустите в "мониторе", Вы под отладкой смотрите, а там все "оптимизаторы" отключаются.
Avatar
Михаил
Не-не.
TStringList.SaveToFile пишет имя канала, как и требуется.
Avatar
SIMP Tech (Сергей)
С TStringList.SaveToFile работает нормально.

Понятно. Но проблема с заменой имени канала все равно должна была остаться.

И чой-то у вас все запущено… :)
TStringList.SaveToFile создает файл и пишет данные из редактора скриптов - если "Выполнить".
А SaveToTxtFile() только когда "Монитор" запускаешь.

)) SaveToTxtFile - по сути функция для упрощения работы с текстовым файлом, в отладке у неё стоит "заглушка", работа непосредственно с классом TStringList, уровень более "продвинутый", соответственно он работает даже под отладкой.
Avatar
Михаил
Этот код не выполняется.
Версия - только что скачал SIMP Light FREE..
Правда сейчас я под WIN7 проверяю, может из-за этого.

А на что ругается? Хотя, судя по тому что обнаружили неправильную работу скрипта, этот вариант тоже не "взлетит", программисты мне уже ответили в чем проблема, при компиляции система для оптимизации скорости, заменяет имена на индексы в таблице данных, тут то и происходит "чудо" Встретив в скрипте имя канала, в данном случае объявленное как константа, система заменяет его на индекс.

Извиняюсь. Надо было от имени Администратора редактор запускать.
С TStringList.SaveToFile работает нормально.
В любом случае это баг.

И чой-то у вас все запущено… :)
TStringList.SaveToFile создает файл и пишет данные из редактора скриптов - если "Выполнить".
А SaveToTxtFile() только когда "Монитор" запускаешь.
Avatar
SIMP Tech (Сергей)
Этот код не выполняется.
Версия - только что скачал SIMP Light FREE..
Правда сейчас я под WIN7 проверяю, может из-за этого.

А на что ругается? Хотя, судя по тому что обнаружили неправильную работу скрипта, этот вариант тоже не "взлетит", программисты мне уже ответили в чем проблема, при компиляции система для оптимизации скорости, заменяет имена на индексы в таблице данных, тут то и происходит "чудо" Встретив в скрипте имя канала, в данном случае объявленное как константа, система заменяет его на индекс.