From fbdd064adb98a57bb05149e4ef0527687d358c47 Mon Sep 17 00:00:00 2001 From: Byons Date: Mon, 7 Sep 2026 15:51:08 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E9=99=86=E5=B7=A5=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=85=B3=E6=9C=BA=E6=B5=81=E7=A8=8B=E7=AC=AC=E4=B8=80=E7=89=88?= =?UTF-8?q?=E3=80=81=E4=BC=98=E5=8C=96=E6=8E=92=E6=B0=94=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DevOp.h | 762 +++---- InkJetPrinter.cpp | 63 +- InkJetPrinter.h | 1 + PrintSetting.h | 458 ++-- QtUI.pro | 862 ++++---- SysPara.h | 2688 +++++++++++------------ SystemSetting.cpp | 1694 +++++++-------- SystemSetting.h | 140 +- inkjetprinter.ui | 5190 ++++++++++++++++++++++----------------------- mainwindow.cpp | 43 +- mainwindow.h | 1 + systemsetting.ui | 2124 +++++++++---------- 12 files changed, 7025 insertions(+), 7001 deletions(-) diff --git a/DevOp.h b/DevOp.h index 038c9ed..cac935f 100644 --- a/DevOp.h +++ b/DevOp.h @@ -1,381 +1,381 @@ -/* - * DevOp.h - * - * Created on: Jun 25, 2013 - * Author: yiyu - * QQ:1036184468 - * Descriptoin: - - */ - -#ifndef DEVOP_H_ -#define DEVOP_H_ - -/************以前的硬件版本,跟VX5版本号冲突,取消 -#define JETV1 1 -#define JETV2 2 -#define JETV3 3 // EP3C10F144 -#define JETV23 4 // V5,V4主板编号均为4; V6没有正式投入使用 -#define JETV7 7 // EP4CE15F144, ARM 335X -#define PRODUCT_VERSION(ver) ((ver>>13) & 0x7) -**********************/ -class SysPara; - -#include -#include -#include "myinclude.h" -#include -#include -#include -#include -#include -#include -#include - -#define DisTraceMsg() printf("###############TRACE,Line:%d File:%s Fun:%s\n",__LINE__,__FILE__,__FUNCTION__); -#define DisWarnmsg() printf("~~~~~~~~~~~~~~~WARN,Line:%d File:%s Fun:%s\n",__LINE__,__FILE__,__FUNCTION__); -#define DisErrorMsg() printf("!!!!!!!!!!!!!!!ERROR! ,Line:%d File:%s Fun:%s\n",__LINE__,__FILE__,__FUNCTION__); - -#define PRINT_CTRL_STOP 0 -#define PRINT_CTRL_START 1 -#define PRINT_CTRL_PAUSE 2 -#define PRINT_CTRL_DAC_DISABLE 3 -#define PRINT_CTRL_DAC_ENABLE 4 -#define PRINT_CTRL_STOPSYNCNT 5 - - -#define MAX_FPGA_DAC_VALUE_FOR_NEW ((1<<12)*95/100) //由于硬件原因,当DAC大于一定值后,电压不再变化,所以做一下限制 -#define MAX_FPGA_DAC_VALUE_FOR_V1 (255) //老板子的最大值到256 -//#define MAX_FPGA_DAC_VALUE ((PRODUCT_VERSION(sysPara->status.fpgaVersionNum) == JETV1)?MAX_FPGA_DAC_VALUE_FOR_V1:MAX_FPGA_DAC_VALUE_FOR_NEW) -#define MAX_FPGA_DAC_VALUE MAX_FPGA_DAC_VALUE_FOR_NEW - -#define MAX_POINT_DISTANCE_ADJUST_VAL (1<<10) //点距微调的最大值 - -#define MAX_MOTOR_RUN_CURRENT 600 -#define MIN_MOTOR_RUN_CURRENT 80 - -#define MAX_RECLAIM_BLOCK_CNT 5 //500ms - -#define MAX_RELEASE_VALVE_DELAY_CNT 4 -/*所有警告都是高电平警告*/ -#define WARN_STATUS_INK_SWINT (1<<7) /*墨线开头,来自喷头,必须开的时候才能打印,关的时候为1,开的时候为0*/ -#define WARN_STATUS_POWER_MON (1<<6) //高压报警 -#define WARN_STATUS_RECYCLE_FAULT (1<<5) //高电平表示有故障 -#define WARN_STATUS_INK_WARN (1<<4) -#define WARN_STATUS_SOLV_WARN (1<<3) -#define WARN_STATUS_SUMP_WARN (1<<2) //墨水渗漏 -#define WARN_STATUS_HDINT (1<<1) /*喷头盖,盖上为0,否则为1,必须盖上才能打印,电磁铁有正反面*/ -#define WARN_STATUS_VISCOTITY_MEASURE_READY (1<<0) // 球已经到上位等灯 - - -#define FPGA_SYS_HZ 100000000 - -#define MAX_WR_MEM_SIZE (1<<16) //写空间最大地址范围 -#define MAX_WR_MEM_SIZE_MASK (MAX_WR_MEM_SIZE - 1) -#define MAX_RD_MEM_SIZE (1<<9) //读空间最大地址范围 -#define MAX_RD_MEM_SIZE_MASK (MAX_RD_MEM_SIZE - 1) - -/* am335x core board control pwm output */ -#define VISCO_PUMP_REQUEST "echo 1 > /sys/class/pwm/ecap.2/request" -#define VISCO_PUMP_RELEASE "echo 0 > /sys/class/pwm/ecap.2/request" -#define VISCO_PUMP_RUN "echo 1 > /sys/class/pwm/ecap.2/run" -#define VISCO_PUMP_STOP "echo 0 > /sys/class/pwm/ecap.2/run" -#define VISCO_PUMP_50Hz "echo 50 > /sys/class/pwm/ecap.2/period_freq" -#define VISCO_PUMP_50P "echo 50 > /sys/class/pwm/ecap.2/duty_percent" -#define VISCO_PUMP_HIGH "echo 1 > /sys/class/pwm/ecap.2/polarity" -#define VISCO_PUMP_LOW "echo 0 > /sys/class/pwm/ecap.2/polarity" - -#define SUCTION_PUMP_REQUEST "echo 1 > /sys/class/pwm/ehrpwm.0:1/request" -#define SUCTION_PUMP_RELEASE "echo 0 > /sys/class/pwm/ehrpwm.0:1/request" -#define SUCTION_PUMP_RUN "echo 1 > /sys/class/pwm/ehrpwm.0:1/run" -#define SUCTION_PUMP_STOP "echo 0 > /sys/class/pwm/ehrpwm.0:1/run" -#define SUCTION_PUMP_HIGH "echo 1 > /sys/class/pwm/ehrpwm.0:1/polarity" -#define SUCTION_PUMP_LOW "echo 0 > /sys/class/pwm/ehrpwm.0:1/polarity" -#define SUCTION_PUMP_90P "echo 90 > /sys/class/pwm/ehrpwm.0:1/duty_percent" -#define SUCTION_PUMP_12000Hz "echo 12000 > /sys/class/pwm/ehrpwm.0:1/period_freq" - -#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 WRITE_CNT2GROUP_COUNT 0xB16E -#define WRITE_CNT2GROUP_NUM 0xB16F -#define WRITE_CNT2GROUP_SETTING 0xB170 -#define READ_CNT2GROUP_CURR_LOOP 0x0195 -#define READ_CNT2GROUP_CURR_INDEX 0x0199 - -#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 LED_COLOR_NONE 0x00 // 0000 0000 -#define LED_COLOR_YELLOW 0x10 // 0001 0000 -#define LED_COLOR_GREEN 0x20 // 0010 0000 -#define LED_COLOR_RED 0x30 // 0011 0000 -// 低四位:操作 -#define LED_OP_OFF 0x00 // 灭 -#define LED_OP_ON 0x01 // 亮 -#define LED_OP_FLASH 0x02 // 闪烁 - -//绿灯 -#define LED_COLOR_GREEN_ON LED_COLOR_GREEN|LED_OP_ON //绿灯亮 -#define LED_COLOR_GREEN_OFF LED_COLOR_GREEN|LED_OP_OFF //绿灯灭 -#define LED_COLOR_GREEN_FLASH LED_COLOR_GREEN|LED_OP_FLASH //绿灯闪烁 -//红灯 -#define LED_COLOR_RED_ON LED_COLOR_RED|LED_OP_ON //红灯亮 -#define LED_COLOR_RED_OFF LED_COLOR_RED|LED_OP_OFF //红灯灭 -#define LED_COLOR_RED_FLASH LED_COLOR_RED|LED_OP_FLASH //红灯闪烁 -//黄灯 -#define LED_COLOR_YELLOW_ON LED_COLOR_YELLOW|LED_OP_ON //黄灯亮 -#define LED_COLOR_YELLOW_OFF LED_COLOR_YELLOW|LED_OP_OFF //黄灯灭 -#define LED_COLOR_YELLOW_FLASH LED_COLOR_YELLOW|LED_OP_FLASH //黄灯闪烁 - -#define LED_ALL_OFF 0x00 //关闭所有灯 - -/* - * 请不要直接初始化此函数,如果需要,请通过SysPara的devOP来访问此类 - * */ -class DevOp : public QObject -{ - Q_OBJECT -public : - DevOp(SysPara * sysPara); - ~DevOp(); - - void set_totalSynPulseNum(bool wren);// 设置可变长度 - void WriteMoterPump(); - void controlReleaseValve(bool openFlag); - void controlMixValve(bool openFlag); - void controlInkValve(bool openFlag); //控制墨线,即供墨阀 - void controlInkValvePWMSTM32(int PWMPulse); - void controlCycleValve(bool openFlag); - void controlCompressPump(bool openFlag); - void controlViscosityPump(bool openFlag); - void controlMainInkPump(bool openFlag); - void setHighVoltageAmplitudetoSTM32(); - void controlReclaimPump(bool openFlag,bool fullSpeed); - void controlReclaimPump2(); - void controlInkValvePWM(bool openFlag); - void controlInkValvePWM2(); - void controlHeater(bool openFlag); - void controlBeeper(bool openFlag); - - void controlReclaimTankOpen(bool enableFlag); - void controlReclaimTankClose(bool enableFlag); - - void powerOff(void); - - bool isReleaseValveOpen(); - bool isMixValveOpen(); - bool isInkValveOpen(); - bool isInkValveOpen1(); - bool isCycleValveOpen(); - bool isCompressPumpOpen(); - bool isViscosityPumpOpen(); - bool isMainInkPumpOpen(); - bool isReclaimPumpOpen(); - bool isHighVoltageOpen(); - - bool isReclaimTankOpenEnable(); - bool isReclaimTankCloseEnable(); - bool isBeeperEnable(); - bool isHearterEnable(); - - int writeFpgaPrintPara(bool ignoreWarn = false); - void readFgaStatus(void); - void writeDacValue2Fpga_No73(); - - void printCtrl(int cmd); - void ReadCnt1GroupStatus(void); - void ReadCnt2GroupStatus(void); - void writeCnt1GroupSetting(bool bCntByGroupEnable); - void writeCnt2GroupSetting(bool bCntByGroupEnable); - void writeFpgaCalandar(bool Enable); - void writeFpgaVariCtrl(); - void readCalandarDat(); - void resumeFault(); - void highVoltageCtrl(int val); - void maxHighVoltageDACCtrl(int val); - void setPhaseByHand(int val); - void readPhaseDetectHighTm(); - void setPhaseDetectVoltageDutyCycle(int duty); - void setBlickLightPeriod(int value); - void setOscillatorVoltage(int value); - void setDivideRatio(int value); - void setLastLineEndPointFixedValue(int value); - - void mainInkCtrl(); - void pumpValveCtrl(int viscosityAdjustByTemp=0); - void clearProductCnt(unsigned int mode); - unsigned int readFpgaVersionNum(void); - void fpgaWr(int addr,unsigned char*dat,int len); - void fpgaRd(int addr,unsigned char*dat,int len); - void fpgaWrD(int addr,unsigned int dat,int len); - void fpgaWrD2(int addr,unsigned char*dat,int len); - void fpgaResetWarning(char mode); - void sendSTM32SetPowerOnTimer(quint16); - void DACValueWithVoltageAdj(); - void writeDataToFpga_No67HighSpeedMode(Voltage_Version version,bool flag); - bool fpgaDevOpenFlag; - - void stm32Rd(int addr,unsigned char*dat,int len); - void stm32Wr(int addr,unsigned char*dat,int len); - - unsigned char memWrMap[MAX_WR_MEM_SIZE]; - unsigned char memRdMap[MAX_RD_MEM_SIZE]; - unsigned char color_flag; - void controlRedLight(bool openFlag); - void controlGreenLight(bool openFlag); - void controlYellowLight(bool openFlag); - void controlFan1(bool openFlag); - void controlFan2(bool openFlag); - - bool isGreenLightEnable(); - bool isYellowLightEnable(); - bool isRedLightEnable(); - void readbuilDat(); - void readPrintDataXor(); - void readSyncCounterAtZero(); - void printCtrl2(int cmd); - void ReadSomeDataForLostPrint(void); - void readSTM32Version(void); - void readSTM32Time(void); - bool stopSendDataFPGA; - bool stopSendDataSTM32; - - void Read_RanddomFromFpga(); // 读FPGARANDFIFO - void RandTxtBakup(char ok); - void showData(QByteArray dat); - void writeDacValue2Fpga_No72NewVoltData(); - - -public slots: - void resendFPGADate(int,int,unsigned char *,int,int); - void resendSTM32Date(int,int,unsigned char *,int,int); - -signals: - void dataReceived(char,const QByteArray &dataReceived,int); - /***cmd:1--读 2--写*********************************************/ - /***addr:地址***************************************************/ - /***dat:数据指针*************************************************/ - /***len:数据长度*************************************************/ - /***type:1--FPGA 2--STM32***************************************/ - void sendSerialDataToSTM32(int cmd,int addr,unsigned char *dat,int len,int type); - void sendSerialDataToFPGA(int cmd,int addr,unsigned char *dat,int len,int type); - - -private: - int WdgttyUsb0Cnt; - bool releaseValveOpenFlag; - bool mixValveFlag; - bool inkValveOpenFlag; - bool inkValveOpenFlag1; - bool cycleValveOpenFlag; - bool compressPumpOpenFlag; - bool viscosityPumpOpenFlag; - bool mainInkPumpOpenFlag; - bool reclaimPumpOpenFlag; - bool highVoltageOpenFlag; - - bool reclaimTankOpenEnableFlag; - bool reclaimTankCloseEnableFlag; - bool beeperOnFlag; - - bool RedLightOnFlag; - bool GreenLightOnFlag; - bool YellowLightOnFlag; - - bool heaterOnFlag; - int com2; - int pwm_sp; - int pwm_fd; - int Interrupt_fd; - int iocontrl; - int DAdataout; -int pwm_ink; - int adc_fd; - qint8 OscillatorVoltage[100];//VX 电路不一样,所以需要重新调整 - SysPara *sysPara; - - - unsigned int fpgaRdD(int addr,int len); - -// 0xA451--- 为什么ARM的顺序相反呢? - typedef struct { - unsigned int varDigitalNum:4; // 数字的个数 - unsigned int charRamBaseAddr:12; // 基址 - unsigned int colOffset:16; // 列偏移 - unsigned int horizonWidth:9;//字模宽度 - unsigned int verticalOffset:6; // 行偏移 - unsigned int charRowNum:6; // 每个字符占行个数 - unsigned int charColNum:6; // 每个字符占列个数 - unsigned int varTypeSel:4; - unsigned int dummy:1; - }reg_var_print_ctrl_t; - -}; - -#endif /* DEVOP_H_ */ +/* + * DevOp.h + * + * Created on: Jun 25, 2013 + * Author: yiyu + * QQ:1036184468 + * Descriptoin: + + */ + +#ifndef DEVOP_H_ +#define DEVOP_H_ + +/************以前的硬件版本,跟VX5版本号冲突,取消 +#define JETV1 1 +#define JETV2 2 +#define JETV3 3 // EP3C10F144 +#define JETV23 4 // V5,V4主板编号均为4; V6没有正式投入使用 +#define JETV7 7 // EP4CE15F144, ARM 335X +#define PRODUCT_VERSION(ver) ((ver>>13) & 0x7) +**********************/ +class SysPara; + +#include +#include +#include "myinclude.h" +#include +#include +#include +#include +#include +#include +#include + +#define DisTraceMsg() printf("###############TRACE,Line:%d File:%s Fun:%s\n",__LINE__,__FILE__,__FUNCTION__); +#define DisWarnmsg() printf("~~~~~~~~~~~~~~~WARN,Line:%d File:%s Fun:%s\n",__LINE__,__FILE__,__FUNCTION__); +#define DisErrorMsg() printf("!!!!!!!!!!!!!!!ERROR! ,Line:%d File:%s Fun:%s\n",__LINE__,__FILE__,__FUNCTION__); + +#define PRINT_CTRL_STOP 0 +#define PRINT_CTRL_START 1 +#define PRINT_CTRL_PAUSE 2 +#define PRINT_CTRL_DAC_DISABLE 3 +#define PRINT_CTRL_DAC_ENABLE 4 +#define PRINT_CTRL_STOPSYNCNT 5 + + +#define MAX_FPGA_DAC_VALUE_FOR_NEW ((1<<12)*95/100) //由于硬件原因,当DAC大于一定值后,电压不再变化,所以做一下限制 +#define MAX_FPGA_DAC_VALUE_FOR_V1 (255) //老板子的最大值到256 +//#define MAX_FPGA_DAC_VALUE ((PRODUCT_VERSION(sysPara->status.fpgaVersionNum) == JETV1)?MAX_FPGA_DAC_VALUE_FOR_V1:MAX_FPGA_DAC_VALUE_FOR_NEW) +#define MAX_FPGA_DAC_VALUE MAX_FPGA_DAC_VALUE_FOR_NEW + +#define MAX_POINT_DISTANCE_ADJUST_VAL (1<<10) //点距微调的最大值 + +#define MAX_MOTOR_RUN_CURRENT 600 +#define MIN_MOTOR_RUN_CURRENT 80 + +#define MAX_RECLAIM_BLOCK_CNT 5 //500ms + +#define MAX_RELEASE_VALVE_DELAY_CNT 4 +/*所有警告都是高电平警告*/ +#define WARN_STATUS_INK_SWINT (1<<7) /*墨线开头,来自喷头,必须开的时候才能打印,关的时候为1,开的时候为0*/ +#define WARN_STATUS_POWER_MON (1<<6) //高压报警 +#define WARN_STATUS_RECYCLE_FAULT (1<<5) //高电平表示有故障 +#define WARN_STATUS_INK_WARN (1<<4) +#define WARN_STATUS_SOLV_WARN (1<<3) +#define WARN_STATUS_SUMP_WARN (1<<2) //墨水渗漏 +#define WARN_STATUS_HDINT (1<<1) /*喷头盖,盖上为0,否则为1,必须盖上才能打印,电磁铁有正反面*/ +#define WARN_STATUS_VISCOTITY_MEASURE_READY (1<<0) // 球已经到上位等灯 + + +#define FPGA_SYS_HZ 100000000 + +#define MAX_WR_MEM_SIZE (1<<16) //写空间最大地址范围 +#define MAX_WR_MEM_SIZE_MASK (MAX_WR_MEM_SIZE - 1) +#define MAX_RD_MEM_SIZE (1<<9) //读空间最大地址范围 +#define MAX_RD_MEM_SIZE_MASK (MAX_RD_MEM_SIZE - 1) + +/* am335x core board control pwm output */ +#define VISCO_PUMP_REQUEST "echo 1 > /sys/class/pwm/ecap.2/request" +#define VISCO_PUMP_RELEASE "echo 0 > /sys/class/pwm/ecap.2/request" +#define VISCO_PUMP_RUN "echo 1 > /sys/class/pwm/ecap.2/run" +#define VISCO_PUMP_STOP "echo 0 > /sys/class/pwm/ecap.2/run" +#define VISCO_PUMP_50Hz "echo 50 > /sys/class/pwm/ecap.2/period_freq" +#define VISCO_PUMP_50P "echo 50 > /sys/class/pwm/ecap.2/duty_percent" +#define VISCO_PUMP_HIGH "echo 1 > /sys/class/pwm/ecap.2/polarity" +#define VISCO_PUMP_LOW "echo 0 > /sys/class/pwm/ecap.2/polarity" + +#define SUCTION_PUMP_REQUEST "echo 1 > /sys/class/pwm/ehrpwm.0:1/request" +#define SUCTION_PUMP_RELEASE "echo 0 > /sys/class/pwm/ehrpwm.0:1/request" +#define SUCTION_PUMP_RUN "echo 1 > /sys/class/pwm/ehrpwm.0:1/run" +#define SUCTION_PUMP_STOP "echo 0 > /sys/class/pwm/ehrpwm.0:1/run" +#define SUCTION_PUMP_HIGH "echo 1 > /sys/class/pwm/ehrpwm.0:1/polarity" +#define SUCTION_PUMP_LOW "echo 0 > /sys/class/pwm/ehrpwm.0:1/polarity" +#define SUCTION_PUMP_90P "echo 90 > /sys/class/pwm/ehrpwm.0:1/duty_percent" +#define SUCTION_PUMP_12000Hz "echo 12000 > /sys/class/pwm/ehrpwm.0:1/period_freq" + +#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 WRITE_CNT2GROUP_COUNT 0xB16E +#define WRITE_CNT2GROUP_NUM 0xB16F +#define WRITE_CNT2GROUP_SETTING 0xB170 +#define READ_CNT2GROUP_CURR_LOOP 0x0195 +#define READ_CNT2GROUP_CURR_INDEX 0x0199 + +#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 LED_COLOR_NONE 0x00 // 0000 0000 +#define LED_COLOR_YELLOW 0x10 // 0001 0000 +#define LED_COLOR_GREEN 0x20 // 0010 0000 +#define LED_COLOR_RED 0x30 // 0011 0000 +// 低四位:操作 +#define LED_OP_OFF 0x00 // 灭 +#define LED_OP_ON 0x01 // 亮 +#define LED_OP_FLASH 0x02 // 闪烁 + +//绿灯 +#define LED_COLOR_GREEN_ON LED_COLOR_GREEN|LED_OP_ON //绿灯亮 +#define LED_COLOR_GREEN_OFF LED_COLOR_GREEN|LED_OP_OFF //绿灯灭 +#define LED_COLOR_GREEN_FLASH LED_COLOR_GREEN|LED_OP_FLASH //绿灯闪烁 +//红灯 +#define LED_COLOR_RED_ON LED_COLOR_RED|LED_OP_ON //红灯亮 +#define LED_COLOR_RED_OFF LED_COLOR_RED|LED_OP_OFF //红灯灭 +#define LED_COLOR_RED_FLASH LED_COLOR_RED|LED_OP_FLASH //红灯闪烁 +//黄灯 +#define LED_COLOR_YELLOW_ON LED_COLOR_YELLOW|LED_OP_ON //黄灯亮 +#define LED_COLOR_YELLOW_OFF LED_COLOR_YELLOW|LED_OP_OFF //黄灯灭 +#define LED_COLOR_YELLOW_FLASH LED_COLOR_YELLOW|LED_OP_FLASH //黄灯闪烁 + +#define LED_ALL_OFF 0x00 //关闭所有灯 + +/* + * 请不要直接初始化此函数,如果需要,请通过SysPara的devOP来访问此类 + * */ +class DevOp : public QObject +{ + Q_OBJECT +public : + DevOp(SysPara * sysPara); + ~DevOp(); + + void set_totalSynPulseNum(bool wren);// 设置可变长度 + void WriteMoterPump(); + void controlReleaseValve(bool openFlag); + void controlMixValve(bool openFlag); + void controlInkValve(bool openFlag); //控制墨线,即供墨阀 + void controlInkValvePWMSTM32(int PWMPulse); + void controlCycleValve(bool openFlag); + void controlCompressPump(bool openFlag); + void controlViscosityPump(bool openFlag); + void controlMainInkPump(bool openFlag); + void setHighVoltageAmplitudetoSTM32(); + void controlReclaimPump(bool openFlag,bool fullSpeed); + void controlReclaimPump2(); + void controlInkValvePWM(bool openFlag); + void controlInkValvePWM2(); + void controlHeater(bool openFlag); + void controlBeeper(bool openFlag); + + void controlReclaimTankOpen(bool enableFlag); + void controlReclaimTankClose(bool enableFlag); + + void powerOff(void); + + bool isReleaseValveOpen(); + bool isMixValveOpen(); + bool isInkValveOpen(); + bool isInkValveOpen1(); + bool isCycleValveOpen(); + bool isCompressPumpOpen(); + bool isViscosityPumpOpen(); + bool isMainInkPumpOpen(); + bool isReclaimPumpOpen(); + bool isHighVoltageOpen(); + + bool isReclaimTankOpenEnable(); + bool isReclaimTankCloseEnable(); + bool isBeeperEnable(); + bool isHearterEnable(); + + int writeFpgaPrintPara(bool ignoreWarn = false); + void readFgaStatus(void); + void writeDacValue2Fpga_No73(); + + void printCtrl(int cmd); + void ReadCnt1GroupStatus(void); + void ReadCnt2GroupStatus(void); + void writeCnt1GroupSetting(bool bCntByGroupEnable); + void writeCnt2GroupSetting(bool bCntByGroupEnable); + void writeFpgaCalandar(bool Enable); + void writeFpgaVariCtrl(); + void readCalandarDat(); + void resumeFault(); + void highVoltageCtrl(int val); + void maxHighVoltageDACCtrl(int val); + void setPhaseByHand(int val); + void readPhaseDetectHighTm(); + void setPhaseDetectVoltageDutyCycle(int duty); + void setBlickLightPeriod(int value); + void setOscillatorVoltage(int value); + void setDivideRatio(int value); + void setLastLineEndPointFixedValue(int value); + + void mainInkCtrl(); + void pumpValveCtrl(int viscosityAdjustByTemp=0); + void clearProductCnt(unsigned int mode); + unsigned int readFpgaVersionNum(void); + void fpgaWr(int addr,unsigned char*dat,int len); + void fpgaRd(int addr,unsigned char*dat,int len); + void fpgaWrD(int addr,unsigned int dat,int len); + void fpgaWrD2(int addr,unsigned char*dat,int len); + void fpgaResetWarning(char mode); + void sendSTM32SetPowerOnTimer(quint16); + void DACValueWithVoltageAdj(); + void writeDataToFpga_No67HighSpeedMode(Voltage_Version version,bool flag); + bool fpgaDevOpenFlag; + + void stm32Rd(int addr,unsigned char*dat,int len); + void stm32Wr(int addr,unsigned char*dat,int len); + + unsigned char memWrMap[MAX_WR_MEM_SIZE]; + unsigned char memRdMap[MAX_RD_MEM_SIZE]; + unsigned char color_flag; + void controlRedLight(bool openFlag); + void controlGreenLight(bool openFlag); + void controlYellowLight(bool openFlag); + void controlFan1(bool openFlag); + void controlFan2(bool openFlag); + + bool isGreenLightEnable(); + bool isYellowLightEnable(); + bool isRedLightEnable(); + void readbuilDat(); + void readPrintDataXor(); + void readSyncCounterAtZero(); + void printCtrl2(int cmd); + void ReadSomeDataForLostPrint(void); + void readSTM32Version(void); + void readSTM32Time(void); + bool stopSendDataFPGA; + bool stopSendDataSTM32; + + void Read_RanddomFromFpga(); // 读FPGARANDFIFO + void RandTxtBakup(char ok); + void showData(QByteArray dat); + void writeDacValue2Fpga_No72NewVoltData(); + + +public slots: + void resendFPGADate(int,int,unsigned char *,int,int); + void resendSTM32Date(int,int,unsigned char *,int,int); + +signals: + void dataReceived(char,const QByteArray &dataReceived,int); + /***cmd:1--读 2--写*********************************************/ + /***addr:地址***************************************************/ + /***dat:数据指针*************************************************/ + /***len:数据长度*************************************************/ + /***type:1--FPGA 2--STM32***************************************/ + void sendSerialDataToSTM32(int cmd,int addr,unsigned char *dat,int len,int type); + void sendSerialDataToFPGA(int cmd,int addr,unsigned char *dat,int len,int type); + + +private: + int WdgttyUsb0Cnt; + bool releaseValveOpenFlag; + bool mixValveFlag; + bool inkValveOpenFlag; + bool inkValveOpenFlag1; + bool cycleValveOpenFlag; + bool compressPumpOpenFlag; + bool viscosityPumpOpenFlag; + bool mainInkPumpOpenFlag; + bool reclaimPumpOpenFlag; + bool highVoltageOpenFlag; + + bool reclaimTankOpenEnableFlag; + bool reclaimTankCloseEnableFlag; + bool beeperOnFlag; + + bool RedLightOnFlag; + bool GreenLightOnFlag; + bool YellowLightOnFlag; + + bool heaterOnFlag; + int com2; + int pwm_sp; + int pwm_fd; + int Interrupt_fd; + int iocontrl; + int DAdataout; +int pwm_ink; + int adc_fd; + qint8 OscillatorVoltage[100];//VX 电路不一样,所以需要重新调整 + SysPara *sysPara; + + + unsigned int fpgaRdD(int addr,int len); + +// 0xA451--- 为什么ARM的顺序相反呢? + typedef struct { + unsigned int varDigitalNum:4; // 数字的个数 + unsigned int charRamBaseAddr:12; // 基址 + unsigned int colOffset:16; // 列偏移 + unsigned int horizonWidth:9;//字模宽度 + unsigned int verticalOffset:6; // 行偏移 + unsigned int charRowNum:6; // 每个字符占行个数 + unsigned int charColNum:6; // 每个字符占列个数 + unsigned int varTypeSel:4; + unsigned int dummy:1; + }reg_var_print_ctrl_t; + +}; + +#endif /* DEVOP_H_ */ diff --git a/InkJetPrinter.cpp b/InkJetPrinter.cpp index e9174aa..76e1306 100644 --- a/InkJetPrinter.cpp +++ b/InkJetPrinter.cpp @@ -799,6 +799,27 @@ float PID_realize2(float speed, float act){ void InkJetPrinter::pressureAdj() { + // 关机压力控制首次进入时从停泵状态重新开始,禁止继承正常运行或手动控制转速 + if(sysPara->status.powerOffAppending && !m_powerOffPressureControlActive) + { + u = 0.0f; + sysPara->para.gearPumpValue = 0; + m_pumpState = DPUMP_STOPPED; + m_stateChangeCount = 0; + m_adjSkip = 0; + m_lastActualPressure = 0; + m_startingStepCount = 0; + m_bufValidCount = 0; + for(int i = 0; i < 10; i++) m_pressureBuf[i] = 0; + m_bufIdx = 0; + sysPara->devOp->WriteMoterPump(); + m_powerOffPressureControlActive = true; + } + else if(!sysPara->status.powerOffAppending) + { + m_powerOffPressureControlActive = false; + } + // 故障停机处理 if(sysPara->status.gearPumpRunStopFlag || sysPara->status.flagOfSpeedAlarm) { @@ -834,6 +855,8 @@ void InkJetPrinter::pressureAdj() int actual = sysPara->status.PRESSURE; int target = (int)sysPara->para.pressure; + if(sysPara->status.powerOffAppending && target > 650) + target = 650; // 关机压力目标不超过650,不修改用户设定值 int err = target - actual; // 正值=压力偏低,负值=压力偏高 // 更新滑动平均缓冲 @@ -849,8 +872,9 @@ void InkJetPrinter::pressureAdj() // 检查是否允许状态切换(距上次切换>=800ms) bool canSwitch = (m_stateChangeCount >= MIN_STATE_INTERVAL); - // 硬保护:压力严重超标,立即强制停泵(不受800ms限制) - if(actual > target + 80) + // 关机压力上限:超过关机目标10立即停泵,不受状态和800ms切换间隔限制 + int hardStopThreshold = sysPara->status.powerOffAppending ? 10 : 80; + if(actual > target + hardStopThreshold) { if(m_pumpState != DPUMP_STOPPED) { u = 0.0f; @@ -1331,20 +1355,18 @@ void InkJetPrinter::timerHandler(void){ ControledSwitchFlag = false; pulse_3s = 0; } - // 检测手动→自动边沿,直接恢复压力控制,不走 gearPumpStartFlag 的 3s 等待 + // 检测手动→自动边沿,恢复压力控制时从停止状态安全重启 if(m_lastByHand && !sysPara->status.isPumpValveControledByHand) { ControledSwitchFlag = true; - u = (float)sysPara->para.gearPumpValue; // 同步当前转速,避免突变 - // 重置隔膜泵状态机,从当前转速状态开始 - if(u > 40.0f) { - m_pumpState = DPUMP_RUNNING; // 如果当前有转速,进入运行状态 - } else { - m_pumpState = DPUMP_STOPPED; // 否则从停止状态开始 - } + u = 0.0f; + sysPara->para.gearPumpValue = 0; + sysPara->devOp->WriteMoterPump(); + m_pumpState = DPUMP_STOPPED; m_stateChangeCount = 0; m_adjSkip = 0; m_lastActualPressure = 0; + m_startingStepCount = 0; m_bufValidCount = 0; for(int i = 0; i < 10; i++) m_pressureBuf[i] = 0; m_bufIdx = 0; @@ -1567,7 +1589,7 @@ void InkJetPrinter::timerHandler(void){ } } - if(gearPumpRunFlag || sysPara->para.gearPumpEnable == 0) + if(gearPumpRunFlag || sysPara->para.gearPumpEnable == 0 || sysPara->status.powerOffAppending) { if(!sysPara->status.selfCheckDone && sysPara->status.isPrinting){ sysPara->status.selfCheckDone = true; @@ -1615,14 +1637,13 @@ void InkJetPrinter::timerHandler(void){ if(sysPara->status.selfCheckCnt >= MAX_SELF_CHECK_CNT) { sysPara->status.selfCheckDone = 1; - u = (float)sysPara->para.gearPumpValue; - // 自检完成后管道恢复正常阻力,重置状态机让压力重新平稳收敛 - // 不清零 u,从当前控制字开始,避免突变 - if(u > 40.0f) { - m_pumpState = DPUMP_RUNNING; // 如果当前有转速,进入运行状态 - } else { - m_pumpState = DPUMP_STOPPED; // 否则从停止状态开始 - } + // 自检完成后管道恢复正常阻力,必须重新从STOPPED状态开始 + // 清零 u 和状态机,让系统根据实际压力重新启动 + u = 0.0f; // 关键:清零控制量,避免继承自检期间的大转速 + sysPara->para.gearPumpValue = 0; + sysPara->devOp->WriteMoterPump(); // 立即停泵 + + m_pumpState = DPUMP_STOPPED; // 强制进入STOPPED状态 m_stateChangeCount = 0; m_adjSkip = 0; m_lastActualPressure = 0; @@ -1667,7 +1688,9 @@ void InkJetPrinter::timerHandler(void){ for(int i = 0; i < 10; i++) m_pressureBuf[i] = 0; m_bufIdx = 0; } - if(pulse_100ms && sysPara->para.gearPumpEnable && !sysPara->status.isPumpValveControledByHand && ControledSwitchFlag ) { + if(pulse_100ms && sysPara->para.gearPumpEnable && + (sysPara->status.powerOffAppending || + (!sysPara->status.isPumpValveControledByHand && ControledSwitchFlag))) { pressureAdj(); } diff --git a/InkJetPrinter.h b/InkJetPrinter.h index 14604a9..da61a7a 100644 --- a/InkJetPrinter.h +++ b/InkJetPrinter.h @@ -120,6 +120,7 @@ private: int m_bufValidCount = 0; // 缓冲区有效点数(用于启动阶段判断) bool m_lastReclaimMode = false; // 上次回收泵使能状态 bool m_lastByHand = false; // 上次手动控制状态 + bool m_powerOffPressureControlActive = false; // 关机压力控制已初始化 // 隔膜泵控制函数 float calculateTargetSpeed(int err); diff --git a/PrintSetting.h b/PrintSetting.h index a9d0148..92696ec 100644 --- a/PrintSetting.h +++ b/PrintSetting.h @@ -1,229 +1,229 @@ -#ifndef PRINTSETTING_H -#define PRINTSETTING_H - -#include -#include "dialogmodifypasswd.h" -#include "DialogAuthorization.h" -#include "ParaSettingUI.h" -#include "dlginputaddr.h" - -#include "dlgvarlength.h" -#include "dialogshowcounter.h" - -#include "TextEditOption.h" // 需要使用文件文本编辑功能 -#include -#include -#include -#include "dialogmoduleseletion.h" -#include "SectionalCounting/sectionalwid.h" -//#include "mainwindow.h" - -namespace Ui { -class PrintSetting; -} - -class PicScene; -class PicTextItem; - -class PrintSetting : public QWidget,public ParaSettingUI -{ - Q_OBJECT - -public: - explicit PrintSetting(QWidget *parent = 0); - ~PrintSetting(); - QString cmd; - QString addr; - QString data; - QString len; -// QString comport; - QString type; - - void updateSysParaToUI(); //重载 - void applyUIPara(); //重载 - void updateCnt1GroupsTblWgt(); - - void ApplyCnt1GroupSetting(); - void updateSysStatusToUI(); - void updateAuthorization(int auth); - void PreviewEdit(); // - void bindSysPara(SysPara *sysPara); - //分段计米 - void LoadCnt1GroupSettingsToUI(); - void rowWidgetCreate(int rowIndex); - void moveRow(int currentRow, int toRow); - void on_moveUp_clicked(); - void on_moveDown_clicked(); - //分段计米end - - void PrintSettingLog(); - - DlgInputAddr *dlgInputAddr; - DialogModuleSeletion *dialogModuleSeletion; - bool flagOfSpecailSettng ; - bool flagOfEngineeringMode; - void SpecailSettingsDisplay(); - void EngineeringModeDisplay(); - bool flagOfModuleDecimal; - bool flagOfModuleHide; - void ModuleDecimalDisplay(); - void ModuleHideDisplay(); - void ModuleDecimalHideDisplay(const bool bEnabled); - void uiSettingForNo66(); - void uiSettingForNo67(); - void uiSettingForNo72(); - void uiSettingForNo73(); - void specailMachineSetting(bool); - void displayForAdjustVoltage(bool); - void setForAdjustVoltage(); - -public slots: - void updateUIForSpecialCondition(); - - void getFpgaVersionSetDisable(); - -protected: - void resizeEvent(QResizeEvent *event) override; - -signals: - void HiddenFunction(bool); - void sendDataToFPGA(QString,QString,QString,QString,QString); - void engineerMode(bool); - void checkPrintIntervalSignal(); - -private slots: - void showMotorIsenVal(int,int); - void showReclaimTankstatusslot(unsigned char); - void on_radioButtonSpecialCondition_clicked(bool checked); - void refreshtimerHandler(void); - - void ondialogShowCounterAccepted(void); - - void on_checkVarLenChg(); - void on_VarLenSet(); - - void on_pushButtonRanddomBackUP_pressed(); - void PrintupdateSysParaToUI(); - void showVolDacEdit(int auth); - void on_pushButtonApply_pressed(); - void on_checkBoxResetCnt1CurrValue_released(); - void on_checkBoxResetCnt2CurrValue_released(); - void on_pushButtonClearRunTime_pressed(); - void on_pushOnlyCNT1Clear_pressed(); - void on_pushOnlyCNT2Clear_pressed(); - - void ondialogAuthorizationAccepted(); - void ondialogAuthVarSetAccepted(); - void on_dialogModPasswdAccepted(); - - void on_checkBoxSuspendAfterPhaseFault_clicked(); - void on_checkBoxPowerOffAfterPhaseFault_clicked(); - - void on_pushButtonAuth_pressed(); -// void on_pushButtonXFileSelect_pressed(); - - void on_spinBoxLastLineEndPointFixedValue_valueChanged(int arg1); - - void on_pushButtonRecommendedSetting_clicked(); - // todo - void onUpdateCnt1GroupDisp(bool bChangeToNext); - - void on_Cnt3AddRowBtn_pressed(); - - void on_Cnt3RemoveRowBtn_pressed(); - - void on_Cnt3InsertRowBtn_pressed(); - - void on_checkBoxGroupCnt1_clicked(bool checked); - - void on_cnt3RemoveAllRowsBtn_pressed(); - - void on_comboBoxAlterPrintEnable_currentIndexChanged(int index); - - void on_checkVol1of8En_clicked(bool checked); - - void on_checkmode0211_clicked(bool checked); - void on_spinBoxExpiryDate_valueChanged(int arg1); - - void on_CBDateFormat1_currentIndexChanged(int index); - void showMachInfo(QString); - void showRemoteControl(QString SuperNodeIP,QString EdgeIP); - - void on_volButton_clicked(); - - void on_spinBoxColDelay_valueChanged(int arg1); - - void on_radioButtonFUllColFIxVal_clicked(bool checked); - - void on_metreCountButton_clicked(); - - void on_lockoulsepushButton_clicked(); - - void on_spinBoxCnt1EndValue_valueChanged(int arg1); - - //todo - void on_pushButtonUpRow_clicked(); - - void on_pushButtonDownRow_clicked(); - - - void on_checkBoxResetCnt3CurrValue_released(); - void on_checkBoxSaveCNTStateValue_released(); - void on_checkBoxCircleProductCnt_released(); - - void on_pushOnlyCNT3Clear_pressed(); - void setCNT1BackColor(bool flag); - void setCNT2BackColor(bool flag); - void setCNT3BackColor(bool flag); - // void setDisableFontWidth(bool); - void updateMachineMac(QString); - void setDisableFontWidth(bool); -private slots: - void autoUpdateFontWidth(const unsigned int); - - void on_checkBox_FastMode_clicked(); - - - - void on_spinBox_1_valueChanged(int arg1); - - void on_pushButton_2_pressed(); - - void on_pushButton_3_pressed(); - - void on_pushButton_4_pressed(); - - void slt_updateCntShow(bool); -Q_SIGNALS: - void authChanged(int auth); - void printPriveiw(); - void change_OutputPulse(); - void SwitchTimerShowItem(bool flag); -private: - Ui::PrintSetting *ui; - //MainWindow *mainWindow; - DialogAuthorization *dialogAuthorization; - DialogAuthorization *dialogAuthVarSet; - DlgVarLength *dlgvarLen; - int auth; - - Dialogmodifypasswd *dialogModPasswd; - DialogShowCounter *dialogShowCounter; - int modify_vol; - int keepVolVal; - QTimer *refresh_timer; - - int lockpulse; - int area_end; - int last_area_end; - PicScene* pGetPicScene; - - //当前打印的长度 - unsigned int current_print_col_num; - - // 分段计米 - SectionalWid* sectionalWid = nullptr; - void initSection(); -}; - -#endif // PRINTSETTING_H +#ifndef PRINTSETTING_H +#define PRINTSETTING_H + +#include +#include "dialogmodifypasswd.h" +#include "DialogAuthorization.h" +#include "ParaSettingUI.h" +#include "dlginputaddr.h" + +#include "dlgvarlength.h" +#include "dialogshowcounter.h" + +#include "TextEditOption.h" // 需要使用文件文本编辑功能 +#include +#include +#include +#include "dialogmoduleseletion.h" +#include "SectionalCounting/sectionalwid.h" +//#include "mainwindow.h" + +namespace Ui { +class PrintSetting; +} + +class PicScene; +class PicTextItem; + +class PrintSetting : public QWidget,public ParaSettingUI +{ + Q_OBJECT + +public: + explicit PrintSetting(QWidget *parent = 0); + ~PrintSetting(); + QString cmd; + QString addr; + QString data; + QString len; +// QString comport; + QString type; + + void updateSysParaToUI(); //重载 + void applyUIPara(); //重载 + void updateCnt1GroupsTblWgt(); + + void ApplyCnt1GroupSetting(); + void updateSysStatusToUI(); + void updateAuthorization(int auth); + void PreviewEdit(); // + void bindSysPara(SysPara *sysPara); + //分段计米 + void LoadCnt1GroupSettingsToUI(); + void rowWidgetCreate(int rowIndex); + void moveRow(int currentRow, int toRow); + void on_moveUp_clicked(); + void on_moveDown_clicked(); + //分段计米end + + void PrintSettingLog(); + + DlgInputAddr *dlgInputAddr; + DialogModuleSeletion *dialogModuleSeletion; + bool flagOfSpecailSettng ; + bool flagOfEngineeringMode; + void SpecailSettingsDisplay(); + void EngineeringModeDisplay(); + bool flagOfModuleDecimal; + bool flagOfModuleHide; + void ModuleDecimalDisplay(); + void ModuleHideDisplay(); + void ModuleDecimalHideDisplay(const bool bEnabled); + void uiSettingForNo66(); + void uiSettingForNo67(); + void uiSettingForNo72(); + void uiSettingForNo73(); + void specailMachineSetting(bool); + void displayForAdjustVoltage(bool); + void setForAdjustVoltage(); + +public slots: + void updateUIForSpecialCondition(); + + void getFpgaVersionSetDisable(); + +protected: + void resizeEvent(QResizeEvent *event) override; + +signals: + void HiddenFunction(bool); + void sendDataToFPGA(QString,QString,QString,QString,QString); + void engineerMode(bool); + void checkPrintIntervalSignal(); + +private slots: + void showMotorIsenVal(int,int); + void showReclaimTankstatusslot(unsigned char); + void on_radioButtonSpecialCondition_clicked(bool checked); + void refreshtimerHandler(void); + + void ondialogShowCounterAccepted(void); + + void on_checkVarLenChg(); + void on_VarLenSet(); + + void on_pushButtonRanddomBackUP_pressed(); + void PrintupdateSysParaToUI(); + void showVolDacEdit(int auth); + void on_pushButtonApply_pressed(); + void on_checkBoxResetCnt1CurrValue_released(); + void on_checkBoxResetCnt2CurrValue_released(); + void on_pushButtonClearRunTime_pressed(); + void on_pushOnlyCNT1Clear_pressed(); + void on_pushOnlyCNT2Clear_pressed(); + + void ondialogAuthorizationAccepted(); + void ondialogAuthVarSetAccepted(); + void on_dialogModPasswdAccepted(); + + void on_checkBoxSuspendAfterPhaseFault_clicked(); + void on_checkBoxPowerOffAfterPhaseFault_clicked(); + + void on_pushButtonAuth_pressed(); +// void on_pushButtonXFileSelect_pressed(); + + void on_spinBoxLastLineEndPointFixedValue_valueChanged(int arg1); + + void on_pushButtonRecommendedSetting_clicked(); + // todo + void onUpdateCnt1GroupDisp(bool bChangeToNext); + + void on_Cnt3AddRowBtn_pressed(); + + void on_Cnt3RemoveRowBtn_pressed(); + + void on_Cnt3InsertRowBtn_pressed(); + + void on_checkBoxGroupCnt1_clicked(bool checked); + + void on_cnt3RemoveAllRowsBtn_pressed(); + + void on_comboBoxAlterPrintEnable_currentIndexChanged(int index); + + void on_checkVol1of8En_clicked(bool checked); + + void on_checkmode0211_clicked(bool checked); + void on_spinBoxExpiryDate_valueChanged(int arg1); + + void on_CBDateFormat1_currentIndexChanged(int index); + void showMachInfo(QString); + void showRemoteControl(QString SuperNodeIP,QString EdgeIP); + + void on_volButton_clicked(); + + void on_spinBoxColDelay_valueChanged(int arg1); + + void on_radioButtonFUllColFIxVal_clicked(bool checked); + + void on_metreCountButton_clicked(); + + void on_lockoulsepushButton_clicked(); + + void on_spinBoxCnt1EndValue_valueChanged(int arg1); + + //todo + void on_pushButtonUpRow_clicked(); + + void on_pushButtonDownRow_clicked(); + + + void on_checkBoxResetCnt3CurrValue_released(); + void on_checkBoxSaveCNTStateValue_released(); + void on_checkBoxCircleProductCnt_released(); + + void on_pushOnlyCNT3Clear_pressed(); + void setCNT1BackColor(bool flag); + void setCNT2BackColor(bool flag); + void setCNT3BackColor(bool flag); + // void setDisableFontWidth(bool); + void updateMachineMac(QString); + void setDisableFontWidth(bool); +private slots: + void autoUpdateFontWidth(const unsigned int); + + void on_checkBox_FastMode_clicked(); + + + + void on_spinBox_1_valueChanged(int arg1); + + void on_pushButton_2_pressed(); + + void on_pushButton_3_pressed(); + + void on_pushButton_4_pressed(); + + void slt_updateCntShow(bool); +Q_SIGNALS: + void authChanged(int auth); + void printPriveiw(); + void change_OutputPulse(); + void SwitchTimerShowItem(bool flag); +private: + Ui::PrintSetting *ui; + //MainWindow *mainWindow; + DialogAuthorization *dialogAuthorization; + DialogAuthorization *dialogAuthVarSet; + DlgVarLength *dlgvarLen; + int auth; + + Dialogmodifypasswd *dialogModPasswd; + DialogShowCounter *dialogShowCounter; + int modify_vol; + int keepVolVal; + QTimer *refresh_timer; + + int lockpulse; + int area_end; + int last_area_end; + PicScene* pGetPicScene; + + //当前打印的长度 + unsigned int current_print_col_num; + + // 分段计米 + SectionalWid* sectionalWid = nullptr; + void initSection(); +}; + +#endif // PRINTSETTING_H diff --git a/QtUI.pro b/QtUI.pro index 3372c24..c94df44 100644 --- a/QtUI.pro +++ b/QtUI.pro @@ -1,431 +1,431 @@ -###################################################################### -# Automatically generated by qmake (2.01a) ?? 11? 8 22:48:42 2013 -###################################################################### -# -spec /usr/local/Trolltech/QtEmbedded-4.6.3-arm/mkspecs/qws/linux-arm-g++ DEFINES+=ARM DEFINES+=QTV3 DEFINES+=VNLG -# DEFINES+=VNLG -# DEFINES+=X86TEST DEFINES+=VNLG DEFINES+=UART1 -# GIT -#$ git config --global user.name "niexiong" -#$ git config --global user.email "nx@runoob.com" -# git clone git@119.23.201.56:/home/git/QtUI.git -# git pull -# git commit -am "提交说明" -# git push -# git add -# git add -f xxx.cpp #强制提交文件 -# git rm -# -# - -QT += core gui network serialport virtualkeyboard sql -QT += xml - -#//edit@02-07 -#LIBS += -L/usr/local/openssl-1.0.2 -lssl -lcrypto - -greaterThan(QT_MAJOR_VERSION, 4): QT += widgets -QT_VERSION = $$[QT_VERSION] -QT_VERSION = $$split(QT_VERSION, ".") -QT_VER_MAJ = $$member(QT_VERSION, 0) -QT_VER_MIN = $$member(QT_VERSION, 1) -greaterThan(QT_VER_MAJ, 5) | greaterThan(QT_VER_MIN, 9) QT += serialbus -greaterThan(QT_MAJOR_VERSION, 4):QMAKE_CXXFLAGS += -fpermissive -greaterThan(QT_MAJOR_VERSION, 4):CONFIG += c++11 - -# 启用release下带调试信息,详见`VX5 Release编译发行.md`,如果不需要,可以注释掉,但请在软件绝对稳定时注释 -CONFIG += qt warn_on debug_and_release -QMAKE_CXXFLAGS += -g - -#QMAKE_POST_LINK += ulimit -c unlimited -LIBS += -ldl - -include(qjson/upQJson.pri) - -TEMPLATE = app -#ifdef SPV210 - TARGET = qtUIV6 -#else - TARGET = QtUI -#endif -OBJECTS_DIR +=tmp -MOC_DIR +=tmp -DEPENDPATH += . -INCLUDEPATH += . -CODECFORTR = UTF-8 -#DEFINES+=ENGLISH -DEFINES+=WARNING - -DEFINES+=TEMPMIMA -DEFINES+=COUNTER1_BY_GROUP #分段计米 -DEFINES+=COUNTER2_BY_GROUP #分段计米2 -DEFINES+=_2DCODE_ #QR二维码 -DEFINES+=PICSCENE -#DEFINES+=__2451WIFI__ -DEFINES+=__CONVERTERWIFI__ -DEFINES+=MODBUS - - -greaterThan(QT_MAJOR_VERSION, 4):DEFINES+=QT_MAJOR_VERSION5 - -linux-g++ { - DEFINES += ARCH_X86 -} - -linux-aarch64-gnu-g++ { - DEFINES += ARCH_AARCH64_GNU - DEFINES += ARCH_AARCH64 -} - -bns-linux-aarch64-gnu-g++ { - DEFINES += ARCH_AARCH64_GNU - DEFINES += ARCH_AARCH64 - DEFINES += BNS_AARCH64_DEBUG -} - -HEADERS += ClickLabel.h \ - DevOp.h \ - DialogAuthorization.h \ - DialogFileOperation.h \ - DialogFontSize.h \ - DialogInsertVari.h \ - DialogLineSpace.h \ - DigitalInput.h \ - InkJetPrinter.h \ - InputMethod.h \ - InsertSpaceNumDialog.h \ - LogInfo.h \ - mainwindow.h \ - MemDisplayAndEdit.h \ - MyFileDialog.h \ - MyInputMethod.h \ - MyTextEdit.h \ - OtherInfo.h \ - ParaSettingUI.h \ - DlgVolteParaNo73.h \ - DlgVoltePara25Dots.h \ - PhaseGraphic.h \ - PicEdit.h \ - PicWidget.h \ - PrintSetting.h \ - PrintTextDisplay.h \ - Public.h \ - PulseNumFix.h \ - SysPara.h \ - SystemManage.h \ - SystemSetting.h \ - TextEditOption.h \ - TimeSettingDialog.h \ - TriggerCtrl.h \ - ZkEdit.h \ - myinclude.h \ - dlgdrawinit.h \ - zkWidget.h \ - qextserialbase.h \ - posix_qextserialport.h \ - dlginputaddr.h \ - dlgshowmsg.h \ - QBarCode.h \ - dlgQrCode.h \ - BarCode/cmdline.h \ - BarCode/barcode.h \ - QtQREnCode/split.h \ - QtQREnCode/rsecc.h \ - QtQREnCode/qrspec.h \ - QtQREnCode/qrinput.h \ - QtQREnCode/qrencode_inner.h \ - QtQREnCode/qrencode.h \ - QtQREnCode/mqrspec.h \ - QtQREnCode/mmask.h \ - QtQREnCode/mask.h \ - QtQREnCode/bitstream.h \ - Matrix/reedsol.h \ - Matrix/zint.h \ - Matrix/common.h \ - Matrix/dm200.h \ - DialogInputTxt.h \ - dlgmutilanguage.h \ - dlgmywarring.h \ - dlgselectinputlanguage.h \ - DialogSaveFile.h \ - dlgvarlength.h \ - VerBVersion.h \ - scene/picscene.h \ - scene/pictextitem.h \ - scene/SceneEditOption.h \ - scene/sceneviewwidget.h \ - Network/NetworkManager.h \ - modbus/modbus/include/mbconfig.h \ - modbus/modbus/include/mbframe.h \ - modbus/modbus/include/mbfunc.h \ - modbus/modbus/include/mbport.h \ - modbus/modbus/include/mbproto.h \ - modbus/modbus/include/mbutils.h \ - modbus/port/port.h \ - Tftp/filetranseceiver.h \ - modbus/modbus/include/mb.h \ - modbus/modbus/rtu/mbcrc.h \ - modbus/modbus/rtu/mbrtu.h \ - dialogmodifypasswd.h \ - logo_form.h \ - modbus/demo.h \ - dialogshowcounter.h \ - dialogcycleprint.h \ - print_net.h \ - scene/myview.h \ - modbus/modbus/tcp/mbtcp.h \ - modbus/modbustcp.h \ - moveinput.h \ - Log/dualfilelogger.h \ - Log/filelogger.h \ - Log/logger.h \ - Log/logglobal.h \ - Log/logmessage.h \ - modbus/modbustcp.h \ - modbus/modbus/tcp/mbtcp.h \ - modbus/demo.h \ - scene/formscenedlg.h \ - HtmlDelegate.h \ - Serial/serial.h \ - Dbredis/dbredis.h \ - UpdateFPGA.h \ - rfid/rfidfunction.h \ - rfid/sm3.h \ - rfid/sm4.h \ - dialogmoduleseletion.h \ - rfid/rfidmanager.h \ - protocol/message.h \ - protocol/tcpserver.h \ - protocol/serverthread.h \ - SectionalCounting/sectionalmanager.h \ - SectionalCounting/sectionalwid.h \ - dump.h - - - -FORMS += dialogauthorization.ui \ - dialogfileoperation.ui \ - dialogfontsize.ui \ - dialoginsertvari.ui \ - dialoglinespace.ui \ - dialogpointdistanceadjust.ui \ - inkjetprinter.ui \ - InputMethod.ui \ - insertspacenumdialog.ui \ - loginfo.ui \ - mainwindow.ui \ - memdisplayandedit.ui \ - otherinfo.ui \ - printsetting.ui \ - pulsenumfix.ui \ - systemmanage.ui \ - systemsetting.ui \ - texteditoption.ui \ - timesettingdialog.ui \ - triggerctrl.ui \ - zkedit.ui \ - picedit.ui \ - dlgdrawinit.ui \ - digitalinput.ui \ - dlginputaddr.ui \ - dlgshowmsg.ui \ - QBarCode.ui \ - dlgQrCode.ui \ - DialogInputTxt.ui \ - dlgmutilanguage.ui \ - dlgmywarring.ui \ - dlgselectinputlanguage.ui \ - dialogsavefile.ui \ - dlgvarlength.ui \ - scene/sceneEditOption.ui \ - Network/NetworkManager.ui \ - dialoginputpasswd.ui \ - dialogmodifypasswd.ui \ - logo_form.ui \ - dialogshowcounter.ui \ - dialogcycleprint.ui \ - moveinput.ui \ - scene/formscenedlg.ui \ - dialogmoduleseletion.ui \ - SectionalCounting/sectionalwid.ui -SOURCES += ClickLabel.cpp \ - DevOp.cpp \ - DialogAuthorization.cpp \ - DialogFileOperation.cpp \ - DialogFontSize.cpp \ - DialogInsertVari.cpp \ - DialogLineSpace.cpp \ - DigitalInput.cpp \ - InkJetPrinter.cpp \ - InputMethod.cpp \ - InsertSpaceNumDialog.cpp \ - LogInfo.cpp \ - main.cpp \ - dump.cpp \ - mainwindow.cpp \ - MemDisplayAndEdit.cpp \ - MyFileDialog.cpp \ - MyInputMethod.cpp \ - MyTextEdit.cpp \ - OtherInfo.cpp \ - ParaSettingUI.cpp \ - DlgVolteParaNo73.cpp \ - DlgVoltePara25Dots.cpp \ - PhaseGraphic.cpp \ - PicEdit.cpp \ - PicWidget.cpp \ - PrintSetting.cpp \ - PrintTextDisplay.cpp \ - Public.cpp \ - PulseNumFix.cpp \ - SysPara.cpp \ - SystemManage.cpp \ - SystemSetting.cpp \ - TextEditOption.cpp \ - TimeSettingDialog.cpp \ - TriggerCtrl.cpp \ - ZkEdit.cpp \ - dlgdrawinit.cpp \ - zkWidget.cpp \ - qextserialbase.cpp \ - posix_qextserialport.cpp \ - dlginputaddr.cpp \ - dlgshowmsg.cpp \ - QBarCode.cpp \ - dlgQrCode.cpp \ - BarCode/ps.c \ - BarCode/plessey.c \ - BarCode/pcl.c \ - BarCode/msi.c \ - BarCode/library.c \ - BarCode/i25.c \ - BarCode/ean.c \ - BarCode/code128.c \ - BarCode/code93.c \ - BarCode/code39.c \ - BarCode/codabar.c \ - BarCode/cmdline.c \ - QtQREnCode/split.c \ - QtQREnCode/rsecc.c \ - QtQREnCode/qrspec.c \ - QtQREnCode/qrinput.c \ - QtQREnCode/qrencode.c \ - QtQREnCode/mqrspec.c \ - QtQREnCode/mmask.c \ - QtQREnCode/mask.c \ - QtQREnCode/bitstream.c \ - Matrix/common.cpp \ - Matrix/reedsol.cpp \ - Matrix/dm200.cpp \ - Matrix/drawmatrix.cpp \ - DialogInputTxt.cpp \ - dlgmutilanguage.cpp \ - dlgmywarring.cpp \ - dlgselectinputlanguage.cpp \ - DialogSaveFile.cpp \ - dlgvarlength.cpp \ - scene/picscene.cpp \ - scene/pictextitem.cpp \ - scene/SceneEditOption.cpp \ - scene/sceneviewwidget.cpp \ - Network/NetworkManager.cpp \ - modbus/modbus/mb.c \ - modbus/modbus/functions/mbfunccoils.c \ - modbus/modbus/functions/mbfuncdiag.c \ - modbus/modbus/functions/mbfuncdisc.c \ - modbus/modbus/functions/mbfuncholding.c \ - modbus/modbus/functions/mbfuncinput.c \ - modbus/modbus/functions/mbfuncother.c \ - modbus/modbus/functions/mbutils.c \ - modbus/port/portevent.c \ - modbus/port/portother.c \ - Tftp/filetranseceiver.cpp \ - modbus/port/portserial.c \ - modbus/port/porttimer.c \ - modbus/modbus/rtu/mbcrc.c \ - modbus/modbus/rtu/mbrtu.c \ - dialogmodifypasswd.cpp \ - logo_form.cpp \ - dialogshowcounter.cpp \ - dialogcycleprint.cpp \ - print_net.cpp \ - scene/myview.cpp \ - moveinput.cpp \ - Log/dualfilelogger.cpp \ - Log/filelogger.cpp \ - Log/logger.cpp \ - Log/logmessage.cpp \ - modbus/modbustcp.cpp \ - modbus/modbus/tcp/mbtcp.c \ - modbus/port/porttcp.c \ - scene/formscenedlg.cpp \ - HtmlDelegate.cpp \ - Serial/serial.cpp \ - Dbredis/dbredis.cpp \ - UpdateFPGA.cpp \ - rfid/rfidfunction.cpp \ - rfid/sm3.cpp \ - rfid/sm4.cpp \ - dialogmoduleseletion.cpp \ - rfid/rfidmanager.cpp \ - protocol/message.cpp \ - protocol/tcpserver.cpp \ - protocol/serverthread.cpp \ - SectionalCounting/sectionalmanager.cpp \ - SectionalCounting/sectionalwid.cpp - -#RESOURCES +=image.qrc EN/image.qrc -RESOURCES += \ - image.qrc -##ifdef VNLG -#TRANSLATIONS +=./../V0211X86QRVN/chinese.ts ./../V0211X86QRVN/vena.ts ./../V0211X86QRVN/english.ts -TRANSLATIONS += ./vena.ts ./chinese.ts ./turkey.ts ./spanish.ts ./thai.ts ./english.ts ./korean.ts ./farsi.ts -#./../V0211X86QRVN/english.ts -##else -#TRANSLATIONS +=./../V0211X86QR/chinese.ts ./../V0211X86QR/english.ts -##endif - -OTHER_FILES += \ - buge_record.txt - -if(contains(DEFINES,__CONVERTERWIFI__)) -{ - DEFINES += CONFIG_CTRL_IFACE - DEFINES += CONFIG_CTRL_IFACE_UNIX - #SOURCES += ../../src/utils/os_unix.c - SOURCES += /third_part/wpa_supplicant_hostapd/wpa_supplicant_hostapd-0.8/src/utils/os_unix.c - SOURCES += /third_part/wpa_supplicant_hostapd/wpa_supplicant_hostapd-0.8/src/common/wpa_ctrl.c - INCLUDEPATH += /third_part/wpa_supplicant_hostapd/wpa_supplicant_hostapd-0.8/src - INCLUDEPATH += /third_part/wpa_supplicant_hostapd/wpa_supplicant_hostapd-0.8/src/utils -} -if(contains(DEFINES,MODBUS)) -{ - INCLUDEPATH += $$PWD/modbus/port - INCLUDEPATH += $$PWD/modbus/modbus/include - INCLUDEPATH += $$PWD/modbus/modbus/rtu - INCLUDEPATH += $$PWD/modbus/modbus/tcp - #HEADERS += modbus/modbustcp.h - #SOURCES += modbus/modbustcp.cpp -} - -if(contains(DEFINES,__2451WIFI__)) -{ - #DEFINES += CONFIG_CTRL_IFACE - #DEFINES += CONFIG_CTRL_IFACE_UNIX - ##SOURCES += ../../src/utils/os_unix.c - #SOURCES += /home/student/newDisk/2451_linux/wpa_supplicant_hostapd/wpa_supplicant_hostapd-0.8/src/utils/os_unix.c - #SOURCES += /home/student/newDisk/2451_linux/wpa_supplicant_hostapd/wpa_supplicant_hostapd-0.8/src/common/wpa_ctrl.c - #INCLUDEPATH += /home/student/newDisk/2451_linux/wpa_supplicant_hostapd/wpa_supplicant_hostapd-0.8/src - #INCLUDEPATH += /home/student/newDisk/2451_linux/wpa_supplicant_hostapd/wpa_supplicant_hostapd-0.8/src/utils -} - - - - - - - - - - - - +###################################################################### +# Automatically generated by qmake (2.01a) ?? 11? 8 22:48:42 2013 +###################################################################### +# -spec /usr/local/Trolltech/QtEmbedded-4.6.3-arm/mkspecs/qws/linux-arm-g++ DEFINES+=ARM DEFINES+=QTV3 DEFINES+=VNLG +# DEFINES+=VNLG +# DEFINES+=X86TEST DEFINES+=VNLG DEFINES+=UART1 +# GIT +#$ git config --global user.name "niexiong" +#$ git config --global user.email "nx@runoob.com" +# git clone git@119.23.201.56:/home/git/QtUI.git +# git pull +# git commit -am "提交说明" +# git push +# git add +# git add -f xxx.cpp #强制提交文件 +# git rm +# +# + +QT += core gui network serialport virtualkeyboard sql +QT += xml + +#//edit@02-07 +#LIBS += -L/usr/local/openssl-1.0.2 -lssl -lcrypto + +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets +QT_VERSION = $$[QT_VERSION] +QT_VERSION = $$split(QT_VERSION, ".") +QT_VER_MAJ = $$member(QT_VERSION, 0) +QT_VER_MIN = $$member(QT_VERSION, 1) +greaterThan(QT_VER_MAJ, 5) | greaterThan(QT_VER_MIN, 9) QT += serialbus +greaterThan(QT_MAJOR_VERSION, 4):QMAKE_CXXFLAGS += -fpermissive +greaterThan(QT_MAJOR_VERSION, 4):CONFIG += c++11 + +# 启用release下带调试信息,详见`VX5 Release编译发行.md`,如果不需要,可以注释掉,但请在软件绝对稳定时注释 +CONFIG += qt warn_on debug_and_release +QMAKE_CXXFLAGS += -g + +#QMAKE_POST_LINK += ulimit -c unlimited +LIBS += -ldl + +include(qjson/upQJson.pri) + +TEMPLATE = app +#ifdef SPV210 + TARGET = qtUIV6 +#else + TARGET = QtUI +#endif +OBJECTS_DIR +=tmp +MOC_DIR +=tmp +DEPENDPATH += . +INCLUDEPATH += . +CODECFORTR = UTF-8 +#DEFINES+=ENGLISH +DEFINES+=WARNING + +DEFINES+=TEMPMIMA +DEFINES+=COUNTER1_BY_GROUP #分段计米 +DEFINES+=COUNTER2_BY_GROUP #分段计米2 +DEFINES+=_2DCODE_ #QR二维码 +DEFINES+=PICSCENE +#DEFINES+=__2451WIFI__ +DEFINES+=__CONVERTERWIFI__ +DEFINES+=MODBUS + + +greaterThan(QT_MAJOR_VERSION, 4):DEFINES+=QT_MAJOR_VERSION5 + +linux-g++ { + DEFINES += ARCH_X86 +} + +linux-aarch64-gnu-g++ { + DEFINES += ARCH_AARCH64_GNU + DEFINES += ARCH_AARCH64 +} + +bns-linux-aarch64-gnu-g++ { + DEFINES += ARCH_AARCH64_GNU + DEFINES += ARCH_AARCH64 + DEFINES += BNS_AARCH64_DEBUG +} + +HEADERS += ClickLabel.h \ + DevOp.h \ + DialogAuthorization.h \ + DialogFileOperation.h \ + DialogFontSize.h \ + DialogInsertVari.h \ + DialogLineSpace.h \ + DigitalInput.h \ + InkJetPrinter.h \ + InputMethod.h \ + InsertSpaceNumDialog.h \ + LogInfo.h \ + mainwindow.h \ + MemDisplayAndEdit.h \ + MyFileDialog.h \ + MyInputMethod.h \ + MyTextEdit.h \ + OtherInfo.h \ + ParaSettingUI.h \ + DlgVolteParaNo73.h \ + DlgVoltePara25Dots.h \ + PhaseGraphic.h \ + PicEdit.h \ + PicWidget.h \ + PrintSetting.h \ + PrintTextDisplay.h \ + Public.h \ + PulseNumFix.h \ + SysPara.h \ + SystemManage.h \ + SystemSetting.h \ + TextEditOption.h \ + TimeSettingDialog.h \ + TriggerCtrl.h \ + ZkEdit.h \ + myinclude.h \ + dlgdrawinit.h \ + zkWidget.h \ + qextserialbase.h \ + posix_qextserialport.h \ + dlginputaddr.h \ + dlgshowmsg.h \ + QBarCode.h \ + dlgQrCode.h \ + BarCode/cmdline.h \ + BarCode/barcode.h \ + QtQREnCode/split.h \ + QtQREnCode/rsecc.h \ + QtQREnCode/qrspec.h \ + QtQREnCode/qrinput.h \ + QtQREnCode/qrencode_inner.h \ + QtQREnCode/qrencode.h \ + QtQREnCode/mqrspec.h \ + QtQREnCode/mmask.h \ + QtQREnCode/mask.h \ + QtQREnCode/bitstream.h \ + Matrix/reedsol.h \ + Matrix/zint.h \ + Matrix/common.h \ + Matrix/dm200.h \ + DialogInputTxt.h \ + dlgmutilanguage.h \ + dlgmywarring.h \ + dlgselectinputlanguage.h \ + DialogSaveFile.h \ + dlgvarlength.h \ + VerBVersion.h \ + scene/picscene.h \ + scene/pictextitem.h \ + scene/SceneEditOption.h \ + scene/sceneviewwidget.h \ + Network/NetworkManager.h \ + modbus/modbus/include/mbconfig.h \ + modbus/modbus/include/mbframe.h \ + modbus/modbus/include/mbfunc.h \ + modbus/modbus/include/mbport.h \ + modbus/modbus/include/mbproto.h \ + modbus/modbus/include/mbutils.h \ + modbus/port/port.h \ + Tftp/filetranseceiver.h \ + modbus/modbus/include/mb.h \ + modbus/modbus/rtu/mbcrc.h \ + modbus/modbus/rtu/mbrtu.h \ + dialogmodifypasswd.h \ + logo_form.h \ + modbus/demo.h \ + dialogshowcounter.h \ + dialogcycleprint.h \ + print_net.h \ + scene/myview.h \ + modbus/modbus/tcp/mbtcp.h \ + modbus/modbustcp.h \ + moveinput.h \ + Log/dualfilelogger.h \ + Log/filelogger.h \ + Log/logger.h \ + Log/logglobal.h \ + Log/logmessage.h \ + modbus/modbustcp.h \ + modbus/modbus/tcp/mbtcp.h \ + modbus/demo.h \ + scene/formscenedlg.h \ + HtmlDelegate.h \ + Serial/serial.h \ + Dbredis/dbredis.h \ + UpdateFPGA.h \ + rfid/rfidfunction.h \ + rfid/sm3.h \ + rfid/sm4.h \ + dialogmoduleseletion.h \ + rfid/rfidmanager.h \ + protocol/message.h \ + protocol/tcpserver.h \ + protocol/serverthread.h \ + SectionalCounting/sectionalmanager.h \ + SectionalCounting/sectionalwid.h \ + dump.h + + + +FORMS += dialogauthorization.ui \ + dialogfileoperation.ui \ + dialogfontsize.ui \ + dialoginsertvari.ui \ + dialoglinespace.ui \ + dialogpointdistanceadjust.ui \ + inkjetprinter.ui \ + InputMethod.ui \ + insertspacenumdialog.ui \ + loginfo.ui \ + mainwindow.ui \ + memdisplayandedit.ui \ + otherinfo.ui \ + printsetting.ui \ + pulsenumfix.ui \ + systemmanage.ui \ + systemsetting.ui \ + texteditoption.ui \ + timesettingdialog.ui \ + triggerctrl.ui \ + zkedit.ui \ + picedit.ui \ + dlgdrawinit.ui \ + digitalinput.ui \ + dlginputaddr.ui \ + dlgshowmsg.ui \ + QBarCode.ui \ + dlgQrCode.ui \ + DialogInputTxt.ui \ + dlgmutilanguage.ui \ + dlgmywarring.ui \ + dlgselectinputlanguage.ui \ + dialogsavefile.ui \ + dlgvarlength.ui \ + scene/sceneEditOption.ui \ + Network/NetworkManager.ui \ + dialoginputpasswd.ui \ + dialogmodifypasswd.ui \ + logo_form.ui \ + dialogshowcounter.ui \ + dialogcycleprint.ui \ + moveinput.ui \ + scene/formscenedlg.ui \ + dialogmoduleseletion.ui \ + SectionalCounting/sectionalwid.ui +SOURCES += ClickLabel.cpp \ + DevOp.cpp \ + DialogAuthorization.cpp \ + DialogFileOperation.cpp \ + DialogFontSize.cpp \ + DialogInsertVari.cpp \ + DialogLineSpace.cpp \ + DigitalInput.cpp \ + InkJetPrinter.cpp \ + InputMethod.cpp \ + InsertSpaceNumDialog.cpp \ + LogInfo.cpp \ + main.cpp \ + dump.cpp \ + mainwindow.cpp \ + MemDisplayAndEdit.cpp \ + MyFileDialog.cpp \ + MyInputMethod.cpp \ + MyTextEdit.cpp \ + OtherInfo.cpp \ + ParaSettingUI.cpp \ + DlgVolteParaNo73.cpp \ + DlgVoltePara25Dots.cpp \ + PhaseGraphic.cpp \ + PicEdit.cpp \ + PicWidget.cpp \ + PrintSetting.cpp \ + PrintTextDisplay.cpp \ + Public.cpp \ + PulseNumFix.cpp \ + SysPara.cpp \ + SystemManage.cpp \ + SystemSetting.cpp \ + TextEditOption.cpp \ + TimeSettingDialog.cpp \ + TriggerCtrl.cpp \ + ZkEdit.cpp \ + dlgdrawinit.cpp \ + zkWidget.cpp \ + qextserialbase.cpp \ + posix_qextserialport.cpp \ + dlginputaddr.cpp \ + dlgshowmsg.cpp \ + QBarCode.cpp \ + dlgQrCode.cpp \ + BarCode/ps.c \ + BarCode/plessey.c \ + BarCode/pcl.c \ + BarCode/msi.c \ + BarCode/library.c \ + BarCode/i25.c \ + BarCode/ean.c \ + BarCode/code128.c \ + BarCode/code93.c \ + BarCode/code39.c \ + BarCode/codabar.c \ + BarCode/cmdline.c \ + QtQREnCode/split.c \ + QtQREnCode/rsecc.c \ + QtQREnCode/qrspec.c \ + QtQREnCode/qrinput.c \ + QtQREnCode/qrencode.c \ + QtQREnCode/mqrspec.c \ + QtQREnCode/mmask.c \ + QtQREnCode/mask.c \ + QtQREnCode/bitstream.c \ + Matrix/common.cpp \ + Matrix/reedsol.cpp \ + Matrix/dm200.cpp \ + Matrix/drawmatrix.cpp \ + DialogInputTxt.cpp \ + dlgmutilanguage.cpp \ + dlgmywarring.cpp \ + dlgselectinputlanguage.cpp \ + DialogSaveFile.cpp \ + dlgvarlength.cpp \ + scene/picscene.cpp \ + scene/pictextitem.cpp \ + scene/SceneEditOption.cpp \ + scene/sceneviewwidget.cpp \ + Network/NetworkManager.cpp \ + modbus/modbus/mb.c \ + modbus/modbus/functions/mbfunccoils.c \ + modbus/modbus/functions/mbfuncdiag.c \ + modbus/modbus/functions/mbfuncdisc.c \ + modbus/modbus/functions/mbfuncholding.c \ + modbus/modbus/functions/mbfuncinput.c \ + modbus/modbus/functions/mbfuncother.c \ + modbus/modbus/functions/mbutils.c \ + modbus/port/portevent.c \ + modbus/port/portother.c \ + Tftp/filetranseceiver.cpp \ + modbus/port/portserial.c \ + modbus/port/porttimer.c \ + modbus/modbus/rtu/mbcrc.c \ + modbus/modbus/rtu/mbrtu.c \ + dialogmodifypasswd.cpp \ + logo_form.cpp \ + dialogshowcounter.cpp \ + dialogcycleprint.cpp \ + print_net.cpp \ + scene/myview.cpp \ + moveinput.cpp \ + Log/dualfilelogger.cpp \ + Log/filelogger.cpp \ + Log/logger.cpp \ + Log/logmessage.cpp \ + modbus/modbustcp.cpp \ + modbus/modbus/tcp/mbtcp.c \ + modbus/port/porttcp.c \ + scene/formscenedlg.cpp \ + HtmlDelegate.cpp \ + Serial/serial.cpp \ + Dbredis/dbredis.cpp \ + UpdateFPGA.cpp \ + rfid/rfidfunction.cpp \ + rfid/sm3.cpp \ + rfid/sm4.cpp \ + dialogmoduleseletion.cpp \ + rfid/rfidmanager.cpp \ + protocol/message.cpp \ + protocol/tcpserver.cpp \ + protocol/serverthread.cpp \ + SectionalCounting/sectionalmanager.cpp \ + SectionalCounting/sectionalwid.cpp + +#RESOURCES +=image.qrc EN/image.qrc +RESOURCES += \ + image.qrc +##ifdef VNLG +#TRANSLATIONS +=./../V0211X86QRVN/chinese.ts ./../V0211X86QRVN/vena.ts ./../V0211X86QRVN/english.ts +TRANSLATIONS += ./vena.ts ./chinese.ts ./turkey.ts ./spanish.ts ./thai.ts ./english.ts ./korean.ts ./farsi.ts +#./../V0211X86QRVN/english.ts +##else +#TRANSLATIONS +=./../V0211X86QR/chinese.ts ./../V0211X86QR/english.ts +##endif + +OTHER_FILES += \ + buge_record.txt + +if(contains(DEFINES,__CONVERTERWIFI__)) +{ + DEFINES += CONFIG_CTRL_IFACE + DEFINES += CONFIG_CTRL_IFACE_UNIX + #SOURCES += ../../src/utils/os_unix.c + SOURCES += /third_part/wpa_supplicant_hostapd/wpa_supplicant_hostapd-0.8/src/utils/os_unix.c + SOURCES += /third_part/wpa_supplicant_hostapd/wpa_supplicant_hostapd-0.8/src/common/wpa_ctrl.c + INCLUDEPATH += /third_part/wpa_supplicant_hostapd/wpa_supplicant_hostapd-0.8/src + INCLUDEPATH += /third_part/wpa_supplicant_hostapd/wpa_supplicant_hostapd-0.8/src/utils +} +if(contains(DEFINES,MODBUS)) +{ + INCLUDEPATH += $$PWD/modbus/port + INCLUDEPATH += $$PWD/modbus/modbus/include + INCLUDEPATH += $$PWD/modbus/modbus/rtu + INCLUDEPATH += $$PWD/modbus/modbus/tcp + #HEADERS += modbus/modbustcp.h + #SOURCES += modbus/modbustcp.cpp +} + +if(contains(DEFINES,__2451WIFI__)) +{ + #DEFINES += CONFIG_CTRL_IFACE + #DEFINES += CONFIG_CTRL_IFACE_UNIX + ##SOURCES += ../../src/utils/os_unix.c + #SOURCES += /home/student/newDisk/2451_linux/wpa_supplicant_hostapd/wpa_supplicant_hostapd-0.8/src/utils/os_unix.c + #SOURCES += /home/student/newDisk/2451_linux/wpa_supplicant_hostapd/wpa_supplicant_hostapd-0.8/src/common/wpa_ctrl.c + #INCLUDEPATH += /home/student/newDisk/2451_linux/wpa_supplicant_hostapd/wpa_supplicant_hostapd-0.8/src + #INCLUDEPATH += /home/student/newDisk/2451_linux/wpa_supplicant_hostapd/wpa_supplicant_hostapd-0.8/src/utils +} + + + + + + + + + + + + diff --git a/SysPara.h b/SysPara.h index a6a5deb..fd5a2f5 100644 --- a/SysPara.h +++ b/SysPara.h @@ -1,1344 +1,1344 @@ -/* - * SysPara.h - * - * Created on: Jun 25, 2013 - * Author: yiyu - * QQ:1036184468 - * Descriptoin: - - * 2013-11-09 聂雄 - * 修改了para 结构,增加了 alterPrint_t,setepPrint_t两组参数,放在0x3C~0x43传替给FPGA - * 占用的原来预留的17个字(68B)中的8字节,故预留空间改为 15字(60字节) - */ - -#ifndef SYSPARA_H_ -#define SYSPARA_H_ - - -#include "DevOp.h" -#include - -#ifndef SYS1 -#define PARA_ROOT_DIR "/home/plg/conf/" -#define DOC_ROOT_DIR "/home/plg/doc/" -#define UDISK_DOC_ROOT_DIR "/udisk/doc/" -#define UDISK_CONF_ROOT_DIR "/udisk/conf/" -#define TESTDIR "/home/plg/r_conf/" -#else -#define PARA_ROOT_DIR "./conf/" -#define DOC_ROOT_DIR "./doc/" -#define UDISK_DOC_ROOT_DIR "./udisk/doc/" -#define TESTDIR "./r_conf/" -#endif - -#define SPACEFLAG // 增加空列 2017.3.8 - -#define TESTFILES TESTDIR"UP.png" -#define TESTFILED DOC_ROOT_DIR"UP.png" -#define TESTFILECS TESTDIR"UP.dpn" -#define TESTFILECD PARA_ROOT_DIR"UP.dpn" - -#define PARA_FILE_PATH PARA_ROOT_DIR"sysPara.bin" -#define DeviceCode_FILE_PATH "/home/plg/conf/deviceCode.bin" -#define RFID_FILE_PATH "/home/plg/conf/RFID.bin" -#define FPGA_PRINT_PARA_BYTE_NUM 0x3C - -#define BATCHLEN 3 -#define VOLUMELEN 2 - -#define AUTH_NONE 0 -#define AUTH_DISPLAY_SYSTEM_SETTING (1<<0) -#define AUTH_DISPLAY_SYSTEM_MANAGE (1<<1) -#define AUTH_DISPLAY_LOG_INFO (1<<2) -#define AUTH_DISPLAY_OTHER_INFO (1<<3) - -#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; -typedef enum { - 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 -#define TIME_TRIGGER_PRINT_MODE_HEAD_TO_HEAD 1 - -#define SYN_PRINT_MODE_ACCORDING_CHAR_WIDTH 0 -#define SYN_PRINT_MODE_ACCORDING_RATIO 1 - -#define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0])) -#define MAX_QVARI_NUM 4 -#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 dayofweek:3; - unsigned year:12; - - unsigned int leap_year:1; //标记当年是否是闰年 - unsigned int cntCurrValueInitEnable:8; //{[0] -> cnt1CurrValue [1] ->cun2CurrValue [2] ->cun3CurrValue} - unsigned int week:8; - unsigned int cnt1CurrValue;// BCD码 9 - unsigned int cnt2CurrValue; // 0x0f 13 - - unsigned int cnt1End; //0x10 17 - unsigned int cnt2End; //0x14 21 - - unsigned short cnt1Repeat;//0x18 25 - unsigned short cnt2Repeat;//0x1a 29 - - unsigned int cnt1Step;//0x1c 33 - unsigned int cnt2Step;//0x20 37 - - unsigned int cnt1InitValue; //0x24 41 - unsigned int cnt2InitValue; //0x28 45 - - unsigned int RandomValue1; //0x2c - unsigned int RandomValue2; //0x30 - -}calandar_and_dat_t; - -typedef struct { - unsigned int cnt3CurrValue;// BCD码 - unsigned int cnt3End; - unsigned int cnt3Repeat; - unsigned int cnt3Step; - unsigned int cnt3InitValue; - -}stru_counter3; - -//hiddenfunction -typedef struct { - unsigned int cnt4CurrValue;// BCD码 0xb164 - unsigned int cnt4End = 0; - unsigned int cnt4Repeat = 0; - unsigned int cnt4Step = 0; - unsigned int cnt4InitValue = 0; - -}stru_counter4; - -typedef struct -{ - 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; - -}xor_sync_couter; - -typedef struct - { - unsigned short startValue; // 起始值 - unsigned short StepValue; // 跳米间隔 - unsigned short endValue; // 结束值 - unsigned char enbale; // - unsigned char nncc; // 实际跳米数 - }stepPrint_t; // 8Byte - -typedef struct - { - unsigned short startValue; // 起始值 - unsigned short repeatValue; // 重复间隔 - unsigned short repeatPrintTimes; //重复打印次数 - unsigned char DistanceTail; //距离尾部 - unsigned char enable:2; // 交替便能 - unsigned char lineSpace:6; //行距 - //unsigned int bak[10]; // 保留参数 - }alterPrint_t; // 8Byte - -//隐藏功能 -typedef struct - { - unsigned char SpecialVarEnable; //特殊变量使能 - unsigned char MeterEnable; //计数器4带米标使能 - unsigned short SpecialConditionValue; // 隐藏条件倍数值 - unsigned short SpecialVarCountEnd; - unsigned short SpecialVarColStart; - unsigned short SpecialVarColEnd; - unsigned char SpecialVarRowStart; - unsigned char SpecialVarRowEnd; - }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 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 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位数 -}bcOption_t; - -typedef struct { - unsigned int posx; - unsigned char cntNum; - unsigned char width; - unsigned char height; - unsigned char VarNum:3; //1 - unsigned char AutoRefresh:1; - unsigned char AutoCount:1; - unsigned char InkColor:1; - unsigned char RecFromHost:1;// RecFromHost - unsigned char DisplayUpdate:1; //变量更新标志 - unsigned char type; //0-DataMatrix, 1-QRCode,2-BAR - unsigned long counter; - char text[100]; - char textCnt[10]; - char text2[80]; - char text3[8]; - unsigned short CntInc; - unsigned char barCodeFlag:1;//条形码 -}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申请而来还是直接引用别人的指针,主要是影响到指针的释放 -}QRvars_t; - -/* 分段计米相关设定 */ -typedef struct { - unsigned char cnt1GroupCnt; //总共组数 - struct{ - int StartValue; - int EndValue; - //int StepValue; - //int RepeateValue; - int LoopTimes; - }cnt1GroupSettings[MAX_CNT1_GROUPS_NUM]; -}Cnt1ByGroup_t; -typedef struct { - unsigned char cnt2GroupCnt; //总共组数 - struct{ - int StartValue; - int EndValue; - //int StepValue; - //int RepeateValue; - int LoopTimes; - }cnt2GroupSettings[MAX_CNT1_GROUPS_NUM]; -}Cnt2ByGroup_t; - -typedef struct -{ - int type;// - int width; - int height; - int startColPos; - int endRowPos; - int startRowPos; - unsigned int year; // - unsigned char month; - unsigned char day; - unsigned char separate[3]; - unsigned char bold; - unsigned char letterSpace; - unsigned char splitMode;// '-','/',年05月24日 - //unsigned int addDays; // - //--------------------- - char text2[20]; - //bool original; //表示当前dat是通过calloc申请而来还是直接引用别人的指针,主要是影响到指针的释放 -}EXPIRYVAR_t; -// 打印参数 -/* -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 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 char lineEndAdjustPointCnt; //18 - unsigned char lineEndAdjustPointDelay; //19 - short lastLineEndPointFixedDACValue; //1a 1b - unsigned char extClearAllCntEnable; // 1c --- 通过外部(同步器或电眼)清零 0x3a - unsigned char HighVoltageAmplitude; //0x1d 字高// 字高电压系数 - unsigned char mmmee[2]; - //unsigned short timeTriggerPrintDelayMsH:16; // no use 1e,1f - - // 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 - - unsigned char rrr_nc[1]; // 0x4d - unsigned short synPulsePerMmX8 ;// 0x4e~4f - - - 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 synTriggerPrintLenRatio; - - int timeTriggerPrintMode; - int printDelayMs; - int sysTriggerPrintMode; //在同步模式下选择按字宽或时喷印比例进行打印 - int synCharWidthRatio; - int rowSequenceMode; - int pointVoltageAdjustPos; - int PointVoltageAdjustValue; - - int synClearCntInEleEyeMode; //在电眼触发模式下通过同步器清零 - int eleEyeClearCntInSynMode; - int reducedPixelNumRatio; - int lastLineEndPointFixedValue; //对高压部分点的修正 - int pulseOutputEnable; // 脉冲使能输出 - int productCntPerOutputPulse;// - - 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; -#ifdef COUNTER1_BY_GROUP //分段计米 - Cnt1ByGroup_t Cnt1ByGroup; -#endif - EXPIRYVAR_t ExpiryVar; //有效期变量 2018.5.24 - EXPIRYVAR_t CurDateVar; - EXPIRYVAR_t ClassVari; - int ExpiryDay; //有效期天数 - //unsigned char ExpirySplitMode; - - int cnt4CurrValue; - int HiddenConditionValue; - bool HiddenFuncEnable; - bool HiddenMeterEnable; - -// int cnt3EndValue; -// int cnt3StartValue; -// int cnt3StepValue; -// int cnt3RepeateValue; - int cnt3CurrValue; - int textEditLineSpace; - unsigned char speedoverPaushPrint; // 3速度超速不打印标志 -}printPara_t; -*/ - - -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 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 char extClearAllCntEnable; // 1c --- 通过外部(同步器或电眼)清零 0x3a - - 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 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 short synPulsePerMmX8 ;// 0x4e~4f - - 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 synClearCntInEleEyeMode; //在电眼触发模式下通过同步器清零 - int eleEyeClearCntInSynMode; - int reducedPixelNumRatio; - int pulseOutputEnable; // 脉冲使能输出 - int productCntPerOutputPulse;// - - 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; - bool cnt1ByGroupEnalbe; // hlp todo 上面注释内容大概率要使用 - bool cnt2ByGroupEnalbe; -#ifdef COUNTER1_BY_GROUP /* 分段计米 */ - Cnt1ByGroup_t Cnt1ByGroup; -#endif -#ifdef COUNTER2_BY_GROUP /* 分段计米2 */ - Cnt2ByGroup_t Cnt2ByGroup; -#endif - EXPIRYVAR_t ExpiryVar; //有效期变量 2018.5.24 - EXPIRYVAR_t CurDateVar; - EXPIRYVAR_t ClassVari; - int ExpiryDay; //有效期天数 - - int cnt4CurrValue; - int HiddenConditionValue; - bool HiddenFuncEnable; - bool HiddenMeterEnable; - - int cnt3CurrValue; - int textEditLineSpace; - int textEditCharSpace; -// unsigned char speedoverPaushPrint; // 3速度超速不打印标志 -}printPara_t; - - -typedef struct { - - unsigned int printTotalColNum:16; - unsigned int printDirection:8; //[0] 上下颠倒 [1] 左右颠倒 [2] 扫描颠倒 - unsigned int reducedPixelNum:6; - unsigned int reducedPixelMode:2; - - unsigned int printRowDelay:8; - unsigned int printColDelay:24; - - unsigned char oscillatorVoltage; //0x08 - unsigned char phaseByHand; - unsigned char charBold; - unsigned char pixNumPerCol; - - unsigned int timeTriggerPrintDelayMs:16; - unsigned int photoElectricityRepeateNum:16; - - unsigned int printTriggerMode:8; //0x10 - unsigned int totalSynPulseNum:24; - - - unsigned int elecEyeTriggerInterval:32; - - unsigned short divideRatio; //0x18 - unsigned char lineEndAdjustPointCnt; // 0x1a - unsigned char lineEndAdjustPointDelay; // 0x1b - unsigned char enableChargeFullTime; // 0x1c - unsigned char timeTriggerPrintDelayMsH:8; // 0x1 - //unsigned char phaseGroupCount:8; // 0x1 - short lastLineEndPointFixedDACValue; - - unsigned int synNumPerCol:16; //0x20,小数位占8位 //每列同步起脉冲数 - unsigned int dotNumPerCol:16; // 平均每列的像素点(减去冗余的点后) + 列延迟(即打印设置界面中的字体宽度printColDelay) - - unsigned short phase_detect_high_cnt; // - unsigned int phase_detect_pulse_num:4; // 检测个数 - unsigned int phase_detect_voltage:12; // 相检电压阀值 - - unsigned short maxHighVoltageDAC;//0x28 - - unsigned short phaseDetectDelay; //相检延迟 //可以认为是相检的间隔, 以墨点为单位 - short phaseShift; // 相位偏移 - unsigned char HighVoltageAmplitude; - unsigned char magicNum; - - unsigned short productNumToGenerateOutputPulse; //产生一个脉冲所需的产品计数个数//0x30 - unsigned short outputPulseDelayMs; - unsigned short septalPostion; //设置的隔膜位置 - unsigned short blinkLightPeriod; //频闪灯周期,以墨点为单位 - unsigned short eleEyeTriggerPrintDelay; // 0x38 - unsigned char extClearAllCntEnable; //通过外部(同步器或电眼)清零 0x3a - unsigned char FullColFixDacVal; // 0x3b - // 0x3C 0x3D 3E 3F USEING - - alterPrint_t alterPrint; // 8Byte - - unsigned char Cnt1NatureValue:1; //自然数 - unsigned char eleEyeTriggerSynPrintEn:1; //电眼触发的同步打印使能 - unsigned char autoSynSpeedEn:1; //同步打印自动模式 - unsigned char newAmplifyPlate:1; - unsigned char SynCntEn1:1; // 不打印走米 - unsigned char Vol1of8En:1; //打印优化 - unsigned char eleEyeReTrigDisable:1; // 6 - unsigned char set_HVData_Flag:1; // - unsigned char mode0211:1; //0211 模式 - unsigned char synchronizorActType:2; // 0b00:同步器正反转打印; 0b01:同步器只正转打印; 0b10:同步器只反转打印 - unsigned char cnt1ResetToInitValue:1; // 电眼复位时,选择复位到起始值还是当前值 - unsigned char flagOfFastMode:1; - unsigned char rrr_nc0:1; // 0x4D :[5:5] - unsigned char printNumPoint:1; // 0x4D :[6:6]计数器1打印小数点使能位 - unsigned char rrr_nc:1; // 0x4D :[7:7] - - unsigned short synPulsePerMmX8 ;// 0x4e~4f - /*-------------------------------cut line--------------------------------------*/ - - 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; // 每100mm同步器脉冲数 - 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 temperature;//喷头温度 - int viscosity; - int viscosityAdjust; - bool stopCounterMeterAfterFault; - bool suspendAfterPhaseFault; - int oscillatoFreq; - int synTriggerPrintLenRatio; - char lastOpenedFileName[100]; - int phaseHighLowRatio; //相位高电平占空比 - int phaseDetectVol; //因为和实际的值有一个转换过程,所以用此变量做中转 - int oscillatorFreqFix; - unsigned int totalProductCnt; - int timeTriggerPrintMode; - int printDelayMs; - int sysTriggerPrintMode; //在同步模式下选择按字宽或时喷印比例进行打印 - int synCharWidthRatio; //字符宽度 或 喷印比例 触发设置界面 - int rowSequenceMode; - int pointVoltageAdjustPos; // 点距电压调整位置 - int PointVoltageAdjustValue; //点距调压调整值, 超过调整位置就需要增加充电电压 - int RecycleWarnAction; - int powerOffAfterPhaseFault; - int synClearCntInEleEyeMode; //在点眼触发模式下通过同步器清零 - int eleEyeClearCntInSynMode; // CNT2 D5=0选择电眼复位 D5=1选择电眼加1 ; - // CNT1 D4=0选择电眼复位 D4=1选择电眼加1 ; - // D2D1D0 =00 禁止电眼操作,01 电眼复位,打印完成,10 电眼立即复位 - - int fontPixelSize; //用来记录上一次设置的字体大小 - //int septalPostion; - int mixValveisNewVersion; //混和阀是否是新管路 - int lastLineEndPointFixedValue; //对高压部分点的修正 - int textEditLineSpace; - int textEditCharSpace; - int industryIndex; - int recommendedPrintSpeed; - int pulseOutputEnable; - int productCntPerOutputPulse; - int reducedPixelNumRatio; - int EditMode; //编辑模式 0 txt , 1 dot, 2 场景 - //int nncc:31; - int AlterMode; // 交替状态 0,1,2 - int SynCntEn:1; - int ResetProductCntEn:1; // 复位产品计数器 - int ResetAllProductCntEn:1;// 复位总产品计数器 - int HVFaultCloseEn:1;// 高压故障关回收槽 - int MirrABCEnable:2; // 0 无镜像,1 水平,2 垂直 - int checkSpace:1; //使用空列 - int varLenEn:1;// - int ExtScreenType:3;// 外接屏类型 - int ExtMeterType:3; // 显示屏显示米数类型 - int unc:15; // - int FullColFixVal; - unsigned char ReadFileErrorCnt; // - unsigned char PowerOnErrorCnt; // - unsigned char NozzleType; // 0 -- 小,1- 大 - unsigned char NNCC; //预留,这样可以保证每次的配置文件大小一致 - short varLen; // 头部可变长 - short varLen1; // 尾部可变长 - unsigned short OuputPulseCol; //桂林客户,精准控制输出脉冲的位置,精确到打印的列数-->现在用作充电脉宽 - // short reverse; //留,这样可以保证每次的配置文件大小一致 - unsigned char diameter:3; // 喷嘴直径,0->50um; 1->60um; 2->70um - unsigned char Reciclar:1; - unsigned char ResetSendData:1; - unsigned char reverse:2; - bool isCheckInsertTime; - calandar_and_dat_t calandar_and_dat; - // 添加参数 - unsigned char adjVolDacRate[40]; //增加了DAC电压间隔调整比例 - - bcOption_t bcOption; - qrOption_t qrOption; - unsigned short eleMaskTime; //0x3C,3D 电眼锁定(屏蔽)间隔ms - unsigned short AltMirrorGap;// 镜像打印间隔 Mirror image alternation - long long openInkLineTime; //记录墨线开关时间 136年 以秒为单位 - long TrunOnPowerCnt; // 开机次数 20151218 -// int varLenEn:1;// -// unsigned char varLen; // 可变长 - unsigned short headLen; - unsigned short endLen; - int ExpiryDay; //有效期天数 - unsigned char ExpirySplitMode; - quint16 diaphramOffset; // 隔膜位置偏移,当隔膜位置低于(设定的隔膜位置-偏移),主墨泵就开启 - unsigned char gearPumpEnable:1; - - quint16 gearPumpValue; - quint16 steal_dac_row; - quint16 phaseHighCnt; - int reserved2[13];// 23 -1预留,这样可以保证每次的配置文件大小一致 - unsigned short reverse3; - bool isCheckBarDate; //条形码加入日期 - bool isCheckBarTime; //条形码加入时间 - bool cnt1ByGroupEnalbe; - bool cnt2ByGroupEnalbe; -#ifdef COUNTER1_BY_GROUP /* 分段计米 */ - Cnt1ByGroup_t Cnt1ByGroup; -#endif -#ifdef COUNTER2_BY_GROUP - Cnt2ByGroup_t Cnt2ByGroup; -#endif - quint16 printed_adj_dac[40]; - quint16 printed_continue_col_dac[40]; - quint16 printed_full_col_dac[40]; - quint16 dacScale; - unsigned int pulse_sinal_value:16; - - int cnt3EndValue; - int cnt3StartValue; - int cnt3StepValue; - int cnt3RepeateValue; - int cnt3CurrValue; - stru_counter3 Counter3; - stru_counter4 Counter4; - int cnt4CurrValue; - int HiddenConditionValue; - bool HiddenFuncEnable; - bool HiddenMeterEnable; - - //quint16 Json_device_code; - unsigned char Json_IP[4]; - quint16 Json_server_port; - bool charWidthSetEnable; - bool isCheckMagnet;//检测喷头盖磁铁 - bool isRemoveCode;//不显示二维码 - bool isCheckPrintLight;// - bool isEnableGetDataButton;//使能获取数据按钮 - bool isRemoveDigitCode;//不显示数字码 - bool isCntSaveStateValue;//计数器保存关机值 - bool isCheckBarCodeAddText; - bool isCnt1ShowNumPoint; //计数器1是否显示小数点 - char FanTemperature; - char Json_device_code[10]; - unsigned char speedoverPaushPrint:1; // 速度超速不打印标志 - bool flagOfModuleDecimal; - bool flagOfModuleHide; - bool flagOfstepPrint; - bool flagOfCnt1GroupDisp; - bool flagOfReclaimPumEnable; - unsigned int gearPumpSpeedAlarm; - char comport[20]; - bool flagOfContinueHeat; - unsigned int heatTime; - bool RFIDSolventWarn; - int RFIDSolventWarnMixCnt; - bool RFIDInkWarn; - bool flagOf5Row5Dot; - unsigned int inkWarnDate; - unsigned int inkWarnTime; - unsigned int solventWarnDate; - unsigned int solventWarnTime; - unsigned short moduleSelection; - bool flagOfAdjustVoltage; - unsigned short currSelectVolPara; - - int airPushDurationSec; // 排气时间,单位 秒 - /* */ - // 1108Bytes -}sysPara_t; - -typedef struct -{ - quint8 header[32]; - qint16 pixel_full_table[40]; - qint16 pixel_1_table[40]; - qint16 pixel_2_table[40][2]; - qint16 pixel_3_table[40][3]; - qint16 pixel_4_table[40][4]; - qint16 pixel_para_table[16]; - qint16 pixel_5_table[40][5]; - qint16 pixel_gap_table[48][5]; - qint16 pixel_pre_table[16][5]; - qint16 pixel_c_table[32][4]; -}voltePara_t; - -typedef struct -{ - quint16 matchTotalTableDACArray1[64]; - quint16 matchTotalTableDACArray2[64][2]; - quint16 matchTotalTableDACArray3[64][3]; - quint16 matchTotalTableDACArray4[64][4]; - quint16 matchTotalTableDACArray5[64][5]; - quint16 matchContinousDACArray[64]; - qint8 matchTotalDiffVoltageValue[50][64]; - quint8 matchExtraLineDACArray[64]; - qint8 matchFirstOnePointExtraLineDACArray[64]; - qint8 matchAdjustParaDACArray[8]; - qint8 matchGiantPointVoltageValue[16][64]; - quint16 matchTotalTableDACArrayFirst1[64]; //调一列的第一个单点 -}voltePara_t_25Dots; -typedef struct -{ - quint8 header[32]; - qint16 pixel_full_table[48]; - qint16 pixel_steal_table[48]; - qint16 pixel_head2_table[48]; - qint16 pixel_head3_table[48]; - - qint16 pixel_1_table[48]; - qint16 pixel_tail2_table[48]; - - qint16 pixel_2_table[48][2]; - - qint16 pixel_3_table[48][3]; - - qint16 pixel_4_table[48][4]; - - qint16 pixel_para_table[16]; - - qint16 pixel_5_table[48][5]; - qint16 pixel_continous_table[48]; - qint16 pixel_gap_table[48][5]; // kongdian - qint8 pixel_big_table[8][8]; - qint16 pixel_gap_post_3dot_table[48][5]; // 3 kongdian - - 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 -{ - unsigned int PrintInkDots; - unsigned int InkEmptyCnt; - unsigned int SOLVEmptyCnt; - unsigned int InkRFIDCnt; - unsigned int SOLVRFIDCnt; - unsigned short solventNumber; -}RFIDPara_t; - -#define MDT 0 -#define QR 1 -#define BAR 2 -#define QR_NETWORK 3 // 网络二维码 - -#define MAX_SELF_CHECK_CNT 6000 //60S,以10ms为单位s - -#if defined(BNS_AARCH64_DEBUG) || defined(FPGATEST) -#undef MAX_SELF_CHECK_CNT -#define MAX_SELF_CHECK_CNT 1000 -#endif - -#define MIX_VALVE_OPEN_DELAY 90 //混合阀打开的时间 -#define RECYCLE_WARN_DELAY 50 //回收故障延时,以100ms为单位 -#define MAX_VISCOSITY_WORK_TIME 500 //10ms为单位 -#define MAX_MAIN_INK_PUMP_RUN_TIME 1000 //10s -#define MAX_HEATER_TIME 3000 //300s -#define MAX_COMPRESS_PUMP_RUN_TIME 6000 //60 - -#define FPGA_MAGIC_NUM_AFTER_CONF 0x73 -#define MAX_CYCLEVALVE_OPEN_TIME_AFTER_SWITN_OFF 280 // 以10ms为单位 230 - - - -#define FPGA_STATUS_BYTE_NUM 0x44 - -#define MAX_PRINT_COL_NUM_Wide (1000*8 - 1) -#define MAX_PRINT_COL_NUM_Normal (500*8 - 1) -#define MAX_PRINT_ROW_NUM 40 -#define MAX_PRINT_ROW_BYTE_NUM 5 -#define BLANK_COL_NUM 3 //信息前空3列 -#define RECLAIM_PUMP_FULL_SPEED_CNT 5300 //5s钟 -#define MAX_VARI_NUM 8 - - -#define CALANDAR_YEAR 0 -#define CALANDAR_MONTH 1 -#define CALANDAR_DAY 2 -#define CALANDAR_WEEK 3 -#define CALANDAR_HOUR 4 -#define CALANDAR_MINUTE 5 -#define CALANDAR_SECOND 6 -#define CALANDAR_CNT1 7 -#define CALANDAR_CNT2 8 -#define CALANDAR_CNT3 13 -#define CALANDAR_XDAY 14 -#define CALANDAR_CNT4 15 -#define RANDOMNUM 12 -#define EXPIRYDATE 80 -#define CURDATE 81 -#define CURCLASS 82 - -#define MAX_INK_EMTYTIME 86400//10800 // s 3hour 3*60*60 = 10800s -#define MAX_SOLV_EMTYTIME 21600//10800 // s 3hour 3*60*60 = 10800s -#define MAX_INK_RFIDTIME 86400//10800 // s 3hour 3*60*60 = 10800s -#define MAX_SOLV_RFIDTIME 7200//21600//10800 // s 3hour 3*60*60 = 10800s -#define MAX_INK_DOTS 2300000000//PrintInkDots -#define MAX_SOLV_OPENNUM 400//OpenNumber -#define MAX_INK_SOLV_EMTYTIME 10800 // s 3hour 3*60*60 = 10800s - -#define AUTOCLEAN_STATUS_NONE 0 -#define AUTOCLEAN_STATUS_STEP1 1 -#define AUTOCLEAN_STATUS_STEP2 2 -#define AUTOCLEAN_STATUS_STEP3 3 -#define AUTOCLEAN_STATUS_STEP1_TIME 60 -#define AUTOCLEAN_STATUS_STEP2_TIME (60*3) -#define AUTOCLEAN_STATUS_STEP3_TIME (5) - -typedef struct { - int type; - int digitalNum; - int width; // 字模的宽度 - int height; // 字模的高度 - int startColPos; - int endRowPos; - int startRowPos; - int bassAddr; // 字模的地址, 从0开始,不同类型会一直增加 - int currVal; - int bold; - int letterSpace; - //int chartype;// 字体类型:0 常规,1 左横,2 右横, 4 倒立(Nc) - //--------------------- - unsigned char *dat; //指向申请内存的空间 生成字模数据 - int datWidth; //datWidth * datHeight为像素的数目,申请空间的大小为datWidth*rowByteNum; - int datHeight; // 变量的高度 - int rowByteNum; - bool original; //表示当前dat是通过calloc申请而来还是直接引用别人的指针,主要是影响到指针的释放 - char fontname[128]; // 字体名 -}vars_t; - - -typedef struct{ - - unsigned int unUse1:16; - unsigned int unUse2:16; - - unsigned int unUse3:16; - unsigned int unUse4:16; - - unsigned int unUse5:16; - unsigned int unUse6:16; - - unsigned int unUse7:16; - unsigned int unUse8:16; - - - unsigned int maginNum:8; //0x10 - - unsigned int unUse9:8; - - unsigned int flightTm:16; - - unsigned int phase:16; - - unsigned int unUse10:16; - - unsigned char phaseChargeResult[8]; - -/* - unsigned short ink_dot_num:6; //飞过相检头上的墨点数 0x20 - unsigned short detect_phase_error:1; - unsigned short flight_tm_error:1; - unsigned short synPulseCntPer1sH:8; - unsigned short synPulseCntPer1s:16; -*/ - unsigned int ink_dot_num:6; //飞过相检头上的墨点数 0x20 - unsigned int detect_phase_error:1; - unsigned int flight_tm_error:1; - unsigned int synPulseCntPer1s:24; - - unsigned int productCnt; - - unsigned int synColDelay:16; //0x28 - unsigned char phasePosEdge; //0x2a - unsigned char phaseNegEdge; //0x2b - - unsigned int synTotalPulseCnt; //0x2c~2f - - unsigned int warm_InkPump:1; // 0x30 - unsigned int ink_Ctrl:1; - unsigned int adj_warn:1; // 自动调速状态 NC 20140305 - unsigned int lesslen_warn:1; // 喷印不完整报警 20140305 - unsigned int wait_phdetect_ok:1; // 等待相检完成 V3W 版还没有对此作修改。 原V6S的参数 - unsigned int set_HVData_Flag:1; // 设置高压包电流标志 - unsigned int dummy:2; //FPGA回传是否正在打印 20260306 - unsigned char unUse11; // 0x31 130113 - unsigned short unUse12; // 0x32 33 电机当前开关时长(s) 130113 - unsigned char read_nc11[2]; //34,35 // no use - 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 volGap_pulse_num:24; // - unsigned int AlterMode:8; // 交替状态 0,1,2; //0x43 共 0x44个字节 - unsigned int VREF:16; - unsigned int MOTOR_ISEN:16; - - unsigned int TEMP_ADIN:16; - unsigned int HV_DETOUT:16; - - unsigned int AD_FIXED:16; - unsigned int SEPTAL_POSITION:16; - - unsigned int PRESSURE:16; - unsigned int AD_UNUSED:16; - unsigned int statWarn:8; //0x11 - unsigned int viscosity:16; - unsigned int mainPumpWarm:8; - unsigned char reclaimTankstatus; // 0x31 130113 - unsigned short curr_reclaimTankTime; // 0x32 33 电机当前开关时长(s) 130113 - //unsigned char read_ncba[6]; // 不用 3C - - - /*----------------------------cut line----------------------------*/ - unsigned short phaseDetectHighTm[64]; //每一个相位的高电平时间 - - unsigned char RandomDigitNum;// 随机码长度 - unsigned char RandomBackCnt; // 0不需要备份,>0需要备份 - - bool isPumpValveControledByHand; //0x20 - bool isCleanUp; - int reclaimCloseCnt; - bool selfCheckDone; - int selfCheckCnt; - int viscosityDelayCnt; - int viscosityFaultCnt; - int rWarnViscoReady; - int viscosityMaxFaultCnt; - int reclaimPumpFullSpeedCnt; //全速开 - bool mainInkPumpError; //主墨泵故障 - int mainInkPumpRunTmCnt; - bool compressPumpError; - int compressPumpRunTmCnt; - int currPrintCol; - int currPrintRow; - unsigned char printDat[MAX_PRINT_COL_NUM_Wide*MAX_PRINT_ROW_BYTE_NUM]; - unsigned char printDat_Normal[MAX_PRINT_COL_NUM_Normal*MAX_PRINT_ROW_BYTE_NUM]; - int currAlterPrintCol; - int currAlterPrintRow; - // unsigned char printAlterDat1[MAX_PRINT_COL_NUM*MAX_PRINT_ROW_BYTE_NUM]; - // unsigned char printAlterDat2[MAX_PRINT_COL_NUM*MAX_PRINT_ROW_BYTE_NUM]; - int delay10ms; - int delay100ms; - int delay1s; - int delay10s; - int delay100s; - int viscosityFault;// 0 正常,1-粘度值高,2-粘度值低 - int lastViscosityFault; //用来记录上一次的粘度错误状态 - int lastStatWarn; - int lastPhaseFault; - int phaseErrorCnt; - - /* Yang */ - int lastRecycleWarn; //记录上一次的回收故障状态 - int RecycleWarnCnt; - int LightUpCnt; - - bool gearPumpRunStopFlag; - unsigned short gearPumpRunSpeed; //齿轮泵转速 - int visocityValueOverflowNum; /*记录粘度溢出次数*/ - unsigned int lastProductCnt; - unsigned int lastSynPulseCntPer1s; // - int lastSynColDelay; - int configDone; //配置完成 - unsigned int fpgaVersionNum; - unsigned char FPGAChipType; //VX4区分E15和E22芯片,VX5不需要 - bool detectHighVoltageAppending; //检测高压 - bool detectedValidHighVoltage; //是否检测到高压 - unsigned int detectHighVoltageCnt; //检测高压的次数 - int lastwarmInkPump; - int variNum,QRvariNum,BCvariNum,ExpiryVarNum,ExpiryDispUpdate,CurrDateVariNum,classVariNum; - vars_t vars[MAX_VARI_NUM]; - //QRvars_t QRvars[MAX_QVARI_NUM]; - calandar_and_dat_t calandar_and_dat; - - /*---------------回收槽控制相关----------------------*/ - int currReclaimTankPos; - int currReclaimOperationCnt; - bool reclainTankReachEnd; //完全打开 - bool reclainOpenAppending; - bool reclainCloseAppending; - bool canRunAirPushing; - - int currMsCnt; - /*---------------------------------------------*/ - bool cnt1CurrentValueInitDoneFlag; // 将这两个值设为false,会另cnt1和cnt2的当前值初始化 - bool cnt2CurrentValueInitDoneFlag; // - /*----------------------------------------------*/ - /*----------------------------------------------*/ - bool RedLightOnFlag; - bool GreenLightOnFlag; - bool YellowLightOnFlag; - - bool beeperOnFlag; - /*--------------------------------------------*/ - int heaterONTimeCnt; //连续加热有时间限制 - - bool lostCommuFlag; //失去通信 - - bool isPrinting; // - - int cycleValveOpenCntAfterSWintOff; //墨线关掉的时候关循环阀的时间 - int cycleValveOpenCntAfterSWintOn; //墨线开启的时候开循环阀的时间 - - //2019/10/26 - bool autoCtlReclaimAfterSWintOff; - int reclaimOpenCntAfterSWintOff; //墨线关掉的时候关回收阀的时间 - bool byHandStore; // 为了控制主墨泵, 保存当前是否在手动状态,然后切换手动状态, - - bool powerOffAppending; //按下快速关机 - - bool reclaimTankBlockedAppending; //回收槽被卡住 - int airPushingOnTime; // 排气的运行时间 - bool airPushing; // 开回收槽执行排气动作 - bool airPushingDone; // 开回收槽执行排气动作完成 - - bool DACDisable; //相位故障,DAC被disable - bool WorkTimeOut; - bool detectBestOscillatorFreqAppending; //检测最佳晶振频率 - bool detectBestOscillatorVoltageAppending; //检测最佳晶振频率 - int currentDetectBestOscillatorCnt; - int longestPhaseHightLevelTm; //最长的相位高电平时间 - int detectedBestOscillatorFreq; // - int detectedStartOscillatorFreq; - int detectedBestOscillatorVoltage; // - int releaseValveDelayCnt; //开泄压阀后立刻关掉,等一定间隔在检测 - int reclaimBlockedCnt; - bool releaseValveOpenApending; - int powerOffAfterPhaseFaultAppending; - unsigned int pressureOverFlowCnt; - 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; // - - 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 int cnt2GroupCurrentLoop; //分段计米 计数器2当前第几次循环 - unsigned char cnt1GroupRunningIndex; //分段计米 计数器1当前第几次段 - unsigned char cnt2GroupRunningIndex; //分段计米 计数器2当前第几次段 - 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; - bool flagOfAbnormalStatus;//如果在打印过程中死机,重启后为异常状态 - bool flagOfPowerOnMode;//0为正常开机,1为24小时自动开机 - unsigned int waitPowerOffTime; -}sysStatus_t; - -#include - -/* input registers */ -typedef struct { - uint16_t printFinishFlag;//(0) - uint16_t orderCode;//顺序号(1) - - uint8_t usedFileName[100];//(2-51) - uint16_t printStatus;// 1:正在打印, 2:暂停打印, 3:停止打印(52) - uint16_t statWarn;//(53) - calandar_and_dat_t curCalendarAndDate;//(54-79) - uint32_t mbCurrPrintRow;//(80-81) - uint32_t mbCurrPrintCol;//(82-83) - uint32_t productCnt; //产品计数器(84-85) - uint16_t receiveEnbleFlag;//(86) -}ModbusPrintStatus; - -/* holding registers */ -typedef struct { - uint8_t QRcode_buf[110]; //存二维码的buf(0-54) - uint16_t printCommand; // 1:开始打印, 2:暂停打印, 3:停止打印(55) - uint8_t selectFileName[100]; // 选择要打印的文件(56-105) - uint16_t faultRusume;//(106) - calandar_and_dat_t setCalendar;//(107-133) - uint32_t lineSpaceAndCharSpace; //高16作为行间距,低16位作为字符间距(134-135) - uint16_t clearProductCnt; //产品计数器(136) - uint16_t printContent;//2位数的打印内容(137) -}ModbusPrintParas; - - -/* net data */ -typedef struct { - //get data - char PrintingContent[2048]; - int ProductPlanQty; - char ProductUniqueCode[110];// 产品唯一编码 - int ProductionTask; - char QRCodeContent[110]; - int StartMetre; - bool TasdNeedConfirm; - int TaskSwitchingMode; -}JSON_DATA; - -class SysPara{ - //Q_OBJECT -public : - - 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; - 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: - -}; - -#endif /* SYSPARA_H_ */ +/* + * SysPara.h + * + * Created on: Jun 25, 2013 + * Author: yiyu + * QQ:1036184468 + * Descriptoin: + + * 2013-11-09 聂雄 + * 修改了para 结构,增加了 alterPrint_t,setepPrint_t两组参数,放在0x3C~0x43传替给FPGA + * 占用的原来预留的17个字(68B)中的8字节,故预留空间改为 15字(60字节) + */ + +#ifndef SYSPARA_H_ +#define SYSPARA_H_ + + +#include "DevOp.h" +#include + +#ifndef SYS1 +#define PARA_ROOT_DIR "/home/plg/conf/" +#define DOC_ROOT_DIR "/home/plg/doc/" +#define UDISK_DOC_ROOT_DIR "/udisk/doc/" +#define UDISK_CONF_ROOT_DIR "/udisk/conf/" +#define TESTDIR "/home/plg/r_conf/" +#else +#define PARA_ROOT_DIR "./conf/" +#define DOC_ROOT_DIR "./doc/" +#define UDISK_DOC_ROOT_DIR "./udisk/doc/" +#define TESTDIR "./r_conf/" +#endif + +#define SPACEFLAG // 增加空列 2017.3.8 + +#define TESTFILES TESTDIR"UP.png" +#define TESTFILED DOC_ROOT_DIR"UP.png" +#define TESTFILECS TESTDIR"UP.dpn" +#define TESTFILECD PARA_ROOT_DIR"UP.dpn" + +#define PARA_FILE_PATH PARA_ROOT_DIR"sysPara.bin" +#define DeviceCode_FILE_PATH "/home/plg/conf/deviceCode.bin" +#define RFID_FILE_PATH "/home/plg/conf/RFID.bin" +#define FPGA_PRINT_PARA_BYTE_NUM 0x3C + +#define BATCHLEN 3 +#define VOLUMELEN 2 + +#define AUTH_NONE 0 +#define AUTH_DISPLAY_SYSTEM_SETTING (1<<0) +#define AUTH_DISPLAY_SYSTEM_MANAGE (1<<1) +#define AUTH_DISPLAY_LOG_INFO (1<<2) +#define AUTH_DISPLAY_OTHER_INFO (1<<3) + +#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; +typedef enum { + 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 +#define TIME_TRIGGER_PRINT_MODE_HEAD_TO_HEAD 1 + +#define SYN_PRINT_MODE_ACCORDING_CHAR_WIDTH 0 +#define SYN_PRINT_MODE_ACCORDING_RATIO 1 + +#define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0])) +#define MAX_QVARI_NUM 4 +#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 dayofweek:3; + unsigned year:12; + + unsigned int leap_year:1; //标记当年是否是闰年 + unsigned int cntCurrValueInitEnable:8; //{[0] -> cnt1CurrValue [1] ->cun2CurrValue [2] ->cun3CurrValue} + unsigned int week:8; + unsigned int cnt1CurrValue;// BCD码 9 + unsigned int cnt2CurrValue; // 0x0f 13 + + unsigned int cnt1End; //0x10 17 + unsigned int cnt2End; //0x14 21 + + unsigned short cnt1Repeat;//0x18 25 + unsigned short cnt2Repeat;//0x1a 29 + + unsigned int cnt1Step;//0x1c 33 + unsigned int cnt2Step;//0x20 37 + + unsigned int cnt1InitValue; //0x24 41 + unsigned int cnt2InitValue; //0x28 45 + + unsigned int RandomValue1; //0x2c + unsigned int RandomValue2; //0x30 + +}calandar_and_dat_t; + +typedef struct { + unsigned int cnt3CurrValue;// BCD码 + unsigned int cnt3End; + unsigned int cnt3Repeat; + unsigned int cnt3Step; + unsigned int cnt3InitValue; + +}stru_counter3; + +//hiddenfunction +typedef struct { + unsigned int cnt4CurrValue;// BCD码 0xb164 + unsigned int cnt4End = 0; + unsigned int cnt4Repeat = 0; + unsigned int cnt4Step = 0; + unsigned int cnt4InitValue = 0; + +}stru_counter4; + +typedef struct +{ + 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; + +}xor_sync_couter; + +typedef struct + { + unsigned short startValue; // 起始值 + unsigned short StepValue; // 跳米间隔 + unsigned short endValue; // 结束值 + unsigned char enbale; // + unsigned char nncc; // 实际跳米数 + }stepPrint_t; // 8Byte + +typedef struct + { + unsigned short startValue; // 起始值 + unsigned short repeatValue; // 重复间隔 + unsigned short repeatPrintTimes; //重复打印次数 + unsigned char DistanceTail; //距离尾部 + unsigned char enable:2; // 交替便能 + unsigned char lineSpace:6; //行距 + //unsigned int bak[10]; // 保留参数 + }alterPrint_t; // 8Byte + +//隐藏功能 +typedef struct + { + unsigned char SpecialVarEnable; //特殊变量使能 + unsigned char MeterEnable; //计数器4带米标使能 + unsigned short SpecialConditionValue; // 隐藏条件倍数值 + unsigned short SpecialVarCountEnd; + unsigned short SpecialVarColStart; + unsigned short SpecialVarColEnd; + unsigned char SpecialVarRowStart; + unsigned char SpecialVarRowEnd; + }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 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 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位数 +}bcOption_t; + +typedef struct { + unsigned int posx; + unsigned char cntNum; + unsigned char width; + unsigned char height; + unsigned char VarNum:3; //1 + unsigned char AutoRefresh:1; + unsigned char AutoCount:1; + unsigned char InkColor:1; + unsigned char RecFromHost:1;// RecFromHost + unsigned char DisplayUpdate:1; //变量更新标志 + unsigned char type; //0-DataMatrix, 1-QRCode,2-BAR + unsigned long counter; + char text[100]; + char textCnt[10]; + char text2[80]; + char text3[8]; + unsigned short CntInc; + unsigned char barCodeFlag:1;//条形码 +}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申请而来还是直接引用别人的指针,主要是影响到指针的释放 +}QRvars_t; + +/* 分段计米相关设定 */ +typedef struct { + unsigned char cnt1GroupCnt; //总共组数 + struct{ + int StartValue; + int EndValue; + //int StepValue; + //int RepeateValue; + int LoopTimes; + }cnt1GroupSettings[MAX_CNT1_GROUPS_NUM]; +}Cnt1ByGroup_t; +typedef struct { + unsigned char cnt2GroupCnt; //总共组数 + struct{ + int StartValue; + int EndValue; + //int StepValue; + //int RepeateValue; + int LoopTimes; + }cnt2GroupSettings[MAX_CNT1_GROUPS_NUM]; +}Cnt2ByGroup_t; + +typedef struct +{ + int type;// + int width; + int height; + int startColPos; + int endRowPos; + int startRowPos; + unsigned int year; // + unsigned char month; + unsigned char day; + unsigned char separate[3]; + unsigned char bold; + unsigned char letterSpace; + unsigned char splitMode;// '-','/',年05月24日 + //unsigned int addDays; // + //--------------------- + char text2[20]; + //bool original; //表示当前dat是通过calloc申请而来还是直接引用别人的指针,主要是影响到指针的释放 +}EXPIRYVAR_t; +// 打印参数 +/* +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 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 char lineEndAdjustPointCnt; //18 + unsigned char lineEndAdjustPointDelay; //19 + short lastLineEndPointFixedDACValue; //1a 1b + unsigned char extClearAllCntEnable; // 1c --- 通过外部(同步器或电眼)清零 0x3a + unsigned char HighVoltageAmplitude; //0x1d 字高// 字高电压系数 + unsigned char mmmee[2]; + //unsigned short timeTriggerPrintDelayMsH:16; // no use 1e,1f + + // 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 + + unsigned char rrr_nc[1]; // 0x4d + unsigned short synPulsePerMmX8 ;// 0x4e~4f + + + 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 synTriggerPrintLenRatio; + + int timeTriggerPrintMode; + int printDelayMs; + int sysTriggerPrintMode; //在同步模式下选择按字宽或时喷印比例进行打印 + int synCharWidthRatio; + int rowSequenceMode; + int pointVoltageAdjustPos; + int PointVoltageAdjustValue; + + int synClearCntInEleEyeMode; //在电眼触发模式下通过同步器清零 + int eleEyeClearCntInSynMode; + int reducedPixelNumRatio; + int lastLineEndPointFixedValue; //对高压部分点的修正 + int pulseOutputEnable; // 脉冲使能输出 + int productCntPerOutputPulse;// + + 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; +#ifdef COUNTER1_BY_GROUP //分段计米 + Cnt1ByGroup_t Cnt1ByGroup; +#endif + EXPIRYVAR_t ExpiryVar; //有效期变量 2018.5.24 + EXPIRYVAR_t CurDateVar; + EXPIRYVAR_t ClassVari; + int ExpiryDay; //有效期天数 + //unsigned char ExpirySplitMode; + + int cnt4CurrValue; + int HiddenConditionValue; + bool HiddenFuncEnable; + bool HiddenMeterEnable; + +// int cnt3EndValue; +// int cnt3StartValue; +// int cnt3StepValue; +// int cnt3RepeateValue; + int cnt3CurrValue; + int textEditLineSpace; + unsigned char speedoverPaushPrint; // 3速度超速不打印标志 +}printPara_t; +*/ + + +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 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 char extClearAllCntEnable; // 1c --- 通过外部(同步器或电眼)清零 0x3a + + 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 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 short synPulsePerMmX8 ;// 0x4e~4f + + 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 synClearCntInEleEyeMode; //在电眼触发模式下通过同步器清零 + int eleEyeClearCntInSynMode; + int reducedPixelNumRatio; + int pulseOutputEnable; // 脉冲使能输出 + int productCntPerOutputPulse;// + + 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; + bool cnt1ByGroupEnalbe; // hlp todo 上面注释内容大概率要使用 + bool cnt2ByGroupEnalbe; +#ifdef COUNTER1_BY_GROUP /* 分段计米 */ + Cnt1ByGroup_t Cnt1ByGroup; +#endif +#ifdef COUNTER2_BY_GROUP /* 分段计米2 */ + Cnt2ByGroup_t Cnt2ByGroup; +#endif + EXPIRYVAR_t ExpiryVar; //有效期变量 2018.5.24 + EXPIRYVAR_t CurDateVar; + EXPIRYVAR_t ClassVari; + int ExpiryDay; //有效期天数 + + int cnt4CurrValue; + int HiddenConditionValue; + bool HiddenFuncEnable; + bool HiddenMeterEnable; + + int cnt3CurrValue; + int textEditLineSpace; + int textEditCharSpace; +// unsigned char speedoverPaushPrint; // 3速度超速不打印标志 +}printPara_t; + + +typedef struct { + + unsigned int printTotalColNum:16; + unsigned int printDirection:8; //[0] 上下颠倒 [1] 左右颠倒 [2] 扫描颠倒 + unsigned int reducedPixelNum:6; + unsigned int reducedPixelMode:2; + + unsigned int printRowDelay:8; + unsigned int printColDelay:24; + + unsigned char oscillatorVoltage; //0x08 + unsigned char phaseByHand; + unsigned char charBold; + unsigned char pixNumPerCol; + + unsigned int timeTriggerPrintDelayMs:16; + unsigned int photoElectricityRepeateNum:16; + + unsigned int printTriggerMode:8; //0x10 + unsigned int totalSynPulseNum:24; + + + unsigned int elecEyeTriggerInterval:32; + + unsigned short divideRatio; //0x18 + unsigned char lineEndAdjustPointCnt; // 0x1a + unsigned char lineEndAdjustPointDelay; // 0x1b + unsigned char enableChargeFullTime; // 0x1c + unsigned char timeTriggerPrintDelayMsH:8; // 0x1 + //unsigned char phaseGroupCount:8; // 0x1 + short lastLineEndPointFixedDACValue; + + unsigned int synNumPerCol:16; //0x20,小数位占8位 //每列同步起脉冲数 + unsigned int dotNumPerCol:16; // 平均每列的像素点(减去冗余的点后) + 列延迟(即打印设置界面中的字体宽度printColDelay) + + unsigned short phase_detect_high_cnt; // + unsigned int phase_detect_pulse_num:4; // 检测个数 + unsigned int phase_detect_voltage:12; // 相检电压阀值 + + unsigned short maxHighVoltageDAC;//0x28 + + unsigned short phaseDetectDelay; //相检延迟 //可以认为是相检的间隔, 以墨点为单位 + short phaseShift; // 相位偏移 + unsigned char HighVoltageAmplitude; + unsigned char magicNum; + + unsigned short productNumToGenerateOutputPulse; //产生一个脉冲所需的产品计数个数//0x30 + unsigned short outputPulseDelayMs; + unsigned short septalPostion; //设置的隔膜位置 + unsigned short blinkLightPeriod; //频闪灯周期,以墨点为单位 + unsigned short eleEyeTriggerPrintDelay; // 0x38 + unsigned char extClearAllCntEnable; //通过外部(同步器或电眼)清零 0x3a + unsigned char FullColFixDacVal; // 0x3b + // 0x3C 0x3D 3E 3F USEING + + alterPrint_t alterPrint; // 8Byte + + unsigned char Cnt1NatureValue:1; //自然数 + unsigned char eleEyeTriggerSynPrintEn:1; //电眼触发的同步打印使能 + unsigned char autoSynSpeedEn:1; //同步打印自动模式 + unsigned char newAmplifyPlate:1; + unsigned char SynCntEn1:1; // 不打印走米 + unsigned char Vol1of8En:1; //打印优化 + unsigned char eleEyeReTrigDisable:1; // 6 + unsigned char set_HVData_Flag:1; // + unsigned char mode0211:1; //0211 模式 + unsigned char synchronizorActType:2; // 0b00:同步器正反转打印; 0b01:同步器只正转打印; 0b10:同步器只反转打印 + unsigned char cnt1ResetToInitValue:1; // 电眼复位时,选择复位到起始值还是当前值 + unsigned char flagOfFastMode:1; + unsigned char rrr_nc0:1; // 0x4D :[5:5] + unsigned char printNumPoint:1; // 0x4D :[6:6]计数器1打印小数点使能位 + unsigned char rrr_nc:1; // 0x4D :[7:7] + + unsigned short synPulsePerMmX8 ;// 0x4e~4f + /*-------------------------------cut line--------------------------------------*/ + + 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; // 每100mm同步器脉冲数 + 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 temperature;//喷头温度 + int viscosity; + int viscosityAdjust; + bool stopCounterMeterAfterFault; + bool suspendAfterPhaseFault; + int oscillatoFreq; + int synTriggerPrintLenRatio; + char lastOpenedFileName[100]; + int phaseHighLowRatio; //相位高电平占空比 + int phaseDetectVol; //因为和实际的值有一个转换过程,所以用此变量做中转 + int oscillatorFreqFix; + unsigned int totalProductCnt; + int timeTriggerPrintMode; + int printDelayMs; + int sysTriggerPrintMode; //在同步模式下选择按字宽或时喷印比例进行打印 + int synCharWidthRatio; //字符宽度 或 喷印比例 触发设置界面 + int rowSequenceMode; + int pointVoltageAdjustPos; // 点距电压调整位置 + int PointVoltageAdjustValue; //点距调压调整值, 超过调整位置就需要增加充电电压 + int RecycleWarnAction; + int powerOffAfterPhaseFault; + int synClearCntInEleEyeMode; //在点眼触发模式下通过同步器清零 + int eleEyeClearCntInSynMode; // CNT2 D5=0选择电眼复位 D5=1选择电眼加1 ; + // CNT1 D4=0选择电眼复位 D4=1选择电眼加1 ; + // D2D1D0 =00 禁止电眼操作,01 电眼复位,打印完成,10 电眼立即复位 + + int fontPixelSize; //用来记录上一次设置的字体大小 + //int septalPostion; + int mixValveisNewVersion; //混和阀是否是新管路 + int lastLineEndPointFixedValue; //对高压部分点的修正 + int textEditLineSpace; + int textEditCharSpace; + int industryIndex; + int recommendedPrintSpeed; + int pulseOutputEnable; + int productCntPerOutputPulse; + int reducedPixelNumRatio; + int EditMode; //编辑模式 0 txt , 1 dot, 2 场景 + //int nncc:31; + int AlterMode; // 交替状态 0,1,2 + int SynCntEn:1; + int ResetProductCntEn:1; // 复位产品计数器 + int ResetAllProductCntEn:1;// 复位总产品计数器 + int HVFaultCloseEn:1;// 高压故障关回收槽 + int MirrABCEnable:2; // 0 无镜像,1 水平,2 垂直 + int checkSpace:1; //使用空列 + int varLenEn:1;// + int ExtScreenType:3;// 外接屏类型 + int ExtMeterType:3; // 显示屏显示米数类型 + int unc:15; // + int FullColFixVal; + unsigned char ReadFileErrorCnt; // + unsigned char PowerOnErrorCnt; // + unsigned char NozzleType; // 0 -- 小,1- 大 + unsigned char NNCC; //预留,这样可以保证每次的配置文件大小一致 + short varLen; // 头部可变长 + short varLen1; // 尾部可变长 + unsigned short OuputPulseCol; //桂林客户,精准控制输出脉冲的位置,精确到打印的列数-->现在用作充电脉宽 + // short reverse; //留,这样可以保证每次的配置文件大小一致 + unsigned char diameter:3; // 喷嘴直径,0->50um; 1->60um; 2->70um + unsigned char Reciclar:1; + unsigned char ResetSendData:1; + unsigned char reverse:2; + bool isCheckInsertTime; + calandar_and_dat_t calandar_and_dat; + // 添加参数 + unsigned char adjVolDacRate[40]; //增加了DAC电压间隔调整比例 + + bcOption_t bcOption; + qrOption_t qrOption; + unsigned short eleMaskTime; //0x3C,3D 电眼锁定(屏蔽)间隔ms + unsigned short AltMirrorGap;// 镜像打印间隔 Mirror image alternation + long long openInkLineTime; //记录墨线开关时间 136年 以秒为单位 + long TrunOnPowerCnt; // 开机次数 20151218 +// int varLenEn:1;// +// unsigned char varLen; // 可变长 + unsigned short headLen; + unsigned short endLen; + int ExpiryDay; //有效期天数 + unsigned char ExpirySplitMode; + quint16 diaphramOffset; // 隔膜位置偏移,当隔膜位置低于(设定的隔膜位置-偏移),主墨泵就开启 + unsigned char gearPumpEnable:1; + + quint16 gearPumpValue; + quint16 steal_dac_row; + quint16 phaseHighCnt; + int reserved2[13];// 23 -1预留,这样可以保证每次的配置文件大小一致 + unsigned short reverse3; + bool isCheckBarDate; //条形码加入日期 + bool isCheckBarTime; //条形码加入时间 + bool cnt1ByGroupEnalbe; + bool cnt2ByGroupEnalbe; +#ifdef COUNTER1_BY_GROUP /* 分段计米 */ + Cnt1ByGroup_t Cnt1ByGroup; +#endif +#ifdef COUNTER2_BY_GROUP + Cnt2ByGroup_t Cnt2ByGroup; +#endif + quint16 printed_adj_dac[40]; + quint16 printed_continue_col_dac[40]; + quint16 printed_full_col_dac[40]; + quint16 dacScale; + unsigned int pulse_sinal_value:16; + + int cnt3EndValue; + int cnt3StartValue; + int cnt3StepValue; + int cnt3RepeateValue; + int cnt3CurrValue; + stru_counter3 Counter3; + stru_counter4 Counter4; + int cnt4CurrValue; + int HiddenConditionValue; + bool HiddenFuncEnable; + bool HiddenMeterEnable; + + //quint16 Json_device_code; + unsigned char Json_IP[4]; + quint16 Json_server_port; + bool charWidthSetEnable; + bool isCheckMagnet;//检测喷头盖磁铁 + bool isRemoveCode;//不显示二维码 + bool isCheckPrintLight;// + bool isEnableGetDataButton;//使能获取数据按钮 + bool isRemoveDigitCode;//不显示数字码 + bool isCntSaveStateValue;//计数器保存关机值 + bool isCheckBarCodeAddText; + bool isCnt1ShowNumPoint; //计数器1是否显示小数点 + char FanTemperature; + char Json_device_code[10]; + unsigned char speedoverPaushPrint:1; // 速度超速不打印标志 + bool flagOfModuleDecimal; + bool flagOfModuleHide; + bool flagOfstepPrint; + bool flagOfCnt1GroupDisp; + bool flagOfReclaimPumEnable; + unsigned int gearPumpSpeedAlarm; + char comport[20]; + bool flagOfContinueHeat; + unsigned int heatTime; + bool RFIDSolventWarn; + int RFIDSolventWarnMixCnt; + bool RFIDInkWarn; + bool flagOf5Row5Dot; + unsigned int inkWarnDate; + unsigned int inkWarnTime; + unsigned int solventWarnDate; + unsigned int solventWarnTime; + unsigned short moduleSelection; + bool flagOfAdjustVoltage; + unsigned short currSelectVolPara; + + int airPushDurationSec; // 排气时间,单位 秒 + /* */ + // 1108Bytes +}sysPara_t; + +typedef struct +{ + quint8 header[32]; + qint16 pixel_full_table[40]; + qint16 pixel_1_table[40]; + qint16 pixel_2_table[40][2]; + qint16 pixel_3_table[40][3]; + qint16 pixel_4_table[40][4]; + qint16 pixel_para_table[16]; + qint16 pixel_5_table[40][5]; + qint16 pixel_gap_table[48][5]; + qint16 pixel_pre_table[16][5]; + qint16 pixel_c_table[32][4]; +}voltePara_t; + +typedef struct +{ + quint16 matchTotalTableDACArray1[64]; + quint16 matchTotalTableDACArray2[64][2]; + quint16 matchTotalTableDACArray3[64][3]; + quint16 matchTotalTableDACArray4[64][4]; + quint16 matchTotalTableDACArray5[64][5]; + quint16 matchContinousDACArray[64]; + qint8 matchTotalDiffVoltageValue[50][64]; + quint8 matchExtraLineDACArray[64]; + qint8 matchFirstOnePointExtraLineDACArray[64]; + qint8 matchAdjustParaDACArray[8]; + qint8 matchGiantPointVoltageValue[16][64]; + quint16 matchTotalTableDACArrayFirst1[64]; //调一列的第一个单点 +}voltePara_t_25Dots; +typedef struct +{ + quint8 header[32]; + qint16 pixel_full_table[48]; + qint16 pixel_steal_table[48]; + qint16 pixel_head2_table[48]; + qint16 pixel_head3_table[48]; + + qint16 pixel_1_table[48]; + qint16 pixel_tail2_table[48]; + + qint16 pixel_2_table[48][2]; + + qint16 pixel_3_table[48][3]; + + qint16 pixel_4_table[48][4]; + + qint16 pixel_para_table[16]; + + qint16 pixel_5_table[48][5]; + qint16 pixel_continous_table[48]; + qint16 pixel_gap_table[48][5]; // kongdian + qint8 pixel_big_table[8][8]; + qint16 pixel_gap_post_3dot_table[48][5]; // 3 kongdian + + 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 +{ + unsigned int PrintInkDots; + unsigned int InkEmptyCnt; + unsigned int SOLVEmptyCnt; + unsigned int InkRFIDCnt; + unsigned int SOLVRFIDCnt; + unsigned short solventNumber; +}RFIDPara_t; + +#define MDT 0 +#define QR 1 +#define BAR 2 +#define QR_NETWORK 3 // 网络二维码 + +#define MAX_SELF_CHECK_CNT 6000 //60S,以10ms为单位s + +#if defined(BNS_AARCH64_DEBUG) || defined(FPGATEST) +#undef MAX_SELF_CHECK_CNT +#define MAX_SELF_CHECK_CNT 1000 +#endif + +#define MIX_VALVE_OPEN_DELAY 90 //混合阀打开的时间 +#define RECYCLE_WARN_DELAY 50 //回收故障延时,以100ms为单位 +#define MAX_VISCOSITY_WORK_TIME 500 //10ms为单位 +#define MAX_MAIN_INK_PUMP_RUN_TIME 1000 //10s +#define MAX_HEATER_TIME 3000 //300s +#define MAX_COMPRESS_PUMP_RUN_TIME 6000 //60 + +#define FPGA_MAGIC_NUM_AFTER_CONF 0x73 +#define MAX_CYCLEVALVE_OPEN_TIME_AFTER_SWITN_OFF 280 // 以10ms为单位 230 + + + +#define FPGA_STATUS_BYTE_NUM 0x44 + +#define MAX_PRINT_COL_NUM_Wide (1000*8 - 1) +#define MAX_PRINT_COL_NUM_Normal (500*8 - 1) +#define MAX_PRINT_ROW_NUM 40 +#define MAX_PRINT_ROW_BYTE_NUM 5 +#define BLANK_COL_NUM 3 //信息前空3列 +#define RECLAIM_PUMP_FULL_SPEED_CNT 5300 //5s钟 +#define MAX_VARI_NUM 8 + + +#define CALANDAR_YEAR 0 +#define CALANDAR_MONTH 1 +#define CALANDAR_DAY 2 +#define CALANDAR_WEEK 3 +#define CALANDAR_HOUR 4 +#define CALANDAR_MINUTE 5 +#define CALANDAR_SECOND 6 +#define CALANDAR_CNT1 7 +#define CALANDAR_CNT2 8 +#define CALANDAR_CNT3 13 +#define CALANDAR_XDAY 14 +#define CALANDAR_CNT4 15 +#define RANDOMNUM 12 +#define EXPIRYDATE 80 +#define CURDATE 81 +#define CURCLASS 82 + +#define MAX_INK_EMTYTIME 86400//10800 // s 3hour 3*60*60 = 10800s +#define MAX_SOLV_EMTYTIME 21600//10800 // s 3hour 3*60*60 = 10800s +#define MAX_INK_RFIDTIME 86400//10800 // s 3hour 3*60*60 = 10800s +#define MAX_SOLV_RFIDTIME 7200//21600//10800 // s 3hour 3*60*60 = 10800s +#define MAX_INK_DOTS 2300000000//PrintInkDots +#define MAX_SOLV_OPENNUM 400//OpenNumber +#define MAX_INK_SOLV_EMTYTIME 10800 // s 3hour 3*60*60 = 10800s + +#define AUTOCLEAN_STATUS_NONE 0 +#define AUTOCLEAN_STATUS_STEP1 1 +#define AUTOCLEAN_STATUS_STEP2 2 +#define AUTOCLEAN_STATUS_STEP3 3 +#define AUTOCLEAN_STATUS_STEP1_TIME 60 +#define AUTOCLEAN_STATUS_STEP2_TIME (60*3) +#define AUTOCLEAN_STATUS_STEP3_TIME (5) + +typedef struct { + int type; + int digitalNum; + int width; // 字模的宽度 + int height; // 字模的高度 + int startColPos; + int endRowPos; + int startRowPos; + int bassAddr; // 字模的地址, 从0开始,不同类型会一直增加 + int currVal; + int bold; + int letterSpace; + //int chartype;// 字体类型:0 常规,1 左横,2 右横, 4 倒立(Nc) + //--------------------- + unsigned char *dat; //指向申请内存的空间 生成字模数据 + int datWidth; //datWidth * datHeight为像素的数目,申请空间的大小为datWidth*rowByteNum; + int datHeight; // 变量的高度 + int rowByteNum; + bool original; //表示当前dat是通过calloc申请而来还是直接引用别人的指针,主要是影响到指针的释放 + char fontname[128]; // 字体名 +}vars_t; + + +typedef struct{ + + unsigned int unUse1:16; + unsigned int unUse2:16; + + unsigned int unUse3:16; + unsigned int unUse4:16; + + unsigned int unUse5:16; + unsigned int unUse6:16; + + unsigned int unUse7:16; + unsigned int unUse8:16; + + + unsigned int maginNum:8; //0x10 + + unsigned int unUse9:8; + + unsigned int flightTm:16; + + unsigned int phase:16; + + unsigned int unUse10:16; + + unsigned char phaseChargeResult[8]; + +/* + unsigned short ink_dot_num:6; //飞过相检头上的墨点数 0x20 + unsigned short detect_phase_error:1; + unsigned short flight_tm_error:1; + unsigned short synPulseCntPer1sH:8; + unsigned short synPulseCntPer1s:16; +*/ + unsigned int ink_dot_num:6; //飞过相检头上的墨点数 0x20 + unsigned int detect_phase_error:1; + unsigned int flight_tm_error:1; + unsigned int synPulseCntPer1s:24; + + unsigned int productCnt; + + unsigned int synColDelay:16; //0x28 + unsigned char phasePosEdge; //0x2a + unsigned char phaseNegEdge; //0x2b + + unsigned int synTotalPulseCnt; //0x2c~2f + + unsigned int warm_InkPump:1; // 0x30 + unsigned int ink_Ctrl:1; + unsigned int adj_warn:1; // 自动调速状态 NC 20140305 + unsigned int lesslen_warn:1; // 喷印不完整报警 20140305 + unsigned int wait_phdetect_ok:1; // 等待相检完成 V3W 版还没有对此作修改。 原V6S的参数 + unsigned int set_HVData_Flag:1; // 设置高压包电流标志 + unsigned int dummy:2; //FPGA回传是否正在打印 20260306 + unsigned char unUse11; // 0x31 130113 + unsigned short unUse12; // 0x32 33 电机当前开关时长(s) 130113 + unsigned char read_nc11[2]; //34,35 // no use + 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 volGap_pulse_num:24; // + unsigned int AlterMode:8; // 交替状态 0,1,2; //0x43 共 0x44个字节 + unsigned int VREF:16; + unsigned int MOTOR_ISEN:16; + + unsigned int TEMP_ADIN:16; + unsigned int HV_DETOUT:16; + + unsigned int AD_FIXED:16; + unsigned int SEPTAL_POSITION:16; + + unsigned int PRESSURE:16; + unsigned int AD_UNUSED:16; + unsigned int statWarn:8; //0x11 + unsigned int viscosity:16; + unsigned int mainPumpWarm:8; + unsigned char reclaimTankstatus; // 0x31 130113 + unsigned short curr_reclaimTankTime; // 0x32 33 电机当前开关时长(s) 130113 + //unsigned char read_ncba[6]; // 不用 3C + + + /*----------------------------cut line----------------------------*/ + unsigned short phaseDetectHighTm[64]; //每一个相位的高电平时间 + + unsigned char RandomDigitNum;// 随机码长度 + unsigned char RandomBackCnt; // 0不需要备份,>0需要备份 + + bool isPumpValveControledByHand; //0x20 + bool isCleanUp; + int reclaimCloseCnt; + bool selfCheckDone; + int selfCheckCnt; + int viscosityDelayCnt; + int viscosityFaultCnt; + int rWarnViscoReady; + int viscosityMaxFaultCnt; + int reclaimPumpFullSpeedCnt; //全速开 + bool mainInkPumpError; //主墨泵故障 + int mainInkPumpRunTmCnt; + bool compressPumpError; + int compressPumpRunTmCnt; + int currPrintCol; + int currPrintRow; + unsigned char printDat[MAX_PRINT_COL_NUM_Wide*MAX_PRINT_ROW_BYTE_NUM]; + unsigned char printDat_Normal[MAX_PRINT_COL_NUM_Normal*MAX_PRINT_ROW_BYTE_NUM]; + int currAlterPrintCol; + int currAlterPrintRow; + // unsigned char printAlterDat1[MAX_PRINT_COL_NUM*MAX_PRINT_ROW_BYTE_NUM]; + // unsigned char printAlterDat2[MAX_PRINT_COL_NUM*MAX_PRINT_ROW_BYTE_NUM]; + int delay10ms; + int delay100ms; + int delay1s; + int delay10s; + int delay100s; + int viscosityFault;// 0 正常,1-粘度值高,2-粘度值低 + int lastViscosityFault; //用来记录上一次的粘度错误状态 + int lastStatWarn; + int lastPhaseFault; + int phaseErrorCnt; + + /* Yang */ + int lastRecycleWarn; //记录上一次的回收故障状态 + int RecycleWarnCnt; + int LightUpCnt; + + bool gearPumpRunStopFlag; + unsigned short gearPumpRunSpeed; //齿轮泵转速 + int visocityValueOverflowNum; /*记录粘度溢出次数*/ + unsigned int lastProductCnt; + unsigned int lastSynPulseCntPer1s; // + int lastSynColDelay; + int configDone; //配置完成 + unsigned int fpgaVersionNum; + unsigned char FPGAChipType; //VX4区分E15和E22芯片,VX5不需要 + bool detectHighVoltageAppending; //检测高压 + bool detectedValidHighVoltage; //是否检测到高压 + unsigned int detectHighVoltageCnt; //检测高压的次数 + int lastwarmInkPump; + int variNum,QRvariNum,BCvariNum,ExpiryVarNum,ExpiryDispUpdate,CurrDateVariNum,classVariNum; + vars_t vars[MAX_VARI_NUM]; + //QRvars_t QRvars[MAX_QVARI_NUM]; + calandar_and_dat_t calandar_and_dat; + + /*---------------回收槽控制相关----------------------*/ + int currReclaimTankPos; + int currReclaimOperationCnt; + bool reclainTankReachEnd; //完全打开 + bool reclainOpenAppending; + bool reclainCloseAppending; + bool canRunAirPushing; + + int currMsCnt; + /*---------------------------------------------*/ + bool cnt1CurrentValueInitDoneFlag; // 将这两个值设为false,会另cnt1和cnt2的当前值初始化 + bool cnt2CurrentValueInitDoneFlag; // + /*----------------------------------------------*/ + /*----------------------------------------------*/ + bool RedLightOnFlag; + bool GreenLightOnFlag; + bool YellowLightOnFlag; + + bool beeperOnFlag; + /*--------------------------------------------*/ + int heaterONTimeCnt; //连续加热有时间限制 + + bool lostCommuFlag; //失去通信 + + bool isPrinting; // + + int cycleValveOpenCntAfterSWintOff; //墨线关掉的时候关循环阀的时间 + int cycleValveOpenCntAfterSWintOn; //墨线开启的时候开循环阀的时间 + + //2019/10/26 + bool autoCtlReclaimAfterSWintOff; + int reclaimOpenCntAfterSWintOff; //墨线关掉的时候关回收阀的时间 + bool byHandStore; // 为了控制主墨泵, 保存当前是否在手动状态,然后切换手动状态, + + bool powerOffAppending; //按下快速关机 + + bool reclaimTankBlockedAppending; //回收槽被卡住 + int airPushingOnTime; // 排气的运行时间 + bool airPushing; // 开回收槽执行排气动作 + bool airPushingDone; // 开回收槽执行排气动作完成 + + bool DACDisable; //相位故障,DAC被disable + bool WorkTimeOut; + bool detectBestOscillatorFreqAppending; //检测最佳晶振频率 + bool detectBestOscillatorVoltageAppending; //检测最佳晶振频率 + int currentDetectBestOscillatorCnt; + int longestPhaseHightLevelTm; //最长的相位高电平时间 + int detectedBestOscillatorFreq; // + int detectedStartOscillatorFreq; + int detectedBestOscillatorVoltage; // + int releaseValveDelayCnt; //开泄压阀后立刻关掉,等一定间隔在检测 + int reclaimBlockedCnt; + bool releaseValveOpenApending; + int powerOffAfterPhaseFaultAppending; + unsigned int pressureOverFlowCnt; + 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; // + + 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 int cnt2GroupCurrentLoop; //分段计米 计数器2当前第几次循环 + unsigned char cnt1GroupRunningIndex; //分段计米 计数器1当前第几次段 + unsigned char cnt2GroupRunningIndex; //分段计米 计数器2当前第几次段 + 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; + bool flagOfAbnormalStatus;//如果在打印过程中死机,重启后为异常状态 + bool flagOfPowerOnMode;//0为正常开机,1为24小时自动开机 + unsigned int waitPowerOffTime; +}sysStatus_t; + +#include + +/* input registers */ +typedef struct { + uint16_t printFinishFlag;//(0) + uint16_t orderCode;//顺序号(1) + + uint8_t usedFileName[100];//(2-51) + uint16_t printStatus;// 1:正在打印, 2:暂停打印, 3:停止打印(52) + uint16_t statWarn;//(53) + calandar_and_dat_t curCalendarAndDate;//(54-79) + uint32_t mbCurrPrintRow;//(80-81) + uint32_t mbCurrPrintCol;//(82-83) + uint32_t productCnt; //产品计数器(84-85) + uint16_t receiveEnbleFlag;//(86) +}ModbusPrintStatus; + +/* holding registers */ +typedef struct { + uint8_t QRcode_buf[110]; //存二维码的buf(0-54) + uint16_t printCommand; // 1:开始打印, 2:暂停打印, 3:停止打印(55) + uint8_t selectFileName[100]; // 选择要打印的文件(56-105) + uint16_t faultRusume;//(106) + calandar_and_dat_t setCalendar;//(107-133) + uint32_t lineSpaceAndCharSpace; //高16作为行间距,低16位作为字符间距(134-135) + uint16_t clearProductCnt; //产品计数器(136) + uint16_t printContent;//2位数的打印内容(137) +}ModbusPrintParas; + + +/* net data */ +typedef struct { + //get data + char PrintingContent[2048]; + int ProductPlanQty; + char ProductUniqueCode[110];// 产品唯一编码 + int ProductionTask; + char QRCodeContent[110]; + int StartMetre; + bool TasdNeedConfirm; + int TaskSwitchingMode; +}JSON_DATA; + +class SysPara{ + //Q_OBJECT +public : + + 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; + 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: + +}; + +#endif /* SYSPARA_H_ */ diff --git a/SystemSetting.cpp b/SystemSetting.cpp index 4998e92..3297555 100644 --- a/SystemSetting.cpp +++ b/SystemSetting.cpp @@ -1,847 +1,847 @@ -#include "SystemSetting.h" -#include "ui_systemsetting.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include "LogInfo.h" -#include "myinclude.h" -#include "QInputDialog" -#include "dlgmutilanguage.h" -//#define FINDVOL -#include "InputMethod.h" - -int convertFreq(int index){ -// qDebug()<<"index="<setupUi(this); - progressBar.setGeometry(200,200,300,40); //将其放在最中间 - progressBar.hide(); - timer = new QTimer(); - connect(timer, SIGNAL(timeout()), this, SLOT(timerHandler())); - timer2 = new QTimer(); - connect(timer2, SIGNAL(timeout()), this, SLOT(timerHandler2())); - timerAuto = new QTimer(); - connect(timerAuto,SIGNAL(timeout()),this,SLOT(autoControlPressure())); - enCleanUpAppendFlag=0; // 0空闲,1关开回收槽,2手动,3清洗,4恢复,5停止,6 - dialogUpateMm =new DialogAuthorization; - connect(dialogUpateMm,SIGNAL(accepted()),this,SLOT(ondialogAuthorizationAccepted())); - - - // 隐藏部分过时选项 byons@2026年5月5日 - // 频率修正, 放到更高权限里 - setFreqFixVisible(false); - - // 粘度泵动作间隔 - ui->label_18->setVisible(false); - ui->spinBoxPumpInterval->setVisible(false); - - // 隔膜位置 - ui->label_20->setVisible(false); - ui->spinBoxSeptalPostion->setVisible(false); - ui->labelSpetalPosition->setVisible(false); - - // 隔膜位置偏移 - ui->label_19->setVisible(false); - ui->comboBoxDiaphramOffset->setVisible(false); -} - -SystemSetting::~SystemSetting() -{ - delete ui; - delete timer; - delete timer2; - -} - -void SystemSetting::SystemupdateSysParaToUI(){ - updateSysParaToUI(); -} - -void SystemSetting::on_pushButtonApply_pressed() -{ - applyUIPara(); - SystemSettingLog(); - - int freq = sysPara->para.oscillatorFreqFix+ convertFreq(sysPara->para.oscillatoFreq); - sysPara->para.divideRatio = (FPGA_SYS_HZ/freq)/2; - sysPara->devOp->setDivideRatio(sysPara->para.divideRatio); -} - -void SystemSetting::SystemSettingLog(){ - - qDebug()<spinBoxOscillatorVoltage->value()); - qDebug()<spinBoxHighVoltageLevel->value()); - qDebug()<spinBoxReclaimPumpPower->value()); - qDebug()<ViscosityAdujstSelect->currentIndex()); - qDebug()<spinBoxPumpInterval->value()); - qDebug()<spinBoxReclaimTankTime->value()); - qDebug()<spinBoxSeptalPostion->value()); - qDebug()<comboBoxDiaphramOffset->currentIndex()); - qDebug()<comboBoxEditMode->currentIndex()); - qDebug()<spinBoxPressure->value()); - qDebug()<spinBoxVIscosity->value()); - qDebug()<spinBoxTemperature->value()); - qDebug()<comboBoxOscillatorFreq->currentIndex()); - qDebug()<spinBoxOscillatorFreqFix->value()); - qDebug()<comboBoxDiameter->currentIndex()); -} - -void SystemSetting::setFreqFixVisible(bool visible) -{ - ui->label_13->setVisible(visible); - ui->spinBoxOscillatorFreqFix->setVisible(visible); - ui->label_15->setVisible(visible); -} - -void SystemSetting::updateSysParaToUI(){ - if(sysPara){ - ui->spinBoxHighVoltageLevel->setValue(sysPara->para.highVoltageLevel); - ui->spinBoxOscillatorVoltage->setValue((sysPara->para.oscillatorVoltage)); - ui->spinBoxPressure->setValue(sysPara->para.pressure); - ui->spinBoxPumpInterval->setValue(sysPara->para.viscosityPumpInterval); - ui->spinBoxReclaimPumpPower->setValue(sysPara->para.reclaimPumpPWMWidth); - ui->spinBoxReclaimTankTime->setValue(sysPara->para.reclaimTankTime); - ui->spinBoxTemperature->setValue(sysPara->para.temperature); - ui->spinBoxFanTemperature->setValue(sysPara->para.FanTemperature); - ui->spinBoxVIscosity->setValue( sysPara->para.viscosity); - ui->ViscosityAdujstSelect->setCurrentIndex(sysPara->para.viscosityAdjust); - ui->comboBoxOscillatorFreq->setCurrentIndex(sysPara->para.oscillatoFreq); - ui->spinBoxOscillatorFreqFix->setValue(sysPara->para.oscillatorFreqFix); - ui->spinBoxSeptalPostion->setValue(sysPara->para.septalPostion); - ui->comboBoxDiameter->setCurrentIndex(sysPara->para.diameter); - ui->comboBoxDiaphramOffset->setCurrentIndex(sysPara->para.diaphramOffset/5-1); - - ui->spinBoxAirPushDuration->setValue(sysPara->para.airPushDurationSec); - - if(sysPara->para.EditMode>SCENE) - sysPara->para.EditMode=TXTFILE; - ui->comboBoxEditMode->setCurrentIndex(sysPara->para.EditMode); - } -} - - - -extern bool gearPumpRunNormalFlag; - -void SystemSetting::applyUIPara(){ - if(sysPara){ - sysPara->para.highVoltageLevel = ui->spinBoxHighVoltageLevel->value(); - sysPara->para.oscillatorVoltage = ui->spinBoxOscillatorVoltage->value(); - sysPara->para.pressure = ui->spinBoxPressure->value(); - gearPumpRunNormalFlag = false;//重新设置压力标志设置 - sysPara->para.viscosityPumpInterval = ui->spinBoxPumpInterval->value(); - sysPara->para.reclaimPumpPWMWidth = ui->spinBoxReclaimPumpPower->value(); - sysPara->para.reclaimTankTime = ui->spinBoxReclaimTankTime->value(); - sysPara->para.temperature = ui->spinBoxTemperature->value(); - sysPara->para.viscosity = ui->spinBoxVIscosity->value(); - //sysPara->para.viscosityAdjust = ui->spinBoxViscosityAdjust->value(); - sysPara->para.viscosityAdjust = ui->ViscosityAdujstSelect->currentIndex(); - sysPara->para.oscillatoFreq = ui->comboBoxOscillatorFreq->currentIndex(); - sysPara->para.oscillatorFreqFix = ui->spinBoxOscillatorFreqFix->value(); - sysPara->para.EditMode = ui->comboBoxEditMode->currentIndex(); - sysPara->para.diameter = ui->comboBoxDiameter->currentIndex();// qDebug()<<"EditMode1"<para.EditMode; - int freq = sysPara->para.oscillatorFreqFix+ convertFreq(sysPara->para.oscillatoFreq); - - if(freq > 0){ - sysPara->para.divideRatio = (FPGA_SYS_HZ/freq)/2; - } - else { - QMessageBox::critical(this,tr("错误"),tr("实际频率不能为%1").arg(freq)); - } - sysPara->para.FanTemperature = ui->spinBoxFanTemperature->value(); - sysPara->para.septalPostion = ui->spinBoxSeptalPostion->value(); - quint16 diaphramOffset = 5*(ui->comboBoxDiaphramOffset->currentIndex()+1); - sysPara->para.diaphramOffset = diaphramOffset; - - sysPara->para.airPushDurationSec = ui->spinBoxAirPushDuration->value(); - - //sysPara->para.mixValveisNewVersion = ui->radioButtonMixValveNewVersion->isChecked(); - if(sysPara->devOp->writeFpgaPrintPara() != -1){ - QMessageBox::information(this,tr("提示"),tr("应用成功")); - } - emit changeEditMode(sysPara->para.EditMode); - //qDebug()<<"EditMode"<para.EditMode; - } -} - -void SystemSetting::updateSysStatusToUI(){ - if(sysPara){ - ui->pushButtonHighVoltageData->setEnabled( sysPara->status.currReclaimTankPos <5 ); - //ui->pushButtonHighVoltageData->setEnabled( !sysPara->status.isPrinting); - ui->spinBoxPressure->setEnabled( !sysPara->status.isPrinting); - - ui->labelHighVoltageValue->setText(QString::number(sysPara->status.HV_DETOUT) + "/" + QString::number(sysPara->para.maxHighVoltageDAC)); - //ui->labelHighVoltageValue->setText(QString::number(sysPara->status.HV_DETOUT) + "/" + "600");//FPGA那边已固定600 - ui->labelMotorCurrent->setText(QString::number(sysPara->status.MOTOR_ISEN)); - ui->labelPressure->setText(QString::number(sysPara->status.PRESSURE)); - ui->labelTemperature->setText(QString::number(sysPara->status.TEMP_ADIN/4)); - ui->labelPulseCounter->setText(QString::number(sysPara->status.synTotalPulseCnt)); - //ui->label_PulseCounterZero->setText(QString::number(sysPara->status.xor_sync.sync_counter_at_zero)); -// if( sysPara->status.viscosityFaultCnt || sysPara->status.rWarnViscoReady ) -// sysPara->status.viscosity = 0;//sysPara->status.rWarnViscoReady - ui->labelVIscosity->setText(QString::number(sysPara->status.viscosity)); - ui->labelReclaimTankCloseTime->setText(QString::number(sysPara->status.currReclaimTankPos/10)); - //ui->labelTotalPulseNum->setText(QString::number(sysPara->status.synTotalPulseCnt));//不需要显示 - ui->labelSpetalPosition->setText(QString::number(sysPara->status.SEPTAL_POSITION)); - if(sysPara->para.gearPumpEnable) - { - setSpinBoxPressureMaxValue(900); - } - else - { - setSpinBoxPressureMaxValue(5000); - } - if(!sysPara->para.isCheckMagnet) - { - ui->pushButtonCleanUP->setEnabled( (sysPara->status.currReclaimTankPos<70) && (sysPara->status.statWarn & WARN_STATUS_HDINT)); // sysPara->status.currReclaimTankPos - } - else - { - ui->pushButtonCleanUP->setEnabled( (sysPara->status.currReclaimTankPos<70) ); - } - if(sysPara->status.currReclaimTankPos<55 && sysPara->status.currReclaimTankPos>44 && enCleanUpAppendFlag==2) - { - if(timer2->isActive()) timer2->stop(); - enCleanUpAppendFlag=3; - sysPara->devOp->controlReclaimTankOpen(0); - emit onCleanUPNow();// start cleanup - } - else if(sysPara->status.currReclaimTankPos >0 && enCleanUpAppendFlag==4) //? - { - enCleanUpAppendFlag=5; - //sysPara->devOp->controlReclaimTankClose(1); - //ui->label_status->setText(tr("正在关回收槽......")); - } - else if(sysPara->status.currReclaimTankPos ==0 && (enCleanUpAppendFlag==5 ||enCleanUpAppendFlag==4)) //? - { - if(sysPara->status.reclaimCloseCnt)sysPara->status.reclaimCloseCnt--; - else { - sysPara->devOp->controlReclaimTankOpen(0); - timerHandler2(); - if(timer2->isActive()) timer2->stop(); - enCleanUpAppendFlag=0; - } - } - else - { - - } - } -} - -void SystemSetting::on_pushButtonCleanUP_pressed() -{ - if(sysPara){ - QMessageBox msgBox(QMessageBox::Information,tr("提示"),tr("自动清洗时间约为一分钟,然后自动停止")); - QPushButton *cleanButton; - QPushButton *cancleCleanButton; - cleanButton=NULL; - cancleCleanButton=NULL; - r_PumpValveControledByHand = false; - if( enCleanUpAppendFlag==0) cleanButton = msgBox.addButton(tr("开始清洗"), QMessageBox::ActionRole); - else cancleCleanButton = msgBox.addButton(tr("停止清洗"), QMessageBox::ActionRole); - msgBox.addButton(QMessageBox::Cancel); - msgBox.exec(); - if (msgBox.clickedButton() == cleanButton) - { - r_PumpValveControledByHand = sysPara->status.isPumpValveControledByHand; - //ui->label_status->setText(tr("正在进入手动模式......")); - sysPara->status.isPumpValveControledByHand=true; - sysPara->devOp->controlCompressPump(false); - sysPara->devOp->controlCycleValve(true); - sysPara->devOp->controlInkValve(false); - sysPara->devOp->controlInkValvePWM(false); - sysPara->devOp->controlMainInkPump(false); - sysPara->devOp->controlMixValve(false); - sysPara->devOp->controlReclaimPump(true,true); - sysPara->devOp->controlViscosityPump(false); - sysPara->devOp->controlReleaseValve(false); - - if(sysPara->para.gearPumpEnable && sysPara->para.flagOfReclaimPumEnable){ - sysPara->devOp->controlCycleValve(true); - sysPara->devOp->controlViscosityPump(true); - sysPara->devOp->controlReclaimPump(true,false); - sysPara->para.gearPumpValue = 0; - sysPara->devOp->WriteMoterPump(); - sysPara->devOp->controlInkValvePWM(false); - } - - enCleanUpAppendFlag=1;// 开始启动手动模式 - sysPara->devOp->mainInkCtrl(); - timer2->start(2000); // 暂时循环一下2s - } - else if (msgBox.clickedButton() == cancleCleanButton) { - enCleanUpAppendFlag=3; - timerHandler2(); - return ; - } - } - -} -void SystemSetting::onCleanUPNow() -{ - if(sysPara){ - emit setRunStatus(tr("正在喷嘴逆清洗......")); - if(!(sysPara->para.gearPumpEnable && sysPara->para.flagOfReclaimPumEnable)){ - sysPara->devOp->controlCycleValve(true); - sysPara->devOp->controlViscosityPump(true); - sysPara->devOp->controlReclaimPump(true,false); - } - timer2->start(60000); - } -} - -void SystemSetting::autoControlPressure(){ - emit pressureAdjust(); -} - -void SystemSetting::timerHandler2(){ - if(sysPara){ - if(enCleanUpAppendFlag==1) - { - //2s循环结束 - // sysPara->devOp->controlCycleValve(false); - // sysPara->devOp->controlReclaimPump(false,false); - if(timer2->isActive()) timer2->stop(); - // 已经进入手动模式了 - // 判断回收槽位置,并控制回收槽打开10mm以上; - enCleanUpAppendFlag=2; - if(sysPara->status.currReclaimTankPos<45) - { - sysPara->devOp->controlReclaimTankOpen(1); - //ui->label_status->setText(tr("正在开回收槽......")); - } - else if(sysPara->status.currReclaimTankPos>55){ - sysPara->devOp->controlReclaimTankClose(1); - //ui->label_status->setText(tr("正在关回收槽......")); - } - timer2->start(5500); - } - else if(enCleanUpAppendFlag==2) // 正在开回收槽 - { - if(timer2->isActive()) timer2->stop(); - enCleanUpAppendFlag=3; - sysPara->devOp->controlReclaimTankOpen(0); - emit onCleanUPNow();// start cleanup - } - else if(enCleanUpAppendFlag==3){// 清洗完成 - enCleanUpAppendFlag=4; - // emit setRunStatus(tr("清洗完成")); - sysPara->devOp->controlCycleValve(false); - sysPara->devOp->controlViscosityPump(false); - sysPara->devOp->controlReclaimTankClose(1); - sysPara->status.reclaimCloseCnt=10; - if(timer2->isActive()) timer2->stop(); - timer2->start(8300); // close reclaimTandk - if(sysPara->para.gearPumpEnable && sysPara->para.flagOfReclaimPumEnable){ - timerAuto->start(100); - } - } - else if(enCleanUpAppendFlag==4){ - emit setRunStatus(tr("清洗完成")); - if(sysPara->status.currReclaimTankPos==0){ - enCleanUpAppendFlag=0; - if(timer2->isActive()) timer2->stop(); - sysPara->devOp->controlReclaimTankClose(0); - } - sysPara->status.isPumpValveControledByHand = false; - if(timerAuto->isActive()) timerAuto->stop(); - sysPara->devOp->mainInkCtrl(); - } - else if(enCleanUpAppendFlag==5){ - if(timer2->isActive()) timer2->stop();enCleanUpAppendFlag=0; - sysPara->devOp->controlReclaimTankClose(0); - sysPara->status.isPumpValveControledByHand =false; - sysPara->devOp->mainInkCtrl(); - } - else if(enCleanUpAppendFlag==6){ - if(timer2->isActive()) timer2->stop();enCleanUpAppendFlag=0; - sysPara->status.isPumpValveControledByHand =false ; - } - else {if(timer2->isActive()) timer2->stop();} - } -} - -void SystemSetting::on_spinBoxReclaimPumpPower_valueChanged(int arg1) -{ - Q_UNUSED(arg1); - if(sysPara){ - if(sysPara->devOp->isReclaimPumpOpen()){ //在当前是开的情况下重设pwm - sysPara->para.reclaimPumpPWMWidth = ui->spinBoxReclaimPumpPower->value(); - sysPara->devOp->controlReclaimPump(true,false); - } - } -} - - - -void SystemSetting::on_pushButtonHighVoltageData_pressed() -{ - ondialogAuthorizationAccepted(); -} - -void SystemSetting::ondialogAuthorizationAccepted() -{ - if(sysPara){ - QMessageBox::StandardButton ret; - if(sysPara->status.adjHightVolInitEN==0){ - { - sysPara->status.adjHightVolInitEN =1; - } - } - - ret = QMessageBox::information(this, tr("Application"), - tr("是否更新高压包电流数据?"), - QMessageBox::Ok | QMessageBox::Cancel); - - if (ret == QMessageBox::Ok){ - if((sysPara->status.statWarn & WARN_STATUS_HDINT)){ - QMessageBox::information(this,tr("错误"),tr("喷头盖未关,请先关喷头盖!")); - return ; - } - lastHighVoltageOpen = sysPara->devOp->isHighVoltageOpen(); - - sysPara->status.detectHighVoltageAppending = true; - sysPara->status.detectedValidHighVoltage = false; - sysPara->status.detectHighVoltageCnt = 0; - detectValidHVCnt = 0; - progressBar.setMaximum (ARRAY_SIZE(sysPara->para.highVoltageRecord)); - progressBar.setMinimum (0); - progressBar.setValue(sysPara->status.detectHighVoltageCnt); - progressBar.show(); - timer->start(1000); - //ui->label_HVFlag->setText(tr("")); - sysPara->para.set_HVData_Flag = 1; // - sysPara->devOp->writeFpgaPrintPara(true); - //--sysPara->devOp->setCtrlFlags(); - //qDebug()<<"set_HVData_Flag"<para.set_HVData_Flag ; - - } - } -} -//#define VOLDIV 5 // 原来的值 -//#define VOLNUM 20 // 原来的值 -#define VOLDIV 2 // 测试的值 -#define VOLNUM 50 // 测试的值 -void SystemSetting::on_pushButtonSearchBestOscillatorVoltage_pressed() -{ - if(sysPara){ - if((sysPara->status.statWarn & WARN_STATUS_INK_SWINT)){ - QMessageBox::information(this,tr("错误"),tr("墨线开关未开,请先打开墨线开关!")); - return ; - } - if((sysPara->status.statWarn & WARN_STATUS_HDINT)){ - QMessageBox::information(this,tr("错误"),tr("喷头盖未关,请先关喷头盖!")); - return ; - } - if(!sysPara->status.reclainTankReachEnd){ - QMessageBox::information(this,tr("错误"),tr("回收槽未全部打开!")); - return ; - } - - QMessageBox::StandardButton ret; - - ret = QMessageBox::information(this, tr("Application"), - tr("自动搜索耗时较长,期间请不要进行其他操作,是否确认自动搜索最佳晶振电压?"), - QMessageBox::Ok | QMessageBox::Cancel); - if (ret == QMessageBox::Ok){ - sysPara->devOp->printCtrl(PRINT_CTRL_STOP); //停止打印 - sysPara->devOp->highVoltageCtrl(0); // 关高压 - progressBar.setMaximum (VOLNUM); - progressBar.setMinimum (0); - progressBar.setValue(0); - progressBar.show(); - sysPara->status.detectBestOscillatorVoltageAppending = true; - sysPara->status.currentDetectBestOscillatorCnt = 0; - sysPara->status.longestPhaseHightLevelTm = 0; - sysPara->status.detectedBestOscillatorVoltage = 0; - sysPara->devOp->setOscillatorVoltage(0); - - timer->start(6000); - } - } -} - -void SystemSetting::on_pushButtonSearchBestOscillatorFreq_pressed() -{ - if(sysPara){ - if((sysPara->status.statWarn & WARN_STATUS_INK_SWINT)){ - QMessageBox::information(this,tr("错误"),tr("墨线开关未开,请先打开墨线开关!")); - return ; - } - if((sysPara->status.statWarn & WARN_STATUS_HDINT)){ - QMessageBox::information(this,tr("错误"),tr("喷头盖未关,请先关喷头盖!")); - return ; - } - if(!sysPara->status.reclainTankReachEnd){ - QMessageBox::information(this,tr("错误"),tr("回收槽未全部打开!")); - return ; - } - - QMessageBox::StandardButton ret; - - ret = QMessageBox::information(this, tr("Application"), - tr("自动搜索耗时较长,是否确认自动搜索当前频率2K范围内最佳晶振频率?"), - QMessageBox::Ok | QMessageBox::Cancel); - if (ret == QMessageBox::Ok){ - sysPara->devOp->printCtrl(PRINT_CTRL_STOP); //停止打印 - sysPara->devOp->highVoltageCtrl(0); // 关高压 - progressBar.setMaximum (20); - progressBar.setMinimum (0); - progressBar.setValue(0); - progressBar.show(); - - if(sysPara->para.divideRatio){ - sysPara->status.detectedStartOscillatorFreq = FPGA_SYS_HZ/(2*sysPara->para.divideRatio); - sysPara->status.detectedStartOscillatorFreq -= 2000; - } - else { - sysPara->status.detectedStartOscillatorFreq = 63000; - } - if(sysPara->status.detectedStartOscillatorFreq < 50000 || sysPara->status.detectedStartOscillatorFreq > 110000){ - QMessageBox::critical(this, tr("错误"), - tr("搜索的起始频率%1 HZ超出范围?").arg(sysPara->status.detectedStartOscillatorFreq)); - return ; - } - sysPara->status.detectBestOscillatorFreqAppending = true; - sysPara->status.currentDetectBestOscillatorCnt = 0; - sysPara->status.longestPhaseHightLevelTm = 0; - sysPara->status.detectedBestOscillatorFreq = sysPara->status.detectedStartOscillatorFreq; - sysPara->devOp->setDivideRatio(0); - timer->start(6000); - } - } -} - -//排序函数 -void bubbleSort(unsigned short arr[], int n) { - for (int i = 0; i < n - 1; i++) { - for (int j = 0; j < n - i - 1; j++) { - if (arr[j] > arr[j + 1]) { - int temp = arr[j]; - arr[j] = arr[j + 1]; - arr[j + 1] = temp; - } - } - } -} - -void SystemSetting::timerHandler(){ - if(sysPara){ - /*-------------------------------------高压检测-----------------------------------*/ - if(sysPara->status.detectHighVoltageAppending){ - if(sysPara->status.detectHighVoltageCnt < ARRAY_SIZE(sysPara->para.highVoltageRecord)-1){ - sysPara->para.highVoltageRecord[sysPara->status.detectHighVoltageCnt] = - sysPara->status.detectHighVoltageCnt?sysPara->status.HV_DETOUT:0; - sysPara->devOp->maxHighVoltageDACCtrl(0); //将其detectHighVoltageCnt设置为零,不处理高压故障 - sysPara->devOp->resumeFault(); //如果有高压故障,恢复高压故障 - progressBar.setValue(sysPara->status.detectHighVoltageCnt); - /* 应要求去掉多余到信息*/ - LogInfo::setRunStatusText(QString("High voltage %1 --- value %2") - .arg(sysPara->status.detectHighVoltageCnt).arg(sysPara->para.highVoltageRecord[sysPara->status.detectHighVoltageCnt])); - - if(sysPara->para.highVoltageRecord[sysPara->status.detectHighVoltageCnt] > 30) //起始电压太小不算 - { - if(sysPara->status.detectedValidHighVoltage) - sysPara->status.detectHighVoltageCnt ++; - else{ //从无到有第一次检测高压的话,计数不加1 - - } - sysPara->status.detectedValidHighVoltage = true; - } - else - sysPara->status.detectHighVoltageCnt ++; - int actHvAmp = sysPara->status.detectHighVoltageCnt*10; - sysPara->devOp->highVoltageCtrl(actHvAmp); - sysPara->para.HighVoltageAmplitude = actHvAmp; - }else { - sysPara->para.highVoltageRecord[9] = sysPara->para.highVoltageRecord[8]; - sysPara->status.detectHighVoltageAppending = 0; - LogInfo::setRunStatusText(tr("高压设置完成")); - sysPara->para.set_HVData_Flag = 0; // - sysPara->devOp->writeFpgaPrintPara(true); //在这里面不能产生阻塞 - progressBar.hide(); - timer->stop(); - - if(lastHighVoltageOpen){ - sysPara->devOp->highVoltageCtrl(1); - }else{ - sysPara->devOp->highVoltageCtrl(0); - } - - } - } - else if(sysPara->status.detectBestOscillatorFreqAppending){ - sysPara->devOp->readPhaseDetectHighTm(); - int longestPhaseHightLevelTm = 0; - if(!sysPara->status.detect_phase_error && !sysPara->status.flight_tm_error ){ - int n = ARRAY_SIZE(sysPara->status.phaseDetectHighTm); - bubbleSort(sysPara->status.phaseDetectHighTm, n); - - int sum = 0; - for (int i= 1; i < n -1; i++) - { - sum += sysPara->status.phaseDetectHighTm[i]; - } - longestPhaseHightLevelTm = sum / (n-2); - - } - LogInfo::setRunStatusText(tr("Oscillator Freq %1 --- 最长高电平时钟 %2") - .arg( sysPara->status.detectedStartOscillatorFreq + sysPara->status.currentDetectBestOscillatorCnt*200).arg(longestPhaseHightLevelTm)); - - if(longestPhaseHightLevelTm > sysPara->status.longestPhaseHightLevelTm){ - sysPara->status.longestPhaseHightLevelTm = longestPhaseHightLevelTm; - sysPara->status.detectedBestOscillatorFreq = sysPara->status.detectedStartOscillatorFreq + sysPara->status.currentDetectBestOscillatorCnt*200; - } - sysPara->status.currentDetectBestOscillatorCnt++; - sysPara->devOp->setDivideRatio((FPGA_SYS_HZ/(sysPara->status.detectedStartOscillatorFreq + sysPara->status.currentDetectBestOscillatorCnt*200))/2); - progressBar.setValue(sysPara->status.currentDetectBestOscillatorCnt); - if(sysPara->status.currentDetectBestOscillatorCnt == 20){ //100分了20份 - sysPara->status.detectBestOscillatorFreqAppending= false; - int bestRatio = (FPGA_SYS_HZ/(sysPara->status.detectedBestOscillatorFreq))/2; - /*------------------------------------------------------------------------------------*/ - ui->spinBoxOscillatorFreqFix->setValue(sysPara->status.detectedBestOscillatorFreq - convertFreq(sysPara->para.oscillatoFreq)); - sysPara->para.oscillatorFreqFix = sysPara->status.detectedBestOscillatorFreq - convertFreq(sysPara->para.oscillatoFreq); - /*------------------------------------------------------------------------------------*/ - sysPara->devOp->setDivideRatio(bestRatio); - sysPara->para.divideRatio = bestRatio; - progressBar.hide(); - timer->stop(); - LogInfo::setRunStatusText(tr("最佳晶振频率完成")); - } - } -#ifdef FINDVOL - else if(sysPara->status.detectBestOscillatorVoltageAppending){// 最佳晶振电压 - sysPara->devOp->readPhaseDetectHighTm(); - int longestPhaseHightLevelTm = 0; - if(!sysPara->status.detect_phase_error && !sysPara->status.flight_tm_error ){ - for(int i = 0; i < ARRAY_SIZE(sysPara->status.phaseDetectHighTm); i++){ - if(sysPara->status.phaseDetectHighTm[i] > longestPhaseHightLevelTm){ - longestPhaseHightLevelTm = sysPara->status.phaseDetectHighTm[i]; - } - } - } - LogInfo::setRunStatusText(tr("Oscillator voltage %1 --- 最长高电平时钟 %2") - .arg(sysPara->status.currentDetectBestOscillatorCnt*3).arg(longestPhaseHightLevelTm)); - - if(longestPhaseHightLevelTm > sysPara->status.longestPhaseHightLevelTm){ - sysPara->status.longestPhaseHightLevelTm = longestPhaseHightLevelTm; - sysPara->status.detectedBestOscillatorVoltage = sysPara->status.currentDetectBestOscillatorCnt*3; - } - sysPara->status.currentDetectBestOscillatorCnt++; - sysPara->devOp->setOscillatorVoltage(sysPara->status.currentDetectBestOscillatorCnt*3); - progressBar.setValue(sysPara->status.currentDetectBestOscillatorCnt); - if(sysPara->status.currentDetectBestOscillatorCnt == 32){ //分了32份 - sysPara->status.detectBestOscillatorVoltageAppending = false; - ui->spinBoxOscillatorVoltage->setValue(sysPara->status.detectedBestOscillatorVoltage); - sysPara->devOp->setOscillatorVoltage(sysPara->status.detectedBestOscillatorVoltage); - sysPara->para.oscillatorVoltage = sysPara->status.detectedBestOscillatorVoltage; - progressBar.hide(); - timer->stop(); - LogInfo::setRunStatusText(tr("最佳晶振电压完成")); - } - } -#else - else if(sysPara->status.detectBestOscillatorVoltageAppending){// 最佳晶振电压 - sysPara->devOp->readPhaseDetectHighTm(); - - int longestPhaseHightLevelTm = 0; - if(!sysPara->status.detect_phase_error && !sysPara->status.flight_tm_error ){ - for(unsigned int i = 0; i < ARRAY_SIZE(sysPara->status.phaseDetectHighTm); i++){ - if(sysPara->status.phaseDetectHighTm[i] > longestPhaseHightLevelTm){ - longestPhaseHightLevelTm = sysPara->status.phaseDetectHighTm[i]; - } - } - } - LogInfo::setRunStatusText(tr("Oscillator voltage %1 --- 最长高电平时钟 %2") - .arg(sysPara->status.currentDetectBestOscillatorCnt*VOLDIV).arg(longestPhaseHightLevelTm)); - - if(longestPhaseHightLevelTm > sysPara->status.longestPhaseHightLevelTm){ - sysPara->status.longestPhaseHightLevelTm = longestPhaseHightLevelTm; - sysPara->status.detectedBestOscillatorVoltage = sysPara->status.currentDetectBestOscillatorCnt*VOLDIV; - } - sysPara->status.currentDetectBestOscillatorCnt++; - sysPara->devOp->setOscillatorVoltage(sysPara->status.currentDetectBestOscillatorCnt*VOLDIV); - - progressBar.setValue(sysPara->status.currentDetectBestOscillatorCnt); - if(sysPara->status.currentDetectBestOscillatorCnt == VOLNUM){ //分了20份 - sysPara->status.detectBestOscillatorVoltageAppending = false; - ui->spinBoxOscillatorVoltage->setValue(sysPara->status.detectedBestOscillatorVoltage); - sysPara->devOp->setOscillatorVoltage(sysPara->status.detectedBestOscillatorVoltage); - - sysPara->para.oscillatorVoltage = sysPara->status.detectedBestOscillatorVoltage; - progressBar.hide(); - timer->stop(); - LogInfo::setRunStatusText(tr("最佳晶振电压完成")); - } - } -#endif - - } -} - - - -void SystemSetting::updateReclaimTime(int time){ - if(sysPara){ - ui->spinBoxReclaimTankTime->setValue(time); - } -} -void SystemSetting::updateViscosityAdjust(int offset){ - if(sysPara){ - int viscostyRealValue; - if(offset>0) - { - if(offset>5) - offset = 5; - if(sysPara->para.viscosityAdjust==1)//0.6% - { - //viscostyRealValue = sysPara->para.viscosity - sysPara->para.viscosity*(offset*3)/5/100; - viscostyRealValue = sysPara->para.viscosity - sysPara->para.viscosity*(offset*3)/500; - } - else if(sysPara->para.viscosityAdjust==2)//1.0% - { - //viscostyRealValue = sysPara->para.viscosity - sysPara->para.viscosity*(offset*5)/5/100; - viscostyRealValue = sysPara->para.viscosity - sysPara->para.viscosity*offset/100; - } - else if(sysPara->para.viscosityAdjust==3)//1.6% - { - //viscostyRealValue = sysPara->para.viscosity - sysPara->para.viscosity*(offset*8)/5/100; - viscostyRealValue = sysPara->para.viscosity - sysPara->para.viscosity*offset*8/500; - } - else if(sysPara->para.viscosityAdjust==4)//2.0% - { - //viscostyRealValue = sysPara->para.viscosity - sysPara->para.viscosity*(offset*10)/5/100; - viscostyRealValue = sysPara->para.viscosity - sysPara->para.viscosity*offset*2/100; - } - else - { - viscostyRealValue = sysPara->para.viscosity; - } - } - else - { - viscostyRealValue = sysPara->para.viscosity; - } - if(sysPara->para.viscosityAdjust!=0) - { - ui->ViscosityAdjustText->setText(QString("%1").arg(viscostyRealValue)); - } - } -} - -void SystemSetting::updateAuthorization(int auth){ - if(sysPara){ - } -} - void SystemSetting::setSpinBoxPressureMaxValue(int pressureVal) - { - ui->spinBoxPressure->setMaximum(pressureVal); - } - -//简单的使用输入框值变化事件时,会在用户输入个位数(未输入完成时),就触发发送修改命令,造成断点不正常 -void SystemSetting::on_spinBoxOscillatorVoltage_valueChanged(int arg1) -{ - static int vol=0; // - if(sysPara){ - if(vol-1==arg1 || vol+1==arg1) - { - //qDebug()<<"OSCVOL:"<devOp->setOscillatorVoltage(ui->spinBoxOscillatorVoltage->value()); - - } - vol = arg1; - } -} -#include "Public.h" - -void SystemSetting::on_pushButtonInterFace_pressed() -{ - QString s1 = Public::ReadLanguageName(); - if(s1 =="English") { - dlgLanguage.LangIndex =INPUT_METHOD_TYPE_ENGLISH; - } - else if(s1 =="Korean") { - dlgLanguage.LangIndex =INPUT_METHOD_TYPE_KOREAN; - } - else{ - dlgLanguage.LangIndex =INPUT_METHOD_TYPE_CHINESE; - } - - dlgLanguage.setCurrentLanguage(); - dlgLanguage.show(); - - -/* - QFile file(SYS_ROOT_DIR"UseEn"); - - QMessageBox::StandardButton ret; - ret = QMessageBox::information(this, tr("警告"), - tr("确定要切换显示语言吗?\r\n(重启才能生效)"), - QMessageBox::Ok | QMessageBox::Cancel); - if (ret != QMessageBox::Ok){ - return; - } - - QString s1 = Public::ReadLanguageName(); - - if(file.open(QIODevice::ReadWrite| QIODevice::Truncate)) { - QByteArray buf; - buf.clear(); - if(s1 =="English") {// English--> Vietnamese - QMessageBox::information(this,tr("提示"),tr("重启后切换到越南语界面")); - buf.append("Vietnamese\r\n"); - buf.append("YN_utf8.txt\r\n"); - } - else if(s1 =="Vietnamese") {// Vietnamese--> Chinese - QMessageBox::information(this,tr("提示"),tr("重启后切换到中文界面")); - buf.append("Chinese\r\n"); - buf.append("WINPY_utf8.txt\r\n"); - } - else{// Chinese--> English - QMessageBox::information(this,tr("提示"),tr("重启后切换到英文界面")); - buf.append("English\r\n"); - buf.append("WINPY_utf8.txt\r\n"); - } - file.write(buf); - file.close(); - setInterfaceMode(); - } -*/ -} - -void SystemSetting::setInterfaceMode() -{ - QString s1 = Public::ReadLanguageName(); - if(s1 =="English") {// English--> Vietnamese - ui->pushButtonInterFace->setText( tr("Tiếng Việt(Vietnamese interface)")); - } - else if(s1 =="Vietnamese") {// Vietnamese--> Chinese - ui->pushButtonInterFace->setText( tr("Chinese interface(中文界面)")); - } - else{// Chinese--> English - ui->pushButtonInterFace->setText( tr("English interface(英文界面)")); - } - -} +#include "SystemSetting.h" +#include "ui_systemsetting.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include "LogInfo.h" +#include "myinclude.h" +#include "QInputDialog" +#include "dlgmutilanguage.h" +//#define FINDVOL +#include "InputMethod.h" + +int convertFreq(int index){ +// qDebug()<<"index="<setupUi(this); + progressBar.setGeometry(200,200,300,40); //将其放在最中间 + progressBar.hide(); + timer = new QTimer(); + connect(timer, SIGNAL(timeout()), this, SLOT(timerHandler())); + timer2 = new QTimer(); + connect(timer2, SIGNAL(timeout()), this, SLOT(timerHandler2())); + timerAuto = new QTimer(); + connect(timerAuto,SIGNAL(timeout()),this,SLOT(autoControlPressure())); + enCleanUpAppendFlag=0; // 0空闲,1关开回收槽,2手动,3清洗,4恢复,5停止,6 + dialogUpateMm =new DialogAuthorization; + connect(dialogUpateMm,SIGNAL(accepted()),this,SLOT(ondialogAuthorizationAccepted())); + + + // 隐藏部分过时选项 byons@2026年5月5日 + // 频率修正, 放到更高权限里 + setFreqFixVisible(false); + + // 粘度泵动作间隔 + ui->label_18->setVisible(false); + ui->spinBoxPumpInterval->setVisible(false); + + // 隔膜位置 + ui->label_20->setVisible(false); + ui->spinBoxSeptalPostion->setVisible(false); + ui->labelSpetalPosition->setVisible(false); + + // 隔膜位置偏移 + ui->label_19->setVisible(false); + ui->comboBoxDiaphramOffset->setVisible(false); +} + +SystemSetting::~SystemSetting() +{ + delete ui; + delete timer; + delete timer2; + +} + +void SystemSetting::SystemupdateSysParaToUI(){ + updateSysParaToUI(); +} + +void SystemSetting::on_pushButtonApply_pressed() +{ + applyUIPara(); + SystemSettingLog(); + + int freq = sysPara->para.oscillatorFreqFix+ convertFreq(sysPara->para.oscillatoFreq); + sysPara->para.divideRatio = (FPGA_SYS_HZ/freq)/2; + sysPara->devOp->setDivideRatio(sysPara->para.divideRatio); +} + +void SystemSetting::SystemSettingLog(){ + + qDebug()<spinBoxOscillatorVoltage->value()); + qDebug()<spinBoxHighVoltageLevel->value()); + qDebug()<spinBoxReclaimPumpPower->value()); + qDebug()<ViscosityAdujstSelect->currentIndex()); + qDebug()<spinBoxPumpInterval->value()); + qDebug()<spinBoxReclaimTankTime->value()); + qDebug()<spinBoxSeptalPostion->value()); + qDebug()<comboBoxDiaphramOffset->currentIndex()); + qDebug()<comboBoxEditMode->currentIndex()); + qDebug()<spinBoxPressure->value()); + qDebug()<spinBoxVIscosity->value()); + qDebug()<spinBoxTemperature->value()); + qDebug()<comboBoxOscillatorFreq->currentIndex()); + qDebug()<spinBoxOscillatorFreqFix->value()); + qDebug()<comboBoxDiameter->currentIndex()); +} + +void SystemSetting::setFreqFixVisible(bool visible) +{ + ui->label_13->setVisible(visible); + ui->spinBoxOscillatorFreqFix->setVisible(visible); + ui->label_15->setVisible(visible); +} + +void SystemSetting::updateSysParaToUI(){ + if(sysPara){ + ui->spinBoxHighVoltageLevel->setValue(sysPara->para.highVoltageLevel); + ui->spinBoxOscillatorVoltage->setValue((sysPara->para.oscillatorVoltage)); + ui->spinBoxPressure->setValue(sysPara->para.pressure); + ui->spinBoxPumpInterval->setValue(sysPara->para.viscosityPumpInterval); + ui->spinBoxReclaimPumpPower->setValue(sysPara->para.reclaimPumpPWMWidth); + ui->spinBoxReclaimTankTime->setValue(sysPara->para.reclaimTankTime); + ui->spinBoxTemperature->setValue(sysPara->para.temperature); + ui->spinBoxFanTemperature->setValue(sysPara->para.FanTemperature); + ui->spinBoxVIscosity->setValue( sysPara->para.viscosity); + ui->ViscosityAdujstSelect->setCurrentIndex(sysPara->para.viscosityAdjust); + ui->comboBoxOscillatorFreq->setCurrentIndex(sysPara->para.oscillatoFreq); + ui->spinBoxOscillatorFreqFix->setValue(sysPara->para.oscillatorFreqFix); + ui->spinBoxSeptalPostion->setValue(sysPara->para.septalPostion); + ui->comboBoxDiameter->setCurrentIndex(sysPara->para.diameter); + ui->comboBoxDiaphramOffset->setCurrentIndex(sysPara->para.diaphramOffset/5-1); + + ui->spinBoxAirPushDuration->setValue(sysPara->para.airPushDurationSec); + + if(sysPara->para.EditMode>SCENE) + sysPara->para.EditMode=TXTFILE; + ui->comboBoxEditMode->setCurrentIndex(sysPara->para.EditMode); + } +} + + + +extern bool gearPumpRunNormalFlag; + +void SystemSetting::applyUIPara(){ + if(sysPara){ + sysPara->para.highVoltageLevel = ui->spinBoxHighVoltageLevel->value(); + sysPara->para.oscillatorVoltage = ui->spinBoxOscillatorVoltage->value(); + sysPara->para.pressure = ui->spinBoxPressure->value(); + gearPumpRunNormalFlag = false;//重新设置压力标志设置 + sysPara->para.viscosityPumpInterval = ui->spinBoxPumpInterval->value(); + sysPara->para.reclaimPumpPWMWidth = ui->spinBoxReclaimPumpPower->value(); + sysPara->para.reclaimTankTime = ui->spinBoxReclaimTankTime->value(); + sysPara->para.temperature = ui->spinBoxTemperature->value(); + sysPara->para.viscosity = ui->spinBoxVIscosity->value(); + //sysPara->para.viscosityAdjust = ui->spinBoxViscosityAdjust->value(); + sysPara->para.viscosityAdjust = ui->ViscosityAdujstSelect->currentIndex(); + sysPara->para.oscillatoFreq = ui->comboBoxOscillatorFreq->currentIndex(); + sysPara->para.oscillatorFreqFix = ui->spinBoxOscillatorFreqFix->value(); + sysPara->para.EditMode = ui->comboBoxEditMode->currentIndex(); + sysPara->para.diameter = ui->comboBoxDiameter->currentIndex();// qDebug()<<"EditMode1"<para.EditMode; + int freq = sysPara->para.oscillatorFreqFix+ convertFreq(sysPara->para.oscillatoFreq); + + if(freq > 0){ + sysPara->para.divideRatio = (FPGA_SYS_HZ/freq)/2; + } + else { + QMessageBox::critical(this,tr("错误"),tr("实际频率不能为%1").arg(freq)); + } + sysPara->para.FanTemperature = ui->spinBoxFanTemperature->value(); + sysPara->para.septalPostion = ui->spinBoxSeptalPostion->value(); + quint16 diaphramOffset = 5*(ui->comboBoxDiaphramOffset->currentIndex()+1); + sysPara->para.diaphramOffset = diaphramOffset; + + sysPara->para.airPushDurationSec = ui->spinBoxAirPushDuration->value(); + + //sysPara->para.mixValveisNewVersion = ui->radioButtonMixValveNewVersion->isChecked(); + if(sysPara->devOp->writeFpgaPrintPara() != -1){ + QMessageBox::information(this,tr("提示"),tr("应用成功")); + } + emit changeEditMode(sysPara->para.EditMode); + //qDebug()<<"EditMode"<para.EditMode; + } +} + +void SystemSetting::updateSysStatusToUI(){ + if(sysPara){ + ui->pushButtonHighVoltageData->setEnabled( sysPara->status.currReclaimTankPos <5 ); + //ui->pushButtonHighVoltageData->setEnabled( !sysPara->status.isPrinting); + ui->spinBoxPressure->setEnabled( !sysPara->status.isPrinting); + + ui->labelHighVoltageValue->setText(QString::number(sysPara->status.HV_DETOUT) + "/" + QString::number(sysPara->para.maxHighVoltageDAC)); + //ui->labelHighVoltageValue->setText(QString::number(sysPara->status.HV_DETOUT) + "/" + "600");//FPGA那边已固定600 + ui->labelMotorCurrent->setText(QString::number(sysPara->status.MOTOR_ISEN)); + ui->labelPressure->setText(QString::number(sysPara->status.PRESSURE)); + ui->labelTemperature->setText(QString::number(sysPara->status.TEMP_ADIN/4)); + ui->labelPulseCounter->setText(QString::number(sysPara->status.synTotalPulseCnt)); + //ui->label_PulseCounterZero->setText(QString::number(sysPara->status.xor_sync.sync_counter_at_zero)); +// if( sysPara->status.viscosityFaultCnt || sysPara->status.rWarnViscoReady ) +// sysPara->status.viscosity = 0;//sysPara->status.rWarnViscoReady + ui->labelVIscosity->setText(QString::number(sysPara->status.viscosity)); + ui->labelReclaimTankCloseTime->setText(QString::number(sysPara->status.currReclaimTankPos/10)); + //ui->labelTotalPulseNum->setText(QString::number(sysPara->status.synTotalPulseCnt));//不需要显示 + ui->labelSpetalPosition->setText(QString::number(sysPara->status.SEPTAL_POSITION)); + if(sysPara->para.gearPumpEnable) + { + setSpinBoxPressureMaxValue(900); + } + else + { + setSpinBoxPressureMaxValue(5000); + } + if(!sysPara->para.isCheckMagnet) + { + ui->pushButtonCleanUP->setEnabled( (sysPara->status.currReclaimTankPos<70) && (sysPara->status.statWarn & WARN_STATUS_HDINT)); // sysPara->status.currReclaimTankPos + } + else + { + ui->pushButtonCleanUP->setEnabled( (sysPara->status.currReclaimTankPos<70) ); + } + if(sysPara->status.currReclaimTankPos<55 && sysPara->status.currReclaimTankPos>44 && enCleanUpAppendFlag==2) + { + if(timer2->isActive()) timer2->stop(); + enCleanUpAppendFlag=3; + sysPara->devOp->controlReclaimTankOpen(0); + emit onCleanUPNow();// start cleanup + } + else if(sysPara->status.currReclaimTankPos >0 && enCleanUpAppendFlag==4) //? + { + enCleanUpAppendFlag=5; + //sysPara->devOp->controlReclaimTankClose(1); + //ui->label_status->setText(tr("正在关回收槽......")); + } + else if(sysPara->status.currReclaimTankPos ==0 && (enCleanUpAppendFlag==5 ||enCleanUpAppendFlag==4)) //? + { + if(sysPara->status.reclaimCloseCnt)sysPara->status.reclaimCloseCnt--; + else { + sysPara->devOp->controlReclaimTankOpen(0); + timerHandler2(); + if(timer2->isActive()) timer2->stop(); + enCleanUpAppendFlag=0; + } + } + else + { + + } + } +} + +void SystemSetting::on_pushButtonCleanUP_pressed() +{ + if(sysPara){ + QMessageBox msgBox(QMessageBox::Information,tr("提示"),tr("自动清洗时间约为一分钟,然后自动停止")); + QPushButton *cleanButton; + QPushButton *cancleCleanButton; + cleanButton=NULL; + cancleCleanButton=NULL; + r_PumpValveControledByHand = false; + if( enCleanUpAppendFlag==0) cleanButton = msgBox.addButton(tr("开始清洗"), QMessageBox::ActionRole); + else cancleCleanButton = msgBox.addButton(tr("停止清洗"), QMessageBox::ActionRole); + msgBox.addButton(QMessageBox::Cancel); + msgBox.exec(); + if (msgBox.clickedButton() == cleanButton) + { + r_PumpValveControledByHand = sysPara->status.isPumpValveControledByHand; + //ui->label_status->setText(tr("正在进入手动模式......")); + sysPara->status.isPumpValveControledByHand=true; + sysPara->devOp->controlCompressPump(false); + sysPara->devOp->controlCycleValve(true); + sysPara->devOp->controlInkValve(false); + sysPara->devOp->controlInkValvePWM(false); + sysPara->devOp->controlMainInkPump(false); + sysPara->devOp->controlMixValve(false); + sysPara->devOp->controlReclaimPump(true,true); + sysPara->devOp->controlViscosityPump(false); + sysPara->devOp->controlReleaseValve(false); + + if(sysPara->para.gearPumpEnable && sysPara->para.flagOfReclaimPumEnable){ + sysPara->devOp->controlCycleValve(true); + sysPara->devOp->controlViscosityPump(true); + sysPara->devOp->controlReclaimPump(true,false); + sysPara->para.gearPumpValue = 0; + sysPara->devOp->WriteMoterPump(); + sysPara->devOp->controlInkValvePWM(false); + } + + enCleanUpAppendFlag=1;// 开始启动手动模式 + sysPara->devOp->mainInkCtrl(); + timer2->start(2000); // 暂时循环一下2s + } + else if (msgBox.clickedButton() == cancleCleanButton) { + enCleanUpAppendFlag=3; + timerHandler2(); + return ; + } + } + +} +void SystemSetting::onCleanUPNow() +{ + if(sysPara){ + emit setRunStatus(tr("正在喷嘴逆清洗......")); + if(!(sysPara->para.gearPumpEnable && sysPara->para.flagOfReclaimPumEnable)){ + sysPara->devOp->controlCycleValve(true); + sysPara->devOp->controlViscosityPump(true); + sysPara->devOp->controlReclaimPump(true,false); + } + timer2->start(60000); + } +} + +void SystemSetting::autoControlPressure(){ + emit pressureAdjust(); +} + +void SystemSetting::timerHandler2(){ + if(sysPara){ + if(enCleanUpAppendFlag==1) + { + //2s循环结束 + // sysPara->devOp->controlCycleValve(false); + // sysPara->devOp->controlReclaimPump(false,false); + if(timer2->isActive()) timer2->stop(); + // 已经进入手动模式了 + // 判断回收槽位置,并控制回收槽打开10mm以上; + enCleanUpAppendFlag=2; + if(sysPara->status.currReclaimTankPos<45) + { + sysPara->devOp->controlReclaimTankOpen(1); + //ui->label_status->setText(tr("正在开回收槽......")); + } + else if(sysPara->status.currReclaimTankPos>55){ + sysPara->devOp->controlReclaimTankClose(1); + //ui->label_status->setText(tr("正在关回收槽......")); + } + timer2->start(5500); + } + else if(enCleanUpAppendFlag==2) // 正在开回收槽 + { + if(timer2->isActive()) timer2->stop(); + enCleanUpAppendFlag=3; + sysPara->devOp->controlReclaimTankOpen(0); + emit onCleanUPNow();// start cleanup + } + else if(enCleanUpAppendFlag==3){// 清洗完成 + enCleanUpAppendFlag=4; + // emit setRunStatus(tr("清洗完成")); + sysPara->devOp->controlCycleValve(false); + sysPara->devOp->controlViscosityPump(false); + sysPara->devOp->controlReclaimTankClose(1); + sysPara->status.reclaimCloseCnt=10; + if(timer2->isActive()) timer2->stop(); + timer2->start(8300); // close reclaimTandk + if(sysPara->para.gearPumpEnable && sysPara->para.flagOfReclaimPumEnable){ + timerAuto->start(100); + } + } + else if(enCleanUpAppendFlag==4){ + emit setRunStatus(tr("清洗完成")); + if(sysPara->status.currReclaimTankPos==0){ + enCleanUpAppendFlag=0; + if(timer2->isActive()) timer2->stop(); + sysPara->devOp->controlReclaimTankClose(0); + } + sysPara->status.isPumpValveControledByHand = false; + if(timerAuto->isActive()) timerAuto->stop(); + sysPara->devOp->mainInkCtrl(); + } + else if(enCleanUpAppendFlag==5){ + if(timer2->isActive()) timer2->stop();enCleanUpAppendFlag=0; + sysPara->devOp->controlReclaimTankClose(0); + sysPara->status.isPumpValveControledByHand =false; + sysPara->devOp->mainInkCtrl(); + } + else if(enCleanUpAppendFlag==6){ + if(timer2->isActive()) timer2->stop();enCleanUpAppendFlag=0; + sysPara->status.isPumpValveControledByHand =false ; + } + else {if(timer2->isActive()) timer2->stop();} + } +} + +void SystemSetting::on_spinBoxReclaimPumpPower_valueChanged(int arg1) +{ + Q_UNUSED(arg1); + if(sysPara){ + if(sysPara->devOp->isReclaimPumpOpen()){ //在当前是开的情况下重设pwm + sysPara->para.reclaimPumpPWMWidth = ui->spinBoxReclaimPumpPower->value(); + sysPara->devOp->controlReclaimPump(true,false); + } + } +} + + + +void SystemSetting::on_pushButtonHighVoltageData_pressed() +{ + ondialogAuthorizationAccepted(); +} + +void SystemSetting::ondialogAuthorizationAccepted() +{ + if(sysPara){ + QMessageBox::StandardButton ret; + if(sysPara->status.adjHightVolInitEN==0){ + { + sysPara->status.adjHightVolInitEN =1; + } + } + + ret = QMessageBox::information(this, tr("Application"), + tr("是否更新高压包电流数据?"), + QMessageBox::Ok | QMessageBox::Cancel); + + if (ret == QMessageBox::Ok){ + if((sysPara->status.statWarn & WARN_STATUS_HDINT)){ + QMessageBox::information(this,tr("错误"),tr("喷头盖未关,请先关喷头盖!")); + return ; + } + lastHighVoltageOpen = sysPara->devOp->isHighVoltageOpen(); + + sysPara->status.detectHighVoltageAppending = true; + sysPara->status.detectedValidHighVoltage = false; + sysPara->status.detectHighVoltageCnt = 0; + detectValidHVCnt = 0; + progressBar.setMaximum (ARRAY_SIZE(sysPara->para.highVoltageRecord)); + progressBar.setMinimum (0); + progressBar.setValue(sysPara->status.detectHighVoltageCnt); + progressBar.show(); + timer->start(1000); + //ui->label_HVFlag->setText(tr("")); + sysPara->para.set_HVData_Flag = 1; // + sysPara->devOp->writeFpgaPrintPara(true); + //--sysPara->devOp->setCtrlFlags(); + //qDebug()<<"set_HVData_Flag"<para.set_HVData_Flag ; + + } + } +} +//#define VOLDIV 5 // 原来的值 +//#define VOLNUM 20 // 原来的值 +#define VOLDIV 2 // 测试的值 +#define VOLNUM 50 // 测试的值 +void SystemSetting::on_pushButtonSearchBestOscillatorVoltage_pressed() +{ + if(sysPara){ + if((sysPara->status.statWarn & WARN_STATUS_INK_SWINT)){ + QMessageBox::information(this,tr("错误"),tr("墨线开关未开,请先打开墨线开关!")); + return ; + } + if((sysPara->status.statWarn & WARN_STATUS_HDINT)){ + QMessageBox::information(this,tr("错误"),tr("喷头盖未关,请先关喷头盖!")); + return ; + } + if(!sysPara->status.reclainTankReachEnd){ + QMessageBox::information(this,tr("错误"),tr("回收槽未全部打开!")); + return ; + } + + QMessageBox::StandardButton ret; + + ret = QMessageBox::information(this, tr("Application"), + tr("自动搜索耗时较长,期间请不要进行其他操作,是否确认自动搜索最佳晶振电压?"), + QMessageBox::Ok | QMessageBox::Cancel); + if (ret == QMessageBox::Ok){ + sysPara->devOp->printCtrl(PRINT_CTRL_STOP); //停止打印 + sysPara->devOp->highVoltageCtrl(0); // 关高压 + progressBar.setMaximum (VOLNUM); + progressBar.setMinimum (0); + progressBar.setValue(0); + progressBar.show(); + sysPara->status.detectBestOscillatorVoltageAppending = true; + sysPara->status.currentDetectBestOscillatorCnt = 0; + sysPara->status.longestPhaseHightLevelTm = 0; + sysPara->status.detectedBestOscillatorVoltage = 0; + sysPara->devOp->setOscillatorVoltage(0); + + timer->start(6000); + } + } +} + +void SystemSetting::on_pushButtonSearchBestOscillatorFreq_pressed() +{ + if(sysPara){ + if((sysPara->status.statWarn & WARN_STATUS_INK_SWINT)){ + QMessageBox::information(this,tr("错误"),tr("墨线开关未开,请先打开墨线开关!")); + return ; + } + if((sysPara->status.statWarn & WARN_STATUS_HDINT)){ + QMessageBox::information(this,tr("错误"),tr("喷头盖未关,请先关喷头盖!")); + return ; + } + if(!sysPara->status.reclainTankReachEnd){ + QMessageBox::information(this,tr("错误"),tr("回收槽未全部打开!")); + return ; + } + + QMessageBox::StandardButton ret; + + ret = QMessageBox::information(this, tr("Application"), + tr("自动搜索耗时较长,是否确认自动搜索当前频率2K范围内最佳晶振频率?"), + QMessageBox::Ok | QMessageBox::Cancel); + if (ret == QMessageBox::Ok){ + sysPara->devOp->printCtrl(PRINT_CTRL_STOP); //停止打印 + sysPara->devOp->highVoltageCtrl(0); // 关高压 + progressBar.setMaximum (20); + progressBar.setMinimum (0); + progressBar.setValue(0); + progressBar.show(); + + if(sysPara->para.divideRatio){ + sysPara->status.detectedStartOscillatorFreq = FPGA_SYS_HZ/(2*sysPara->para.divideRatio); + sysPara->status.detectedStartOscillatorFreq -= 2000; + } + else { + sysPara->status.detectedStartOscillatorFreq = 63000; + } + if(sysPara->status.detectedStartOscillatorFreq < 50000 || sysPara->status.detectedStartOscillatorFreq > 110000){ + QMessageBox::critical(this, tr("错误"), + tr("搜索的起始频率%1 HZ超出范围?").arg(sysPara->status.detectedStartOscillatorFreq)); + return ; + } + sysPara->status.detectBestOscillatorFreqAppending = true; + sysPara->status.currentDetectBestOscillatorCnt = 0; + sysPara->status.longestPhaseHightLevelTm = 0; + sysPara->status.detectedBestOscillatorFreq = sysPara->status.detectedStartOscillatorFreq; + sysPara->devOp->setDivideRatio(0); + timer->start(6000); + } + } +} + +//排序函数 +void bubbleSort(unsigned short arr[], int n) { + for (int i = 0; i < n - 1; i++) { + for (int j = 0; j < n - i - 1; j++) { + if (arr[j] > arr[j + 1]) { + int temp = arr[j]; + arr[j] = arr[j + 1]; + arr[j + 1] = temp; + } + } + } +} + +void SystemSetting::timerHandler(){ + if(sysPara){ + /*-------------------------------------高压检测-----------------------------------*/ + if(sysPara->status.detectHighVoltageAppending){ + if(sysPara->status.detectHighVoltageCnt < ARRAY_SIZE(sysPara->para.highVoltageRecord)-1){ + sysPara->para.highVoltageRecord[sysPara->status.detectHighVoltageCnt] = + sysPara->status.detectHighVoltageCnt?sysPara->status.HV_DETOUT:0; + sysPara->devOp->maxHighVoltageDACCtrl(0); //将其detectHighVoltageCnt设置为零,不处理高压故障 + sysPara->devOp->resumeFault(); //如果有高压故障,恢复高压故障 + progressBar.setValue(sysPara->status.detectHighVoltageCnt); + /* 应要求去掉多余到信息*/ + LogInfo::setRunStatusText(QString("High voltage %1 --- value %2") + .arg(sysPara->status.detectHighVoltageCnt).arg(sysPara->para.highVoltageRecord[sysPara->status.detectHighVoltageCnt])); + + if(sysPara->para.highVoltageRecord[sysPara->status.detectHighVoltageCnt] > 30) //起始电压太小不算 + { + if(sysPara->status.detectedValidHighVoltage) + sysPara->status.detectHighVoltageCnt ++; + else{ //从无到有第一次检测高压的话,计数不加1 + + } + sysPara->status.detectedValidHighVoltage = true; + } + else + sysPara->status.detectHighVoltageCnt ++; + int actHvAmp = sysPara->status.detectHighVoltageCnt*10; + sysPara->devOp->highVoltageCtrl(actHvAmp); + sysPara->para.HighVoltageAmplitude = actHvAmp; + }else { + sysPara->para.highVoltageRecord[9] = sysPara->para.highVoltageRecord[8]; + sysPara->status.detectHighVoltageAppending = 0; + LogInfo::setRunStatusText(tr("高压设置完成")); + sysPara->para.set_HVData_Flag = 0; // + sysPara->devOp->writeFpgaPrintPara(true); //在这里面不能产生阻塞 + progressBar.hide(); + timer->stop(); + + if(lastHighVoltageOpen){ + sysPara->devOp->highVoltageCtrl(1); + }else{ + sysPara->devOp->highVoltageCtrl(0); + } + + } + } + else if(sysPara->status.detectBestOscillatorFreqAppending){ + sysPara->devOp->readPhaseDetectHighTm(); + int longestPhaseHightLevelTm = 0; + if(!sysPara->status.detect_phase_error && !sysPara->status.flight_tm_error ){ + int n = ARRAY_SIZE(sysPara->status.phaseDetectHighTm); + bubbleSort(sysPara->status.phaseDetectHighTm, n); + + int sum = 0; + for (int i= 1; i < n -1; i++) + { + sum += sysPara->status.phaseDetectHighTm[i]; + } + longestPhaseHightLevelTm = sum / (n-2); + + } + LogInfo::setRunStatusText(tr("Oscillator Freq %1 --- 最长高电平时钟 %2") + .arg( sysPara->status.detectedStartOscillatorFreq + sysPara->status.currentDetectBestOscillatorCnt*200).arg(longestPhaseHightLevelTm)); + + if(longestPhaseHightLevelTm > sysPara->status.longestPhaseHightLevelTm){ + sysPara->status.longestPhaseHightLevelTm = longestPhaseHightLevelTm; + sysPara->status.detectedBestOscillatorFreq = sysPara->status.detectedStartOscillatorFreq + sysPara->status.currentDetectBestOscillatorCnt*200; + } + sysPara->status.currentDetectBestOscillatorCnt++; + sysPara->devOp->setDivideRatio((FPGA_SYS_HZ/(sysPara->status.detectedStartOscillatorFreq + sysPara->status.currentDetectBestOscillatorCnt*200))/2); + progressBar.setValue(sysPara->status.currentDetectBestOscillatorCnt); + if(sysPara->status.currentDetectBestOscillatorCnt == 20){ //100分了20份 + sysPara->status.detectBestOscillatorFreqAppending= false; + int bestRatio = (FPGA_SYS_HZ/(sysPara->status.detectedBestOscillatorFreq))/2; + /*------------------------------------------------------------------------------------*/ + ui->spinBoxOscillatorFreqFix->setValue(sysPara->status.detectedBestOscillatorFreq - convertFreq(sysPara->para.oscillatoFreq)); + sysPara->para.oscillatorFreqFix = sysPara->status.detectedBestOscillatorFreq - convertFreq(sysPara->para.oscillatoFreq); + /*------------------------------------------------------------------------------------*/ + sysPara->devOp->setDivideRatio(bestRatio); + sysPara->para.divideRatio = bestRatio; + progressBar.hide(); + timer->stop(); + LogInfo::setRunStatusText(tr("最佳晶振频率完成")); + } + } +#ifdef FINDVOL + else if(sysPara->status.detectBestOscillatorVoltageAppending){// 最佳晶振电压 + sysPara->devOp->readPhaseDetectHighTm(); + int longestPhaseHightLevelTm = 0; + if(!sysPara->status.detect_phase_error && !sysPara->status.flight_tm_error ){ + for(int i = 0; i < ARRAY_SIZE(sysPara->status.phaseDetectHighTm); i++){ + if(sysPara->status.phaseDetectHighTm[i] > longestPhaseHightLevelTm){ + longestPhaseHightLevelTm = sysPara->status.phaseDetectHighTm[i]; + } + } + } + LogInfo::setRunStatusText(tr("Oscillator voltage %1 --- 最长高电平时钟 %2") + .arg(sysPara->status.currentDetectBestOscillatorCnt*3).arg(longestPhaseHightLevelTm)); + + if(longestPhaseHightLevelTm > sysPara->status.longestPhaseHightLevelTm){ + sysPara->status.longestPhaseHightLevelTm = longestPhaseHightLevelTm; + sysPara->status.detectedBestOscillatorVoltage = sysPara->status.currentDetectBestOscillatorCnt*3; + } + sysPara->status.currentDetectBestOscillatorCnt++; + sysPara->devOp->setOscillatorVoltage(sysPara->status.currentDetectBestOscillatorCnt*3); + progressBar.setValue(sysPara->status.currentDetectBestOscillatorCnt); + if(sysPara->status.currentDetectBestOscillatorCnt == 32){ //分了32份 + sysPara->status.detectBestOscillatorVoltageAppending = false; + ui->spinBoxOscillatorVoltage->setValue(sysPara->status.detectedBestOscillatorVoltage); + sysPara->devOp->setOscillatorVoltage(sysPara->status.detectedBestOscillatorVoltage); + sysPara->para.oscillatorVoltage = sysPara->status.detectedBestOscillatorVoltage; + progressBar.hide(); + timer->stop(); + LogInfo::setRunStatusText(tr("最佳晶振电压完成")); + } + } +#else + else if(sysPara->status.detectBestOscillatorVoltageAppending){// 最佳晶振电压 + sysPara->devOp->readPhaseDetectHighTm(); + + int longestPhaseHightLevelTm = 0; + if(!sysPara->status.detect_phase_error && !sysPara->status.flight_tm_error ){ + for(unsigned int i = 0; i < ARRAY_SIZE(sysPara->status.phaseDetectHighTm); i++){ + if(sysPara->status.phaseDetectHighTm[i] > longestPhaseHightLevelTm){ + longestPhaseHightLevelTm = sysPara->status.phaseDetectHighTm[i]; + } + } + } + LogInfo::setRunStatusText(tr("Oscillator voltage %1 --- 最长高电平时钟 %2") + .arg(sysPara->status.currentDetectBestOscillatorCnt*VOLDIV).arg(longestPhaseHightLevelTm)); + + if(longestPhaseHightLevelTm > sysPara->status.longestPhaseHightLevelTm){ + sysPara->status.longestPhaseHightLevelTm = longestPhaseHightLevelTm; + sysPara->status.detectedBestOscillatorVoltage = sysPara->status.currentDetectBestOscillatorCnt*VOLDIV; + } + sysPara->status.currentDetectBestOscillatorCnt++; + sysPara->devOp->setOscillatorVoltage(sysPara->status.currentDetectBestOscillatorCnt*VOLDIV); + + progressBar.setValue(sysPara->status.currentDetectBestOscillatorCnt); + if(sysPara->status.currentDetectBestOscillatorCnt == VOLNUM){ //分了20份 + sysPara->status.detectBestOscillatorVoltageAppending = false; + ui->spinBoxOscillatorVoltage->setValue(sysPara->status.detectedBestOscillatorVoltage); + sysPara->devOp->setOscillatorVoltage(sysPara->status.detectedBestOscillatorVoltage); + + sysPara->para.oscillatorVoltage = sysPara->status.detectedBestOscillatorVoltage; + progressBar.hide(); + timer->stop(); + LogInfo::setRunStatusText(tr("最佳晶振电压完成")); + } + } +#endif + + } +} + + + +void SystemSetting::updateReclaimTime(int time){ + if(sysPara){ + ui->spinBoxReclaimTankTime->setValue(time); + } +} +void SystemSetting::updateViscosityAdjust(int offset){ + if(sysPara){ + int viscostyRealValue; + if(offset>0) + { + if(offset>5) + offset = 5; + if(sysPara->para.viscosityAdjust==1)//0.6% + { + //viscostyRealValue = sysPara->para.viscosity - sysPara->para.viscosity*(offset*3)/5/100; + viscostyRealValue = sysPara->para.viscosity - sysPara->para.viscosity*(offset*3)/500; + } + else if(sysPara->para.viscosityAdjust==2)//1.0% + { + //viscostyRealValue = sysPara->para.viscosity - sysPara->para.viscosity*(offset*5)/5/100; + viscostyRealValue = sysPara->para.viscosity - sysPara->para.viscosity*offset/100; + } + else if(sysPara->para.viscosityAdjust==3)//1.6% + { + //viscostyRealValue = sysPara->para.viscosity - sysPara->para.viscosity*(offset*8)/5/100; + viscostyRealValue = sysPara->para.viscosity - sysPara->para.viscosity*offset*8/500; + } + else if(sysPara->para.viscosityAdjust==4)//2.0% + { + //viscostyRealValue = sysPara->para.viscosity - sysPara->para.viscosity*(offset*10)/5/100; + viscostyRealValue = sysPara->para.viscosity - sysPara->para.viscosity*offset*2/100; + } + else + { + viscostyRealValue = sysPara->para.viscosity; + } + } + else + { + viscostyRealValue = sysPara->para.viscosity; + } + if(sysPara->para.viscosityAdjust!=0) + { + ui->ViscosityAdjustText->setText(QString("%1").arg(viscostyRealValue)); + } + } +} + +void SystemSetting::updateAuthorization(int auth){ + if(sysPara){ + } +} + void SystemSetting::setSpinBoxPressureMaxValue(int pressureVal) + { + ui->spinBoxPressure->setMaximum(pressureVal); + } + +//简单的使用输入框值变化事件时,会在用户输入个位数(未输入完成时),就触发发送修改命令,造成断点不正常 +void SystemSetting::on_spinBoxOscillatorVoltage_valueChanged(int arg1) +{ + static int vol=0; // + if(sysPara){ + if(vol-1==arg1 || vol+1==arg1) + { + //qDebug()<<"OSCVOL:"<devOp->setOscillatorVoltage(ui->spinBoxOscillatorVoltage->value()); + + } + vol = arg1; + } +} +#include "Public.h" + +void SystemSetting::on_pushButtonInterFace_pressed() +{ + QString s1 = Public::ReadLanguageName(); + if(s1 =="English") { + dlgLanguage.LangIndex =INPUT_METHOD_TYPE_ENGLISH; + } + else if(s1 =="Korean") { + dlgLanguage.LangIndex =INPUT_METHOD_TYPE_KOREAN; + } + else{ + dlgLanguage.LangIndex =INPUT_METHOD_TYPE_CHINESE; + } + + dlgLanguage.setCurrentLanguage(); + dlgLanguage.show(); + + +/* + QFile file(SYS_ROOT_DIR"UseEn"); + + QMessageBox::StandardButton ret; + ret = QMessageBox::information(this, tr("警告"), + tr("确定要切换显示语言吗?\r\n(重启才能生效)"), + QMessageBox::Ok | QMessageBox::Cancel); + if (ret != QMessageBox::Ok){ + return; + } + + QString s1 = Public::ReadLanguageName(); + + if(file.open(QIODevice::ReadWrite| QIODevice::Truncate)) { + QByteArray buf; + buf.clear(); + if(s1 =="English") {// English--> Vietnamese + QMessageBox::information(this,tr("提示"),tr("重启后切换到越南语界面")); + buf.append("Vietnamese\r\n"); + buf.append("YN_utf8.txt\r\n"); + } + else if(s1 =="Vietnamese") {// Vietnamese--> Chinese + QMessageBox::information(this,tr("提示"),tr("重启后切换到中文界面")); + buf.append("Chinese\r\n"); + buf.append("WINPY_utf8.txt\r\n"); + } + else{// Chinese--> English + QMessageBox::information(this,tr("提示"),tr("重启后切换到英文界面")); + buf.append("English\r\n"); + buf.append("WINPY_utf8.txt\r\n"); + } + file.write(buf); + file.close(); + setInterfaceMode(); + } +*/ +} + +void SystemSetting::setInterfaceMode() +{ + QString s1 = Public::ReadLanguageName(); + if(s1 =="English") {// English--> Vietnamese + ui->pushButtonInterFace->setText( tr("Tiếng Việt(Vietnamese interface)")); + } + else if(s1 =="Vietnamese") {// Vietnamese--> Chinese + ui->pushButtonInterFace->setText( tr("Chinese interface(中文界面)")); + } + else{// Chinese--> English + ui->pushButtonInterFace->setText( tr("English interface(英文界面)")); + } + +} diff --git a/SystemSetting.h b/SystemSetting.h index f8aaabc..9ec1d0e 100644 --- a/SystemSetting.h +++ b/SystemSetting.h @@ -1,70 +1,70 @@ -#ifndef SSYSTEMSETTING_H -#define SSYSTEMSETTING_H - -#include -#include -#include "ParaSettingUI.h" -#include "TimeSettingDialog.h" -#include -#include "DialogAuthorization.h" -#include "dlgmutilanguage.h" -#include -namespace Ui { -class SystemSetting; -} - -class SystemSetting : public QWidget,public ParaSettingUI -{ - Q_OBJECT - -public: - explicit SystemSetting(QWidget *parent = 0); - ~SystemSetting(); - - void updateSysParaToUI(); //重载 - void applyUIPara(); //重载 - void updateSysStatusToUI(); //重载 - QProgressBar progressBar; - void updateReclaimTime(int time); - void updateViscosityAdjust(int offset); - void updateAuthorization(int auth); - void setSpinBoxPressureMaxValue(int pressureVal); - void SystemSettingLog(); - - bool lastHighVoltageOpen; - -public slots: - void setFreqFixVisible(bool visible); - -Q_SIGNALS: - void changeEditMode(int); - void setRunStatus(QString); - void pressureAdjust(); -private slots: - void setInterfaceMode(); - void SystemupdateSysParaToUI(); - - void on_spinBoxReclaimPumpPower_valueChanged(int arg1); - void on_pushButtonCleanUP_pressed(); - void on_pushButtonHighVoltageData_pressed(); - void on_pushButtonApply_pressed(); - void on_pushButtonSearchBestOscillatorVoltage_pressed(); - void on_pushButtonSearchBestOscillatorFreq_pressed(); - void timerHandler(); - void on_spinBoxOscillatorVoltage_valueChanged(int arg1); - void on_pushButtonInterFace_pressed(); - void ondialogAuthorizationAccepted(); - void onCleanUPNow(); - void timerHandler2(); - void autoControlPressure(); - -private: - Ui::SystemSetting *ui; - DlgMutiLanguage dlgLanguage; - QTimer *timer,*timer2, *SetinkcloseCountTimer, *timerAuto; - unsigned char enCleanUpAppendFlag; // 0空闲,1关开回收槽,2手动,3清洗,4恢复,5停止,6 - bool r_PumpValveControledByHand; - DialogAuthorization *dialogUpateMm; -}; - -#endif // SSYSTEMSETTING_H +#ifndef SSYSTEMSETTING_H +#define SSYSTEMSETTING_H + +#include +#include +#include "ParaSettingUI.h" +#include "TimeSettingDialog.h" +#include +#include "DialogAuthorization.h" +#include "dlgmutilanguage.h" +#include +namespace Ui { +class SystemSetting; +} + +class SystemSetting : public QWidget,public ParaSettingUI +{ + Q_OBJECT + +public: + explicit SystemSetting(QWidget *parent = 0); + ~SystemSetting(); + + void updateSysParaToUI(); //重载 + void applyUIPara(); //重载 + void updateSysStatusToUI(); //重载 + QProgressBar progressBar; + void updateReclaimTime(int time); + void updateViscosityAdjust(int offset); + void updateAuthorization(int auth); + void setSpinBoxPressureMaxValue(int pressureVal); + void SystemSettingLog(); + + bool lastHighVoltageOpen; + +public slots: + void setFreqFixVisible(bool visible); + +Q_SIGNALS: + void changeEditMode(int); + void setRunStatus(QString); + void pressureAdjust(); +private slots: + void setInterfaceMode(); + void SystemupdateSysParaToUI(); + + void on_spinBoxReclaimPumpPower_valueChanged(int arg1); + void on_pushButtonCleanUP_pressed(); + void on_pushButtonHighVoltageData_pressed(); + void on_pushButtonApply_pressed(); + void on_pushButtonSearchBestOscillatorVoltage_pressed(); + void on_pushButtonSearchBestOscillatorFreq_pressed(); + void timerHandler(); + void on_spinBoxOscillatorVoltage_valueChanged(int arg1); + void on_pushButtonInterFace_pressed(); + void ondialogAuthorizationAccepted(); + void onCleanUPNow(); + void timerHandler2(); + void autoControlPressure(); + +private: + Ui::SystemSetting *ui; + DlgMutiLanguage dlgLanguage; + QTimer *timer,*timer2, *SetinkcloseCountTimer, *timerAuto; + unsigned char enCleanUpAppendFlag; // 0空闲,1关开回收槽,2手动,3清洗,4恢复,5停止,6 + bool r_PumpValveControledByHand; + DialogAuthorization *dialogUpateMm; +}; + +#endif // SSYSTEMSETTING_H diff --git a/inkjetprinter.ui b/inkjetprinter.ui index 17625d8..019231c 100644 --- a/inkjetprinter.ui +++ b/inkjetprinter.ui @@ -1,2595 +1,2595 @@ - - - InkJetPrinter - - - - 0 - 0 - 800 - 600 - - - - - 0 - 0 - - - - TabWidget - - - QTabBar::scroller -{ - width:60px; -}; -background-color: rgb(186, 189, 182); - - - QTabWidget::North - - - QTabWidget::Rounded - - - 0 - - - - 16 - 16 - - - - true - - - false - - - - 主窗口 - - - - - 信息编辑 - - - - - 图案编辑 - - - - - 打印设置 - - - - - 触发设置 - - - - - 系统设置 - - - - - 系统管理 - - - - - 其他信息 - - - - - 日志信息 - - - - - 网络管理 - - - - - 电压调整 - - - - - 510 - 410 - 85 - 27 - - - - Save - - - - - - 10 - 0 - 611 - 411 - - - - Qt::StrongFocus - - - 3 - - - - 不连续电压 - - - - - 10 - 0 - 581 - 371 - - - - - - - vol0 - - - - - - - 20 - - - 4096 - - - 1 - - - - - - - 20 - - - 4095 - - - - - - - vol1 - - - - - - - vol2 - - - - - - - vol3 - - - - - - - vol4 - - - - - - - vol5 - - - - - - - vol6 - - - - - - - vol7 - - - - - - - vol8 - - - - - - - vol9 - - - - - - - vol10 - - - - - - - vol11 - - - - - - - 20 - - - 4095 - - - - - - - 20 - - - 4095 - - - - - - - 20 - - - 4095 - - - - - - - 20 - - - 4095 - - - - - - - 20 - - - 4095 - - - - - - - 20 - - - 4095 - - - - - - - 20 - - - 4095 - - - - - - - 20 - - - 4095 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - vol12 - - - - - - - vol13 - - - - - - - vol14 - - - - - - - vol15 - - - - - - - vol16 - - - - - - - vol17 - - - - - - - vol18 - - - - - - - vol19 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - vol20 - - - - - - - vol21 - - - - - - - vol22 - - - - - - - vol23 - - - - - - - vol24 - - - - - - - vol25 - - - - - - - vol26 - - - - - - - vol27 - - - - - - - vol28 - - - - - - - vol29 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - vol30 - - - - - - - vol31 - - - - - - - vol32 - - - - - - - vol33 - - - - - - - vol34 - - - - - - - vol35 - - - - - - - vol36 - - - - - - - vol37 - - - - - - - vol38 - - - - - - - vol39 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - - - 连续电压 - - - - - 0 - 0 - 581 - 371 - - - - - - - vol0 - - - - - - - 20 - - - 4096 - - - 1 - - - - - - - 20 - - - 4095 - - - - - - - vol1 - - - - - - - vol2 - - - - - - - vol3 - - - - - - - vol4 - - - - - - - vol5 - - - - - - - vol6 - - - - - - - vol7 - - - - - - - vol8 - - - - - - - vol9 - - - - - - - vol10 - - - - - - - vol11 - - - - - - - 20 - - - 4095 - - - - - - - 20 - - - 4095 - - - - - - - 20 - - - 4095 - - - - - - - 20 - - - 4095 - - - - - - - 20 - - - 4095 - - - - - - - 20 - - - 4095 - - - - - - - 20 - - - 4095 - - - - - - - 20 - - - 4095 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - vol12 - - - - - - - vol13 - - - - - - - vol14 - - - - - - - vol15 - - - - - - - vol16 - - - - - - - vol17 - - - - - - - vol18 - - - - - - - vol19 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - vol20 - - - - - - - vol21 - - - - - - - vol22 - - - - - - - vol23 - - - - - - - vol24 - - - - - - - vol25 - - - - - - - vol26 - - - - - - - vol27 - - - - - - - vol28 - - - - - - - vol29 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - vol30 - - - - - - - vol31 - - - - - - - vol32 - - - - - - - vol33 - - - - - - - vol34 - - - - - - - vol35 - - - - - - - vol36 - - - - - - - vol37 - - - - - - - vol38 - - - - - - - vol39 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - - - 满列电压 - - - - - 10 - 0 - 581 - 371 - - - - - - - fvol0 - - - - - - - 20 - - - 4096 - - - 1 - - - - - - - 20 - - - 4095 - - - - - - - fvol1 - - - - - - - fvol2 - - - - - - - fvol3 - - - - - - - fvol4 - - - - - - - fvol5 - - - - - - - fvol6 - - - - - - - fvol7 - - - - - - - fvol8 - - - - - - - fvol9 - - - - - - - fvol10 - - - - - - - fvol11 - - - - - - - 20 - - - 4095 - - - - - - - 20 - - - 4095 - - - - - - - 20 - - - 4095 - - - - - - - 20 - - - 4095 - - - - - - - 20 - - - 4095 - - - - - - - 20 - - - 4095 - - - - - - - 20 - - - 4095 - - - - - - - 20 - - - 4095 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - fvol12 - - - - - - - fvol13 - - - - - - - fvol14 - - - - - - - fvol15 - - - - - - - fvol16 - - - - - - - fvol17 - - - - - - - fvol18 - - - - - - - fvol19 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - fvol20 - - - - - - - fvol21 - - - - - - - fvol22 - - - - - - - fvol23 - - - - - - - fvol24 - - - - - - - fvol25 - - - - - - - fvol26 - - - - - - - fvol27 - - - - - - - fvol28 - - - - - - - fvol29 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - fvol30 - - - - - - - fvol31 - - - - - - - fvol32 - - - - - - - fvol33 - - - - - - - fvol34 - - - - - - - fvol35 - - - - - - - fvol36 - - - - - - - fvol37 - - - - - - - fvol38 - - - - - - - fvol39 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - 20 - - - 4096 - - - - - - - - - 其他调整 - - - - - 0 - 10 - 154 - 31 - - - - - - - 整体缩放(%) : - - - - - - - 40 - - - 150 - - - 100 - - - - - - - - - - - FpgaDebug - - - - - 320 - 60 - 101 - 27 - - - - WriteByte - - - - - - 480 - 60 - 101 - 27 - - - - ReadByte - - - - - - 20 - 10 - 581 - 31 - - - - - - - Address: - - - - - - - Qt::Vertical - - - - - - - 65535 - - - - - - - Qt::Vertical - - - - - - - Value: - - - - - - - Qt::Vertical - - - - - - - 255 - - - - - - - - - 20 - 120 - 581 - 31 - - - - - - - Address: - - - - - - - Qt::Vertical - - - - - - - 65535 - - - - - - - Qt::Vertical - - - - - - - Value: - - - - - - - Qt::Vertical - - - - - - - 65535 - - - - - - - - - 320 - 180 - 101 - 27 - - - - WriteWord - - - - - - 480 - 180 - 101 - 27 - - - - ReadWord - - - - - - 480 - 370 - 101 - 27 - - - - ReadDword - - - - - - 320 - 370 - 101 - 27 - - - - WriteDword - - - - - - 20 - 250 - 581 - 80 - - - - - - - Address: - - - - - - - 65535 - - - - - - - ValueH: - - - - - - - 65535 - - - - - - - 65535 - - - - - - - ValueL: - - - - - - - - - - MainWindow - QWidget -
mainwindow.h
- 1 -
- - PicEdit - QWidget -
PicEdit.h
- 1 -
- - PrintSetting - QWidget -
PrintSetting.h
- 1 -
- - SystemSetting - QWidget -
SystemSetting.h
- 1 -
- - OtherInfo - QWidget -
OtherInfo.h
- 1 -
- - LogInfo - QWidget -
LogInfo.h
- 1 -
- - TriggerCtrl - QWidget -
TriggerCtrl.h
- 1 -
- - SystemManage - QWidget -
SystemManage.h
- 1 -
- - ZkEdit - QWidget -
ZkEdit.h
- 1 -
- - NetworkManager - QWidget -
Network/NetworkManager.h
- 1 -
-
- - -
+ + + InkJetPrinter + + + + 0 + 0 + 800 + 600 + + + + + 0 + 0 + + + + TabWidget + + + QTabBar::scroller +{ + width:60px; +}; +background-color: rgb(186, 189, 182); + + + QTabWidget::North + + + QTabWidget::Rounded + + + 0 + + + + 16 + 16 + + + + true + + + false + + + + 主窗口 + + + + + 信息编辑 + + + + + 图案编辑 + + + + + 打印设置 + + + + + 触发设置 + + + + + 系统设置 + + + + + 系统管理 + + + + + 其他信息 + + + + + 日志信息 + + + + + 网络管理 + + + + + 电压调整 + + + + + 510 + 410 + 85 + 27 + + + + Save + + + + + + 10 + 0 + 611 + 411 + + + + Qt::StrongFocus + + + 3 + + + + 不连续电压 + + + + + 10 + 0 + 581 + 371 + + + + + + + vol0 + + + + + + + 20 + + + 4096 + + + 1 + + + + + + + 20 + + + 4095 + + + + + + + vol1 + + + + + + + vol2 + + + + + + + vol3 + + + + + + + vol4 + + + + + + + vol5 + + + + + + + vol6 + + + + + + + vol7 + + + + + + + vol8 + + + + + + + vol9 + + + + + + + vol10 + + + + + + + vol11 + + + + + + + 20 + + + 4095 + + + + + + + 20 + + + 4095 + + + + + + + 20 + + + 4095 + + + + + + + 20 + + + 4095 + + + + + + + 20 + + + 4095 + + + + + + + 20 + + + 4095 + + + + + + + 20 + + + 4095 + + + + + + + 20 + + + 4095 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + vol12 + + + + + + + vol13 + + + + + + + vol14 + + + + + + + vol15 + + + + + + + vol16 + + + + + + + vol17 + + + + + + + vol18 + + + + + + + vol19 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + vol20 + + + + + + + vol21 + + + + + + + vol22 + + + + + + + vol23 + + + + + + + vol24 + + + + + + + vol25 + + + + + + + vol26 + + + + + + + vol27 + + + + + + + vol28 + + + + + + + vol29 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + vol30 + + + + + + + vol31 + + + + + + + vol32 + + + + + + + vol33 + + + + + + + vol34 + + + + + + + vol35 + + + + + + + vol36 + + + + + + + vol37 + + + + + + + vol38 + + + + + + + vol39 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + + + 连续电压 + + + + + 0 + 0 + 581 + 371 + + + + + + + vol0 + + + + + + + 20 + + + 4096 + + + 1 + + + + + + + 20 + + + 4095 + + + + + + + vol1 + + + + + + + vol2 + + + + + + + vol3 + + + + + + + vol4 + + + + + + + vol5 + + + + + + + vol6 + + + + + + + vol7 + + + + + + + vol8 + + + + + + + vol9 + + + + + + + vol10 + + + + + + + vol11 + + + + + + + 20 + + + 4095 + + + + + + + 20 + + + 4095 + + + + + + + 20 + + + 4095 + + + + + + + 20 + + + 4095 + + + + + + + 20 + + + 4095 + + + + + + + 20 + + + 4095 + + + + + + + 20 + + + 4095 + + + + + + + 20 + + + 4095 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + vol12 + + + + + + + vol13 + + + + + + + vol14 + + + + + + + vol15 + + + + + + + vol16 + + + + + + + vol17 + + + + + + + vol18 + + + + + + + vol19 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + vol20 + + + + + + + vol21 + + + + + + + vol22 + + + + + + + vol23 + + + + + + + vol24 + + + + + + + vol25 + + + + + + + vol26 + + + + + + + vol27 + + + + + + + vol28 + + + + + + + vol29 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + vol30 + + + + + + + vol31 + + + + + + + vol32 + + + + + + + vol33 + + + + + + + vol34 + + + + + + + vol35 + + + + + + + vol36 + + + + + + + vol37 + + + + + + + vol38 + + + + + + + vol39 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + + + 满列电压 + + + + + 10 + 0 + 581 + 371 + + + + + + + fvol0 + + + + + + + 20 + + + 4096 + + + 1 + + + + + + + 20 + + + 4095 + + + + + + + fvol1 + + + + + + + fvol2 + + + + + + + fvol3 + + + + + + + fvol4 + + + + + + + fvol5 + + + + + + + fvol6 + + + + + + + fvol7 + + + + + + + fvol8 + + + + + + + fvol9 + + + + + + + fvol10 + + + + + + + fvol11 + + + + + + + 20 + + + 4095 + + + + + + + 20 + + + 4095 + + + + + + + 20 + + + 4095 + + + + + + + 20 + + + 4095 + + + + + + + 20 + + + 4095 + + + + + + + 20 + + + 4095 + + + + + + + 20 + + + 4095 + + + + + + + 20 + + + 4095 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + fvol12 + + + + + + + fvol13 + + + + + + + fvol14 + + + + + + + fvol15 + + + + + + + fvol16 + + + + + + + fvol17 + + + + + + + fvol18 + + + + + + + fvol19 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + fvol20 + + + + + + + fvol21 + + + + + + + fvol22 + + + + + + + fvol23 + + + + + + + fvol24 + + + + + + + fvol25 + + + + + + + fvol26 + + + + + + + fvol27 + + + + + + + fvol28 + + + + + + + fvol29 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + fvol30 + + + + + + + fvol31 + + + + + + + fvol32 + + + + + + + fvol33 + + + + + + + fvol34 + + + + + + + fvol35 + + + + + + + fvol36 + + + + + + + fvol37 + + + + + + + fvol38 + + + + + + + fvol39 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + 20 + + + 4096 + + + + + + + + + 其他调整 + + + + + 0 + 10 + 154 + 31 + + + + + + + 整体缩放(%) : + + + + + + + 40 + + + 150 + + + 100 + + + + + + + + + + + FpgaDebug + + + + + 320 + 60 + 101 + 27 + + + + WriteByte + + + + + + 480 + 60 + 101 + 27 + + + + ReadByte + + + + + + 20 + 10 + 581 + 31 + + + + + + + Address: + + + + + + + Qt::Vertical + + + + + + + 65535 + + + + + + + Qt::Vertical + + + + + + + Value: + + + + + + + Qt::Vertical + + + + + + + 255 + + + + + + + + + 20 + 120 + 581 + 31 + + + + + + + Address: + + + + + + + Qt::Vertical + + + + + + + 65535 + + + + + + + Qt::Vertical + + + + + + + Value: + + + + + + + Qt::Vertical + + + + + + + 65535 + + + + + + + + + 320 + 180 + 101 + 27 + + + + WriteWord + + + + + + 480 + 180 + 101 + 27 + + + + ReadWord + + + + + + 480 + 370 + 101 + 27 + + + + ReadDword + + + + + + 320 + 370 + 101 + 27 + + + + WriteDword + + + + + + 20 + 250 + 581 + 80 + + + + + + + Address: + + + + + + + 65535 + + + + + + + ValueH: + + + + + + + 65535 + + + + + + + 65535 + + + + + + + ValueL: + + + + + + + + + + MainWindow + QWidget +
mainwindow.h
+ 1 +
+ + PicEdit + QWidget +
PicEdit.h
+ 1 +
+ + PrintSetting + QWidget +
PrintSetting.h
+ 1 +
+ + SystemSetting + QWidget +
SystemSetting.h
+ 1 +
+ + OtherInfo + QWidget +
OtherInfo.h
+ 1 +
+ + LogInfo + QWidget +
LogInfo.h
+ 1 +
+ + TriggerCtrl + QWidget +
TriggerCtrl.h
+ 1 +
+ + SystemManage + QWidget +
SystemManage.h
+ 1 +
+ + ZkEdit + QWidget +
ZkEdit.h
+ 1 +
+ + NetworkManager + QWidget +
Network/NetworkManager.h
+ 1 +
+
+ + +
diff --git a/mainwindow.cpp b/mainwindow.cpp index a1bcdc9..196e951 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -2079,8 +2079,12 @@ void MainWindow::airPushingProcess() } if(sysPara->status.airPushingOnTime >= sysPara->para.airPushDurationSec * 1000){ - sysPara->devOp->controlViscosityPump(false); - sysPara->devOp->controlCycleValve(false); + + if(sysPara->devOp->isViscosityPumpOpen()) + sysPara->devOp->controlViscosityPump(false); + + if(sysPara->devOp->isCycleValveOpen()) + sysPara->devOp->controlCycleValve(false); if(!sysPara->devOp->isReclaimPumpOpen()) sysPara->devOp->controlReclaimPump(true, false); @@ -2225,13 +2229,16 @@ void MySleep(unsigned int msec); * 关机前务必保存参数 * */ void MainWindow::checkForPowerOff(){ + if(m_powerOffInProgress) + return; + if(sysPara->status.powerOffAppending){ + m_powerOffInProgress = true; if(!sysPara->status.selfCheckDone) sysPara->status.selfCheckDone = true; this->setDisabled(true); emit setDisableAll(); - ////////关机时提高转速和回收泵压力,粘度泵和循环阀///// - quint16 gearPumpValue_backup = sysPara->para.gearPumpValue; + ////////关机时通过闭环控制维持压力,控制目标不超过650///// int reclaimPumpPWMWidth_backup = sysPara->para.reclaimPumpPWMWidth;; if(!(sysPara->status.statWarn & WARN_STATUS_INK_WARN)) { @@ -2257,17 +2264,11 @@ void MainWindow::checkForPowerOff(){ } } sysPara->devOp->controlReclaimTankOpen(true); - sysPara->status.isPumpValveControledByHand = true; //停止自动 + sysPara->status.isPumpValveControledByHand = true; // 阀门保持手动,隔膜泵由关机闭环控制 if(sysPara->para.gearPumpEnable ){ - if(!sysPara->para.flagOfReclaimPumEnable){ - sysPara->para.gearPumpValue = 360; - sysPara->devOp->WriteMoterPump(); - } - else{ + if(sysPara->para.flagOfReclaimPumEnable) sysPara->devOp->controlReclaimPump(true,false); - sysPara->para.gearPumpValue = 0; - sysPara->devOp->WriteMoterPump(); - } + // 不再固定输出360,隔膜泵由pressureAdj按关机目标压力闭环调节 } else{ sysPara->para.reclaimPumpPWMWidth = 95; @@ -2298,7 +2299,10 @@ void MainWindow::checkForPowerOff(){ updateTotalCnt(0); sysPara->saveParaToFile(); // 关机前将相关配置保存 } + // 退出关机压力维持阶段,后续关闭泵阀时禁止隔膜泵再次启动 sysPara->status.powerOffAppending = false; + sysPara->para.gearPumpValue = 0; + sysPara->devOp->WriteMoterPump(); if(!TEST_MODE){ for(int i=7;i>0;i--) { @@ -2317,7 +2321,8 @@ void MainWindow::checkForPowerOff(){ } } emit CloseJd(); - sysPara->para.gearPumpValue=gearPumpValue_backup; + sysPara->para.gearPumpValue = 0; + sysPara->devOp->WriteMoterPump(); sysPara->para.reclaimPumpPWMWidth = reclaimPumpPWMWidth_backup; sysPara->devOp->controlCompressPump(false); setRunStatus(tr("准备关机......")); @@ -4435,15 +4440,9 @@ void MainWindow::on_pushButton_Reboot_clicked() sysPara->devOp->controlReclaimTankOpen(true); sysPara->status.isPumpValveControledByHand = true; //停止自动 if(sysPara->para.gearPumpEnable ){ - if(!sysPara->para.flagOfReclaimPumEnable){ - sysPara->para.gearPumpValue = 360; - sysPara->devOp->WriteMoterPump(); - } - else{ + if(sysPara->para.flagOfReclaimPumEnable) sysPara->devOp->controlReclaimPump(true,false); - sysPara->para.gearPumpValue = 0; - sysPara->devOp->WriteMoterPump(); - } + // 不再固定输出360,由闭环控制维持压力 } else{ sysPara->para.reclaimPumpPWMWidth = 95; diff --git a/mainwindow.h b/mainwindow.h index 5a959cc..0ed259b 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -243,6 +243,7 @@ private: bool printingFlag; //判断当前是否在打印 bool startPrintingFlag; bool previewFlag; + bool m_powerOffInProgress = false; // 防止MySleep处理事件时重复进入关机流程 int searchExpiryVar(QString html = "");//检索有效期变量 void ExpiryDotUpdate(char Mode); diff --git a/systemsetting.ui b/systemsetting.ui index 6a70a8e..8bcbaad 100644 --- a/systemsetting.ui +++ b/systemsetting.ui @@ -1,1062 +1,1062 @@ - - - SystemSetting - - - - 0 - 0 - 800 - 600 - - - - - 0 - 0 - - - - Qt::StrongFocus - - - Form - - - - - - - - QLayout::SetDefaultConstraint - - - 3 - - - 3 - - - 3 - - - 3 - - - - - 电机电流: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - 晶振电压(%): - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - - - - °C - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - - - - - - - - 回收泵力度(%): - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - 压力: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - 喷嘴直径: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - 脉冲计数器: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - 0 - 37 - - - - - 16777215 - 37 - - - - 30 - - - 59 - - - - - - - - 0 - 0 - - - - - 64K - - - - - 83K - - - - - 96K - - - - - 128K - - - - - 新晶振 - - - - - - - - 晶振频率: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - 粘度: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - 0 - 37 - - - - - 16777215 - 37 - - - - 80 - - - 750 - - - 10 - - - 300 - - - - - - - 高压包容差: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - 0 - 37 - - - - - 16777215 - 37 - - - - 2 - - - 99 - - - 10 - - - - - - - - 0 - 0 - - - - - 0 - 37 - - - - - 16777215 - 37 - - - - 99 - - - 50 - - - - - - - - 0 - 0 - - - - - 50 (UM) - - - - - 60 (UM) - - - - - 70 (UM) - - - - - - - - - 0 - 0 - - - - - 0 - 37 - - - - - 16777215 - 37 - - - - - 0 - - - - - 0.6 - - - - - 1.0 - - - - - 1.6 - - - - - 2.0 - - - - - - - - - 0 - 0 - - - - - 0 - 37 - - - - - 16777215 - 37 - - - - - 文本模式 - - - - - 点阵模式 - - - - - 场景模式 - - - - - - - - - - - - - - - - 0 - 0 - - - - - 0 - 37 - - - - - 16777215 - 37 - - - - 1 - - - 59 - - - - - - - true - - - - 0 - 0 - - - - 0 - - - 70 - - - - - - - - 0 - 0 - - - - 500 - - - 3800 - - - - - - - - 0 - 0 - - - - 5000 - - - - - - - 信息编辑模式: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - - - - 频率修正: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - 粘度泵动作间隔(秒): - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Hz - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - 隔膜位置: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - -80000 - - - 80000 - - - 0 - - - - - - - - 0 - 0 - - - - - 0 - 37 - - - - - 16777215 - 37 - - - - 5 - - - 300 - - - 5 - - - 50 - - - - - - - 墨水温度: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - 粘度校正(%): - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - 喷头温度: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - - - - 回收槽开关时间: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - 隔膜位置偏移: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - 0 - 37 - - - - - 16777215 - 37 - - - - - 5 - - - - - 10 - - - - - 15 - - - - - 20 - - - - - 25 - - - - - 30 - - - - - 40 - - - - - 45 - - - - - 50 - - - - - 55 - - - - - 60 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Qt::LeftToRight - - - 风扇开启温度: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - 0 - 37 - - - - 25 - - - - - - - °C - - - - - - - 排气时间(秒): - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 37 - - - - QAbstractSpinBox::NoButtons - - - 1 - - - 300 - - - 4 - - - - - - - - - Qt::Horizontal - - - - - - - - - true - - - - 0 - 40 - - - - - 260 - 16777215 - - - - Qt::LeftToRight - - - 重置高压 - - - - - - - true - - - - 0 - 40 - - - - - 260 - 16777215 - - - - 界面语言设置 - - - - - - - - 0 - 40 - - - - 喷嘴逆清洗 - - - - - - - - - Qt::Horizontal - - - - - - - 3 - - - 3 - - - 3 - - - 3 - - - - - - 0 - 70 - - - - 搜索最佳晶振频率 - - - - :/icon/searchsuitablefrequency.png:/icon/searchsuitablefrequency.png - - - - - - - - 0 - 70 - - - - 搜索最佳晶振电压 - - - - :/icon/searchsuitablevoltage.png:/icon/searchsuitablevoltage.png - - - - - - - - 0 - 70 - - - - - - - - - 255 - 170 - 127 - - - - - - - - - 255 - 170 - 127 - - - - - - - - - 255 - 170 - 127 - - - - - - - - 应用当前配置 - - - - :/icon/apply.png:/icon/apply.png - - - - - - - - - - - - ClickLabel - QLabel -
ClickLabel.h
-
-
- - - - -
+ + + SystemSetting + + + + 0 + 0 + 800 + 600 + + + + + 0 + 0 + + + + Qt::StrongFocus + + + Form + + + + + + + + QLayout::SetDefaultConstraint + + + 3 + + + 3 + + + 3 + + + 3 + + + + + 电机电流: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + 晶振电压(%): + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + + °C + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + + + + + + + 回收泵力度(%): + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + 压力: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + 喷嘴直径: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + 脉冲计数器: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 0 + 37 + + + + + 16777215 + 37 + + + + 30 + + + 59 + + + + + + + + 0 + 0 + + + + + 64K + + + + + 83K + + + + + 96K + + + + + 128K + + + + + 新晶振 + + + + + + + + 晶振频率: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + 粘度: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 0 + 37 + + + + + 16777215 + 37 + + + + 80 + + + 750 + + + 10 + + + 300 + + + + + + + 高压包容差: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 0 + 37 + + + + + 16777215 + 37 + + + + 2 + + + 99 + + + 10 + + + + + + + + 0 + 0 + + + + + 0 + 37 + + + + + 16777215 + 37 + + + + 99 + + + 50 + + + + + + + + 0 + 0 + + + + + 50 (UM) + + + + + 60 (UM) + + + + + 70 (UM) + + + + + + + + + 0 + 0 + + + + + 0 + 37 + + + + + 16777215 + 37 + + + + + 0 + + + + + 0.6 + + + + + 1.0 + + + + + 1.6 + + + + + 2.0 + + + + + + + + + 0 + 0 + + + + + 0 + 37 + + + + + 16777215 + 37 + + + + + 文本模式 + + + + + 点阵模式 + + + + + 场景模式 + + + + + + + + + + + + + + + + 0 + 0 + + + + + 0 + 37 + + + + + 16777215 + 37 + + + + 1 + + + 59 + + + + + + + true + + + + 0 + 0 + + + + 0 + + + 70 + + + + + + + + 0 + 0 + + + + 500 + + + 3800 + + + + + + + + 0 + 0 + + + + 5000 + + + + + + + 信息编辑模式: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + + 频率修正: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + 粘度泵动作间隔(秒): + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Hz + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + 隔膜位置: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + -80000 + + + 80000 + + + 0 + + + + + + + + 0 + 0 + + + + + 0 + 37 + + + + + 16777215 + 37 + + + + 5 + + + 300 + + + 5 + + + 50 + + + + + + + 墨水温度: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + 粘度校正(%): + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + 喷头温度: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + + 回收槽开关时间: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + 隔膜位置偏移: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 0 + 37 + + + + + 16777215 + 37 + + + + + 5 + + + + + 10 + + + + + 15 + + + + + 20 + + + + + 25 + + + + + 30 + + + + + 40 + + + + + 45 + + + + + 50 + + + + + 55 + + + + + 60 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Qt::LeftToRight + + + 风扇开启温度: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 0 + 37 + + + + 25 + + + + + + + °C + + + + + + + 排气时间(秒): + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 37 + + + + QAbstractSpinBox::NoButtons + + + 1 + + + 300 + + + 4 + + + + + + + + + Qt::Horizontal + + + + + + + + + true + + + + 0 + 40 + + + + + 260 + 16777215 + + + + Qt::LeftToRight + + + 重置高压 + + + + + + + true + + + + 0 + 40 + + + + + 260 + 16777215 + + + + 界面语言设置 + + + + + + + + 0 + 40 + + + + 喷嘴逆清洗 + + + + + + + + + Qt::Horizontal + + + + + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 70 + + + + 搜索最佳晶振频率 + + + + :/icon/searchsuitablefrequency.png:/icon/searchsuitablefrequency.png + + + + + + + + 0 + 70 + + + + 搜索最佳晶振电压 + + + + :/icon/searchsuitablevoltage.png:/icon/searchsuitablevoltage.png + + + + + + + + 0 + 70 + + + + + + + + + 255 + 170 + 127 + + + + + + + + + 255 + 170 + 127 + + + + + + + + + 255 + 170 + 127 + + + + + + + + 应用当前配置 + + + + :/icon/apply.png:/icon/apply.png + + + + + + + + + + + + ClickLabel + QLabel +
ClickLabel.h
+
+
+ + + + +
From a882c30e093cffbd9f851872b3596eb329b1318f Mon Sep 17 00:00:00 2001 From: Byons Date: Mon, 7 Sep 2026 17:30:48 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E9=99=86=E5=B7=A5=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=9B=9E=E6=94=B6=E6=B3=B5=E6=A8=A1=E5=BC=8F=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E5=90=8E=E5=8E=8B=E5=8A=9B=E5=A4=B1=E6=8E=A7=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E3=80=81=E6=B7=BB=E5=8A=A0=E9=80=BB=E8=BE=91=E5=9C=A8=E9=9A=94?= =?UTF-8?q?=E8=86=9C=E6=B3=B5=E7=89=88=E6=9C=AC=E4=B8=8B=E7=A6=81=E7=94=A8?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E5=9B=9E=E6=94=B6=E6=B3=B5=E5=8B=BE=E9=80=89?= =?UTF-8?q?=E6=A1=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- InkJetPrinter.cpp | 21 ++++++++++++++------- PrintSetting.cpp | 2 +- SysPara.cpp | 5 +++++ 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/InkJetPrinter.cpp b/InkJetPrinter.cpp index 76e1306..303ff56 100644 --- a/InkJetPrinter.cpp +++ b/InkJetPrinter.cpp @@ -1417,7 +1417,7 @@ void InkJetPrinter::timerHandler(void){ test_flag = 0; } if(pulse_1s) { - if(sysPara->status.selfCheckDone && sysPara->para.gearPumpEnable && sysPara->para.flagOfReclaimPumEnable) + if(sysPara->status.selfCheckDone && sysPara->para.gearPumpEnable) checkPressureControl(); if((QTime::currentTime()>=QTime(00,00,00))&&(QTime::currentTime()<=QTime(00,00,02))&&sysPara->para.Reciclar){ if(ui->tabMainWindow->getCurrPrintStatus() != 1){ @@ -1679,12 +1679,19 @@ void InkJetPrinter::timerHandler(void){ m_lastReclaimMode = sysPara->para.flagOfReclaimPumEnable; gearPumpRunNormalFlag = false; // 泄漏保护重新学习 gearPumpRunNormalValue = 0.0f; - // 重置隔膜泵状态机,适应新模式 - m_pumpState = DPUMP_STOPPED; - m_stateChangeCount = 0; - m_adjSkip = 0; - m_lastActualPressure = 0; - m_bufValidCount = 0; + // 重置隔膜泵状态机,适应新模式 + u = 0.0f; + pid.integral = 0.0f; + pid.err_last = 0.0f; + sysPara->para.gearPumpValue = 0; + sysPara->devOp->WriteMoterPump(); + if(!sysPara->para.flagOfReclaimPumEnable) + sysPara->devOp->controlReclaimPump(false, false); + m_pumpState = DPUMP_STOPPED; + m_stateChangeCount = 0; + m_adjSkip = 0; + m_lastActualPressure = 0; + m_bufValidCount = 0; for(int i = 0; i < 10; i++) m_pressureBuf[i] = 0; m_bufIdx = 0; } diff --git a/PrintSetting.cpp b/PrintSetting.cpp index 5d394e6..41e65aa 100644 --- a/PrintSetting.cpp +++ b/PrintSetting.cpp @@ -2233,7 +2233,7 @@ void PrintSetting::ModuleDecimalHideDisplay(const bool bEnabled) } void PrintSetting::specailMachineSetting(bool enable){ - ui->checkBox_ReclaimPumpEnable->setEnabled(enable); + ui->checkBox_ReclaimPumpEnable->setEnabled(enable && PUMP_VER == QString("G")); ui->spinBox_gearPumpSpeedAlarm->setEnabled(enable); } diff --git a/SysPara.cpp b/SysPara.cpp index 1d5ce19..9133b64 100644 --- a/SysPara.cpp +++ b/SysPara.cpp @@ -23,6 +23,7 @@ #include #include #include +#include "VerBVersion.h" #define VNLG SysPara::SysPara(void): @@ -60,6 +61,10 @@ SysPara::SysPara(void): //para.HVFaultCloseEn= 1; //开机默认为1,允许高压故障自动关闭回收功能 + // 隔膜泵版本强制开启回收泵模式 + if(PUMP_VER == QString("D")) + para.flagOfReclaimPumEnable = true; + devOp->writeFpgaPrintPara(true); //系统起来的时候,将上次记录的配置写入fpga,比如晶振分频等信息 devOp->writeFpgaVariCtrl(); devOp->resumeFault(); From eb5d824e02002b46e41757394ddd4d9b7f2e6bd8 Mon Sep 17 00:00:00 2001 From: Byons Date: Mon, 7 Sep 2026 17:31:04 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=9B=9E=E6=BB=9A=E6=97=A7=E7=9A=84?= =?UTF-8?q?=E6=9C=80=E5=A4=A7=E9=80=9F=E5=BA=A6=E8=AE=A1=E7=AE=97=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mainwindow.cpp | 20 +++++++------------- mainwindow.h | 2 +- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/mainwindow.cpp b/mainwindow.cpp index 196e951..d054b99 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -708,12 +708,12 @@ bool MainWindow::updatePhaseIndicatorLight(){ return sysPara->status.lastPhaseFault; } -double MainWindow::getMaxSpeedCalcPara(){ +int MainWindow::getMaxSpeedCalcPara(){ sysPara->para.printRowDelay = sysPara->para.currPrintMode; if(sysPara->status.isPrinting == false) sysPara->status.pixNumPerCol = sysPara->status.currPrintRow; - // else - // sysPara->status.currPrintRow = sysPara->status.pixNumPerCol; + else + sysPara->status.currPrintRow = sysPara->status.pixNumPerCol; sysPara->para.pixNumPerCol = sysPara->status.pixNumPerCol; sysPara->para.reducedPixelNum = sysPara->para.reducedPixelNumRatio*sysPara->para.pixNumPerCol/100; @@ -726,15 +726,9 @@ double MainWindow::getMaxSpeedCalcPara(){ int dotNum = sysPara->para.divideRatio?(FPGA_SYS_HZ/(sysPara->para.divideRatio*2)):0;// 1s时间内墨点数 (即晶振频率 64000) int colNum = dotNumPerCol?dotNum/dotNumPerCol:0; // 第列可用墨点数 = 1s时间内墨点数/ 列需要墨点数 - double pulseNum = colNum*sysPara->para.synNumPerCol/(1<<8); //synNumPerCol是被放大后的值 + int pulseNum = colNum*sysPara->para.synNumPerCol/(1<<8); //synNumPerCol是被放大后的值 - if(sysPara->para.divideRatio == 0 || sysPara->para.synPulseNumPerMm == 0) - return 600.0f; - - double freq = (FPGA_SYS_HZ/(sysPara->para.divideRatio*2)); - double ddotNumPerCol = sysPara->status.currPrintRow - (sysPara->status.currPrintRow * sysPara->para.reducedPixelNumRatio / 100.0); - pulseNum = sysPara->para.printColDelay / sysPara->para.synPulseNumPerMm / 1000.0 * freq / ddotNumPerCol * 60.0; - return qBound(0.0, pulseNum, 600.0); + return pulseNum; } static int reclaimTankDelay = 0; @@ -800,8 +794,8 @@ void MainWindow::updateSysStatusToUI(){ //100ms } else { - double speed = getMaxSpeedCalcPara();//No67 - maxMM = int(speed * 1000.0); + int pulsePS = getMaxSpeedCalcPara();//No67 + maxMM = (pulsePS/sysPara->para.synPulseNumPerMm) * 60;// 列的最大间距 } ui->labelSynRate->setText(tr("%1.%2[%3.%4]米/分").arg(mm/1000).arg(mm%1000,3,10,QLatin1Char('0')) .arg(maxMM/1000).arg(maxMM%1000,3,10,QLatin1Char('0'))); diff --git a/mainwindow.h b/mainwindow.h index 0ed259b..7397adc 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -63,7 +63,7 @@ public: void enableReclaimCtrlButton(bool enable); void resetReclaimCtrlButtonText(); void enablePushButtonStart(bool enable); - double getMaxSpeedCalcPara(); + int getMaxSpeedCalcPara(); void PreviewPressed(); int getCurrPrintStatus();