From be39714c5e3dd85dce052b27e514a08846e1af95 Mon Sep 17 00:00:00 2001 From: Byons Date: Mon, 15 Jun 2026 09:57:51 +0800 Subject: [PATCH] last week --- DevOp.cpp | 228 ++++++++++++++++++++++------------------ DevOp.h | 70 ++++++++++++ InkJetPrinter.cpp | 190 +++++++++++++++++++++++++++------ InkJetPrinter.h | 2 + Serial/serial.cpp | 9 ++ Serial/serial.h | 3 + SysPara.cpp | 6 +- SysPara.h | 1 + SystemManage.cpp | 41 +++----- SystemManage.h | 1 + SystemManage.ui | 8 +- SystemSetting.cpp | 2 + SystemUpdate.cpp | 15 +-- conf/VoltePara_No73.bin | Bin 3424 -> 3520 bytes mainwidget.cpp | 15 +-- systemsetting.ui | 13 +++ 16 files changed, 423 insertions(+), 181 deletions(-) diff --git a/DevOp.cpp b/DevOp.cpp index 15a02b9..e4a7280 100644 --- a/DevOp.cpp +++ b/DevOp.cpp @@ -51,77 +51,6 @@ #include "rfid/rfidfunction.h" #include -#define PRINT_CTRL_ADDR_BASE 0xa400 - -#define PRINT_DIGITAL_CHAR_BASE_ADDR (0xe000) - -#define WRITE_CALENDAR_DAT_ADDR (0xb100) - -#define RECYCLE_SLOT_STOP 0x1 -#define RECYCLE_SLOT_CLOSE 0x2 -#define RECYCLE_SLOT_OPEN 0x0 -#define PRINT_START_STOP_CTRL (PRINT_CTRL_ADDR_BASE + 0x40) -#define PRINT_RESET_PRODUCT_CNT (PRINT_CTRL_ADDR_BASE + 0x41) -#define RECYCLE_SLOT_CTRL_ADDR (PRINT_CTRL_ADDR_BASE + 0x42) -#define RESUME_FAULT_ADDR (PRINT_CTRL_ADDR_BASE + 0x43) - -#define VAR_CNT_ADDR (PRINT_CTRL_ADDR_BASE + 0x50) -#define VAR_CTRL_REG_ADDR (PRINT_CTRL_ADDR_BASE + 0x51) -#define MAININKCTRL_ADDR (PRINT_CTRL_ADDR_BASE + 0x59) -//#define MAININKCTRL_ADDR (PRINT_CTRL_ADDR_BASE + 0x5a) -#define WRITE_CNT1GROUP_COUNT 0xB13E -#define WRITE_CNT1GROUP_NUM 0xB13F -#define WRITE_CNT1GROUP_SETTING 0xB140 -#define READ_CNT1GROUP_CURR_LOOP 0x0190 -#define READ_CNT1GROUP_CURR_INDEX 0x0194 - -#define FPGA_STATUS_BASE_ADDR 0x0000 -#define FPGA_VERSOIN_NUM (FPGA_STATUS_BASE_ADDR + 0xfe) - - -#define READ_BUILD_DAT (FPGA_STATUS_BASE_ADDR + 0xf0) - -#define READ_PRINTDATA_XOR (FPGA_STATUS_BASE_ADDR + 0xf2) -#define READ_SYNC_COUNTER (FPGA_STATUS_BASE_ADDR + 0xf4) - -#define PHASE_DETECT_HIGH_VOLTAGE_TM 0x100 -#define READ_CALENDAR_DAT_ADDR 0x180 - -#define READ_RAND_FIFO_ADDR 0x200 // 读FPGA的随机码FIFO - -#define ROW_PRINT_SEQNENCE_ADDR 0xb200 //行扫描顺序 -#define DAC_TABLE_ADDR 0xb280 //每一个行点对应的DAC值 -#define NOT_GAP_DAC_TABLE_ADDR 0xb380 //每一个不隔点对应的DAC值 -#define FULL_COL_DAC_TABLE_ADDR 0xb480 //每一个不隔点对应的DAC值 - -#define MATCH_FULL_DAC_TABLE_ADDR 0xB500 // 匹配满列 DAC表 起始地址 -#define MATCH_1_DAC_TABLE_ADDR 0xB600 // 匹配单点 DAC表 起始地址 -#define MATCH_2_DAC_TABLE_ADDR 0xB700 // 匹配两点 DAC表 起始地址 -#define MATCH_3_DAC_TABLE_ADDR 0xB800 // 匹配三点 DAC表 起始地址 -#define MATCH_4_DAC_TABLE_ADDR 0xB900 // 匹配四点 DAC表 起始地址 -#define MATCH_5_DAC_TABLE_ADDR 0xBA00 // 匹配五点 DAC表 起始地址 -#define MATCH_G1_DAC_TABLE_ADDR 0xBC00 // 匹配空一点 DAC表 起始地址 -#define MATCH_G2_DAC_TABLE_ADDR 0xBC80 // 匹配空两点 DAC表 起始地址 -#define MATCH_G3_DAC_TABLE_ADDR 0xBD00 // 匹配空三点 DAC表 起始地址 -#define MATCH_G4_DAC_TABLE_ADDR 0xBD80 // 匹配空四点 DAC表 起始地址 -#define MATCH_G5_DAC_TABLE_ADDR 0xBE00 // 匹配空五点 DAC表 起始地址 -#define MATCH_G6_DAC_TABLE_ADDR 0xBE80 // 匹配空六点 DAC表 起始地址 -#define MATCH_P1_DAC_TABLE_ADDR 0xBF00 // 匹配预备一 DAC表 起始地址 -#define MATCH_P2_DAC_TABLE_ADDR 0xBF80 // 匹配预备二 DAC表 起始地址 -#define MATCH_C_DAC_TABLE_ADDR 0xC000 // 匹配复杂 DAC表 起始地址 - -#define WRITE_COUNTER3_ADDR (0xb150) -#define WRITE_COUNTER4_ADDR (0xb164) -//#define READ_CNT3_CURVALUE_ADDR 0x01b4 -#define READ_CNT3_CURVALUE_ADDR 0x1834 - -#define LOCADDR '1' - -#define NOLEDLIGHT 0x10 -#define REDLIGHTCODE 0X11 -#define YELLOWLIGHTCODE 0X13 -#define GREENLIGHTCODE 0X12 - unsigned short DACArray[64]; quint16 notGapDACArray[64]; quint16 fullColDACArray[64]; @@ -2629,16 +2558,16 @@ int DevOp::writeFpgaPrintPara(bool ignoreWarn){ } } } - else if(type == 6 || type == 8){ + else if(sysPara->status.build_dat.builTime == 73){ if(sysPara->status.currVoltageVersion != sysPara->status.lastVoltageVersion){ - writeDacValue2Fpga_No72NewVoltData(); + writeDacValue2Fpga_No73(); sysPara->status.lastVoltageVersion = sysPara->status.currVoltageVersion; } } - else if(sysPara->status.build_dat.builTime == 73){ + else if(type == 6 || type == 8){ if(sysPara->status.currVoltageVersion != sysPara->status.lastVoltageVersion){ - writeDacValue2Fpga_No73(); + writeDacValue2Fpga_No72NewVoltData(); sysPara->status.lastVoltageVersion = sysPara->status.currVoltageVersion; } } @@ -2827,38 +2756,54 @@ int DevOp::writeFpgaPrintPara(bool ignoreWarn){ sysPara->status.configDone = 1; return 0; } + +template +QString arrayToStr(const T* arr, int n) { + if (n <= 0) return QString(); + + QString result; + for (int i = 0; i < n; ++i) { + if (i != 0) result += ','; + result += QString::number(arr[i]); + } + return result; +} + + void DevOp::writeDacValue2Fpga_No73() { -// LogInfo::setRunStatusText(tr("No73 send DAC Data.")); - quint16 matchFullDACArray[48]; - quint16 matchStealDACArray[48]; - quint16 matchContinousDACArray[48]; + LogInfo::setRunStatusText(tr("No73 send DAC Data.")); + static quint16 matchFullDACArray[48]; + static quint16 matchStealDACArray[48]; + static quint16 matchContinousDACArray[48]; - quint16 rowDelayArray[64]; - quint16 head1RowDelayArray[64]; + static quint16 rowDelayArray[64]; + static quint8 head1RowDelayArray[64]; + static quint8 fullColRowDelayArray[64]; - quint8 adjDACParameter[64]; + static quint8 adjDACParameter[64]; - quint8 matchTotalTableDACArray[15][64]; - quint8* matchOneDACArray = &matchTotalTableDACArray[0][0]; - quint8* matchTwoDACArray = &matchTotalTableDACArray[1][0]; - quint8* matchThreeDACArray = &matchTotalTableDACArray[3][0]; - quint8* matchFourDACArray = &matchTotalTableDACArray[6][0]; - quint8* matchFiveDACArray = &matchTotalTableDACArray[10][0]; + static quint16 matchTotalTableDACArray[15][64]; + quint16* matchOneDACArray = &matchTotalTableDACArray[0][0]; + quint16* matchTwoDACArray = &matchTotalTableDACArray[1][0]; + quint16* matchThreeDACArray = &matchTotalTableDACArray[3][0]; + quint16* matchFourDACArray = &matchTotalTableDACArray[6][0]; + quint16* matchFiveDACArray = &matchTotalTableDACArray[10][0]; - quint8 matchPrevious1DotDACArray[48]; - quint8 matchPrevious2DotDACArray[48]; - quint8 matchPrevious3DotDACArray[48]; - quint8 matchPrevious4DotDACArray[48]; - quint8 matchPrevious5DotDACArray[48]; - quint8 matchGapDACArray[64][5]; - quint8 matchP3dotGapDACArray[64][5]; + static quint8 matchPrevious1DotDACArray[48]; + static quint8 matchPrevious2DotDACArray[48]; + static quint8 matchPrevious3DotDACArray[48]; + static quint8 matchPrevious4DotDACArray[48]; + static quint8 matchPrevious5DotDACArray[48]; + static quint8 matchGapDACArray[64][5]; + static quint8 matchP3dotGapDACArray[64][5]; memset(matchFullDACArray, 0, sizeof(matchFullDACArray)); memset(matchStealDACArray, 0, sizeof(matchStealDACArray)); memset(matchContinousDACArray, 0, sizeof(matchContinousDACArray)); memset(rowDelayArray, 0, sizeof(rowDelayArray)); memset(head1RowDelayArray, 0, sizeof(head1RowDelayArray)); + memset(fullColRowDelayArray, 0, sizeof(fullColRowDelayArray)); memset(matchTotalTableDACArray, 0, sizeof(matchTotalTableDACArray)); @@ -2871,6 +2816,8 @@ void DevOp::writeDacValue2Fpga_No73() memset(matchP3dotGapDACArray, 0, sizeof(matchP3dotGapDACArray)); memset(adjDACParameter, 0, sizeof(adjDACParameter)); + int baseDacScale = sysPara->para.endVoltage; + QFile file("./conf/full_dac_raw.txt"); file.open(QIODevice::WriteOnly); for (int i = 0; i < 48; i++) @@ -2920,13 +2867,24 @@ void DevOp::writeDacValue2Fpga_No73() out << sysPara->voltePara_No73.head1_row_delay_table[i]<< "\n"; } file.close(); + + file.setFileName("./conf/full_row_delay.txt"); + file.open(QIODevice::WriteOnly); + for (int i = 0; i < 48; i++) + { + QTextStream out(&file); + fullColRowDelayArray[i] = sysPara->voltePara_No73.full_row_delay_table[i]; + out << sysPara->voltePara_No73.full_row_delay_table[i]<< "\n"; + } + file.close(); + file.setFileName("./conf/1_table_dac_raw.txt"); file.open(QIODevice::WriteOnly); for (int i = 0; i < 48; i++) { QTextStream out(&file); *matchOneDACArray = sysPara->voltePara_No73.pixel_1_table[i];// - head1_base_table[i]; - out << sysPara->voltePara_No73.pixel_1_table[i] <<" "<< *matchOneDACArray << "\n"; + out << sysPara->voltePara_No73.pixel_1_table[i] << "\n"; ++matchOneDACArray; } file.close(); @@ -3065,27 +3023,92 @@ void DevOp::writeDacValue2Fpga_No73() file.setFileName("./conf/general_dac_parameter.txt"); file.open(QIODevice::WriteOnly); - for (int i = 0; i < sizeof(sysPara->voltePara_No73.pixel_general_dac_parameter)/sizeof(sysPara->voltePara_No73.pixel_general_dac_parameter[0]); i++) + for (int i = 0; i < sizeof(sysPara->voltePara_No73.pixel_para_table)/sizeof(sysPara->voltePara_No73.pixel_para_table[0]); i++) { - adjDACParameter[i] = sysPara->voltePara_No73.pixel_general_dac_parameter[i]; + adjDACParameter[i] = sysPara->voltePara_No73.pixel_para_table[i]; QTextStream out(&file); out << adjDACParameter[i]; out << "\n"; } file.close(); +#if 0 /* apply scale */ + for (int i = 0; i < sizeof(matchFullDACArray)/sizeof (matchFullDACArray[0]); i++) + { + matchFullDACArray[i] = (matchFullDACArray[i] * baseDacScale)/100; + } + for (int i = 0; i < sizeof(matchContinousDACArray)/sizeof (matchContinousDACArray[0]); i++) + { + matchContinousDACArray[i] = (matchContinousDACArray[i] * baseDacScale)/100; + } + for (int i = 0; i < 15; i++) + { + for (int j = 0; j < 64; j++) + { + matchTotalTableDACArray[i][j] = (matchTotalTableDACArray[i][j] * baseDacScale)/100; + } + } + + for (int i = 0; i < 48; i++) + { + QTextStream out(&file); + sysPara->voltePara_No73.pixel_full_table[i] = (sysPara->voltePara_No73.pixel_full_table[i]* baseDacScale)/100; + } + for (int i = 0; i < 48; i++) + { + QTextStream out(&file); + sysPara->voltePara_No73.pixel_continous_table[i] = (sysPara->voltePara_No73.pixel_continous_table[i]* baseDacScale)/100; + } + for (int i = 0; i < 48; i++) + { + sysPara->voltePara_No73.pixel_1_table[i] = (sysPara->voltePara_No73.pixel_1_table[i]* baseDacScale)/100; + sysPara->voltePara_No73.pixel_2_table[i][0] = (sysPara->voltePara_No73.pixel_2_table[i][0]* baseDacScale)/100; + sysPara->voltePara_No73.pixel_2_table[i][1] = (sysPara->voltePara_No73.pixel_2_table[i][1]* baseDacScale)/100; + sysPara->voltePara_No73.pixel_3_table[i][0] = (sysPara->voltePara_No73.pixel_3_table[i][0]* baseDacScale)/100; + sysPara->voltePara_No73.pixel_3_table[i][1] = (sysPara->voltePara_No73.pixel_3_table[i][1]* baseDacScale)/100; + sysPara->voltePara_No73.pixel_3_table[i][2] = (sysPara->voltePara_No73.pixel_3_table[i][2]* baseDacScale)/100; + sysPara->voltePara_No73.pixel_4_table[i][0] = (sysPara->voltePara_No73.pixel_4_table[i][0]* baseDacScale)/100; + sysPara->voltePara_No73.pixel_4_table[i][1] = (sysPara->voltePara_No73.pixel_4_table[i][1]* baseDacScale)/100; + sysPara->voltePara_No73.pixel_4_table[i][2] = (sysPara->voltePara_No73.pixel_4_table[i][2]* baseDacScale)/100; + sysPara->voltePara_No73.pixel_4_table[i][3] = (sysPara->voltePara_No73.pixel_4_table[i][3]* baseDacScale)/100; + sysPara->voltePara_No73.pixel_5_table[i][0] = (sysPara->voltePara_No73.pixel_5_table[i][0]* baseDacScale)/100; + sysPara->voltePara_No73.pixel_5_table[i][1] = (sysPara->voltePara_No73.pixel_5_table[i][1]* baseDacScale)/100; + sysPara->voltePara_No73.pixel_5_table[i][2] = (sysPara->voltePara_No73.pixel_5_table[i][2]* baseDacScale)/100; + sysPara->voltePara_No73.pixel_5_table[i][3] = (sysPara->voltePara_No73.pixel_5_table[i][3]* baseDacScale)/100; + sysPara->voltePara_No73.pixel_5_table[i][4] = (sysPara->voltePara_No73.pixel_5_table[i][4]* baseDacScale)/100; + } + +#endif + fpgaWr(0xB300, (unsigned char *)(matchFullDACArray), sizeof (matchFullDACArray)); fpgaWr(0xB380, (unsigned char *)(matchContinousDACArray), sizeof (matchContinousDACArray)); fpgaWr(0xB400, (unsigned char *)(&rowDelayArray[0]), sizeof (rowDelayArray)); - fpgaWr(0xB480, (unsigned char *)(&head1RowDelayArray[0]), sizeof (head1RowDelayArray)); + fpgaWr(0xB480, (unsigned char *)(&head1RowDelayArray[0]), sizeof(head1RowDelayArray)); + fpgaWr(0xB4C0, (unsigned char *)(&fullColRowDelayArray[0]), sizeof (fullColRowDelayArray)); - fpgaWr(0xB500, (unsigned char *)(matchTotalTableDACArray[0]), sizeof (matchTotalTableDACArray)); - fpgaWr(0xBC00, (unsigned char *)(matchP3dotGapDACArray[0]), sizeof (matchP3dotGapDACArray)); - fpgaWr(0xBE00, (unsigned char *)(matchGapDACArray[0]), sizeof (matchGapDACArray)); + fpgaWr(0xA600, (unsigned char *)(matchTotalTableDACArray[0]), sizeof (matchTotalTableDACArray)); + // fpgaWr(0xA600, (unsigned char *)(sysPara->voltePara_No73.pixel_1_table), sizeof(sysPara->voltePara_No73.pixel_1_table)); + + //fpgaWr(0xB500, (unsigned char *)(matchTotalTableDACArray[0]), sizeof (matchTotalTableDACArray)); + fpgaWr(0xBC00, (unsigned char *)(matchP3dotGapDACArray[0]), sizeof (matchP3dotGapDACArray)); // 0xBC00 - 0xBD40 + fpgaWr(0xBE00, (unsigned char *)(matchGapDACArray[0]), sizeof (matchGapDACArray)); fpgaWr(0xC000, (unsigned char *)sysPara->voltePara_No73.pixel_big_table, sizeof(sysPara->voltePara_No73.pixel_big_table));// 写入8个 big data fpgaWr(0xC100, (unsigned char *)adjDACParameter, sizeof(adjDACParameter));// 写入8个 + LogInfo::setRunStatusText("Write dac value to fpga no 73:"); + // TODO:: 用setRunStatusText输出上面十组数据的前10位的十六进制值 + + LogInfo::setRunStatusText("0xB300: 0x" + arrayToStr(matchFullDACArray, 10)); + LogInfo::setRunStatusText("0xB380: 0x" + arrayToStr(matchContinousDACArray, 10)); + LogInfo::setRunStatusText("0xB400: 0x" + arrayToStr(rowDelayArray, 10)); + LogInfo::setRunStatusText("0xB480: 0x" + arrayToStr(head1RowDelayArray, 10)); + LogInfo::setRunStatusText("0xB4C0: 0x" + arrayToStr(fullColRowDelayArray, 10)); + LogInfo::setRunStatusText("0xA600: 0x" + arrayToStr(matchTotalTableDACArray[0], 10)); + LogInfo::setRunStatusText("0xBC00: 0x" + arrayToStr(matchP3dotGapDACArray[6], 5)); + LogInfo::setRunStatusText("0xBE00: 0x" + arrayToStr(matchGapDACArray[6], 5)); + LogInfo::setRunStatusText("0xC000: 0x" + arrayToStr(sysPara->voltePara_No73.pixel_big_table[0], 8)); + LogInfo::setRunStatusText("0xC100: 0x" + arrayToStr(adjDACParameter, 5)); } // 齿轮泵设置 unsigned char dataofGearPump[2]; @@ -3270,6 +3293,7 @@ void DevOp::printCtrl2(int cmd){ unsigned int DevOp::readFpgaVersionNum(){ fpgaRd(0x00EC,&sysPara->status.FPGAChipType,1); fpgaRd(0x00FE,(unsigned char *)&sysPara->status.fpgaVersionNum,2); + fpgaRd(READ_BUILD_DAT, (unsigned char *)&sysPara->status.build_dat.builTime, sizeof(sysPara->status.build_dat.builTime)); return 0; } diff --git a/DevOp.h b/DevOp.h index 68c34cc..4e1a48f 100644 --- a/DevOp.h +++ b/DevOp.h @@ -67,6 +67,76 @@ class SysPara; #define WARN_STATUS_HDINT (1<<1) /*喷头盖,盖上为0,否则为1,必须盖上才能打印,电磁铁有正反面*/ #define WARN_STATUS_VISCOTITY_MEASURE_READY (1<<0) // 球已经到上位等灯 +#define PRINT_CTRL_ADDR_BASE 0xa400 + +#define PRINT_DIGITAL_CHAR_BASE_ADDR (0xe000) + +#define WRITE_CALENDAR_DAT_ADDR (0xb100) + +#define RECYCLE_SLOT_STOP 0x1 +#define RECYCLE_SLOT_CLOSE 0x2 +#define RECYCLE_SLOT_OPEN 0x0 +#define PRINT_START_STOP_CTRL (PRINT_CTRL_ADDR_BASE + 0x40) +#define PRINT_RESET_PRODUCT_CNT (PRINT_CTRL_ADDR_BASE + 0x41) +#define RECYCLE_SLOT_CTRL_ADDR (PRINT_CTRL_ADDR_BASE + 0x42) +#define RESUME_FAULT_ADDR (PRINT_CTRL_ADDR_BASE + 0x43) + +#define VAR_CNT_ADDR (PRINT_CTRL_ADDR_BASE + 0x50) +#define VAR_CTRL_REG_ADDR (PRINT_CTRL_ADDR_BASE + 0x51) +#define MAININKCTRL_ADDR (PRINT_CTRL_ADDR_BASE + 0x59) +//#define MAININKCTRL_ADDR (PRINT_CTRL_ADDR_BASE + 0x5a) +#define WRITE_CNT1GROUP_COUNT 0xB13E +#define WRITE_CNT1GROUP_NUM 0xB13F +#define WRITE_CNT1GROUP_SETTING 0xB140 +#define READ_CNT1GROUP_CURR_LOOP 0x0190 +#define READ_CNT1GROUP_CURR_INDEX 0x0194 + +#define FPGA_STATUS_BASE_ADDR 0x0000 +#define FPGA_VERSOIN_NUM (FPGA_STATUS_BASE_ADDR + 0xfe) + + +#define READ_BUILD_DAT (FPGA_STATUS_BASE_ADDR + 0xf0) + +#define READ_PRINTDATA_XOR (FPGA_STATUS_BASE_ADDR + 0xf2) +#define READ_SYNC_COUNTER (FPGA_STATUS_BASE_ADDR + 0xf4) + +#define PHASE_DETECT_HIGH_VOLTAGE_TM 0x100 +#define READ_CALENDAR_DAT_ADDR 0x180 + +#define READ_RAND_FIFO_ADDR 0x200 // 读FPGA的随机码FIFO + +#define ROW_PRINT_SEQNENCE_ADDR 0xb200 //行扫描顺序 +#define DAC_TABLE_ADDR 0xb280 //每一个行点对应的DAC值 +#define NOT_GAP_DAC_TABLE_ADDR 0xb380 //每一个不隔点对应的DAC值 +#define FULL_COL_DAC_TABLE_ADDR 0xb480 //每一个不隔点对应的DAC值 + +#define MATCH_FULL_DAC_TABLE_ADDR 0xB500 // 匹配满列 DAC表 起始地址 +#define MATCH_1_DAC_TABLE_ADDR 0xB600 // 匹配单点 DAC表 起始地址 +#define MATCH_2_DAC_TABLE_ADDR 0xB700 // 匹配两点 DAC表 起始地址 +#define MATCH_3_DAC_TABLE_ADDR 0xB800 // 匹配三点 DAC表 起始地址 +#define MATCH_4_DAC_TABLE_ADDR 0xB900 // 匹配四点 DAC表 起始地址 +#define MATCH_5_DAC_TABLE_ADDR 0xBA00 // 匹配五点 DAC表 起始地址 +#define MATCH_G1_DAC_TABLE_ADDR 0xBC00 // 匹配空一点 DAC表 起始地址 +#define MATCH_G2_DAC_TABLE_ADDR 0xBC80 // 匹配空两点 DAC表 起始地址 +#define MATCH_G3_DAC_TABLE_ADDR 0xBD00 // 匹配空三点 DAC表 起始地址 +#define MATCH_G4_DAC_TABLE_ADDR 0xBD80 // 匹配空四点 DAC表 起始地址 +#define MATCH_G5_DAC_TABLE_ADDR 0xBE00 // 匹配空五点 DAC表 起始地址 +#define MATCH_G6_DAC_TABLE_ADDR 0xBE80 // 匹配空六点 DAC表 起始地址 +#define MATCH_P1_DAC_TABLE_ADDR 0xBF00 // 匹配预备一 DAC表 起始地址 +#define MATCH_P2_DAC_TABLE_ADDR 0xBF80 // 匹配预备二 DAC表 起始地址 +#define MATCH_C_DAC_TABLE_ADDR 0xC000 // 匹配复杂 DAC表 起始地址 + +#define WRITE_COUNTER3_ADDR (0xb150) +#define WRITE_COUNTER4_ADDR (0xb164) +//#define READ_CNT3_CURVALUE_ADDR 0x01b4 +#define READ_CNT3_CURVALUE_ADDR 0x1834 + +#define LOCADDR '1' + +#define NOLEDLIGHT 0x10 +#define REDLIGHTCODE 0X11 +#define YELLOWLIGHTCODE 0X13 +#define GREENLIGHTCODE 0X12 #define FPGA_SYS_HZ 100000000 diff --git a/InkJetPrinter.cpp b/InkJetPrinter.cpp index aa768fb..da6a2f0 100644 --- a/InkJetPrinter.cpp +++ b/InkJetPrinter.cpp @@ -53,25 +53,27 @@ InkJetPrinter::InkJetPrinter(QWidget* parent) InkJetPrinter::~InkJetPrinter() { if(m_serialThreadFPGA->isRunning()){ + m_serialThreadFPGA->requestInterruption(); m_serialThreadFPGA->quit(); m_serialThreadFPGA->wait(); } if(m_serialThreadSTM32->isRunning()){ + m_serialThreadSTM32->requestInterruption(); m_serialThreadSTM32->quit(); m_serialThreadSTM32->wait(); } - if(serialFPGA) + if(serialFPGA){ delete serialFPGA; - if(serialSTM32) + serialFPGA = nullptr; + } + if(serialSTM32){ delete serialSTM32; + serialSTM32 = nullptr; + } } void InkJetPrinter::init() -{ - timer = new QTimer(); - connect(timer, SIGNAL(timeout()), this, SLOT(timerHandler())); - timer->start(10); - +{ // 创建自定义子控件(原逻辑不变) m_MainWidget = new MainWidget(this); m_TestPrintWidget = new TestPrintWidget(this); @@ -214,6 +216,11 @@ void InkJetPrinter::init() connect(serialFPGA,SIGNAL(getFPGAXXXDay(unsigned char*)),this,SLOT(saveFPGAXXXDay(unsigned char*))); connect(serialFPGA,SIGNAL(queueSizeFPGA(int)),this,SLOT(showFPGAqueuesize(int))); connect(serialFPGA,SIGNAL(queueFPGASizeSIG(int)),this,SLOT(showqueueFPGAsize(int))); + connect(serialFPGA, &Serial::FPGABuildDat, this, [this](int buildTime){ + sysPara->status.build_dat.builTime = quint16(buildTime); + qDebug() << "FPGA build time: " << buildTime; + LogInfo::setRunStatusText(QString("FPGA build time: %1").arg(buildTime)); + }); m_serialThreadSTM32 = new QThread(); serialSTM32 = new Serial("/dev/ttyAS2"); @@ -232,10 +239,19 @@ void InkJetPrinter::init() connect(serialSTM32,SIGNAL(powerOffReady()),m_MainWidget,SLOT(powerOffConfirmed())); connect(serialSTM32,SIGNAL(queueSizeSTM32(int)),this,SLOT(showSTM32queuesize(int))); + connect(serialSTM32, &Serial::STM32Connected, this, [this](bool ok, QString errorMsg){ + if(ok){ + LogInfo::setRunStatusText("Connected to STM32 serial port"); + } + else{ + LogInfo::setRunStatusText("STM32 serial port connection failed: " + errorMsg); + } + }); connect(m_SystemManage,SIGNAL(sigToCloseSerialFPGA()),this,SLOT(closeSerialFPGA())); connect(m_SystemManage,SIGNAL(sigToCloseSerialSTM32()),this,SLOT(closeSerialSTM32())); connect(m_SystemManage,SIGNAL(restartSerial()),this,SLOT(restartSerialPort())); + connect(m_SystemManage, &SystemManage::rebootAppAcquired, this, &InkJetPrinter::rebootApp); flagOfSerialThreadStratEn = true; connect(m_SystemManage,SIGNAL(enableClick(bool)),this,SLOT(enableInkJetTabClick(bool))); @@ -252,25 +268,15 @@ void InkJetPrinter::init() connect(m_SystemUpdate,&SystemUpdate::sendUpDateChARLIBSignal,m_SystemManage,&SystemManage::on_pushButtonUpdateCharLib_pressed); connect(m_SystemUpdate,&SystemUpdate::sendButtonClickedSignal,this,&InkJetPrinter::getSystemManageWidgetButtonClickSlot); + // 原注释的默认页面设置(按需启用) - //m_StackedWidget->setCurrentWidget(m_ErCodeSettingsWidget); - //m_StackedWidget->setCurrentWidget(m_MainInterfaceWidget); - - connect(m_BarCodeDlg, &QBarCode::sig_barCodeClose, this, [=](){ - m_StackedWidget->setCurrentWidget(m_TestPrintWidget); - }); - connect(m_BarCodeDlg, &QBarCode::sig_barCodeClose, - m_TestPrintWidget, &TestPrintWidget::slt_BarCodeItemDone); - - connect(m_QRCodeDlg, &dlgQrCode::sig_qrCodeClose, this, [=](){ - m_StackedWidget->setCurrentWidget(m_TestPrintWidget); - }); - - connect(m_QRCodeDlg, &dlgQrCode::sig_qrCodeClose, - m_TestPrintWidget, &TestPrintWidget::slt_QRCodeItemDone); sysPara->status.machineMac = m_MainInstruction->dlgInputAddr->jd.addr; sysPara->para.rfidCountDown = 5; + + timer = new QTimer(); + connect(timer, SIGNAL(timeout()), this, SLOT(timerHandler())); + timer->start(10); } // type 1,2: 分别显示计数器1或2的界面 @@ -747,10 +753,6 @@ void InkJetPrinter::timerHandler(void){ // sysPara->devOp->controlRedLight(false); } - if(pulse_1s) { - qDebug() << "FPGA version: build time: " << sysPara->status.build_dat.builTime << " inkDot: " << sysPara->status.build_dat.inkDot; - } - sysPara->status.gearPumpRunSpeed = (PulseCnt * 60 * 1000) / (500 * 2); if(!sysPara->para.gearPumpEnable) sysPara->status.PRESSURE *= 5; //响应群众号召,数值放大五倍 @@ -1253,7 +1255,7 @@ void InkJetPrinter::timerHandler(void){ sysPara->status.waitHightVolOff--; if(sysPara->status.waitHightVolOff==0){ sysPara->devOp->highVoltageCtrl(0); -// ui->tabMainWindow->setRunStatus(tr("停止打印,自动关闭高压.")); + m_MainWidget->setRunStatus(tr("停止打印,自动关闭高压.")); } } @@ -1679,7 +1681,7 @@ void InkJetPrinter::saveFPGAStatus(unsigned char *data){ } else target[i]=data[7+i]; } - if(sysPara->status.dummy != sysPara->status.isPrinting){ + if(sysPara->status.dummy != sysPara->status.isPrinting && sysPara->status.selfCheckDone){ sysPara->status.isPrinting = sysPara->status.dummy; m_MainWidget->updatePrintDisplayLabel(); } @@ -1795,6 +1797,8 @@ void InkJetPrinter::saveSTM32Version(unsigned char *data){ QString STM32Ver = QString("%1.%2.%3").arg((sysPara->status.stm32Verion>>16)&0xFF) .arg((sysPara->status.stm32Verion>>8) & 0xFF).arg(sysPara->status.stm32Verion&0xFF); qDebug()<<"STM32Ver:"<PowerOnSetTime(date); } @@ -1846,24 +1850,34 @@ void InkJetPrinter::closedSerial(){ void InkJetPrinter::closeSerialFPGA(){ if(m_serialThreadFPGA->isRunning()){ + m_serialThreadFPGA->requestInterruption(); m_serialThreadFPGA->quit(); m_serialThreadFPGA->wait(); } - if(serialFPGA) + if(serialFPGA){ delete serialFPGA; + serialFPGA = nullptr; + } } void InkJetPrinter::closeSerialSTM32(){ if(m_serialThreadSTM32->isRunning()){ + m_serialThreadSTM32->requestInterruption(); m_serialThreadSTM32->quit(); m_serialThreadSTM32->wait(); } - if(serialSTM32) + if(serialSTM32){ delete serialSTM32; + serialSTM32 = nullptr; + } } void InkJetPrinter::restartSerialPort(){ + + closeSerialFPGA(); + closeSerialSTM32(); + serialFPGA = new Serial("/dev/ttyAS5"); serialFPGA->moveToThread(m_serialThreadFPGA); connect(serialFPGA,SIGNAL(sendQueueData(int,int,unsigned char*,int,int)),sysPara->devOp,SLOT(resendFPGADate(int,int,unsigned char*,int,int))); @@ -1879,7 +1893,11 @@ void InkJetPrinter::restartSerialPort(){ connect(serialFPGA,SIGNAL(getFPGAXXXDay(unsigned char*)),this,SLOT(saveFPGAXXXDay(unsigned char*))); connect(serialFPGA,SIGNAL(queueSizeFPGA(int)),this,SLOT(showFPGAqueuesize(int))); connect(serialFPGA,SIGNAL(queueFPGASizeSIG(int)),this,SLOT(showqueueFPGAsize(int))); - + connect(serialFPGA, &Serial::FPGABuildDat, this, [this](int buildTime){ + sysPara->status.build_dat.builTime = quint16(buildTime); + qDebug() << "FPGA build time: " << buildTime; + LogInfo::setRunStatusText(QString("FPGA build time: %1").arg(buildTime)); + }); serialSTM32 = new Serial("/dev/ttyAS2"); serialSTM32->moveToThread(m_serialThreadSTM32); @@ -1894,6 +1912,14 @@ void InkJetPrinter::restartSerialPort(){ connect(serialSTM32,SIGNAL(powerOffReady()),m_MainWidget,SLOT(powerOffConfirmed())); connect(m_serialThreadSTM32,&QThread::started,serialSTM32,&Serial::startInitSlot); connect(serialSTM32,SIGNAL(queueSizeSTM32(int)),this,SLOT(showSTM32queuesize(int))); + connect(serialSTM32, &Serial::STM32Connected, this, [this](bool ok, QString errorMsg){ + if(ok){ + LogInfo::setRunStatusText("Connected to STM32 serial port"); + } + else{ + LogInfo::setRunStatusText("STM32 serial port connection failed: " + errorMsg); + } + }); flagOfSerialThreadStratEn = true; } @@ -2356,6 +2382,104 @@ void InkJetPrinter::viscosity_timerHandler() firstTime = 0; } +void InkJetPrinter::rebootApp() +{ + if(!sysPara->status.selfCheckDone) + sysPara->status.selfCheckDone = true; + + this->setDisabled(true); + + m_StackedWidget->setCurrentWidget(m_MainWidget); + + // emit setDisableAll(); + if(!TEST_MODE && sysPara->para.flagOfReclaimPumEnable){ + for(int i=15;i>11;i--) + { + if(i == 15){ + sysPara->status.isPumpValveControledByHand = true; //停止自动 + sysPara->devOp->controlInkValve(true); + sysPara->devOp->controlInkValvePWM(true); + sysPara->devOp->controlReclaimPump(true,true); + sysPara->devOp->controlViscosityPump(true); + sysPara->devOp->controlCycleValve(true); + sysPara->para.gearPumpValue = 0; + sysPara->devOp->WriteMoterPump(); + } + if(i == 12){ + sysPara->devOp->controlInkValve(false); + sysPara->devOp->controlInkValvePWM(false); + } + m_MainWidget->setRunStatus(tr("正在准备重启,请等待%1秒...............").arg(i)); + MySleep(1000); + } + } + sysPara->devOp->controlReclaimTankOpen(true); + sysPara->status.isPumpValveControledByHand = true; //停止自动 + if(sysPara->para.gearPumpEnable ){ + if(!sysPara->para.flagOfReclaimPumEnable){ + sysPara->para.gearPumpValue = 360; + sysPara->devOp->WriteMoterPump(); + } + else{ + sysPara->devOp->controlReclaimPump(true,false); + sysPara->para.gearPumpValue = 0; + sysPara->devOp->WriteMoterPump(); + } + } + else{ + sysPara->para.reclaimPumpPWMWidth = 95; + sysPara->devOp->controlReclaimPump(true,true); + } + + if(!sysPara->devOp->isViscosityPumpOpen()) + sysPara->devOp->controlViscosityPump(true); + sysPara->devOp->controlCycleValve(true); + sysPara->devOp->controlInkValve(false); //关供墨 + sysPara->devOp->controlInkValvePWM(false); //关供墨 + + if(!TEST_MODE){ + for(int i=11;i>7;i--) + { + if(i==9) + sysPara->devOp->controlReclaimTankOpen(false); + m_MainWidget->setRunStatus(tr("正在准备重启,请等待%1秒...............").arg(i)); + MySleep(1000); + } + } + + if(!sysPara->status.lostCommuFlag){ + sysPara->para.calandar_and_dat.cnt1CurrValue = QString::number(sysPara->status.calandar_and_dat.cnt1CurrValue,16).toInt(); + sysPara->para.calandar_and_dat.cnt2CurrValue = QString::number(sysPara->status.calandar_and_dat.cnt2CurrValue,16).toInt(); + sysPara->para.Counter3.cnt3CurrValue = QString::number(sysPara->status.Status_Counter3.cnt3CurrValue,16).toInt(); + + m_MainWidget->updateTotalCnt(0); + sysPara->saveParaToFile(); // 关机前将相关配置保存 + } + sysPara->status.powerOffAppending = false; + if(!TEST_MODE){ + for(int i=7;i>0;i--) + { + if(i == 5) + sysPara->devOp->controlReclaimTankClose(true); + if(i == 4){ + sysPara->devOp->controlViscosityPump(false); + sysPara->devOp->controlCycleValve(false); + sysPara->devOp->controlReclaimPump(false,false); + sysPara->para.gearPumpValue = 0; + sysPara->devOp->WriteMoterPump(); + } + m_MainWidget->setRunStatus(tr("正在准备重启,请等待%1秒...............").arg(i)); + MySleep(1000); + } + } + + sysPara->saveParaToFile(); // 关机前将相关配置保存 + sysPara->saveRFIDPara(); + MySleep(200); + system("sync");//缓存同步 + QCoreApplication::quit(); +} + void InkJetPrinter::handleInitedPID() { PID_init(); diff --git a/InkJetPrinter.h b/InkJetPrinter.h index 73e5845..af1e056 100644 --- a/InkJetPrinter.h +++ b/InkJetPrinter.h @@ -129,6 +129,8 @@ private slots: // void getMainInterfaceWidgetButtonClickedSlot(int index); void viscosity_timerHandler(); + void rebootApp(); + void getFontSetWidgetButtonClickedSlot(int index); void getPrintSettingButtonClickedSlot(int index); void getMainInstructWidgetButtonClickedSlot(int index); diff --git a/Serial/serial.cpp b/Serial/serial.cpp index 90d3f24..3f3d58e 100644 --- a/Serial/serial.cpp +++ b/Serial/serial.cpp @@ -65,6 +65,7 @@ void Serial::initSerialPort(const QString comport){ } else{ qDebug() << "STM32串口打开成功"; + emit STM32Connected(true, ""); } } else { if(comport == "/dev/ttyAS5"){ @@ -72,6 +73,7 @@ void Serial::initSerialPort(const QString comport){ } else{ qDebug() << "STM32串口打开失败:" << serial->errorString(); + emit STM32Connected(false, serial->errorString()); } } this->FPGARecDataSavePtr=NULL; @@ -257,8 +259,15 @@ void Serial::readFPGAData(QByteArray data) { memcpy(dataFPGA_1B8,recData.constData(),12); emit getFPGAXXXDay(dataFPGA_1B8); break; + + case READ_BUILD_DAT: { + int fpgaBuildDat = 0; + fpgaBuildDat = recData[7]; + emit FPGABuildDat(fpgaBuildDat); + break; } } + } } diff --git a/Serial/serial.h b/Serial/serial.h index 86e990a..243c678 100644 --- a/Serial/serial.h +++ b/Serial/serial.h @@ -104,6 +104,9 @@ signals: void resendFPGAData(int,int,unsigned char *,int,int); void sendQueueData(int,int,unsigned char *,int,int); void progress(int,int); + void FPGABuildDat(int buildTime); + + void STM32Connected(bool ok, QString errorMsg); private: void sendDataToFPGA(int,int,unsigned char*,int); diff --git a/SysPara.cpp b/SysPara.cpp index ffd6c38..ccad2b3 100644 --- a/SysPara.cpp +++ b/SysPara.cpp @@ -900,6 +900,7 @@ void SysPara::loadVolteParaFromFile(PRINT_MODE mode) { volParaFilePath = PARA_ROOT_DIR"VoltParaStd.bin"; } + if(status.build_dat.builTime == 73){ volParaFilePath = ":/conf/VoltePara_No73.bin"; status.currVoltageVersion = VersionOf73; @@ -935,7 +936,8 @@ void SysPara::loadVolteParaFromFile(PRINT_MODE mode) status.currVoltageVersion = VersionOf72And32R; } } -// LogInfo::setRunStatusText(QString("volParaFilePath:%1").arg(volParaFilePath)); + + LogInfo::setRunStatusText(QString("volParaFilePath:%1").arg(volParaFilePath)); QFile file(volParaFilePath); @@ -954,6 +956,8 @@ void SysPara::loadVolteParaFromFile(PRINT_MODE mode) return; } + qDebug() << "loadVolteParaFromFile: " << volParaFilePath; + if (file.exists(volParaFilePath)){ if (!file.open(QIODevice::ReadOnly)){ } diff --git a/SysPara.h b/SysPara.h index 043af5d..d4a9aba 100644 --- a/SysPara.h +++ b/SysPara.h @@ -864,6 +864,7 @@ typedef struct qint16 row_delay_table[48]; qint16 head1_row_delay_table[48]; + qint16 full_row_delay_table[48]; qint16 pixel_general_dac_parameter[64]; }voltePara_t_No73; typedef struct diff --git a/SystemManage.cpp b/SystemManage.cpp index f6cde99..5f4d06e 100644 --- a/SystemManage.cpp +++ b/SystemManage.cpp @@ -20,6 +20,7 @@ #include //#include "LogInfo.h" #include +#include "LogInfo.h" #define RECLAIN_TANK_TEST_MAX_COUNT 10 enum ReclainTankTestEnum{ReclainTankTest_eNotStart,ReclainTankTest_eOpenning,ReclainTankTest_eOpened,ReclainTankTest_eClosing,ReclainTankTest_Closed}; @@ -250,7 +251,7 @@ void SystemManage::setPumpValveBottonEnable(bool enable){ ui->pushButtonViscosityPump->setEnabled(enable); //ui->pushButtonCleanUP->setEnabled(enable); - ui->pushButtonAutoClean->setEnabled(enable); + // ui->pushButtonAutoClean->setEnabled(enable); // ui->pushButtonMotorTest->setEnabled(enable); ui->pushButtonPushAir->setEnabled(enable); if(sysPara) @@ -1187,34 +1188,16 @@ void SystemManage::onAutoCleanStart(void) void SystemManage::on_pushButtonAutoClean_pressed() { - sysPara->saveParaToFile(); // 关机前将相关配置保存 - sysPara->saveRFIDPara(); - MySleep(200); - system("sync");//缓存同步 - QCoreApplication::quit(); - /* - QMessageBox::StandardButton ret; - ret = QMessageBox::information(this, tr("警告"), - tr("是否确认启动自动清洗?"), - QMessageBox::Ok | QMessageBox::Cancel); - if (ret == QMessageBox::Ok){ - ret = QMessageBox::information(this, tr("警告"), - tr("是否确认墨水排除,加入清洗剂?"), + QMessageBox::StandardButton ret = QMessageBox::Ok; + ret = QMessageBox::warning(this, tr("警告"), + tr("是否确认重启?"), QMessageBox::Ok | QMessageBox::Cancel); - if (ret == QMessageBox::Ok) { - dialogAutoClean = new QProgressDialog(this); - dialogAutoClean->setWindowModality(Qt::WindowModal); - dialogAutoClean->setMinimumDuration(2); - dialogAutoClean->setCancelButtonText(tr("Cancel")); - dialogAutoClean->setWindowTitle(tr("(1/3) Cleaning")); - dialogAutoClean->setRange(0, AUTOCLEAN_STATUS_STEP1_TIME); - dialogAutoClean->setAutoClose(true); - dialogAutoClean->setAutoReset(true); - emit autoCleanStart(); - autoCleanTimer->start(1000); // 1000 ms - dialogAutoClean->show(); - } - }*/ + if (ret != QMessageBox::Ok){ + LogInfo::setRunStatusText("The user canceled the reboot operation."); + return; + } + + emit rebootAppAcquired(); } void SystemManage::on_pushButtonMotorTest_pressed() @@ -1335,7 +1318,7 @@ void SystemManage::on_pushButtonProgamFPGA_clicked() void SystemManage::programFPGAProcess(){ QMessageBox::StandardButton ret = QMessageBox::information(this, tr("提示"), tr("确定要升级FPGA软件吗?"), - QMessageBox::Ok); + QMessageBox::Ok | QMessageBox::Cancel); if (ret == QMessageBox::Ok) { QFile FpgaFile("/home/plg/FPGAFile.rbf"); if(FpgaFile.exists()) diff --git a/SystemManage.h b/SystemManage.h index 9457287..5c3da49 100644 --- a/SystemManage.h +++ b/SystemManage.h @@ -129,6 +129,7 @@ Q_SIGNALS: void restartSerial(); void enableClick(bool); void upgradeSTM32(QString); + void rebootAppAcquired(); signals: void sendButtonClickedSignal(int index); diff --git a/SystemManage.ui b/SystemManage.ui index 459b244..d6f986b 100644 --- a/SystemManage.ui +++ b/SystemManage.ui @@ -21,8 +21,8 @@ border-radius: 3px; font-size: 18px; font-weight:500; - width: 180px; - height: 90px; + height: 45px; + width: 90px; } QPushButton:hover { @@ -38,8 +38,8 @@ - 680 - 492 + 650 + 500 100 41 diff --git a/SystemSetting.cpp b/SystemSetting.cpp index 1483e1f..71134a1 100644 --- a/SystemSetting.cpp +++ b/SystemSetting.cpp @@ -167,6 +167,7 @@ void SystemSetting::updateSysParaToUI(){ ui->spinBoxSeptalPostion->setValue(sysPara->para.septalPostion); ui->comboBoxDiameter->setCurrentIndex(sysPara->para.diameter); ui->comboBoxDiaphramOffset->setCurrentIndex(sysPara->para.diaphramOffset/5-1); + ui->enableReclaimAlgorithm->setChecked(sysPara->para.flagOfReclaimPumEnable); if(sysPara->para.EditMode>SCENE) sysPara->para.EditMode=TXTFILE; @@ -202,6 +203,7 @@ void SystemSetting::applyUIPara(){ else { QMessageBox::critical(this,tr("错误"),tr("实际频率不能为%1").arg(freq)); } + sysPara->para.flagOfReclaimPumEnable = ui->enableReclaimAlgorithm->isChecked(); sysPara->para.FanTemperature = ui->spinBoxFanTemperature->value(); sysPara->para.septalPostion = ui->spinBoxSeptalPostion->value(); quint16 diaphramOffset = 5*(ui->comboBoxDiaphramOffset->currentIndex()+1); diff --git a/SystemUpdate.cpp b/SystemUpdate.cpp index c9511b7..d37fbf1 100644 --- a/SystemUpdate.cpp +++ b/SystemUpdate.cpp @@ -4,6 +4,7 @@ #include "Public.h" #include "InputMethod.h" #include +#include SystemUpdate::SystemUpdate(QWidget *parent) : QWidget(parent), @@ -49,15 +50,15 @@ void SystemUpdate::applyStyleSheet() background-color: #BAE7FF; } - QPushButton { + QPushButton { background-color: #5396C1; color: #ffffff; border: 1px solid #000000; border-radius: 3px; font-size: 18px; font-weight:500; - width: 180px; - height: 90px; + width: 90px; + height: 45px; } QPushButton:hover { @@ -99,9 +100,11 @@ void SystemUpdate::on_pushButtonUpdateCharLib_clicked() void SystemUpdate::on_pushButtonFontToUdisk_clicked() { QMessageBox::StandardButton ret; - ret = QMessageBox::information(this, tr("警告"), - tr("是否确认导出字库到U盘?"), - QMessageBox::Ok | QMessageBox::Cancel); + + QMessageBox box(QMessageBox::Information, tr("警告"), tr("是否确认导出字库到U盘?"), QMessageBox::Ok | QMessageBox::Cancel, this); + box.setStyleSheet(""); + box.exec(); + ret = box.result(); if (ret == QMessageBox::Ok) { QFile file("/udisk"); diff --git a/conf/VoltePara_No73.bin b/conf/VoltePara_No73.bin index 392073f3e0e1cb8b7a969bcf0eb82f8462014523..e5c2b5660c45e6385970e481eb04e23481274b41 100644 GIT binary patch literal 3520 zcmeHHeQ1?c7(cz|d7g9c-QDiD`{?TKW_Q>`3a`=p;6|Ari4m2Ae~cEjr6qTYG}>_D zKnfuuK?p`+e#|*zeW+Reu_&S02Q4U&T(+nQX0b-2(k0XSz2{!8B{E%TjOsqzbDsBk zp7T5J^ZT9iDmDJ^kmKmIen!8mPwUxKPdn%fD&j@l$_M!eu8@`ToE(vJGRLejyG*|c zddA1QIO}DC1&%Pa+5m_B;EyY zG0A*cFMDNBLgr4h!5lCXd&O&w-|PJ93^^&iM7QcEb+_KFPv~PhNq$;RY1&LJ)J=P7 zh>p^9HoStqkJiGvroh2&0 z$EXr~JO7@9IR>*d6cauCVAB)dCB5%lP zNtq5Ak+f+ugYer-kEz0G=`rUgDT{xP`zu-1>-^@-(`)puyh6iyjgr)g^X#g$iuTyq zJ;&KI-HsdS&uQgwnl{m48l_u#J-tKcp;sfnY!z$dJv>0O@HN`W{TzdWJNX2c$sJa= zkSvxKeji_{h0&te3jF2^gpNIm8jg1)A3>24&8`rtR4d#0RJ21E%_1r-fNz^O56qWuM|+xobOcy z%4hwM^21y|U}r~>iXj_<`QS}a#fS%0+v9?H+ zpw312sf4;-m7*f3Zon7?LKrbWu)^3iVfP9lTaL9MM12<7U}o$aM#cxcI1nSKF9KEs zbwOAhD6SRed;H(I8VtnpAkqApalNpOm#Z=;<%geu7X&BV zD2HxU@Z5ZfN+Oc9O1sZ4PFSUE)Ww=*S4_)!?p&s-?b;}+t6?riOjQD53e2x=23`Wu zQZ?J6M3J3|{VH+hicp`l`v&s;{JR~(?IkcTe=?&km~5qv00*GO#%QtPJo-nF8=wv_0` zR-2%fP*M6IC5mo;@F9rG7D0kf!6HNv$&&`3f*>v^G@xj-Abw|NZ|*jq!r4R#eUzP*5n9R(PD1)Qy)tKSwH4o!!w@c!`m@K52M z$XMiRBpiJ@dMSD>`atZB*pIQS@uKmS(G(wwm*fA&A2#1Ie=s*Ch7unpzEAWuV1;HJ zaO#WBalWWh!Gh>L}zE-pUiVtgNY!!C@Xi^_c9uJ6n*z?a(Of`DQHhDO* z(L=G>L#37L4iD3hco^L4VezDk?3jze*IZ1DyEsQ(Q-2=B{HTk$cU`0|xY&J(=UwLc z7o1z*QY(qe(E80g=bcV zkUBMl?12GP9(OSHgoA*f9RGG5)uWsp~ct;h-f%8zK(+$(uGEOeY;+18pbo zV#LNC!^Xu1&g*RqHrhDXMBGLjyW4F{d~q0)n{2dXY;~yIAd56V3mGKUebStTO7n*8 zoLl*Ik?KMl$9A=DQ%Efno<*78Z}f^F(^a%cL|f2BvKGx!Hg8axO=Y=0qc%p#Dqnco zBDuN7LCt~)Y`c-_R+fu=C6q{IUlNOlTV6{4YpM;ey!7b~! zu4DH(>8dw;y!K7Ul3Z{N{3N3KUV3M$x;C+H*&Ffqia(@FhUvZQm)7m%W)xq}H_=g} zLtCKZ*v7LZxBN`Bc$(-8*7^)T)@zeztM#$qI+J-!rShmW<}rCSkLh2y{xy&JraUHE z@&Z{^+oJBJZ)4VY!@r+DXNc=y_t!E9`5aJzhq{-rfi&O+dODYIJxdz3w*}M9TwngG zn~_4Kx~moSwA#cL+|3w?t`4+tY@#mNE0rgMZRFmitQV}wj1ox)*q5x_;M$hF?$>flICx`y?Ibb4(WAEiqem{q)`*P@%?_T0|k-w9euStKK!~AzS z#&YHS=%UYbeq@N1nD#KXx*qQ$C6(AhFaP_30(O$8>xAToZq4++PerPf{1J3UTFk*T zvmwcxXjM|39}=S*^Fy=<&q6cj21QBMtRr9NqOLdoX%=gRZoVag^PAkkm+HI}9m^>} z__!+kj+*M3+qFH!H{|y)bl24~!Z%vmW2~#X%E}nO#jR^~3+?Ov|MSfcXk=#G&Q^ZD cgz4iY6i<{eUM!*idevOp->isReclaimTankOpenEnable()) { - QString str = isOpen? tr("停止开启") : tr("停止关闭"); - setRunStatus(str); - return; - }; + // if (!sysPara->devOp->isReclaimTankOpenEnable()) { + // QString str = isOpen? tr("停止开启") : tr("停止关闭"); + // setRunStatus(str); + // return; + // }; if (isOpen) { QString str = rate == 100? tr("喷嘴已开启"):tr("喷嘴开启中"); @@ -3406,7 +3406,10 @@ void MainWidget::RefreshStatusLight(){//100ms // setRunStatus(tr("暂停喷印...")); // } - + if(sysPara->status.isPrinting && sysPara->status.selfCheckDone){ + setRunStatus(tr("正在喷印.......")); + } + // 20160620 新增主界面显示:压力,粘度,隔膜位置,晶振电压数,相位 alarmStatus.pressValue = QString("%1/%2").arg(sysPara->status.PRESSURE).arg(sysPara->para.pressure); diff --git a/systemsetting.ui b/systemsetting.ui index 679806a..1837e14 100644 --- a/systemsetting.ui +++ b/systemsetting.ui @@ -833,6 +833,19 @@ + + + + + 0 + 31 + + + + 启用回收泵算法 + + +