Commit 442e33db by NitefullWind

1. 修改激活的步骤。 2. 登录接口新增认证类型。 3. 去掉激活和锁定接口。

parent 81d610f9
#include "reader.h" #include "reader.h"
Reader* Reader::instance() Reader* Reader::instance()
{ {
...@@ -10,7 +10,7 @@ Reader::Reader(QObject *parent) : QObject(parent) ...@@ -10,7 +10,7 @@ Reader::Reader(QObject *parent) : QObject(parent)
{ {
s_end = true; s_end = true;
s_initsuc = false; s_initsuc = false;
isDefaultPassword = false; _isDefaultPassword = false;
s_reader = NULL; s_reader = NULL;
this->moveToThread(&m_thread); this->moveToThread(&m_thread);
m_thread.start(); m_thread.start();
...@@ -38,27 +38,44 @@ bool Reader::readVipNO() ...@@ -38,27 +38,44 @@ bool Reader::readVipNO()
{ {
QString vipNo; QString vipNo;
QString error; QString error;
QString uuid;
while(s_end && !ReadCard(s_reader, s_readerCfg.Section, vipNo, error)) while(s_end && (!ReadCard(s_reader, s_readerCfg.Section, vipNo, uuid , error) || _isDefaultPassword))
{ {
// 如果是用默认密码读卡,则进行激活操作
if(_isDefaultPassword) {
emit needActivate();
qDebug() << tr("修改卡[%1]密码").arg(uuid);
while(s_end && !ActivateCard(s_reader, s_readerCfg.Section, s_readerCfg.Password, error)) {
}
emit activateFinished();
_isDefaultPassword = false;
connectReader();
break;
}
if(error == ReaderError.ConnectedError || error == ReaderError.PasswordError) { if(error == ReaderError.ConnectedError || error == ReaderError.PasswordError) {
qDebug() << "Readcard failed: " << error; qDebug() << "Readcard failed: " << error;
if(error == ReaderError.PasswordError) { if(error == ReaderError.PasswordError) {
isDefaultPassword = !isDefaultPassword; _isDefaultPassword = true;
} }
connectReader(); connectReader();
} }
Sleep(500); Sleep(500);
} }
if(!s_end) if(!s_end)
{ {
condition.wakeAll(); condition.wakeAll();
return false; return false;
} }
emit getVipNO(vipNo); qDebug() << __FUNCTION__ << vipNo << uuid;
emit getVipNO(vipNo, uuid);
return true;
} }
void Reader::connectReader() void Reader::connectReader()
...@@ -71,35 +88,36 @@ void Reader::connectReader() ...@@ -71,35 +88,36 @@ void Reader::connectReader()
if(s_initsuc) { if(s_initsuc) {
DisConnectDevice(s_reader); DisConnectDevice(s_reader);
} }
// do int tryTimes = 3;
// { do
{
if(sign) if(sign)
{ {
if(isDefaultPassword) { if(_isDefaultPassword) {
sign = ConnectDevice(s_readerCfg.Port, sign = ConnectDevice(s_readerCfg.Port,
s_readerCfg.Baud, s_readerCfg.Baud,
s_readerCfg.Section, s_readerCfg.Section,
s_readerCfg.Password, s_readerCfg.PasswordDefault,
s_reader, s_reader,
error); error);
} else { } else {
sign = ConnectDevice(s_readerCfg.Port, sign = ConnectDevice(s_readerCfg.Port,
s_readerCfg.Baud, s_readerCfg.Baud,
s_readerCfg.Section, s_readerCfg.Section,
s_readerCfg.PasswordDefault, s_readerCfg.Password,
s_reader, s_reader,
error); error);
} }
} }
if(!sign) { if(!sign) {
s_reader = NULL; s_reader = NULL;
qDebug() << "Connect device failed: " << error; qDebug() << "Connect reader device failed: " << error;
} }
else else
s_initsuc = sign; s_initsuc = sign;
// Sleep(500); Sleep(500);
// }while(s_end && !sign); }while(s_end && !sign && --tryTimes);
} }
} }
...@@ -125,15 +143,15 @@ void Reader::disconnectReader() ...@@ -125,15 +143,15 @@ void Reader::disconnectReader()
mutex.unlock(); mutex.unlock();
} }
bool Reader::activateCard() //bool Reader::activateCard()
{ //{
bool sign = false; // bool sign = false;
QString error; // QString error;
if(s_initsuc) { // if(s_initsuc) {
sign = ActivateCard(s_reader, s_readerCfg.Section, s_readerCfg.Password, error); // sign = ActivateCard(s_reader, s_readerCfg.Section, s_readerCfg.Password, error);
} // }
if(!sign) { // if(!sign) {
qDebug() << "Activate card failed: " << error; // qDebug() << "Activate card failed: " << error;
} // }
return sign; // return sign;
} //}
#ifndef READER_H #ifndef READER_H
#define READER_H #define READER_H
#include "global.h" #include "global.h"
...@@ -40,7 +40,7 @@ private: ...@@ -40,7 +40,7 @@ private:
private: private:
bool s_end; bool s_end;
bool s_initsuc; bool s_initsuc;
bool isDefaultPassword; bool _isDefaultPassword;
QMutex mutex; QMutex mutex;
QWaitCondition condition; QWaitCondition condition;
HANDLE s_reader; HANDLE s_reader;
...@@ -48,12 +48,14 @@ private: ...@@ -48,12 +48,14 @@ private:
ReaderCfg s_readerCfg; ReaderCfg s_readerCfg;
signals: signals:
void getVipNO(QString VipNO); void getVipNO(QString VipNO, QString uuid);
void needActivate();
void activateFinished();
public slots: public slots:
void disconnectReader(); void disconnectReader();
bool readVipNO(); bool readVipNO();
bool activateCard(); // bool activateCard();
}; };
#endif // READER_H #endif // READER_H
#ifndef GLOBAL_H #ifndef GLOBAL_H
#define GLOBAL_H #define GLOBAL_H
#include <QObject> #include <QObject>
#include <QApplication> #include <QApplication>
...@@ -46,6 +46,14 @@ enum FM_TYPE { ...@@ -46,6 +46,14 @@ enum FM_TYPE {
FM_Order_Revoke FM_Order_Revoke
}; };
enum Member_Type {
Unknow = 0,
PayCode,
Phone,
Account,
EntityCard
};
// 根据POS属性名,从配置文件中读取服务属性名 // 根据POS属性名,从配置文件中读取服务属性名
class FMPropsMap class FMPropsMap
{ {
...@@ -80,7 +88,9 @@ struct{ ...@@ -80,7 +88,9 @@ struct{
const QString FM_Type = "FM_Type"; const QString FM_Type = "FM_Type";
const QString TransId = "trans_id"; const QString TransId = "trans_id";
const QString Member_sign = "member_sign"; const QString Member_sign = "member_sign";
const QString Member_type = "member_type";
const QString IsActive = "is_active"; const QString IsActive = "is_active";
const QString Inner_code = "inner_code";
const QString Name = "name"; const QString Name = "name";
const QString Birthday = "birthday"; const QString Birthday = "birthday";
...@@ -141,6 +151,7 @@ struct{ ...@@ -141,6 +151,7 @@ struct{
const QString Discount = "discount"; const QString Discount = "discount";
// 卡激活锁定 // 卡激活锁定
const QString CardUUID = "CardUUID";
const QString CardNo = "card_no"; const QString CardNo = "card_no";
const QString CardStatus = "card_status"; const QString CardStatus = "card_status";
const QString CardStatusDesc = "card_status_desc"; const QString CardStatusDesc = "card_status_desc";
......
#ifndef SESSION_H #ifndef SESSION_H
#define SESSION_H #define SESSION_H
#include <QVariant> #include <QVariant>
...@@ -32,6 +32,7 @@ public: ...@@ -32,6 +32,7 @@ public:
void addData(const QString key, const QVariant value); void addData(const QString key, const QVariant value);
void addData(const QString key, const QMap<QString, Coupon> couponMap); void addData(const QString key, const QMap<QString, Coupon> couponMap);
bool contains(const QString key) {return _sessionDataMap.contains(key);}
QMap<QString, Coupon> getCouponMap(const QString key); QMap<QString, Coupon> getCouponMap(const QString key);
QMap<QString, QVariant> sessionDataMap() const { return this->_sessionDataMap;} QMap<QString, QVariant> sessionDataMap() const { return this->_sessionDataMap;}
......
#include "tasklogin.h" #include "tasklogin.h"
#include "fmviplogin.h" #include "fmviplogin.h"
TaskLogin::TaskLogin(QJsonObject &jsonObj, Session *session, QObject *parent) TaskLogin::TaskLogin(QJsonObject &jsonObj, Session *session, QObject *parent)
...@@ -10,7 +10,6 @@ void TaskLogin::setWindow() ...@@ -10,7 +10,6 @@ void TaskLogin::setWindow()
{ {
_window = new FMVipLogin; _window = new FMVipLogin;
//connect(this, SIGNAL(TaskLogin::starReader), _window, SLOT(FMVipLogin::onstartreader));
connect(this, &TaskLogin::starReader, qobject_cast<FMVipLogin*>(_window), &FMVipLogin::onstartreader); connect(this, &TaskLogin::starReader, qobject_cast<FMVipLogin*>(_window), &FMVipLogin::onstartreader);
connect(qobject_cast<FMVipLogin*>(_window), FMVipLogin::login, this, TaskLogin::onLogin); connect(qobject_cast<FMVipLogin*>(_window), FMVipLogin::login, this, TaskLogin::onLogin);
} }
...@@ -18,6 +17,8 @@ void TaskLogin::setWindow() ...@@ -18,6 +17,8 @@ void TaskLogin::setWindow()
void TaskLogin::packageServerReq() void TaskLogin::packageServerReq()
{ {
serverReqJsonObj[ServerProps(PosProps.Member_sign)] = _session->data(PosProps.Member_sign).toString(); serverReqJsonObj[ServerProps(PosProps.Member_sign)] = _session->data(PosProps.Member_sign).toString();
serverReqJsonObj[ServerProps(PosProps.Member_type)] = _session->data(PosProps.Member_type).toInt();
serverReqJsonObj[ServerProps(PosProps.Inner_code)] = _session->data(PosProps.Inner_code).toString();
} }
void TaskLogin::packagePOSRsp() void TaskLogin::packagePOSRsp()
...@@ -61,7 +62,13 @@ void TaskLogin::onLogin() ...@@ -61,7 +62,13 @@ void TaskLogin::onLogin()
session()->addData(PosProps.Mobile, getServerJsonValue(PosProps.Mobile).toString()); session()->addData(PosProps.Mobile, getServerJsonValue(PosProps.Mobile).toString());
session()->addData(PosProps.Fm_open_id, account); session()->addData(PosProps.Fm_open_id, account);
session()->addData(PosProps.Score, getServerJsonValue(PosProps.Score).toInt()); session()->addData(PosProps.Score, getServerJsonValue(PosProps.Score).toInt());
session()->addData(PosProps.IsActive, getServerJsonValue(PosProps.IsActive).toInt());
int isActive = getServerJsonValue(PosProps.IsActive).toInt();
if(session()->contains(PosProps.IsActive) && isActive==1) { // 刷卡、服务端已激活则看卡密码是否已修改
qDebug() << tr("Server isActive: %1. Card is default password: %2.").arg(isActive).arg(session()->data(PosProps.IsActive).toInt());
isActive = session()->data(PosProps.IsActive).toInt();
}
session()->addData(PosProps.IsActive, isActive);
// QMap<QString, QVariant> couponMap; // QMap<QString, QVariant> couponMap;
// for (auto value : getServerJsonValue(PosProps.CouponList).toArray()) // for (auto value : getServerJsonValue(PosProps.CouponList).toArray())
......
#include "taskmanage.h" #include "taskmanage.h"
#include "fmvippanel.h" #include "fmvippanel.h"
#include "tasklogin.h" #include "tasklogin.h"
#include "taskfund.h" #include "taskfund.h"
...@@ -59,19 +59,19 @@ void TaskManage::onFund() ...@@ -59,19 +59,19 @@ void TaskManage::onFund()
void TaskManage::onLock() void TaskManage::onLock()
{ {
childTask = new TaskCardLock(posReqJsonObj, this->session()); // childTask = new TaskCardLock(posReqJsonObj, this->session());
doChildTask(); // doChildTask();
} }
void TaskManage::onActivate() void TaskManage::onActivate()
{ {
bool isOk = Reader::instance()->activateCard(); // bool isOk = Reader::instance()->activateCard();
if(!isOk) { // if(!isOk) {
FMMsgWnd::FailureWnd("fmv: 激活卡时写卡失败!"); // FMMsgWnd::FailureWnd("fmv: 激活卡时写卡失败!");
return; // return;
} // }
childTask = new TaskCardActive(posReqJsonObj, this->session()); // childTask = new TaskCardActive(posReqJsonObj, this->session());
doChildTask(); // doChildTask();
} }
void TaskManage::doChildTask() void TaskManage::doChildTask()
......
#include "fmviplogin.h" #include "fmviplogin.h"
#include "ui_fmviplogin.h" #include "ui_fmviplogin.h"
#include "fmvippanel.h" #include "fmvippanel.h"
#include <QFile> #include <QFile>
...@@ -15,6 +15,8 @@ FMVipLogin::FMVipLogin(QDialog *parent) : ...@@ -15,6 +15,8 @@ FMVipLogin::FMVipLogin(QDialog *parent) :
ui->setupUi(this); ui->setupUi(this);
connect(this, &FMVipLogin::startreader, Reader::instance(), &Reader::readVipNO); connect(this, &FMVipLogin::startreader, Reader::instance(), &Reader::readVipNO);
connect(Reader::instance(), &Reader::getVipNO, this, &FMVipLogin::readVipNO); connect(Reader::instance(), &Reader::getVipNO, this, &FMVipLogin::readVipNO);
connect(Reader::instance(), &Reader::needActivate, this, &FMVipLogin::onNeedActivate);
connect(Reader::instance(), &Reader::activateFinished, this, &FMVipLogin::onActivateFinished);
emit startreader(); emit startreader();
ui->login_edit->setFocus(); ui->login_edit->setFocus();
qDebug() << "main:" <<QThread::currentThreadId(); qDebug() << "main:" <<QThread::currentThreadId();
...@@ -36,13 +38,15 @@ void FMVipLogin::onstartreader() ...@@ -36,13 +38,15 @@ void FMVipLogin::onstartreader()
emit startreader(); emit startreader();
} }
void FMVipLogin::readVipNO(QString VipNo) void FMVipLogin::readVipNO(QString VipNo, QString uuid)
{ {
ui->login_edit->setText(VipNo); ui->login_edit->setText(VipNo);
QString id = VipNo; QString id = VipNo;
_session->addData(PosProps.Member_sign, id); _session->addData(PosProps.Member_sign, id);
_session->addData(PosProps.Inner_code, uuid);
_session->addData(PosProps.Member_type, Member_Type::EntityCard);
this->setEnabled(false); this->setEnabled(false);
...@@ -51,6 +55,18 @@ void FMVipLogin::readVipNO(QString VipNo) ...@@ -51,6 +55,18 @@ void FMVipLogin::readVipNO(QString VipNo)
emit login(); emit login();
} }
void FMVipLogin::onNeedActivate()
{
activateInfoWnd = new FMMsgWnd(this);
activateInfoWnd->show(FMMsgWnd::T_Warning, tr("fmv:此卡需要激活,请重新刷卡!"));
}
void FMVipLogin::onActivateFinished()
{
activateInfoWnd->close();
delete activateInfoWnd;
}
void FMVipLogin::initWnd(Session *session) void FMVipLogin::initWnd(Session *session)
{ {
this->_session = session; this->_session = session;
...@@ -86,6 +102,21 @@ void FMVipLogin::on_login_btn_clicked() ...@@ -86,6 +102,21 @@ void FMVipLogin::on_login_btn_clicked()
{ {
QString id = ui->login_edit->text(); QString id = ui->login_edit->text();
switch (id.length()) {
case 20:
session()->addData(PosProps.Member_type, Member_Type::PayCode);
break;
case 11:
session()->addData(PosProps.Member_type, Member_Type::Phone);
break;
case 10:
session()->addData(PosProps.Member_type, Member_Type::Account);
break;
default:
session()->addData(PosProps.Member_type, Member_Type::Unknow);
break;
}
_session->addData(PosProps.Member_sign, id); _session->addData(PosProps.Member_sign, id);
this->setEnabled(false); this->setEnabled(false);
......
#ifndef FMVIPLOGIN_H #ifndef FMVIPLOGIN_H
#define FMVIPLOGIN_H #define FMVIPLOGIN_H
#include "fmvipwnd.h" #include "fmvipwnd.h"
#include "fmmsgwnd.h"
class QNetworkReply; class QNetworkReply;
...@@ -30,8 +31,11 @@ signals: ...@@ -30,8 +31,11 @@ signals:
public slots: public slots:
void on_login_btn_clicked(); void on_login_btn_clicked();
void on_edit_change(QString numkey); void on_edit_change(QString numkey);
void readVipNO(QString VipNO); void readVipNO(QString VipNO, QString uuid);
void onstartreader(); void onstartreader();
void onNeedActivate();
void onActivateFinished();
void on_delete_clicked(); void on_delete_clicked();
void on_clear_clicked(); void on_clear_clicked();
void on_confirm_clicked(); void on_confirm_clicked();
...@@ -41,6 +45,7 @@ private slots: ...@@ -41,6 +45,7 @@ private slots:
private: private:
Ui::FMVipLogin *ui; Ui::FMVipLogin *ui;
FMNumPad *numpad; FMNumPad *numpad;
FMMsgWnd *activateInfoWnd;
}; };
#endif // FMVIPLOGIN_H #endif // FMVIPLOGIN_H
#include "fm_mwrf32.h" #include "fm_mwrf32.h"
#include "mwdll/mwrf32.h" #include "mwdll/mwrf32.h"
#include <QCryptographicHash> #include <QCryptographicHash>
#include <QDebug>
bool ConnectDevice(int port, int baud, int sector, const QString password, HANDLE &handle, QString &error) bool ConnectDevice(int port, int baud, int sector, const QString password, HANDLE &handle, QString &error)
{ {
...@@ -15,16 +16,17 @@ bool ConnectDevice(int port, int baud, int sector, const QString password, HANDL ...@@ -15,16 +16,17 @@ bool ConnectDevice(int port, int baud, int sector, const QString password, HANDL
if(st!=0) if(st!=0)
{ {
rf_exit(handle); rf_exit(handle);
error = "load key error"; error = QString("load key error sector %1").arg(sector);
return false; return false;
} }
rf_beep(handle,30); rf_beep(handle,30);
return true; return true;
} }
bool ReadCard(const HANDLE handle, int sector, QString &vipNo, QString &error) bool ReadCard(const HANDLE handle, int sector, QString &vipNo, QString& uuid, QString &error)
{ {
int st; int st;
unsigned char rdata[17];
// 寻卡 // 寻卡
unsigned long snr; //卡片序列号 unsigned long snr; //卡片序列号
st = rf_card(handle, 0, &snr); st = rf_card(handle, 0, &snr);
...@@ -33,6 +35,7 @@ bool ReadCard(const HANDLE handle, int sector, QString &vipNo, QString &error) ...@@ -33,6 +35,7 @@ bool ReadCard(const HANDLE handle, int sector, QString &vipNo, QString &error)
error = "could not find the card"; error = "could not find the card";
return false; return false;
} }
uuid = QString::number(snr);
// 鉴权 // 鉴权
st = rf_authentication(handle, 0, sector); st = rf_authentication(handle, 0, sector);
if(st!=0) if(st!=0)
...@@ -41,18 +44,17 @@ bool ReadCard(const HANDLE handle, int sector, QString &vipNo, QString &error) ...@@ -41,18 +44,17 @@ bool ReadCard(const HANDLE handle, int sector, QString &vipNo, QString &error)
return false; return false;
} }
// 读卡号 // 读卡号
unsigned char rdata[32]; ZeroMemory(rdata,17);
ZeroMemory(rdata,32);
st = rf_read(handle, sector*4, rdata); st = rf_read(handle, sector*4, rdata);
if(st!=0) if(st!=0)
{ {
error = "read data error"; error = "read data error";
return false; return false;
} }
vipNo = QString::fromLatin1((char*)rdata); vipNo = QString(QByteArray((char*)rdata, 16).toHex()).mid(17);
// 读效验数据 // 读效验数据
QString keyData; QString keyData;
ZeroMemory(rdata,32); ZeroMemory(rdata,17);
st = rf_read(handle, sector*4+1, rdata); st = rf_read(handle, sector*4+1, rdata);
if(st!=0) if(st!=0)
{ {
...@@ -66,7 +68,6 @@ bool ReadCard(const HANDLE handle, int sector, QString &vipNo, QString &error) ...@@ -66,7 +68,6 @@ bool ReadCard(const HANDLE handle, int sector, QString &vipNo, QString &error)
error = "check key_data error"; error = "check key_data error";
return false; return false;
} }
rf_beep(handle,30); rf_beep(handle,30);
return true; return true;
} }
...@@ -96,15 +97,15 @@ bool ActivateCard(const HANDLE handle, int sector, const QString newPassword, QS ...@@ -96,15 +97,15 @@ bool ActivateCard(const HANDLE handle, int sector, const QString newPassword, QS
return false; return false;
} }
// 读卡号 // 读卡号
unsigned char rdata[32]; unsigned char rdata[17];
ZeroMemory(rdata,32); ZeroMemory(rdata,17);
st = rf_read(handle, sector*4, rdata); st = rf_read(handle, sector*4, rdata);
if(st!=0) if(st!=0)
{ {
error = "read data error"; error = "read data error";
return false; return false;
} }
vipNo = QString::fromLatin1((char*)rdata); vipNo = QString::fromLatin1(QByteArray((char*)rdata, 16).toHex()).mid(17);
// 写入效验数据 // 写入效验数据
QByteArray keyData = QCryptographicHash::hash(QString("%1%2").arg(vipNo,MD5_KEY).toLatin1(), QCryptographicHash::Md5); QByteArray keyData = QCryptographicHash::hash(QString("%1%2").arg(vipNo,MD5_KEY).toLatin1(), QCryptographicHash::Md5);
st = rf_write(handle, sector*4+1, (unsigned char*)keyData.toHex().mid(8, 16).data()); st = rf_write(handle, sector*4+1, (unsigned char*)keyData.toHex().mid(8, 16).data());
......
...@@ -26,9 +26,9 @@ FM_MWRF32SHARED_EXPORT void DisConnectDevice(const HANDLE handle); ...@@ -26,9 +26,9 @@ FM_MWRF32SHARED_EXPORT void DisConnectDevice(const HANDLE handle);
FM_MWRF32SHARED_EXPORT bool ActivateCard(const HANDLE handle, int sector, const QString newPassword, QString& error); FM_MWRF32SHARED_EXPORT bool ActivateCard(const HANDLE handle, int sector, const QString newPassword, QString& error);
/* 功能:读取会员号 /* 功能:读取会员号
* 参数:[1]设备句柄[2]要读取的扇区号[3_out]会员号[4_out]错误原因 * 参数:[1]设备句柄[2]要读取的扇区号[3_out]会员号[4_out]UUID[5_out]错误原因
* 返回:成功true * 返回:成功true
* */ * */
FM_MWRF32SHARED_EXPORT bool ReadCard(const HANDLE handle, int sector, QString& vipNo, QString& error); FM_MWRF32SHARED_EXPORT bool ReadCard(const HANDLE handle, int sector, QString& vipNo, QString& uuid, QString& error);
#endif // FM_MWRF32_H #endif // FM_MWRF32_H
...@@ -24,9 +24,9 @@ void ActivateWorker::run() ...@@ -24,9 +24,9 @@ void ActivateWorker::run()
{ {
QString error; QString error;
bool result; bool result;
result = ActivateCard(m_handle, 1, "111111111111", error); result = ActivateCard(m_handle, 15, "ffffffffffff", error);
qDebug() << QDateTime::currentDateTime() << result << error; qDebug() << QDateTime::currentDateTime() << result << error;
emit activeted(result, error); emit activeted(result, error);
Sleep(300); Sleep(1000);
} }
} }
...@@ -25,7 +25,7 @@ MainWindow::~MainWindow() ...@@ -25,7 +25,7 @@ MainWindow::~MainWindow()
void MainWindow::on_pbt0_clicked() void MainWindow::on_pbt0_clicked()
{ {
QString error; QString error;
if(ConnectDevice(4, 9600, 1, "111111111111", handle, error)) if(ConnectDevice(0, 9600, 15, "ffffffffffff", handle, error))
{ {
ui->label->setText("连接设备成功!"); ui->label->setText("连接设备成功!");
ui->pbt1->setEnabled(true); ui->pbt1->setEnabled(true);
...@@ -33,6 +33,8 @@ void MainWindow::on_pbt0_clicked() ...@@ -33,6 +33,8 @@ void MainWindow::on_pbt0_clicked()
}else }else
{ {
ui->label->setText("连接设备失败!"); ui->label->setText("连接设备失败!");
qDebug() << error;
} }
} }
...@@ -49,9 +51,10 @@ void MainWindow::on_pbt2_clicked() ...@@ -49,9 +51,10 @@ void MainWindow::on_pbt2_clicked()
{ {
QString error; QString error;
QString vipNo; QString vipNo;
if(ReadCard(handle, 1, vipNo, error)) QString uuid;
if(ReadCard(handle, 15, vipNo, uuid, error))
{ {
ui->label_3->setText(vipNo); ui->label_3->setText(uuid + "###" + vipNo);
}else }else
{ {
ui->label_3->setText(error); ui->label_3->setText(error);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment