Краткое описание принципов написания библиотеки для работы с монитором

Пример проекта для работы с монитором Triton.

Далее следует пример Include-файла с описаниями необходимых функций.

 

//------------------------------------------------------------------------------------

//library should be compiled with flags:

//   Project/Properties/Configuration properties/General/Use of MFC: Use MFC in a static Library

//   Project/Properties/Configuration properties/General/Character set: Not Set

//----------------------------

//should be used in main program:

//#define LIBMONITOR_IMPORTS

//should be used in library:

#define LIBMONITOR_EXPORTS

//----------------------------

#ifdef LIBMONITOR_EXPORTS

#define LIBMONITOR_FUN __declspec(dllexport)

#else

#ifdef LIBMONITOR_IMPORTS

#define LIBMONITOR_FUN __declspec(dllimport)

#else

#define LIBMONITOR_FUN

#endif

#endif

//----------------------------

//Тип, используемый для указателя на функцию, с помощью которой можно выводить текстовые сообщения из библиотеки:

typedef void  (*TWFMessageBox_)(const char *str);

//Тип, используемый для указателя на функцию, с помощью которой из библиотеки в главную программу передаются измеренные монитором величины:

typedef int (*TSetData)(void *value,int type,int subtype, double v);

//----------------------------

//Функция, вызываемая из главной программы один раз для отведения памяти под объект, в котором будут храниться все данные о мониторе, которые необходимы библиотеке. Указатель, возвращаемый функцией (ID), передается во все функции библиотеки.

//return: указатель на идентификатор монитора

//Out:

//MonitorName – текстовое имя монитора. Например "MARG"

//In:

//WFMessageBox("...") указатель на функцию, с помощью которой можно выводить текстовые сообщения из библиотеки

LIBMONITOR_FUN void *Monitor3AllocateIdentificator(TWFMessageBox_ WFMessageBox, char *MonitorName);

//----------------------------

//Функция, вызываемая из главной программы один раз для очистки памяти из под объекта, в котором хранятся все данные о мониторе, необходимы библиотеке.  В функцию передается указатель, полученный из функции Monitor3AllocateIdentificator(…)

LIBMONITOR_FUN int Monitor3FreeIdentificator(void *ID);

//----------------------------

//Функция, с помощью которой осуществляется соединение с монитором и в которой происходит все общение с монитором. Функция вызывается из главной программы в отдельной нити, поэтому возврат из функции должен происходить только после закрытия работы с монитором.

//return 0 = success

//   value – указатель на данные главной программы, который должен передаваться в функцию SetData()

//   SetData() – указатель на callback-функцию, с помощью которой из библиотеки можно передавать измеренные значения. Описание параметров данной функции:

//   return 0;

//             type задает интерпретацию величины v:

//                    1)HR частота биения сердца(subtype = источник данных; value = значение),

//                    2)SpO2

//                    3)температура

//                    4)систолическое давление

//                    5)диастолическое давление

//                    6)частота дыхания

//                    7)Значения кривой ECG (subtype=номер отведения (нумеруется с 1)

//                    8) Значения кривой фотоплетизмограммы

//...

//                    -1000)connection is closed

LIBMONITOR_FUN int Monitor3Connect(void *ID, void *value, TSetData SetData);

//----------------------------

//Функция, с помощью которой осуществляется разрыв соединения с монитором. Функция вызывается из главной программы сразу после завершения работы функции Monitor3Connect(…).

//return 0 = success

LIBMONITOR_FUN int Monitor3Disconnect(void *ID);

//----------------------------

//Функция, с помощью которой в библиотеку передаются различные дополнительные параметры.

//return 0 = success

//   type – тип передаваемого параметра data: 

// 1: data – указатель на целую переменную, через которую передается требование закончить работу функции Monitor3Connect(…). Если переменная *(int*)data становится отличной от 0, то функция Monitor3Connect(…)  должна завершить работу.

// 2: data – указатель на строку с IP-адресом монитора (если он у него есть).

// 3: data – указатель на строку с IP-адресом текущего компьютера.

// 4: data – указатель на функцию  типа TSetData  , через которую можно выводить текстовые сообщения (дублирует соответствующий параметр функции Monitor3Connect(…)).

//     ...

LIBMONITOR_FUN int Monitor3SetParameter(void *ID, int type, void *data);

//----------------------------

//Функция, с помощью которой библиотека инициализирует процедуру измерения давления

LIBMONITOR_FUN int Monitor3PressureMeasureStart(void *ID);

//----------------------------

//Функция, с помощью которой библиотека прерывает процедуру измерения давления

LIBMONITOR_FUN int Monitor3PressureMeasureStop(void *ID);

//------------------------------------------------------------------------------------