Все выпуски  

RFpro.ru: Программирование на Delphi и Lazarus


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

Асмик Гаряка
Статус: Советник
Рейтинг: 65
∙ повысить рейтинг »
Степанов Иван /REDDS
Статус: 4-й класс
Рейтинг: 1
∙ повысить рейтинг »
Орловский Дмитрий
Статус: Мастер-Эксперт
Рейтинг: 0
∙ повысить рейтинг »

∙ Pascal / Delphi / Lazarus

Номер выпуска:1733
Дата выхода:07.04.2018, 10:45
Администратор рассылки:Зенченко Константин Николаевич (Модератор)
Подписчиков / экспертов:31 / 34
Вопросов / ответов:1 / 1

Консультация # 192997: Здравствуйте! Мне необходимо досконально разобраться с логикой этого примера и применить эти шаблоны для строительства реальной системы источник- https://simplight.ru/manual/komandy-raboty-s-globalnymi-peremennymi/flushglobalvarcache- VALUE_Y' и VALUE_X - это измерительные каналы датчика значения которых пи...

Консультация # 192997:

Здравствуйте!

Мне необходимо досконально разобраться с логикой этого примера
и применить эти шаблоны для строительства реальной системы

источник- https://simplight.ru/manual/komandy-raboty-s-globalnymi-peremennymi/flushglobalvarcache-



VALUE_Y' и VALUE_X - это измерительные каналы датчика
значения которых пишутся в и читаются с БД MS SQL

каналы Conn_status, result - диагнастические

моя задача записать значения и считать их за заданный промежуток времени

Прошу Вас поставить поясняющие комментарии в строках скрипта
у меня пока нет опыта в Pascal


Код (Pascal) :: выделить код
var
  ADOConnection: TADOConnection;
  ADOQuery: TADOQuery;
  ConnectionString: string;

  VALUE_Y_tm:string;
  VALUE_X_tm:string;
  DT_XY:String;
  tmptxt:String;

procedure Replace(var str, OldPattern, NewPattern: string);
  var
    ind: integer;
  begin
    ind := Pos(OldPattern, str);
    if ind = 0 then
      exit;
    str[ind] := NewPattern;
  end;

procedure OnStartScript;
begin
  CoInitialize(nil);
  ADOConnection := TADOConnection.Create(nil);
  ADOQuery := TADOQuery.Create(nil);
end;

procedure OnStopScript;
begin
  CoUninitialize;
  ADOConnection.free;
  ADOQuery.free;
end;


begin

  try
    ADOConnection.Connected := false;
    ADOQuery.Active := false;
    ADOConnection.ConnectionString := 'Provider=SQLOLEDB.1;Persist Security Info=True;User ID=testuser;Password=test;Initial Catalog=testDB;Data Source=DMITRYSIMP-PC\SQLEXPRESS;';
    ADOQuery.Connection := ADOConnection;

VALUE_Y_tm:= floatToStr(ReadValue('VALUE_Y'));  Replace(VALUE_Y_tm ,',','.');
VALUE_X_tm:=  floatToStr(ReadValue('VALUE_X')); Replace(VALUE_X_tm ,',','.');
DT_XY:=FormatDateTime('yyyy-mm-dd hh:nn:ss', now);
Replace(DT_XY ,' ','T');

    tmptxt:=Format('insert into Value_01(VALUE_Y, TIME_XY, VALUE_X) values (%s, ''%s'', %s)', [VALUE_Y_tm, DT_XY, VALUE_X_tm]);

     ADOQuery.SQL.Text:= tmptxt;
   ADOQuery.Active:=true;

  finally

  end;
end.




Второй скрипт


Код (Pascal) :: выделить код
var
  ADOConnection: TADOConnection;
  ADOQuery: TADOQuery;
  ConnectionString: string;
  val: string;

procedure OnStartScript;
begin
  CoInitialize(nil);
  ADOConnection := TADOConnection.Create(nil);
  ADOQuery := TADOQuery.Create(nil);
end;

procedure OnStopScript;
begin
  CoUninitialize;
  ADOConnection.free;
  ADOQuery.free;
end;


begin

  val:='';
  WriteValue('Conn_status',0);

  try
    ADOConnection.Connected := false;
    ADOQuery.Active := false;
    ADOConnection.ConnectionString := 'Provider=SQLOLEDB.1;Persist Security Info=True;User ID=testuser;Password=test;Initial Catalog=testDB;Data Source=DMITRYSIMP-PC\SQLEXPRESS;';
    ADOQuery.Connection := ADOConnection;
    ADOQuery.SQL.Text := 'SELECT TOP 1000 [VALUE_Y],[TIME_XY],[VALUE_X] FROM [dbo].[Value_01]';

    ADOQuery.Active:=true;

    if ADOQuery.Active then
    begin
     WriteValue('Conn_status',1);

     while ADOQuery.Eof = false do
     begin
       val := val+  ' VALUE_X='+floattostr(ADOQuery.FieldByName('VALUE_X').AsInteger);
       val:=  val+  ' TIME='+              ADOQuery.FieldByName('TIME_XY').AsString;
       val:=val+chr(13);

       ADOQuery.Next;
     end;
     WriteValue('result', val);
   end
   else begin
      AddToDebugLog('fail SQL connection');
      WriteValue('Conn_status',0);
   end;

  finally

  end;
end.

Дата отправки: 28.03.2018, 10:31
Вопрос задал: helic (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Зенченко Константин Николаевич (Модератор):

Здравствуйте, helic!

Экспертов по SKADA SIMP Light, на портале нет. Несмотря,на то, что эта система использует pascal-подобные скрипты, они далеки от языка программирования: Pascal / Delphi / Lazarus.

Скачал, поставил, "балуюсь" с системой. И это весь мой экспертный уровень.
Обратитесь в службу поддержки, по отзывам, она работает нормально и помогает.
Удачи!

Консультировал: Зенченко Константин Николаевич (Модератор)
Дата отправки: 06.04.2018, 16:13
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное