Автор Тема: Тэги плагина для Recorder и запись их, и отображение программным пакетом WinПОС  (Прочитано 476 раз)

Оффлайн Igor V

  • Новичок
  • *
  • Сообщений: 26
Здравствуйте, я создаю тэги в составе самописного плагина для рекордера версии 3.3.2.4 с PlgSDK-v3.3, плагины создаются в функции config() при старте плагина.
Тэги создаются следующим образом:
kPCh1=pRecorder->CreateTag("<имя тэга>",LS_VIRTUAL,this);
kPCh1->SetProperty(TAGPROP_DESCRIBE,CComVariant("<описание тэга>"));
kPCh1->SetProperty(TAGPROP_TYPE,CComVariant(TTAG_SCALAR));
Существует необходимость записи тэга при работе Recorder-а в режиме записи, с дальнейшим отображением записанного программой WinПОС, но тэги не записываются и в  WinПОС в виде графика не отображаются. Не могли б вы подсказать мне, какого рода изменения следует внести, чтобы тэги записывались и отображались в  WinПОС?

Оффлайн Ярослав2

  • Новичок
  • *
  • Сообщений: 36
Вот рабочий пример.


res=FRecorder->EnterConfigMode((IUnknown*)GPlugin, 0);
MyTag[7]=FRecorder->CreateTag( n,LS_VIRTUAL,NULL);
MyTag[7]->CfgWritable(true);   //
res=FRecorder->LeaveConfigMode((IUnknown*)GPlugin, 0);



Надо установить свойство тега записываемый. (MyTag[7]->CfgWritable(true);
Имя создаваемого нового тега должно быть уникальным в конфигурации.

« Последнее редактирование: 15.02.2019, 17:47:39 от Ярослав2 »

Оффлайн BacCM

  • moderator
  • *****
  • Сообщений: 69
CfgWritable устанавливает/снимает флаг сохранения тега в конфигурации.

тип TTAG_SCALAR указывает на то что тег скалярный,  т.е. одно значение, поэтому осциллограммы смотреть не получится, хотя в WinПОС должно отображаться.Еще надо не забывать класть в теги данныенпример PushValue для скалярных тегов

Оффлайн Igor V

  • Новичок
  • *
  • Сообщений: 26
Благодарю ответивших, но используя ниже приведенный пример в моем варианте создания тэга:
res=pRecorder->EnterConfigMode((IUnknown*)this, 0);pDACOutLvlCh1=pRecorder->CreateTag("MC-110",LS_VIRTUAL,this);pDACOutLvlCh1->SetProperty(TAGPROP_DESCRIBE,CComVariant("<описание>"));pDACOutLvlCh1->SetProperty(TAGPROP_TYPE,CComVariant(TTAG_SCALAR));
pDACOutLvlCh1->SetProperty(TAGPROP_DATATYPE,CComVariant((double)0));
pDACOutLvlCh1->CfgWritable(true);   //
res=pRecorder->LeaveConfigMode((IUnknown*)this, 0);Получаю стабильный краш рекордера при запуске на исполнение и запись, однако тэг в конфигурацию записывается. Не могли б Вы еще раз мне подсказать куда копать? Буду благодарен.

Оффлайн Ярослав2

  • Новичок
  • *
  • Сообщений: 36
Надо уточнить после какой именно команды "падает" программа.
Меня смущает в вашей программе ссылка на действующий контекст ( this).
В частности при создании тега. Для вашего плагина ссылка может быть не валидной. Лучше сделать через глобальную переменную.

Оффлайн ArTemP

  • Новичок
  • *
  • Сообщений: 4
Здравствуйте, та же самая проблема, сделал все по советам, но проблема не исчезла.Разве что краш происходит при попытке запуска запись или просмотр. И если прописать свойство записи тэга для нескольких, то теги в конфигурации не сохраняются.config(){
res=pRecorder->EnterConfigMode((IUnknown*)&GPlugin, 0);
pDACOutLvlCh1=pRecorder->CreateTag("MC-110_1, ",LS_VIRTUAL,NULL);
pDACOutLvlCh1->SetProperty(TAGPROP_DESCRIBE,CComVariant(""));
pDACOutLvlCh1->SetProperty(TAGPROP_TYPE,CComVariant(TTAG_SCALAR));
pDACOutLvlCh1->SetProperty(TAGPROP_DATATYPE,CComVariant((double)0));
pDACOutLvlCh1->CfgWritable(true);res=pRecorder->LeaveConfigMode((IUnknown*)&GPlugin, 0);}Так я создаю тег и прописываю ему свойство разрешения записи, можете что-то подсказать?

Оффлайн ArTemP

  • Новичок
  • *
  • Сообщений: 4
Лог краша:2019.02.19 14:31:57 *** Recorder core: 688
2019.02.19 14:31:57 W: Parameter [CrateClkSync] is not found
2019.02.19 14:31:57 W: Parameter [ClearLogAtStartUp] is not found
2019.02.19 14:31:57 W: Parameter [UTS] is not found
2019.02.19 14:31:57 W: Parameter [BatteryInfo] is not found
2019.02.19 14:31:57 W: Parameter [GNOM] is not found
2019.02.19 14:31:57 W: Parameter [DigInCCChan] is not found
2019.02.19 14:31:57 W: Parameter [PwrCCChan] is not found
2019.02.19 14:31:57 W: Parameter [AdvancedUserMode] is not found
2019.02.19 14:31:57 W: Parameter [RecordingWithPause] is not found
2019.02.19 14:31:57 W: Parameter [UsingHardwareTime] is not found
2019.02.19 14:31:57 W: Parameter [ShowDisbalance] is not found
2019.02.19 14:31:57 W: Parameter [AbsoluteFrameTime] is not found
2019.02.19 14:31:57 W: Parameter [AutoPreviewOnStartUp] is not found
2019.02.19 14:31:57 W: Parameter [ReserveDiskSpace] is not found
2019.02.19 14:31:57 W: Parameter [CheckLostSourceTags] is not found
2019.02.19 14:31:57 W: Parameter [IgnoreFailedDevices] is not found
2019.02.19 14:31:57 W: Parameter [SystemTimeQuantum] is not found
2019.02.19 14:31:57 W: Parameter [RegisterLostPacketsToMeraForVirualTags] is not found
2019.02.19 14:31:57 W: Parameter [DefaultUTSType] is not found
2019.02.19 14:31:57 W: Parameter [UpdateDataFiltering] is not found
2019.02.19 14:31:57 W: Parameter [RelaunchRecorderAtLoadConfig] is not found
2019.02.19 14:31:57 W: Parameter [FlushBeforeClose] is not found
2019.02.19 14:31:57 W: Parameter [WriteCodes] is not found
2019.02.19 14:31:57 W: Parameter [WriteTared] is not found
2019.02.19 14:31:57 W: Parameter [ForcedFlush] is not found
2019.02.19 14:31:57 W: Parameter [AlarmsGisterByRange] is not found
2019.02.19 14:31:57 W: Parameter [DataRecPreview] is not found
2019.02.19 14:31:57 W: Parameter [SaveConfigDialogAtExit] is not found
2019.02.19 14:31:57 W: Parameter [IncludeDeviceNameInTag] is not found
2019.02.19 14:31:57 W: Parameter [PutTimeStampAtRecordStart] is not found
2019.02.19 14:31:57 W: Parameter [UseNewTrends] is not found
2019.02.19 14:31:57 W: Parameter [DefaultUtsForVirtualTags] is not found
2019.02.19 14:31:57 W: Parameter [AutoConfig] is not found
2019.02.19 14:31:57 W: Parameter [FlushScalarTagsByTime] is not found
2019.02.19 14:31:57 W: Parameter [FlushScalarTagsPeriod] is not found
2019.02.19 14:31:57 --> EnterConfigMode
2019.02.19 14:31:57 InitPlugins()
2019.02.19 14:31:57 --> LeaveConfigMode
2019.02.19 14:31:57 ->[InitHardware]
2019.02.19 14:31:57    m_dwHostDeviceBackPlaneFreq=14745600
2019.02.19 14:31:57 #[InitHardware] time: 0.000275 sec.

2019.02.19 14:31:57 ->[InitSoftware]
2019.02.19 14:31:57 [3741] time line: 0.000000 sec.

2019.02.19 14:31:57 [3749] time line: 0.000000 sec.

2019.02.19 14:31:57 ->[DriverConfig]
2019.02.19 14:31:57 #[DriverConfig] time: 0.000004 sec.

2019.02.19 14:31:57 #[InitSoftware] time: 0.000364 sec.

2019.02.19 14:31:57 --> EnterConfigMode
2019.02.19 14:31:57 ***********************************************************
2019.02.19 14:31:57 *** КРИТИЧЕСКАЯ ОШИБКА:                                  **
2019.02.19 14:31:57 ***********************************************************
2019.02.19 14:31:57 * Произошло аварийное завершение работы системы
2019.02.19 14:31:57 * время: Tue Feb 19 14:31:57 2019
2019.02.19 14:31:57 ***********************************************************
2019.02.19 14:31:57        Упали по адресу: 2019.02.19 14:31:57        В треде ID: 00000688h
2019.02.19 14:31:57        В процессе ID: 00001628h
2019.02.19 14:31:57     код: C0000005h
2019.02.19 14:31:57     информация:
2019.02.19 14:31:57     Стек: SegSS:0000002Bh ESP:06ACF4DCh

Оффлайн BacCM

  • moderator
  • *****
  • Сообщений: 69
Здравствуйте, та же самая проблема, сделал все по советам, но проблема не исчезла.Разве что краш происходит при попытке запуска запись или просмотр. И если прописать свойство записи тэга для нескольких, то теги в конфигурации не сохраняются.config(){
res=pRecorder->EnterConfigMode((IUnknown*)&GPlugin, 0);
pDACOutLvlCh1=pRecorder->CreateTag("MC-110_1, ",LS_VIRTUAL,NULL);
pDACOutLvlCh1->SetProperty(TAGPROP_DESCRIBE,CComVariant(""));
pDACOutLvlCh1->SetProperty(TAGPROP_TYPE,CComVariant(TTAG_SCALAR));
pDACOutLvlCh1->SetProperty(TAGPROP_DATATYPE,CComVariant((double)0));
pDACOutLvlCh1->CfgWritable(true);res=pRecorder->LeaveConfigMode((IUnknown*)&GPlugin, 0);}Так я создаю тег и прописываю ему свойство разрешения записи, можете что-то подсказать?
На вид почти всё правильно.

Зачем в имени тега запятая? "MC-110_1, "
тип стоит указать входной или выходной
pTag->SetProperty(TAGPROP_TYPE, Variant(TTAG_INPUT | TTAG_SCALAR));
 


Оффлайн ArTemP

  • Новичок
  • *
  • Сообщений: 4
Благодарю, теги создаются и пишутся, но при сохранении конфигурации с последующим повторным запуском не происходит выхода из режима настройки, мною не правильно используется функция LeaveConfigMode?

Оффлайн Alexey

  • НПП-МЕРА
  • *
  • Сообщений: 1

Функции вход/ выход/ проверка состояния настройки:// Рекордер в настройке
function RStateConfig: boolean;
begin
  result := g_IR.CheckState(RS_CONFIGMODE);
end;
// вход в конфигмод
function ecm(var changeState:boolean): boolean;
begin
  if RStateConfig then
  begin
    result:=false;
    changeState:=false;
    exit;
  end
  else
  begin
    result:=ecm;
    if result then
    begin
      changeState:=true;
    end;
  end;
end;
// выход из конфига
function lcm: boolean;
var
  param: integer;
  ir: irecorder;
begin
  result := false;
  if RStateConfig then
  begin
    result := true;
    ir := getIR;
    // говорим рекордеру, чтобы обновил все списки тегов
    param := SCF_TAGSLIST or SCF_TAGSCONTENT;
    ir.SetProperty(RCPROP_CHANGEDSETTINGS, param);
    ir.LeaveConfigMode(G_Plg, 0);
  end;
end;