压力算法移植前
This commit is contained in:
@@ -0,0 +1,171 @@
|
||||
#pragma once
|
||||
|
||||
#include <QObject>
|
||||
#include <QString>
|
||||
#include <QByteArray>
|
||||
#include "posix_qextserialport.h"
|
||||
|
||||
class RFIDFunction:public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
enum ControlBlock//加密块
|
||||
{
|
||||
Sector_0_Block_3 = 3,
|
||||
Sector_1_Block_3 = 7,
|
||||
Sector_2_Block_3 = 11,
|
||||
Sector_3_Block_3 = 15,
|
||||
Sector_4_Block_3 = 19,
|
||||
Sector_5_Block_3 = 23,
|
||||
Sector_6_Block_3 = 27,
|
||||
Sector_7_Block_3 = 31,
|
||||
Sector_8_Block_3 = 35,
|
||||
Sector_9_Block_3 = 39,
|
||||
Sector_10_Block_3 = 43,
|
||||
Sector_11_Block_3 = 47,
|
||||
Sector_12_Block_3 = 51,
|
||||
Sector_13_Block_3 = 55,
|
||||
Sector_14_Block_3 = 59,
|
||||
Sector_15_Block_3 = 63
|
||||
};
|
||||
|
||||
enum KeyType//密钥类型
|
||||
{
|
||||
KEY_A = 0, // 密钥A
|
||||
KEY_B // 密钥B
|
||||
};
|
||||
|
||||
enum DataBlock //数据块
|
||||
{
|
||||
Sector_0_Block_1 = 1,
|
||||
Sector_0_Block_2 = 2,
|
||||
|
||||
Sector_1_Block_0 = 4,
|
||||
Sector_1_Block_1 = 5,
|
||||
Sector_1_Block_2 = 6,
|
||||
|
||||
Sector_2_Block_0 = 8,
|
||||
Sector_2_Block_1 = 9,
|
||||
Sector_2_Block_2 = 10,
|
||||
|
||||
Sector_3_Block_0 = 12,
|
||||
Sector_3_Block_1 = 13,
|
||||
Sector_3_Block_2 = 14,
|
||||
|
||||
Sector_4_Block_0 = 16,
|
||||
Sector_4_Block_1 = 17,
|
||||
Sector_4_Block_2 = 18,
|
||||
|
||||
Sector_5_Block_0 = 20,
|
||||
Sector_5_Block_1 = 21,
|
||||
Sector_5_Block_2 = 22,
|
||||
|
||||
Sector_6_Block_0 = 24,
|
||||
Sector_6_Block_1 = 25,
|
||||
Sector_6_Block_2 = 26,
|
||||
|
||||
Sector_7_Block_0 = 28,
|
||||
Sector_7_Block_1 = 29,
|
||||
Sector_7_Block_2 = 30,
|
||||
|
||||
Sector_8_Block_0 = 32,
|
||||
Sector_8_Block_1 = 33,
|
||||
Sector_8_Block_2 = 34,
|
||||
|
||||
Sector_9_Block_0 = 36,
|
||||
Sector_9_Block_1 = 37,
|
||||
Sector_9_Block_2 = 38,
|
||||
|
||||
Sector_10_Block_0 = 40,
|
||||
Sector_10_Block_1 = 41,
|
||||
Sector_10_Block_2 = 42,
|
||||
|
||||
Sector_11_Block_0 = 44,
|
||||
Sector_11_Block_1 = 45,
|
||||
Sector_11_Block_2 = 46,
|
||||
|
||||
Sector_12_Block_0 = 48,
|
||||
Sector_12_Block_1 = 49,
|
||||
Sector_12_Block_2 = 50,
|
||||
|
||||
Sector_13_Block_0 = 52,
|
||||
Sector_13_Block_1 = 53,
|
||||
Sector_13_Block_2 = 54,
|
||||
|
||||
Sector_14_Block_0 = 56,
|
||||
Sector_14_Block_1 = 57,
|
||||
Sector_14_Block_2 = 58,
|
||||
|
||||
Sector_15_Block_0 = 60,
|
||||
Sector_15_Block_1 = 61,
|
||||
Sector_15_Block_2 = 62
|
||||
};
|
||||
|
||||
enum KeyFunction
|
||||
{
|
||||
KeyA_Same_KeyB = 0, // KEYA和KEYB相同
|
||||
KeyB_Control_KeyA // KEYB控制KEYA
|
||||
};
|
||||
|
||||
|
||||
|
||||
enum WorkMode //工作模式
|
||||
{
|
||||
Command_Mode = 0x01,//命令模式(关闭自动读卡),该模式会关闭自动读卡功能
|
||||
Auto_Read_Card_Num_Mode = 0x02,//自动读卡号
|
||||
Auto_Read_Data_Mode = 0x03,//自动读块数据,块号为要自动读的数据块编号
|
||||
Auto_Read_Card_Num_Data_Mode = 0x04//自动读卡号与指定块数据,块号为要自动读的数据块编号
|
||||
};
|
||||
|
||||
enum UploadMode//上传模式
|
||||
{
|
||||
Auto_Upload = 0x00,//读卡后主动发送数据,主动将读到的数据发送给上位机
|
||||
Command_Upload = 0x01//读卡后被动发送数据,需要收到上位机获取数据的命令才将读到的数据发送给上位机
|
||||
};
|
||||
|
||||
|
||||
|
||||
enum ErrorCode
|
||||
{
|
||||
No_Error = 0, // 无错误
|
||||
Serial_Error, // 串口错误
|
||||
Send_Data_Error, // 发送数据错误
|
||||
Data_Is_Empty_Error, // 数据为空错误
|
||||
Data_Size_More_Than_8192_Error, // 数据大小超过8192错误
|
||||
Received_Data_Check_Error, // 接收数据校验错误
|
||||
Received_Data_Error, // 接收数据错误
|
||||
Data_Is_Illegal_Error // 数据非法错误
|
||||
};
|
||||
|
||||
public:
|
||||
RFIDFunction(QObject* parent); // 构造函数
|
||||
~RFIDFunction(); // 析构函数
|
||||
void CheckSumOut(unsigned char* buf, unsigned char len);
|
||||
bool CheckSumIn(unsigned char* buf, unsigned char len);
|
||||
|
||||
|
||||
ErrorCode initSerialPortAndOpen(const QString& portName, // 初始化串口并打开
|
||||
BaudRateType baudRate = BAUD9600, // 波特率
|
||||
DataBitsType setDataBits = DATA_8, // 数据位
|
||||
StopBitsType stopBits = STOP_1, // 停止位
|
||||
ParityType parity = PAR_NONE // 校验位
|
||||
);
|
||||
|
||||
static const QByteArray createPassword(const QByteArray& info); // 创建密码
|
||||
|
||||
bool getSerialState(); // 获取串口状态
|
||||
ErrorCode setOriginPassword(const QByteArray& psw); // 设置原始密码
|
||||
ErrorCode setWriteAndReadPassword(const QByteArray& writePassword, const QByteArray& readPassword, KeyFunction keyFunc); // 设置读写密码
|
||||
ErrorCode setEncryptedBlock(KeyType type, ControlBlock block); // 设置加密块
|
||||
ErrorCode writeDataToBlock(KeyType type, DataBlock block, const QByteArray& data); // 写数据到块
|
||||
ErrorCode readDataFromBlock(KeyType type, DataBlock block, QByteArray& data); // 从块读取数据
|
||||
ErrorCode setWorkMode(WorkMode mode, DataBlock block = Sector_1_Block_2, UploadMode uploadMode = Auto_Upload);//设置工作模式
|
||||
ErrorCode getReaderAddress(QByteArray& psw); // 获取读卡器地址
|
||||
|
||||
|
||||
|
||||
private:
|
||||
bool m_SerialSate; // 串口状态
|
||||
Posix_QextSerialPort *m_SerialPort;; // 串口对象
|
||||
|
||||
};
|
||||
Reference in New Issue
Block a user