diff --git a/CounterVarSet.cpp b/CounterVarSet.cpp index 72ad604..c07f162 100644 --- a/CounterVarSet.cpp +++ b/CounterVarSet.cpp @@ -11,6 +11,10 @@ CounterVarSet::CounterVarSet(QWidget *parent) : { ui->setupUi(this); + if (sysPara == nullptr) { + sysPara = SysPara::ins(); + } + ui->label_35->hide(); ui->spinBoxdecimalpointnum->hide(); ui->pushButtonVAR->hide(); @@ -34,10 +38,6 @@ void CounterVarSet::init() connect(ui->closeBtn, &QPushButton::clicked, this, &CounterVarSet::buttonClickedSlot); } -void CounterVarSet::bindSysPara(SysPara *sysPara){ - this->sysPara = sysPara; -} - void CounterVarSet::bindTxTEdit(QTextEdit* textEdit){ m_textEdit = textEdit; } diff --git a/CounterVarSet.h b/CounterVarSet.h index 98ae1a1..25b8946 100644 --- a/CounterVarSet.h +++ b/CounterVarSet.h @@ -4,14 +4,13 @@ #include #include #include -#include "ParaSettingUI.h" #include "scene/ViewModels.h" namespace Ui { class CounterVarSet; } -class CounterVarSet : public QWidget,public ParaSettingUI +class CounterVarSet : public QWidget { Q_OBJECT @@ -25,8 +24,6 @@ public: void getValue(int *varType,int *digitalWidth,unsigned char *splitMode); void on_buttonInsertVari_pressed(); - void bindSysPara(SysPara *sysPara); - void bindTxTEdit(QTextEdit* textEdit); QString getFamilyName(int); @@ -69,6 +66,7 @@ private slots: private: Ui::CounterVarSet *ui; + SysPara* sysPara = nullptr; QTextEdit* m_textEdit; QTextCharFormat fmt; diff --git a/DateVarSet.cpp b/DateVarSet.cpp index f78cbed..b9a52ae 100644 --- a/DateVarSet.cpp +++ b/DateVarSet.cpp @@ -14,6 +14,10 @@ DateVarSet::DateVarSet(QWidget *parent) : { ui->setupUi(this); + if (sysPara == nullptr) { + sysPara = SysPara::ins(); + } + digitWidth = 4; varTypeSet = 0; @@ -128,11 +132,6 @@ void DateVarSet::initReplaceValue(){ } - -void DateVarSet::bindSysPara(SysPara *sysPara){ - this->sysPara = sysPara; -} - void DateVarSet::buttonClickedSlot() { QPushButton* btn = qobject_cast(sender()); diff --git a/DateVarSet.h b/DateVarSet.h index 703cb8a..22c3779 100644 --- a/DateVarSet.h +++ b/DateVarSet.h @@ -2,7 +2,6 @@ #define DATEVARSET_H #include -#include "ParaSettingUI.h" #include #include #include @@ -15,7 +14,7 @@ namespace Ui { class DateVarSet; } -class DateVarSet : public QWidget,public ParaSettingUI +class DateVarSet : public QWidget { Q_OBJECT @@ -33,6 +32,12 @@ public: void bindSysPara(SysPara *sysPara); +void bindTxTEdit(QTextEdit* textEdit); + + void on_buttonInsertVari_pressed(); + + void edit(PicDateItem* item); + DateItemModel dateModel(); void setDateModel(const DateItemModel& model); @@ -105,6 +110,7 @@ signals: void backSpaceBtn(); private: Ui::DateVarSet *ui; + SysPara* sysPara = nullptr; ItemGeneralSettings* m_generalSettings = nullptr; diff --git a/DevOp.cpp b/DevOp.cpp index 3aabac4..15a02b9 100644 --- a/DevOp.cpp +++ b/DevOp.cpp @@ -1918,11 +1918,6 @@ DevOp::DevOp(SysPara * sysPara) } color_flag = 0;//检测齿轮泵转速超过1900就提示,有的机器使用小泵,转速已经超过2000,与该功能冲突,不使用 -#endif -#ifdef __RFID_CARD - comForRFID_init(); - checkCardIntervalTime = 0; - setICReaderModeFlag = false; #endif releaseValveOpenFlag = false; mixValveFlag = false; @@ -3558,742 +3553,6 @@ void DevOp::RandTxtBakup(char ok) // ok 0:不一定备份,1直接备份 } } -#ifdef __RFID_CARD -typedef unsigned char UCHAR; - -void CheckSumOut(UCHAR *buf, UCHAR len) -{ - UCHAR i; - UCHAR checksum; - checksum = 0; - for (i = 0; i < (len - 1); i++) - { - checksum ^= buf[i]; - } - buf[len - 1] = (UCHAR)~checksum; -} - -bool CheckSumIn(UCHAR *buf, UCHAR len) -{ - UCHAR i; - UCHAR checksum; - checksum = 0; - for (i = 0; i < (len - 1); i++) - { - checksum ^= buf[i]; - } - if (buf[len - 1] == (UCHAR)~checksum) - { - return true; - } - return false; -} - -//字节流转换为十六进制字符串的另一种实现方式 -void Hex2Str(const UCHAR *sSrc, UCHAR *sDest, int nSrcLen) -{ - int i; - char szTmp[3]; - - for (i = 0; i < nSrcLen; i++) - { - sprintf(szTmp, "%02X", (unsigned char)sSrc[i]); - memcpy(&sDest[i * 2], szTmp, 2); - } - sDest[nSrcLen * 2] = '\0'; - return; -} -//十六进制字符串转换为字节流 -void HexStrToByte(const UCHAR* source, UCHAR* dest, int sourceLen) -{ - short i; - unsigned char highByte, lowByte; - - for (i = 0; i < sourceLen; i += 2) - { - highByte = toupper(source[i]); - lowByte = toupper(source[i + 1]); - - if (highByte > 0x39) - highByte -= 0x37; - else - highByte -= 0x30; - - if (lowByte > 0x39) - lowByte -= 0x37; - else - lowByte -= 0x30; - - dest[i / 2] = (highByte << 4) | lowByte; - } - return; -} - -void DevOp::comForRFID_init(void) -{ -// return; - comForRFID = new QSerialPort(); - - - comForRFID->setPortName("/dev/ttyAS1"); - - // 覆盖默认串口名称,用于x86架构调试 -#ifdef ARCH_X86 - comForRFID->setPortName("/dev/ttyUSB0"); -#endif - - LogInfo::setRunStatusText("RFID port dev name: " + comForRFID->portName()); - comForRFID->setBaudRate(9600); - comForRFID->setDataBits(QSerialPort::Data8); - comForRFID->setParity(QSerialPort::NoParity); - comForRFID->setStopBits(QSerialPort::OneStop); - comForRFID->setFlowControl(QSerialPort::NoFlowControl); - if (comForRFID->open(QIODevice::ReadWrite)) { - qInfo() << "RFID串口打开成功"; - connect(comForRFID,SIGNAL(readyRead()),this,SLOT(readRFIDData())); - LogInfo::setRunStatusText("Successed to open RFID port"); - } else { - qDebug() << "RFID串口打开失败: " << comForRFID->errorString(); - LogInfo::setRunStatusText("Failed to open RFID port"); - } - -} - -void DevOp::readRFIDData(){ - RFIDReadData.append(comForRFID->readAll()); -} - -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] = {0}; - Cmd[1] = 0x08; - Cmd[2] = 0xA3; - Cmd[4] = 0x06; //读块6 - CheckSumOut(Cmd, Cmd[1]); - QByteArray temp; - QByteArray recResponse; - temp.append((const char*)Cmd,Cmd[1]); - if(comForRFID->isOpen()) - { - LogInfo::setRunStatusText(tr("readB6Req")); - comForRFID->clear(QSerialPort::Input); - comForRFID->write(temp); - } - else - { - qDebug()<<"read uart for RFID not open!"; - } - MySleep(200); - int n = RFIDReadData.size(); - if(n>0) - { - recResponse = RFIDReadData; - RFIDReadData.clear(); - LogInfo::setRunStatusText(tr("readB6com")); - } - 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]); //计算校验和 - if (status) - { - if (revdata[4] == 0x00) //读数据块成功 - { - UCHAR blockdata[16]; - UCHAR temp[33]; - for (int i = 0; i < 16; i++) - { - blockdata[i] = revdata[5 + i]; //复制数据到数组 - } - Hex2Str(&blockdata[0], &temp[0], 16); // 数据块数据转换为字符 - //CardDataRwLock.lockForWrite(); - strRevdata = QString((const char*)temp); - // CardDataRwLock.unlock(); -// qDebug() << "读数据块成功,数据块6" << "数据为:" << temp << endl << endl; - return 1; - } - } - } - return 0; -} - -/* -int DevOp::comWriteRFID_data(int type) -{ - 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]; - Cmd[1] = 0x17; - Cmd[2] = 0x5B; - if(type == 1) - Cmd[4] = 0x06; //块6 - else if(type == 2) - Cmd[4] = 0x0A; //块10 - - //save current date and time - QDateTime curDateTime = QDateTime::currentDateTime(); - QString str = curDateTime.toString("yy:MM:dd:hh:mm:ss"); - QList list = str.split(":"); - for(int i = 0;i < list.size();i++){ - Cmd[i+6] = list.at(i).toInt(); - LogInfo::setRunStatusText(tr("Cmd[%1]: %2").arg(i+6).arg(Cmd[i+6])); - qDebug()<<"Cmd["<isOpen()) - { - comForRFID->clear(QSerialPort::Input); - comForRFID->write(temp); - } - else - { - qDebug()<<"read uart for RFID not open!"; - } - MySleep(200); - int n = RFIDReadData.size(); - if(n>0) - { - recResponse = RFIDReadData; - RFIDReadData.clear(); - QString str; - str.sprintf("%d - %d - %d", recResponse.at(0),recResponse.at(1),recResponse.at(2)); - qDebug()<<"写数据到数据块6: "< list = str.split(":"); - for(int i = 0;i < list.size();i++){ - Cmd[i+6] = list.at(i).toInt(); - LogInfo::setRunStatusText(tr("Cmd[%1]: %2").arg(i+6).arg(Cmd[i+6])); - qDebug()<<"Cmd["<isOpen()) - { - comForRFID->clear(QSerialPort::Input); - comForRFID->clear(QSerialPort::Output); - comForRFID->disconnect(this); - comForRFID->write(temp); - } - else - { - qDebug()<<"read uart for RFID not open!"; - } - - QElapsedTimer elapsedTimer; - elapsedTimer.start(); - while(comForRFID->bytesAvailable() < 8 && !elapsedTimer.hasExpired(2000)) { - QApplication::processEvents(QEventLoop::AllEvents, 100); - } - - int n = comForRFID->bytesAvailable(); - qDebug() << "RFIDReader response time: " << elapsedTimer.elapsed() << "ms"; - - connect(comForRFID, &QSerialPort::readyRead, this, &DevOp::readRFIDData); - - if(n < 8) { - qDebug() << "读取数据失败, 数据长度不足8字节" << endl << endl; - return 0; - } - - n = 8; - recResponse = comForRFID->read(n); - 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) - { - if (revdata[4] == 0x00) //写数据块成功 - { - qDebug() << "写数据到数据块6" << "成功!" << endl << endl; - return 1; - } - else //写数据块失败 - { - qDebug() << "写数据到数据块6" << "失败!" << endl << endl; - } - } - } - else - { - qDebug() << "写数据到数据块6" << "失败2!" << endl << endl; - } - return 0; -} - - -int DevOp::setRFIDCarKey(void) -{ - UCHAR revdata[100] = {0}; - UCHAR Cmd[8] ; - Cmd[0] = 0x01; //命令格式请核对协议手册充值章节 - Cmd[1] = 0x08; - Cmd[2] = 0xA5; //加密扇区 - Cmd[3] = 0x20; - Cmd[4] = 0x07; //块7 - Cmd[5] = 0x01; - Cmd[6] = 0x00; - Cmd[7] = 0x00; - - CheckSumOut(Cmd, Cmd[1]); - QByteArray temp; - QByteArray recResponse; - temp.append((const char*)Cmd,Cmd[1]); - if(comForRFID->isOpen()) - { - comForRFID->clear(QSerialPort::Input); - comForRFID->write(temp); - } - else - { - qDebug()<<"read uart for RFID not open!"; - } - MySleep(200); - int n = RFIDReadData.size(); - if(n>2) - { - recResponse = RFIDReadData; - RFIDReadData.clear(); - QString str; - str.sprintf("%d - %d - %d", recResponse.at(0),recResponse.at(1),recResponse.at(2)); - qDebug()<<"加密IC卡: "< (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]); //计算校验和 - if (status) - { - if (revdata[4] == 0x00) //成功 - { - qDebug() << "加密IC卡成功!" << endl << endl; - } - else - { - qDebug() << "加密IC卡失败!" << endl << endl; - } - } - } - else - { - qDebug() << "加密IC卡失败2!" << endl << endl; - } -} - -int DevOp::setRFIDReaderKey(int mac,int type) -{ - if(mac == 0) mac = 100; - QString strMac1 = QString::number(mac).mid(0,3); - strMac1 = "Vernon" + strMac1 + "Bach"; - strMac1 = strMac1.leftJustified(16,'6'); - QString strMac2 =QString::number(mac).mid(0,3); - strMac2 = "VernonBach" + strMac2; - strMac2 = strMac2.leftJustified(16,'6'); - - QByteArray password = ""; - if(type == 1) - password = RFIDFunction::createPassword((const QByteArray)strMac1.toUtf8()); - else if(type == 2) - password = RFIDFunction::createPassword((const QByteArray)strMac2.toUtf8()); - const QByteArray pw = password.mid(12,12); - - UCHAR revdata[100]; - UCHAR Cmd[21] ; - Cmd[0] = 0x03; //命令格式请核对协议手册充值章节 - Cmd[1] = 0x15; - Cmd[2] = 0xC3; //设置密钥 - Cmd[3] = 0x20; - Cmd[4] = 0x99; - Cmd[5] = 0x88; - Cmd[6] = 0x77; - Cmd[7] = 0x66; - Cmd[8] = 0x55; - Cmd[9] = 0x44; - Cmd[10] = 0xFF; - Cmd[11] = 0x07; - Cmd[12] = 0x80; - Cmd[13] = 0x69; - Cmd[14] = 0xAA; - Cmd[15] = 0xBB; - Cmd[16] = 0xCC; - Cmd[17] = 0xDD; - Cmd[18] = 0xEE; - Cmd[19] = 0xFF; - Cmd[20] = 0x1B; - -#ifndef __RFID_OLD - bool ok; - for(int i = 0;i<6;i++){ - int pwInt = Cmd[i+14] = pw.mid(i*2,2).toInt(&ok,16); - if (!ok) { - qDebug() << "Error: Invalid hex value: "<isOpen()) - { - comForRFID->clear(QSerialPort::Input); - comForRFID->clear(QSerialPort::Output); - comForRFID->disconnect(this); - comForRFID->write(temp); - } - else - { - qDebug()<<"read uart for RFID not open!"; - return -2; - } - QElapsedTimer elapsedTimer; - elapsedTimer.start(); - while(comForRFID->bytesAvailable() < 8 && !elapsedTimer.hasExpired(20000)) { - QApplication::processEvents(QEventLoop::AllEvents, 100); - } - - int n = comForRFID->bytesAvailable(); - qDebug() << "RFIDReader response time: " << elapsedTimer.elapsed() << "ms"; - - connect(comForRFID, &QSerialPort::readyRead, this, &DevOp::readRFIDData); - - if(n < 8) { - LogInfo::setRunStatusText(u8"读取数据失败, 数据长度不足8字节"); - return -3; - } - - n = 8; - recResponse = comForRFID->read(n); - 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]); //计算校验和 - if (status) - { - if (revdata[4] == 0x00) //成功 - { - qDebug() << "设置读写器密码成功!" << endl << endl; - LogInfo::setRunStatusText(tr("设置读写器密码成功!")); - return 0; - } - else - { - qDebug() << "设置读写器密码失败!" << endl << endl; - } - } - } - else - { - qDebug() << "设置读写器密码失败!" << endl << endl; - } - - return -4; -} - -int DevOp::setRFIDReaderOriginalKey(void) -{ - UCHAR revdata[100] = {0}; - UCHAR Cmd[11] ; - Cmd[0] = 0x03; //命令格式请核对协议手册充值章节 - Cmd[1] = 0x0B; - Cmd[2] = 0xC4; //设置密钥 - Cmd[3] = 0x20; - Cmd[4] = 0xFF; - Cmd[5] = 0xFF; - Cmd[6] = 0xFF; - Cmd[7] = 0xFF; - Cmd[8] = 0xFF; - Cmd[9] = 0xFF; - Cmd[10] = 0x00; - - CheckSumOut(Cmd, Cmd[1]); - QByteArray temp; - QByteArray recResponse; - temp.append((const char*)Cmd,Cmd[1]); - if(comForRFID->isOpen()) - { - comForRFID->clear(QSerialPort::Input); - comForRFID->write(temp); - } - else - { - qDebug()<<"read uart for RFID not open!"; - } - MySleep(200); - int n = RFIDReadData.size(); - if(n>2) - { - recResponse = RFIDReadData; - RFIDReadData.clear(); - QString str; - str.sprintf("%d - %d - %d", recResponse.at(0),recResponse.at(1),recResponse.at(2)); - qDebug()<<"设置读写器原始密码: "< (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]); //计算校验和 - if (status) - { - if (revdata[4] == 0x00) //成功 - { - qDebug() << "设置读写器原始密码成功!" << endl << endl; - } - else - { - qDebug() << "设置读写器原始密码失败!" << endl << endl; - } - } - } - else - { - qDebug() << "设置读写器原始密码失败!" << endl << endl; - } -} - -int DevOp::setRFIDReaderWorkMode(void) -{ - UCHAR revdata[100] = {0}; - UCHAR Cmd[8] ; - Cmd[0] = 0x03; //命令格式请核对协议手册充值章节 - Cmd[1] = 0x08; // 包长度 - Cmd[2] = 0xC1; //设置工作模式 - Cmd[3] = 0x20; // 地址,固定0x20 - Cmd[4] = 0x03; // 自动读块数据 - Cmd[5] = 0x06; //读块6 - Cmd[6] = 0x00; //主动发送数据 - Cmd[7] = 0x00; - - CheckSumOut(Cmd, Cmd[1]); - QByteArray temp; - QByteArray recResponse; - temp.append((const char*)Cmd,Cmd[1]); - if(comForRFID->isOpen()) - { - comForRFID->clear(QSerialPort::Input); - comForRFID->clear(QSerialPort::Output); - comForRFID->disconnect(this); - comForRFID->write(temp); - } - else - { - qDebug()<<"read uart for RFID not open!"; - return -1; - } - - QElapsedTimer elapsedTimer; - elapsedTimer.start(); - while(comForRFID->bytesAvailable() < 8 && !elapsedTimer.hasExpired(20000)) { - QApplication::processEvents(QEventLoop::AllEvents, 100); - } - - int n = comForRFID->bytesAvailable(); - qDebug() << "RFIDReader response time: " << elapsedTimer.elapsed() << "ms"; - - connect(comForRFID, &QSerialPort::readyRead, this, &DevOp::readRFIDData); - - if(n < 8) { - LogInfo::setRunStatusText(u8"读取数据失败, 数据长度不足8字节"); - return -2; - } - - n = 8; - recResponse = comForRFID->read(n); - 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]); //计算校验和 - if (status) - { - if (revdata[4] == 0x00) //成功 - { - qDebug() << "设置读写器工作模式成功!" << endl << endl; - LogInfo::setRunStatusText(tr("设置读写器工作模式成功!")); - return 0; - } - 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!"); - } - - return -3; -} - -int DevOp::receiveReadRFID_data(void) -{ - UCHAR revdata[100] = {0}; - QByteArray recResponse; - int n = RFIDReadData.size(); - if(n>0) - { - recResponse = RFIDReadData; - RFIDReadData.clear(); - showData(recResponse); - } - else - return 0; - - - 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] = {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; - return 1; - } - else - { - return 0; - } - } - } - return 0; -} - -int DevOp::queryReadRFID_address(void) -{ - UCHAR Cmd[8] ; - Cmd[0] = 0x02; //命令格式请核对协议手册充值章节 - Cmd[1] = 0x08; - Cmd[2] = 0xB0; //查询读写器地址 - Cmd[3] = 0x00; - Cmd[4] = 0x00; - Cmd[5] = 0x00; - Cmd[6] = 0x00; - Cmd[7] = 0x00; - CheckSumOut(Cmd, Cmd[1]); - QByteArray temp; - temp.append((const char*)Cmd,Cmd[1]); - if(comForRFID->isOpen()) - { - comForRFID->clear(QSerialPort::Input); - RFIDReadData.clear(); - comForRFID->write(temp); - } - else - { - qDebug()<<"read uart for RFID not open!"; - } - MySleep(100); - int n = RFIDReadData.size(); - UCHAR revdata[100] = {0}; - if(n > (int)sizeof(revdata)) n = sizeof(revdata); - memcpy(revdata, RFIDReadData.constData(), n); - if(n>4) - { - showData(RFIDReadData); - if(CheckSumIn(revdata, revdata[1]) == false){ - RFIDReadData.clear(); - return 0; - } - if(revdata[0] == 0x02 && revdata[1] == 0x08 && revdata[2] == 0xB0 && revdata[4] == 0x00){ - RFIDReadData.clear(); - return 1; - } - } - else - { - return 2; - } -} -#endif void DevOp::writeDacValue2Fpga_No72NewVoltData(){ // LogInfo::setRunStatusText("writeDacValue2Fpga_No72NewVoltData"); @@ -4312,8 +3571,6 @@ void DevOp::writeDacValue2Fpga_No72NewVoltData(){ } - - unsigned char dataofHighVoltageAmplitude[1]; void DevOp::setHighVoltageAmplitudetoSTM32(){ dataofHighVoltageAmplitude[0]=sysPara->para.HighVoltageAmplitude; diff --git a/DevOp.h b/DevOp.h index 13f9da0..68c34cc 100644 --- a/DevOp.h +++ b/DevOp.h @@ -218,29 +218,6 @@ public : bool stopSendDataFPGA; bool stopSendDataSTM32; -#ifdef __RFID_CARD - QSerialPort *comForRFID; - void comForRFID_init(); - int comReadRFID_data(); -// int comWriteRFID_data(int type); - - /** - * @brief 向卡片写入当前日期时间,标识该卡片已被使用 - */ - int RFIDmarkCardUsedAsync(int type = 0); - int setRFIDCarKey(void); - int setRFIDReaderKey(int,int); - int setRFIDReaderOriginalKey(void); - int setRFIDReaderWorkMode(void); - int receiveReadRFID_data(void); - int queryReadRFID_address(void); - QString strRevdata; - QByteArray RFIDReadData; - bool noticeICReaderError; - bool setICReaderModeFlag; - uint checkCardIntervalTime; - QReadWriteLock CardDataRwLock; -#endif void Read_RanddomFromFpga(); // 读FPGARANDFIFO void RandTxtBakup(char ok); void showData(QByteArray dat); @@ -249,28 +226,20 @@ public : public slots: - // unused void resendFPGADate(int,int,unsigned char *,int,int); - // unused void resendSTM32Date(int,int,unsigned char *,int,int); -#ifdef __RFID_CARD - void readRFIDData(); -#endif signals: - // unused void dataReceived(char,const QByteArray &dataReceived,int); /***cmd:1--读 2--写*********************************************/ /***addr:地址***************************************************/ /***dat:数据指针*************************************************/ /***len:数据长度*************************************************/ /***dat:1--FPGA 2--STM32***************************************/ - // unused void sendSerialDataToSTM32(int cmd,int addr,unsigned char *dat,int len,int type); - // unused void sendSerialDataToFPGA(int cmd,int addr,unsigned char *dat,int len,int type); diff --git a/DigitalInput.cpp b/DigitalInput.cpp index bf89b8a..35e8def 100644 --- a/DigitalInput.cpp +++ b/DigitalInput.cpp @@ -59,7 +59,6 @@ void DigitalInput::onKeyBackspacePressed(){ } void DigitalInput::onKeySelectAllPressed(){ - //static int init = 0; #ifndef Q_OS_WIN32 //QWSServer::sendKeyEvent(0,Qt::Key_A,Qt::ControlModifier,true,false); //锟斤拷系统锟斤拷锟酵硷拷锟斤拷锟铰硷拷 //if(!init) @@ -116,4 +115,4 @@ void DigitalInput::showEvent(QShowEvent *event) ui->traceEdit->setText(box->text()); connect(box, QOverload::of(&QSpinBox::valueChanged), ui->traceEdit, &QLineEdit::setText); qDebug() << "The traceEdit has connected to the QSpinBox: " << box->objectName(); -} \ No newline at end of file +} diff --git a/InkJetPrinter.cpp b/InkJetPrinter.cpp index 64abd2b..4292e1b 100644 --- a/InkJetPrinter.cpp +++ b/InkJetPrinter.cpp @@ -19,16 +19,22 @@ static unsigned int PulseCnt = 0; //时间间隔内的脉冲累计数 InkJetPrinter::InkJetPrinter(QWidget* parent) : QWidget(parent) { + if (sysPara == nullptr) { + sysPara = SysPara::ins(); + } // 加载.ui文件生成的UI界面 ui.setupUi(this); // 关联原有成员变量到UI控件(保持变量名和原代码一致) m_LabelTimer = ui.m_LabelTimer; m_StackedWidget = ui.m_StackedWidget; - + // 初始化业务逻辑(仅保留原init中的非UI创建部分) init(); initRunTimeCtrl(); +#ifdef __RFID_CARD + initRFIDManager(); +#endif QThread::sleep(3); qApp->installEventFilter(this); @@ -91,10 +97,6 @@ void InkJetPrinter::init() viscosity_timer = new QTimer(); connect(viscosity_timer, SIGNAL(timeout()), this, SLOT(viscosity_timerHandler())); - jd_timer = new QTimer(); - connect(jd_timer, SIGNAL(timeout()), this, SLOT(jd_timerHandler())); - jd_timer->start(500); - msgtest = new QMessageBox(this); msgtest->setWindowTitle(tr("提示")); connect(msgtest, SIGNAL(finished(int)), this, SLOT(OnFinished(int))); @@ -154,23 +156,6 @@ void InkJetPrinter::init() m_LogInfo->checkState(); }); - SysPara *para = new SysPara(); - bindSysPara(para); - m_MainWidget->bindSysPara(para); - m_FontSetWidget->bindSysPara(para); - m_PrintSetting->bindSysPara(para); - m_SystemManage->bindSysPara(para); - m_SystemUpdate->bindSysPara(para); - m_SystemSetting->bindSysPara(para); - m_OtherInfo->bindSysPara(para); - m_TestPrintWidget->bindSysPara(para); - m_DateVarSet->bindSysPara(para); - m_CounterVarSet->bindSysPara(para); - m_MainInstruction->bindSysPara(para); - m_BarCodeDlg->bindSysPara(para); - m_QRCodeDlg->bindSysPara(para); - m_LogInfo->bindSysPara(para); - if(sysPara->para.gearPumpEnable) pushButtonStartFlag = true; @@ -254,7 +239,6 @@ void InkJetPrinter::init() /*系统更新*/ connect(m_MainInstruction,&MainInstruction::sendButtonClickedSignal,this,&InkJetPrinter::getMainInstructWidgetButtonClickedSlot); - connect(this,SIGNAL(maintenanceShow()),m_MainInstruction,SLOT(maintenanceDialogShow())); /*系统更新的信号和槽*/ connect(m_SystemUpdate,&SystemUpdate::sendProgramSTM32Signal,m_SystemManage,&SystemManage::on_pushButtonProgamSTM32_clicked); connect(m_SystemUpdate,&SystemUpdate::sendProgramFPGASignal,m_SystemManage,&SystemManage::on_pushButtonProgamFPGA_clicked); @@ -283,40 +267,6 @@ void InkJetPrinter::init() sysPara->para.rfidCountDown = 5; } -void InkJetPrinter::jd_timerHandler(void) -{ - static int count_time = 0; - - count_time++; - if(count_time>= 20){ //each 10s - count_time = 0; -// jd_res = ui->tabPrintSetting->dlgInputAddr->isEnabled(); - -#ifdef __RFID_CARD - static int faultyNum = 0; - static uint noticeICReaderErrorTime = QDateTime::currentDateTime().toTime_t(); - if((QDateTime::currentDateTime().toTime_t() - noticeICReaderErrorTime > 7200 - || QDateTime::currentDateTime().toTime_t() == noticeICReaderErrorTime) - || (faultyNum > 0 && faultyNum < 10)) - { - noticeICReaderErrorTime = QDateTime::currentDateTime().toTime_t(); - if(sysPara->devOp->queryReadRFID_address() == 2) - { - faultyNum++; - if(faultyNum >= 10){ - msgtest->setText(tr("13.读卡器故障!")); - msgtest->show(); - LogInfo::setRunStatusText(tr("13.读卡器故障!")); - qDebug()<<"读卡器故障"; - } - } - else - faultyNum = 0; - } -#endif - } -} - // type 1,2: 分别显示计数器1或2的界面 void InkJetPrinter::slt_editCounter(CounterViewModel vm) { @@ -359,7 +309,6 @@ void InkJetPrinter::enableInkJetTabClick(bool flag){ void InkJetPrinter::close_jd_timer() { - jd_timer->stop(); timer->stop(); } @@ -977,162 +926,20 @@ void InkJetPrinter::timerHandler(void){ /*----------------------------------界面更新状态---------------------------------------*/ #ifdef __RFID_CARD static bool flag6 = true; + unsigned int addr = m_MainInstruction->dlgInputAddr->jd.addr; if(pulse_10s && flag6){ //初始化刷卡模块 qDebug()<<"初始化刷卡模块"; + LogInfo::setRunStatusText(QString("jd.addr:%1").arg(addr)); flag6 = false; - sysPara->devOp->setICReaderModeFlag = true; - - // 使用RFID读写器软件设置,而不是这里 - sysPara->devOp->setRFIDReaderWorkMode(); - qDebug()<<"jd.addr: "<dlgInputAddr->jd.addr; - LogInfo::setRunStatusText(QString("jd.addr:%1").arg(m_MainInstruction->dlgInputAddr->jd.addr)); - - // 使用RFID读写器软件设置,而不是这里 - sysPara->devOp->setRFIDReaderKey(m_MainInstruction->dlgInputAddr->jd.addr,1); - sysPara->devOp->setICReaderModeFlag = false; + if (manager_rfid) + manager_rfid->initRFIDMoudle(addr); } + if(pulse_300ms){ - if(!sysPara->devOp->setICReaderModeFlag) - { - sysPara->devOp->strRevdata =""; - sysPara->devOp->receiveReadRFID_data(); - if(sysPara->devOp->strRevdata.length() > 3) - { - if((sysPara->devOp->strRevdata.left(3) == QString::number(m_MainInstruction->dlgInputAddr->jd.addr).left(3))\ - || sysPara->devOp->strRevdata.left(3) == "100") - { - if(sysPara->devOp->strRevdata.at(3) == 'A') { - if(!sysPara->RFIDPara.needInkCard && false){ - msgtest->setText(tr("不需要刷墨水卡!")); - msgtest->show(); - LogInfo::setRunStatusText(tr("不需要刷墨水卡!")); - qDebug()<<"不需要刷墨水卡"; - } - else if(sysPara->status.statWarn & WARN_STATUS_INK_WARN && false){ - msgtest->setText(tr("请先添加墨水再刷墨水卡!")); - msgtest->show(); - LogInfo::setRunStatusText(tr("请先添加墨水再刷墨水卡!")); - qDebug()<<"请先添加墨水再刷墨水卡"; - } - else - { - auto ok = cardTouchConfirm(tr("确认要刷墨水卡吗?"), tr("确认要刷墨水卡吗? %1 秒后将自动确认")); - if (!ok){ - LogInfo::setRunStatusText("The user has canceled the operation about marking the ink card."); - qDebug() << "The user has canceled the operation about marking the ink card."; - } - else if(sysPara->devOp->RFIDmarkCardUsedAsync(0) == 1){ - sysPara->RFIDPara.needInkCard = false; - sysPara->RFIDPara.inkCardTimeOut = false; - sysPara->saveRFIDPara(); - msgtest->setText(tr("刷墨水卡成功!")); - msgtest->show(); - m_MainWidget->setRunStatus(tr("刷墨水卡成功!")); - LogInfo::setRunStatusText(tr("刷墨水卡成功!")); - qDebug()<<"刷墨水卡成功"; - sysPara->para.flagOfInkWarning = false; - sysPara->para.inkWarnDate = 0; - sysPara->para.inkWarnTime = 0; - sysPara->saveParaToFile(); - } - } - } - else if(sysPara->devOp->strRevdata.at(3) == 'B') - { - - if(!sysPara->RFIDPara.needSolventCard && false){ - msgtest->setText(tr("不需要刷溶剂卡!")); - msgtest->show(); - LogInfo::setRunStatusText(tr("不需要刷溶剂卡!")); - qDebug()<<"不需要刷溶剂卡"; - } - else if(sysPara->status.statWarn & WARN_STATUS_SOLV_WARN && false){ - msgtest->setText(tr("请先添加溶剂再刷溶剂卡!")); - msgtest->show(); - LogInfo::setRunStatusText(tr("请先添加溶剂再刷溶剂卡!")); - qDebug()<<"请先添加溶剂再刷溶剂卡"; - } - else - { - auto ok = cardTouchConfirm(tr("确认要刷溶剂卡吗?"), tr("确认要刷溶剂卡吗? %1 秒后将自动确认")); - if (!ok){ - LogInfo::setRunStatusText("The user has canceled the operation about marking the solvent card."); - qDebug() << "The user has canceled the operation about marking the solvent card."; - } - else if(sysPara->devOp->RFIDmarkCardUsedAsync(1) == 1) { - sysPara->RFIDPara.needSolventCard = false; - sysPara->RFIDPara.solventCardTimeOut = false; - sysPara->saveRFIDPara(); - msgtest->setText(tr("刷溶剂卡成功!")); - msgtest->show(); - m_MainWidget->setRunStatus(tr("刷溶剂卡成功!")); - LogInfo::setRunStatusText(tr("刷溶剂卡成功!")); - qDebug()<<"刷溶剂卡成功"; - sysPara->para.flagOfSolventWarning = false; - sysPara->para.solventWarnDate = 0; - sysPara->para.solventWarnTime = 0; - sysPara->saveParaToFile(); - } - } - - } - else if(sysPara->devOp->strRevdata.at(3) == 'C') - { - auto ok = cardTouchConfirm(tr("确认要刷保养卡吗?"), tr("确认要刷保养卡吗? %1 秒后将自动确认")); - if (ok){ - auto r = sysPara->devOp->RFIDmarkCardUsedAsync(2); - if(r == 1) {//把卡数据清零 - - emit maintenanceShow(); - - sysPara->RFIDPara.needMaintenance = false; - sysPara->status.needMaintenanceRemind = false; - - QDate curDate = QDate::currentDate(); - sysPara->RFIDPara.maintenanceDate = curDate.toString("yyMMdd").toInt(); - QDate mtEndDate = curDate.addMonths(sysPara->RFIDPara.maintenanceInterval); - sysPara->RFIDPara.maintenanceEndDate = mtEndDate.toString("yyMMdd").toInt(); - sysPara->RFIDPara.runTime = 0; - ctrl_runTime->updatePara(&sysPara->RFIDPara); - sysPara->saveRFIDPara(); - m_MainWidget->setRunStatus(tr("刷保养卡成功!")); - LogInfo::setRunStatusText(tr("刷保养卡成功!")); - qDebug()<<"刷保养卡成功"; - } - else { - LogInfo::setRunStatusText("Failed to mark maintenance card!"); - qDebug() << "Failed to mark maintenance card!"; - } - } - else { - qDebug() << "用户取消了刷卡"; - } - } - else - { - msgtest->setText(tr("MAC无效卡!")); - msgtest->show(); - LogInfo::setRunStatusText(tr("MAC无效卡!")); - } - } - else - { -// LogInfo::setRunStatusText(tr("card data: %1").arg(sysPara->devOp->strRevdata)); - QString str1 = QString::number(sysPara->devOp->strRevdata.mid(0,2).toInt(0,16)).rightJustified(2,'0'); - QString str2 =QString::number(sysPara->devOp->strRevdata.mid(2,2).toInt(0,16)).rightJustified(2,'0'); - QString str3 = QString::number(sysPara->devOp->strRevdata.mid(4,2).toInt(0,16)).rightJustified(2,'0'); - QString str4 = QString::number(sysPara->devOp->strRevdata.mid(6,2).toInt(0,16)).rightJustified(2,'0'); - QString str5 = QString::number(sysPara->devOp->strRevdata.mid(8,2).toInt(0,16)).rightJustified(2,'0'); - QString str6 =QString::number( sysPara->devOp->strRevdata.mid(10,2).toInt(0,16)).rightJustified(2,'0'); - QString strDateTime = str1 + "-" + str2 + "-" + str3 + " " + str4 + ":" + str5 + ":" + str6; - QString strShow = tr("无效卡,这张卡已经在%1时使用过").arg(strDateTime); - msgtest->setText(strShow); - msgtest->show(); - LogInfo::setRunStatusText(strShow); - } - } - } + if (manager_rfid) + manager_rfid->handleCheck(addr); } + #endif if(pulse_300ms){ sysPara->devOp->readCalandarDat(); //务必读一下此数据 @@ -2793,8 +2600,29 @@ void InkJetPrinter::initRunTimeCtrl() curPowerOnDateTime = QDateTime::currentDateTime(); if (sysPara) ctrl_runTime->loadConfig(&sysPara->RFIDPara); - ctrl_runTime->start(); #endif + } } + +#ifdef __RFID_CARD +void InkJetPrinter::initRFIDManager() +{ + if (manager_rfid == nullptr) { + manager_rfid = RFIDManager::instance(); + connect(manager_rfid, &RFIDManager::sig_showMsg, + this, &InkJetPrinter::slt_showMsg); + connect(manager_rfid,SIGNAL(sig_maintenanceShow()), + m_MainInstruction,SLOT(maintenanceDialogShow())); + + } +} +#endif + +void InkJetPrinter::slt_showMsg(QString msg) +{ + msgtest->setText(msg); + msgtest->show(); + LogInfo::setRunStatusText(msg); +} diff --git a/InkJetPrinter.h b/InkJetPrinter.h index 59285de..73e5845 100644 --- a/InkJetPrinter.h +++ b/InkJetPrinter.h @@ -33,9 +33,10 @@ #include "QBarCode.h" #include "dlgQrCode.h" +#include "rfid/RFIDManager.h" #include "runtimectrl.h" -class InkJetPrinter : public QWidget,public ParaSettingUI +class InkJetPrinter : public QWidget { Q_OBJECT @@ -46,12 +47,13 @@ public: private: // UI对象(由.ui文件生成) Ui::InkJetPrinter ui; + SysPara* sysPara = nullptr; QLabel* m_LabelTimer; // 保留原有变量,和ui中的控件关联 QTimer* m_Timer; QTimer* timer; QTimer* viscosity_timer; - QTimer* jd_timer; +// QTimer* jd_timer; QStackedWidget* m_StackedWidget; // 关联ui中的m_StackedWidget MainWidget* m_MainWidget; @@ -112,7 +114,13 @@ private: RunTimeCtrl* ctrl_runTime = nullptr; void initRunTimeCtrl(); + +#ifdef __RFID_CARD + RFIDManager* manager_rfid = nullptr; + void initRFIDManager(); +#endif private slots: + void slt_showMsg(QString msg); void timerHandler(); void getMainWidgetButtonClickedSlot(int index); void getTestPrintWidgetButtonClickedSlot(int index); @@ -165,7 +173,6 @@ private slots: void setShowVserionInfo(QString); void OnFinished(int event); - void jd_timerHandler(); void slt_editCounter(CounterViewModel vm); diff --git a/LogInfo.cpp b/LogInfo.cpp index 3cb7119..ab0166c 100644 --- a/LogInfo.cpp +++ b/LogInfo.cpp @@ -22,6 +22,11 @@ LogInfo::LogInfo(QWidget *parent) : ui(new Ui::LogInfo) { ui->setupUi(this); + + if (sysPara == nullptr) { + sysPara = SysPara::ins(); + } + ui->textEditRunStatus->setReadOnly(true); ui->textEditRunStatus_2->setReadOnly(true); textEdit = ui->textEditRunStatus; @@ -509,11 +514,6 @@ void LogInfo::updateSysStatusToUI(const AlarmStatus& alarmStatus){ } -void LogInfo::bindSysPara(SysPara *sysPara) -{ - this->sysPara = sysPara; -} - void LogInfo::checkState() { ui->tabWidget->setCurrentIndex(3); diff --git a/LogInfo.h b/LogInfo.h index c77c237..7e5ea2f 100644 --- a/LogInfo.h +++ b/LogInfo.h @@ -61,8 +61,6 @@ public: void updateSysStatusToUI(const AlarmStatus& alarmStatus); - void bindSysPara(SysPara *sysPara); - void checkState(); protected slots: void deleteOldLog(const QString folderPath, int days); diff --git a/MainInstruction.cpp b/MainInstruction.cpp index 4794472..f4e36ba 100644 --- a/MainInstruction.cpp +++ b/MainInstruction.cpp @@ -11,6 +11,10 @@ MainInstruction::MainInstruction(QWidget *parent) : { ui->setupUi(this); + if (sysPara == nullptr) { + sysPara = SysPara::ins(); + } + m_graphicsEditor = new ZkEdit(); // 连接几个特殊按钮,这些按钮将由外部处理 @@ -54,6 +58,8 @@ MainInstruction::MainInstruction(QWidget *parent) : timeDia.hide(); connect(&timeDia,SIGNAL(accepted()),this,SLOT(slt_timeSetting())); + + ui->btn_network->hide(); } MainInstruction::~MainInstruction() @@ -62,10 +68,6 @@ MainInstruction::~MainInstruction() delete m_graphicsEditor; } -void MainInstruction::bindSysPara(SysPara *sysPara){ - this->sysPara = sysPara; -} - void MainInstruction::onGraphicsEditBtnClicked() { // 在arm主机上以全屏模式显示,而在x86上无所谓 diff --git a/MainInstruction.h b/MainInstruction.h index d177f76..978ac2b 100644 --- a/MainInstruction.h +++ b/MainInstruction.h @@ -7,7 +7,6 @@ #include #include "ZkEdit.h" #include "dlginputaddr.h" -#include "ParaSettingUI.h" #include "DialogAuthorization.h" #include "dialogmaintenancetimesetting.h" #include "LogInfo.h" @@ -19,7 +18,7 @@ namespace Ui { class MainInstruction; } -class MainInstruction : public QWidget,public ParaSettingUI +class MainInstruction : public QWidget { Q_OBJECT @@ -30,8 +29,6 @@ public: DlgInputAddr *dlgInputAddr; - void bindSysPara(SysPara *SysPara);//重载 - signals: void sendButtonClickedSignal(int index); void newFileBtnClick(); @@ -57,8 +54,8 @@ private slots: void onRFIDAutoConfirmTimeoutChanged(); private: - Ui::MainInstruction *ui; + SysPara* sysPara = nullptr; ZkEdit* m_graphicsEditor = nullptr; diff --git a/MainWidget.ui b/MainWidget.ui index 5e52033..c24ae76 100644 --- a/MainWidget.ui +++ b/MainWidget.ui @@ -157,49 +157,52 @@ - - - - 781 - 171 - - - - - 16777215 - 295 - - + - background-color:#CACCC9; + QScrollBar::horizontal{ + height: 8px; +} + +QWidget{ + border: 0px solid; +} + +QScrollArea { + padding-bottom: 1px; +} + +QScrollBar::handle:horizontal { + background-color: rgb(175, 175, 175); + border-radius:4px; +} + +/* 完全删除上下箭头(sub-line 和 add-line) */ +QScrollBar::sub-line:horizontal, +QScrollBar::add-line:horizontal { + height: 0px; /* 高度为0,看不见也点不到 */ + subcontrol-position: top; /* 保留位置以避免布局偏移 */ +} +QScrollBar::sub-line:horizontal { top: 0px; } +QScrollBar::add-line:horizontal { bottom: 0px; } - + + Qt::ScrollBarAlwaysOff + + + Qt::ScrollBarAsNeeded + + + true + + - 9 - 9 - 761 - 150 + 0 + 0 + 780 + 177 - - - 0 - 0 - - - - - 746 - 150 - - - - - 16777215 - 150 - - diff --git a/MemDisplayAndEdit.cpp b/MemDisplayAndEdit.cpp index d607d3e..4b8a839 100644 --- a/MemDisplayAndEdit.cpp +++ b/MemDisplayAndEdit.cpp @@ -6,6 +6,10 @@ MemDisplayAndEdit::MemDisplayAndEdit(QWidget *parent) : ui(new Ui::MemDisplayAndEdit) { ui->setupUi(this); + if (sysPara == nullptr) { + sysPara = SysPara::ins(); + } + for(int i = 0; i < MEM_GRID_MAX_ROW*MEM_GRID_MAX_COL; i++){ memLineEdit[i] = new QLineEdit(this); //memLineEdit[i]->setAccessibleName(QString::number(i)); diff --git a/MemDisplayAndEdit.h b/MemDisplayAndEdit.h index 20f8de2..73f99f6 100644 --- a/MemDisplayAndEdit.h +++ b/MemDisplayAndEdit.h @@ -1,9 +1,10 @@ #ifndef MEMDISPLAYANDEDIT_H #define MEMDISPLAYANDEDIT_H +#include "SysPara.h" + #include #include -#include #include #define MEM_GRID_MAX_ROW 5 #define MEM_GRID_MAX_COL 16 @@ -11,7 +12,7 @@ namespace Ui { class MemDisplayAndEdit; } -class MemDisplayAndEdit : public QWidget,public ParaSettingUI +class MemDisplayAndEdit : public QWidget { Q_OBJECT @@ -42,6 +43,7 @@ private slots: private: Ui::MemDisplayAndEdit *ui; + SysPara* sysPara = nullptr; QLineEdit *memLineEdit[MEM_GRID_MAX_ROW*MEM_GRID_MAX_COL]; QLabel *rowLabel[MEM_GRID_MAX_ROW]; diff --git a/OtherInfo.cpp b/OtherInfo.cpp index 55a96da..5873b2f 100644 --- a/OtherInfo.cpp +++ b/OtherInfo.cpp @@ -12,9 +12,14 @@ OtherInfo::OtherInfo(QWidget *parent) : QWidget(parent), ui(new Ui::OtherInfo) { - ui->setupUi(this); - lockPhaseFlag = false; + + if (sysPara == nullptr) { + sysPara = SysPara::ins(); + lockPhaseFlag = sysPara->para.phaseByHand != 0; + updateLockPhaseWidgets(); + } + lockedPhase = 0; ui->memDisplayAndEdit->setHidden(1); @@ -57,15 +62,6 @@ void OtherInfo::OtherupdateSysParaToUI(){ } #define PHASE_BY_HAND_DIV 8 //相位会在逻辑里面放大 -void OtherInfo::bindSysPara(SysPara *sysPara){ - this->sysPara = sysPara; - ui->phaseGraphic->bindSysPara(sysPara); - ui->memDisplayAndEdit->bindSysPara(sysPara); - lockPhaseFlag = sysPara->para.phaseByHand != 0; - updateLockPhaseWidgets(); -} - - void OtherInfo::init() { // 应用样式表 diff --git a/OtherInfo.h b/OtherInfo.h index b8c54a9..ff13d3f 100644 --- a/OtherInfo.h +++ b/OtherInfo.h @@ -1,8 +1,8 @@ #ifndef OTHERINFO_H #define OTHERINFO_H +#include "SysPara.h" #include -#include "ParaSettingUI.h" #include #include @@ -10,14 +10,14 @@ namespace Ui { class OtherInfo; } -class OtherInfo : public QWidget,public ParaSettingUI +class OtherInfo : public QWidget { Q_OBJECT public: explicit OtherInfo(QWidget *parent = 0); ~OtherInfo(); - void bindSysPara(SysPara *sysPara); + void updateSysParaToUI(); void applyUIPara(); void updateSysStatusToUI(); @@ -27,7 +27,6 @@ public: void applyStyleSheet(); // 应用样式表 void init(); private slots: -// void on_pushButtonApply_pressed(); void OtherupdateSysParaToUI(); void on_pushButtonLockPhase_pressed(); @@ -45,6 +44,8 @@ signals: private: Ui::OtherInfo *ui; + SysPara* sysPara = nullptr; + void updateLockPhaseWidgets(); unsigned char lastPhaseChargeReulse[8]; bool lockPhaseFlag; diff --git a/ParaSettingUI.cpp b/ParaSettingUI.cpp index 7b9ffbc..51b3ae1 100644 --- a/ParaSettingUI.cpp +++ b/ParaSettingUI.cpp @@ -1,43 +1,41 @@ -/* - * ParaSettingUI.cpp - * - * Created on: Jun 25, 2013 - * Author: yiyu - * QQ:1036184468 - * Descriptoin: +///* +// * ParaSettingUI.cpp +// * +// * Created on: Jun 25, 2013 +// * Author: yiyu +// * QQ:1036184468 +// * Descriptoin: - */ +// */ +//#include "ParaSettingUI.h" +//#include "QDebug" +//ParaSettingUI::ParaSettingUI(){ +// sysPara = 0; +//} + +//ParaSettingUI::~ParaSettingUI(){ + +//} + +//void ParaSettingUI::bindSysPara(SysPara *sysPara){ +// this->sysPara = sysPara; +//} -#include "ParaSettingUI.h" -#include "QDebug" -ParaSettingUI::ParaSettingUI(){ - sysPara = 0; -} +//void ParaSettingUI::updateSysParaToUI(){ +// qDebug() << "Warn!!ParaSettingUI::updateSysParaToUI() should be implemented by subclass"; +//} -ParaSettingUI::~ParaSettingUI(){ +//void ParaSettingUI::applyUIPara(){ +// qDebug() << "Warn!!ParaSettingUI::applyUIPara() should be implemented by subclass"; +//} -} +//void ParaSettingUI::updateSysStatusToUI(){ +// qDebug() << "Warn!!ParaSettingUI::updateSysStatusToUI() should be implemented by subclass"; +//} -void ParaSettingUI::bindSysPara(SysPara *sysPara){ - this->sysPara = sysPara; -} - - -void ParaSettingUI::updateSysParaToUI(){ - qDebug() << "Warn!!ParaSettingUI::updateSysParaToUI() should be implemented by subclass"; -} - -void ParaSettingUI::applyUIPara(){ - qDebug() << "Warn!!ParaSettingUI::applyUIPara() should be implemented by subclass"; -} - -void ParaSettingUI::updateSysStatusToUI(){ - qDebug() << "Warn!!ParaSettingUI::updateSysStatusToUI() should be implemented by subclass"; -} - -void ParaSettingUI::updateAuthorization(int auth){ - // do nothing here -} +//void ParaSettingUI::updateAuthorization(int auth){ +// // do nothing here +//} diff --git a/ParaSettingUI.h b/ParaSettingUI.h index a2ec0e5..87aa0f7 100644 --- a/ParaSettingUI.h +++ b/ParaSettingUI.h @@ -1,31 +1,31 @@ -/* - * ParaSettingUI.h - * - * Created on: Jun 25, 2013 - * Author: yiyu - * QQ:1036184468 - * Descriptoin: - * 只要是有参数需要设置的UI继承此类 - */ +// /* ParaSettingUI.h +// * +// * Created on: Jun 25, 2013 +// * Author: yiyu +// * QQ:1036184468 +// * Descriptoin: +// * 只要是有参数需要设置的UI继承此类 -#ifndef PARASETTINGUI_H_ -#define PARASETTINGUI_H_ +// */ -#include "SysPara.h" -class ParaSettingUI{ -public: - ParaSettingUI(); - ~ParaSettingUI(); +//#ifndef PARASETTINGUI_H_ +//#define PARASETTINGUI_H_ - void bindSysPara(SysPara *sysPara); - void updateSysParaToUI(); /*这个方法需要被子类重写*/ - void applyUIPara(); /*这个方法需要被子类重写*/ - void updateSysStatusToUI(); /*这个方法需要被子类重写*/ - void updateAuthorization(int auth); /*这个方法需要被子类重写*/ -protected: - SysPara *sysPara; -}; +//#include "SysPara.h" +//class ParaSettingUI{ +//public: +// ParaSettingUI(); +// ~ParaSettingUI(); + +// void bindSysPara(SysPara *sysPara); +// void updateSysParaToUI(); /*这个方法需要被子类重写*/ +// void applyUIPara(); /*这个方法需要被子类重写*/ +// void updateSysStatusToUI(); /*这个方法需要被子类重写*/ +// void updateAuthorization(int auth); /*这个方法需要被子类重写*/ +//protected: +// SysPara *sysPara = nullptr; +//}; -#endif /* PARASETTINGUI_H_ */ +//#endif /* PARASETTINGUI_H_ diff --git a/PhaseGraphic.cpp b/PhaseGraphic.cpp index 4dfe4ba..bc4c350 100644 --- a/PhaseGraphic.cpp +++ b/PhaseGraphic.cpp @@ -14,6 +14,9 @@ PhaseGraphic::PhaseGraphic(QWidget *parent) : QWidget(parent){ + if (sysPara == nullptr) { + sysPara = SysPara::ins(); + } pen.setStyle(Qt::SolidLine); pen.setWidth(2); pen.setBrush(Qt::red); diff --git a/PhaseGraphic.h b/PhaseGraphic.h index 3b56862..7deac21 100644 --- a/PhaseGraphic.h +++ b/PhaseGraphic.h @@ -13,10 +13,10 @@ #include "QWidget" -#include "ParaSettingUI.h" +#include "SysPara.h" #include #include -class PhaseGraphic:public QWidget,public ParaSettingUI{ +class PhaseGraphic:public QWidget{ Q_OBJECT public: @@ -30,11 +30,11 @@ public: void setLockedPhase(bool enable,int val); void setPhaseCount(int count); private: - - QPen pen; - QBrush brush; - int lockPhaseFlag; - int lockedPhase; - int phaseCount; // 份数 + SysPara* sysPara = nullptr; + QPen pen; + QBrush brush; + int lockPhaseFlag; + int lockedPhase; + int phaseCount; // 份数 }; #endif /* PHASEGRAPHIC_H_ */ diff --git a/PrintTextDisplay.cpp b/PrintTextDisplay.cpp index f02fb0b..5f8d661 100644 --- a/PrintTextDisplay.cpp +++ b/PrintTextDisplay.cpp @@ -23,6 +23,10 @@ PrintTextDisplay::PrintTextDisplay(QWidget *parent): QWidget(parent){ + if (sysPara == nullptr) { + sysPara = SysPara::ins(); + } + setPalette(QPalette(Qt::white)); setAutoFillBackground(true); scaleRatio = 2; @@ -30,7 +34,6 @@ PrintTextDisplay::PrintTextDisplay(QWidget *parent): origHeight = 0; setAttribute(Qt::WA_OpaquePaintEvent,true); //背景不自动重画 updateDigitalOnly = false; - } PrintTextDisplay::~PrintTextDisplay(){ @@ -75,7 +78,9 @@ void PrintTextDisplay::setDisplaySize(int w,int h){ origWidth = w; - resize(scaleRatio*origWidth,scaleRatio*(origHeight)); + setFixedSize(scaleRatio*origWidth,scaleRatio*(origHeight)); + + qDebug() << "Display widget size: " << size(); } void PrintTextDisplay::setScaleRatio(int ratio) { @@ -88,6 +93,11 @@ void PrintTextDisplay::setScaleRatio(int ratio) } } +int PrintTextDisplay::currScaleRatio() +{ + return this->scaleRatio; +} + void PrintTextDisplay::paintEvent(QPaintEvent *event){ QRect updateRect = event->rect(); updateRect.setY(0); diff --git a/PrintTextDisplay.h b/PrintTextDisplay.h index 4d934b0..2a0a011 100644 --- a/PrintTextDisplay.h +++ b/PrintTextDisplay.h @@ -5,42 +5,45 @@ * Author: yiyu * QQ:1036184468 * Descriptoin: - + */ #ifndef PRINTTEXTDISPLAY_H_ #define PRINTTEXTDISPLAY_H_ +#include "SysPara.h" + #include -#include "ParaSettingUI.h" -class PrintTextDisplay:public QWidget,public ParaSettingUI{ +class PrintTextDisplay:public QWidget{ public: explicit PrintTextDisplay(QWidget *parent = 0); ~PrintTextDisplay(); - void updateSysParaToUI(); //重载 + void updateSysParaToUI(); //重载 - void updateSysStatusToUI(); //重载 + void updateSysStatusToUI(); //重载 void paintEvent(QPaintEvent *); - void resizeWidget(int w,int h); + void resizeWidget(int w,int h); + void enlargeDisplay(); + void reduceDisplay(); + void setDisplaySize(int w,int h); - void enlargeDisplay(); - void reduceDisplay(); + void setScaleRatio(int ratio); - void setDisplaySize(int w,int h); + int currScaleRatio(); - void setScaleRatio(int ratio); - void scroll_update(); + void scroll_update(); private: - int scaleRatio; - int origHeight; - int origWidth; - bool updateDigitalOnly; + SysPara* sysPara = nullptr; + int scaleRatio; + int origHeight; + int origWidth; + bool updateDigitalOnly; }; diff --git a/Printsetting.cpp b/Printsetting.cpp index 426bd0e..2888fec 100644 --- a/Printsetting.cpp +++ b/Printsetting.cpp @@ -10,6 +10,10 @@ PrintSetting::PrintSetting(QWidget *parent) : { ui->setupUi(this); + if (sysPara == nullptr) { + sysPara = SysPara::ins(); + } + m_checkBtn = ui->checkBtn; m_closeBtn = ui->closeBtn; @@ -61,10 +65,6 @@ void PrintSetting::buttonClickedSlot() } } -void PrintSetting::bindSysPara(SysPara *sysPara){ - this->sysPara =sysPara; -} - void PrintSetting::on_pushButtonApply_pressed(){ applyUIPara(); @@ -196,11 +196,9 @@ void PrintSetting::updateSysStatusToUI(){ void PrintSetting::on_pushButtonApplyPulseFix_clicked() { - pulseNumFix->bindSysPara(sysPara); - pulseNumFix->hide(); +// pulseNumFix->bindSysPara(sysPara); +// pulseNumFix->hide(); pulseNumFix->show(); - - // qDebug()<<"pushButtonApplyPulseFix"; } void PrintSetting::onPulseNumFixDone(float value){ diff --git a/Printsetting.h b/Printsetting.h index 5ca7895..14825bf 100644 --- a/Printsetting.h +++ b/Printsetting.h @@ -2,7 +2,6 @@ #define PRINTSETTING_H #include -#include "ParaSettingUI.h" #include #include "PulseNumFix.h" @@ -11,7 +10,7 @@ namespace Ui { class PrintSetting; } -class PrintSetting : public QWidget,public ParaSettingUI +class PrintSetting : public QWidget { Q_OBJECT @@ -24,7 +23,6 @@ public: void updateSysParaToUI(); //重载 void applyUIPara(); //重载 - void bindSysPara(SysPara *sysPara); void updateSysStatusToUI(); void applyUITriggerPara(); @@ -79,6 +77,7 @@ private slots: private: Ui::PrintSetting *ui; + SysPara* sysPara = nullptr; PulseNumFix *pulseNumFix; diff --git a/Printsetting.ui b/Printsetting.ui index 554f5c0..0fa8b58 100644 --- a/Printsetting.ui +++ b/Printsetting.ui @@ -26,7 +26,7 @@ Qt::StrongFocus - 0 + 3 @@ -1068,7 +1068,7 @@ 80 260 - 149 + 261 40 diff --git a/PulseNumFix.cpp b/PulseNumFix.cpp index afe9389..68585e0 100644 --- a/PulseNumFix.cpp +++ b/PulseNumFix.cpp @@ -8,6 +8,10 @@ PulseNumFix::PulseNumFix(QWidget *parent) : ui(new Ui::PulseNumFix) { ui->setupUi(this); + if (sysPara == nullptr) { + sysPara = SysPara::ins(); + } + this->setWindowTitle(tr("脉冲数修正")); setUIEnableStatus(); connect(this,SIGNAL(accepted()),this,SLOT(onButtonBoxAccepted())); diff --git a/PulseNumFix.h b/PulseNumFix.h index 53a91d3..00e17bc 100644 --- a/PulseNumFix.h +++ b/PulseNumFix.h @@ -3,12 +3,11 @@ #include #include -#include namespace Ui { class PulseNumFix; } -class PulseNumFix : public QDialog,public ParaSettingUI +class PulseNumFix : public QDialog { Q_OBJECT @@ -34,6 +33,7 @@ private slots: private: Ui::PulseNumFix *ui; + SysPara* sysPara = nullptr; }; #endif // PULSENUMFIX_H diff --git a/QBarCode.cpp b/QBarCode.cpp index 73fbd53..37605fb 100644 --- a/QBarCode.cpp +++ b/QBarCode.cpp @@ -26,6 +26,11 @@ QBarCode::QBarCode(QWidget *parent) : ui(new Ui::QBarCode) { ui->setupUi(this); + + if (sysPara == nullptr) { + sysPara = SysPara::ins(); + } + bcOK=false; connect(ui->BarCodeGenerate,SIGNAL(pressed()),this,SLOT(ImgSave())); connect(ui->pushBarPreview,SIGNAL(pressed()),this,SLOT(onEnCodeBar())); @@ -130,10 +135,6 @@ void QBarCode::TextBarCode(QString txt,int index) } } -void QBarCode::bindSysPara(SysPara *sysPara){ - this->sysPara =sysPara; -} - void QBarCode::onEnCodeBar(){ QString txt2 =ui->lineEditModule->text().trimmed(); QString txt3 =ui->lineEditLine->text().trimmed(); diff --git a/QBarCode.h b/QBarCode.h index 65fa810..4ed2910 100644 --- a/QBarCode.h +++ b/QBarCode.h @@ -8,7 +8,6 @@ #include "QGraphicsPixmapItem" #include "SysPara.h" #include "QTextEdit" -#include "ParaSettingUI.h" //typedef struct // BarCodeOption //{ @@ -29,14 +28,14 @@ namespace Ui { class QBarCode; } -class QBarCode : public QDialog, public ParaSettingUI +class QBarCode : public QDialog { Q_OBJECT public: explicit QBarCode(QWidget *parent = 0); ~QBarCode(); - void bindSysPara(SysPara *sysPara); + //unsigned char pointMap[40*1000]; QString pictureName;//当前显示的图片 void SetOption(bcOption_t *bcOption); @@ -101,6 +100,7 @@ private: QTextEdit* m_textEdit = nullptr; private: Ui::QBarCode *ui; + SysPara* sysPara = nullptr; }; #endif // QBARCODE_H diff --git a/QtUI.pro b/QtUI.pro index b660b15..a5312bd 100644 --- a/QtUI.pro +++ b/QtUI.pro @@ -80,12 +80,13 @@ HEADERS += Public.h \ ClickLabel.h \ DialogFontSize.h \ SysPara.h \ - ParaSettingUI.h \ +# ParaSettingUI.h \ DevOp.h \ posix_qextserialport.h \ rfid/sm4.h \ rfid/sm3.h \ rfid/rfidfunction.h \ + rfid/rfidmanager.h \ qextserialbase.h \ PrintTextDisplay.h \ fontsetwidget.h \ @@ -160,7 +161,7 @@ HEADERS += Public.h \ Matrix/dm200.h \ dlgQrCode.h \ scene/piccodeitem.h \ - RFIDManager.h \ +# RFIDManager.h \ Log/filelogger.h \ Log/logger.h \ Log/logmessage.h \ @@ -230,12 +231,13 @@ SOURCES +=\ Public.cpp \ DialogFontSize.cpp \ SysPara.cpp \ - ParaSettingUI.cpp \ +# ParaSettingUI.cpp \ DevOp.cpp \ posix_qextserialport.cpp \ rfid/sm4.cpp \ rfid/sm3.cpp \ rfid/rfidfunction.cpp \ + rfid/rfidmanager.cpp \ qextserialbase.cpp \ PrintTextDisplay.cpp \ fontsetwidget.cpp \ @@ -318,7 +320,7 @@ SOURCES +=\ Matrix/drawmatrix.cpp \ dlgQrCode.cpp \ scene/piccodeitem.cpp \ - RFIDManager.cpp \ +# RFIDManager.cpp \ Log/filelogger.cpp \ Log/logger.cpp \ Log/logmessage.cpp \ diff --git a/RFIDManager.cpp b/RFIDManager.cpp index 6d4a69e..5b767fd 100644 --- a/RFIDManager.cpp +++ b/RFIDManager.cpp @@ -1 +1 @@ -#include "RFIDManager.h" +//#include "RFIDManager.h" diff --git a/RFIDManager.h b/RFIDManager.h index a1a6ba5..bba80f3 100644 --- a/RFIDManager.h +++ b/RFIDManager.h @@ -1,39 +1,39 @@ -#ifndef RFIDMANAGER_H -#define RFIDMANAGER_H +//#ifndef RFIDMANAGER_H +//#define RFIDMANAGER_H -#include -#include -#include -#include -#include +//#include +//#include +//#include +//#include +//#include -enum CardType { - CARDTYPE_UNKNOWN = 0, - CARDTYPE_INK , - CARDTYPE_SOLVENT , - CARDTYPE_MAINTENANCE , -}; +//enum CardType { +// CARDTYPE_UNKNOWN = 0, +// CARDTYPE_INK , +// CARDTYPE_SOLVENT , +// CARDTYPE_MAINTENANCE , +//}; -class RFIDManager : public QObject -{ - Q_OBJECT +//class RFIDManager : public QObject +//{ +// Q_OBJECT -public: - explicit RFIDManager(QObject* parent = nullptr); +//public: +// explicit RFIDManager(QObject* parent = nullptr); - // 设置RFID读取器密钥, 异步操作 - // 保留,读取器设置不应在软件中进行,而是通过开发工具进行 - void setRFIDReaderKeyAysnc(int mac,int type, std::function done) __attribute__((deprecated("setRFIDReaderKeyAysnc is deprecated"))); +// // 设置RFID读取器密钥, 异步操作 +// // 保留,读取器设置不应在软件中进行,而是通过开发工具进行 +// void setRFIDReaderKeyAysnc(int mac,int type, std::function done) __attribute__((deprecated("setRFIDReaderKeyAysnc is deprecated"))); - // 设置RFID读取器原始密钥, 异步操作 - // 保留,读取器设置不应在软件中进行,而是通过开发工具进行 - void setRFIDReaderOriginalKey(std::function done) __attribute__((deprecated("setRFIDReaderOriginalKey is deprecated"))); +// // 设置RFID读取器原始密钥, 异步操作 +// // 保留,读取器设置不应在软件中进行,而是通过开发工具进行 +// void setRFIDReaderOriginalKey(std::function done) __attribute__((deprecated("setRFIDReaderOriginalKey is deprecated"))); - // 设置RFID读取器工作模式, 异步操作 - // 保留,读取器设置不应在软件中进行,而是通过开发工具进行 - void setRFIDReaderWorkMode(std::function done) __attribute__((deprecated("setRFIDReaderWorkMode is deprecated"))); -}; +// // 设置RFID读取器工作模式, 异步操作 +// // 保留,读取器设置不应在软件中进行,而是通过开发工具进行 +// void setRFIDReaderWorkMode(std::function done) __attribute__((deprecated("setRFIDReaderWorkMode is deprecated"))); +//}; -void lockWindowLevel(uintptr_t wid); +//void lockWindowLevel(uintptr_t wid); -#endif // RFIDMANAGER_H \ No newline at end of file +//#endif // RFIDMANAGER_H diff --git a/SysPara.cpp b/SysPara.cpp index 1cfcee9..ffd6c38 100644 --- a/SysPara.cpp +++ b/SysPara.cpp @@ -78,6 +78,15 @@ SysPara::SysPara(void): #endif } +SysPara *SysPara::ins() +{ + static SysPara* ins = nullptr; + if (ins == nullptr) { + ins = new SysPara(); + } + return ins; +} + void SysPara::loadParaFromFile(){ QFile file(PARA_FILE_PATH); QFile DeviceCodefile(DeviceCode_FILE_PATH); @@ -110,8 +119,9 @@ void SysPara::loadParaFromFile(){ para.gearPumpSpeedAlarm = 1500; // 将flagOfReclaimPumEnable强制设置为0。该参数影响的是压力控制算法,但现在已经不使用 byons@2026年5月12日 - if(para.gearPumpEnable && para.flagOfReclaimPumEnable) - para.flagOfReclaimPumEnable = false; + if(!para.flagOfReclaimPumEnable) + para.flagOfReclaimPumEnable = true; + if (DeviceCodefile.isOpen()) { DeviceCodefile.close(); } @@ -158,7 +168,7 @@ void SysPara::loadDefaultPara(){ para.synPulseNumPerMm = 8;// 同步器参数 脉冲/毫米 para.OuputPulseCol = 0;//桂林客户,精准控制输出脉冲的位置,精确到打印的列数 para.gearPumpEnable = 1; - para.flagOfReclaimPumEnable = 0; + para.flagOfReclaimPumEnable = false; para.oscillatorVoltage = 30;//晶振电压 para.highVoltageLevel = 100;//高压包容差 @@ -977,7 +987,7 @@ void SysPara::loadVolteParaFromFile(PRINT_MODE mode) file.read(volteStruct, copy_len); file.close(); } - else if (ret == QMessageBox::Cancel){ + else if (ret == QMessageBox::Cancel) { file.close(); } } @@ -988,8 +998,8 @@ void SysPara::loadVolteParaFromFile(PRINT_MODE mode) } } } - else{ - qDebug()<<"There is no Volte Para File."; + else { + qDebug() << "There is no Volte Para File."; LogInfo::setRunStatusText(QString("There is no Volte Para File.")); } } diff --git a/SysPara.h b/SysPara.h index 19ba135..043af5d 100644 --- a/SysPara.h +++ b/SysPara.h @@ -55,18 +55,18 @@ #define AUTH_SUPER_USER1 (1<<16) #define AUTH_SUPER_USER2 (1<<17) typedef enum { - PRINT_TRIGGER_TIME = 0, - PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL = 1, - PRINT_TRIGGER_ELEC_EYE_EDGE =2, - PRINT_TRIGGER_SYNCHRONIZER = 3, - PRINT_TRIGGER_NONE = 4, - PRINT_TRIGGER_EYESYN =5 - }print_trigger_mode_t; + PRINT_TRIGGER_TIME = 0, + PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL = 1, + PRINT_TRIGGER_ELEC_EYE_EDGE =2, + PRINT_TRIGGER_SYNCHRONIZER = 3, + PRINT_TRIGGER_NONE = 4, + PRINT_TRIGGER_EYESYN =5 +}print_trigger_mode_t; typedef enum { - OSCILLATTOR_FREQ_64K = 0, - OSCILLATTOR_FREQ_76K = 1, - OSCILLATTOR_FREQ_96K =2, - OSCILLATTOR_FREQ_128K =3 + OSCILLATTOR_FREQ_64K = 0, + OSCILLATTOR_FREQ_76K = 1, + OSCILLATTOR_FREQ_96K =2, + OSCILLATTOR_FREQ_128K =3 }oscillator_freq_t; #define TIME_TRIGGER_PRINT_MODE_END_TO_HEAD 0 @@ -80,16 +80,16 @@ typedef enum { #define MAX_CNT1_GROUPS_NUM 50 typedef struct { - unsigned int second:6; - unsigned int minute:6; - unsigned int hour:5; - unsigned day:9; - unsigned month:4; - unsigned dummy:2; + unsigned int second:6; + unsigned int minute:6; + unsigned int hour:5; + unsigned day:9; + unsigned month:4; + unsigned dummy:2; unsigned dayofweek:3; - unsigned year:12; + unsigned year:12; - unsigned int leap_year:1; //标记当年是否是闰年 + unsigned int leap_year:1; //标记当年是否是闰年 unsigned int cntCurrValueInitEnable:8; //{[0] -> cnt1CurrValue [1] ->cun2CurrValue [2] ->cun3CurrValue} unsigned int week:8; unsigned int cnt1CurrValue;// BCD码 9 @@ -133,33 +133,33 @@ typedef struct { typedef struct { - unsigned short builTime; - unsigned short inkDot; // - unsigned char year; - unsigned char month; - unsigned char day; + unsigned short builTime; + unsigned short inkDot; // + unsigned char year; + unsigned char month; + unsigned char day; }build_dat_t; typedef struct { - quint8 print_data_xor; - quint8 counter1_current_value; - quint64 sync_counter_at_zero; + quint8 print_data_xor; + quint8 counter1_current_value; + quint64 sync_counter_at_zero; }xor_sync_couter; typedef struct - { +{ unsigned short startValue; // 起始值 unsigned short StepValue; // 跳米间隔 unsigned short endValue; // 结束值 unsigned char enbale; // unsigned char nncc; // 实际跳米数 - }stepPrint_t; // 8Byte +}stepPrint_t; // 8Byte typedef struct - { +{ unsigned short startValue; // 起始值 unsigned short repeatValue; // 重复间隔 unsigned short repeatPrintTimes; //重复打印次数 @@ -167,11 +167,11 @@ typedef struct unsigned char enable:2; // 交替便能 unsigned char lineSpace:6; //行距 //unsigned int bak[10]; // 保留参数 - }alterPrint_t; // 8Byte +}alterPrint_t; // 8Byte //隐藏功能 typedef struct - { +{ unsigned char SpecialVarEnable; //特殊变量使能 unsigned char MeterEnable; //计数器4带米标使能 unsigned short SpecialConditionValue; // 隐藏条件倍数值 @@ -180,39 +180,39 @@ typedef struct unsigned short SpecialVarColEnd; unsigned char SpecialVarRowStart; unsigned char SpecialVarRowEnd; - }SpecialVarPrint; // 8Byte +}SpecialVarPrint; // 8Byte typedef struct // BarCodeOption { - unsigned char xpos; - unsigned char font; - unsigned char width; - unsigned char height; - unsigned char scale; - unsigned char type:6; - unsigned char InkColor:1; - unsigned char autoFlash:1; + unsigned char xpos; + unsigned char font; + unsigned char width; + unsigned char height; + unsigned char scale; + unsigned char type:6; + unsigned char InkColor:1; + unsigned char autoFlash:1; - unsigned char RecFromHost:1;// RecFromHost - unsigned char DisplayUpdate:1; //变量更新标志 - unsigned char AutoCount:1; // 自动变化 - unsigned char var1En:1; //变量1使用 - unsigned char var2En:1; //变量2使用 + unsigned char RecFromHost:1;// RecFromHost + unsigned char DisplayUpdate:1; //变量更新标志 + unsigned char AutoCount:1; // 自动变化 + unsigned char var1En:1; //变量1使用 + unsigned char var2En:1; //变量2使用 - unsigned char barType;// 条形码类型 + unsigned char barType;// 条形码类型 - unsigned short var1Type;// 变量1类型 - unsigned short var2Type;// 变量2类型 - unsigned char var1Num;// 变量1位数 - unsigned char var2Num;// 变量2位数 + unsigned short var1Type;// 变量1类型 + unsigned short var2Type;// 变量2类型 + unsigned char var1Num;// 变量1位数 + unsigned char var2Num;// 变量2位数 - unsigned char NC2[11]; - char text[80]; - char TxtModule[40]; - char TxtLine[30]; - char TxtLine1[30]; -// unsigned char var3Num;// 变量3位数 + unsigned char NC2[11]; + char text[80]; + char TxtModule[40]; + char TxtLine[30]; + char TxtLine1[30]; + // unsigned char var3Num;// 变量3位数 }bcOption_t; typedef struct { @@ -237,22 +237,22 @@ typedef struct { }qrOption_t; typedef struct { - int type; - int width; - int height; - int startColPos; - int endRowPos; - int startRowPos; - unsigned int Counter; // - unsigned char countEn; - unsigned char TimeEn; - unsigned char cntNum; // 未使用 - unsigned char NNC2; // 未使用 - //--------------------- - char text[100]; //指向申请内存的空间 生成字模数据 - char textCnt[10]; - char text2[90]; - bool original; //表示当前dat是通过calloc申请而来还是直接引用别人的指针,主要是影响到指针的释放 + int type; + int width; + int height; + int startColPos; + int endRowPos; + int startRowPos; + unsigned int Counter; // + unsigned char countEn; + unsigned char TimeEn; + unsigned char cntNum; // 未使用 + unsigned char NNC2; // 未使用 + //--------------------- + char text[100]; //指向申请内存的空间 生成字模数据 + char textCnt[10]; + char text2[90]; + bool original; //表示当前dat是通过calloc申请而来还是直接引用别人的指针,主要是影响到指针的释放 }QRvars_t; /* 分段计米相关设定 */ @@ -320,7 +320,7 @@ typedef struct { unsigned short productNumToGenerateOutputPulse; //0x1d,1e num产品 out put a pulse unsigned short outputPulseDelayMs; // 0x1f,0x20 - // FPGA ADDR 0x44~ + // FPGA ADDR 0x44~ alterPrint_t alterPrint; // 8Byte FPAG由地址0x44~0x4B unsigned char Cnt1NatureValue:1; //0自然数 unsigned char eleEyeTriggerSynPrintEn:1; //1电眼触发的同步打印使能 @@ -403,7 +403,7 @@ typedef struct { #ifdef COUNTER1_BY_GROUP //分段计米 Cnt1ByGroup_t Cnt1ByGroup; #endif - EXPIRYVAR_t ExpiryVar; //有效期变量 2018.5.24 + EXPIRYVAR_t ExpiryVar; //有效期变量 2018.5.24 EXPIRYVAR_t CurDateVar; EXPIRYVAR_t ClassVari; int ExpiryDay; //有效期天数 @@ -427,121 +427,121 @@ typedef struct { typedef struct{ /* 打印参数 */ -// unsigned int printTotalColNum:16; // 0,1 -// unsigned int printDirection:8; // 2[0] 上下颠倒 [1] 左右颠倒 [2] 扫描颠倒 -// unsigned int reducedPixelNum:6; // 3 冗余点数 -// unsigned int reducedPixelMode:2; // 冗余点比例 -// unsigned int printRowDelay:8; //4 打印模式 - unsigned int printColDelay:24; // 打印设置下的 5,6,7 字宽 + // unsigned int printTotalColNum:16; // 0,1 + // unsigned int printDirection:8; // 2[0] 上下颠倒 [1] 左右颠倒 [2] 扫描颠倒 + // unsigned int reducedPixelNum:6; // 3 冗余点数 + // unsigned int reducedPixelMode:2; // 冗余点比例 + // unsigned int printRowDelay:8; //4 打印模式 + unsigned int printColDelay:24; // 打印设置下的 5,6,7 字宽 - unsigned char charBold; //8 字体加宽 -// unsigned char pixNumPerCol; // 9 每列点阵数 - unsigned int timeTriggerPrintDelayMs:16; //a,b - unsigned int photoElectricityRepeateNum:16; //c,d - unsigned short eleEyeTriggerPrintDelay; // e,f + unsigned char charBold; //8 字体加宽 + // unsigned char pixNumPerCol; // 9 每列点阵数 + unsigned int timeTriggerPrintDelayMs:16; //a,b + unsigned int photoElectricityRepeateNum:16; //c,d + unsigned short eleEyeTriggerPrintDelay; // e,f - unsigned int printTriggerMode:8; // 10 -// unsigned int totalSynPulseNum:24; //11,12,13 - unsigned int elecEyeTriggerInterval:32; //14,15,16,17 + unsigned int printTriggerMode:8; // 10 + // unsigned int totalSynPulseNum:24; //11,12,13 + unsigned int elecEyeTriggerInterval:32; //14,15,16,17 -// unsigned char extClearAllCntEnable; // 1c --- 通过外部(同步器或电眼)清零 0x3a + // unsigned char extClearAllCntEnable; // 1c --- 通过外部(同步器或电眼)清零 0x3a - unsigned char HighVoltageAmplitude; //0x1d 字高// 字高电压系数 -// unsigned char mmmee[2]; + unsigned char HighVoltageAmplitude; //0x1d 字高// 字高电压系数 + // unsigned char mmmee[2]; - // FPGA ADDR 0x60~0x63 -// unsigned short productNumToGenerateOutputPulse; //0x1d,1e num产品 out put a pulse - unsigned short outputPulseDelayMs; // 0x1f,0x20 + // FPGA ADDR 0x60~0x63 + // unsigned short productNumToGenerateOutputPulse; //0x1d,1e num产品 out put a pulse + unsigned short outputPulseDelayMs; // 0x1f,0x20 - // FPGA ADDR 0x44~ - alterPrint_t alterPrint; // 8Byte FPAG由地址0x44~0x4B - unsigned char Cnt1NatureValue:1; //0自然数 - unsigned char eleEyeTriggerSynPrintEn:1; //1电眼触发的同步打印使能 -// unsigned char autoSynSpeedEn:1; //2同步打印自动模式 -// unsigned char newAmplifyPlate:1;//新放大板选项 -// unsigned char SynCntEn1:1; // 4 不打印走米 -// unsigned char Vol1of8En:1; // 5 1/8电压打印 - unsigned char eleEyeReTrigDisable:1; // 6 -// unsigned char set_HVData_Flag:1; // checkBoxYH + // FPGA ADDR 0x44~ + alterPrint_t alterPrint; // 8Byte FPAG由地址0x44~0x4B + unsigned char Cnt1NatureValue:1; //0自然数 + unsigned char eleEyeTriggerSynPrintEn:1; //1电眼触发的同步打印使能 + // unsigned char autoSynSpeedEn:1; //2同步打印自动模式 + // unsigned char newAmplifyPlate:1;//新放大板选项 + // unsigned char SynCntEn1:1; // 4 不打印走米 + // unsigned char Vol1of8En:1; // 5 1/8电压打印 + unsigned char eleEyeReTrigDisable:1; // 6 + // unsigned char set_HVData_Flag:1; // checkBoxYH - unsigned char decimalBits; // 0x4d 小数点位数 + unsigned char decimalBits; // 0x4d 小数点位数 -// unsigned short synPulsePerMmX8 ;// 0x4e~4f + // unsigned short synPulsePerMmX8 ;// 0x4e~4f - bool leftRightInverse; - bool upDownInverse; - bool scanInverse; - int currPrintMode; + bool leftRightInverse; + bool upDownInverse; + bool scanInverse; + int currPrintMode; - int cnt1EndValue; - int cnt1StartValue; - int cnt1StepValue; - int cnt1RepeateValue; - int cnt1CurrValue; - int cnt2EndValue; - int cnt2StartValue; - int cnt2StepValue; - int cnt2RepeateValue; - int cnt2CurrValue; - float synTriggerPrintLenMm; - int timeTriggerPrintMode; - int printDelayMs; - int sysTriggerPrintMode; //在同步模式下选择按字宽或时喷印比例进行打印 - int rowSequenceMode; + int cnt1EndValue; + int cnt1StartValue; + int cnt1StepValue; + int cnt1RepeateValue; + int cnt1CurrValue; + int cnt2EndValue; + int cnt2StartValue; + int cnt2StepValue; + int cnt2RepeateValue; + int cnt2CurrValue; + float synTriggerPrintLenMm; + int timeTriggerPrintMode; + int printDelayMs; + int sysTriggerPrintMode; //在同步模式下选择按字宽或时喷印比例进行打印 + int rowSequenceMode; - int synClearCntInEleEyeMode; //在电眼触发模式下通过同步器清零 - int eleEyeClearCntInSynMode; - int reducedPixelNumRatio; - int pulseOutputEnable; // 脉冲使能输出 - int productCntPerOutputPulse;// + int synClearCntInEleEyeMode; //在电眼触发模式下通过同步器清零 + int eleEyeClearCntInSynMode; + int reducedPixelNumRatio; + int pulseOutputEnable; // 脉冲使能输出 + int productCntPerOutputPulse;// -// int startVoltage; //首行电压 -// int endVoltage; //行末电压 + // int startVoltage; //首行电压 + // int endVoltage; //行末电压 - float synPulseNumPerMm;// 同步器参数 脉冲/毫米 - // 添加参数 -// unsigned char adjVolDacRate[40]; //增加了DAC电压间隔调整比例 -// int FullColFixVal; - unsigned char SynCntEn:1; -// unsigned char ENNCC:7; -// unsigned char NCCC22; - unsigned short eleMaskTime; // 16bit -// unsigned short AltMirrorGap;// 镜像打印间隔 Mirror image alternation - unsigned short headLen; - unsigned short endLen;//6 - unsigned char varLenEn;// - short varLen; // 可变长 - short varLen1; // 可变长 -// unsigned char NCCC; - QRvars_t QRvars[MAX_QVARI_NUM]; - //BCvars_t BCvars[MAX_QVARI_NUM]; - stepPrint_t stepPrint; // 8Byte -// int phaseHighLowRatio; //保存相检 -// short phaseShift; //相位偏移 -// unsigned short OuputPulseCol; //桂林客户,精准控制输出脉冲的位置,精确到打印的列数 -// int phaseDetectVol; -// unsigned int phase_detect_pulse_num:4; // 检测个数 -// unsigned int phase_detect_voltage:12; // 相检电压阀值 -// unsigned short phaseDetectDelay; -// unsigned char rrrccc[2]; -// quint16 phaseHighCnt; + float synPulseNumPerMm;// 同步器参数 脉冲/毫米 + // 添加参数 + // unsigned char adjVolDacRate[40]; //增加了DAC电压间隔调整比例 + // int FullColFixVal; + unsigned char SynCntEn:1; + // unsigned char ENNCC:7; + // unsigned char NCCC22; + unsigned short eleMaskTime; // 16bit + // unsigned short AltMirrorGap;// 镜像打印间隔 Mirror image alternation + unsigned short headLen; + unsigned short endLen;//6 + unsigned char varLenEn;// + short varLen; // 可变长 + short varLen1; // 可变长 + // unsigned char NCCC; + QRvars_t QRvars[MAX_QVARI_NUM]; + //BCvars_t BCvars[MAX_QVARI_NUM]; + stepPrint_t stepPrint; // 8Byte + // int phaseHighLowRatio; //保存相检 + // short phaseShift; //相位偏移 + // unsigned short OuputPulseCol; //桂林客户,精准控制输出脉冲的位置,精确到打印的列数 + // int phaseDetectVol; + // unsigned int phase_detect_pulse_num:4; // 检测个数 + // unsigned int phase_detect_voltage:12; // 相检电压阀值 + // unsigned short phaseDetectDelay; + // unsigned char rrrccc[2]; + // quint16 phaseHighCnt; #ifdef COUNTER1_BY_GROUP /* 分段计米 */ - Cnt1ByGroup_t Cnt1ByGroup; + Cnt1ByGroup_t Cnt1ByGroup; #endif - EXPIRYVAR_t ExpiryVar; //有效期变量 2018.5.24 - EXPIRYVAR_t CurDateVar; - EXPIRYVAR_t ClassVari; - int ExpiryDay; //有效期天数 + EXPIRYVAR_t ExpiryVar; //有效期变量 2018.5.24 + EXPIRYVAR_t CurDateVar; + EXPIRYVAR_t ClassVari; + int ExpiryDay; //有效期天数 - int cnt4CurrValue; - int HiddenConditionValue; - bool HiddenFuncEnable; - bool HiddenMeterEnable; + int cnt4CurrValue; + int HiddenConditionValue; + bool HiddenFuncEnable; + bool HiddenMeterEnable; - int cnt3CurrValue; - int textEditLineSpace; - int textEditCharSpace; -// unsigned char speedoverPaushPrint; // 3速度超速不打印标志 + int cnt3CurrValue; + int textEditLineSpace; + int textEditCharSpace; + // unsigned char speedoverPaushPrint; // 3速度超速不打印标志 }printPara_t; @@ -624,38 +624,38 @@ typedef struct { stepPrint_t stepPrint; // 8Byte unsigned int reserved_reg[12]; // 4*(12)=48Byte // 地址: ~0x7F unsigned short highVoltageRecord[10]; // 0x80 = 128开始 - int reclaimPumpPWMWidth; - bool leftRightInverse; - bool upDownInverse; - bool scanInverse; - int currPrintMode; - float synPulseNumPerMm; - int cnt1EndValue; - int cnt1StartValue; - int cnt1StepValue; - int cnt1RepeateValue; - int cnt1CurrValue; - int cnt2EndValue; - int cnt2StartValue; - int cnt2StepValue; - int cnt2RepeateValue; - int cnt2CurrValue; + int reclaimPumpPWMWidth; + bool leftRightInverse; + bool upDownInverse; + bool scanInverse; + int currPrintMode; + float synPulseNumPerMm; + int cnt1EndValue; + int cnt1StartValue; + int cnt1StepValue; + int cnt1RepeateValue; + int cnt1CurrValue; + int cnt2EndValue; + int cnt2StartValue; + int cnt2StepValue; + int cnt2RepeateValue; + int cnt2CurrValue; int startVoltage; int endVoltage; float synTriggerPrintLenMm; - int highVoltageLevel; - int pressure; - int viscosityPumpInterval; - int reclaimTankTime; + int highVoltageLevel; + int pressure; + int viscosityPumpInterval; + int reclaimTankTime; int temperature;//喷头温度 - int viscosity; - int viscosityAdjust; - bool stopCounterMeterAfterFault; - bool suspendAfterPhaseFault; - int oscillatoFreq; - int synTriggerPrintLenRatio; + int viscosity; + int viscosityAdjust; + bool stopCounterMeterAfterFault; + bool suspendAfterPhaseFault; + int oscillatoFreq; + int synTriggerPrintLenRatio; char lastOpenedFileName[100]; int phaseHighLowRatio; //相位高电平占空比 int phaseDetectVol; //因为和实际的值有一个转换过程,所以用此变量做中转 @@ -672,8 +672,8 @@ typedef struct { int powerOffAfterPhaseFault; int synClearCntInEleEyeMode; //在点眼触发模式下通过同步器清零 int eleEyeClearCntInSynMode; // CNT2 D5=0选择电眼复位 D5=1选择电眼加1 ; - // CNT1 D4=0选择电眼复位 D4=1选择电眼加1 ; - // D2D1D0 =00 禁止电眼操作,01 电眼复位,打印完成,10 电眼立即复位 + // CNT1 D4=0选择电眼复位 D4=1选择电眼加1 ; + // D2D1D0 =00 禁止电眼操作,01 电眼复位,打印完成,10 电眼立即复位 int fontPixelSize; //用来记录上一次设置的字体大小 //int septalPostion; @@ -692,7 +692,7 @@ typedef struct { int SynCntEn:1; int ResetProductCntEn:1; // 复位产品计数器 int ResetAllProductCntEn:1;// 复位总产品计数器 - int HVFaultCloseEn:1;// 高压故障关回收槽 + int HVFaultCloseEn:1;// 高压故障关回收槽 int MirrABCEnable:2; // 0 无镜像,1 水平,2 垂直 int checkSpace:1; //使用空列 int varLenEn:1;// @@ -723,13 +723,13 @@ typedef struct { unsigned short AltMirrorGap;// 镜像打印间隔 Mirror image alternation long long openInkLineTime; //记录墨线开关时间 136年 以秒为单位 long TrunOnPowerCnt; // 开机次数 20151218 -// int varLenEn:1;// -// unsigned char varLen; // 可变长 + // int varLenEn:1;// + // unsigned char varLen; // 可变长 unsigned short headLen; unsigned short endLen; int ExpiryDay; //有效期天数 unsigned char ExpirySplitMode; - quint16 diaphramOffset; // 隔膜位置偏移,当隔膜位置低于(设定的隔膜位置-偏移),主墨泵就开启 + quint16 diaphramOffset; // 隔膜位置偏移,当隔膜位置低于(设定的隔膜位置-偏移),主墨泵就开启 unsigned char gearPumpEnable:1; quint16 gearPumpValue; @@ -949,24 +949,24 @@ typedef struct #define AUTOCLEAN_STATUS_STEP3_TIME (5) typedef struct { - int type; - int digitalNum; + int type; + int digitalNum; int width; // 字模的宽度 int height; // 字模的高度 - int startColPos; - int endRowPos; - int startRowPos; + int startColPos; + int endRowPos; + int startRowPos; int bassAddr; // 字模的地址, 从0开始,不同类型会一直增加 - int currVal; - int bold; - int letterSpace; - //int chartype;// 字体类型:0 常规,1 左横,2 右横, 4 倒立(Nc) - //--------------------- + int currVal; + int bold; + int letterSpace; + //int chartype;// 字体类型:0 常规,1 左横,2 右横, 4 倒立(Nc) + //--------------------- unsigned char *dat; //指向申请内存的空间 生成字模数据 - int datWidth; //datWidth * datHeight为像素的数目,申请空间的大小为datWidth*rowByteNum; + int datWidth; //datWidth * datHeight为像素的数目,申请空间的大小为datWidth*rowByteNum; int datHeight; // 变量的高度 - int rowByteNum; - bool original; //表示当前dat是通过calloc申请而来还是直接引用别人的指针,主要是影响到指针的释放 + int rowByteNum; + bool original; //表示当前dat是通过calloc申请而来还是直接引用别人的指针,主要是影响到指针的释放 }vars_t; typedef struct{ @@ -996,7 +996,7 @@ typedef struct{ unsigned char phaseChargeResult[8]; -/* + /* unsigned short ink_dot_num:6; //飞过相检头上的墨点数 0x20 unsigned short detect_phase_error:1; unsigned short flight_tm_error:1; @@ -1029,7 +1029,7 @@ typedef struct{ unsigned char ele_product_cnt_reset; //36 {ele_product_cnt_reset[1:0]}; unsigned char RandomNum; // 目前实际只[4:0] 37 unsigned int totalProductCnt ; // 总产品计数器 38393A3B // [1:0] 11立即清零, [2]计数器1单独清零 [3]计数2单独清零 [4]总产品计数器清零 - unsigned int total_syn_pulse_num ; // + unsigned int total_syn_pulse_num ; // unsigned int volGap_pulse_num:24; // unsigned int AlterMode:8; // 交替状态 0,1,2; //0x43 共 0x44个字节 unsigned int VREF:16; @@ -1171,84 +1171,84 @@ typedef struct{ unsigned int septalPositionOverFlowCnt; bool powerOffAfterInkOrSOLVEmptyAppending; //墨水或溶剂空3小时标志 // - alterPrint_t alterPrint; // 交替打印 - stepPrint_t stepPrint; // 跳米打印 - build_dat_t build_dat; - xor_sync_couter xor_sync; - unsigned int InkOrSOLVEmptyCnt; - unsigned char EditMode; // + alterPrint_t alterPrint; // 交替打印 + stepPrint_t stepPrint; // 跳米打印 + build_dat_t build_dat; + xor_sync_couter xor_sync; + unsigned int InkOrSOLVEmptyCnt; + unsigned char EditMode; // - unsigned char updateSoftEN:1; - unsigned char adjHightVolInitEN:1; - unsigned char FileChangeRestCntFlag:1; // 更换文件,清除计数器 - unsigned char HVFaultCloseEn:1;// 高压故障关回收槽 - unsigned char ExtScreenEn; // 外接屏连接正常 - unsigned char waitHightVolOff,waitHightVolOn; // - unsigned char addSpace;//sysPara->para.checkSpace - unsigned char autoCleanStatus; // clean status, 0: NONE,1: Step1 ... - unsigned int autoCleanTime; // clean time + unsigned char updateSoftEN:1; + unsigned char adjHightVolInitEN:1; + unsigned char FileChangeRestCntFlag:1; // 更换文件,清除计数器 + unsigned char HVFaultCloseEn:1;// 高压故障关回收槽 + unsigned char ExtScreenEn; // 外接屏连接正常 + unsigned char waitHightVolOff,waitHightVolOn; // + unsigned char addSpace;//sysPara->para.checkSpace + unsigned char autoCleanStatus; // clean status, 0: NONE,1: Step1 ... + unsigned int autoCleanTime; // clean time - unsigned int cnt1GroupCurrentLoop; //分段计米 计数器1当前第几次循环 - unsigned char cnt1GroupRunningIndex; //分段计米 计数器1当前第几次段 - unsigned int indoorTemperature; //开机记录喷头温度,作为是否调整粘度的根据 - unsigned int needPowerOffTimerout; - unsigned char bLanConfigManual; //手动设定有线ip 地址 - quint16 r_print_q; - quint8 col_state; - quint8 r_row_sequcence; - quint8 dot_num; - quint8 curr_index; - quint16 RowADC; - quint16 w_curr_DAC; - quint16 curr_DAC; - quint16 printed_column; + unsigned int cnt1GroupCurrentLoop; //分段计米 计数器1当前第几次循环 + unsigned char cnt1GroupRunningIndex; //分段计米 计数器1当前第几次段 + unsigned int indoorTemperature; //开机记录喷头温度,作为是否调整粘度的根据 + unsigned int needPowerOffTimerout; + unsigned char bLanConfigManual; //手动设定有线ip 地址 + quint16 r_print_q; + quint8 col_state; + quint8 r_row_sequcence; + quint8 dot_num; + quint8 curr_index; + quint16 RowADC; + quint16 w_curr_DAC; + quint16 curr_DAC; + quint16 printed_column; - quint16 printed_adj_dac[40]; - bool cnt3CurrentValueInitDoneFlag; - stru_counter3 Status_Counter3; - bool printDoneFlag; - bool oneCodePrintOnce; - bool forTemplateUse; - SpecialVarPrint specialVarPrint; - bool lastHighVoltageFault; //高压错误 - bool circleProductCnt; - unsigned int printTotalColNum:16; - unsigned char pixNumPerCol; - unsigned short XXXDay; - int cnt4CurrValue; - bool flagOfAdjustWidth_1; - unsigned char splitMode_Adjust_1; - bool flagOfAdjustWidth_2; - unsigned char splitMode_Adjust_2; -//edit-12.2 - bool flagOfNo67FPGA; //识别67版本,67版本使用4000列,其他版本使用8000列 - short FPGAVersionType; //兼容旧的FPGA版本,0=新FPGA. 旧FPGA: 1=No66,2=No67,3=No72,4=No73 //VX4使用,VX5不需要 - unsigned int textEditTotalCol; - quint16 gearspeed; - int sizeFPGA; - int sizeSTM32; - bool flagOfSpeedAlarm; - bool flagOfPressureFault; - int currVoltageVersion; - int lastVoltageVersion; - unsigned int stm32Verion; - bool stm32Time; - unsigned int machineMac; - int sizequeueFPGA; - bool flagOfRebootEnable; - bool logflag; - unsigned int TextInkDots; - bool flagOfSolventMaxNum; - bool flagOfInkMaxDot; - bool flagOfNeedInkCard; - bool flagOfNeedSolventCard; - bool flagOfKeyBoardType; - unsigned char changed; - unsigned int inkWarningCnt; - unsigned int solventWarningCnt; - unsigned int showInkWarningNumber; - unsigned int showSolventWarningNumber; - bool needMaintenanceRemind; + quint16 printed_adj_dac[40]; + bool cnt3CurrentValueInitDoneFlag; + stru_counter3 Status_Counter3; + bool printDoneFlag; + bool oneCodePrintOnce; + bool forTemplateUse; + SpecialVarPrint specialVarPrint; + bool lastHighVoltageFault; //高压错误 + bool circleProductCnt; + unsigned int printTotalColNum:16; + unsigned char pixNumPerCol; + unsigned short XXXDay; + int cnt4CurrValue; + bool flagOfAdjustWidth_1; + unsigned char splitMode_Adjust_1; + bool flagOfAdjustWidth_2; + unsigned char splitMode_Adjust_2; + //edit-12.2 + bool flagOfNo67FPGA; //识别67版本,67版本使用4000列,其他版本使用8000列 + short FPGAVersionType; //兼容旧的FPGA版本,0=新FPGA. 旧FPGA: 1=No66,2=No67,3=No72,4=No73 //VX4使用,VX5不需要 + unsigned int textEditTotalCol; + quint16 gearspeed; + int sizeFPGA; + int sizeSTM32; + bool flagOfSpeedAlarm; + bool flagOfPressureFault; + int currVoltageVersion; + int lastVoltageVersion; + unsigned int stm32Verion; + bool stm32Time; + unsigned int machineMac; + int sizequeueFPGA; + bool flagOfRebootEnable; + bool logflag; + unsigned int TextInkDots; + bool flagOfSolventMaxNum; + bool flagOfInkMaxDot; + bool flagOfNeedInkCard; + bool flagOfNeedSolventCard; + bool flagOfKeyBoardType; + unsigned char changed; + unsigned int inkWarningCnt; + unsigned int solventWarningCnt; + unsigned int showInkWarningNumber; + unsigned int showSolventWarningNumber; + bool needMaintenanceRemind; }sysStatus_t; #include @@ -1297,38 +1297,40 @@ typedef struct { class SysPara{ //Q_OBJECT + +private: + SysPara(void); public : + static SysPara* ins(); + QString sysFile; + printPara_t print; + printPara_t printPre; + printPara_t printInit; + sysPara_t para; + voltePara_t voltePara; + voltePara_t_25Dots voltePara_25Dots; + voltePara_t_No73 voltePara_No73; + RFIDPara_t RFIDPara; + sysStatus_t status; + ModbusPrintStatus modbusStatus; + ModbusPrintParas modbusParas; - SysPara(void); - QString sysFile; - printPara_t print; - printPara_t printPre; - printPara_t printInit; - sysPara_t para; - voltePara_t voltePara; - voltePara_t_25Dots voltePara_25Dots; - voltePara_t_No73 voltePara_No73; - RFIDPara_t RFIDPara; - sysStatus_t status; - ModbusPrintStatus modbusStatus; - ModbusPrintParas modbusParas; + JSON_DATA Get_JSON_DATA; // unused - JSON_DATA Get_JSON_DATA; // unused - - DevOp *devOp; /*设备操作*/ - void loadParaFromFile(); - void saveParaToFile(); - void loadDefaultPara(); - void loadDefaultPrintPara(); - void loadPrintParaFromFile(QString fileName); - void savePrintParaToFile(); - void loadVolteParaFromFile(PRINT_MODE mode); - void saveRFIDPara(); - bool loadRFIDPara(); - void comparePrintStruct(); - void loadParaToPrintInit(); - void updatePrintInitToPara(); - private: + DevOp *devOp; /*设备操作*/ + void loadParaFromFile(); + void saveParaToFile(); + void loadDefaultPara(); + void loadDefaultPrintPara(); + void loadPrintParaFromFile(QString fileName); + void savePrintParaToFile(); + void loadVolteParaFromFile(PRINT_MODE mode); + void saveRFIDPara(); + bool loadRFIDPara(); + void comparePrintStruct(); + void loadParaToPrintInit(); + void updatePrintInitToPara(); +private: }; diff --git a/SystemManage.cpp b/SystemManage.cpp index 1771446..a2a2602 100644 --- a/SystemManage.cpp +++ b/SystemManage.cpp @@ -29,6 +29,10 @@ SystemManage::SystemManage(QWidget *parent) : { ui->setupUi(this); + if (sysPara == nullptr) { + sysPara = SysPara::ins(); + } + timeDia.hide(); setPumpValveBottonEnable(false); ui->pushButtonCompressPump->setEnabled(false); diff --git a/SystemManage.h b/SystemManage.h index 536e815..9457287 100644 --- a/SystemManage.h +++ b/SystemManage.h @@ -3,7 +3,6 @@ #include -#include "ParaSettingUI.h" #include "TimeSettingDialog.h" #include #include "DialogAuthorization.h" @@ -17,7 +16,7 @@ namespace Ui { class SystemManage; } -class SystemManage : public QWidget,public ParaSettingUI +class SystemManage : public QWidget { Q_OBJECT @@ -136,6 +135,7 @@ signals: private: Ui::SystemManage *ui; + SysPara* sysPara = nullptr; TimeSettingDialog timeDia; QTimer *timer,*timer2,*autoCleanTimer,*reclaimTankTestTimer,*inkcloseCountTimer,*MainnkCmpSepetalTimer,*programFPGATimer; diff --git a/SystemManage.ui b/SystemManage.ui index 820a407..459b244 100644 --- a/SystemManage.ui +++ b/SystemManage.ui @@ -82,7 +82,7 @@ 9 9 - 750 + 790 471 @@ -108,13 +108,13 @@ - 0 + 200 65 - 130 + 200 16777215 @@ -138,15 +138,6 @@ 0 - - - 16777215 - 16777215 - - - - Qt::ClickFocus - diff --git a/SystemSetting.cpp b/SystemSetting.cpp index 68cf18c..1483e1f 100644 --- a/SystemSetting.cpp +++ b/SystemSetting.cpp @@ -35,6 +35,11 @@ SystemSetting::SystemSetting(QWidget *parent) : { ui->setupUi(this); + + if (sysPara == nullptr) { + sysPara = SysPara::ins(); + } + progressBar.setGeometry(200,200,300,40); //将其放在最中间 progressBar.hide(); timer = new QTimer(); diff --git a/SystemSetting.h b/SystemSetting.h index 1e5a03d..dfe7e6d 100644 --- a/SystemSetting.h +++ b/SystemSetting.h @@ -3,7 +3,6 @@ #include #include -#include "ParaSettingUI.h" #include "TimeSettingDialog.h" #include #include "DialogAuthorization.h" @@ -14,7 +13,7 @@ namespace Ui { class SystemSetting; } -class SystemSetting : public QWidget,public ParaSettingUI +class SystemSetting : public QWidget { Q_OBJECT @@ -63,6 +62,8 @@ signals: private: Ui::SystemSetting *ui; + SysPara* sysPara = nullptr; + QTimer *timer,*timer2, *SetinkcloseCountTimer, *timerAuto; unsigned char enCleanUpAppendFlag; // 0空闲,1关开回收槽,2手动,3清洗,4恢复,5停止,6 bool r_PumpValveControledByHand; diff --git a/SystemUpdate.cpp b/SystemUpdate.cpp index 9a22a92..c9511b7 100644 --- a/SystemUpdate.cpp +++ b/SystemUpdate.cpp @@ -20,11 +20,6 @@ SystemUpdate::~SystemUpdate() delete ui; } -void SystemUpdate::bindSysPara(SysPara *sysPara) -{ - dlgLanguage.bindSysPara(sysPara); -} - /*关闭按键*/ void SystemUpdate::on_closeBtn_clicked() { diff --git a/SystemUpdate.h b/SystemUpdate.h index ddd0b68..0686623 100644 --- a/SystemUpdate.h +++ b/SystemUpdate.h @@ -22,8 +22,6 @@ public: explicit SystemUpdate(QWidget *parent = 0); ~SystemUpdate(); - void bindSysPara(SysPara *sysPara); - private: Ui::SystemUpdate *ui; void applyStyleSheet(); // 应用样式表 diff --git a/chinese.ts b/chinese.ts index 52a4d4b..4de46c8 100644 --- a/chinese.ts +++ b/chinese.ts @@ -1627,67 +1627,67 @@ - + 导出到U盘 - + 从U盘导入 - + 全选 - + 取消全选 - + 删除已选 - + 过滤器 - + 文件 - + 图标 - + 字体 - + 全部 - + 硬盘 - + 设备 - + ✕ @@ -1985,11 +1985,6 @@ MAC无效卡! - - - card data: %1 - - 无效卡,这张卡已经在%1时使用过 @@ -2841,7 +2836,7 @@ - + 额外设置 @@ -2862,7 +2857,7 @@ - + 系统授权 @@ -2877,28 +2872,28 @@ - + 提示 - + RFID卡清零! - - + + 取消授权 - + 警告 - + 密码错误:%1 @@ -3649,7 +3644,8 @@ p, li { white-space: pre-wrap; } - 喷印模式 + 喷印模式: + 喷印模式 @@ -3669,42 +3665,52 @@ p, li { white-space: pre-wrap; } - + + 喷印延迟(毫秒): + + + + + 无限长 + + + + 重复间隔(毫秒): - + 重复次数: - + 封锁时间(毫秒): - + 脉冲数/毫米: - + 喷印间隔(毫米): - + 同步喷印模式: - + 信息上下颠倒 - + 信息左右颠倒 @@ -3714,288 +3720,260 @@ p, li { white-space: pre-wrap; } - + 脉冲信号值: - + 无镜像打印 - + 自动水平翻转 - + 自动垂直翻转 - + 中心对称旋转 - - - - + + + 延时(毫秒): - - + + 触发延时(毫秒) - + 脉冲输出使能 - + 禁止电眼清零 - + 允许电眼复位 - + 允许电眼立即复位 - + 电眼清零 - + 字符宽度: - + 产生脉冲所需计数: - + 间隔模式: - + 行末<->行首 - + 行首<->行首 - - - + + 重复间隔(毫秒) - + 封锁时间(毫秒) - - 同步器清零 - - - - - 同步打印 - - - - + 电眼信号来源 - - + + 内部 - - + + 外部 - + 光电边沿触发 - + 光电电平触发 - - GroupBox - - - - - 延时触发 - - - - + 编码器参数 - + 触发延时(毫秒): 脉冲数/毫米 - + 脉冲数修正 - + 按字符宽度 - + 按喷印比例 - + 同步器正反转打印 - + 同步器只正转打印 - + 同步器只反转打印 - - 同步器触发 - - - - + 同步器来源 - + 其他设置 - + 镜象交替类型: - + 镜像交替间隔: - + ✕ - + ✓ - + 提示 - + 应用成功 - + 提示:参数不正确 - + 要求:触发长度小于喷印间隔 - - - - + + + 延时(毫米): - - - + + + 触发延时(毫米) - - + + 重复间隔(毫米) - - + + 抑止距离(毫米) - + 抑止距离(毫秒) - + 字符宽度 - + 喷印比例(%) @@ -4742,6 +4720,7 @@ p, li { white-space: pre-wrap; } + @@ -4934,6 +4913,11 @@ p, li { white-space: pre-wrap; } 确定要升级FPGA软件吗? + + + 没有FPGA升级文件 + + 找不到 lib.tar! diff --git a/dialogmaintenancetimesetting.ui b/dialogmaintenancetimesetting.ui index 814df0c..813a175 100644 --- a/dialogmaintenancetimesetting.ui +++ b/dialogmaintenancetimesetting.ui @@ -124,20 +124,23 @@ QPushButton { - 250 + 230 70 - 121 + 141 30 剩余维护时间: + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + - 370 + 380 70 131 30 @@ -201,7 +204,7 @@ QPushButton { - 370 + 380 150 131 30 @@ -214,15 +217,18 @@ QPushButton { - 250 + 230 150 - 121 + 141 30 当前运行时间: + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + diff --git a/digitalinput.ui b/digitalinput.ui index 5a423c7..28fe22d 100644 --- a/digitalinput.ui +++ b/digitalinput.ui @@ -6,7 +6,7 @@ 0 0 - 216 + 231 260 @@ -147,7 +147,7 @@ - 退格 + DEL @@ -426,7 +426,7 @@ - 清零 + Clear diff --git a/dlgQrCode.cpp b/dlgQrCode.cpp index f69f41c..17d76d9 100644 --- a/dlgQrCode.cpp +++ b/dlgQrCode.cpp @@ -48,6 +48,11 @@ dlgQrCode::dlgQrCode(QWidget *parent) : ui(new Ui::dlgQrCode) { ui->setupUi(this); + + if (sysPara == nullptr) { + sysPara = SysPara::ins(); + } + qrOption = new qrOption_t; //ui->labQRImage->setText(""); ui->labName->setText(""); diff --git a/dlginputaddr.cpp b/dlginputaddr.cpp index 225e637..fc3af8d 100644 --- a/dlginputaddr.cpp +++ b/dlginputaddr.cpp @@ -23,6 +23,7 @@ DlgInputAddr::DlgInputAddr(QWidget *parent) : ui(new Ui::DlgInputAddr) { ui->setupUi(this); + initTimer(); connect(this,SIGNAL(changePowerCnt(QString )),ui->labPowerMinuteCnt,SLOT(setText(QString))); connect(this,SIGNAL(changePrintCnt(QString )),ui->labPrintDotCnt,SLOT(setText(QString))); curDate =QDate::currentDate(); @@ -476,6 +477,14 @@ void DlgInputAddr::setTime(int year, int mon, int mday, int hour, int min, int s adjustdate1(year,mon,mday,hour,min,sec); } +void DlgInputAddr::initTimer() +{ + if (jd_timer) return; + jd_timer = new QTimer(); + connect(jd_timer, SIGNAL(timeout()), this, SLOT(jd_timerHandler())); + jd_timer->start(10 * 1000); +} + unsigned char DlgInputAddr::checkSupperJmOLD(QString str) { QString s; diff --git a/dlginputaddr.h b/dlginputaddr.h index 0168276..2b4e289 100644 --- a/dlginputaddr.h +++ b/dlginputaddr.h @@ -7,6 +7,7 @@ #include #include +#include typedef struct { // 28B unsigned int addr; unsigned char enable; //1Byte @@ -79,6 +80,9 @@ private: Ui::DlgInputAddr *ui; QDate curDate; QReadWriteLock jdDataRwLock; + + QTimer* jd_timer = nullptr; + void initTimer(); }; #endif // DLGINPUTADDR_H diff --git a/dlgmutilanguage.cpp b/dlgmutilanguage.cpp index 80937bb..c35a705 100644 --- a/dlgmutilanguage.cpp +++ b/dlgmutilanguage.cpp @@ -12,6 +12,10 @@ DlgMutiLanguage::DlgMutiLanguage(QWidget *parent) : { ui->setupUi(this); // ui->listWidget->hide(); + if (sysPara == nullptr) { + sysPara = SysPara::ins(); + } + connect(ui->buttonBox,SIGNAL(accepted()),this,SLOT(SetNewLanguage())); LangIndex=INPUT_METHOD_TYPE_CHINESE; } diff --git a/dlgmutilanguage.h b/dlgmutilanguage.h index 38dcf51..e1b4ca4 100644 --- a/dlgmutilanguage.h +++ b/dlgmutilanguage.h @@ -1,7 +1,6 @@ #ifndef DLGMUTILANGUAGE_H #define DLGMUTILANGUAGE_H -#include "ParaSettingUI.h" #include "SysPara.h" #include @@ -10,7 +9,7 @@ namespace Ui { class DlgMutiLanguage; } -class DlgMutiLanguage : public QDialog,public ParaSettingUI +class DlgMutiLanguage : public QDialog { Q_OBJECT @@ -25,6 +24,7 @@ public slots: void SetNewLanguage(); private: Ui::DlgMutiLanguage *ui; + SysPara* sysPara = nullptr; void mySleep(unsigned int msec); }; diff --git a/english.ts b/english.ts index 52a4d4b..4de46c8 100644 --- a/english.ts +++ b/english.ts @@ -1627,67 +1627,67 @@ - + 导出到U盘 - + 从U盘导入 - + 全选 - + 取消全选 - + 删除已选 - + 过滤器 - + 文件 - + 图标 - + 字体 - + 全部 - + 硬盘 - + 设备 - + ✕ @@ -1985,11 +1985,6 @@ MAC无效卡! - - - card data: %1 - - 无效卡,这张卡已经在%1时使用过 @@ -2841,7 +2836,7 @@ - + 额外设置 @@ -2862,7 +2857,7 @@ - + 系统授权 @@ -2877,28 +2872,28 @@ - + 提示 - + RFID卡清零! - - + + 取消授权 - + 警告 - + 密码错误:%1 @@ -3649,7 +3644,8 @@ p, li { white-space: pre-wrap; } - 喷印模式 + 喷印模式: + 喷印模式 @@ -3669,42 +3665,52 @@ p, li { white-space: pre-wrap; } - + + 喷印延迟(毫秒): + + + + + 无限长 + + + + 重复间隔(毫秒): - + 重复次数: - + 封锁时间(毫秒): - + 脉冲数/毫米: - + 喷印间隔(毫米): - + 同步喷印模式: - + 信息上下颠倒 - + 信息左右颠倒 @@ -3714,288 +3720,260 @@ p, li { white-space: pre-wrap; } - + 脉冲信号值: - + 无镜像打印 - + 自动水平翻转 - + 自动垂直翻转 - + 中心对称旋转 - - - - + + + 延时(毫秒): - - + + 触发延时(毫秒) - + 脉冲输出使能 - + 禁止电眼清零 - + 允许电眼复位 - + 允许电眼立即复位 - + 电眼清零 - + 字符宽度: - + 产生脉冲所需计数: - + 间隔模式: - + 行末<->行首 - + 行首<->行首 - - - + + 重复间隔(毫秒) - + 封锁时间(毫秒) - - 同步器清零 - - - - - 同步打印 - - - - + 电眼信号来源 - - + + 内部 - - + + 外部 - + 光电边沿触发 - + 光电电平触发 - - GroupBox - - - - - 延时触发 - - - - + 编码器参数 - + 触发延时(毫秒): 脉冲数/毫米 - + 脉冲数修正 - + 按字符宽度 - + 按喷印比例 - + 同步器正反转打印 - + 同步器只正转打印 - + 同步器只反转打印 - - 同步器触发 - - - - + 同步器来源 - + 其他设置 - + 镜象交替类型: - + 镜像交替间隔: - + ✕ - + ✓ - + 提示 - + 应用成功 - + 提示:参数不正确 - + 要求:触发长度小于喷印间隔 - - - - + + + 延时(毫米): - - - + + + 触发延时(毫米) - - + + 重复间隔(毫米) - - + + 抑止距离(毫米) - + 抑止距离(毫秒) - + 字符宽度 - + 喷印比例(%) @@ -4742,6 +4720,7 @@ p, li { white-space: pre-wrap; } + @@ -4934,6 +4913,11 @@ p, li { white-space: pre-wrap; } 确定要升级FPGA软件吗? + + + 没有FPGA升级文件 + + 找不到 lib.tar! diff --git a/farsi.ts b/farsi.ts index 52a4d4b..4de46c8 100644 --- a/farsi.ts +++ b/farsi.ts @@ -1627,67 +1627,67 @@ - + 导出到U盘 - + 从U盘导入 - + 全选 - + 取消全选 - + 删除已选 - + 过滤器 - + 文件 - + 图标 - + 字体 - + 全部 - + 硬盘 - + 设备 - + ✕ @@ -1985,11 +1985,6 @@ MAC无效卡! - - - card data: %1 - - 无效卡,这张卡已经在%1时使用过 @@ -2841,7 +2836,7 @@ - + 额外设置 @@ -2862,7 +2857,7 @@ - + 系统授权 @@ -2877,28 +2872,28 @@ - + 提示 - + RFID卡清零! - - + + 取消授权 - + 警告 - + 密码错误:%1 @@ -3649,7 +3644,8 @@ p, li { white-space: pre-wrap; } - 喷印模式 + 喷印模式: + 喷印模式 @@ -3669,42 +3665,52 @@ p, li { white-space: pre-wrap; } - + + 喷印延迟(毫秒): + + + + + 无限长 + + + + 重复间隔(毫秒): - + 重复次数: - + 封锁时间(毫秒): - + 脉冲数/毫米: - + 喷印间隔(毫米): - + 同步喷印模式: - + 信息上下颠倒 - + 信息左右颠倒 @@ -3714,288 +3720,260 @@ p, li { white-space: pre-wrap; } - + 脉冲信号值: - + 无镜像打印 - + 自动水平翻转 - + 自动垂直翻转 - + 中心对称旋转 - - - - + + + 延时(毫秒): - - + + 触发延时(毫秒) - + 脉冲输出使能 - + 禁止电眼清零 - + 允许电眼复位 - + 允许电眼立即复位 - + 电眼清零 - + 字符宽度: - + 产生脉冲所需计数: - + 间隔模式: - + 行末<->行首 - + 行首<->行首 - - - + + 重复间隔(毫秒) - + 封锁时间(毫秒) - - 同步器清零 - - - - - 同步打印 - - - - + 电眼信号来源 - - + + 内部 - - + + 外部 - + 光电边沿触发 - + 光电电平触发 - - GroupBox - - - - - 延时触发 - - - - + 编码器参数 - + 触发延时(毫秒): 脉冲数/毫米 - + 脉冲数修正 - + 按字符宽度 - + 按喷印比例 - + 同步器正反转打印 - + 同步器只正转打印 - + 同步器只反转打印 - - 同步器触发 - - - - + 同步器来源 - + 其他设置 - + 镜象交替类型: - + 镜像交替间隔: - + ✕ - + ✓ - + 提示 - + 应用成功 - + 提示:参数不正确 - + 要求:触发长度小于喷印间隔 - - - - + + + 延时(毫米): - - - + + + 触发延时(毫米) - - + + 重复间隔(毫米) - - + + 抑止距离(毫米) - + 抑止距离(毫秒) - + 字符宽度 - + 喷印比例(%) @@ -4742,6 +4720,7 @@ p, li { white-space: pre-wrap; } + @@ -4934,6 +4913,11 @@ p, li { white-space: pre-wrap; } 确定要升级FPGA软件吗? + + + 没有FPGA升级文件 + + 找不到 lib.tar! diff --git a/fileManage/FileManageWidget.ui b/fileManage/FileManageWidget.ui index 4e72a02..5990a8f 100644 --- a/fileManage/FileManageWidget.ui +++ b/fileManage/FileManageWidget.ui @@ -117,7 +117,7 @@ QComboBox::drop-down { /* 下拉箭头图标 */ QComboBox::down-arrow { - image: url(image/down_white.png); + image: url(:/image/down_white.png); width: 16px; /* 图标显示宽度 */ height: 16px; /* 图标显示高度 */ } diff --git a/fontsetwidget.cpp b/fontsetwidget.cpp index 1121621..2ee8ef0 100644 --- a/fontsetwidget.cpp +++ b/fontsetwidget.cpp @@ -12,6 +12,10 @@ FontSetWidget::FontSetWidget(QWidget *parent) : { ui->setupUi(this); + if (sysPara == nullptr) { + sysPara = SysPara::ins(); + } + lineSpaceEdit = ui->lineSpaceEdit; lineSpaceMinusBtn = ui->lineSpaceMinusBtn; lineSpacePlusBtn = ui->lineSpacePlusBtn; @@ -64,11 +68,6 @@ void FontSetWidget::bindTxTEdit(QTextEdit* textEdit){ m_textEdit = textEdit; } -void FontSetWidget::bindSysPara(SysPara *sysPara){ - this->sysPara = sysPara; - -} - void FontSetWidget::on_buttonSelectFont_pressed(){ // int fontSize; @@ -205,7 +204,6 @@ void FontSetWidget::onDialogLineSpaceAccepted(){ QTextCursor cursor = m_textEdit->textCursor(); int position = cursor.position(); -// qDebug()<<"position line:"<para.textEditLineSpace,&sysPara->para.textEditCharSpace); sysPara->para.textEditLineSpace=sysPara->para.textEditLineSpace+1;//新系统行间距需要加1 diff --git a/fontsetwidget.h b/fontsetwidget.h index 209a8e1..f3579d6 100644 --- a/fontsetwidget.h +++ b/fontsetwidget.h @@ -1,9 +1,10 @@ #ifndef FONTSETWIDGET_H #define FONTSETWIDGET_H +#include "SysPara.h" + #include #include -#include "ParaSettingUI.h" #include #include @@ -15,7 +16,7 @@ namespace Ui { class FontSetWidget; } -class FontSetWidget : public QWidget,public ParaSettingUI +class FontSetWidget : public QWidget { Q_OBJECT @@ -37,8 +38,6 @@ public: void on_buttonSelectFont_pressed(); void onDialogLineSpaceAccepted(); - void bindSysPara(SysPara *sysPara); - void getValueLineSpace(int *lineSpace,int *charSpace); void setValueLineSpace(int lineSpace,int charSpace); @@ -47,6 +46,8 @@ public slots: private: Ui::FontSetWidget *ui; + SysPara* sysPara = nullptr; + void init(); void applyStyleSheet(); // 应用样式表 void adjustValue(QLineEdit* edit, int delta); diff --git a/korean.ts b/korean.ts index 42f0086..4a4aea1 100644 --- a/korean.ts +++ b/korean.ts @@ -1,4 +1,4 @@ - + @@ -2333,10 +2333,6 @@ 喷码机维护时间已到,请48小时内与厂家联系! 유지보수 시간이 도래했습니다. 48시간 이내에 공급업체에 연락하십시오! - - 喷码机维护时间已到,请48小时内与厂家联系! - 유지보수 시간이 도래했습니다. 48시간 이내에 공급업체에 연락하십시오! - 当前日期: 현재 날짜: @@ -2653,67 +2649,67 @@ 관리자 - + 导出到U盘 USB로 복사 - + 从U盘导入 메모리로 복사 - + 全选 전체 선택 - + 取消全选 모두 해제 - + 删除已选 선택 삭제 - + 过滤器 필터 - + 文件 파일 - + 图标 아이콘 - + 字体 폰트 - + 全部 전체 - + 硬盘 내부 메모리 - + 设备 장치 - + ✕ ✕ @@ -3108,12 +3104,14 @@ FPGA 통신 복구 + 开始自检,请等待60秒... - 자체 진단 시작 60초 대기 + 자체 진단 시작 60초 대기 + 开始自检,请等待%1秒... - 자체 진단 시작 %1초 대기 + 자체 진단 시작 %1초 대기 @@ -3246,7 +3244,7 @@ 13.读卡器故障! - 카드 리더기 고장! + 13.카드 리더기 고장! @@ -3296,11 +3294,6 @@ mtFlag: %1 mtFlag: %1 - - - 开始自检,请等待%1秒... - 자체 진단 시작 (%1초 대기) - 确认要刷墨水卡吗? @@ -3708,20 +3701,14 @@ 保养期已超过%1小时,请及时保养,否则喷码机容易损坏 유 보수 기간 %1시간 초과, 유지 보수 해주세요. - - - 开始自检,请等待60秒... - 자체 진단 시작, 60초 대기... - 确认要刷保养卡吗? %1 秒后将自动确认 유지 보수 카드 사용 확인? %1초 후 자동 확인 - card data: %1 - 카드 데이터: %1 + 카드 데이터: %1 @@ -4802,7 +4789,7 @@ Char - + 额外设置 추가 설정 @@ -4822,7 +4809,7 @@ Char - + 系统授权 시스템 권한 @@ -4853,28 +4840,28 @@ Char mtFlog1: %1 - + 提示 팁 - + RFID卡清零! RFID 카드 초기화! - - + + 取消授权 권한 해제 - + 警告 경고 - + 密码错误:%1 비밀번호 오류:%1 @@ -5820,7 +5807,7 @@ Char 2.机器更换主板或者高压包,请进入“系统设置”点击“重置高压”,字高设置为90时,重置高压报警值应在480—550之间; - 2. 메인보드 또는 고압 팩을 교체한 경우, "시스템 설정"에 들어가 "고압 리셋"을 클릭하십시오. 글자 높이를 90으로 설정했을 때, 고압 경보 리셋 값은 480—550 사이여야 합니다. + 2. 메인보드 또는 고압 팩을 교체한 경우, "시스템 설정"에 들어가 "고압 리셋"을 클릭하십시오. 글자 높이를 90으로 설정했을 때, 고압 경보 리셋 값은 480—550 사이여야 합니다. 3.高压线路漏电,请更换高压线路; @@ -5872,7 +5859,7 @@ Char 5. 确认各参数及设备无异常后请进入“打印设置”取消“回收故障处理”的勾选,退回主窗口界面点击“故障恢复”按钮. - 5. 파라미터 및 장비에 이상이 없음을 확인한 후 "인쇄 설정"에 들어가 "거터 오류 처리"의 체크를 해제하고, 메인 화면으로 돌아가 "오류 복구" 버튼을 클릭하십시오.. + 5. 파라미터 및 장비에 이상이 없음을 확인한 후 "인쇄 설정"에 들어가 "거터 오류 처리"의 체크를 해제하고, 메인 화면으로 돌아가 "오류 복구" 버튼을 클릭하십시오.. 溶剂液位:溶剂即将耗尽 @@ -6132,7 +6119,7 @@ Char 警告:‘-’和空格的宽度不一样 - 경고: '-'와 공백 너비 불일치 + 경고: '-'와 공백 너비 불일치 条形码信息编辑 @@ -7062,14 +7049,6 @@ configuration. 编辑现有的多字体 다중 폰트 파일 편집 - - 字符光标 - 문자 커서 - - - 像素光标 - 픽셀 커서 - 放大倍数:%1 확대율: %1 @@ -7536,7 +7515,7 @@ configuration. 행 끝 전압(%): - + 信息左右颠倒 좌우 반전 @@ -7545,7 +7524,7 @@ configuration. 위상 고장 시 종료 - + 信息上下颠倒 상하 반전 @@ -7767,7 +7746,7 @@ configuration. 注意:“其它设置”页下的"分段计米“勾选时,计数器1不可用。 - 주의: "기타 설정" 페이지에서 "구간별 길이 측정"을 선택하면 카운터 1을 사용할 수 없습니다. + 주의: "기타 설정" 페이지에서 "구간별 길이 측정"을 선택하면 카운터 1을 사용할 수 없습니다. 计数器3设置 @@ -7797,9 +7776,8 @@ configuration. - 喷印模式 - 电压参数 - 인쇄 모드 + 喷印模式: + 인쇄 모드: @@ -7821,27 +7799,27 @@ configuration. PrintGo 신호 페이지 1 - + 脉冲信号值: 펄스 신호 값: - + 无镜像打印 미러 없음 - + 自动水平翻转 자동 수평 반전 - + 自动垂直翻转 자동 수직 반전 - + 中心对称旋转 중심 대칭 회전 @@ -7850,10 +7828,9 @@ configuration. 미러 모드 - - - - + + + 延时(毫秒): 지연(ms): @@ -7862,43 +7839,53 @@ configuration. 미러 교대 간격 - - + + 触发延时(毫秒) 트리거 지연(ms) - + 脉冲输出使能 펄스 출력 활성화 - + 禁止电眼清零 센서 초기화 금지 - + + 喷印延迟(毫秒): + 인쇄 지연 시간 (밀리초): + + + + 无限长 + 무한길이 + + + 允许电眼复位 센서 리셋 허용 - + 允许电眼立即复位 센서 즉시 리셋 허용 - + 电眼清零 센서 카운터 초기화 - + 字符宽度: 문자 너비: - + 产生脉冲所需计数: 펄스 생성 필요 카운트: @@ -7911,22 +7898,20 @@ configuration. 트리거 모드 - 同步器触发 - 엔코더 트리거 + 엔코더 트리거 - 延时触发 - 지연 트리거 + 지연 트리거 - + 光电电平触发 고 레벨 활성 - + 光电边沿触发 저 레벨 활성 @@ -7941,80 +7926,79 @@ configuration. 인쇄 신호 - + 重复间隔(毫秒): 인쇄 간격(ms): - + 重复次数: 반복 인쇄: - + 封锁时间(毫秒): 잠금 시간(ms): - + 电眼信号来源 인쇄 신호 - - + + 内部 내부 - - + + 外部 외부 - GroupBox - GroupBox + GroupBox - + 编码器参数 엔 코더 - + 脉冲数/毫米: 펄스/mm: - + 喷印间隔(毫米): 인쇄 간격(mm): - + 同步喷印模式: 동기 인쇄 모드: - + 镜象交替类型: 미러 교대 모드: - + 镜像交替间隔: 미러 교대 간격: - + 触发延时(毫秒): 脉冲数/毫米 펄스/mm - + 脉冲数修正 펄스 수 보정 @@ -8027,27 +8011,27 @@ configuration. 동기 인쇄 모드 - + 按字符宽度 글자 너비 기준 - + 按喷印比例 인쇄 비율 기준 - + 同步器正反转打印 엔코더 정/역방향 인쇄 - + 同步器只正转打印 엔코더 정방향 인쇄만 허용 - + 同步器只反转打印 엔코더 역방향 인쇄만 허용 @@ -8056,54 +8040,51 @@ configuration. 반복 횟수 - - - + + 重复间隔(毫秒) 반복 간격(ms) - 同步打印 - 엔코더 인쇄 활성화 + 엔코더 인쇄 활성화 - + 封锁时间(毫秒) 잠금 시간(ms) - 同步器清零 - 엔코더 카운터 초기화 + 엔코더 카운터 초기화 - + 间隔模式: 간격 모드: - + 行末<->行首 행 끝 ↔ 행 시작 - + 行首<->行首 행 시작 ↔ 행 시작 - + 同步器来源 엔코더 - + ✕ ✕ - + ✓ ✓ @@ -8285,54 +8266,53 @@ configuration. 조건: (반복 횟수 + 시작 위치) < 교대 간격 - + 提示 팁 - + 应用成功 적용 성공 - + 提示:参数不正确 경고: 파라미터 오류 - + 要求:触发长度小于喷印间隔 요구사항: 트리거 길이는 인쇄 간격보다 작아야 함 - - - - + + + 延时(毫米): 지연(mm): - - - + + + 触发延时(毫米) 트리거 지연(mm) - - + + 重复间隔(毫米) 반복 간격(mm) - - + + 抑止距离(毫米) 인쇄신호 제어 거리(mm) - + 抑止距离(毫秒) 인쇄 신호 제어 거리(ms) @@ -8345,12 +8325,12 @@ configuration. 잠금 간격(ms) - + 字符宽度 문자 너비 - + 喷印比例(%) 인쇄 비율(%) @@ -8411,7 +8391,7 @@ configuration. 권한 해제 - + 其他设置 기타 설정 @@ -9690,6 +9670,11 @@ configuration. 确定要升级FPGA软件吗? FPGA 소프트웨어를 업데이트하시겠습니까? + + + 没有FPGA升级文件 + + 找不到 lib.tar! @@ -9867,6 +9852,7 @@ configuration. + @@ -10611,6 +10597,25 @@ configuration. 保存 저장 + + + + QPushButton { + background: qlineargradient(x1: 0.5, y1: 0, x2: 0.5, y2: 1, stop: 0 #6F9CD6, stop: 1 #FFFFFF); + border: 1px solid #a0a0a0; + border-radius: 8px; + padding: 8px 12px; + min-width: 90px; + min-height: 50px; + } + QPushButton:hover { + background-color: #d0d0d0; + } + QPushButton:pressed { + background-color: #c0c0c0; + } + + 打印设置 @@ -10621,6 +10626,28 @@ configuration. 图元设置 설정 + + + background-color:#C4C5C9; + + + + + + QPushButton { + background-color: #ffffff; + border: 1px solid #a8a8a8; + border-radius: 8px; + padding: 6px; + } + QPushButton:hover { + background-color: #dcdcdc; + } + QPushButton:pressed { + background-color: #d0d0d0; + } + + 复制 @@ -10671,12 +10698,43 @@ configuration. 32 dot - + + + QLineEdit { + background-color: #e5e5e5; + border: 1px solid #a8a8a8; + border-radius: 2px; + padding: 4px 8px; + min-height: 32px; + font-size: 16px; + } + + JET2neo-TEST JET2neo-TEST + + + + QPushButton { + background-color: #e5e5e5; + border: 1px solid #a8a8a8; + border-radius: 2px; + min-width: 40px; + min-height: 32px; + font-size: 16px; + font-weight: bold; + } + QPushButton:hover { + background-color: #dcdcdc; + } + QPushButton:pressed { + background-color: #d0d0d0; + } + + << @@ -10687,6 +10745,21 @@ configuration. >> + + + + + QLabel { + background-color: #e5e5e5; + border: 1px solid #a8a8a8; + border-radius: 2px; + padding: 4px 8px; + min-height: 30px; + font-size: 14px; + color: #333333; + } + + Y:9 @@ -10697,6 +10770,29 @@ configuration. X:105 X:105 + + + + + + QPushButton { + background-color: #87CEEB; + border: 1px solid #4682B4; + border-radius: 4px; + min-width: 40px; + min-height: 40px; + font-size: 18px; + font-weight: bold; + color: #00008B; + } + QPushButton:hover { + background-color: #ADD8E6; + } + QPushButton:pressed { + background-color: #B0E0E6; + } + + ↑ diff --git a/mainwidget.cpp b/mainwidget.cpp index ae631ec..026882c 100644 --- a/mainwidget.cpp +++ b/mainwidget.cpp @@ -31,6 +31,7 @@ #include "scene/PicScheduleShiftItem.h" #include "scene/piccodeitem.h" #include +#include extern MyInputMethod *myInputMethod; unsigned char test_flag,open_close; @@ -42,6 +43,10 @@ MainWidget::MainWidget(QWidget* parent) // 加载UI文件 ui.setupUi(this); + if (sysPara == nullptr) { + sysPara = SysPara::ins(); + } + // 关联成员变量到UI控件 m_EditBtn = ui.m_EditBtn; m_AddBtn = ui.m_AddBtn; @@ -76,6 +81,24 @@ MainWidget::MainWidget(QWidget* parent) changeHighLight(false); enablePrintButton(false); + + QWidget* viewport = ui.scrollArea->viewport(); + + // 捕获鼠标左键拖动手势(桌面端) + QScroller::grabGesture(viewport, QScroller::LeftMouseButtonGesture); + // 如需同时支持触摸屏,可加上触屏手势 + QScroller::grabGesture(viewport, QScroller::TouchGesture); + + QScroller* scroller = QScroller::scroller(viewport); + QScrollerProperties properties = scroller->scrollerProperties(); + + // 启用惯性滚动 + properties.setScrollMetric(QScrollerProperties::DecelerationFactor, 0.7); + // 防止过小的移动被误判为拖拽 + properties.setScrollMetric(QScrollerProperties::DragStartDistance, 0.002); + + scroller->setScrollerProperties(properties); + scroller->grabGesture(ui.scrollArea->viewport(), QScroller::LeftMouseButtonGesture); } MainWidget::~MainWidget() @@ -151,21 +174,6 @@ void MainWidget::bindPicScene(PicScene* pPicScene){ this->pPicScene = pPicScene; } -void MainWidget::bindSysPara(SysPara *sysPara){ - this->sysPara = sysPara; - // ui->textEditOption->bindSysPara(sysPara); - m_PrintDisplay->bindSysPara(sysPara); -#ifdef _2DCODE_ -// barcode->bindSysPara(sysPara); -// dlgqrcode->setSysPara(sysPara); -// dlgqrcode->barCodeFlag = this->sysPara->para.qrOption.barCodeFlag; -// dlgqrcode->SetOption((qrOption_t*)&sysPara->para.qrOption); -#endif -#ifdef PICSCENE - // ui->senceEditOption->bindSysPara(sysPara); -#endif -} - void MainWidget::_on_pushButtonPowerOff_pressed(bool notice) { if(!sysPara) @@ -1782,7 +1790,6 @@ void MainWidget::airPushingProcess() { if(sysPara){ if (sysPara->status.airPushing) { - //qDebug()<< "start airPushingProcess "<status.airPushingOnTime; // 执行排气 7 秒 setRunStatus(tr("正在排气...")); ++sysPara->status.airPushingOnTime; @@ -3151,11 +3158,13 @@ void MainWidget::onPreviewScene() wmax = sysPara->status.currAlterPrintRow; } /*-------------------------------切换到显示窗口-----------------------------------*/ - if(sysPara->status.addSpace) - m_PrintDisplay->setDisplaySize(sysPara->status.currPrintCol/2,sysPara->status.currPrintRow); - else m_PrintDisplay->setDisplaySize(sysPara->status.currPrintCol,sysPara->status.currPrintRow); - m_PrintDisplay->setDisplaySize(sysPara->status.currPrintCol,sysPara->para.AlterMode?sysPara->status.currAlterPrintRow : sysPara->status.currPrintRow); + qDebug() << "currPrintCol: " << sysPara->status.currPrintCol; + auto rows = sysPara->para.AlterMode?sysPara->status.currAlterPrintRow : sysPara->status.currPrintRow; + rows = std::max(rows, (m_PrintDisplay->parentWidget()->height() / m_PrintDisplay->currScaleRatio())); + auto cols = sysPara->status.currPrintCol; + cols = std::max(cols, (m_PrintDisplay->parentWidget()->width() / m_PrintDisplay->currScaleRatio())); + m_PrintDisplay->setDisplaySize(cols, rows); // ui->stackedWidgetText->setCurrentWidget(ui->pagePrintTextDisplay); // ui->stackedWidgetOption->setCurrentWidget(ui->pageOption); // ui->labelTextWidthHeight->setText(tr("[ %1行 x %2列 ]").arg(wmax).arg(sysPara->status.currPrintCol)); @@ -3186,10 +3195,12 @@ void MainWidget::handleEmptySize() // 清空打印数据缓冲区 unsigned char *dat = MaxCol4000 ? sysPara->status.printDat_Normal : sysPara->status.printDat; - memset(dat, 0, sizeof(MaxCol4000 ? sysPara->status.printDat_Normal : sysPara->status.printDat)); + memset(dat, 0, MaxCol4000 ? sizeof(sysPara->status.printDat_Normal) : sizeof(sysPara->status.printDat)); // 刷新预览显示,显示空场景(白色背景) - m_PrintDisplay->setDisplaySize(sysPara->status.currPrintCol, sysPara->status.currPrintRow); + auto rows = sysPara->para.AlterMode?sysPara->status.currAlterPrintRow : sysPara->status.currPrintRow; + rows = std::max(rows, (m_PrintDisplay->parentWidget()->height() / m_PrintDisplay->currScaleRatio())); + m_PrintDisplay->setDisplaySize(m_PrintDisplay->parentWidget()->width() / m_PrintDisplay->currScaleRatio(), rows); m_PrintDisplay->update(); previewFlag = 0; return; diff --git a/mainwidget.h b/mainwidget.h index 2639b03..02a6b4c 100644 --- a/mainwidget.h +++ b/mainwidget.h @@ -24,12 +24,11 @@ // 包含UI自动生成的头文件 #include "ui_MainWidget.h" -#include "ParaSettingUI.h" #include "fileManage/FileManageWidget.h" #include "setnumdlg.h" -class MainWidget : public QWidget,public ParaSettingUI +class MainWidget : public QWidget { Q_OBJECT @@ -37,8 +36,6 @@ public: MainWidget(QWidget* parent = nullptr); ~MainWidget(); - void bindSysPara(SysPara *SysPara);//重载 - void bindTxTEdit(QTextEdit* textEdit); void bindPicScene(PicScene* pPicScene); void PreviewPressed(); @@ -118,6 +115,8 @@ public: private: // UI对象 Ui::MainWidget ui; + SysPara *sysPara = nullptr; + // 控件成员变量(关联UI控件) QPushButton* m_EditBtn; QPushButton* m_AddBtn; diff --git a/rfid/rfidmanager.cpp b/rfid/rfidmanager.cpp new file mode 100644 index 0000000..dc08ca4 --- /dev/null +++ b/rfid/rfidmanager.cpp @@ -0,0 +1,951 @@ +#include "rfidfunction.h" +#include "rfidmanager.h" + +#include +#include +#include +#include +#include +#include "runtimectrl.h" + +//#define HLPDEBUG + + +RFIDManager::RFIDManager() +{ + comForRFID_init(); +} + +void RFIDManager::CheckSumOut(UCHAR *buf, UCHAR len) +{ + UCHAR i; + UCHAR checksum; + checksum = 0; + if (len == 0) + return; + + for (i = 0; i < (len - 1); i++) + { + checksum ^= buf[i]; + } + buf[len - 1] = (UCHAR)~checksum; +} + +bool RFIDManager::CheckSumIn(UCHAR *buf, UCHAR len) +{ + UCHAR i; + UCHAR checksum; + checksum = 0; + if (len == 0) return false; + for (i = 0; i < (len - 1); i++) + { + checksum ^= buf[i]; + } + if (buf[len - 1] == (UCHAR)~checksum) + { + return true; + } + return false; +} + +void RFIDManager::MySleep(unsigned int msec, int expSize) +{ +// QTime dieTime = QTime::currentTime().addMSecs(msec); +// while( QTime::currentTime() < dieTime ) { +// QCoreApplication::processEvents(QEventLoop::AllEvents, 100); +// } + +// QByteArray recResponse; + RFIDReadData.clear(); + QElapsedTimer elapsedTimer; + elapsedTimer.start(); + while (!elapsedTimer.hasExpired(msec)) { + if (RFIDReadData.size() >= expSize) { +// recResponse = comForRFID->read(8); + break; + } + QCoreApplication::processEvents(QEventLoop::AllEvents, 10); + } +} + +void RFIDManager::Hex2Str(const UCHAR *sSrc, UCHAR *sDest, int nSrcLen) +{ + int i; + char szTmp[3]; + for (i = 0; i < nSrcLen; i++) + { + sprintf(szTmp, "%02X", (unsigned char)sSrc[i]); + memcpy(&sDest[i * 2], szTmp, 2); + } + sDest[nSrcLen * 2] = '\0'; + return; +} + +void RFIDManager::HexStrToByte(const UCHAR *source, UCHAR *dest, int sourceLen) +{ + short i; + unsigned char highByte, lowByte; + + for (i = 0; i < sourceLen; i += 2) + { + highByte = toupper(source[i]); + lowByte = toupper(source[i + 1]); + + if (highByte > 0x39) + highByte -= 0x37; + else + highByte -= 0x30; + + if (lowByte > 0x39) + lowByte -= 0x37; + else + lowByte -= 0x30; + + dest[i / 2] = (highByte << 4) | lowByte; + } + return; +} + + +void RFIDManager::comForRFID_init() +{ + if (comForRFID) { + delete comForRFID; + comForRFID = nullptr; + } + + checkCardIntervalTime = 0; + setICReaderModeFlag = false; + + comForRFID = new QSerialPort(); + +#ifndef HLPDEBUG + comForRFID->setPortName("/dev/ttyAS1"); +#else + comForRFID->setPortName("/dev/ttyUSB0"); +#endif + + comForRFID->setBaudRate(9600); + comForRFID->setDataBits(QSerialPort::Data8); + comForRFID->setParity(QSerialPort::NoParity); + comForRFID->setStopBits(QSerialPort::OneStop); + comForRFID->setFlowControl(QSerialPort::NoFlowControl); + if (comForRFID->open(QIODevice::ReadWrite)) { + qDebug() << "RFID串口打开成功"; + connect(comForRFID,SIGNAL(readyRead()),this,SLOT(slt_readRFIDData())); + } else { + qDebug() << "RFID串口打开失败:" << comForRFID->errorString(); + delete comForRFID; + comForRFID = nullptr; + return; + } + + initTimer(); +} + +int RFIDManager::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]; + Cmd[1] = 0x08; + Cmd[2] = 0xA3; + Cmd[4] = 0x06; //读块6 + CheckSumOut(Cmd, Cmd[1]); + QByteArray temp; + QByteArray recResponse; + temp.append((const char*)Cmd,Cmd[1]); + if(comForRFID->isOpen()) + { + LogInfo::setRunStatusText(tr("readB6Req")); + comForRFID->clear(QSerialPort::Input); + comForRFID->write(temp); + } + else + { + qDebug()<<"read uart for RFID not open!"; + } + + MySleep(2000, 0x16); + + int n = RFIDReadData.size(); + if(n < 0x16) + { + LogInfo::setRunStatusText("RFID invalied data"); + return 0; + } + + n = std::max(0x16, n); + + if (n > sizeof(revdata)) { + return 0; // 防止后面拷贝越界 + } + memcpy(revdata, recResponse.data(), 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]); //计算校验和 + if (status) + { + if (revdata[4] == 0x00) //读数据块成功 + { + UCHAR blockdata[16]; + UCHAR temp[33]; + 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" << "数据为:" << temp << endl << endl; + return 1; + } + } + } + return 0; +} + +QByteArray RFIDManager::buildMarkCardCommand(int block, int cardType) +{ + 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 }; + + Cmd[1] = 0x17; + Cmd[2] = 0x5B; + Cmd[4] = block; //读块6 + + //save current date and time + QDateTime curDateTime = QDateTime::currentDateTime(); + QString str = curDateTime.toString("yy:MM:dd:hh:mm:ss"); + QList list = str.split(":"); + for(int i = 0;i < list.size();i++){ + Cmd[i+6] = list.at(i).toInt(); + LogInfo::setRunStatusText(tr("Cmd[%1]: %2").arg(i+6).arg(Cmd[i+6])); + qDebug()<<"Cmd["<bytesAvailable(); + if(n < 8) { + qDebug() << "读取数据失败, 数据长度不足8字节" << endl << endl; + return false; + } + + UCHAR revdata[100]; + if (n > sizeof(revdata)) return false; + 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 && revdata[4] == 0x00) + { + //写数据块成功 + qDebug() << notice << "成功!" << endl << endl; + LogInfo::setRunStatusText(notice+"成功!"); + return true; + } + } + + qDebug() << notice << "失败!" << endl << endl; + LogInfo::setRunStatusText(notice+"失败!"); + return false; +} + +RFIDManager *RFIDManager::instance() +{ + static RFIDManager* ins = nullptr; + if(ins == nullptr) { + ins = new RFIDManager(); + } + + return ins; +} + +int RFIDManager::RFIDmarkCardUsedAsync(int type) +{ + if (!comForRFID || !comForRFID->isOpen()) { + qDebug()<<"read uart for RFID not open!"; + return 0; + } + + // 构建命令(不硬编码块号) 读块6 + QByteArray cmd = buildMarkCardCommand(0x06, type); + if (cmd.isEmpty()) { + qDebug() << "命令构建失败"; + return 0; + } + + // 临时断开信号,避免干扰 + bool wasConnected = disconnect(comForRFID, &QSerialPort::readyRead, + this, &RFIDManager::slt_readRFIDData); + + // 清空缓冲区 + comForRFID->clear(QSerialPort::Input); + comForRFID->clear(QSerialPort::Output); + + // 发送命令 + qint64 written = comForRFID->write(cmd); + if (written != cmd.size()) { + qCritical() << "发送数据失败,发送字节数:" << written << "预期:" << cmd.size(); + if (wasConnected) { + connect(comForRFID, &QSerialPort::readyRead, + this, &RFIDManager::slt_readRFIDData); + } + return 0; + } + + QByteArray recResponse; + QElapsedTimer elapsedTimer; + elapsedTimer.start(); + while (!elapsedTimer.hasExpired(2000)) { + if (comForRFID->bytesAvailable() >= 8) { + recResponse = comForRFID->read(8); + break; + } + QCoreApplication::processEvents(QEventLoop::AllEvents, 100); + } + + // 恢复信号连接 + if (wasConnected) { + connect(comForRFID, &QSerialPort::readyRead, + this, &RFIDManager::slt_readRFIDData); + } + + bool res = verifyWriteResponse(recResponse, tr("写数据到数据块6")); + if (!res) { + qDebug() << "响应验证失败"; + return 0; + } + qDebug() << "卡片标记成功,块:" << 06 << "耗时:" << elapsedTimer.elapsed() << "ms"; + return 1; + +} + +void RFIDManager::initRFIDMoudle(unsigned int addr) +{ + setICReaderModeFlag = true; + setRFIDReaderWorkMode(); + setRFIDReaderKey(addr,1); + setICReaderModeFlag = false; +} + +void RFIDManager::handleCheck(unsigned int addr) +{ + if(!setICReaderModeFlag) + { + strRevdata =""; + receiveReadRFID_data(); + if(strRevdata.length() > 3) + { + if((strRevdata.left(3) == QString::number(addr).left(3))\ + || strRevdata.left(3) == "100") + { + if(strRevdata.at(3) == 'A') { + if(!SysPara::ins()->RFIDPara.needInkCard && false){ + emit sig_showMsg(tr("不需要刷墨水卡!")); + } + else if(SysPara::ins()->status.statWarn & WARN_STATUS_INK_WARN && false){ + emit sig_showMsg(tr("请先添加墨水再刷墨水卡!")); + } + else + { + auto ok = cardTouchConfirm(tr("确认要刷墨水卡吗?"), tr("确认要刷墨水卡吗? %1 秒后将自动确认")); + if (!ok){ + LogInfo::setRunStatusText("The user has canceled the operation about marking the ink card."); + } + else if(RFIDmarkCardUsedAsync(0) == 1){ + SysPara::ins()->RFIDPara.needInkCard = false; + SysPara::ins()->RFIDPara.inkCardTimeOut = false; + SysPara::ins()->saveRFIDPara(); + emit sig_showMsg(tr("刷墨水卡成功!")); + SysPara::ins()->para.inkWarnDate = 0; + SysPara::ins()->para.inkWarnTime = 0; + SysPara::ins()->saveParaToFile(); + } + } + } + else if(strRevdata.at(3) == 'B') + { + SysPara::ins()->para.flagOfInkWarning = false; + + if(!SysPara::ins()->RFIDPara.needSolventCard && false){ + emit sig_showMsg(tr("不需要刷溶剂卡!")); + } + else if(SysPara::ins()->status.statWarn & WARN_STATUS_SOLV_WARN && false){ + emit sig_showMsg(tr("请先添加溶剂再刷溶剂卡!")); + } + else + { + auto ok = cardTouchConfirm(tr("确认要刷溶剂卡吗?"), tr("确认要刷溶剂卡吗? %1 秒后将自动确认")); + if (!ok){ + LogInfo::setRunStatusText("The user has canceled the operation about marking the solvent card."); + } + else if(RFIDmarkCardUsedAsync(1) == 1) { + SysPara::ins()->RFIDPara.needSolventCard = false; + SysPara::ins()->RFIDPara.solventCardTimeOut = false; + SysPara::ins()->saveRFIDPara(); + emit sig_showMsg(tr("刷溶剂卡成功!")); + SysPara::ins()->para.flagOfSolventWarning = false; + SysPara::ins()->para.solventWarnDate = 0; + SysPara::ins()->para.solventWarnTime = 0; + SysPara::ins()->saveParaToFile(); + } + } + + } + else if(strRevdata.at(3) == 'C') + { + auto ok = cardTouchConfirm(tr("确认要刷保养卡吗?"), tr("确认要刷保养卡吗? %1 秒后将自动确认")); + if (ok){ + auto r = RFIDmarkCardUsedAsync(2); + if(r == 1) {//把卡数据清零 + + emit sig_maintenanceShow(); + + SysPara::ins()->RFIDPara.needMaintenance = false; + SysPara::ins()->status.needMaintenanceRemind = false; + + QDate curDate = QDate::currentDate(); + SysPara::ins()->RFIDPara.maintenanceDate = curDate.toString("yyMMdd").toInt(); + QDate mtEndDate = curDate.addMonths(SysPara::ins()->RFIDPara.maintenanceInterval); + SysPara::ins()->RFIDPara.maintenanceEndDate = mtEndDate.toString("yyMMdd").toInt(); + SysPara::ins()->RFIDPara.runTime = 0; + RunTimeCtrl::instance()->updatePara(&SysPara::ins()->RFIDPara); + SysPara::ins()->saveRFIDPara(); + emit sig_showMsg(tr("刷保养卡成功!")); + } + else { + LogInfo::setRunStatusText("Failed to mark maintenance card!"); + } + } + else { + qDebug() << "用户取消了刷卡"; + } + } + else + { + emit sig_showMsg(tr("MAC无效卡!")); + } + } + else + { + QString str1 = QString::number(strRevdata.mid(0,2).toInt(0,16)).rightJustified(2,'0'); + QString str2 =QString::number(strRevdata.mid(2,2).toInt(0,16)).rightJustified(2,'0'); + QString str3 = QString::number(strRevdata.mid(4,2).toInt(0,16)).rightJustified(2,'0'); + QString str4 = QString::number(strRevdata.mid(6,2).toInt(0,16)).rightJustified(2,'0'); + QString str5 = QString::number(strRevdata.mid(8,2).toInt(0,16)).rightJustified(2,'0'); + QString str6 =QString::number(strRevdata.mid(10,2).toInt(0,16)).rightJustified(2,'0'); + QString strDateTime = str1 + "-" + str2 + "-" + str3 + " " + str4 + ":" + str5 + ":" + str6; + QString strShow = tr("无效卡,这张卡已经在%1时使用过").arg(strDateTime); + emit sig_showMsg(strShow); + } + } + } + +} + +int RFIDManager::setRFIDCarKey() +{ + UCHAR revdata[100]; + UCHAR Cmd[8] ; + Cmd[0] = 0x01; //命令格式请核对协议手册充值章节 + Cmd[1] = 0x08; + Cmd[2] = 0xA5; //加密扇区 + Cmd[3] = 0x20; + Cmd[4] = 0x07; //块7 + Cmd[5] = 0x01; + Cmd[6] = 0x00; + Cmd[7] = 0x00; + + CheckSumOut(Cmd, Cmd[1]); + QByteArray temp; + QByteArray recResponse; + temp.append((const char*)Cmd,Cmd[1]); + if(comForRFID->isOpen()) + { + comForRFID->clear(QSerialPort::Input); + comForRFID->write(temp); + } + else + { + qDebug()<<"read uart for RFID not open!"; + } + + MySleep(2000); + + int n = RFIDReadData.size(); + if(n>2) + { + recResponse = RFIDReadData; + RFIDReadData.clear(); + QString str; + str.sprintf("%d - %d - %d", recResponse.at(0),recResponse.at(1),recResponse.at(2)); + qDebug()<<"加密IC卡: "< sizeof(revdata)) { + return 0; // 防止后面拷贝越界 + } + memcpy(revdata, recResponse.data(), n); + if ((revdata[0] == 0x01) &&( revdata[1] == 8 )&& (revdata[1] == n) && (revdata[2] == 0xA5) && (revdata[3] == 0x20)) //判断是否为设置地址返回的数据包 + { + bool status = CheckSumIn(revdata, revdata[1]); //计算校验和 + if (status) + { + if (revdata[4] == 0x00) //成功 + { + qDebug() << "加密IC卡成功!" << endl << endl; + } + else + { + qDebug() << "加密IC卡失败!" << endl << endl; + } + } + } + else + { + qDebug() << "加密IC卡失败2!" << endl << endl; + } +} + +int RFIDManager::setRFIDReaderKey(int mac,int type) +{ + if (!comForRFID) return; + if(mac == 0) mac = 100; + QString strMac1 = QString::number(mac).mid(0,3); + strMac1 = "Vernon" + strMac1 + "Bach"; + strMac1 = strMac1.leftJustified(16,'6'); + QString strMac2 =QString::number(mac).mid(0,3); + strMac2 = "VernonBach" + strMac2; + strMac2 = strMac2.leftJustified(16,'6'); + + QByteArray password = ""; + if(type == 1) + password = RFIDFunction::createPassword((const QByteArray)strMac1.toUtf8()); + else if(type == 2) + password = RFIDFunction::createPassword((const QByteArray)strMac2.toUtf8()); + const QByteArray pw = password.mid(12,12); + + UCHAR revdata[100]; + UCHAR Cmd[21] ; + Cmd[0] = 0x03; //命令格式请核对协议手册充值章节 + Cmd[1] = 0x15; + Cmd[2] = 0xC3; //设置密钥 + Cmd[3] = 0x20; + Cmd[4] = 0x99; + Cmd[5] = 0x88; + Cmd[6] = 0x77; + Cmd[7] = 0x66; + Cmd[8] = 0x55; + Cmd[9] = 0x44; + Cmd[10] = 0xFF; + Cmd[11] = 0x07; + Cmd[12] = 0x80; + Cmd[13] = 0x69; + Cmd[14] = 0xAA; + Cmd[15] = 0xBB; + Cmd[16] = 0xCC; + Cmd[17] = 0xDD; + Cmd[18] = 0xEE; + Cmd[19] = 0xFF; + Cmd[20] = 0x1B; + +#ifndef __RFID_OLD + bool ok; + for(int i = 0;i<6;i++){ + int pwInt = Cmd[i+14] = pw.mid(i*2,2).toInt(&ok,16); + if (!ok) { + qDebug() << "Error: Invalid hex value: "<isOpen()) + { + comForRFID->clear(QSerialPort::Input); + RFIDReadData.clear(); + comForRFID->write(temp); + } + else + { + qDebug()<<"read uart for RFID not open!"; + } + + MySleep(2000); + int n = RFIDReadData.size(); + if(n < 8) { + LogInfo::setRunStatusText(tr("设置读写器密码失败!")); + return 0; + } + + n = std::max(8, n); + if (n > sizeof(revdata)) { + return 0; // 防止后面拷贝越界 + } + + memcpy(revdata, recResponse.data(), n); + if ((revdata[0] == 0x03) &&( revdata[1] == 8 )&& (revdata[1] == n) && (revdata[2] == 0xC3) && (revdata[3] == 0x20)) //判断是否为设置地址返回的数据包 + { + bool status = CheckSumIn(revdata, revdata[1]); //计算校验和 + if (status) + { + if (revdata[4] == 0x00) //成功 + { + qDebug() << "设置读写器密码成功!" << endl << endl; + LogInfo::setRunStatusText(tr("设置读写器密码成功!")); + } + else + { + qDebug() << "设置读写器密码失败!" << endl << endl; + } + } + } + else + { + qDebug() << "设置读写器密码失败!" << endl << endl; + } + + return 0; +} + +int RFIDManager::setRFIDReaderOriginalKey(void) +{ + UCHAR revdata[100]; + UCHAR Cmd[11] ; + Cmd[0] = 0x03; //命令格式请核对协议手册充值章节 + Cmd[1] = 0x0B; + Cmd[2] = 0xC4; //设置密钥 + Cmd[3] = 0x20; + Cmd[4] = 0xFF; + Cmd[5] = 0xFF; + Cmd[6] = 0xFF; + Cmd[7] = 0xFF; + Cmd[8] = 0xFF; + Cmd[9] = 0xFF; + Cmd[10] = 0x00; + + CheckSumOut(Cmd, Cmd[1]); + QByteArray temp; + QByteArray recResponse; + temp.append((const char*)Cmd,Cmd[1]); + if(comForRFID->isOpen()) + { + comForRFID->clear(QSerialPort::Input); + comForRFID->write(temp); + } + else + { + qDebug()<<"read uart for RFID not open!"; + } + MySleep(2000); + int n = RFIDReadData.size(); + if(n < 8) { + LogInfo::setRunStatusText(tr("设置读写器原始密码失败!")); + return 0; + } + + n = std::max(8, n); + if (n > sizeof(revdata)) { + return 0; // 防止后面拷贝越界 + } + + memcpy(revdata, recResponse.data(), n); + if ((revdata[0] == 0x03) &&( revdata[1] == 8 )&& (revdata[1] == n) && (revdata[2] == 0xC4) && (revdata[3] == 0x20)) //判断是否为设置地址返回的数据包 + { + bool status = CheckSumIn(revdata, revdata[1]); //计算校验和 + if (status) + { + if (revdata[4] == 0x00) //成功 + { + qDebug() << "设置读写器原始密码成功!" << endl << endl; + } + else + { + qDebug() << "设置读写器原始密码失败!" << endl << endl; + } + } + } + else + { + qDebug() << "设置读写器原始密码失败!" << endl << endl; + } +} + +int RFIDManager::setRFIDReaderWorkMode(void) +{ + if (!comForRFID) return; + UCHAR revdata[100]; + UCHAR Cmd[8] ; + Cmd[0] = 0x03; //命令格式请核对协议手册充值章节 + Cmd[1] = 0x08; + Cmd[2] = 0xC1; //设置工作模式 + Cmd[3] = 0x20; + Cmd[4] = 0x03; + Cmd[5] = 0x06; //读块6 + Cmd[6] = 0x00; //主动发送数据 + Cmd[7] = 0x00; + + CheckSumOut(Cmd, Cmd[1]); + QByteArray temp; + QByteArray recResponse; + temp.append((const char*)Cmd,Cmd[1]); + if(comForRFID->isOpen()) + { + comForRFID->clear(QSerialPort::Input); + comForRFID->write(temp); + } + else + { + qDebug()<<"read uart for RFID not open!"; + } + // 延时200毫秒等待读写器返回数据,延时太小可能无法接收完整的数据包 + MySleep(2000); + int n = RFIDReadData.size(); + + if(n < 8) { + LogInfo::setRunStatusText(tr("设置读写器工作模式失败!")); + return 0; + } + + n = std::max(8, n); + if (n > sizeof(revdata)) { + return 0; // 防止后面拷贝越界 + } + + if(n>2) + { + recResponse = RFIDReadData; + RFIDReadData.clear(); + QString str; + str.sprintf("%d - %d - %d", recResponse.at(0),recResponse.at(1),recResponse.at(2)); + qDebug()<<"设置读写器工作模式: "< sizeof(revdata)) { + return 0; // 防止后面拷贝越界 + } + memcpy(revdata, recResponse.data(), n); + if ((revdata[0] == 0x03) &&( revdata[1] == 8 ) + && (revdata[1] == n) && (revdata[2] == 0xC1) + && (revdata[3] == 0x20)) //判断是否为设置地址返回的数据包 + { + bool status = CheckSumIn(revdata, revdata[1]); //计算校验和 + if (status && revdata[4] == 0x00) + { + qDebug() << "设置读写器工作模式成功!" << endl << endl; + LogInfo::setRunStatusText(tr("设置读写器工作模式成功!")); + return 1; + } + } + qDebug() << "设置读写器工作模式失败!" << endl << endl; + return 0; +} + +int RFIDManager::receiveReadRFID_data(void) +{ + UCHAR revdata[100]; + QByteArray recResponse; + int n = RFIDReadData.size(); + if(n>0) + { + recResponse = RFIDReadData; + RFIDReadData.clear(); +// showData(recResponse); + } + if (n > sizeof(revdata)) { + return 0; // 防止后面拷贝越界 + } + memcpy(revdata, recResponse.data(), 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]; + for (int i = 0; i < 16; i++) + { + blockdata[i] = revdata[5 + i]; //复制数据到数组 + } + Hex2Str(&blockdata[0], &temp[0], 16); // 数据块数据转换为字符 + strRevdata = QString((const char*)temp); + return 1; + } + else + { + return 0; + } + } + } + return 0; +} + +int RFIDManager::queryReadRFID_address(void) +{ + if (!comForRFID) return; + UCHAR Cmd[8] ; + Cmd[0] = 0x02; //命令格式请核对协议手册充值章节 + Cmd[1] = 0x08; + Cmd[2] = 0xB0; //查询读写器地址 + Cmd[3] = 0x00; + Cmd[4] = 0x00; + Cmd[5] = 0x00; + Cmd[6] = 0x00; + Cmd[7] = 0x00; + CheckSumOut(Cmd, Cmd[1]); + QByteArray temp; + + UCHAR revdata[100]; + + temp.append((const char*)Cmd,Cmd[1]); + if(comForRFID->isOpen()) + { + comForRFID->clear(QSerialPort::Input); + RFIDReadData.clear(); + comForRFID->write(temp); + } + else + { + qDebug()<<"read uart for RFID not open!"; + } + MySleep(2000); + int n = RFIDReadData.size(); + if(n < 8) { + LogInfo::setRunStatusText(tr("查询读写器地址失败")); + return 1; + } + + n = std::max(8, n); + if (n > sizeof(revdata)) { + return 0; // 防止后面拷贝越界 + } + + if (n > sizeof(revdata)) return; + memcpy(revdata, RFIDReadData.data(), n); + if(n>0) + { +// showData(RFIDReadData); + if(CheckSumIn(revdata, revdata[1]) == false){ + RFIDReadData.clear(); + return 0; + } + if(revdata[0] == 0x02 && revdata[1] == 0x08 + && revdata[2] == 0xB0 && revdata[4] == 0x00){ + RFIDReadData.clear(); + return 1; + } + } + else //没有收到数据 + return 2; + +} + +void RFIDManager::initTimer() +{ + if (RFIDTimer == nullptr) { + RFIDTimer = new QTimer(this); + connect(RFIDTimer, &QTimer::timeout, + this, &RFIDManager::slt_timerHandle); + RFIDTimer->start(10 * 1000); + } +} + +bool RFIDManager::cardTouchConfirm(QString msgTxt, QString variableMsgTxt) +{ + QMessageBox box(QMessageBox::Warning, tr("警告"), + msgTxt, QMessageBox::Ok | QMessageBox::Cancel); + + int rfidCountDown = SysPara::ins()->para.rfidCountDown; + QTimer msgTimer; + QString boxTxt = variableMsgTxt; + connect(&msgTimer, &QTimer::timeout, [this, &box, &rfidCountDown, boxTxt]() { + box.setText(boxTxt.arg(rfidCountDown)); + box.update(); + rfidCountDown--; + if(rfidCountDown == 0) { + box.accept(); + } + }); + + if(SysPara::ins()->para.rfidCountDown > 0) { + box.setText(boxTxt.arg(SysPara::ins()->para.rfidCountDown)); + msgTimer.start(1000); + } + + box.exec(); + + return box.result() == QMessageBox::Ok || box.result() == QMessageBox::Accepted; +} + +void RFIDManager::slt_readRFIDData() +{ + QMutexLocker locker(&m_rfidMutex); + RFIDReadData.append(comForRFID->readAll()); +} + +void RFIDManager::slt_timerHandle() +{ + static int faultyNum = 0; + static uint noticeICReaderErrorTime = QDateTime::currentDateTime().toTime_t(); + if((QDateTime::currentDateTime().toTime_t() - noticeICReaderErrorTime > 7200 + || QDateTime::currentDateTime().toTime_t() == noticeICReaderErrorTime) + || (faultyNum > 0 && faultyNum < 10)) + { + noticeICReaderErrorTime = QDateTime::currentDateTime().toTime_t(); + if(queryReadRFID_address() == 2) + { + faultyNum++; + if(faultyNum >= 10){ + emit sig_showMsg(tr("13.读卡器故障!")); + qDebug()<<"读卡器故障"; + } + } + else + faultyNum = 0; + } +} + + diff --git a/rfid/rfidmanager.h b/rfid/rfidmanager.h new file mode 100644 index 0000000..2dfde76 --- /dev/null +++ b/rfid/rfidmanager.h @@ -0,0 +1,81 @@ +#ifndef RFIDMANAGER_H +#define RFIDMANAGER_H + +#include "myinclude.h" +#include +#include +#include +#include + +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 diff --git a/runtimectrl.cpp b/runtimectrl.cpp index 11dd4d4..c4ebe52 100644 --- a/runtimectrl.cpp +++ b/runtimectrl.cpp @@ -71,7 +71,6 @@ void RunTimeCtrl::slt_recodeTime() m_totalSeconds += 30; m_para.runTime += 30; emit sig_saveRunTime(); - } } diff --git a/runtimectrl.h b/runtimectrl.h index 211f8bd..a855858 100644 --- a/runtimectrl.h +++ b/runtimectrl.h @@ -63,9 +63,6 @@ private: QTimer *m_checkTimer = nullptr; // 检查计时器 QTimer *m_alertTimer = nullptr; // 提示计时器 QTimer *m_runTimer = nullptr; // 运行计时器,记录运行时间和更新总时间 - QDateTime m_startTime; // 开始时间 - QDateTime m_stopTime; // 停止时间 - unsigned int m_stopTimeHours = 0; // 停止时间(小时) int m_alertIntervalMinutes = 180; // 提示间隔(分钟) bool m_isAlter = false; // 启动提示计时器标志 quint64 m_elapsedSeconds = 0; // 本次运行的时间 diff --git a/scene/BarcodeEditor.cpp b/scene/BarcodeEditor.cpp index 4161d3e..ef77b2c 100644 --- a/scene/BarcodeEditor.cpp +++ b/scene/BarcodeEditor.cpp @@ -45,6 +45,10 @@ BarcodeEditor::BarcodeEditor(QWidget *parent) : { ui->setupUi(this); + if (m_sysPara == nullptr) { + m_sysPara = SysPara::ins(); + } + applyStyleSheet(); m_dateFormatEditor = new DateFormatEditor(); diff --git a/scene/PicCounterItem.cpp b/scene/PicCounterItem.cpp index 1df0172..f2e8798 100644 --- a/scene/PicCounterItem.cpp +++ b/scene/PicCounterItem.cpp @@ -52,28 +52,14 @@ void PicCounterItem::setCounter(COUNTER_TYPE type, int digitalNum) font.setPixelSize(pixelSize); font.setWeight(false && (pixelSize<=16) ? QFont::Bold : QFont::Normal); font.setLetterSpacing(QFont::AbsoluteSpacing, 0); - // font.setLetterSpacing(QFont::AbsoluteSpacing, 0); QFontMetrics fontMetrics(font); int width = (fontMetrics.horizontalAdvance("0123456789")) / 10; int height = font.pixelSize(); width += letterSpace(); - int varType1 = type; - if(fontname.contains("SerifL") || fontname.contains("serifl")) - varType1 = 20 + type; - else if(fontname.contains("SerifR") || fontname.contains("serifr")) - varType1 = 20 + type; - else if(fontname.contains("bangla")) - varType1 = 30 + type; - else if(fontname.contains("biyangF")) - varType1 = 50 + type; - else if(fontname.contains("Roman")) - varType1 = 60 + type; - setHtml(QString("") - .arg(type).arg(false && (pixelSize<=16)?(digitalNum*100 + 75):digitalNum) - .arg(height + 1).arg(width*digitalNum).arg(varType1)); + .arg(type).arg(digitalNum).arg(height + 1).arg(width*digitalNum).arg(type)); m_counterType = type; m_digitalNum = digitalNum; diff --git a/spanish.ts b/spanish.ts index 52a4d4b..4de46c8 100644 --- a/spanish.ts +++ b/spanish.ts @@ -1627,67 +1627,67 @@ - + 导出到U盘 - + 从U盘导入 - + 全选 - + 取消全选 - + 删除已选 - + 过滤器 - + 文件 - + 图标 - + 字体 - + 全部 - + 硬盘 - + 设备 - + ✕ @@ -1985,11 +1985,6 @@ MAC无效卡! - - - card data: %1 - - 无效卡,这张卡已经在%1时使用过 @@ -2841,7 +2836,7 @@ - + 额外设置 @@ -2862,7 +2857,7 @@ - + 系统授权 @@ -2877,28 +2872,28 @@ - + 提示 - + RFID卡清零! - - + + 取消授权 - + 警告 - + 密码错误:%1 @@ -3649,7 +3644,8 @@ p, li { white-space: pre-wrap; } - 喷印模式 + 喷印模式: + 喷印模式 @@ -3669,42 +3665,52 @@ p, li { white-space: pre-wrap; } - + + 喷印延迟(毫秒): + + + + + 无限长 + + + + 重复间隔(毫秒): - + 重复次数: - + 封锁时间(毫秒): - + 脉冲数/毫米: - + 喷印间隔(毫米): - + 同步喷印模式: - + 信息上下颠倒 - + 信息左右颠倒 @@ -3714,288 +3720,260 @@ p, li { white-space: pre-wrap; } - + 脉冲信号值: - + 无镜像打印 - + 自动水平翻转 - + 自动垂直翻转 - + 中心对称旋转 - - - - + + + 延时(毫秒): - - + + 触发延时(毫秒) - + 脉冲输出使能 - + 禁止电眼清零 - + 允许电眼复位 - + 允许电眼立即复位 - + 电眼清零 - + 字符宽度: - + 产生脉冲所需计数: - + 间隔模式: - + 行末<->行首 - + 行首<->行首 - - - + + 重复间隔(毫秒) - + 封锁时间(毫秒) - - 同步器清零 - - - - - 同步打印 - - - - + 电眼信号来源 - - + + 内部 - - + + 外部 - + 光电边沿触发 - + 光电电平触发 - - GroupBox - - - - - 延时触发 - - - - + 编码器参数 - + 触发延时(毫秒): 脉冲数/毫米 - + 脉冲数修正 - + 按字符宽度 - + 按喷印比例 - + 同步器正反转打印 - + 同步器只正转打印 - + 同步器只反转打印 - - 同步器触发 - - - - + 同步器来源 - + 其他设置 - + 镜象交替类型: - + 镜像交替间隔: - + ✕ - + ✓ - + 提示 - + 应用成功 - + 提示:参数不正确 - + 要求:触发长度小于喷印间隔 - - - - + + + 延时(毫米): - - - + + + 触发延时(毫米) - - + + 重复间隔(毫米) - - + + 抑止距离(毫米) - + 抑止距离(毫秒) - + 字符宽度 - + 喷印比例(%) @@ -4742,6 +4720,7 @@ p, li { white-space: pre-wrap; } + @@ -4934,6 +4913,11 @@ p, li { white-space: pre-wrap; } 确定要升级FPGA软件吗? + + + 没有FPGA升级文件 + + 找不到 lib.tar! diff --git a/testprintwidget.cpp b/testprintwidget.cpp index 6d3a6b1..976a8a6 100644 --- a/testprintwidget.cpp +++ b/testprintwidget.cpp @@ -29,6 +29,10 @@ TestPrintWidget::TestPrintWidget(QWidget* parent) // 加载UI文件 ui.setupUi(this); + if (sysPara == nullptr) { + sysPara = SysPara::ins(); + } + // 关联成员变量到UI控件 // m_TextEdit = ui.m_TextEdit; m_LineEdit = ui.m_LineEdit; @@ -239,15 +243,6 @@ TestPrintWidget::~TestPrintWidget() delete imageLoader; } - -void TestPrintWidget::bindSysPara(SysPara *sysPara) -{ - this->sysPara = sysPara; - - // 它需要这个 - m_barcodeEditor.bindSysPara(sysPara); -} - QPixmap TestPrintWidget::loadIcon(const QString& iconName, const QSize& size) { QString iconPath = QString(":/icons/res/icons/%1.png").arg(iconName); @@ -352,7 +347,7 @@ void TestPrintWidget::onEditItemDone() { PicTextItem *pTextItem = (PicTextItem *)item; QFont font = pTextItem->font(); - font.setLetterSpacing(QFont::AbsoluteSpacing,sysPara->para.textEditCharSpace); + font.setLetterSpacing(QFont::AbsoluteSpacing,sysPara->para.textEditCharSpace); font.setStyleStrategy(QFont::NoAntialias); pTextItem->setLetterSpace(sysPara->para.textEditCharSpace); pTextItem->setFont(font); @@ -496,7 +491,7 @@ void TestPrintWidget::getShowSelectItemText() m_LineEdit->setText(lastSelectedTxtItem->source().toString()); } - pViewer->centerOn(lastSelectedTxtItem); + // pViewer->centerOn(lastSelectedTxtItem); QString currItemFontFamily = lastSelectedTxtItem->font().family(); @@ -1446,6 +1441,7 @@ void TestPrintWidget::selectItemByDirection(bool forward) if(nextItem) { pPicScene->clearSelection(); nextItem->setSelected(true); + pViewer->centerOn(nextItem); } } diff --git a/testprintwidget.h b/testprintwidget.h index ea282c2..efde28c 100644 --- a/testprintwidget.h +++ b/testprintwidget.h @@ -14,7 +14,6 @@ #include "DialogFontSize.h" #include "scene/picscene.h" -#include "ParaSettingUI.h" #include "ImageLoader.h" #include "ItemEditor.h" @@ -41,7 +40,7 @@ typedef struct ItemReplaceInfo #define SOURCE_COUNTER1 "Counter1_QvQ" #define SOURCE_COUNTER2 "Counter2_QvQ" -class TestPrintWidget : public QWidget,public ParaSettingUI +class TestPrintWidget : public QWidget { Q_OBJECT @@ -57,7 +56,6 @@ public: void createItemImage(); void getShowSelectItemText(); - void bindSysPara(SysPara *sysPara); void on_openfileButton_pressed(); @@ -137,6 +135,7 @@ private slots: private: // UI对象 Ui::TestPrintWidget ui; + SysPara* sysPara = nullptr; // 控件成员变量(关联UI控件) QButtonGroup* m_ButtonGroup; diff --git a/thai.ts b/thai.ts index 52a4d4b..4de46c8 100644 --- a/thai.ts +++ b/thai.ts @@ -1627,67 +1627,67 @@ - + 导出到U盘 - + 从U盘导入 - + 全选 - + 取消全选 - + 删除已选 - + 过滤器 - + 文件 - + 图标 - + 字体 - + 全部 - + 硬盘 - + 设备 - + ✕ @@ -1985,11 +1985,6 @@ MAC无效卡! - - - card data: %1 - - 无效卡,这张卡已经在%1时使用过 @@ -2841,7 +2836,7 @@ - + 额外设置 @@ -2862,7 +2857,7 @@ - + 系统授权 @@ -2877,28 +2872,28 @@ - + 提示 - + RFID卡清零! - - + + 取消授权 - + 警告 - + 密码错误:%1 @@ -3649,7 +3644,8 @@ p, li { white-space: pre-wrap; } - 喷印模式 + 喷印模式: + 喷印模式 @@ -3669,42 +3665,52 @@ p, li { white-space: pre-wrap; } - + + 喷印延迟(毫秒): + + + + + 无限长 + + + + 重复间隔(毫秒): - + 重复次数: - + 封锁时间(毫秒): - + 脉冲数/毫米: - + 喷印间隔(毫米): - + 同步喷印模式: - + 信息上下颠倒 - + 信息左右颠倒 @@ -3714,288 +3720,260 @@ p, li { white-space: pre-wrap; } - + 脉冲信号值: - + 无镜像打印 - + 自动水平翻转 - + 自动垂直翻转 - + 中心对称旋转 - - - - + + + 延时(毫秒): - - + + 触发延时(毫秒) - + 脉冲输出使能 - + 禁止电眼清零 - + 允许电眼复位 - + 允许电眼立即复位 - + 电眼清零 - + 字符宽度: - + 产生脉冲所需计数: - + 间隔模式: - + 行末<->行首 - + 行首<->行首 - - - + + 重复间隔(毫秒) - + 封锁时间(毫秒) - - 同步器清零 - - - - - 同步打印 - - - - + 电眼信号来源 - - + + 内部 - - + + 外部 - + 光电边沿触发 - + 光电电平触发 - - GroupBox - - - - - 延时触发 - - - - + 编码器参数 - + 触发延时(毫秒): 脉冲数/毫米 - + 脉冲数修正 - + 按字符宽度 - + 按喷印比例 - + 同步器正反转打印 - + 同步器只正转打印 - + 同步器只反转打印 - - 同步器触发 - - - - + 同步器来源 - + 其他设置 - + 镜象交替类型: - + 镜像交替间隔: - + ✕ - + ✓ - + 提示 - + 应用成功 - + 提示:参数不正确 - + 要求:触发长度小于喷印间隔 - - - - + + + 延时(毫米): - - - + + + 触发延时(毫米) - - + + 重复间隔(毫米) - - + + 抑止距离(毫米) - + 抑止距离(毫秒) - + 字符宽度 - + 喷印比例(%) @@ -4742,6 +4720,7 @@ p, li { white-space: pre-wrap; } + @@ -4934,6 +4913,11 @@ p, li { white-space: pre-wrap; } 确定要升级FPGA软件吗? + + + 没有FPGA升级文件 + + 找不到 lib.tar! diff --git a/turkey.ts b/turkey.ts index 52a4d4b..4de46c8 100644 --- a/turkey.ts +++ b/turkey.ts @@ -1627,67 +1627,67 @@ - + 导出到U盘 - + 从U盘导入 - + 全选 - + 取消全选 - + 删除已选 - + 过滤器 - + 文件 - + 图标 - + 字体 - + 全部 - + 硬盘 - + 设备 - + ✕ @@ -1985,11 +1985,6 @@ MAC无效卡! - - - card data: %1 - - 无效卡,这张卡已经在%1时使用过 @@ -2841,7 +2836,7 @@ - + 额外设置 @@ -2862,7 +2857,7 @@ - + 系统授权 @@ -2877,28 +2872,28 @@ - + 提示 - + RFID卡清零! - - + + 取消授权 - + 警告 - + 密码错误:%1 @@ -3649,7 +3644,8 @@ p, li { white-space: pre-wrap; } - 喷印模式 + 喷印模式: + 喷印模式 @@ -3669,42 +3665,52 @@ p, li { white-space: pre-wrap; } - + + 喷印延迟(毫秒): + + + + + 无限长 + + + + 重复间隔(毫秒): - + 重复次数: - + 封锁时间(毫秒): - + 脉冲数/毫米: - + 喷印间隔(毫米): - + 同步喷印模式: - + 信息上下颠倒 - + 信息左右颠倒 @@ -3714,288 +3720,260 @@ p, li { white-space: pre-wrap; } - + 脉冲信号值: - + 无镜像打印 - + 自动水平翻转 - + 自动垂直翻转 - + 中心对称旋转 - - - - + + + 延时(毫秒): - - + + 触发延时(毫秒) - + 脉冲输出使能 - + 禁止电眼清零 - + 允许电眼复位 - + 允许电眼立即复位 - + 电眼清零 - + 字符宽度: - + 产生脉冲所需计数: - + 间隔模式: - + 行末<->行首 - + 行首<->行首 - - - + + 重复间隔(毫秒) - + 封锁时间(毫秒) - - 同步器清零 - - - - - 同步打印 - - - - + 电眼信号来源 - - + + 内部 - - + + 外部 - + 光电边沿触发 - + 光电电平触发 - - GroupBox - - - - - 延时触发 - - - - + 编码器参数 - + 触发延时(毫秒): 脉冲数/毫米 - + 脉冲数修正 - + 按字符宽度 - + 按喷印比例 - + 同步器正反转打印 - + 同步器只正转打印 - + 同步器只反转打印 - - 同步器触发 - - - - + 同步器来源 - + 其他设置 - + 镜象交替类型: - + 镜像交替间隔: - + ✕ - + ✓ - + 提示 - + 应用成功 - + 提示:参数不正确 - + 要求:触发长度小于喷印间隔 - - - - + + + 延时(毫米): - - - + + + 触发延时(毫米) - - + + 重复间隔(毫米) - - + + 抑止距离(毫米) - + 抑止距离(毫秒) - + 字符宽度 - + 喷印比例(%) @@ -4742,6 +4720,7 @@ p, li { white-space: pre-wrap; } + @@ -4934,6 +4913,11 @@ p, li { white-space: pre-wrap; } 确定要升级FPGA软件吗? + + + 没有FPGA升级文件 + + 找不到 lib.tar! diff --git a/vena.ts b/vena.ts index 52a4d4b..4de46c8 100644 --- a/vena.ts +++ b/vena.ts @@ -1627,67 +1627,67 @@ - + 导出到U盘 - + 从U盘导入 - + 全选 - + 取消全选 - + 删除已选 - + 过滤器 - + 文件 - + 图标 - + 字体 - + 全部 - + 硬盘 - + 设备 - + ✕ @@ -1985,11 +1985,6 @@ MAC无效卡! - - - card data: %1 - - 无效卡,这张卡已经在%1时使用过 @@ -2841,7 +2836,7 @@ - + 额外设置 @@ -2862,7 +2857,7 @@ - + 系统授权 @@ -2877,28 +2872,28 @@ - + 提示 - + RFID卡清零! - - + + 取消授权 - + 警告 - + 密码错误:%1 @@ -3649,7 +3644,8 @@ p, li { white-space: pre-wrap; } - 喷印模式 + 喷印模式: + 喷印模式 @@ -3669,42 +3665,52 @@ p, li { white-space: pre-wrap; } - + + 喷印延迟(毫秒): + + + + + 无限长 + + + + 重复间隔(毫秒): - + 重复次数: - + 封锁时间(毫秒): - + 脉冲数/毫米: - + 喷印间隔(毫米): - + 同步喷印模式: - + 信息上下颠倒 - + 信息左右颠倒 @@ -3714,288 +3720,260 @@ p, li { white-space: pre-wrap; } - + 脉冲信号值: - + 无镜像打印 - + 自动水平翻转 - + 自动垂直翻转 - + 中心对称旋转 - - - - + + + 延时(毫秒): - - + + 触发延时(毫秒) - + 脉冲输出使能 - + 禁止电眼清零 - + 允许电眼复位 - + 允许电眼立即复位 - + 电眼清零 - + 字符宽度: - + 产生脉冲所需计数: - + 间隔模式: - + 行末<->行首 - + 行首<->行首 - - - + + 重复间隔(毫秒) - + 封锁时间(毫秒) - - 同步器清零 - - - - - 同步打印 - - - - + 电眼信号来源 - - + + 内部 - - + + 外部 - + 光电边沿触发 - + 光电电平触发 - - GroupBox - - - - - 延时触发 - - - - + 编码器参数 - + 触发延时(毫秒): 脉冲数/毫米 - + 脉冲数修正 - + 按字符宽度 - + 按喷印比例 - + 同步器正反转打印 - + 同步器只正转打印 - + 同步器只反转打印 - - 同步器触发 - - - - + 同步器来源 - + 其他设置 - + 镜象交替类型: - + 镜像交替间隔: - + ✕ - + ✓ - + 提示 - + 应用成功 - + 提示:参数不正确 - + 要求:触发长度小于喷印间隔 - - - - + + + 延时(毫米): - - - + + + 触发延时(毫米) - - + + 重复间隔(毫米) - - + + 抑止距离(毫米) - + 抑止距离(毫秒) - + 字符宽度 - + 喷印比例(%) @@ -4742,6 +4720,7 @@ p, li { white-space: pre-wrap; } + @@ -4934,6 +4913,11 @@ p, li { white-space: pre-wrap; } 确定要升级FPGA软件吗? + + + 没有FPGA升级文件 + + 找不到 lib.tar!