82 lines
1.9 KiB
C++
82 lines
1.9 KiB
C++
#ifndef RFIDMANAGER_H
|
|
#define RFIDMANAGER_H
|
|
|
|
#include "myinclude.h"
|
|
#include <QSerialPort>
|
|
#include <QObject>
|
|
#include <QTimer>
|
|
#include <QMutex>
|
|
|
|
typedef unsigned char UCHAR;
|
|
class RFIDManager : public QObject
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
static RFIDManager* instance();
|
|
|
|
public:
|
|
|
|
/**
|
|
* @brief 向卡片写入当前日期时间,标识该卡片已被使用
|
|
*/
|
|
int RFIDmarkCardUsedAsync(int type);
|
|
|
|
// InkJetPrinter定时器timerHandler触发,检查刷卡状态
|
|
// 初始化刷卡模块
|
|
void initRFIDMoudle(unsigned int addr);
|
|
|
|
// 300ms检查处理
|
|
void handleCheck(unsigned int addr);
|
|
|
|
private:
|
|
RFIDManager();
|
|
|
|
// 工具类函数
|
|
void CheckSumOut(UCHAR *buf, UCHAR len);
|
|
bool CheckSumIn(UCHAR *buf, UCHAR len);
|
|
void MySleep(unsigned int msec, int expSize = 8);
|
|
void Hex2Str(const UCHAR *sSrc, UCHAR *sDest, int nSrcLen);
|
|
void HexStrToByte(const UCHAR* source, UCHAR* dest, int sourceLen);
|
|
|
|
// 串口
|
|
QSerialPort *comForRFID = nullptr;
|
|
void comForRFID_init();
|
|
int comReadRFID_data();
|
|
|
|
QByteArray buildMarkCardCommand(int block, int cardType);
|
|
bool verifyWriteResponse(const QByteArray& response, QString notice);
|
|
|
|
int setRFIDCarKey(void);
|
|
int setRFIDReaderKey(int,int);
|
|
int setRFIDReaderOriginalKey(void);
|
|
int setRFIDReaderWorkMode(void);
|
|
int receiveReadRFID_data(void);
|
|
int queryReadRFID_address(void);
|
|
|
|
QMutex m_rfidMutex;
|
|
QByteArray RFIDReadData;
|
|
QString strRevdata;
|
|
bool setICReaderModeFlag;
|
|
uint checkCardIntervalTime;
|
|
|
|
QTimer* RFIDTimer = nullptr;
|
|
void initTimer();
|
|
|
|
bool cardTouchConfirm(QString msgTxt, QString variableMsgTxt);
|
|
|
|
signals:
|
|
void sig_showMsg(QString msg);
|
|
|
|
void sig_maintenanceShow();
|
|
|
|
private slots:
|
|
//接收刷卡数据槽函数
|
|
void slt_readRFIDData();
|
|
|
|
//超时处理槽函数
|
|
void slt_timerHandle();
|
|
|
|
};
|
|
|
|
#endif // RFIDMANAGER_H
|