添加类、函数注释
This commit is contained in:
parent
4b8460f4ce
commit
26f9ff604e
170
HF15693.h
170
HF15693.h
@ -76,115 +76,115 @@ extern HF15693_API char t15UID[UID_LEN], t15FirstBN[3], t15NumBl[3], t15Data[DAT
|
|||||||
|
|
||||||
//////////////////////////////
|
//////////////////////////////
|
||||||
//工具函数
|
//工具函数
|
||||||
/*********************************************
|
/*
|
||||||
/* 描述:打开串口
|
* 描述:打开串口
|
||||||
/* 输入:串口号,如若打开com1,则参数为 1
|
* 输入:串口号,如若打开com1,则参数为 1
|
||||||
/* 输出:无
|
* 输出:无
|
||||||
/* 返回:true 打开成功;false 打开失败
|
* 返回:true 打开成功;false 打开失败
|
||||||
/* 其他:
|
* 其他:
|
||||||
/*********************************************/
|
*/
|
||||||
HF15693_API bool t15portOpen(int comno);
|
HF15693_API bool t15portOpen(int comno);
|
||||||
|
|
||||||
/*********************************************
|
/*
|
||||||
/* 描述:关闭串口
|
* 描述:关闭串口
|
||||||
/* 输入:无
|
* 输入:无
|
||||||
/* 输出:无
|
* 输出:无
|
||||||
/* 返回:true 关闭成功;false 关闭失败
|
* 返回:true 关闭成功;false 关闭失败
|
||||||
/* 其他:
|
* 其他:
|
||||||
/*********************************************/
|
*/
|
||||||
HF15693_API bool t15portClose();
|
HF15693_API bool t15portClose();
|
||||||
|
|
||||||
/*********************************************
|
/*
|
||||||
/* 描述:设置协议
|
* 描述:设置协议
|
||||||
/* 输入:无
|
* 输入:无
|
||||||
/* 输出:无
|
* 输出:无
|
||||||
/* 返回: 0 设置成功; ~0 设置失败
|
* 返回: 0 设置成功; ~0 设置失败
|
||||||
/* 其他:
|
* 其他:
|
||||||
/*********************************************/
|
*/
|
||||||
HF15693_API int t15setProtocol();
|
HF15693_API int t15setProtocol();
|
||||||
|
|
||||||
/*********************************************
|
/*
|
||||||
/* 描述:执行命令
|
* 描述:执行命令
|
||||||
/* 输入:cmdno - 命令字
|
* 输入:cmdno - 命令字
|
||||||
/* 输出:cmdstr - 向下发出的命令字段;reply - 对命令回复的字段
|
* 输出:cmdstr - 向下发出的命令字段;reply - 对命令回复的字段
|
||||||
/* 返回:(int) 命令回复字段中的有效字节数
|
* 返回:(int) 命令回复字段中的有效字节数
|
||||||
/* 其他:
|
* 其他:
|
||||||
/*********************************************/
|
*/
|
||||||
HF15693_API int t15execute(int cmdno, char *cmdstr,char *reply);
|
HF15693_API int t15execute(int cmdno, char *cmdstr,char *reply);
|
||||||
|
|
||||||
/////////////////////////////////////
|
/////////////////////////////////////
|
||||||
|
|
||||||
/*********************************************
|
/*
|
||||||
/* 描述:从一个字串中提取一个表示十六进制数字的子串,子串间以',' '[' 分隔
|
* 描述:从一个字串中提取一个表示十六进制数字的子串,子串间以',' '[' 分隔
|
||||||
/* 输入: str - 原字串
|
* 输入: str - 原字串
|
||||||
/* 输出: str - 指向原串中提取到的子串的下一下字符, word - 提取到的子串
|
* 输出: str - 指向原串中提取到的子串的下一下字符, word - 提取到的子串
|
||||||
/* 返回: 0 - 成功 , 1 - 失败
|
* 返回: 0 - 成功 , 1 - 失败
|
||||||
/* 其他:
|
* 其他:
|
||||||
/*********************************************/
|
*/
|
||||||
HF15693_API int getXWord (char **str, char *word);
|
HF15693_API int getXWord (char **str, char *word);
|
||||||
|
|
||||||
/*********************************************
|
/*
|
||||||
/* 描述:从一个字串中提取一个表示十六进制数字的子串,子串间以',' '[' 分隔
|
* 描述:从一个字串中提取一个表示十六进制数字的子串,子串间以',' '[' 分隔
|
||||||
/* 输入: str - 原字串
|
* 输入: str - 原字串
|
||||||
/* 输出: word - 提取到的子串
|
* 输出: word - 提取到的子串
|
||||||
/* 返回:
|
* 返回:
|
||||||
/* 其他:
|
* 其他:
|
||||||
/*********************************************/
|
*/
|
||||||
HF15693_API int getXWord2 ( char *str, char *word);
|
HF15693_API int getXWord2 ( char *str, char *word);
|
||||||
|
|
||||||
/*********************************************
|
/*
|
||||||
/* 描述:更改字节序
|
* 描述:更改字节序
|
||||||
/* 输入:pin - 原字串 , lenbytes - 字串数据长度
|
* 输入:pin - 原字串 , lenbytes - 字串数据长度
|
||||||
/* 输出:pout - 更改字节序后的字串
|
* 输出:pout - 更改字节序后的字串
|
||||||
/* 返回:无
|
* 返回:无
|
||||||
/* 其他:此函数会在pout后补0,使用者须保证其长度。
|
* 其他:此函数会在pout后补0,使用者须保证其长度。
|
||||||
/* 如,字串"123456" 更改字节序后变为 "563412"
|
* 如,字串"123456" 更改字节序后变为 "563412"
|
||||||
/*********************************************/
|
*/
|
||||||
HF15693_API void t15changeByteOrder(char *pout,const char *pin,int lenbytes);
|
HF15693_API void t15changeByteOrder(char *pout,const char *pin,int lenbytes);
|
||||||
|
|
||||||
/*********************************************
|
/*
|
||||||
/* 描述:更改带块安全状态信息(block security status)的字串的字节序
|
* 描述:更改带块安全状态信息(block security status)的字串的字节序
|
||||||
/* 输入:pin - 原字串 , lenbytes - 字串数据长度,不包含'块安全状态信息'的长度
|
* 输入:pin - 原字串 , lenbytes - 字串数据长度,不包含'块安全状态信息'的长度
|
||||||
/* 输出:sbss - 原字串中的bss值 ,pout - 更改字节序后的字串
|
* 输出:sbss - 原字串中的bss值 ,pout - 更改字节序后的字串
|
||||||
/* 返回:无
|
* 返回:无
|
||||||
/* 其他:字串的存储空间由使用者保证,会在pout后补0;sbss是用字串表示的一个字节的十六进制数
|
* 其他:字串的存储空间由使用者保证,会在pout后补0;sbss是用字串表示的一个字节的十六进制数
|
||||||
/*********************************************/
|
*/
|
||||||
HF15693_API void t15changeByteOrder2(char *sbss,char *pout, char *pin,int lenbytes);
|
HF15693_API void t15changeByteOrder2(char *sbss,char *pout, char *pin,int lenbytes);
|
||||||
|
|
||||||
/*********************************************
|
/*
|
||||||
/* 描述:更改字串的字节序,字串包含多个块的数据
|
* 描述:更改字串的字节序,字串包含多个块的数据
|
||||||
/* 输入:pin - 原字串 , numblocks - 原字串中包含的块数目
|
* 输入:pin - 原字串 , numblocks - 原字串中包含的块数目
|
||||||
/* 输出:pout - 更改字节序后的字串
|
* 输出:pout - 更改字节序后的字串
|
||||||
/* 返回:无
|
* 返回:无
|
||||||
/* 其他:每个块数据长度由pin长度和numblocks决定;会在pout后补0
|
* 其他:每个块数据长度由pin长度和numblocks决定;会在pout后补0
|
||||||
/*********************************************/
|
*/
|
||||||
HF15693_API void t15changeByteOrder_MB(char *pout, char *pin, int numblocks);
|
HF15693_API void t15changeByteOrder_MB(char *pout, char *pin, int numblocks);
|
||||||
|
|
||||||
/*********************************************
|
/*
|
||||||
/* 描述:更改带块安全状态信息(block security status)的字串的字节序,字串包含多个块的数据
|
* 描述:更改带块安全状态信息(block security status)的字串的字节序,字串包含多个块的数据
|
||||||
/* 输入:pin - 原字串;lenbytes - 字串数据长度,不包含'块安全状态信息'的长度; numblocks - 原字串中包含的块数目
|
* 输入:pin - 原字串;lenbytes - 字串数据长度,不包含'块安全状态信息'的长度; numblocks - 原字串中包含的块数目
|
||||||
/* 输出:mbss - 原字串中的bss值 ,pout - 更改字节序后的字串
|
* 输出:mbss - 原字串中的bss值 ,pout - 更改字节序后的字串
|
||||||
/* 返回:无
|
* 返回:无
|
||||||
/* 其他:各个块的bss依次存放于mbss中,多个块的数据依次存放于pout中
|
* 其他:各个块的bss依次存放于mbss中,多个块的数据依次存放于pout中
|
||||||
/*********************************************/
|
*/
|
||||||
HF15693_API void t15changeByteOrder_MB2(char *mbss,char *pout, char *pin,int lenbytes, int numblocks);
|
HF15693_API void t15changeByteOrder_MB2(char *mbss,char *pout, char *pin,int lenbytes, int numblocks);
|
||||||
|
|
||||||
/*********************************************
|
/*
|
||||||
/* 描述:解析返回的RSSI值
|
* 描述:解析返回的RSSI值
|
||||||
/* 输入:字串表示的RSSI
|
* 输入:字串表示的RSSI
|
||||||
/* 输出:无
|
* 输出:无
|
||||||
/* 返回:指向解析过的RSSI信息的内存块
|
* 返回:指向解析过的RSSI信息的内存块
|
||||||
/* 其他:返回的指针指向的内存由函数分配管理
|
* 其他:返回的指针指向的内存由函数分配管理
|
||||||
/*********************************************/
|
*/
|
||||||
HF15693_API char* t15hex2rssi (char *str);
|
HF15693_API char* t15hex2rssi (char *str);
|
||||||
|
|
||||||
/*********************************************
|
/*
|
||||||
/* 描述:解析标签信息字串
|
* 描述:解析标签信息字串
|
||||||
/* 输入:data - 原标签信息字串;flag - 标签信息标志
|
* 输入:data - 原标签信息字串;flag - 标签信息标志
|
||||||
/* 输出:(其他参数)
|
* 输出:(其他参数)
|
||||||
/* 返回:0
|
* 返回:0
|
||||||
/* 其他:
|
* 其他:
|
||||||
/*********************************************/
|
*/
|
||||||
HF15693_API int t15getTagSysInfo (char *data, const unsigned char flag,char *uid, char *dsfid, char *afi,
|
HF15693_API int t15getTagSysInfo (char *data, const unsigned char flag,char *uid, char *dsfid, char *afi,
|
||||||
char *blSize, char *numBl, char *ic);
|
char *blSize, char *numBl, char *ic);
|
||||||
|
|
||||||
|
@ -1,5 +1,13 @@
|
|||||||
#include "databaseAPI.h"
|
#include "databaseAPI.h"
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 使用QSqlDatabase类初始化对象
|
||||||
|
* @param database 传入的QSqlDatabase对象
|
||||||
|
* @return void
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-28
|
||||||
|
*/
|
||||||
Database::Database(QSqlDatabase database)
|
Database::Database(QSqlDatabase database)
|
||||||
{
|
{
|
||||||
db = database;
|
db = database;
|
||||||
@ -7,6 +15,17 @@ Database::Database(QSqlDatabase database)
|
|||||||
db.setUserName(userName);
|
db.setUserName(userName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 使用QSqlDatabase类、IP、端口、密码初始化对象
|
||||||
|
* @param database 传入的QSqlDatabase对象
|
||||||
|
* @param hostName 数据库IP
|
||||||
|
* @param port 数据库端口
|
||||||
|
* @param password 数据库密码
|
||||||
|
* @return void
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-28
|
||||||
|
*/
|
||||||
Database::Database(QSqlDatabase database, QString hostName, int port, QString password)
|
Database::Database(QSqlDatabase database, QString hostName, int port, QString password)
|
||||||
{
|
{
|
||||||
db = database;
|
db = database;
|
||||||
@ -17,47 +36,124 @@ Database::Database(QSqlDatabase database, QString hostName, int port, QString pa
|
|||||||
db.setPassword(password);
|
db.setPassword(password);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 获取database属性
|
||||||
|
* @param void
|
||||||
|
* @return 返回QSqlDatabase类database属性
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-28
|
||||||
|
*/
|
||||||
QSqlDatabase Database::getDatabase()
|
QSqlDatabase Database::getDatabase()
|
||||||
{
|
{
|
||||||
return db;
|
return db;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 设置hostName属性
|
||||||
|
* @param hostName 数据库IP
|
||||||
|
* @return void
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-28
|
||||||
|
*/
|
||||||
void Database::setHostName(QString hostName)
|
void Database::setHostName(QString hostName)
|
||||||
{
|
{
|
||||||
db.setHostName(hostName);
|
db.setHostName(hostName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 获取hostName属性
|
||||||
|
* @param void
|
||||||
|
* @return 返回QString类hostName属性
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-28
|
||||||
|
*/
|
||||||
QString Database::getHostName()
|
QString Database::getHostName()
|
||||||
{
|
{
|
||||||
return db.hostName();
|
return db.hostName();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 设置port属性
|
||||||
|
* @param port 数据库端口
|
||||||
|
* @return void
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-28
|
||||||
|
*/
|
||||||
void Database::setPort(int port)
|
void Database::setPort(int port)
|
||||||
{
|
{
|
||||||
db.setPort(port);
|
db.setPort(port);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 获取port属性
|
||||||
|
* @param void
|
||||||
|
* @return 返回int类port属性
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-28
|
||||||
|
*/
|
||||||
int Database::getPort()
|
int Database::getPort()
|
||||||
{
|
{
|
||||||
return db.port();
|
return db.port();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 设置password属性
|
||||||
|
* @param password 数据库密码
|
||||||
|
* @return void
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-28
|
||||||
|
*/
|
||||||
void Database::setPassword(QString password)
|
void Database::setPassword(QString password)
|
||||||
{
|
{
|
||||||
db.setPassword(password);
|
db.setPassword(password);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 数据库是否已经连接
|
||||||
|
* @param void
|
||||||
|
* @return 数据库连接状态
|
||||||
|
* - true 已连接
|
||||||
|
* - false 未连接
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-28
|
||||||
|
*/
|
||||||
bool Database::is_connected()
|
bool Database::is_connected()
|
||||||
{
|
{
|
||||||
return connected;
|
return connected;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 连接数据库
|
||||||
|
* 会将连接结果更新到connect属性上。
|
||||||
|
* @param void
|
||||||
|
* @return 数据库连接状态
|
||||||
|
* - true 已连接
|
||||||
|
* - false 未连接
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-28
|
||||||
|
*/
|
||||||
bool Database::open()
|
bool Database::open()
|
||||||
{
|
{
|
||||||
connected = db.open();
|
connected = db.open();
|
||||||
return connected;
|
return connected;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 释放对象
|
||||||
|
* 会将数据库连接关闭。
|
||||||
|
* @param void
|
||||||
|
* @return void
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-28
|
||||||
|
*/
|
||||||
Database::~Database()
|
Database::~Database()
|
||||||
{
|
{
|
||||||
db.close();
|
db.close();
|
||||||
|
@ -1,11 +1,18 @@
|
|||||||
#ifndef DATABASEAPI_H
|
#ifndef DATABASEAPI_H
|
||||||
#define DATABASEAPI_H
|
#define DATABASEAPI_H
|
||||||
|
|
||||||
|
|
||||||
#include <QSqlDatabase>
|
#include <QSqlDatabase>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @class Database
|
||||||
|
* @brief 数据库操作相关接口类
|
||||||
|
* 固定了databaseName为"cardManageSystem",userName为"cardManageSystem"。
|
||||||
|
* 控制本应用中数据库相关变量。
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-28
|
||||||
|
*/
|
||||||
class Database
|
class Database
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
@ -17,15 +24,19 @@ private:
|
|||||||
public:
|
public:
|
||||||
Database(QSqlDatabase database);
|
Database(QSqlDatabase database);
|
||||||
Database(QSqlDatabase database, QString hostName, int port, QString password);
|
Database(QSqlDatabase database, QString hostName, int port, QString password);
|
||||||
QSqlDatabase getDatabase();
|
|
||||||
void setHostName(QString hostName);
|
|
||||||
QString getHostName();
|
|
||||||
void setPort(int port);
|
|
||||||
int getPort();
|
|
||||||
void setPassword(QString password);
|
|
||||||
bool is_connected();
|
|
||||||
bool open();
|
|
||||||
~Database();
|
~Database();
|
||||||
|
|
||||||
|
void setHostName(QString hostName);
|
||||||
|
void setPort(int port);
|
||||||
|
void setPassword(QString password);
|
||||||
|
|
||||||
|
QSqlDatabase getDatabase();
|
||||||
|
int getPort();
|
||||||
|
QString getHostName();
|
||||||
|
|
||||||
|
bool is_connected();
|
||||||
|
|
||||||
|
bool open();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,39 +1,78 @@
|
|||||||
#include "deviceAPI.h"
|
#include "deviceAPI.h"
|
||||||
|
|
||||||
bool Device::is_connected()
|
|
||||||
|
/**
|
||||||
|
* @brief 设备是否已经认证
|
||||||
|
* @param void
|
||||||
|
* @return 设备认证状态
|
||||||
|
* - true 已认证
|
||||||
|
* - false 未认证
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-28
|
||||||
|
*/
|
||||||
|
bool Device::is_verified()
|
||||||
{
|
{
|
||||||
return connected;
|
return verified;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 设备是否可充值
|
||||||
|
* @param void
|
||||||
|
* @return 设备充值权限
|
||||||
|
* - true 可充值
|
||||||
|
* - false 不可充值(仅可消费)
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-29
|
||||||
|
*/
|
||||||
bool Device::is_depositAllowed()
|
bool Device::is_depositAllowed()
|
||||||
{
|
{
|
||||||
return depositAllowed;
|
return depositAllowed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Device::setDevice(QString name, Database *db)
|
/**
|
||||||
|
* @brief 设置并认证设备
|
||||||
|
* 认证设备会更新设备名和充值权限。
|
||||||
|
* @param name 设备名
|
||||||
|
* @param db 数据库
|
||||||
|
* @return void
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-28
|
||||||
|
*/
|
||||||
|
void Device::setDevice(QString name, Database* db)
|
||||||
{
|
{
|
||||||
QSqlQuery query(db->getDatabase());
|
QSqlQuery query(db->getDatabase());
|
||||||
QString sql = QString("select * from device where `name` = '%1';").arg(name);
|
QString sql = QString("select * from device where `name` = '%1';").arg(name);
|
||||||
query.exec(sql);
|
query.exec(sql);
|
||||||
if (query.next())
|
if (query.next())
|
||||||
{
|
{
|
||||||
connected = true;
|
verified = true;
|
||||||
this->name = name;
|
this->name = name;
|
||||||
depositAllowed = query.value(2).toBool();
|
depositAllowed = query.value(2).toBool();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
connected = false;
|
verified = false;
|
||||||
depositAllowed = false;
|
depositAllowed = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 获取设备名及其充值权限
|
||||||
|
* @param void
|
||||||
|
* @return 返回QString类name属性
|
||||||
|
* - 若设备未认证返回"未指定设备名"
|
||||||
|
* - 若设备已认证
|
||||||
|
* - 若设备可充值,返回设备名加"(可充值)"
|
||||||
|
* - 若设备不可充值,返回设备名加"(仅可消费)
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-28
|
||||||
|
*/
|
||||||
QString Device::getName()
|
QString Device::getName()
|
||||||
{
|
{
|
||||||
if (connected) {
|
if (verified) {
|
||||||
if (depositAllowed) return name + QString("(可充值)");
|
if (depositAllowed) return name + QString("(可充值)");
|
||||||
else return name + QString("(仅可消费)");
|
else return name + QString("(仅可消费)");
|
||||||
}
|
}
|
||||||
|
16
deviceAPI.h
16
deviceAPI.h
@ -5,18 +5,28 @@
|
|||||||
#include <QSqlQuery>
|
#include <QSqlQuery>
|
||||||
#include <databaseAPI.h>
|
#include <databaseAPI.h>
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @class Device
|
||||||
|
* @brief 设备名相关接口类
|
||||||
|
* 控制本应用中设备名相关变量。
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-28
|
||||||
|
*/
|
||||||
class Device
|
class Device
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
bool connected = false;
|
bool verified = false;
|
||||||
bool depositAllowed = false;
|
bool depositAllowed = false;
|
||||||
QString name = QString("未指定设备名");
|
QString name = QString("未指定设备名");
|
||||||
|
|
||||||
public:
|
public:
|
||||||
bool is_connected();
|
|
||||||
bool is_depositAllowed();
|
|
||||||
void setDevice(QString name, Database *db);
|
void setDevice(QString name, Database *db);
|
||||||
|
|
||||||
QString getName();
|
QString getName();
|
||||||
|
|
||||||
|
bool is_verified();
|
||||||
|
bool is_depositAllowed();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // DEVICEAPI_H
|
#endif // DEVICEAPI_H
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
#include "mainwindow.h"
|
#include "mainwindow.h"
|
||||||
#include "ui_mainwindow.h"
|
#include "ui_mainwindow.h"
|
||||||
|
|
||||||
#include "settingPage.cpp"
|
#include "settingPage.cpp"
|
||||||
#include "quitAppPage.cpp"
|
#include "quitAppPage.cpp"
|
||||||
#include "newCardPage.cpp"
|
#include "newCardPage.cpp"
|
||||||
|
|
||||||
|
|
||||||
MainWindow::MainWindow(QWidget *parent)
|
MainWindow::MainWindow(QWidget *parent)
|
||||||
: QMainWindow(parent)
|
: QMainWindow(parent)
|
||||||
, ui(new Ui::MainWindow)
|
, ui(new Ui::MainWindow)
|
||||||
|
@ -39,8 +39,6 @@ private slots:
|
|||||||
void on_connectDatabaseButton_clicked();
|
void on_connectDatabaseButton_clicked();
|
||||||
void on_inventoryButton_clicked();
|
void on_inventoryButton_clicked();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::MainWindow *ui;
|
Ui::MainWindow *ui;
|
||||||
Reader reader;
|
Reader reader;
|
||||||
|
@ -2,10 +2,16 @@
|
|||||||
#include "ui_mainwindow.h"
|
#include "ui_mainwindow.h"
|
||||||
|
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* 功能:切换到开卡页面
|
* @brief 切换到开卡页面
|
||||||
* 触发:点击工具栏的“开卡”
|
* 点击工具栏的“开卡”触发:
|
||||||
*/
|
* - 如果读卡器或数据库未连接,显示警告信息并跳转到设置页面。
|
||||||
|
* - 如果连接已准备好,则切换到开卡页面。
|
||||||
|
* @param void
|
||||||
|
* @return void
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-28
|
||||||
|
*/
|
||||||
void MainWindow::on_NewCardAction_triggered()
|
void MainWindow::on_NewCardAction_triggered()
|
||||||
{
|
{
|
||||||
if (!ready())
|
if (!ready())
|
||||||
@ -22,13 +28,17 @@ void MainWindow::on_NewCardAction_triggered()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* 功能:读卡器扫描卡片
|
* @brief 读卡器扫描卡片
|
||||||
* 触发:点击开卡页面的“查询”
|
* 点击开卡页面的“查询”触发。显示Inventory的查询结果,最多显示10张卡。
|
||||||
*/
|
* @param void
|
||||||
|
* @return void
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-29
|
||||||
|
*/
|
||||||
void MainWindow::on_inventoryButton_clicked()
|
void MainWindow::on_inventoryButton_clicked()
|
||||||
{
|
{
|
||||||
QStringList cardIdList = reader.inventory(10); // 最多显示10张卡
|
QStringList cardIdList = reader.inventory(10); // 最多显示10张卡
|
||||||
ui->cardIdBox->clear();
|
ui->cardIdBox->clear();
|
||||||
ui->cardIdBox->addItems(cardIdList);
|
ui->cardIdBox->addItems(cardIdList);
|
||||||
}
|
}
|
||||||
|
@ -2,20 +2,28 @@
|
|||||||
#include "ui_mainwindow.h"
|
#include "ui_mainwindow.h"
|
||||||
|
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* 功能:切换到退出页面
|
* @brief 切换到退出页面
|
||||||
* 触发:点击工具栏的“退出”
|
* 点击工具栏的“退出”触发
|
||||||
*/
|
* @param void
|
||||||
|
* @return void
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-27
|
||||||
|
*/
|
||||||
void MainWindow::on_quitAppAction_triggered()
|
void MainWindow::on_quitAppAction_triggered()
|
||||||
{
|
{
|
||||||
ui->stackedWidget->setCurrentWidget(ui->quitAppPage);
|
ui->stackedWidget->setCurrentWidget(ui->quitAppPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* 功能:退出程序
|
* @brief 退出程序
|
||||||
* 触发:在退出页面点击“确认”按钮
|
* 在退出页面点击“确认”按钮触发
|
||||||
*/
|
* @param void
|
||||||
|
* @return void
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-27
|
||||||
|
*/
|
||||||
void MainWindow::on_confirmQuitButton_clicked()
|
void MainWindow::on_confirmQuitButton_clicked()
|
||||||
{
|
{
|
||||||
this->close();
|
this->close();
|
||||||
|
@ -1,12 +1,32 @@
|
|||||||
#include "readerAPI.h"
|
#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()
|
bool Reader::is_connected()
|
||||||
{
|
{
|
||||||
return comNumber > 0;
|
return comNumber > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 连接读卡器
|
||||||
|
* 尝试通过comNumber连接读卡器。如果连接成功,返回true;否则返回false并重置comNumber为-1。
|
||||||
|
* @param void
|
||||||
|
* @return 连接成功返回true,失败返回false
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-27
|
||||||
|
*/
|
||||||
bool Reader::connect()
|
bool Reader::connect()
|
||||||
{
|
{
|
||||||
if (CVCDOurs::connectReaderByCOM(comNumber))
|
if (CVCDOurs::connectReaderByCOM(comNumber))
|
||||||
@ -20,27 +40,63 @@ bool Reader::connect()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 设置COM口号
|
||||||
|
* @param comNumber 要设置的COM口号
|
||||||
|
* @return void
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-27
|
||||||
|
*/
|
||||||
void Reader::setComNumber(int comNumber)
|
void Reader::setComNumber(int comNumber)
|
||||||
{
|
{
|
||||||
this->comNumber = comNumber;
|
this->comNumber = comNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 获取当前COM口号
|
||||||
|
* @param void
|
||||||
|
* @return 当前的COM口号
|
||||||
|
* - -1 未连接
|
||||||
|
* - >0 已连接
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-27
|
||||||
|
*/
|
||||||
int Reader::getComNumber()
|
int Reader::getComNumber()
|
||||||
{
|
{
|
||||||
return comNumber;
|
return comNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 获取读卡器中卡片的UID列表
|
||||||
|
* 通过读卡器的inventory方法获取最大数量为maxViccNum的卡片UID,并将其转换为QStringList返回。
|
||||||
|
* @param maxViccNum 最大卡片数量
|
||||||
|
* @return 包含卡片UID的QStringList
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-29
|
||||||
|
*/
|
||||||
QStringList Reader::inventory(int maxViccNum)
|
QStringList Reader::inventory(int maxViccNum)
|
||||||
{
|
{
|
||||||
|
// 分配内存用于存储卡片的UID
|
||||||
uchar_t (*aucUID)[8] = (uchar_t (*)[8])malloc(maxViccNum * sizeof(*aucUID));;
|
uchar_t (*aucUID)[8] = (uchar_t (*)[8])malloc(maxViccNum * sizeof(*aucUID));;
|
||||||
|
|
||||||
|
// 调用CVCDOurs::inventory方法获取卡片数量
|
||||||
int receivedViccNum = CVCDOurs::inventory(false, '\0', maxViccNum, nullptr, aucUID);
|
int receivedViccNum = CVCDOurs::inventory(false, '\0', maxViccNum, nullptr, aucUID);
|
||||||
|
|
||||||
|
// 用于存储UID的QStringList
|
||||||
QStringList uidList;
|
QStringList uidList;
|
||||||
for (int i = 0; i < receivedViccNum; ++i)
|
for (int i = 0; i < receivedViccNum; ++i)
|
||||||
{
|
{
|
||||||
char uidStr[8];
|
char uidStr[8];
|
||||||
|
// 将UID从十六进制转换为字符串
|
||||||
CVCDOurs::HexToString(aucUID[i], 8, uidStr);
|
CVCDOurs::HexToString(aucUID[i], 8, uidStr);
|
||||||
|
// 将字符串转换为QString并添加到uidList中
|
||||||
uidList.push_back(QString::fromStdString(uidStr));
|
uidList.push_back(QString::fromStdString(uidStr));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 释放分配的内存
|
||||||
free(aucUID);
|
free(aucUID);
|
||||||
return uidList;
|
return uidList;
|
||||||
}
|
}
|
||||||
|
18
readerAPI.h
18
readerAPI.h
@ -2,24 +2,32 @@
|
|||||||
#define READERAPI_H
|
#define READERAPI_H
|
||||||
|
|
||||||
#include <HF15693.h>
|
#include <HF15693.h>
|
||||||
#include <cstdio>
|
|
||||||
#include <cstring>
|
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
#include <VCDOurs.h>
|
#include <VCDOurs.h>
|
||||||
|
|
||||||
typedef unsigned char uchar_t;
|
typedef unsigned char uchar_t;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @class Reader
|
||||||
|
* @brief 读卡器管理类
|
||||||
|
* 该类用于管理RFID读卡器的连接和操作,包括设置COM口号、连接读卡器、获取卡片UID列表等功能。
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-27
|
||||||
|
*/
|
||||||
class Reader : private CVCDOurs
|
class Reader : private CVCDOurs
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
int comNumber = -1; // com口号,若未连接为-1
|
int comNumber = -1; ///< 硬件连接com口号,若未连接为-1
|
||||||
|
|
||||||
public:
|
public:
|
||||||
bool is_connected();
|
|
||||||
bool connect();
|
|
||||||
void setComNumber(int comNumber);
|
void setComNumber(int comNumber);
|
||||||
int getComNumber();
|
int getComNumber();
|
||||||
|
|
||||||
|
bool is_connected();
|
||||||
|
|
||||||
|
bool connect();
|
||||||
QStringList inventory(int maxViccNum);
|
QStringList inventory(int maxViccNum);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2,21 +2,27 @@
|
|||||||
#include "ui_mainwindow.h"
|
#include "ui_mainwindow.h"
|
||||||
|
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* 功能:切换到设置页面
|
* @brief 切换到设置页面
|
||||||
* 触发:点击工具栏的“设置”
|
* 点击工具栏的“设置”触发。
|
||||||
*/
|
* @param void
|
||||||
|
* @return void
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-27
|
||||||
|
*/
|
||||||
void MainWindow::on_settingAction_triggered()
|
void MainWindow::on_settingAction_triggered()
|
||||||
{
|
{
|
||||||
ui->stackedWidget->setCurrentWidget(ui->settingPage);
|
ui->stackedWidget->setCurrentWidget(ui->settingPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* 功能:设置连接的读卡器的COM口号并更新状态栏的相应内容
|
* @brief 更新状态栏的COM口号相关内容
|
||||||
* 输入:要设置的COM口号
|
* @param void
|
||||||
* 返回:无
|
* @return void
|
||||||
*/
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-27
|
||||||
|
*/
|
||||||
void MainWindow::updateStatusBarComNumber()
|
void MainWindow::updateStatusBarComNumber()
|
||||||
{
|
{
|
||||||
if (reader.is_connected())
|
if (reader.is_connected())
|
||||||
@ -34,10 +40,14 @@ void MainWindow::updateStatusBarComNumber()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* 功能:连接读卡器
|
* @brief 连接读卡器
|
||||||
* 触发:在设置页面的连接读卡器部分点击“连接”按钮
|
* 在连接读卡器部分点击“连接”按钮触发。
|
||||||
*/
|
* @param void
|
||||||
|
* @return void
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-27
|
||||||
|
*/
|
||||||
void MainWindow::on_connectReaderButton_clicked()
|
void MainWindow::on_connectReaderButton_clicked()
|
||||||
{
|
{
|
||||||
int comNumber = ui->comNumberBox->value();
|
int comNumber = ui->comNumberBox->value();
|
||||||
@ -54,10 +64,14 @@ void MainWindow::on_connectReaderButton_clicked()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* 功能:连接数据库并检查设备名
|
* @brief 连接数据库并检查设备名
|
||||||
* 触发:在设置页面的连接数据库部分点击“连接”按钮
|
* 在连接数据库部分点击“连接”按钮触发。
|
||||||
*/
|
* @param void
|
||||||
|
* @return void
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-27
|
||||||
|
*/
|
||||||
void MainWindow::on_connectDatabaseButton_clicked()
|
void MainWindow::on_connectDatabaseButton_clicked()
|
||||||
{
|
{
|
||||||
if (db == nullptr)
|
if (db == nullptr)
|
||||||
@ -82,7 +96,7 @@ void MainWindow::on_connectDatabaseButton_clicked()
|
|||||||
databaseLabel->setText(QString("数据库已连接:") + db->getHostName() + QString(":") + QString::number(db->getPort()));
|
databaseLabel->setText(QString("数据库已连接:") + db->getHostName() + QString(":") + QString::number(db->getPort()));
|
||||||
|
|
||||||
device.setDevice(ui->deviceEdit->text(), db);
|
device.setDevice(ui->deviceEdit->text(), db);
|
||||||
if (!device.is_connected())
|
if (!device.is_verified())
|
||||||
{
|
{
|
||||||
QMessageBox::warning(this, QString("设备名提示"), QString("该设备名无效,请重试。"));
|
QMessageBox::warning(this, QString("设备名提示"), QString("该设备名无效,请重试。"));
|
||||||
}
|
}
|
||||||
@ -90,15 +104,19 @@ void MainWindow::on_connectDatabaseButton_clicked()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* 功能:检查读卡器和数据库是否准备好
|
* @brief 检查读卡器和数据库是否准备好
|
||||||
* 输入:无
|
* @param void
|
||||||
* 返回:true - 已准备好 | false - 未准备好
|
* @return 读卡器和数据库状态
|
||||||
*/
|
* - true 已准备好
|
||||||
|
* - false 未准备好
|
||||||
|
* @author 柯劲帆
|
||||||
|
* @date 2024-07-27
|
||||||
|
*/
|
||||||
bool MainWindow::ready()
|
bool MainWindow::ready()
|
||||||
{
|
{
|
||||||
if (!reader.is_connected()) return false;
|
if (!reader.is_connected()) return false;
|
||||||
if (db == nullptr || !db->is_connected()) return false;
|
if (db == nullptr || !db->is_connected()) return false;
|
||||||
if (!device.is_connected()) return false;
|
if (!device.is_verified()) return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user