SDK Readers 1.0.1
SDK для связи со считывателями Iron logic
reader_detector/main.cpp

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

#include <stdio.h>
#include <fstream>
#include <iomanip> // для std::put_time
#include <iostream>
#include "ilreaders.h"
// #define ILR_LOG // Раскомментируйте, чтобы включить отладочные сообщения
#define ILR_LOG_FILE // Писать лог в файл
using namespace ilr;
#ifdef ILR_LOG
const char kLogLevelChars[] = {'-', 'E', 'W', 'I', 'D'};
const char kLogFileName[] = "ilreaders.log"; // Путь к лог файлу
void ILR_CALL LogCallback(ilr_log_level level, const char* pContext, const char* pMessage, void*) {
#ifdef ILR_LOG_FILE // Запись в файл
std::ofstream file(kLogFileName, std::ios_base::out | std::ios_base::app);
auto& out = file;
#else // иначе в консоль
auto& out = std::cout;
#endif
auto t = std::time(nullptr);
auto tmb = std::localtime(&t);
out << std::put_time(tmb, "%d-%m-%Y %H:%M:%S") << " [" << kLogLevelChars[level] << ' '
<< pContext << "] " << pMessage << std::endl;
}
#endif
void ILR_CALL MessageCallback(ilr_search_msg nMsg, const void* pMsgData, void*) {
try {
switch (nMsg) {
case ILR_SEARCH_MSG_READER_FOUND: // Считыватель найден
case ILR_SEARCH_MSG_READER_LOST: // Считыватель потерян
{
const ilr_reader_info* pInfo = (const ilr_reader_info*)pMsgData;
std::stringstream ss;
ss << kReaderModelNames[pInfo->nModel];
if (pInfo->nSn != -1)
ss << " с/н:" << pInfo->nSn;
if (pInfo->nFwVersion != 0)
ss << " прошивка:" << ReaderVersionToStr(pInfo->nFwVersion);
if (pInfo->nFwBuildDate != 0)
ss << " сборка " << TimeToStr(pInfo->nFwBuildDate);
std::cout << "{!} Считыватель найден (" << pInfo->pszPortName
<< "): " << ss.str() << std::endl;
else
std::cout << "{!} Считыватель потерян (" << pInfo->pszPortName
<< "): " << ss.str() << std::endl;
break;
}
case ILR_SEARCH_MSG_LIST_CHANGED: // Список считывателей изменился
std::cout << "{!} Список считыватель изменился" << std::endl;
break;
default:
break;
}
}
catch (const std::exception& e) {
std::cerr << e.what() << std::endl;
}
}
int main() {
try {
#ifdef ILR_LOG
#ifdef ILR_LOG_FILE
// Очищаем лог файл
std::ofstream file(kLogFileName, std::ios_base::out | std::ios_base::trunc);
file.close();
#endif
CILR::SetLogCallback(LogCallback);
CILR::SetLogLevel(ILR_LOG_LEVEL_DEBUG);
#endif
CILR oILR;
CReaderSearch oSearch(oILR.GetSearch());
#if 0
// Выбираем типы считывателей для поиска
oSearch.GetOptions(rOptions);
rOptions.nReaderTypes =
oSearch.SetOptions(rOptions);
// Включаем поиск считывателей, подключённых к конвертеру в режиме "Клиент"
const uint16_t aListenPorts[] = {25000};
oSearch.SetListenPorts(aListenPorts, std::size(aListenPorts));
#endif
// Подписываемся на уведомления о нахождении/потери считывателей
oSearch.SetMessageCallback(MessageCallback);
// Включаем авто поиск считывателей (по умолчанию выключен)
oSearch.SetAutoScan();
std::cout << "Ожидание подключения/отключения считывателей..." << std::endl;
std::cout << "Нажмите <Enter> для выхода..." << std::endl;
std::cin.get();
}
catch (const std::exception& e) {
std::cerr << e.what() << std::endl;
}
return 0;
}
Класс для инициализации/финализации библиотеки SDK.
Definition: ilr_cpp_helpers.h:2607
CReaderSearch GetSearch()
Создаёт дескриптор поиска считывателей.
Definition: ilr_cpp_helpers.h:2761
Класс поиска считывателей.
Definition: ilr_cpp_helpers.h:583
ilr_search_msg
Сообщение поиска считывателей.
Definition: ilreaders.h:410
@ ILR_READER_SERVER
Definition: ilreaders.h:460
@ ILR_READER_CCID
Definition: ilreaders.h:467
@ ILR_READER_ILUSB
Definition: ilreaders.h:453
@ ILR_READER_CLIENT
Definition: ilreaders.h:462
@ ILR_SEARCH_MSG_LIST_CHANGED
Definition: ilreaders.h:430
@ ILR_SEARCH_MSG_READER_FOUND
Definition: ilreaders.h:420
@ ILR_SEARCH_MSG_READER_LOST
Definition: ilreaders.h:424
Заголовочный файл SDK Readers с классами-помощниками C++.
Заголовочный файл API SDK Readers.
#define ILR_CALL
Макрос, определяющий соглашение о вызове функций.
Definition: ilreaders.h:56
ilr_log_level
Уровень лога.
Definition: ilreaders.h:319
@ ILR_LOG_LEVEL_DEBUG
Отладочные сообщения.
Definition: ilreaders.h:349
@ ILR_READER_MODEL_UNKNOWN
Definition: ilreaders.h:213
Информация о считывателе.
Definition: ilreaders.h:295
ilr_reader_model nModel
Definition: ilreaders.h:304
uint32_t nFwVersion
Definition: ilreaders.h:310
const char * pszPortName
Definition: ilreaders.h:299
int64_t nFwBuildDate
Definition: ilreaders.h:313
int nSn
Definition: ilreaders.h:306
Настройки поиска считывателей.
Definition: ilreaders.h:474
uint32_t nReaderTypes
Definition: ilreaders.h:479