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

Avatar
  • обновлен
Здравствуйте. нужен пример скрипта на паскале, скрипт по таймеру
1. читаем физ канал,
2. проверяем соответствие значения уставке, допустим он должен быть больше определенного значения 30
3. если значение меньше уставки, пишем в вирт канал флаг для контроля допустим 1, причем флаг не должен записаться в течении 5 циклов таймера скрипта, т.е. если течении 5 циклов опроса значение не соответствует уставке и на 6 цикл не сооответствует то должен писаться флаг, если в любом цикле норма, счетчик опроса в 0 и снова
может быть не буду понят но прошу помощи
Avatar
Александр
каналы имеют свои названия, это "Канал откуда берем данные" - образное названия канала.
Avatar
Александр
Так выглядит один из файлов txt:
0,639835481213199
0,639835481213199
0,639835481213199
0,639835481213199
0,771158362428347
0,771158362428347
0,771158362428347
0,771158362428347
0,771158362428347
0,771158362428347
Avatar
SIMP Tech (Сергей)
каналы имеют свои названия, это "Канал откуда берем данные" - образное названия канала.

ок. Тогда для полноты картины надо было с реальными именами, а так получается что написано с ошибкой. Хорошо, тогда в силе первый вопрос, почему не объединить в одном скрипте расчет и запись, не факт что расчет будет готов, к моменту когда второй скрипт вычитывает значения результата, каналы между собой не синхронизированы.
Avatar
Владимир
как в начале строки подвязать текущее время и имя канала?
Avatar
SIMP Tech (Сергей)
День добрый.

как в начале строки подвязать текущее время и имя канала?

В начале какой строки? Которую будите передавать в канал или записывать в файл?
Avatar
Владимир
Та которая ляжет в конечный файл txt, чтобы конечный вид был такой:
12:00:11 chanel1 0,639835481213199 chanel2 0,698354812131993
Avatar
SIMP Tech (Сергей)
Та которая ляжет в конечный файл txt, чтобы конечный вид был такой:
12:00:11 chanel1 0,639835481213199 chanel2 0,698354812131993

пример: str := TimeToStr(now) + ' chanel1 ' + FloatToStr(0.639835481213199);
Avatar
Михаил
В подобном случае

ChannelName := 'Имя канала';
SaveToTxtFile('Имя файла',Channel_Name);


в файл выводится индекс канала, а не текстовое содержимое переменной Channel_Name.
Так и должно быть?
Avatar
SIMP Tech (Сергей)
В подобном случае

ChannelName := 'Имя канала';
SaveToTxtFile('Имя файла',Channel_Name);


в файл выводится индекс канала, а не текстовое содержимое переменной Channel_Name.
Так и должно быть?

Я немного не понял Вашего вопроса.

из справки:

Function SaveToTxtFile (АFileName: string; Str: string): Boolean

Записывает строковое значение Str в текстовый файл AFileName. Возвращает true, если запись успешна, и false, если произошла ошибка записи. Запись происходит последовательно, строчка за строчкой.



Пример вызова:

SaveToTxtFile("c:\receipt.txt", "123,33,44,555");
Avatar
Михаил
Давайте ширше

Var
cTime: TDateTime;
TinValue: Variant;
tStr: string;
Const
logFileName = 'c:\simplog.txt';
TinChName = 'Уровень мерник поз. 1';
Begin
cTime := Now;
tStr := FormatDateTime('yyyy-mm-dd hh:nn:ss',cTime) + '; ';
TinValue := ReadValue(TinChName);
tStr := tStr + 'Канал ' + TinChName + ' = ' + VarToStr(TinValue) + ';';
SaveToTxtFile(logFileName, tStr);
end.


В файле, вместо ожидаемого: "Канал Уровень мерник поз. 1 = 85",
видим: "Канал 3 = 85".

При этом ShowMessage(tStr) показывает то, что нужно.