Перейти в хранилище документации
Обратиться в техническую поддержку![]()
Предыдущая страница Следующая страница
Для создания mdl-файла необходимо использовать два класса:
Объявленные классы и методы содержатся в заголовочном файле nissdlle.h. Код, содержащийся в файле nissdlle.h, представлен в разделе ПРИЛОЖЕНИЕ 2. Объявление классов NissObjectDLLExt и CoreInterface.
Примечание.
Описание методов класса NissObjectDLLExt приведено в таблице.
Метод | Описание | Пример |
CoreInterface* m_pCore | Указатель на интерфейс ядра |
|
virtual BOOL IsWantAllEvents() | Возвращает TRUE, если необходимо в функции OnEvent получать события от всех объектов, FALSE - если только от своего объекта. | если указать “CAM,GRABBER”, то при изменении настроек этих объектов для объекта DEMO придут сообщения:
DEMO|1|UPDATE_CAM|параметры камеры
DEMO|1|UPDATE_GRABBER|параметры устройства видеоввода |
virtual CString DescribeSubscribeObjectsList() | Через запятую указываются типы объектов, при изменении которых происходит уведомление текущего объекта | |
virtual CString GetObjectType() | Возвращает тип объекта | virtual CString GetObjectType()
{ return "DEMO"; }
|
virtual CString GetParentType() | Возвращает тип родительского объекта | virtual CString GetParentType()
{ return "SLAVE"; }
|
virtual int GetPos() | Возвращает позицию объекта в ключевом файле “intellect.sec”. Внимание! Этот параметр должен быть согласован с компанией «Ай Ти Ви групп» | virtual int GetPos()
{ return -1; }
Примечание. При запуске ПК Интеллект в демо-режиме функция возвращает -1 |
virtual CString GetPort() | Возвращает номер порта, через который будет происходить соединение и обмен сообщениями между объектом и ядром Внимание! Этот параметр должен быть согласован с компанией «Ай Ти Ви групп» | virtual CString GetPort()
{ return "1100"; }
|
virtual CString GetProcessName() | Возвращает имя процесса. Используется ядром для поиска и автоматического запуска исполнительного модуля при старте системы и инициализации модуля | virtual CString GetProcessName()
{ return "demo"; }
|
virtual CString GetDeviceType() | Определяет тип объекта и характер его поведения.
ACD – объект этого типа получает все события, связанные с созданием, изменением и удалением следующих объектов: Пользователи, Временная зона и Уровни доступа
ACD2– тип аналогичный ACD с дополнительной (обеспеченной ядром) возможностью автоматически удалять временные (с ограниченным сроком действия) карточки
Тип ACR указывает на то, что объект является считывателем
| Все объекты типа ACR доступны в раскрывающемся списке Точка прохода |
virtual BOOL HasChild() | Возвращает TRUE, если у объекта есть дочерние объекты, иначе – FALSE | virtual BOOL HasChild()
{ return TRUE; }
|
virtual UINT HasSetupPanel() | Если у объекта имеется панель настроек, метод возвращает TRUE, иначе – FALSE | virtual UINT HasSetupPanel()
{ return TRUE; }
|
virtual void OnPanelInit(CWnd*) | Используется при инициализации панели настроек объекта. В качестве параметра передается указатель на окно панели настроек |
|
virtual void OnPanelLoad(CWnd*,Msg&) | Используется при загрузке панели настроек для получения параметров объекта. В качестве параметра метода передается указатель на окно панели настроек и ссылка на сообщение, через которое осуществляется передача параметров объекта, и заполнение ими необходимых полей в панели настроек | virtual void OnPanelLoad(CWnd* pwnd,Msg& params)
{
CString s;
s = arams.GetParam("port");
pwnd->GetDlgItem(IDC_PORT)-> SetWindowText(s);
}
|
virtual void OnPanelSave(CWnd*,Msg&) | Используется при выгрузке панели настроек для сохранения параметров объекта. В качестве параметра метода передается указатель на окно панели настроек и ссылка на сообщение, через которое осуществляется передача параметров объекта и сохранение их в БД | virtual void OnPanelSave(CWnd* pwnd,Msg& params)
{
CString s;
pwnd-> GetDlgItem(IDC_PORT)-> GetWindowText(s);
params.SetParam("port",s);
}
|
virtual void OnPanelExit(CWnd*) | Используется при закрытии панели настроек объекта. В качестве параметра передается указатель на окно панели настроек |
|
virtual void OnPanelButtonPressed(CWnd*,UINT) | Предназначен для обработки нажатий кнопок на панели настроек объекта. В качестве параметра передается указатель на окно панели настроек и идентификатор кнопки. Примечание. Числовые значения идентификаторов кнопок должны начинаться с номера 1151. Например, для кнопки Test идентификатор в файле Resource.h определяется как: #define IDC_TEST 1151
| Virtual void OnPanelButtonPressed (CWnd* pwnd,UINT id)
{
if(id==IDC_TEST)
{ React react("DEMO",Id,"TEST");
m_pCore->DoReact(react); }
}
|
Если необходимо по нажатию кнопки вывести собственное диалоговое окно, созданное в этом же MDL-файле, то необходимо предварительно использовать код, указанный в примере
| HINSTANCE prev_hinst = AfxGetResourceHandle();
HMODULE hRes = GetModuleHandle("demo.mdl");
If (hRes) AfxSetResourceHandle (hRes);
//Код вывода диалогового окна:
СXXXDialog dlg;
dlg.DoModal();
AfxSetResourceHandle(prev_hinst);
| |
virtual BOOL IsRegionObject() | Указывает на то, что объект будет поддерживать разделы ПК Интеллект. Разделы применяются для группировки объектов. Также они могут использоваться в системе отчетов |
|
virtual BOOL IsProcessObject() | Указывает на то, что объект будет поддерживать возможность одновременного запуска и параллельной работы нескольких исполнительных модулей. Например, это может использоваться для запуска отдельного модуля непосредственно для каждого COM-порта. Примечание. Рекомендуется использовать один рабочий модуль. Это упростит отладку и модификацию модуля |
|
virtual void OnCreate(Msg&) | Используется при создании объекта. В качестве параметра передается ссылка на сообщение, содержащее информацию по объекту. Здесь же указываются параметры по умолчанию | virtual void OnCreate (Msg& msg)
{
msg.SetParam ("port","COM1");
}
|
virtual void OnInit(Msg&) | Используется при инициализации объекта. В качестве параметра передается ссылка на сообщение, содержащее информацию по объекту | virtual void OnInit (Msg& msg)
{
OnChange (msg, msg);
}
|
virtual void OnChange(Msg&,Msg&) | Используется при изменении объекта. В качестве параметра передаются ссылки на сообщения, содержащие информацию по объекту до и после изменения соответственно | virtual void OnChange(Msg& msg, Msg& prev)
{
React react (msg.GetSourceType(), msg.GetSourceId(),"INIT");
react.SetParam("port",msg.GetParam("port"));
m_pCore->DoReact(react);
}
|
virtual void OnDelete(Msg&) | Используется при удалении объекта. В качестве параметра передается ссылка на сообщение, содержащее информацию по объекту | virtual void OnDelete (Msg& msg)
{
React react (msg.GetSourceType(), msg.GetSourceId(),"EXIT");
m_pCore-> DoReact(react);
}
|
virtual void OnEnable(Msg&) | Предназначен для обработки нажатия кнопки Disable на панели ПК Интеллект при включении объекта. В качестве параметра передается ссылка на сообщение, содержащая информацию по объекту |
|
virtual void OnDisable(Msg&) | Предназначен для обработки нажатия кнопки Disable на панели ПК Интеллект при выключении объекта. В качестве параметра передается ссылка на сообщение, содержащая информацию по объекту |
|
virtual BOOL OnEvent(Event&) | Служит для обработки событий, передаваемых в качестве параметра | virtual BOOL
OnEvent(Event& event)
{
If
(event.GetAction() == "ACCESS_IN" ||
event.GetAction() == "ACCESS_OUT")
{
Msg per = m_pCore-> FindPersonInfoByCard(event.GetParam("facility_code"),
event.GetParam("card"));
event.SetParam
("param0", !per.GetSourceId().IsEmpty() ?
per.GetParam("name") : event.GetParam("facility_code") + event.GetParam("card"));
event.SetParam("param1", per.GetSourceId() );
}
Else
If (event.GetAction() == "NOACCESS_CARD")
{
event.SetParam
("param0",event.GetParam("facility_code") + event.GetParam("card"));
}
return TRUE;
}
|
virtual BOOL OnReact(React&) | Служит для обработки реакций, передаваемых в качестве параметра |
|
В глобальной функции CreateNissObject(CoreInterface* core) необходимо создать экземпляры описанных объектов, поместить их в массив CNissObjectDLLExtArray и возвратить указатель на объект этого массива. Через эту функцию необходимо получить указатель на интерфейс ядра, который в дальнейшем используется в объектах для обращения к методам данного интерфейса:
CNissObjectDLLExtArray* APIENTRY CreateNissObject(CoreInterface* core)
{
CNissObjectDLLExtArray* ar = new CNissObjectDLLExtArray;
ar->Add(new NissObjectDemo(core));
ar->Add(new NissObjectDemoDevice(core));
return ar;
}
После загрузки DLL-файла ядро вызывает функцию CreateNissObject и получает указатели на все используемые объекты.
Все панели настроек объектов хранятся в ресурсах в виде диалогов. Идентификаторы диалогов строятся по схеме IDD_object_SETUP, где object – это имя соответствующего объекта. Например, для объекта DEMO – это IDD_DEMO_SETUP, а для объекта DEMO_DEVICE – это IDD_DEMO_DEVICE _SETUP.
Примечание.