SDK Readers 1.0.1
SDK для связи со считывателями Iron logic
Класс ilr::CReaderSearch

Класс поиска считывателей. Подробнее...

#include <ilr_cpp_helpers.h>

Граф наследования:ilr::CReaderSearch:
Граф связей класса ilr::CReaderSearch:

Открытые члены

 CReaderSearch ()
 Конструктор по умолчанию.
 
 CReaderSearch (ilr_handle h)
 Конструктор класса из дескриптора поиска считывателей. Подробнее...
 
 CReaderSearch (CReaderSearch &&other)
 Конструктор перемещения. Подробнее...
 
virtual ~CReaderSearch ()
 Деструктор
 
CReaderSearchoperator= (CReaderSearch &&other)
 Оператор перемещения
 
void SetMessageCallback (ilr_search_message_callback pCallback, void *pUserData=nullptr)
 Устанавливает функцию обратного вызова для уведомлений поиска считывателей. Подробнее...
 
void EnableMessageQueue (bool fEnable=true)
 Включает/выключает очередь сообщений. Подробнее...
 
bool GetMessage (ilr_search_msg &nMsg, const void *&pMsgData) const
 Извлекает следующее сообщение из очереди. Подробнее...
 
void SetOptions (const ilr_search_options &rOptions)
 Устанавливает параметры поиска считывателей. Подробнее...
 
void GetOptions (ilr_search_options &rOptions) const
 Возвращает параметры поиска считывателей. Подробнее...
 
void SetListenPorts (const uint16_t *pPorts, size_t nCount)
 Устанавливает список портов для прослушки конвертеров к режиме "Клиент". Подробнее...
 
void GetListenPorts (std::vector< uint16_t > &oPorts) const
 Возвращает список портов для прослушки конвертеров к режиме "Клиент". Подробнее...
 
ilr_status GetListenStatus (uint16_t nTcpPort) const
 Возвращает состояние Tcp-порта, открытого для прослушки конвертеров в режиме "Клиент". Подробнее...
 
void Scan (bool fReset=false)
 Ищет считыватели. Подробнее...
 
CAsyncCommand Begin_Scan (bool fReset=false)
 Запускает асинхронную команду поиска считывателей. Подробнее...
 
size_t GetReaderCount () const
 Возвращает количество найденных считывателей. Подробнее...
 
void GetReaderInfo (size_t nIdx, ilr_reader_info &rInfo) const
 Возвращает информацию о найденном считывателе. Подробнее...
 
void SetAutoScan (bool fEnable=true, bool fWait=true)
 Включает/выключает авто поиск считывателей. Подробнее...
 
CAsyncCommand Begin_SetAutoScan (bool fEnable)
 Запускает асинхронную команду вкл/выкл режим авто поиска считывателей. Подробнее...
 
bool GetAutoScan () const
 Возвращает флаг авто поиска считывателей. Подробнее...
 
int OpenPort (ilr_port_type nPortType, const char *pszPortName, ilr_reader_info *pInfo=nullptr)
 Открывает порт и возвращает его дескриптор. Подробнее...
 
CAsyncCommand Begin_OpenPort (ilr_port_type nPortType, const char *pszPortName)
 Запускает асинхронную команду открытия порта. Подробнее...
 
void ClosePort (ilr_port_type nPortType, const char *pszPortName, int hPort)
 Закрывает порт Подробнее...
 
CAsyncCommand Begin_ClosePort (ilr_port_type nPortType, const char *pszPortName, int hPortFD)
 Запускает асинхронную команду закрытия порта. Подробнее...
 
CReaderSearch Clone () const
 Клонирует дескриптор поиска считывателей. Подробнее...
 
- Открытые члены унаследованные от ilr::CILRHandle
 CILRHandle ()
 Конструктор по умолчанию.
 
 CILRHandle (ilr_handle h)
 Конструктор из дескриптора SDK. Подробнее...
 
 CILRHandle (const CILRHandle &)=delete
 Запрещаем копирование этого класса (т.к. он содержит указатель = дескриптор).
 
 CILRHandle (CILRHandle &&other)
 Конструктор перемещения. Подробнее...
 
virtual ~CILRHandle ()
 Деструктор
 
CILRHandleoperator= (const CILRHandle &)=delete
 Запрещаем копирование этого класса (т.к. он содержит указатель = дескриптор).
 
CILRHandleoperator= (CILRHandle &&other)
 Оператор перемещения. Подробнее...
 
 operator ilr_handle () const
 Оператор приведения типа к ilr_handle.
 
 operator bool () const
 Проверяет дескриптор на валидность.
 
void Swap (CILRHandle &other) noexcept
 Обменивается значением с другим дескриптором. Подробнее...
 
ilr_handle Get () const
 Возвращает дескриптор SDK.
 
void Close ()
 Закрывает дескриптор SDK. Подробнее...
 
void Attach (ilr_handle h)
 Присоединяет дескриптор к этому объекту. Подробнее...
 
ilr_handle Detach ()
 Отсоединяет дескриптор от этого объекту. Подробнее...
 

Открытые статические члены

static void End_OpenPort (ilr_handle hCommand, int &PortFD, ilr_reader_info &rInfo)
 Возвращает результат открытия порта. Подробнее...
 

Дополнительные унаследованные члены

- Защищенные данные унаследованные от ilr::CILRHandle
ilr_handle m_h
 Дескриптор SDK.
 

Подробное описание

Класс поиска считывателей.

Класс-обёртка для дескриптора поиска считывателей.

Примеры
auto_read_card/main.cpp, card_detector/main.cpp, connect_to_reader/main.cpp, enum_readers/main.cpp, mf_classic/main.cpp, mf_plus/main.cpp, mf_ultralight/main.cpp, reader_detector/main.cpp и temic/main.cpp.

Конструктор(ы)

◆ CReaderSearch() [1/2]

ilr::CReaderSearch::CReaderSearch ( ilr_handle  h)

Конструктор класса из дескриптора поиска считывателей.

Аргументы
[in]hЗначение дескриптора SDK.

◆ CReaderSearch() [2/2]

ilr::CReaderSearch::CReaderSearch ( CReaderSearch &&  other)

Конструктор перемещения.

Аргументы
[in,out]otherДругой поиск считывателей.

Методы

◆ Begin_ClosePort()

CAsyncCommand ilr::CReaderSearch::Begin_ClosePort ( ilr_port_type  nPortType,
const char *  pszPortName,
int  hPortFD 
)
inline

Запускает асинхронную команду закрытия порта.

Аргументы
[in]nPortTypeТип порта
[in]pszPortNameИмя порта
[in]hPortFDСистемный дескриптор порта.
Возвращает
Класс дескриптора команды.
Исключения
CILRExceptionесли произошла ошибка `ILR_E_HANDLE`, `ILR_E_OUTOFMEMORY`, ILR_E_OUT_OF_RESOURCES.

◆ Begin_OpenPort()

CAsyncCommand ilr::CReaderSearch::Begin_OpenPort ( ilr_port_type  nPortType,
const char *  pszPortName 
)
inline

Запускает асинхронную команду открытия порта.

Аргументы
[in]nPortTypeТип порта.
[in]pszPortNameИмя порта.
Возвращает
Класс дескриптора команды.
Исключения
CILRExceptionесли произошла ошибка `ILR_E_INVALIDARG`, `ILR_E_HANDLE`, ILR_E_OUTOFMEMORY, ILR_E_OUT_OF_RESOURCES.

◆ Begin_Scan()

CAsyncCommand ilr::CReaderSearch::Begin_Scan ( bool  fReset = false)
inline

Запускает асинхронную команду поиска считывателей.

Аргументы
[in]fReset=true очистить список найденных перед поиском.
Возвращает
Класс дескриптора команды.
Исключения
CILRExceptionесли произошла ошибка `ILR_E_HANDLE`, ILR_E_OUT_OF_RESOURCES, ILR_E_OUTOFMEMORY.

◆ Begin_SetAutoScan()

CAsyncCommand ilr::CReaderSearch::Begin_SetAutoScan ( bool  fEnable)
inline

Запускает асинхронную команду вкл/выкл режим авто поиска считывателей.

Аргументы
[in]fEnable=true включает поиск в реальном времени, иначе - выключает.
Возвращает
Класс дескриптора команды.
Исключения
CILRExceptionесли произошла ошибка `ILR_E_HANDLE`, `ILR_E_OUTOFMEMORY`, ILR_E_OUT_OF_RESOURCES.

◆ Clone()

CReaderSearch ilr::CReaderSearch::Clone ( ) const
inline

Клонирует дескриптор поиска считывателей.

Возвращает
Класс дескриптора поиска считывателей.

◆ ClosePort()

void ilr::CReaderSearch::ClosePort ( ilr_port_type  nPortType,
const char *  pszPortName,
int  hPort 
)
inline

Закрывает порт

Аргументы
[in]nPortTypeТип порта.
[in]pszPortNameИмя порта.
[in]hPortСистемный дескриптор порта.
Прим.
Функция не возвращает управление пока ждёт выполнение команды в потоке поиска считывателей.
Исключения
CILRExceptionесли произошла ошибка `ILR_E_HANDLE`, ILR_E_BLOCKING_CALL_NOT_ALLOWED, ILR_E_OUTOFMEMORY, ILR_E_OUT_OF_RESOURCES.

◆ EnableMessageQueue()

void ilr::CReaderSearch::EnableMessageQueue ( bool  fEnable = true)
inline

Включает/выключает очередь сообщений.

Эта функция устанавливает/снимает флаг в дескрипторе поиска. Очередь сообщений предназначена для синхронизации обработки сообщений.

Прим.
Алгоритм синхронизации: при возникновении события в очередь добавляется сообщение и вызывается функция обратного вызова, установленная функцией SetMessageCallback, из которой посылается сигнал потоку, обрабатывающему сообщения, этот поток при получении сигнала циклично вызывает GetMessage, чтобы получить и обработать все сообщения.
Аргументы
[in]fEnable=true, включает очередь, иначе - выключает.
Предупреждения
Если не извлекать сообщения из очереди функцией GetMessage, то она будет расти пока не закончится память.
Исключения
CILRException(ILR_E_HANDLE)если дескриптор неправильный.

◆ End_OpenPort()

void ilr::CReaderSearch::End_OpenPort ( ilr_handle  hCommand,
int &  PortFD,
ilr_reader_info rInfo 
)
inlinestatic

Возвращает результат открытия порта.

Аргументы
[in]hCommandДескриптор команды.
[out]PortFDСистемный дескриптор порта.
[out]rInfoИнформация о конвертере (если известно).
Исключения
CILRException(ILR_E_HANDLE)если дескриптор неправильный.

◆ GetAutoScan()

bool ilr::CReaderSearch::GetAutoScan ( ) const
inline

Возвращает флаг авто поиска считывателей.

Возвращает
true, авто поиск включен, иначе - выключен.
Исключения
CILRException(ILR_E_HANDLE)если дескриптор неправильный.

◆ GetListenPorts()

void ilr::CReaderSearch::GetListenPorts ( std::vector< uint16_t > &  oPorts) const

Возвращает список портов для прослушки конвертеров к режиме "Клиент".

Возвращает список TCP-портов, который был установлен функцией SetListenPorts.

Прим.
Список портов общий для всех дескрипторов.
Аргументы
[in,out]oPortsСписок портов.
Исключения
CILRExceptionесли произошла ошибка `ILR_E_HANDLE`, `ILR_E_OUTOFMEMORY`.

◆ GetListenStatus()

ilr_status ilr::CReaderSearch::GetListenStatus ( uint16_t  nTcpPort) const
inline

Возвращает состояние Tcp-порта, открытого для прослушки конвертеров в режиме "Клиент".

Аргументы
[in]nTcpPortНомер TCP порта.
Прим.
Чтобы открыть порт для прослушки нужно добавить его в список портов с помощью функции ilr_search_set_listen_ports, и включить поиск конвертеров в режиме "Клиент" с помощью ilr_search_set_options (установить pOptions->nReaderTypes |= ILR_READER_CLIENT).
Возвращает
Состояние порта: ILR_OK порт открыт успешно, ILR_E_PENDING порт в процессе открытия или его нет в списке портов для прослушки, иначе не удалось открыть.

◆ GetMessage()

bool ilr::CReaderSearch::GetMessage ( ilr_search_msg nMsg,
const void *&  pMsgData 
) const
inline

Извлекает следующее сообщение из очереди.

Аргументы
[out]nMsgТип сообщения.
[out]pMsgDataУказатель на данные пользователя, которые были установлены функцией SetMessageCallback.
Возвращает
true если сообщение успешно извлечено, иначе - очередь пуста.
Исключения
CILRException(ILR_E_HANDLE)если дескриптор неправильный.

◆ GetOptions()

void ilr::CReaderSearch::GetOptions ( ilr_search_options rOptions) const
inline

Возвращает параметры поиска считывателей.

Аргументы
[out]rOptionsОпции поиска считывателей.
Исключения
CILRException(ILR_E_HANDLE)если дескриптор неправильный.

◆ GetReaderCount()

size_t ilr::CReaderSearch::GetReaderCount ( ) const
inline

Возвращает количество найденных считывателей.

Предупреждения
Эта функция копирует список из потока поиска, поэтому её лучше не вызывать в цикле.
Возвращает
Количество найденных считывателей.
Исключения
CILRExceptionесли произошла ошибка `ILR_E_HANDLE`, `ILR_E_OUTOFMEMORY`.

◆ GetReaderInfo()

void ilr::CReaderSearch::GetReaderInfo ( size_t  nIdx,
ilr_reader_info rInfo 
) const
inline

Возвращает информацию о найденном считывателе.

Аргументы
[in]nIdxПозиция в списке найденных считывателей.
[out]rInfoИнформация о считывателе.
Исключения
CILRExceptionесли произошла ошибка `ILR_E_HANDLE`, `ILR_E_BOUNDS`.

◆ OpenPort()

int ilr::CReaderSearch::OpenPort ( ilr_port_type  nPortType,
const char *  pszPortName,
ilr_reader_info pInfo = nullptr 
)
inline

Открывает порт и возвращает его дескриптор.

Аргументы
[in]nPortTypeТип порта.
[in]pszPortNameИмя порта.
[out]pInfoИнформация о считывателе. Может быть равно nullptr.
Прим.
Функция не возвращает управление пока ждёт выполнение команды в потоке поиска считывателей.
Возвращает
Системный дескриптор порта.
Исключения
CILRExceptionесли произошла ошибка `ILR_E_INVALIDARG`, `ILR_E_HANDLE`, ILR_E_BLOCKING_CALL_NOT_ALLOWED, ILR_E_OUTOFMEMORY, ILR_E_OUT_OF_RESOURCES, ILR_E_PORT_ACCESS_DENIED, ILR_E_PORT_NOT_EXIST, ILR_E_PORT_OPEN_FAILED, ILR_E_CONNECTION_ERROR, ILR_E_NOTIMPL.

◆ Scan()

void ilr::CReaderSearch::Scan ( bool  fReset = false)
inline

Ищет считыватели.

Аргументы
[in]fReset=true очищает список найденных считывателей перед началом поиска.
Прим.
Функция не возвращает управление пока ждёт выполнение команды в потоке поиска считывателей.
Исключения
CILRExceptionесли произошла ошибка `ILR_E_HANDLE`, ILR_E_BLOCKING_CALL_NOT_ALLOWED, ILR_E_OUT_OF_RESOURCES, ILR_E_OUTOFMEMORY.

◆ SetAutoScan()

void ilr::CReaderSearch::SetAutoScan ( bool  fEnable = true,
bool  fWait = true 
)
inline

Включает/выключает авто поиск считывателей.

Аргументы
[in]fEnable=true, включает авто поиск, иначе - выключает.
[in]fWait=true, ждёт полного завершения команды, иначе только устанавливает флаг.
Прим.
Если fWait =true, то функция не возвращает управление пока ждёт выполнение команды в потоке поиска считывателей.
Исключения
CILRExceptionесли произошла ошибка `ILR_E_HANDLE`, ILR_E_BLOCKING_CALL_NOT_ALLOWED, ILR_E_OUTOFMEMORY, ILR_E_OUT_OF_RESOURCES.

◆ SetListenPorts()

void ilr::CReaderSearch::SetListenPorts ( const uint16_t *  pPorts,
size_t  nCount 
)
inline

Устанавливает список портов для прослушки конвертеров к режиме "Клиент".

Устанавливает список TCP-портов, к которым будут подключаться IP-конвертеры в режиме "Клиент".

Прим.
Список портов общий для всех дескрипторов.
Аргументы
[in]pPortsМассив портов. Если =nullptr, то очищает список.
[in]nCountКоличество элементов массива портов.
Исключения
CILRExceptionесли произошла ошибка `ILR_E_HANDLE`, `ILR_E_INVALIDARG`, ILR_E_OUTOFMEMORY.

◆ SetMessageCallback()

void ilr::CReaderSearch::SetMessageCallback ( ilr_search_message_callback  pCallback,
void *  pUserData = nullptr 
)
inline

Устанавливает функцию обратного вызова для уведомлений поиска считывателей.

Устанавливает функцию для получения сообщений от дескриптора поиска считывателей.

Аргументы
[in]pCallbackУказатель на функцию, которую библиотека будет вызывать при возникновении события поиска считывателей.
[in]pUserDataУказатель на данные пользователя, который будет передаваться в функцию.
Предупреждения
Не позволяйте исключениям выйти из callback-функции, оберните код в try catch. Нельзя из callback-функции вызывать функции, которые ждут выполнение команды в потоке, из которого вызвана эта callback-функция, иначе будет ошибка ILR_E_BLOCKING_CALL_NOT_ALLOWED.
Исключения
CILRException(ILR_E_HANDLE)если дескриптор неправильный.

◆ SetOptions()

void ilr::CReaderSearch::SetOptions ( const ilr_search_options rOptions)
inline

Устанавливает параметры поиска считывателей.

Прим.
Параметры поиска считывателей общие для всех дескрипторов. Параметры не теряются при закрытии всех дескрипторов поиска.
Аргументы
[in]rOptionsОпции поиска считывателей.
Исключения
CILRException(ILR_E_HANDLE)если дескриптор неправильный.

Объявления и описания членов классов находятся в файлах: