重构RFID前
This commit is contained in:
@@ -3632,7 +3632,15 @@ void DevOp::comForRFID_init(void)
|
||||
{
|
||||
// return;
|
||||
comForRFID = new QSerialPort();
|
||||
|
||||
|
||||
comForRFID->setPortName("/dev/ttyAS1");
|
||||
|
||||
// 覆盖默认串口名称,用于x86架构调试
|
||||
#ifdef ARCH_X86
|
||||
comForRFID->setPortName("/dev/ttyUSB0");
|
||||
#endif
|
||||
|
||||
comForRFID->setBaudRate(9600);
|
||||
comForRFID->setDataBits(QSerialPort::Data8);
|
||||
comForRFID->setParity(QSerialPort::NoParity);
|
||||
@@ -3642,7 +3650,7 @@ void DevOp::comForRFID_init(void)
|
||||
qDebug() << "RFID串口打开成功";
|
||||
connect(comForRFID,SIGNAL(readyRead()),this,SLOT(readRFIDData()));
|
||||
} else {
|
||||
qDebug() << "RFID串口打开失败:" << comForRFID->errorString();
|
||||
qDebug() << "RFID串口打开失败: " << comForRFID->errorString();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3656,7 +3664,7 @@ extern void MySleep(unsigned int msec);
|
||||
int DevOp::comReadRFID_data()
|
||||
{
|
||||
UCHAR Cmd[23] = { 0x01, 0x17, 0xA4, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
||||
UCHAR revdata[100];
|
||||
UCHAR revdata[100] = {0};
|
||||
Cmd[1] = 0x08;
|
||||
Cmd[2] = 0xA3;
|
||||
Cmd[4] = 0x06; //读块6
|
||||
@@ -3682,8 +3690,8 @@ int DevOp::comReadRFID_data()
|
||||
RFIDReadData.clear();
|
||||
LogInfo::setRunStatusText(tr("readB6com"));
|
||||
}
|
||||
memcpy(revdata, recResponse, n);
|
||||
if ((revdata[0] = 0x01) && ((revdata[1] == 8) || (revdata[1] == 22)) && (revdata[1] == n) && (revdata[2] == 0xA3) && (revdata[3] = 0x20))//判断是否为读数据块返回的数据包
|
||||
memcpy(revdata, recResponse.constData(), n);
|
||||
if ((revdata[0] == 0x01) && ((revdata[1] == 8) || (revdata[1] == 22)) && (revdata[1] == n) && (revdata[2] == 0xA3) && (revdata[3] == 0x20))//判断是否为读数据块返回的数据包
|
||||
{
|
||||
LogInfo::setRunStatusText(tr("readB6suc"));
|
||||
bool status = CheckSumIn(revdata, revdata[1]); //计算校验和
|
||||
@@ -3754,8 +3762,8 @@ int DevOp::comWriteRFID_data(int type)
|
||||
str.sprintf("%d - %d - %d", recResponse.at(0),recResponse.at(1),recResponse.at(2));
|
||||
qDebug()<<"写数据到数据块6: "<<str;
|
||||
}
|
||||
memcpy(revdata, recResponse, n);
|
||||
if ((revdata[0] = 0x01) && (revdata[1] == 8) && (revdata[1] == n) && (revdata[2] == 0x5B) && (revdata[3] = 0x20)) //判断是否为写数据返回的数据包
|
||||
memcpy(revdata, recResponse.constData(), n);
|
||||
if ((revdata[0] == 0x01) && (revdata[1] == 8) && (revdata[1] == n) && (revdata[2] == 0x5B) && (revdata[3] == 0x20)) //判断是否为写数据返回的数据包
|
||||
{
|
||||
bool status = CheckSumIn(revdata, revdata[1]); //计算校验和
|
||||
if (status)
|
||||
@@ -3780,7 +3788,7 @@ int DevOp::comWriteRFID_data(int type)
|
||||
*/
|
||||
|
||||
|
||||
int DevOp::comWriteRFID_data()
|
||||
int DevOp::RFIDmarkCardUsedAsync()
|
||||
{
|
||||
UCHAR Cmd[23] = { 0x01, 0x17, 0xA4, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
||||
UCHAR revdata[100];
|
||||
@@ -3821,8 +3829,8 @@ int DevOp::comWriteRFID_data()
|
||||
str.sprintf("%d - %d - %d", recResponse.at(0),recResponse.at(1),recResponse.at(2));
|
||||
qDebug()<<"写数据到数据块6: "<<str;
|
||||
}
|
||||
memcpy(revdata, recResponse, n);
|
||||
if ((revdata[0] = 0x01) && (revdata[1] == 8) && (revdata[1] == n) && (revdata[2] == 0x5B) && (revdata[3] = 0x20)) //判断是否为写数据返回的数据包
|
||||
memcpy(revdata, recResponse.constData(), n);
|
||||
if ((revdata[0] == 0x01) && (revdata[1] == 8) && (revdata[1] == n) && (revdata[2] == 0x5B) && (revdata[3] == 0x20)) //判断是否为写数据返回的数据包
|
||||
{
|
||||
bool status = CheckSumIn(revdata, revdata[1]); //计算校验和
|
||||
if (status)
|
||||
@@ -3840,7 +3848,7 @@ int DevOp::comWriteRFID_data()
|
||||
}
|
||||
else
|
||||
{
|
||||
qDebug() << "写数据到数据块6" << "失败2!" << endl << endl;
|
||||
qDebug() << "写数据到数据块6" << "失败2!" << endl << endl;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -3848,7 +3856,7 @@ int DevOp::comWriteRFID_data()
|
||||
|
||||
int DevOp::setRFIDCarKey(void)
|
||||
{
|
||||
UCHAR revdata[100];
|
||||
UCHAR revdata[100] = {0};
|
||||
UCHAR Cmd[8] ;
|
||||
Cmd[0] = 0x01; //命令格式请核对协议手册充值章节
|
||||
Cmd[1] = 0x08;
|
||||
@@ -3882,7 +3890,8 @@ int DevOp::setRFIDCarKey(void)
|
||||
str.sprintf("%d - %d - %d", recResponse.at(0),recResponse.at(1),recResponse.at(2));
|
||||
qDebug()<<"加密IC卡: "<<str;
|
||||
}
|
||||
memcpy(revdata, recResponse, n);
|
||||
if(n > (int)sizeof(revdata)) n = sizeof(revdata);
|
||||
memcpy(revdata, recResponse.constData(), n);
|
||||
if ((revdata[0] == 0x01) &&( revdata[1] == 8 )&& (revdata[1] == n) && (revdata[2] == 0xA5) && (revdata[3] == 0x20)) //判断是否为设置地址返回的数据包
|
||||
{
|
||||
bool status = CheckSumIn(revdata, revdata[1]); //计算校验和
|
||||
@@ -3906,7 +3915,7 @@ int DevOp::setRFIDCarKey(void)
|
||||
|
||||
int DevOp::setRFIDReaderKey(int mac,int type)
|
||||
{
|
||||
if(mac == 0) mac = 100;
|
||||
if(mac == 0) mac = 100;
|
||||
QString strMac1 = QString::number(mac).mid(0,3);
|
||||
strMac1 = "Vernon" + strMac1 + "Bach";
|
||||
strMac1 = strMac1.leftJustified(16,'6');
|
||||
@@ -3985,7 +3994,8 @@ int DevOp::setRFIDReaderKey(int mac,int type)
|
||||
str.sprintf("%d - %d - %d", recResponse.at(0),recResponse.at(1),recResponse.at(2));
|
||||
qDebug()<<"设置读写器密码: "<<str;
|
||||
}
|
||||
memcpy(revdata, recResponse, n);
|
||||
if(n > (int)sizeof(revdata)) n = sizeof(revdata);
|
||||
memcpy(revdata, recResponse.constData(), n);
|
||||
if ((revdata[0] == 0x03) &&( revdata[1] == 8 )&& (revdata[1] == n) && (revdata[2] == 0xC3) && (revdata[3] == 0x20)) //判断是否为设置地址返回的数据包
|
||||
{
|
||||
bool status = CheckSumIn(revdata, revdata[1]); //计算校验和
|
||||
@@ -4010,7 +4020,7 @@ int DevOp::setRFIDReaderKey(int mac,int type)
|
||||
|
||||
int DevOp::setRFIDReaderOriginalKey(void)
|
||||
{
|
||||
UCHAR revdata[100];
|
||||
UCHAR revdata[100] = {0};
|
||||
UCHAR Cmd[11] ;
|
||||
Cmd[0] = 0x03; //命令格式请核对协议手册充值章节
|
||||
Cmd[1] = 0x0B;
|
||||
@@ -4047,7 +4057,8 @@ int DevOp::setRFIDReaderOriginalKey(void)
|
||||
str.sprintf("%d - %d - %d", recResponse.at(0),recResponse.at(1),recResponse.at(2));
|
||||
qDebug()<<"设置读写器原始密码: "<<str;
|
||||
}
|
||||
memcpy(revdata, recResponse, n);
|
||||
if(n > (int)sizeof(revdata)) n = sizeof(revdata);
|
||||
memcpy(revdata, recResponse.constData(), n);
|
||||
if ((revdata[0] == 0x03) &&( revdata[1] == 8 )&& (revdata[1] == n) && (revdata[2] == 0xC4) && (revdata[3] == 0x20)) //判断是否为设置地址返回的数据包
|
||||
{
|
||||
bool status = CheckSumIn(revdata, revdata[1]); //计算校验和
|
||||
@@ -4071,13 +4082,13 @@ int DevOp::setRFIDReaderOriginalKey(void)
|
||||
|
||||
int DevOp::setRFIDReaderWorkMode(void)
|
||||
{
|
||||
UCHAR revdata[100];
|
||||
UCHAR revdata[100] = {0};
|
||||
UCHAR Cmd[8] ;
|
||||
Cmd[0] = 0x03; //命令格式请核对协议手册充值章节
|
||||
Cmd[1] = 0x08;
|
||||
Cmd[1] = 0x08; // 包长度
|
||||
Cmd[2] = 0xC1; //设置工作模式
|
||||
Cmd[3] = 0x20;
|
||||
Cmd[4] = 0x03;
|
||||
Cmd[3] = 0x20; // 地址,固定0x20
|
||||
Cmd[4] = 0x03; // 自动读块数据
|
||||
Cmd[5] = 0x06; //读块6
|
||||
Cmd[6] = 0x00; //主动发送数据
|
||||
Cmd[7] = 0x00;
|
||||
@@ -4096,7 +4107,7 @@ int DevOp::setRFIDReaderWorkMode(void)
|
||||
qDebug()<<"read uart for RFID not open!";
|
||||
}
|
||||
//sleep(200); // 延时200毫秒等待读写器返回数据,延时太小可能无法接收完整的数据包
|
||||
MySleep(200);
|
||||
MySleep(500);
|
||||
int n = RFIDReadData.size();
|
||||
if(n>0)
|
||||
{
|
||||
@@ -4106,7 +4117,8 @@ int DevOp::setRFIDReaderWorkMode(void)
|
||||
str.sprintf("%d - %d - %d", recResponse.at(0),recResponse.at(1),recResponse.at(2));
|
||||
qDebug()<<"设置读写器工作模式: "<<str;
|
||||
}
|
||||
memcpy(revdata, recResponse, n);
|
||||
if(n > (int)sizeof(revdata)) n = sizeof(revdata);
|
||||
memcpy(revdata, recResponse.constData(), n);
|
||||
if ((revdata[0] == 0x03) &&( revdata[1] == 8 )&& (revdata[1] == n) && (revdata[2] == 0xC1) && (revdata[3] == 0x20)) //判断是否为设置地址返回的数据包
|
||||
{
|
||||
bool status = CheckSumIn(revdata, revdata[1]); //计算校验和
|
||||
@@ -4120,18 +4132,20 @@ int DevOp::setRFIDReaderWorkMode(void)
|
||||
else
|
||||
{
|
||||
qDebug() << "设置读写器工作模式失败!" << endl << endl;
|
||||
LogInfo::setRunStatusText("Failed to set RFID reader work mode!");
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
qDebug() << "设置读写器工作模式失败!" << endl << endl;
|
||||
LogInfo::setRunStatusText("Failed to set RFID reader work mode!");
|
||||
}
|
||||
}
|
||||
|
||||
int DevOp::receiveReadRFID_data(void)
|
||||
{
|
||||
UCHAR revdata[100];
|
||||
UCHAR revdata[100] = {0};
|
||||
QByteArray recResponse;
|
||||
int n = RFIDReadData.size();
|
||||
if(n>0)
|
||||
@@ -4140,25 +4154,31 @@ int DevOp::receiveReadRFID_data(void)
|
||||
RFIDReadData.clear();
|
||||
showData(recResponse);
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
|
||||
memcpy(revdata, recResponse, n);
|
||||
|
||||
if ((revdata[0] = 0x04) && ((revdata[1] == 8) || (revdata[1] == 22)) && (revdata[1] == n) && (revdata[2] == 0x03) && (revdata[3] = 0x20))//判断是否为读数据块返回的数据包
|
||||
if(n > (int)sizeof(revdata)) // 防止越界
|
||||
n = sizeof(revdata);
|
||||
|
||||
memcpy(revdata, recResponse.constData(), n);
|
||||
|
||||
if ((revdata[0] == 0x04) && ((revdata[1] == 8) || (revdata[1] == 22)) && (revdata[1] == n) && (revdata[2] == 0x03) && (revdata[3] == 0x20))//判断是否为读数据块返回的数据包
|
||||
{
|
||||
bool status = CheckSumIn(revdata, revdata[1]); //计算校验和
|
||||
if (status)
|
||||
{
|
||||
if (revdata[4] == 0x00) //读数据块成功
|
||||
{
|
||||
UCHAR blockdata[16];
|
||||
UCHAR temp[33];
|
||||
UCHAR blockdata[16] = {0};
|
||||
UCHAR temp[33] = {0};
|
||||
for (int i = 0; i < 16; i++)
|
||||
{
|
||||
blockdata[i] = revdata[5 + i]; //复制数据到数组
|
||||
}
|
||||
Hex2Str(&blockdata[0], &temp[0], 16); // 数据块数据转换为字符
|
||||
strRevdata = QString((const char*)temp);
|
||||
qDebug() << "读数据块成功,数据块6" << "数据为:" << strRevdata << endl << endl;
|
||||
qDebug() << "读数据块成功, 数据块6" << "数据为:" << strRevdata << endl << endl;
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
@@ -4196,8 +4216,9 @@ int DevOp::queryReadRFID_address(void)
|
||||
}
|
||||
MySleep(100);
|
||||
int n = RFIDReadData.size();
|
||||
UCHAR revdata[100];
|
||||
memcpy(revdata, RFIDReadData, n);
|
||||
UCHAR revdata[100] = {0};
|
||||
if(n > (int)sizeof(revdata)) n = sizeof(revdata);
|
||||
memcpy(revdata, RFIDReadData.constData(), n);
|
||||
if(n>0)
|
||||
{
|
||||
showData(RFIDReadData);
|
||||
|
||||
Reference in New Issue
Block a user