103 lines
2.4 KiB
C++
103 lines
2.4 KiB
C++
#include "readerAPI.h"
|
||
|
||
|
||
/**
|
||
* @brief 判断读卡器是否已连接
|
||
* 通过comNumber是否大于0判断。
|
||
* @param void
|
||
* @return 读卡器连接状态
|
||
* - true 已连接
|
||
* - false 未连接
|
||
* @author 柯劲帆
|
||
* @date 2024-07-27
|
||
*/
|
||
/// \brief 判断读卡器是否已连接
|
||
/// \return 如果comNumber大于0,表示已连接,返回true;否则返回false
|
||
bool Reader::is_connected()
|
||
{
|
||
return comNumber > 0;
|
||
}
|
||
|
||
|
||
/**
|
||
* @brief 连接读卡器
|
||
* 尝试通过comNumber连接读卡器。如果连接成功,返回true;否则返回false并重置comNumber为-1。
|
||
* @param void
|
||
* @return 连接成功返回true,失败返回false
|
||
* @author 柯劲帆
|
||
* @date 2024-07-27
|
||
*/
|
||
bool Reader::connect()
|
||
{
|
||
if (CVCDOurs::connectReaderByCOM(comNumber))
|
||
{
|
||
return true;
|
||
}
|
||
else
|
||
{
|
||
comNumber = -1;
|
||
return false;
|
||
}
|
||
}
|
||
|
||
|
||
/**
|
||
* @brief 设置COM口号
|
||
* @param comNumber 要设置的COM口号
|
||
* @return void
|
||
* @author 柯劲帆
|
||
* @date 2024-07-27
|
||
*/
|
||
void Reader::setComNumber(int comNumber)
|
||
{
|
||
this->comNumber = comNumber;
|
||
}
|
||
|
||
|
||
/**
|
||
* @brief 获取当前COM口号
|
||
* @param void
|
||
* @return 当前的COM口号
|
||
* - -1 未连接
|
||
* - >0 已连接
|
||
* @author 柯劲帆
|
||
* @date 2024-07-27
|
||
*/
|
||
int Reader::getComNumber()
|
||
{
|
||
return comNumber;
|
||
}
|
||
|
||
|
||
/**
|
||
* @brief 获取读卡器中卡片的UID列表
|
||
* 通过读卡器的inventory方法获取最大数量为maxViccNum的卡片UID,并将其转换为QStringList返回。
|
||
* @param maxViccNum 最大卡片数量
|
||
* @return 包含卡片UID的QStringList
|
||
* @author 柯劲帆
|
||
* @date 2024-07-29
|
||
*/
|
||
QStringList Reader::inventory(int maxViccNum)
|
||
{
|
||
// 分配内存用于存储卡片的UID
|
||
uchar_t (*aucUID)[8] = (uchar_t (*)[8])malloc(maxViccNum * sizeof(*aucUID));;
|
||
|
||
// 调用CVCDOurs::inventory方法获取卡片数量
|
||
int receivedViccNum = CVCDOurs::inventory(false, '\0', maxViccNum, nullptr, aucUID);
|
||
|
||
// 用于存储UID的QStringList
|
||
QStringList uidList;
|
||
for (int i = 0; i < receivedViccNum; ++i)
|
||
{
|
||
char uidStr[8];
|
||
// 将UID从十六进制转换为字符串
|
||
CVCDOurs::HexToString(aucUID[i], 8, uidStr);
|
||
// 将字符串转换为QString并添加到uidList中
|
||
uidList.push_back(QString::fromStdString(uidStr));
|
||
}
|
||
|
||
// 释放分配的内存
|
||
free(aucUID);
|
||
return uidList;
|
||
}
|