Compare commits
23
Commits
cbeb5f0e0a
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3cade51a9c | ||
|
|
ed0c2484cc | ||
|
|
baa8882d09 | ||
|
|
065b146998 | ||
|
|
e533ea8e0b | ||
|
|
16f1448c58 | ||
|
|
26455d5bc4 | ||
|
|
e358abf461 | ||
|
|
eb5d824e02 | ||
|
|
a882c30e09 | ||
|
|
fbdd064adb | ||
|
|
0fa8ce4b51 | ||
|
|
77370b17ab | ||
|
|
1e48e6a47b | ||
|
|
b96e36a6a6 | ||
|
|
9eebd81d51 | ||
|
|
a636ba3400 | ||
|
|
f7b7faab2e | ||
|
|
7abac963e4 | ||
|
|
a20552e8d0 | ||
|
|
f29fafca9e | ||
|
|
ee7792077d | ||
|
|
ab8363f47c |
@@ -2680,16 +2680,21 @@ int DevOp::writeFpgaPrintPara(bool ignoreWarn){
|
|||||||
{
|
{
|
||||||
#define MIN_CHAR_WIDTH 0.1 //0.1mm/列
|
#define MIN_CHAR_WIDTH 0.1 //0.1mm/列
|
||||||
#define MAX_CHAR_WIDTH 4.0 //4.0mm/列
|
#define MAX_CHAR_WIDTH 4.0 //4.0mm/列
|
||||||
|
// 计算预览区域的总脉冲数 = 0.1+字宽*(4-0.1)/100*(当前列数+3(留白))*同步器脉冲数
|
||||||
displayAreaTotalSynNum = (int )(
|
displayAreaTotalSynNum = (int )(
|
||||||
(MIN_CHAR_WIDTH +sysPara->para.printColDelay*(MAX_CHAR_WIDTH - MIN_CHAR_WIDTH) /100)
|
(MIN_CHAR_WIDTH +sysPara->para.printColDelay*(MAX_CHAR_WIDTH - MIN_CHAR_WIDTH) /100)
|
||||||
*currPrintCol*sysPara->para.synPulseNumPerMm
|
*currPrintCol*sysPara->para.synPulseNumPerMm);
|
||||||
);
|
|
||||||
// 增加判定条件,其实我觉得下面这个 contentLength 才是合理计算内容长度是否超过喷印间隔的方式
|
// 增加判定条件,其实我觉得下面这个 contentLength 才是合理计算内容长度是否超过喷印间隔的方式
|
||||||
float contentLength = sysPara->para.printColDelay / MAX(sysPara->para.synPulseNumPerMm, 0.000001) * sysPara->status.currPrintCol;
|
float contentLength = sysPara->para.printColDelay / MAX(sysPara->para.synPulseNumPerMm, 0.000001) * sysPara->status.currPrintCol;
|
||||||
if(!ignoreWarn && currPrintCol && contentLength > sysPara->para.synTriggerPrintLenMm){
|
|
||||||
|
// sysPara->para.synTriggerPrintLenMm:毫米脉冲数 之前干嘛拿实际长度contentLength跟毫米脉冲数比较???, 现在改为直接拿喷印间隔比较
|
||||||
|
if(!ignoreWarn && sysPara->status.currPrintCol && (contentLength > sysPara->para.synTriggerPrintLenMm)){
|
||||||
QMessageBox::warning(NULL,tr("警告"),tr("喷印间隔太短,无法满足同步打印宽度设置,字宽将自动缩短!"));
|
QMessageBox::warning(NULL,tr("警告"),tr("喷印间隔太短,无法满足同步打印宽度设置,字宽将自动缩短!"));
|
||||||
LogInfo::setRunStatusText(QString("displayAreaTotalSynNum warn: L: %1, printColDelay: %2, PPM: %3, Cols: %4").arg(contentLength).arg(sysPara->para.printColDelay).
|
LogInfo::setRunStatusText(QString("contentLength: %1, printColDelay: %2, PPM: %3, Cols: %4, synTriggerPrintLenMm: %5")
|
||||||
arg(sysPara->para.synPulseNumPerMm).arg(sysPara->status.currPrintCol));
|
.arg(contentLength).arg(sysPara->para.printColDelay)
|
||||||
|
.arg(sysPara->para.synPulseNumPerMm).arg(sysPara->status.currPrintCol).arg(sysPara->para.synTriggerPrintLenMm));
|
||||||
|
LogInfo::setRunStatusText(tr("needed lenth : %1").arg(contentLength+1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -2700,7 +2705,7 @@ int DevOp::writeFpgaPrintPara(bool ignoreWarn){
|
|||||||
QMessageBox::critical(NULL,tr("错误"),tr("在同步计米的情况下无打印串或显示区域为零"));
|
QMessageBox::critical(NULL,tr("错误"),tr("在同步计米的情况下无打印串或显示区域为零"));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if(currPrintCol && type == 2){
|
if(currPrintCol){
|
||||||
int synNumPerCol = displayAreaTotalSynNum*(1<<8)/(currPrintCol*(1 + sysPara->para.charBold));
|
int synNumPerCol = displayAreaTotalSynNum*(1<<8)/(currPrintCol*(1 + sysPara->para.charBold));
|
||||||
//加宽的时候,相当于列数翻倍
|
//加宽的时候,相当于列数翻倍
|
||||||
if(displayAreaTotalSynNum >= (1<<24)){
|
if(displayAreaTotalSynNum >= (1<<24)){
|
||||||
@@ -3172,7 +3177,6 @@ void DevOp::writeCnt1GroupSetting(bool bCntByGroupEnable){
|
|||||||
{
|
{
|
||||||
fpgaWr(WRITE_CNT1GROUP_COUNT,(unsigned char *)&sysPara->para.Cnt1ByGroup.cnt1GroupCnt,sizeof(sysPara->para.Cnt1ByGroup.cnt1GroupCnt));
|
fpgaWr(WRITE_CNT1GROUP_COUNT,(unsigned char *)&sysPara->para.Cnt1ByGroup.cnt1GroupCnt,sizeof(sysPara->para.Cnt1ByGroup.cnt1GroupCnt));
|
||||||
|
|
||||||
qDebug() << "Groups of CNT1: " << sysPara->para.Cnt1ByGroup.cnt1GroupCnt;
|
|
||||||
for(int i=0;i<sysPara->para.Cnt1ByGroup.cnt1GroupCnt;i++)
|
for(int i=0;i<sysPara->para.Cnt1ByGroup.cnt1GroupCnt;i++)
|
||||||
{
|
{
|
||||||
cnt1GroupSettingSend.cnt1GroupNum = (unsigned char)i;
|
cnt1GroupSettingSend.cnt1GroupNum = (unsigned char)i;
|
||||||
@@ -3218,7 +3222,6 @@ void DevOp::writeCnt2GroupSetting(bool bCntByGroupEnable)
|
|||||||
{
|
{
|
||||||
fpgaWr(WRITE_CNT2GROUP_COUNT,(unsigned char *)&sysPara->para.Cnt2ByGroup.cnt2GroupCnt,sizeof(sysPara->para.Cnt2ByGroup.cnt2GroupCnt));
|
fpgaWr(WRITE_CNT2GROUP_COUNT,(unsigned char *)&sysPara->para.Cnt2ByGroup.cnt2GroupCnt,sizeof(sysPara->para.Cnt2ByGroup.cnt2GroupCnt));
|
||||||
|
|
||||||
qDebug() << "sysPara->para.Cnt2ByGroup.cnt2GroupCnt: " << sysPara->para.Cnt2ByGroup.cnt2GroupCnt;
|
|
||||||
for(int i=0;i<sysPara->para.Cnt2ByGroup.cnt2GroupCnt;i++)
|
for(int i=0;i<sysPara->para.Cnt2ByGroup.cnt2GroupCnt;i++)
|
||||||
{
|
{
|
||||||
cnt2GroupSettingSend.cnt2GroupNum = (unsigned char)i;
|
cnt2GroupSettingSend.cnt2GroupNum = (unsigned char)i;
|
||||||
@@ -3319,9 +3322,7 @@ void DevOp::writeFpgaCalandar(bool Enable){
|
|||||||
fpgaWr(WRITE_COUNTER3_ADDR,(unsigned char *)&sysPara->para.Counter3,sizeof(sysPara->para.Counter3));
|
fpgaWr(WRITE_COUNTER3_ADDR,(unsigned char *)&sysPara->para.Counter3,sizeof(sysPara->para.Counter3));
|
||||||
sysPara->para.Counter4.cnt4CurrValue= QString::number(sysPara->para.cnt4CurrValue).toUInt(0,16); //计数器4当前值用于隐藏功能
|
sysPara->para.Counter4.cnt4CurrValue= QString::number(sysPara->para.cnt4CurrValue).toUInt(0,16); //计数器4当前值用于隐藏功能
|
||||||
|
|
||||||
#ifndef COUNTER2_BY_GROUP
|
fpgaWr(WRITE_COUNTER4_ADDR,(unsigned char *)&sysPara->para.Counter4, 4);
|
||||||
fpgaWr(WRITE_COUNTER4_ADDR,(unsigned char *)&sysPara->para.Counter4,sizeof(sysPara->para.Counter4));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
sysPara->status.cnt3CurrentValueInitDoneFlag = true;
|
sysPara->status.cnt3CurrentValueInitDoneFlag = true;
|
||||||
sysPara->status.cnt2CurrentValueInitDoneFlag = true;
|
sysPara->status.cnt2CurrentValueInitDoneFlag = true;
|
||||||
@@ -3377,6 +3378,8 @@ void DevOp::printCtrl2(int cmd){
|
|||||||
}
|
}
|
||||||
|
|
||||||
unsigned int DevOp::readFpgaVersionNum(){
|
unsigned int DevOp::readFpgaVersionNum(){
|
||||||
|
if (sysPara == NULL) return 0;
|
||||||
|
|
||||||
fpgaRd(0x00EC,&sysPara->status.FPGAChipType,1);
|
fpgaRd(0x00EC,&sysPara->status.FPGAChipType,1);
|
||||||
fpgaRd(0x00FE,(unsigned char *)&sysPara->status.fpgaVersionNum,2);
|
fpgaRd(0x00FE,(unsigned char *)&sysPara->status.fpgaVersionNum,2);
|
||||||
fpgaRd(READ_BUILD_DAT, (unsigned char *)&sysPara->status.build_dat.builTime, sizeof(sysPara->status.build_dat.builTime));
|
fpgaRd(READ_BUILD_DAT, (unsigned char *)&sysPara->status.build_dat.builTime, sizeof(sysPara->status.build_dat.builTime));
|
||||||
|
|||||||
@@ -1,380 +0,0 @@
|
|||||||
/*
|
|
||||||
* DevOp.h
|
|
||||||
*
|
|
||||||
* Created on: Jun 25, 2013
|
|
||||||
* Author: yiyu
|
|
||||||
* QQ:1036184468
|
|
||||||
* Descriptoin:
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef DEVOP_H_
|
|
||||||
#define DEVOP_H_
|
|
||||||
|
|
||||||
#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 <stdio.h>
|
|
||||||
#include <QString>
|
|
||||||
#include "myinclude.h"
|
|
||||||
#include <QObject>
|
|
||||||
#include <QQueue>
|
|
||||||
#include <QMetaType>
|
|
||||||
#include <QThread>
|
|
||||||
#include <QMutex>
|
|
||||||
#include <QReadWriteLock>
|
|
||||||
|
|
||||||
#ifdef UART2
|
|
||||||
#include "posix_qextserialport.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#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_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"
|
|
||||||
|
|
||||||
#ifdef __ADC_INPUT__
|
|
||||||
#define BOART_TEMP_DEVICE "/sys/bus/iio/devices/iio:device0/in_voltage4_raw"
|
|
||||||
#define INK_TEMP_DEVICE "/sys/bus/iio/devices/iio:device0/in_voltage5_raw"
|
|
||||||
#define REVERSE_TEMP_DEVICE "/sys/bus/iio/devices/iio:device0/in_voltage6_raw"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef UART2
|
|
||||||
class UartThread;
|
|
||||||
typedef struct {
|
|
||||||
char mode;
|
|
||||||
int addr;
|
|
||||||
int len;
|
|
||||||
char flag_m;
|
|
||||||
QByteArray Buf;
|
|
||||||
}rec_cmd_t;
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 请不要直接初始化此函数,如果需要,请通过SysPara的devOP来访问此类
|
|
||||||
* */
|
|
||||||
class DevOp : public QObject
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
public :
|
|
||||||
DevOp(SysPara * sysPara);
|
|
||||||
~DevOp();
|
|
||||||
|
|
||||||
void set_totalSynPulseNum(bool wren);// 设置可变长度
|
|
||||||
void TTYS0ToConsole();
|
|
||||||
void WriteMoterPump(int);
|
|
||||||
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 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 writeCnt1GroupSetting(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 checkAuthorization(QString str);
|
|
||||||
|
|
||||||
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 fpgaResetWarning(char mode);
|
|
||||||
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);
|
|
||||||
|
|
||||||
bool stopSendDataFPGA;
|
|
||||||
bool stopSendDataSTM32;
|
|
||||||
// unsigned char *dataOfViscosity;
|
|
||||||
|
|
||||||
#ifdef __STC_POWER__
|
|
||||||
int Heartbeat(char bPowerOn);
|
|
||||||
int setWakeUpTimer(char wakeUpTime_day);
|
|
||||||
int getPowerSource(void);
|
|
||||||
Posix_QextSerialPort *comForPower;
|
|
||||||
void comForPower_init();
|
|
||||||
#endif
|
|
||||||
#ifdef __RFID_CARD
|
|
||||||
Posix_QextSerialPort *comForRFID;
|
|
||||||
void comForRFID_init();
|
|
||||||
int comReadRFID_data();
|
|
||||||
int comWriteRFID_data();
|
|
||||||
int setRFIDCarKey(void);
|
|
||||||
int setRFIDReaderKey(void);
|
|
||||||
int setRFIDReaderOriginalKey(void);
|
|
||||||
int setRFIDReaderWorkMode(void);
|
|
||||||
int receiveReadRFID_data(void);
|
|
||||||
int queryReadRFID_address(void);
|
|
||||||
QString strRevdata;
|
|
||||||
bool noticeICReaderError;
|
|
||||||
bool setICReaderModeFlag;
|
|
||||||
uint checkCardIntervalTime;
|
|
||||||
QReadWriteLock CardDataRwLock;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __ADC_INPUT__
|
|
||||||
qint8 GetTemp(QString ainFile, quint8 *pTemp);
|
|
||||||
#endif
|
|
||||||
void Read_RanddomFromFpga(); // 读FPGARANDFIFO
|
|
||||||
void RandTxtBakup(char ok);
|
|
||||||
// 上海外接屏功能
|
|
||||||
int BigDisp(unsigned char Module[], unsigned char Wirediameter[]);
|
|
||||||
int RecDim();//unsigned char buf[], unsigned char Dim[]);
|
|
||||||
int SmallDisp(unsigned char Module[], unsigned char Wirediameter[]);
|
|
||||||
void DatToDisp(char FileName[], bool big);
|
|
||||||
void DatToDisp2();
|
|
||||||
void showData(QByteArray dat);
|
|
||||||
void uart2Init();
|
|
||||||
void writeDacValue2Fpga_No72NewVoltData();
|
|
||||||
|
|
||||||
#ifdef UART2
|
|
||||||
Posix_QextSerialPort *myCom;
|
|
||||||
// MySerialPort * myserialport;
|
|
||||||
QByteArray recData;
|
|
||||||
QQueue<QByteArray> recQueue;
|
|
||||||
int recLen;
|
|
||||||
void stopReceiving();
|
|
||||||
bool isReceivingEnable() const;
|
|
||||||
void disableReceiving();
|
|
||||||
void enableReceiving();
|
|
||||||
|
|
||||||
uchar sendData(const QByteArray &data);
|
|
||||||
|
|
||||||
void stopSending();
|
|
||||||
bool isSendingEnable() const;
|
|
||||||
void disableSending();
|
|
||||||
void enableSending();
|
|
||||||
uchar uartThreadStart();
|
|
||||||
|
|
||||||
//void printCtrl2(int cmd);
|
|
||||||
int recUart2();
|
|
||||||
|
|
||||||
public slots:
|
|
||||||
void readCom(char mode,QByteArray recData,int addr);
|
|
||||||
void sendCom(QString s);
|
|
||||||
void sendCom(char *buf, int len);
|
|
||||||
void resendFPGADate(int,int,unsigned char *,int,int);
|
|
||||||
void resendSTM32Date(int,int,unsigned char *,int,int);
|
|
||||||
|
|
||||||
signals:
|
|
||||||
void dataReceived(char,const QByteArray &dataReceived,int);
|
|
||||||
void sendSerialDataToSTM32(int,int,unsigned char *,int,int);
|
|
||||||
void sendSerialDataToFPGA(int,int,unsigned char *,int,int);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
private:
|
|
||||||
int WdgttyUsb0Cnt;
|
|
||||||
bool releaseValveOpenFlag;
|
|
||||||
bool mixValveFlag;
|
|
||||||
bool inkValveOpenFlag;
|
|
||||||
bool inkValveOpenFlag1;
|
|
||||||
bool cycleValveOpenFlag;
|
|
||||||
bool compressPumpOpenFlag;
|
|
||||||
bool viscosityPumpOpenFlag;
|
|
||||||
bool mainInkPumpOpenFlag;
|
|
||||||
bool reclaimPumpOpenFlag;
|
|
||||||
|
|
||||||
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;
|
|
||||||
#ifdef __VX_OSC_VOL__
|
|
||||||
qint8 OscillatorVoltage[100];//VX 电路不一样,所以需要重新调整
|
|
||||||
#endif
|
|
||||||
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;
|
|
||||||
|
|
||||||
#ifdef UART2
|
|
||||||
UartThread *uartThread;
|
|
||||||
bool sendingEnable;
|
|
||||||
bool receivingEnable;
|
|
||||||
bool saveStateReceiveData;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef UART2
|
|
||||||
class UartThread : public QThread
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
public:
|
|
||||||
UartThread(Posix_QextSerialPort &adrPort);
|
|
||||||
~UartThread();
|
|
||||||
void stopReceiving();
|
|
||||||
QQueue<QByteArray> dataToSend;
|
|
||||||
QMutex mutexSend;
|
|
||||||
void stopSending();
|
|
||||||
void addDataToSend(const QByteArray &dataToAdd);
|
|
||||||
protected:
|
|
||||||
void run();
|
|
||||||
signals:
|
|
||||||
void dataReceived(char,const QByteArray &dataReceived,int);
|
|
||||||
private :
|
|
||||||
Posix_QextSerialPort &port;
|
|
||||||
QMutex mutexReceive;
|
|
||||||
bool stopped;
|
|
||||||
rec_cmd_t rec_cmd;
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
#endif /* DEVOP_H_ */
|
|
||||||
+305
-190
@@ -94,6 +94,18 @@ InkJetPrinter::InkJetPrinter(QWidget *parent) :
|
|||||||
connect(ui->tabSystemManage,SIGNAL(enableClick(bool)),this,SLOT(enableInkJetTabClick(bool)));
|
connect(ui->tabSystemManage,SIGNAL(enableClick(bool)),this,SLOT(enableInkJetTabClick(bool)));
|
||||||
connect(serialSTM32,SIGNAL(progress(int,int)),ui->tabSystemManage,SLOT(progressBarControl(int,int)));
|
connect(serialSTM32,SIGNAL(progress(int,int)),ui->tabSystemManage,SLOT(progressBarControl(int,int)));
|
||||||
|
|
||||||
|
connect(serialSTM32, &Serial::STM32Connected, this, [this](bool ok, QString errStr){
|
||||||
|
if(!ok || !sysPara || !sysPara->devOp) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QTimer::singleShot(1000, this, [this](){
|
||||||
|
sysPara->devOp->highVoltageCtrl(0);
|
||||||
|
LogInfo::setRunStatusText("High voltage forced off at app boot");
|
||||||
|
});
|
||||||
|
|
||||||
|
}, Qt::QueuedConnection);
|
||||||
|
|
||||||
connect(ui->tabSystemManage,SIGNAL(sigToCloseSerialFPGA()),this,SLOT(closeSerialFPGA()));
|
connect(ui->tabSystemManage,SIGNAL(sigToCloseSerialFPGA()),this,SLOT(closeSerialFPGA()));
|
||||||
connect(ui->tabSystemManage,SIGNAL(sigToCloseSerialSTM32()),this,SLOT(closeSerialSTM32()));
|
connect(ui->tabSystemManage,SIGNAL(sigToCloseSerialSTM32()),this,SLOT(closeSerialSTM32()));
|
||||||
connect(ui->tabSystemManage,SIGNAL(restartSerial()),this,SLOT(restartSerialPort()));
|
connect(ui->tabSystemManage,SIGNAL(restartSerial()),this,SLOT(restartSerialPort()));
|
||||||
@@ -236,11 +248,6 @@ InkJetPrinter::InkJetPrinter(QWidget *parent) :
|
|||||||
connect(ui->tabPrintSetting,SIGNAL(engineerMode(bool)),ui->tabSystemManage,SLOT(engieerModeAcceptSystemManage(bool)));
|
connect(ui->tabPrintSetting,SIGNAL(engineerMode(bool)),ui->tabSystemManage,SLOT(engieerModeAcceptSystemManage(bool)));
|
||||||
connect(ui->tabPrintSetting, SIGNAL(engineerMode(bool)), ui->tabSystemSetting, SLOT(setFreqFixVisible(bool)));
|
connect(ui->tabPrintSetting, SIGNAL(engineerMode(bool)), ui->tabSystemSetting, SLOT(setFreqFixVisible(bool)));
|
||||||
|
|
||||||
// 这段代码是为了解决2026年7月11日 新巴 打印参数异常的问题的,后更换核心板,问题已解决,因此不再启用这段代码
|
|
||||||
// connect(ui->tabMainWindow, &MainWindow::printBefore, this, [this](){
|
|
||||||
// ui->tabPrintSetting->applyUIPara(false);
|
|
||||||
// }, Qt::DirectConnection);
|
|
||||||
|
|
||||||
sysPara->status.rWarnViscoReady=0;
|
sysPara->status.rWarnViscoReady=0;
|
||||||
|
|
||||||
// hlp: 260608: 以授权为标准,不过度开放权限
|
// hlp: 260608: 以授权为标准,不过度开放权限
|
||||||
@@ -308,6 +315,8 @@ InkJetPrinter::InkJetPrinter(QWidget *parent) :
|
|||||||
ui->tabMainWindow->enableReclaimCtrlButton(false);
|
ui->tabMainWindow->enableReclaimCtrlButton(false);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//edit@12-14
|
//edit@12-14
|
||||||
connect(this,SIGNAL(currentChanged(int)),ui->tabMainWindow,SLOT(onInkJetPrinterCurrentChanged(int)), Qt::QueuedConnection);
|
connect(this,SIGNAL(currentChanged(int)),ui->tabMainWindow,SLOT(onInkJetPrinterCurrentChanged(int)), Qt::QueuedConnection);
|
||||||
//pidControllerInit();
|
//pidControllerInit();
|
||||||
@@ -790,20 +799,44 @@ float PID_realize2(float speed, float act){
|
|||||||
|
|
||||||
void InkJetPrinter::pressureAdj()
|
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)
|
if(sysPara->status.gearPumpRunStopFlag || sysPara->status.flagOfSpeedAlarm)
|
||||||
{
|
{
|
||||||
sysPara->para.gearPumpValue = 0;
|
sysPara->para.gearPumpValue = 0;
|
||||||
u = 0.0f;
|
u = 0.0f;
|
||||||
m_rampDone = false;
|
m_pumpState = DPUMP_STOPPED;
|
||||||
|
m_stateChangeCount = 0;
|
||||||
m_adjSkip = 0;
|
m_adjSkip = 0;
|
||||||
m_lastPressure = 0;
|
m_lastActualPressure = 0;
|
||||||
m_stableCount = 0;
|
m_bufValidCount = 0;
|
||||||
for(int i = 0; i < 10; i++) m_pressureBuf[i] = 0;
|
for(int i = 0; i < 10; i++) m_pressureBuf[i] = 0;
|
||||||
m_bufIdx = 0;
|
m_bufIdx = 0;
|
||||||
sysPara->devOp->WriteMoterPump();
|
sysPara->devOp->WriteMoterPump();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 泵未使能时的PID控制(保持原有逻辑)
|
||||||
if(!sysPara->para.gearPumpEnable)
|
if(!sysPara->para.gearPumpEnable)
|
||||||
{
|
{
|
||||||
if(u > 0 || ((sysPara->para.pressure - sysPara->status.PRESSURE) > 0))
|
if(u > 0 || ((sysPara->para.pressure - sysPara->status.PRESSURE) > 0))
|
||||||
@@ -815,172 +848,216 @@ void InkJetPrinter::pressureAdj()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int maxValue = sysPara->para.flagOfReclaimPumEnable ? 420 : 800;
|
// 隔膜泵控制参数
|
||||||
if(maxValue < 60) maxValue = 60;
|
const int STOP_TO_START_THRESHOLD = 5; // 停止→启动:压力低于目标15(扩大滞环)
|
||||||
|
const int RUN_TO_STOP_THRESHOLD = 5; // 运行→停止:压力高于目标10(扩大滞环)
|
||||||
int maxSpeed = (int)sysPara->para.gearPumpSpeedAlarm;
|
const int MIN_STATE_INTERVAL = 8; // 最小状态切换间隔:8个100ms = 800ms
|
||||||
|
|
||||||
auto clampU = [&]() {
|
|
||||||
if(u < 60.0f) u = 60.0f;
|
|
||||||
if(u > (float)maxValue) u = (float)maxValue;
|
|
||||||
};
|
|
||||||
|
|
||||||
int actual = sysPara->status.PRESSURE;
|
int actual = sysPara->status.PRESSURE;
|
||||||
int target = (int)sysPara->para.pressure;
|
int target = (int)sysPara->para.pressure;
|
||||||
int cur;
|
if(sysPara->status.powerOffAppending && target > 650)
|
||||||
|
target = 650; // 关机压力目标不超过650,不修改用户设定值
|
||||||
|
int err = target - actual; // 正值=压力偏低,负值=压力偏高
|
||||||
|
|
||||||
// 每次进入都更新滑动平均缓冲(软启动用瞬时值,闭环用平均值)
|
// 更新滑动平均缓冲
|
||||||
m_pressureBuf[m_bufIdx] = actual;
|
m_pressureBuf[m_bufIdx] = actual;
|
||||||
m_bufIdx = (m_bufIdx + 1) % 10;
|
m_bufIdx = (m_bufIdx + 1) % 10;
|
||||||
int avgPressure = 0;
|
int avgPressure = 0;
|
||||||
for(int i = 0; i < 10; i++) avgPressure += m_pressureBuf[i];
|
for(int i = 0; i < 10; i++) avgPressure += m_pressureBuf[i];
|
||||||
avgPressure /= 10;
|
avgPressure /= 10;
|
||||||
|
|
||||||
// ---------------------------------------------------------------
|
// 状态切换计数器递增
|
||||||
// 硬保护:压力超过目标+50,立即强制减速,优先级最高
|
m_stateChangeCount++;
|
||||||
// 覆盖自检、软启动、闭环所有阶段
|
|
||||||
// ---------------------------------------------------------------
|
// 检查是否允许状态切换(距上次切换>=800ms)
|
||||||
if(actual > target + 50)
|
bool canSwitch = (m_stateChangeCount >= MIN_STATE_INTERVAL);
|
||||||
|
|
||||||
|
// 关机压力上限:超过关机目标10立即停泵,不受状态和800ms切换间隔限制
|
||||||
|
int hardStopThreshold = sysPara->status.powerOffAppending ? 10 : 80;
|
||||||
|
if(actual > target + hardStopThreshold)
|
||||||
{
|
{
|
||||||
float overErr = (float)(actual - (target + 50));
|
if(m_pumpState != DPUMP_STOPPED) {
|
||||||
float delta = -0.1f * overErr;
|
u = 0.0f;
|
||||||
if(delta < -15.0f) delta = -15.0f;
|
sysPara->para.gearPumpValue = 0;
|
||||||
u += delta;
|
|
||||||
clampU();
|
|
||||||
m_lastPressure = actual;
|
|
||||||
sysPara->para.gearPumpValue = (unsigned short)(int)u;
|
|
||||||
sysPara->devOp->WriteMoterPump();
|
sysPara->devOp->WriteMoterPump();
|
||||||
|
m_pumpState = DPUMP_STOPPED;
|
||||||
|
m_stateChangeCount = 0;
|
||||||
|
m_adjSkip = 0;
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------
|
// 状态机处理
|
||||||
// 软启动:自适应步长,每 800ms 一次
|
switch(m_pumpState) {
|
||||||
// 自检期间也走此逻辑(硬保护兜底),自检完成后重置重新收敛
|
case DPUMP_STOPPED:
|
||||||
// 软启动阶段不做压力稳定检测,优先快速收敛
|
handleStoppedState(err, canSwitch);
|
||||||
// ---------------------------------------------------------------
|
break;
|
||||||
if(!m_rampDone)
|
|
||||||
|
case DPUMP_STARTING:
|
||||||
|
handleStartingState(err, actual, target);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DPUMP_RUNNING:
|
||||||
|
handleRunningState(err, canSwitch);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 停止状态处理:压力低于目标较多时启动泵
|
||||||
|
void InkJetPrinter::handleStoppedState(int err, bool canSwitch)
|
||||||
{
|
{
|
||||||
if(++m_adjSkip < 8)
|
const int STOP_TO_START_THRESHOLD = 5; // 压力低于目标15启动(扩大滞环)
|
||||||
|
const float START_INIT_SPEED = 80.0f; // 启动初始转速
|
||||||
|
|
||||||
|
// 压力低于目标较多,且允许切换(距上次停止>=800ms),启动泵
|
||||||
|
if(err > STOP_TO_START_THRESHOLD && canSwitch) {
|
||||||
|
u = START_INIT_SPEED;
|
||||||
|
m_startingStepCount = 0;
|
||||||
|
m_adjSkip = 0;
|
||||||
|
sysPara->para.gearPumpValue = (unsigned short)(int)u;
|
||||||
|
sysPara->devOp->WriteMoterPump();
|
||||||
|
m_pumpState = DPUMP_STARTING;
|
||||||
|
m_stateChangeCount = 0; // 重置计数器
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 启动爬升状态处理:从低转速逐步提升到工作转速
|
||||||
|
void InkJetPrinter::handleStartingState(int err, int actual, int target)
|
||||||
{
|
{
|
||||||
|
const int STARTING_TO_RUNNING_RANGE = 30; // 进入目标±50范围转到运行状态
|
||||||
|
const float MAX_WORKING_SPEED = 350.0f; // 最大工作转速
|
||||||
|
const float START_SPEED_STEP_LARGE = 40.0f;
|
||||||
|
const float START_SPEED_STEP_MED = 30.0f;
|
||||||
|
const float START_SPEED_STEP_SMALL = 20.0f;
|
||||||
|
|
||||||
|
m_adjSkip++;
|
||||||
|
|
||||||
|
// 每800ms调整一次(8个100ms周期)
|
||||||
|
if(m_adjSkip < 8) {
|
||||||
sysPara->para.gearPumpValue = (unsigned short)(int)u;
|
sysPara->para.gearPumpValue = (unsigned short)(int)u;
|
||||||
sysPara->devOp->WriteMoterPump();
|
sysPara->devOp->WriteMoterPump();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
m_adjSkip = 0;
|
m_adjSkip = 0;
|
||||||
|
|
||||||
int err = target - actual;
|
// 判断是否进入运行状态
|
||||||
|
int absErr = (err >= 0) ? err : -err;
|
||||||
|
bool nearTarget = (absErr <= STARTING_TO_RUNNING_RANGE);
|
||||||
|
bool reachedMaxSpeed = (u >= MAX_WORKING_SPEED - 10);
|
||||||
|
|
||||||
if(err < 0)
|
if(nearTarget || reachedMaxSpeed) {
|
||||||
{
|
// 转到运行微调状态
|
||||||
// 超压:小步减速
|
m_pumpState = DPUMP_RUNNING;
|
||||||
u -= 1.0f;
|
m_lastActualPressure = actual;
|
||||||
|
m_stateChangeCount = 0; // 重置计数器
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
// 继续爬升:根据误差自适应增速
|
||||||
// 自适应步长:差得远步子大,差得近步子小
|
|
||||||
float step;
|
float step;
|
||||||
if (err > 200) step = 5.0f;
|
if(err > 100) step = START_SPEED_STEP_LARGE;
|
||||||
else if(err > 100) step = 3.0f;
|
else if(err > 50) step = START_SPEED_STEP_MED;
|
||||||
else if(err > 50) step = 2.0f;
|
else step = START_SPEED_STEP_SMALL;
|
||||||
else step = 1.0f;
|
|
||||||
u += step;
|
u += step;
|
||||||
}
|
if(u > MAX_WORKING_SPEED) u = MAX_WORKING_SPEED;
|
||||||
|
|
||||||
clampU();
|
sysPara->para.gearPumpValue = (unsigned short)(int)u;
|
||||||
|
|
||||||
// 转速上限保护
|
|
||||||
if(sysPara->para.flagOfReclaimPumEnable &&
|
|
||||||
sysPara->status.gearPumpRunSpeed >= maxSpeed)
|
|
||||||
{
|
|
||||||
u -= 3.0f;
|
|
||||||
clampU();
|
|
||||||
}
|
|
||||||
|
|
||||||
cur = (int)u;
|
|
||||||
|
|
||||||
// 进入闭环条件:压力已稳定在目标±50以内
|
|
||||||
if(sysPara->status.selfCheckDone && err >= -50 && err <= 50)
|
|
||||||
{
|
|
||||||
m_rampDone = true;
|
|
||||||
m_adjSkip = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
sysPara->para.gearPumpValue = (unsigned short)cur;
|
|
||||||
sysPara->devOp->WriteMoterPump();
|
sysPara->devOp->WriteMoterPump();
|
||||||
|
m_startingStepCount++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 运行微调状态处理:使用增量式控制算法
|
||||||
|
void InkJetPrinter::handleRunningState(int err, bool canSwitch)
|
||||||
|
{
|
||||||
|
const int RUN_TO_STOP_THRESHOLD = 5; // 压力高于目标10准备停泵(扩大滞环)
|
||||||
|
const int EMERGENCY_STOP_THRESHOLD = 10; // 压力高于目标20立即停泵(不受800ms限制)
|
||||||
|
|
||||||
|
// 紧急停泵:压力严重超标,立即停泵(不受800ms限制)
|
||||||
|
if(err < -EMERGENCY_STOP_THRESHOLD) {
|
||||||
|
u = 0.0f;
|
||||||
|
sysPara->para.gearPumpValue = 0;
|
||||||
|
sysPara->devOp->WriteMoterPump();
|
||||||
|
m_pumpState = DPUMP_STOPPED;
|
||||||
|
m_stateChangeCount = 0;
|
||||||
|
m_adjSkip = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------
|
// 常规停泵:压力略高于目标,等待800ms后停泵
|
||||||
// 闭环:等压力稳定后再调速,自适应管路响应时间
|
if(err < -RUN_TO_STOP_THRESHOLD && canSwitch) {
|
||||||
//
|
u = 0.0f;
|
||||||
// 每100ms采样一次,连续3次压力变化<15认为稳定,才执行调速
|
sysPara->para.gearPumpValue = 0;
|
||||||
// 最长等待5s(50次)兜底,防止管路持续抖动导致永远不调
|
sysPara->devOp->WriteMoterPump();
|
||||||
//
|
m_pumpState = DPUMP_STOPPED;
|
||||||
// 调速后立即重置稳定计数,重新等待下一次稳定
|
m_stateChangeCount = 0;
|
||||||
//
|
m_adjSkip = 0;
|
||||||
// 分区Kp:误差大步子大,误差小步子小
|
return;
|
||||||
// |err| > 100 → Kp=0.05,限幅±5
|
}
|
||||||
// |err| 50~100→ Kp=0.04,限幅±4
|
|
||||||
// |err| < 50 → Kp=0.03,限幅±3
|
|
||||||
// ---------------------------------------------------------------
|
|
||||||
{
|
|
||||||
// 稳定检测用平均值,滤掉传感器噪声
|
|
||||||
int pressureChange = avgPressure - m_lastPressure;
|
|
||||||
if(pressureChange < 0) pressureChange = -pressureChange;
|
|
||||||
m_lastPressure = avgPressure;
|
|
||||||
m_adjSkip++; // 复用为超时计数
|
|
||||||
|
|
||||||
bool stable = (pressureChange < 10);
|
// === 增量式微调控制(每200ms调整一次)===
|
||||||
bool timeout = (m_adjSkip >= 50); // 5s兜底
|
m_adjSkip++;
|
||||||
|
if(m_adjSkip < 2) {
|
||||||
|
sysPara->para.gearPumpValue = (unsigned short)(int)u;
|
||||||
|
sysPara->devOp->WriteMoterPump();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
m_adjSkip = 0;
|
||||||
|
|
||||||
if(stable)
|
int actual = sysPara->status.PRESSURE;
|
||||||
m_stableCount++;
|
float error = (float)err;
|
||||||
else
|
float absErr = (error >= 0) ? error : -error;
|
||||||
m_stableCount = 0;
|
|
||||||
|
|
||||||
bool readyToAdj = (m_stableCount >= 15) || timeout;
|
// 死区:误差≤0.5不调整
|
||||||
|
if(absErr < 0.5f) {
|
||||||
if(!readyToAdj)
|
m_lastActualPressure = actual;
|
||||||
{
|
|
||||||
sysPara->para.gearPumpValue = (unsigned short)(int)u;
|
sysPara->para.gearPumpValue = (unsigned short)(int)u;
|
||||||
sysPara->devOp->WriteMoterPump();
|
sysPara->devOp->WriteMoterPump();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 平均压力已稳定(或超时兜底),执行调速,重置计数
|
// 计算压力变化率(微分项)
|
||||||
m_adjSkip = 0;
|
int pressureChange = actual - m_lastActualPressure;
|
||||||
m_stableCount = 0;
|
m_lastActualPressure = actual;
|
||||||
|
|
||||||
// 误差用平均值计算,避免瞬时噪声影响调速幅度
|
// 增量式控制公式
|
||||||
float absErr = (float)(target - avgPressure);
|
float delta_u;
|
||||||
if(absErr < 0.0f) absErr = -absErr;
|
|
||||||
|
|
||||||
float kp, capDelta;
|
// 近目标刹车策略:误差≤5且正在接近目标,只刹车不加速
|
||||||
if(absErr > 100.0f) { kp = 0.05f; capDelta = 5.0f; }
|
if(absErr <= 5.0f &&
|
||||||
else if(absErr > 50.0f) { kp = 0.04f; capDelta = 4.0f; }
|
((error > 0.0f && pressureChange > 0) || // 压力低且在上升
|
||||||
else { kp = 0.03f; capDelta = 3.0f; }
|
(error < 0.0f && pressureChange < 0))) // 压力高且在下降
|
||||||
|
|
||||||
float err = (float)(target - avgPressure);
|
|
||||||
float delta_u = kp * err;
|
|
||||||
|
|
||||||
if(delta_u > capDelta) delta_u = capDelta;
|
|
||||||
if(delta_u < -capDelta) delta_u = -capDelta;
|
|
||||||
|
|
||||||
// 转速上限软限制:转速已达上限时禁止继续加速
|
|
||||||
if(sysPara->para.flagOfReclaimPumEnable &&
|
|
||||||
sysPara->status.gearPumpRunSpeed >= maxSpeed)
|
|
||||||
{
|
{
|
||||||
if(delta_u > 0.0f) delta_u = 0.0f;
|
delta_u = -0.20f * (float)pressureChange; // 只刹车
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// 标准增量式控制:比例项 + 微分项
|
||||||
|
delta_u = 0.05f * error - 0.20f * (float)pressureChange;
|
||||||
}
|
}
|
||||||
|
|
||||||
u += delta_u;
|
// 分级限幅(根据误差大小限制调节幅度)
|
||||||
clampU();
|
float maxDelta;
|
||||||
cur = (int)u;
|
if(absErr > 30.0f) maxDelta = 1.0f;
|
||||||
|
else if(absErr > 10.0f) maxDelta = 0.6f;
|
||||||
|
else maxDelta = 0.3f;
|
||||||
|
|
||||||
sysPara->para.gearPumpValue = (unsigned short)cur;
|
if(delta_u > maxDelta) delta_u = maxDelta;
|
||||||
|
if(delta_u < -maxDelta) delta_u = -maxDelta;
|
||||||
|
|
||||||
|
// 更新控制量
|
||||||
|
u += delta_u;
|
||||||
|
|
||||||
|
// 限制范围
|
||||||
|
const float MIN_RUNNING_SPEED = 30.0f; // 最低运行转速(低于此值泵不转)
|
||||||
|
const float MAX_WORKING_SPEED = 350.0f;
|
||||||
|
|
||||||
|
if(u < MIN_RUNNING_SPEED) u = MIN_RUNNING_SPEED;
|
||||||
|
if(u > MAX_WORKING_SPEED) u = MAX_WORKING_SPEED;
|
||||||
|
|
||||||
|
sysPara->para.gearPumpValue = (unsigned short)(int)u;
|
||||||
sysPara->devOp->WriteMoterPump();
|
sysPara->devOp->WriteMoterPump();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void InkJetPrinter::DacAdjustStore()
|
void InkJetPrinter::DacAdjustStore()
|
||||||
@@ -1234,16 +1311,22 @@ void InkJetPrinter::timerHandler(void){
|
|||||||
if(pulse_300ms) tempFlag=1;
|
if(pulse_300ms) tempFlag=1;
|
||||||
if((sysPara->status.delay10ms%3) == 0) //读取状态后再检測
|
if((sysPara->status.delay10ms%3) == 0) //读取状态后再检測
|
||||||
{
|
{
|
||||||
// 检测是否需要启动泵泵,注意启动条件:1. 无墨水警告 2. 未运行 3. 未手动控制
|
|
||||||
if(!(sysPara->status.statWarn & WARN_STATUS_INK_WARN) && !gearPumpRunFlag && !sysPara->status.isPumpValveControledByHand)//刚启动前3秒
|
if(!(sysPara->status.statWarn & WARN_STATUS_INK_WARN) && !gearPumpRunFlag && !sysPara->status.isPumpValveControledByHand)//刚启动前3秒
|
||||||
{
|
{
|
||||||
if(sysPara->para.gearPumpEnable) {
|
if(sysPara->para.gearPumpEnable) {
|
||||||
// 确保开机时控制字从 0 开始,让 pressureAdj 软启动从 0 爬坡,避免突变到高转速
|
// 隔膜泵初始化:确保从停止状态开始
|
||||||
if(sysPara->para.gearPumpValue != 0) {
|
if(sysPara->para.gearPumpValue != 0) {
|
||||||
sysPara->para.gearPumpValue = 0;
|
sysPara->para.gearPumpValue = 0;
|
||||||
u = 0.0f;
|
u = 0.0f;
|
||||||
sysPara->devOp->WriteMoterPump();
|
sysPara->devOp->WriteMoterPump();
|
||||||
}
|
}
|
||||||
|
// 初始化隔膜泵状态机
|
||||||
|
m_pumpState = DPUMP_STOPPED;
|
||||||
|
m_stateChangeCount = 0;
|
||||||
|
m_adjSkip = 0;
|
||||||
|
m_lastActualPressure = 0;
|
||||||
|
m_bufValidCount = 0;
|
||||||
|
m_startingStepCount = 0;
|
||||||
gearPumpStartFlag = true;
|
gearPumpStartFlag = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1272,15 +1355,19 @@ void InkJetPrinter::timerHandler(void){
|
|||||||
ControledSwitchFlag = false;
|
ControledSwitchFlag = false;
|
||||||
pulse_3s = 0;
|
pulse_3s = 0;
|
||||||
}
|
}
|
||||||
// 检测手动→自动边沿,直接恢复压力控制,不走 gearPumpStartFlag 的 3s 等待
|
// 检测手动→自动边沿,恢复压力控制时从停止状态安全重启
|
||||||
if(m_lastByHand && !sysPara->status.isPumpValveControledByHand)
|
if(m_lastByHand && !sysPara->status.isPumpValveControledByHand)
|
||||||
{
|
{
|
||||||
ControledSwitchFlag = true;
|
ControledSwitchFlag = true;
|
||||||
u = (float)sysPara->para.gearPumpValue; // 同步当前转速,避免突变
|
u = 0.0f;
|
||||||
m_rampDone = false; // 重新软启动,适应切换后的压力状态
|
sysPara->para.gearPumpValue = 0;
|
||||||
|
sysPara->devOp->WriteMoterPump();
|
||||||
|
m_pumpState = DPUMP_STOPPED;
|
||||||
|
m_stateChangeCount = 0;
|
||||||
m_adjSkip = 0;
|
m_adjSkip = 0;
|
||||||
m_lastPressure = 0;
|
m_lastActualPressure = 0;
|
||||||
m_stableCount = 0;
|
m_startingStepCount = 0;
|
||||||
|
m_bufValidCount = 0;
|
||||||
for(int i = 0; i < 10; i++) m_pressureBuf[i] = 0;
|
for(int i = 0; i < 10; i++) m_pressureBuf[i] = 0;
|
||||||
m_bufIdx = 0;
|
m_bufIdx = 0;
|
||||||
}
|
}
|
||||||
@@ -1299,25 +1386,29 @@ void InkJetPrinter::timerHandler(void){
|
|||||||
}
|
}
|
||||||
if(gearPumpRunNormalFlag && !sysPara->status.isPumpValveControledByHand && sysPara->para.gearPumpEnable)
|
if(gearPumpRunNormalFlag && !sysPara->status.isPumpValveControledByHand && sysPara->para.gearPumpEnable)
|
||||||
{
|
{
|
||||||
static int count_3s = 0;
|
// 隔膜泵泄漏检测:运行状态下,压力持续不上升或下降
|
||||||
if(u > gearPumpRunNormalValue*1.5)//改大一点
|
static int leakCheckCount = 0;
|
||||||
|
static int lastPressureForLeak = 0;
|
||||||
|
|
||||||
|
if(m_pumpState == DPUMP_RUNNING && pulse_1s)
|
||||||
{
|
{
|
||||||
if(pulse_1s)
|
int pressureChange = sysPara->status.PRESSURE - lastPressureForLeak;
|
||||||
{
|
|
||||||
count_3s++;
|
// 泵运行中(转速>40),压力不升反降,或上升太慢(<5/秒)
|
||||||
if(count_3s == 3)
|
if(u > 40.0f && pressureChange < 5) {
|
||||||
{
|
leakCheckCount++;
|
||||||
count_3s = 0;
|
if(leakCheckCount >= 5) { // 连续5秒
|
||||||
ui->tabMainWindow->setRunStatus(tr("压力泄漏或压力传感器故障!"));
|
leakCheckCount = 0;
|
||||||
|
ui->tabMainWindow->setRunStatus(tr("压力异常,可能泄漏!"));
|
||||||
sysPara->status.gearPumpRunStopFlag = true;
|
sysPara->status.gearPumpRunStopFlag = true;
|
||||||
gearPumpRunNormalFlag = false;
|
gearPumpRunNormalFlag = false;
|
||||||
LogInfo::setRunStatusText(tr("运行中压力泄漏,停齿轮泵!"));
|
LogInfo::setRunStatusText(tr("运行中压力泄漏,停泵!"));
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
leakCheckCount = 0;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
lastPressureForLeak = sysPara->status.PRESSURE;
|
||||||
{
|
|
||||||
count_3s = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(sysPara->para.gearPumpEnable && (sysPara->status.gearPumpRunSpeed < 100) && test_flag){
|
if(sysPara->para.gearPumpEnable && (sysPara->status.gearPumpRunSpeed < 100) && test_flag){
|
||||||
@@ -1326,7 +1417,7 @@ void InkJetPrinter::timerHandler(void){
|
|||||||
test_flag = 0;
|
test_flag = 0;
|
||||||
}
|
}
|
||||||
if(pulse_1s) {
|
if(pulse_1s) {
|
||||||
if(sysPara->status.selfCheckDone && sysPara->para.gearPumpEnable && sysPara->para.flagOfReclaimPumEnable)
|
if(sysPara->status.selfCheckDone && sysPara->para.gearPumpEnable)
|
||||||
checkPressureControl();
|
checkPressureControl();
|
||||||
if((QTime::currentTime()>=QTime(00,00,00))&&(QTime::currentTime()<=QTime(00,00,02))&&sysPara->para.Reciclar){
|
if((QTime::currentTime()>=QTime(00,00,00))&&(QTime::currentTime()<=QTime(00,00,02))&&sysPara->para.Reciclar){
|
||||||
if(ui->tabMainWindow->getCurrPrintStatus() != 1){
|
if(ui->tabMainWindow->getCurrPrintStatus() != 1){
|
||||||
@@ -1385,16 +1476,12 @@ void InkJetPrinter::timerHandler(void){
|
|||||||
|
|
||||||
if(pulse_1s && flagOfSerialThreadStratEn){
|
if(pulse_1s && flagOfSerialThreadStratEn){
|
||||||
if (!m_serialThreadFPGA->isRunning()) {
|
if (!m_serialThreadFPGA->isRunning()) {
|
||||||
#ifndef ARCH_X86
|
|
||||||
qDebug()<<"start FPGA tread";
|
qDebug()<<"start FPGA tread";
|
||||||
m_serialThreadFPGA->start();
|
m_serialThreadFPGA->start();
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
if (!m_serialThreadSTM32->isRunning()){
|
if (!m_serialThreadSTM32->isRunning()){
|
||||||
#ifndef ARCH_X86
|
|
||||||
qDebug()<<"start STM32 tread";
|
qDebug()<<"start STM32 tread";
|
||||||
m_serialThreadSTM32->start();
|
m_serialThreadSTM32->start();
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
flagOfSerialThreadStratEn = false;
|
flagOfSerialThreadStratEn = false;
|
||||||
}
|
}
|
||||||
@@ -1502,10 +1589,11 @@ 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){
|
if(!sysPara->status.selfCheckDone && sysPara->status.isPrinting){
|
||||||
|
sysPara->status.selfCheckDone = true;
|
||||||
|
ui->tabMainWindow->updatePrintDisplayLabel();
|
||||||
sysPara->status.flagOfAbnormalStatus = true;
|
sysPara->status.flagOfAbnormalStatus = true;
|
||||||
|
|
||||||
static bool onceLog = true;
|
static bool onceLog = true;
|
||||||
@@ -1549,21 +1637,27 @@ void InkJetPrinter::timerHandler(void){
|
|||||||
if(sysPara->status.selfCheckCnt >= MAX_SELF_CHECK_CNT)
|
if(sysPara->status.selfCheckCnt >= MAX_SELF_CHECK_CNT)
|
||||||
{
|
{
|
||||||
sysPara->status.selfCheckDone = 1;
|
sysPara->status.selfCheckDone = 1;
|
||||||
u = (float)sysPara->para.gearPumpValue;
|
// 自检完成后管道恢复正常阻力,必须重新从STOPPED状态开始
|
||||||
// 自检完成后管道恢复正常阻力,重置软启动让压力重新平稳收敛
|
// 清零 u 和状态机,让系统根据实际压力重新启动
|
||||||
// 不清零 u,从当前控制字开始,避免突变
|
u = 0.0f; // 关键:清零控制量,避免继承自检期间的大转速
|
||||||
// m_rampDone = false;
|
sysPara->para.gearPumpValue = 0;
|
||||||
// m_adjSkip = 0;
|
sysPara->devOp->WriteMoterPump(); // 立即停泵
|
||||||
// m_lastPressure = 0;
|
|
||||||
// m_stableCount = 0;
|
|
||||||
|
|
||||||
autoControlValvePump();
|
|
||||||
|
|
||||||
|
m_pumpState = DPUMP_STOPPED; // 强制进入STOPPED状态
|
||||||
|
m_stateChangeCount = 0;
|
||||||
|
m_adjSkip = 0;
|
||||||
|
m_lastActualPressure = 0;
|
||||||
|
m_bufValidCount = 0;
|
||||||
for(int i = 0; i < 10; i++) m_pressureBuf[i] = 0;
|
for(int i = 0; i < 10; i++) m_pressureBuf[i] = 0;
|
||||||
m_bufIdx = 0;
|
m_bufIdx = 0;
|
||||||
|
|
||||||
|
if (check_flag) {
|
||||||
LogInfo::setRunStatusText(tr("自检完成!!!"));
|
LogInfo::setRunStatusText(tr("自检完成!!!"));
|
||||||
ui->tabMainWindow->setRunStatus(tr("自检完成!!!"));
|
ui->tabMainWindow->setRunStatus(tr("自检完成!!!"));
|
||||||
qDebug()<<"自检完成!!!";
|
qDebug()<<"自检完成!!!";
|
||||||
|
check_flag = false;
|
||||||
|
}
|
||||||
|
|
||||||
ui->tabPrintSetting->PrintSettingLog();
|
ui->tabPrintSetting->PrintSettingLog();
|
||||||
ui->tabMainWindow->enableReclaimCtrlButton(true);
|
ui->tabMainWindow->enableReclaimCtrlButton(true);
|
||||||
sysPara->devOp->mainInkCtrl();
|
sysPara->devOp->mainInkCtrl();
|
||||||
@@ -1590,14 +1684,25 @@ void InkJetPrinter::timerHandler(void){
|
|||||||
m_lastReclaimMode = sysPara->para.flagOfReclaimPumEnable;
|
m_lastReclaimMode = sysPara->para.flagOfReclaimPumEnable;
|
||||||
gearPumpRunNormalFlag = false; // 泄漏保护重新学习
|
gearPumpRunNormalFlag = false; // 泄漏保护重新学习
|
||||||
gearPumpRunNormalValue = 0.0f;
|
gearPumpRunNormalValue = 0.0f;
|
||||||
m_rampDone = false; // 软启动重新爬坡适应新上限
|
// 重置隔膜泵状态机,适应新模式
|
||||||
|
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_adjSkip = 0;
|
||||||
m_lastPressure = 0;
|
m_lastActualPressure = 0;
|
||||||
m_stableCount = 0;
|
m_bufValidCount = 0;
|
||||||
for(int i = 0; i < 10; i++) m_pressureBuf[i] = 0;
|
for(int i = 0; i < 10; i++) m_pressureBuf[i] = 0;
|
||||||
m_bufIdx = 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();
|
pressureAdj();
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -2067,38 +2172,29 @@ void InkJetPrinter::timerHandler(void){
|
|||||||
}
|
}
|
||||||
else if(pulse_1s && sysPara->para.gearPumpEnable && sysPara->status.selfCheckDone
|
else if(pulse_1s && sysPara->para.gearPumpEnable && sysPara->status.selfCheckDone
|
||||||
&& (!sysPara->status.statWarn) && !sysPara->status.powerOffAppending){
|
&& (!sysPara->status.statWarn) && !sysPara->status.powerOffAppending){
|
||||||
if((!sysPara->para.flagOfReclaimPumEnable && sysPara->status.gearPumpRunSpeed <= 2000)
|
// 隔膜泵速度告警逻辑:检测转速是否异常超过最大工作转速
|
||||||
||(sysPara->para.flagOfReclaimPumEnable && sysPara->status.gearPumpRunSpeed <= sysPara->para.gearPumpSpeedAlarm))
|
// 最大工作转速对应的RPM约为:300 * 60 * 1000 / (500 * 2) = 1800 RPM
|
||||||
|
// 给予余量,告警阈值设为2200 RPM
|
||||||
|
const int MAX_SPEED_ALARM = 2200;
|
||||||
|
|
||||||
|
if(sysPara->status.gearPumpRunSpeed <= MAX_SPEED_ALARM)
|
||||||
{
|
{
|
||||||
pulse_30s = 0;
|
pulse_30s = 0;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
pulse_30s++;
|
pulse_30s++;
|
||||||
if(pulse_30s >= 30){
|
if(pulse_30s >= 30){
|
||||||
if((sysPara->status.gearPumpRunSpeed >= 2500)||(sysPara->devOp->color_flag == 2)
|
|
||||||
||(sysPara->para.flagOfReclaimPumEnable && sysPara->status.gearPumpRunSpeed > sysPara->para.gearPumpSpeedAlarm))
|
|
||||||
{
|
|
||||||
sysPara->status.flagOfSpeedAlarm = true;
|
sysPara->status.flagOfSpeedAlarm = true;
|
||||||
sysPara->devOp->color_flag = 2;
|
sysPara->devOp->color_flag = 2;
|
||||||
if(pulse_30s % 500 == 0){
|
if(pulse_30s % 500 == 0){
|
||||||
LogInfo::setRunStatusText(tr("齿轮泵转速过高,请立即停机并联系供应商!"));
|
LogInfo::setRunStatusText(tr("泵转速异常过高,请立即停机并联系供应商!"));
|
||||||
qDebug()<<"齿轮泵转速过高,请立即停机并联系供应商!";
|
qDebug()<<"泵转速异常过高,请立即停机并联系供应商!";
|
||||||
}
|
}
|
||||||
ui->tabMainWindow->setRunStatus(tr("齿轮泵转速过高,请立即停机并联系供应商!"));
|
ui->tabMainWindow->setRunStatus(tr("泵转速异常过高,请立即停机并联系供应商!"));
|
||||||
sysPara->devOp->controlRedLight(true);
|
sysPara->devOp->controlRedLight(true);
|
||||||
if(sysPara->status.isPrinting)
|
if(sysPara->status.isPrinting)
|
||||||
ui->tabMainWindow->on_pushButtonStopPrint_pressed();
|
ui->tabMainWindow->on_pushButtonStopPrint_pressed();
|
||||||
}
|
}
|
||||||
else{
|
|
||||||
sysPara->devOp->color_flag = 1;
|
|
||||||
if(pulse_30s % 500 == 0){
|
|
||||||
LogInfo::setRunStatusText(tr("齿轮泵转速过高,请清理过滤器或者检查是否泄露!"));
|
|
||||||
qDebug()<<"齿轮泵转速过高,请清理过滤器或者检查是否泄露!";
|
|
||||||
}
|
|
||||||
ui->tabMainWindow->setRunStatus(tr("齿轮泵转速过高,请清理过滤器或者检查是否泄露!"));
|
|
||||||
sysPara->devOp->controlYellowLight(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(pulse_30s % 10 == 0)
|
if(pulse_30s % 10 == 0)
|
||||||
qDebug()<<"粘度: "<<QString::number(sysPara->status.viscosity);
|
qDebug()<<"粘度: "<<QString::number(sysPara->status.viscosity);
|
||||||
}
|
}
|
||||||
@@ -2167,6 +2263,8 @@ void InkJetPrinter::cnt1GroupCheck(void)
|
|||||||
static unsigned char lastGroupRunningIndex = 0;
|
static unsigned char lastGroupRunningIndex = 0;
|
||||||
if(sysPara->para.cnt1ByGroupEnalbe)
|
if(sysPara->para.cnt1ByGroupEnalbe)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
sysPara->devOp->ReadCnt1GroupStatus();
|
sysPara->devOp->ReadCnt1GroupStatus();
|
||||||
if(lastGroupRunningIndex == sysPara->status.cnt1GroupRunningIndex)
|
if(lastGroupRunningIndex == sysPara->status.cnt1GroupRunningIndex)
|
||||||
return;
|
return;
|
||||||
@@ -2641,11 +2739,14 @@ void InkJetPrinter::detectAndcontrolReclaimTank(){
|
|||||||
if(sysPara->devOp->isReclaimTankOpenEnable())
|
if(sysPara->devOp->isReclaimTankOpenEnable())
|
||||||
sysPara->devOp->controlReclaimTankOpen(false); //到头,关闭
|
sysPara->devOp->controlReclaimTankOpen(false); //到头,关闭
|
||||||
sysPara->status.reclainTankReachEnd = true;
|
sysPara->status.reclainTankReachEnd = true;
|
||||||
/*应要求去掉多余到信息 LogInfo::setRunStatusText(tr("回收槽到头"));*/
|
if (sysPara->status.airPushingDone && sysPara->status.currReclaimTankPos != 0) {
|
||||||
|
// 排气结束并放下回收槽以后才允许显示该信息
|
||||||
ui->tabMainWindow->setRunStatus(tr("回收槽到头"));
|
ui->tabMainWindow->setRunStatus(tr("回收槽到头"));
|
||||||
|
}
|
||||||
|
|
||||||
ui->tabMainWindow->enablePrintButton(true); //仅仅在此时能使能打印按钮
|
ui->tabMainWindow->enablePrintButton(true); //仅仅在此时能使能打印按钮
|
||||||
ui->tabMainWindow->resetReclaimCtrlButtonText();
|
ui->tabMainWindow->resetReclaimCtrlButtonText();
|
||||||
sysPara->devOp->highVoltageCtrl(1);
|
// sysPara->devOp->highVoltageCtrl(1);
|
||||||
emit reclaimTankOpenDone();
|
emit reclaimTankOpenDone();
|
||||||
/*回收槽开关时间校正*/
|
/*回收槽开关时间校正*/
|
||||||
sysPara->para.reclaimTankTime =( sysPara->status.currReclaimTankPos>120 )? sysPara->status.currReclaimTankPos/10-1:12;
|
sysPara->para.reclaimTankTime =( sysPara->status.currReclaimTankPos>120 )? sysPara->status.currReclaimTankPos/10-1:12;
|
||||||
@@ -2670,10 +2771,14 @@ void InkJetPrinter::detectAndcontrolReclaimTank(){
|
|||||||
}
|
}
|
||||||
else if(sysPara->status.reclaimTankstatus == 6 )//7 故障,6 关完成,5开完成,4 保持, 3 停止, 2 关, 1 开,0-无操作
|
else if(sysPara->status.reclaimTankstatus == 6 )//7 故障,6 关完成,5开完成,4 保持, 3 停止, 2 关, 1 开,0-无操作
|
||||||
{
|
{
|
||||||
|
if (sysPara->status.airPushingDone) {
|
||||||
|
// 排气结束并放下回收槽以后才允许显示该信息
|
||||||
|
ui->tabMainWindow->setRunStatus(tr("回收槽到头"));
|
||||||
|
}
|
||||||
|
|
||||||
if(sysPara->devOp->isReclaimTankCloseEnable())
|
if(sysPara->devOp->isReclaimTankCloseEnable())
|
||||||
sysPara->devOp->controlReclaimTankClose(false); //到头,关闭
|
sysPara->devOp->controlReclaimTankClose(false); //到头,关闭
|
||||||
/*应要求去掉多余到信息 LogInfo::setRunStatusText(tr("回收槽到头"));*/
|
|
||||||
ui->tabMainWindow->setRunStatus(tr("回收槽到头"));
|
|
||||||
//sysPara->status.currReclaimTankPos = 0; //将回收槽的时间置为零
|
//sysPara->status.currReclaimTankPos = 0; //将回收槽的时间置为零
|
||||||
ui->tabMainWindow->resetReclaimCtrlButtonText();
|
ui->tabMainWindow->resetReclaimCtrlButtonText();
|
||||||
emit reclaimTankCloseDone();
|
emit reclaimTankCloseDone();
|
||||||
@@ -3350,7 +3455,17 @@ void InkJetPrinter::restartSerialPort(){
|
|||||||
connect(serialSTM32,SIGNAL(powerOffReady()),ui->tabMainWindow,SLOT(powerOffConfirmed()));
|
connect(serialSTM32,SIGNAL(powerOffReady()),ui->tabMainWindow,SLOT(powerOffConfirmed()));
|
||||||
connect(m_serialThreadSTM32,&QThread::started,serialSTM32,&Serial::startInitSlot);
|
connect(m_serialThreadSTM32,&QThread::started,serialSTM32,&Serial::startInitSlot);
|
||||||
connect(serialSTM32,SIGNAL(queueSizeSTM32(int)),ui->tabMainWindow,SLOT(showSTM32queuesize(int)));
|
connect(serialSTM32,SIGNAL(queueSizeSTM32(int)),ui->tabMainWindow,SLOT(showSTM32queuesize(int)));
|
||||||
|
connect(serialSTM32, &Serial::STM32Connected, this, [this](bool ok, QString errStr){
|
||||||
|
if(!ok || !sysPara || !sysPara->devOp) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QTimer::singleShot(1000, this, [this](){
|
||||||
|
sysPara->devOp->highVoltageCtrl(0);
|
||||||
|
LogInfo::setRunStatusText("High voltage forced off at app boot");
|
||||||
|
});
|
||||||
|
|
||||||
|
}, Qt::QueuedConnection);
|
||||||
|
|
||||||
flagOfSerialThreadStratEn = true;
|
flagOfSerialThreadStratEn = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+29
-8
@@ -101,14 +101,35 @@ private:
|
|||||||
QTimer* viscosity_timer;
|
QTimer* viscosity_timer;
|
||||||
QTimer* timer;
|
QTimer* timer;
|
||||||
QTime t1;
|
QTime t1;
|
||||||
bool m_rampDone = false; // pressureAdj 软启动完成标志
|
// 因为原先vx5没有状态管理,容易在刚开机时和排气中互相抢占显示
|
||||||
int m_adjSkip = 0; // pressureAdj 节拍计数
|
bool check_flag = true;
|
||||||
int m_lastPressure = 0; // pressureAdj 上次采样压力(稳定检测用)
|
|
||||||
int m_stableCount = 0; // pressureAdj 压力连续稳定计数
|
// 隔膜泵状态枚举
|
||||||
int m_pressureBuf[10] = {}; // pressureAdj 压力滑动平均缓冲(10点=1s)
|
enum DiaphragmPumpState {
|
||||||
int m_bufIdx = 0; // pressureAdj 滑动平均写入索引
|
DPUMP_STOPPED = 0, // 停止状态
|
||||||
bool m_lastReclaimMode = false; // 上次 flagOfReclaimPumEnable 状态,用于检测切换
|
DPUMP_STARTING = 1, // 启动爬升状态
|
||||||
bool m_lastByHand = false; // 上次 isPumpValveControledByHand 状态,用于检测手动、自动
|
DPUMP_RUNNING = 2 // 运行微调状态
|
||||||
|
};
|
||||||
|
|
||||||
|
// 隔膜泵控制参数
|
||||||
|
DiaphragmPumpState m_pumpState = DPUMP_STOPPED; // 泵当前状态
|
||||||
|
int m_stateChangeCount = 0; // 状态切换计数器(用于实现800ms间隔)
|
||||||
|
int m_adjSkip = 0; // 调节跳过计数器
|
||||||
|
int m_lastActualPressure = 0; // 上次实时压力(微分项用)
|
||||||
|
int m_startingStepCount = 0; // 启动步进计数器
|
||||||
|
int m_pressureBuf[10] = {}; // 压力滑动平均缓冲(10点=1s)
|
||||||
|
int m_bufIdx = 0; // 滑动平均写入索引
|
||||||
|
int m_bufValidCount = 0; // 缓冲区有效点数(用于启动阶段判断)
|
||||||
|
bool m_lastReclaimMode = false; // 上次回收泵使能状态
|
||||||
|
bool m_lastByHand = false; // 上次手动控制状态
|
||||||
|
bool m_powerOffPressureControlActive = false; // 关机压力控制已初始化
|
||||||
|
|
||||||
|
// 隔膜泵控制函数
|
||||||
|
float calculateTargetSpeed(int err);
|
||||||
|
void handleStoppedState(int err, bool canSwitch);
|
||||||
|
void handleStartingState(int err, int actual, int target);
|
||||||
|
void handleRunningState(int err, bool canSwitch);
|
||||||
|
|
||||||
void autoControlHeater();
|
void autoControlHeater();
|
||||||
void autoControlValvePump();
|
void autoControlValvePump();
|
||||||
void detectAndcontrolReclaimTank();
|
void detectAndcontrolReclaimTank();
|
||||||
|
|||||||
+63
-67
@@ -139,9 +139,6 @@ PrintSetting::PrintSetting(QWidget *parent) :
|
|||||||
current_print_col_num=0;
|
current_print_col_num=0;
|
||||||
ui->tabWidget_2->addTab(ui->tab_11,tr("打印电压缩放"));
|
ui->tabWidget_2->addTab(ui->tab_11,tr("打印电压缩放"));
|
||||||
|
|
||||||
#ifdef COUNTER2_BY_GROUP
|
|
||||||
ui->secionCountPanel->hide();
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PrintSetting::~PrintSetting()
|
PrintSetting::~PrintSetting()
|
||||||
@@ -197,7 +194,11 @@ void PrintSetting::bindSysPara(SysPara *sysPara){
|
|||||||
this->sysPara =sysPara;
|
this->sysPara =sysPara;
|
||||||
//ui->volDacEdit
|
//ui->volDacEdit
|
||||||
//ui->volDacEdit->bindSysPara(sysPara);
|
//ui->volDacEdit->bindSysPara(sysPara);
|
||||||
if(sectionalWid) sectionalWid->bindSysPara(sysPara);
|
#ifdef COUNTER2_BY_GROUP
|
||||||
|
ui->secionCountPanel->hide();
|
||||||
|
ui->tabWidget_2->addTab(ui->tab_9,tr("其他设置"));
|
||||||
|
initSection();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void PrintSetting::PrintupdateSysParaToUI()
|
void PrintSetting::PrintupdateSysParaToUI()
|
||||||
@@ -383,26 +384,24 @@ void PrintSetting::updateSysParaToUI(){
|
|||||||
ModuleHideDisplay();
|
ModuleHideDisplay();
|
||||||
displayForAdjustVoltage(sysPara->para.flagOfAdjustVoltage);
|
displayForAdjustVoltage(sysPara->para.flagOfAdjustVoltage);
|
||||||
|
|
||||||
// todo
|
|
||||||
LoadCnt1GroupSettingsToUI();
|
|
||||||
#ifdef COUNTER2_BY_GROUP
|
#ifdef COUNTER2_BY_GROUP
|
||||||
SectionalManager::instance()->emitLoadUI();
|
SectionalManager::instance()->emitLoadUI();
|
||||||
|
#else
|
||||||
|
LoadCnt1GroupSettingsToUI();
|
||||||
#endif
|
#endif
|
||||||
if(sysPara->para.mode0211 || sysPara->para.FullColFixVal)
|
if(sysPara->para.mode0211 || sysPara->para.FullColFixVal)
|
||||||
{
|
{
|
||||||
ui->spinBoxStartVoltage->setEnabled(false);
|
ui->spinBoxStartVoltage->setEnabled(false);
|
||||||
ui->spinBoxEndVoltage->setEnabled(false);
|
ui->spinBoxEndVoltage->setEnabled(false);
|
||||||
}
|
}
|
||||||
if(sysPara->para.flagOfCnt1GroupDisp)
|
// if(sysPara->para.flagOfCnt1GroupDisp)
|
||||||
{
|
// {
|
||||||
//edit@12-03
|
// //edit@12-03
|
||||||
const int indexTab=ui->tabWidget_2->indexOf(ui->tab_9);
|
// const int indexTab=ui->tabWidget_2->indexOf(ui->tab_9);
|
||||||
if(-1==indexTab) {
|
// if(-1==indexTab) {
|
||||||
ui->tabWidget_2->addTab(ui->tab_9,tr("其他设置"));
|
// ui->tabWidget_2->addTab(ui->tab_9,tr("其他设置"));
|
||||||
}
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
}
|
|
||||||
if(sysPara->para.flagOfstepPrint)
|
if(sysPara->para.flagOfstepPrint)
|
||||||
{
|
{
|
||||||
//edit@12-03
|
//edit@12-03
|
||||||
@@ -417,14 +416,14 @@ void PrintSetting::updateSysParaToUI(){
|
|||||||
void PrintSetting::showMachInfo(QString Mac)
|
void PrintSetting::showMachInfo(QString Mac)
|
||||||
{
|
{
|
||||||
QString VernonBach;
|
QString VernonBach;
|
||||||
VernonBach.sprintf("%d.%d.%02d%s%s_", UP_PRINTER_MAJOR_VER, UP_PRINTER_MINOR_VER,UP_PRINTER_RIVISION_VER,SUB_VERSION,SUB_RFID);
|
VernonBach.sprintf("%s.%s.", MACHINAE_VER, PUMP_VER);
|
||||||
VernonBach = VernonBach + (QString) Public::DateToString(__DATE__)+"_";//+UP_PRINTER_STAGE_VER;
|
VernonBach = VernonBach + (QString) Public::DateToString(__DATE__)+"_"+SUB_VER;
|
||||||
}
|
}
|
||||||
void PrintSetting::showRemoteControl(QString SuperNodeIP,QString EdgeIP)
|
void PrintSetting::showRemoteControl(QString SuperNodeIP,QString EdgeIP)
|
||||||
{
|
{
|
||||||
QString VernonBach;
|
QString VernonBach;
|
||||||
VernonBach.sprintf("%d.%d.%02d%s%s_", UP_PRINTER_MAJOR_VER, UP_PRINTER_MINOR_VER,UP_PRINTER_RIVISION_VER,SUB_VERSION,SUB_RFID);
|
VernonBach.sprintf("%s.%s.", MACHINAE_VER, PUMP_VER);
|
||||||
VernonBach = VernonBach + (QString) Public::DateToString(__DATE__)+"_";//+UP_PRINTER_STAGE_VER;
|
VernonBach = VernonBach + (QString) Public::DateToString(__DATE__)+"_"+SUB_VER;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PrintSetting::applyUIPara(){
|
void PrintSetting::applyUIPara(){
|
||||||
@@ -479,7 +478,7 @@ void PrintSetting::applyUIPara(){
|
|||||||
sysPara->status.cnt1CurrentValueInitDoneFlag = !ui->checkBoxResetCnt1CurrValue->isChecked();
|
sysPara->status.cnt1CurrentValueInitDoneFlag = !ui->checkBoxResetCnt1CurrValue->isChecked();
|
||||||
sysPara->status.cnt2CurrentValueInitDoneFlag = !ui->checkBoxResetCnt2CurrValue->isChecked();
|
sysPara->status.cnt2CurrentValueInitDoneFlag = !ui->checkBoxResetCnt2CurrValue->isChecked();
|
||||||
sysPara->status.cnt3CurrentValueInitDoneFlag = !ui->checkBoxResetCnt3CurrValue->isChecked();
|
sysPara->status.cnt3CurrentValueInitDoneFlag = !ui->checkBoxResetCnt3CurrValue->isChecked();
|
||||||
//将vx4的分段计米功能迁移了,这个应用设置以及界面后续会删除 hlp todo 0602
|
//将vx4的分段计米功能迁移了,这个应用设置后续会删除 hlp todo 0602
|
||||||
#ifndef COUNTER2_BY_GROUP
|
#ifndef COUNTER2_BY_GROUP
|
||||||
if(sysPara->para.cnt1ByGroupEnalbe)
|
if(sysPara->para.cnt1ByGroupEnalbe)
|
||||||
ApplyCnt1GroupSetting();
|
ApplyCnt1GroupSetting();
|
||||||
@@ -664,19 +663,6 @@ void PrintSetting::applyUIPara(){
|
|||||||
ui->checkBoxResetCnt3CurrValue->setChecked(false);
|
ui->checkBoxResetCnt3CurrValue->setChecked(false);
|
||||||
|
|
||||||
emit checkPrintIntervalSignal();
|
emit checkPrintIntervalSignal();
|
||||||
// if(sysPara->para.EditMode==SCENE)
|
|
||||||
// {
|
|
||||||
// QList<QGraphicsItem *> items = pGetPicScene->selectedItems();
|
|
||||||
// if(items.size() > 0)
|
|
||||||
// {
|
|
||||||
// PicTextItem* picText = qgraphicsitem_cast<PicTextItem*>(items.at(0));
|
|
||||||
// picText->CatchCnt1StartValue = ui->lineEditStartValue->text().toInt();
|
|
||||||
// picText->CatchCnt1CurrValue = ui->lineEditCountValue->text().toInt();
|
|
||||||
// picText->SpecialConditions = ui->radioButtonSpecialCondition->isChecked();
|
|
||||||
// pGetPicScene->clearSelection();
|
|
||||||
// //emit SwitchTimerShowItem(true);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -841,11 +827,11 @@ void PrintSetting::ondialogAuthorizationAccepted(){
|
|||||||
ModuleDecimalDisplay();
|
ModuleDecimalDisplay();
|
||||||
ModuleHideDisplay();
|
ModuleHideDisplay();
|
||||||
displayForAdjustVoltage(sysPara->para.flagOfAdjustVoltage);
|
displayForAdjustVoltage(sysPara->para.flagOfAdjustVoltage);
|
||||||
const int indexTab1=ui->tabWidget_2->indexOf(ui->tab_9);
|
// const int indexTab1=ui->tabWidget_2->indexOf(ui->tab_9);
|
||||||
if(sysPara->para.flagOfCnt1GroupDisp)
|
// if(sysPara->para.flagOfCnt1GroupDisp)
|
||||||
ui->tabWidget_2->addTab(ui->tab_9,tr("其他设置"));
|
// ui->tabWidget_2->addTab(ui->tab_9,tr("其他设置"));
|
||||||
else
|
// else
|
||||||
ui->tabWidget_2->removeTab(indexTab1);
|
// ui->tabWidget_2->removeTab(indexTab1);
|
||||||
const int indexTab2=ui->tabWidget->indexOf(ui->tab_6);
|
const int indexTab2=ui->tabWidget->indexOf(ui->tab_6);
|
||||||
if(sysPara->para.flagOfstepPrint)
|
if(sysPara->para.flagOfstepPrint)
|
||||||
ui->tabWidget->addTab(ui->tab_6,tr("跳米设置"));
|
ui->tabWidget->addTab(ui->tab_6,tr("跳米设置"));
|
||||||
@@ -866,11 +852,11 @@ void PrintSetting::ondialogAuthorizationAccepted(){
|
|||||||
ModuleDecimalDisplay();
|
ModuleDecimalDisplay();
|
||||||
ModuleHideDisplay();
|
ModuleHideDisplay();
|
||||||
displayForAdjustVoltage(sysPara->para.flagOfAdjustVoltage);
|
displayForAdjustVoltage(sysPara->para.flagOfAdjustVoltage);
|
||||||
const int indexTab1=ui->tabWidget_2->indexOf(ui->tab_9);
|
// const int indexTab1=ui->tabWidget_2->indexOf(ui->tab_9);
|
||||||
if(sysPara->para.flagOfCnt1GroupDisp)
|
// if(sysPara->para.flagOfCnt1GroupDisp)
|
||||||
ui->tabWidget_2->addTab(ui->tab_9,tr("其他设置"));
|
// ui->tabWidget_2->addTab(ui->tab_9,tr("其他设置"));
|
||||||
else
|
// else
|
||||||
ui->tabWidget_2->removeTab(indexTab1);
|
// ui->tabWidget_2->removeTab(indexTab1);
|
||||||
const int indexTab2=ui->tabWidget->indexOf(ui->tab_6);
|
const int indexTab2=ui->tabWidget->indexOf(ui->tab_6);
|
||||||
if(sysPara->para.flagOfstepPrint)
|
if(sysPara->para.flagOfstepPrint)
|
||||||
ui->tabWidget->addTab(ui->tab_6,tr("跳米设置"));
|
ui->tabWidget->addTab(ui->tab_6,tr("跳米设置"));
|
||||||
@@ -925,11 +911,11 @@ void PrintSetting::ondialogAuthorizationAccepted(){
|
|||||||
sysPara->para.flagOfCnt1GroupDisp = true;
|
sysPara->para.flagOfCnt1GroupDisp = true;
|
||||||
else
|
else
|
||||||
sysPara->para.flagOfCnt1GroupDisp = false;
|
sysPara->para.flagOfCnt1GroupDisp = false;
|
||||||
const int indexTab1=ui->tabWidget_2->indexOf(ui->tab_9);
|
// const int indexTab1=ui->tabWidget_2->indexOf(ui->tab_9);
|
||||||
if(sysPara->para.flagOfCnt1GroupDisp)
|
// if(sysPara->para.flagOfCnt1GroupDisp)
|
||||||
ui->tabWidget_2->addTab(ui->tab_9,tr("其他设置"));
|
// ui->tabWidget_2->addTab(ui->tab_9,tr("其他设置"));
|
||||||
else
|
// else
|
||||||
ui->tabWidget_2->removeTab(indexTab1);
|
// ui->tabWidget_2->removeTab(indexTab1);
|
||||||
|
|
||||||
if (type & 1<<3)
|
if (type & 1<<3)
|
||||||
sysPara->para.flagOfstepPrint = true;
|
sysPara->para.flagOfstepPrint = true;
|
||||||
@@ -967,11 +953,11 @@ void PrintSetting::ondialogAuthorizationAccepted(){
|
|||||||
//edit@11-29 输入密码显示,再次输入隐藏
|
//edit@11-29 输入密码显示,再次输入隐藏
|
||||||
else if(authString == "07710441"){
|
else if(authString == "07710441"){
|
||||||
//edit@12-03
|
//edit@12-03
|
||||||
const int indexTab=ui->tabWidget_2->indexOf(ui->tab_9);
|
// const int indexTab=ui->tabWidget_2->indexOf(ui->tab_9);
|
||||||
if(sysPara->para.flagOfCnt1GroupDisp)
|
// if(sysPara->para.flagOfCnt1GroupDisp)
|
||||||
ui->tabWidget_2->removeTab(indexTab);
|
// ui->tabWidget_2->removeTab(indexTab);
|
||||||
else
|
// else
|
||||||
ui->tabWidget_2->addTab(ui->tab_9,tr("其他设置"));
|
// ui->tabWidget_2->addTab(ui->tab_9,tr("其他设置"));
|
||||||
sysPara->para.flagOfCnt1GroupDisp=!sysPara->para.flagOfCnt1GroupDisp;
|
sysPara->para.flagOfCnt1GroupDisp=!sysPara->para.flagOfCnt1GroupDisp;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1065,6 +1051,8 @@ void PrintSetting::SpecailSettingsDisplay()
|
|||||||
{
|
{
|
||||||
if(flagOfSpecailSettng)
|
if(flagOfSpecailSettng)
|
||||||
{
|
{
|
||||||
|
const int indexTab=ui->tabWidget_2->indexOf(ui->tab_11);
|
||||||
|
if (indexTab == -1)
|
||||||
ui->tabWidget_2->addTab(ui->tab_11,tr("打印电压缩放"));
|
ui->tabWidget_2->addTab(ui->tab_11,tr("打印电压缩放"));
|
||||||
ui->comboBoxIndustry->setVisible(1);
|
ui->comboBoxIndustry->setVisible(1);
|
||||||
ui->checkBoxNewAmplifyPlate->setVisible(1);
|
ui->checkBoxNewAmplifyPlate->setVisible(1);
|
||||||
@@ -1080,8 +1068,8 @@ void PrintSetting::SpecailSettingsDisplay()
|
|||||||
{
|
{
|
||||||
if(flagOfEngineeringMode)
|
if(flagOfEngineeringMode)
|
||||||
ui->tabWidget_2->removeTab(5);
|
ui->tabWidget_2->removeTab(5);
|
||||||
else
|
// else
|
||||||
ui->tabWidget_2->removeTab(4);
|
// ui->tabWidget_2->removeTab(4);
|
||||||
ui->comboBoxIndustry->hide();
|
ui->comboBoxIndustry->hide();
|
||||||
ui->checkBoxNewAmplifyPlate->hide();
|
ui->checkBoxNewAmplifyPlate->hide();
|
||||||
// ui->labelRecommendedPrintSpeed->hide();
|
// ui->labelRecommendedPrintSpeed->hide();
|
||||||
@@ -1098,14 +1086,17 @@ void PrintSetting::EngineeringModeDisplay()
|
|||||||
{
|
{
|
||||||
if(flagOfEngineeringMode)
|
if(flagOfEngineeringMode)
|
||||||
{
|
{
|
||||||
|
#ifdef COUNTER2_BY_GROUP
|
||||||
ui->tabWidget_2->addTab(ui->tab_9,tr("其他设置"));
|
ui->tabWidget_2->addTab(ui->tab_9,tr("其他设置"));
|
||||||
// hlp test todo
|
ui->tabWidget_2->addTab(sectionalWid, tr("分段计数"));
|
||||||
#ifdef COUNTER2_BY_GROUP /* 分段计米 */
|
|
||||||
// 初始化先于bindSysPara
|
|
||||||
initSection();
|
|
||||||
#endif
|
#endif
|
||||||
if(flagOfSpecailSettng)
|
|
||||||
|
if(flagOfSpecailSettng) {
|
||||||
|
const int indexTab=ui->tabWidget_2->indexOf(ui->tab_11);
|
||||||
|
if (indexTab == -1)
|
||||||
ui->tabWidget_2->addTab(ui->tab_11,tr("打印电压缩放"));
|
ui->tabWidget_2->addTab(ui->tab_11,tr("打印电压缩放"));
|
||||||
|
}
|
||||||
|
|
||||||
ui->tabWidget->addTab(ui->tab_8,tr("计数器3设置"));
|
ui->tabWidget->addTab(ui->tab_8,tr("计数器3设置"));
|
||||||
ui->tabWidget->addTab(ui->tab_6,tr("跳米设置"));
|
ui->tabWidget->addTab(ui->tab_6,tr("跳米设置"));
|
||||||
ui->checkBoxSpeedOver->setVisible(1);
|
ui->checkBoxSpeedOver->setVisible(1);
|
||||||
@@ -1133,11 +1124,13 @@ void PrintSetting::EngineeringModeDisplay()
|
|||||||
if(flagOfSpecailSettng)
|
if(flagOfSpecailSettng)
|
||||||
{
|
{
|
||||||
ui->tabWidget_2->removeTab(5);
|
ui->tabWidget_2->removeTab(5);
|
||||||
ui->tabWidget_2->removeTab(4);
|
const int indexTab=ui->tabWidget_2->indexOf(ui->tab_11);
|
||||||
|
if (indexTab == -1)
|
||||||
ui->tabWidget_2->addTab(ui->tab_11,tr("打印电压缩放"));
|
ui->tabWidget_2->addTab(ui->tab_11,tr("打印电压缩放"));
|
||||||
|
} else {
|
||||||
|
// ui->tabWidget_2->removeTab(4);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
ui->tabWidget_2->removeTab(4);
|
|
||||||
ui->tabWidget->removeTab(3);
|
ui->tabWidget->removeTab(3);
|
||||||
ui->tabWidget->removeTab(2);
|
ui->tabWidget->removeTab(2);
|
||||||
ui->checkBoxSpeedOver->hide();
|
ui->checkBoxSpeedOver->hide();
|
||||||
@@ -1490,6 +1483,7 @@ void PrintSetting::ApplyCnt1GroupSetting()
|
|||||||
updateCnt1GroupsTblWgt();
|
updateCnt1GroupsTblWgt();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void PrintSetting::rowWidgetCreate(int rowIndex)
|
void PrintSetting::rowWidgetCreate(int rowIndex)
|
||||||
{
|
{
|
||||||
#ifdef COUNTER1_BY_GROUP /* 分段计米 */
|
#ifdef COUNTER1_BY_GROUP /* 分段计米 */
|
||||||
@@ -2239,7 +2233,7 @@ void PrintSetting::ModuleDecimalHideDisplay(const bool bEnabled)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PrintSetting::specailMachineSetting(bool enable){
|
void PrintSetting::specailMachineSetting(bool enable){
|
||||||
ui->checkBox_ReclaimPumpEnable->setEnabled(enable);
|
ui->checkBox_ReclaimPumpEnable->setEnabled(enable && PUMP_VER == QString("G"));
|
||||||
ui->spinBox_gearPumpSpeedAlarm->setEnabled(enable);
|
ui->spinBox_gearPumpSpeedAlarm->setEnabled(enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2307,8 +2301,10 @@ void PrintSetting::initSection()
|
|||||||
ui->tabWidget_2->addTab(sectionalWid, tr("分段计数"));
|
ui->tabWidget_2->addTab(sectionalWid, tr("分段计数"));
|
||||||
connect(SectionalManager::instance(), &SectionalManager::sig_updateCntShow,
|
connect(SectionalManager::instance(), &SectionalManager::sig_updateCntShow,
|
||||||
this, &PrintSetting::slt_updateCntShow);
|
this, &PrintSetting::slt_updateCntShow);
|
||||||
SectionalManager::instance()->emitLoadUI();
|
// SectionalManager::instance()->emitLoadUI();
|
||||||
}
|
} /*else {
|
||||||
|
ui->tabWidget_2->addTab(sectionalWid, tr("分段计数"));
|
||||||
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
int tempReclaimTankStatus = 0;
|
int tempReclaimTankStatus = 0;
|
||||||
|
|||||||
@@ -1,44 +0,0 @@
|
|||||||
/*
|
|
||||||
* Public.h
|
|
||||||
*
|
|
||||||
* Created on: Jul 16, 2013
|
|
||||||
* Author: yiyu
|
|
||||||
* QQ:1036184468
|
|
||||||
* Descriptoin:
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef PUBLIC_H_
|
|
||||||
#define PUBLIC_H_
|
|
||||||
|
|
||||||
#include <Qt>
|
|
||||||
#include <QString>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <QFont>
|
|
||||||
|
|
||||||
extern void MySleep(unsigned int msec);
|
|
||||||
|
|
||||||
class Public{
|
|
||||||
public:
|
|
||||||
Public();
|
|
||||||
~Public();
|
|
||||||
static int getMinFontPixelSize();
|
|
||||||
static QString getFontFamily(int pixelSize);
|
|
||||||
static QString getFontFamily(int pixelSize, int vartype);// 20160812
|
|
||||||
static int derivePixelSizeFromHeight(int value);
|
|
||||||
static int derivePixelSizeFromHeightNx(int value);
|
|
||||||
static int getAdjustedPixelSize(int value);
|
|
||||||
static void resetPara();
|
|
||||||
static void backupPara();
|
|
||||||
static QString readLanguageType();
|
|
||||||
static QString ReadLanguageName();
|
|
||||||
static int getNumberHeight(QFont font);
|
|
||||||
static time_t getDateFromMacro(const char *time);
|
|
||||||
static QString DateToString(const char *time);
|
|
||||||
|
|
||||||
static int getType(int vartype); // 将变量类型进行转换,以处理横向字体
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* PUBLIC_H_ */
|
|
||||||
+2
-23
@@ -369,33 +369,12 @@ QString Public::DateToString(char const *time){
|
|||||||
int month, day, year;
|
int month, day, year;
|
||||||
//struct tm t = {0};
|
//struct tm t = {0};
|
||||||
static const char month_names[] = "JanFebMarAprMayJunJulAugSepOctNovDec";
|
static const char month_names[] = "JanFebMarAprMayJunJulAugSepOctNovDec";
|
||||||
//qDebug()<<time;
|
|
||||||
sscanf(time, "%s %d %d", s_month, &day, &year);
|
sscanf(time, "%s %d %d", s_month, &day, &year);
|
||||||
//qDebug()<<time<<s_month<<day<<year;
|
|
||||||
|
|
||||||
month = ((strstr(month_names, s_month)-month_names)/3)+1;
|
month = ((strstr(month_names, s_month)-month_names)/3)+1;
|
||||||
//qDebug()<<month<<s_month;
|
|
||||||
QString s;
|
QString s;
|
||||||
s.sprintf("%04d-%02d-%02d",year,month,day);
|
// s.sprintf("%04d-%02d-%02d",year,month,day);
|
||||||
return s;
|
s.sprintf("%02d%02d",month,day);
|
||||||
}
|
|
||||||
|
|
||||||
QString Public::ArmDate2String(const char *date, const char *time)
|
|
||||||
{
|
|
||||||
char s_month[5];
|
|
||||||
int month, day, year;
|
|
||||||
static const char month_names[] = "JanFebMarAprMayJunJulAugSepOctNovDec";
|
|
||||||
sscanf(date, "%s %d %d", s_month, &day, &year);
|
|
||||||
month = ((strstr(month_names, s_month)-month_names)/3)+1;
|
|
||||||
QString dateStr;
|
|
||||||
dateStr.sprintf("A%04d%02d%02d",year,month,day);
|
|
||||||
|
|
||||||
int hour, min, secend;
|
|
||||||
sscanf(time, "%d:%d:%d", &hour, &min, &secend);
|
|
||||||
QString timeStr;
|
|
||||||
timeStr.sprintf("%02d%02d", hour, min);
|
|
||||||
|
|
||||||
QString s = dateStr+timeStr;
|
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,8 +36,6 @@ public:
|
|||||||
static time_t getDateFromMacro(const char *time);
|
static time_t getDateFromMacro(const char *time);
|
||||||
static QString DateToString(const char *time);
|
static QString DateToString(const char *time);
|
||||||
|
|
||||||
static QString ArmDate2String(const char * date, const char * time);
|
|
||||||
|
|
||||||
static QString ReadKeyBoardUse();
|
static QString ReadKeyBoardUse();
|
||||||
|
|
||||||
static int getType(int vartype); // 将变量类型进行转换,以处理横向字体
|
static int getType(int vartype); // 将变量类型进行转换,以处理横向字体
|
||||||
|
|||||||
@@ -417,15 +417,3 @@ if(contains(DEFINES,__2451WIFI__))
|
|||||||
#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
|
||||||
#INCLUDEPATH += /home/student/newDisk/2451_linux/wpa_supplicant_hostapd/wpa_supplicant_hostapd-0.8/src/utils
|
#INCLUDEPATH += /home/student/newDisk/2451_linux/wpa_supplicant_hostapd/wpa_supplicant_hostapd-0.8/src/utils
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
# VX5-DiaphragmPump
|
# VX5-DiaphragmPump
|
||||||
|
|
||||||
vx5隔膜泵版本
|
vx5隔膜泵版本
|
||||||
|
|
||||||
|
基于最新的vx5齿轮泵代码,仅修改为隔膜泵算法,并在产线测试后提交
|
||||||
|
20260826 hlp
|
||||||
@@ -25,6 +25,11 @@ void SectionalManager::emitLoadUI()
|
|||||||
emit sig_loadSettings2UI();
|
emit sig_loadSettings2UI();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SectionalManager::emitCancelSection()
|
||||||
|
{
|
||||||
|
emit sig_cancelSection();
|
||||||
|
}
|
||||||
|
|
||||||
SectionalManager::SectionalManager()
|
SectionalManager::SectionalManager()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ public:
|
|||||||
//应用配置
|
//应用配置
|
||||||
void emitLoadUI();
|
void emitLoadUI();
|
||||||
|
|
||||||
|
// 取消分段计米
|
||||||
|
void emitCancelSection();
|
||||||
private:
|
private:
|
||||||
SectionalManager();
|
SectionalManager();
|
||||||
|
|
||||||
@@ -33,7 +35,7 @@ signals:
|
|||||||
void sig_applySetting();
|
void sig_applySetting();
|
||||||
void sig_loadSettings2UI();
|
void sig_loadSettings2UI();
|
||||||
void sig_updateCntGroupDisp(bool);
|
void sig_updateCntGroupDisp(bool);
|
||||||
|
void sig_cancelSection();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SECTIONALMANAGER_H
|
#endif // SECTIONALMANAGER_H
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ SectionalWid::SectionalWid(QWidget *parent) :
|
|||||||
this, &SectionalWid::slt_loadSettings2UI);
|
this, &SectionalWid::slt_loadSettings2UI);
|
||||||
connect(SectionalManager::instance(), &SectionalManager::sig_updateCntGroupDisp,
|
connect(SectionalManager::instance(), &SectionalManager::sig_updateCntGroupDisp,
|
||||||
this, &SectionalWid::slt_updateCntGroupDisp);
|
this, &SectionalWid::slt_updateCntGroupDisp);
|
||||||
|
connect(SectionalManager::instance(), &SectionalManager::sig_cancelSection,
|
||||||
|
this, &SectionalWid::slt_cancelSection);
|
||||||
}
|
}
|
||||||
|
|
||||||
SectionalWid::~SectionalWid()
|
SectionalWid::~SectionalWid()
|
||||||
@@ -152,7 +154,7 @@ void SectionalWid::on_cnt3RemoveAllRowsBtn_3_clicked()
|
|||||||
void SectionalWid::on_checkBoxGroupCnt1_clicked(bool checked)
|
void SectionalWid::on_checkBoxGroupCnt1_clicked(bool checked)
|
||||||
{
|
{
|
||||||
// 信号修改计数器的显示
|
// 信号修改计数器的显示
|
||||||
ui->checkBoxGroupCnt_2->setChecked(checked);
|
// ui->checkBoxGroupCnt_2->setChecked(checked);
|
||||||
SectionalManager::instance()->emitUpdateCntShow(checked);
|
SectionalManager::instance()->emitUpdateCntShow(checked);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -234,27 +236,30 @@ void SectionalWid::rowWidgetCreate2(int rowIndex)
|
|||||||
|
|
||||||
void SectionalWid::LoadCnt2GroupSettingsToUI()
|
void SectionalWid::LoadCnt2GroupSettingsToUI()
|
||||||
{
|
{
|
||||||
ui->checkBoxGroupCnt_2->setChecked(sysPara->para.cnt2ByGroupEnalbe);
|
// 两个同时启用,这个cb设true就会都取消
|
||||||
|
// ui->checkBoxGroupCnt_2->setChecked(sysPara->para.cnt2ByGroupEnalbe);
|
||||||
on_checkBoxGroupCnt_2_clicked(sysPara->para.cnt2ByGroupEnalbe);
|
on_checkBoxGroupCnt_2_clicked(sysPara->para.cnt2ByGroupEnalbe);
|
||||||
//qDebug()<<"LoadCnt1GroupSettingsToUI:cnt1GroupCnt "<<sysPara->para.Cnt1ByGroup.cnt1GroupCnt;
|
|
||||||
ui->tableWidget_2->setRowCount(sysPara->para.Cnt2ByGroup.cnt2GroupCnt);
|
ui->tableWidget_2->setRowCount(sysPara->para.Cnt2ByGroup.cnt2GroupCnt);
|
||||||
for(int i=0; i<sysPara->para.Cnt2ByGroup.cnt2GroupCnt; i++)
|
for(int i=0; i<sysPara->para.Cnt2ByGroup.cnt2GroupCnt; i++)
|
||||||
{
|
{
|
||||||
QSpinBox *spinBox = new QSpinBox();
|
QSpinBox *spinBox = new QSpinBox();
|
||||||
spinBox->setButtonSymbols(QSpinBox::NoButtons);
|
spinBox->setButtonSymbols(QSpinBox::NoButtons);
|
||||||
spinBox->setValue(sysPara->para.Cnt2ByGroup.cnt2GroupSettings[i].StartValue);
|
int startV = sysPara->para.Cnt2ByGroup.cnt2GroupSettings[i].StartValue;
|
||||||
|
spinBox->setValue(startV);
|
||||||
spinBox->setRange(0, INT_MAX);
|
spinBox->setRange(0, INT_MAX);
|
||||||
ui->tableWidget_2->setCellWidget(i,0,spinBox);
|
ui->tableWidget_2->setCellWidget(i,0,spinBox);
|
||||||
|
|
||||||
spinBox = new QSpinBox();
|
spinBox = new QSpinBox();
|
||||||
spinBox->setButtonSymbols(QSpinBox::NoButtons);
|
spinBox->setButtonSymbols(QSpinBox::NoButtons);
|
||||||
spinBox->setValue(sysPara->para.Cnt2ByGroup.cnt2GroupSettings[i].EndValue);
|
int endV = sysPara->para.Cnt2ByGroup.cnt2GroupSettings[i].EndValue;
|
||||||
|
spinBox->setValue(endV);
|
||||||
spinBox->setRange(0, INT_MAX);
|
spinBox->setRange(0, INT_MAX);
|
||||||
ui->tableWidget_2->setCellWidget(i,1,spinBox);
|
ui->tableWidget_2->setCellWidget(i,1,spinBox);
|
||||||
|
|
||||||
spinBox = new QSpinBox();
|
spinBox = new QSpinBox();
|
||||||
spinBox->setButtonSymbols(QSpinBox::NoButtons);
|
spinBox->setButtonSymbols(QSpinBox::NoButtons);
|
||||||
spinBox->setValue(sysPara->para.Cnt2ByGroup.cnt2GroupSettings[i].LoopTimes);
|
int loopV = sysPara->para.Cnt2ByGroup.cnt2GroupSettings[i].LoopTimes;
|
||||||
|
spinBox->setValue(loopV);
|
||||||
spinBox->setRange(1, INT_MAX);
|
spinBox->setRange(1, INT_MAX);
|
||||||
ui->tableWidget_2->setCellWidget(i,2,spinBox);
|
ui->tableWidget_2->setCellWidget(i,2,spinBox);
|
||||||
}
|
}
|
||||||
@@ -265,7 +270,7 @@ void SectionalWid::LoadCnt2GroupSettingsToUI()
|
|||||||
void SectionalWid::on_checkBoxGroupCnt_2_clicked(bool checked)
|
void SectionalWid::on_checkBoxGroupCnt_2_clicked(bool checked)
|
||||||
{
|
{
|
||||||
// 信号修改计数器的显示
|
// 信号修改计数器的显示
|
||||||
ui->checkBoxGroupCnt1->setChecked(checked);
|
// ui->checkBoxGroupCnt1->setChecked(checked);
|
||||||
SectionalManager::instance()->emitUpdateCntShow(checked);
|
SectionalManager::instance()->emitUpdateCntShow(checked);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -307,6 +312,7 @@ void SectionalWid::ApplyCnt2GroupSetting()
|
|||||||
QSpinBox *spinBox = nullptr;
|
QSpinBox *spinBox = nullptr;
|
||||||
sysPara->para.cnt2ByGroupEnalbe = ui->checkBoxGroupCnt_2->isChecked();
|
sysPara->para.cnt2ByGroupEnalbe = ui->checkBoxGroupCnt_2->isChecked();
|
||||||
sysPara->para.Cnt2ByGroup.cnt2GroupCnt = ui->tableWidget_2->rowCount();
|
sysPara->para.Cnt2ByGroup.cnt2GroupCnt = ui->tableWidget_2->rowCount();
|
||||||
|
int r = ui->tableWidget_2->rowCount();
|
||||||
if(sysPara->para.cnt2ByGroupEnalbe && sysPara->para.Cnt2ByGroup.cnt2GroupCnt==0)
|
if(sysPara->para.cnt2ByGroupEnalbe && sysPara->para.Cnt2ByGroup.cnt2GroupCnt==0)
|
||||||
{
|
{
|
||||||
sysPara->para.cnt2ByGroupEnalbe=false;
|
sysPara->para.cnt2ByGroupEnalbe=false;
|
||||||
@@ -428,6 +434,11 @@ void SectionalWid::on_Cnt3AddRowBtn_2_clicked()
|
|||||||
}
|
}
|
||||||
ui->tableWidget_2->setRowCount(rowCnt+1);
|
ui->tableWidget_2->setRowCount(rowCnt+1);
|
||||||
rowWidgetCreate2(rowCnt);
|
rowWidgetCreate2(rowCnt);
|
||||||
|
// 获取新行第2列(索引为1)的 QSpinBox,设置值为 1
|
||||||
|
QSpinBox *spinBox = qobject_cast<QSpinBox*>(ui->tableWidget_2->cellWidget(rowCnt, 1));
|
||||||
|
if (spinBox) {
|
||||||
|
spinBox->setValue(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SectionalWid::on_Cnt3InsertRowBtn_2_clicked()
|
void SectionalWid::on_Cnt3InsertRowBtn_2_clicked()
|
||||||
@@ -547,6 +558,12 @@ void SectionalWid::slt_updateCntGroupDisp(bool bChangeToNext)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SectionalWid::slt_cancelSection()
|
||||||
|
{
|
||||||
|
ui->checkBoxGroupCnt1->setChecked(false);
|
||||||
|
ui->checkBoxGroupCnt_2->setChecked(false);
|
||||||
|
}
|
||||||
|
|
||||||
void SectionalWid::initUI()
|
void SectionalWid::initUI()
|
||||||
{
|
{
|
||||||
#ifdef COUNTER1_BY_GROUP /* 分段计米 */
|
#ifdef COUNTER1_BY_GROUP /* 分段计米 */
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ private slots:
|
|||||||
void slt_applySetting();
|
void slt_applySetting();
|
||||||
void slt_loadSettings2UI();
|
void slt_loadSettings2UI();
|
||||||
void slt_updateCntGroupDisp(bool bChangeToNext);
|
void slt_updateCntGroupDisp(bool bChangeToNext);
|
||||||
|
void slt_cancelSection();
|
||||||
private:
|
private:
|
||||||
Ui::SectionalWid *ui;
|
Ui::SectionalWid *ui;
|
||||||
SysPara* sysPara = nullptr;
|
SysPara* sysPara = nullptr;
|
||||||
|
|||||||
+10
@@ -23,6 +23,7 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include<iostream>
|
#include<iostream>
|
||||||
#include<string>
|
#include<string>
|
||||||
|
#include "VerBVersion.h"
|
||||||
|
|
||||||
#define VNLG
|
#define VNLG
|
||||||
SysPara::SysPara(void):
|
SysPara::SysPara(void):
|
||||||
@@ -30,6 +31,9 @@ SysPara::SysPara(void):
|
|||||||
|
|
||||||
memset(¶,0,sizeof(para));
|
memset(¶,0,sizeof(para));
|
||||||
memset(&status,0,sizeof(status));
|
memset(&status,0,sizeof(status));
|
||||||
|
|
||||||
|
para.airPushDurationSec = 4;
|
||||||
|
|
||||||
//qDebug("start to loadParaFromFile.");
|
//qDebug("start to loadParaFromFile.");
|
||||||
loadParaFromFile();
|
loadParaFromFile();
|
||||||
//qDebug("loadParaFromFile ok.");
|
//qDebug("loadParaFromFile ok.");
|
||||||
@@ -57,6 +61,10 @@ SysPara::SysPara(void):
|
|||||||
|
|
||||||
//para.HVFaultCloseEn= 1; //开机默认为1,允许高压故障自动关闭回收功能
|
//para.HVFaultCloseEn= 1; //开机默认为1,允许高压故障自动关闭回收功能
|
||||||
|
|
||||||
|
// 隔膜泵版本强制开启回收泵模式
|
||||||
|
if(PUMP_VER == QString("D"))
|
||||||
|
para.flagOfReclaimPumEnable = true;
|
||||||
|
|
||||||
devOp->writeFpgaPrintPara(true); //系统起来的时候,将上次记录的配置写入fpga,比如晶振分频等信息
|
devOp->writeFpgaPrintPara(true); //系统起来的时候,将上次记录的配置写入fpga,比如晶振分频等信息
|
||||||
devOp->writeFpgaVariCtrl();
|
devOp->writeFpgaVariCtrl();
|
||||||
devOp->resumeFault();
|
devOp->resumeFault();
|
||||||
@@ -174,6 +182,8 @@ void SysPara::loadDefaultPara(){
|
|||||||
para.enableChargeFullTime = 1;//充电占空百分比
|
para.enableChargeFullTime = 1;//充电占空百分比
|
||||||
|
|
||||||
para.mixValveisNewVersion = 1;//混和阀是否是新管路
|
para.mixValveisNewVersion = 1;//混和阀是否是新管路
|
||||||
|
|
||||||
|
para.airPushDurationSec = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SysPara::saveParaToFile(){
|
void SysPara::saveParaToFile(){
|
||||||
|
|||||||
@@ -815,6 +815,8 @@ typedef struct {
|
|||||||
unsigned short moduleSelection;
|
unsigned short moduleSelection;
|
||||||
bool flagOfAdjustVoltage;
|
bool flagOfAdjustVoltage;
|
||||||
unsigned short currSelectVolPara;
|
unsigned short currSelectVolPara;
|
||||||
|
|
||||||
|
int airPushDurationSec; // 排气时间,单位 秒
|
||||||
/* */
|
/* */
|
||||||
// 1108Bytes
|
// 1108Bytes
|
||||||
}sysPara_t;
|
}sysPara_t;
|
||||||
|
|||||||
@@ -132,6 +132,8 @@ void SystemSetting::updateSysParaToUI(){
|
|||||||
ui->comboBoxDiameter->setCurrentIndex(sysPara->para.diameter);
|
ui->comboBoxDiameter->setCurrentIndex(sysPara->para.diameter);
|
||||||
ui->comboBoxDiaphramOffset->setCurrentIndex(sysPara->para.diaphramOffset/5-1);
|
ui->comboBoxDiaphramOffset->setCurrentIndex(sysPara->para.diaphramOffset/5-1);
|
||||||
|
|
||||||
|
ui->spinBoxAirPushDuration->setValue(sysPara->para.airPushDurationSec);
|
||||||
|
|
||||||
if(sysPara->para.EditMode>SCENE)
|
if(sysPara->para.EditMode>SCENE)
|
||||||
sysPara->para.EditMode=TXTFILE;
|
sysPara->para.EditMode=TXTFILE;
|
||||||
ui->comboBoxEditMode->setCurrentIndex(sysPara->para.EditMode);
|
ui->comboBoxEditMode->setCurrentIndex(sysPara->para.EditMode);
|
||||||
@@ -171,6 +173,9 @@ void SystemSetting::applyUIPara(){
|
|||||||
sysPara->para.septalPostion = ui->spinBoxSeptalPostion->value();
|
sysPara->para.septalPostion = ui->spinBoxSeptalPostion->value();
|
||||||
quint16 diaphramOffset = 5*(ui->comboBoxDiaphramOffset->currentIndex()+1);
|
quint16 diaphramOffset = 5*(ui->comboBoxDiaphramOffset->currentIndex()+1);
|
||||||
sysPara->para.diaphramOffset = diaphramOffset;
|
sysPara->para.diaphramOffset = diaphramOffset;
|
||||||
|
|
||||||
|
sysPara->para.airPushDurationSec = ui->spinBoxAirPushDuration->value();
|
||||||
|
|
||||||
//sysPara->para.mixValveisNewVersion = ui->radioButtonMixValveNewVersion->isChecked();
|
//sysPara->para.mixValveisNewVersion = ui->radioButtonMixValveNewVersion->isChecked();
|
||||||
if(sysPara->devOp->writeFpgaPrintPara() != -1){
|
if(sysPara->devOp->writeFpgaPrintPara() != -1){
|
||||||
QMessageBox::information(this,tr("提示"),tr("应用成功"));
|
QMessageBox::information(this,tr("提示"),tr("应用成功"));
|
||||||
|
|||||||
+2
-5
@@ -2,7 +2,7 @@
|
|||||||
#include "ui_texteditoption.h"
|
#include "ui_texteditoption.h"
|
||||||
#include "PicWidget.h"
|
#include "PicWidget.h"
|
||||||
#include "scene/picscene.h"
|
#include "scene/picscene.h"
|
||||||
|
#include "SectionalCounting/sectionalmanager.h"
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QInputDialog>
|
#include <QInputDialog>
|
||||||
@@ -645,6 +645,7 @@ bool TextEditOption::maybeSave(){
|
|||||||
on_bottonSave_clicked();
|
on_bottonSave_clicked();
|
||||||
return false;
|
return false;
|
||||||
} else if (msgBox.clickedButton() == cancleSaveButton) {
|
} else if (msgBox.clickedButton() == cancleSaveButton) {
|
||||||
|
SectionalManager::instance()->emitCancelSection();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -731,10 +732,6 @@ void TextEditOption::on_buttonInsertVari_pressed()
|
|||||||
unsigned char splitMode=sysPara->para.ExpirySplitMode;
|
unsigned char splitMode=sysPara->para.ExpirySplitMode;
|
||||||
dialogInsertVari->getValue(&varType,&digitalNum,&splitMode);
|
dialogInsertVari->getValue(&varType,&digitalNum,&splitMode);
|
||||||
|
|
||||||
if(sysPara->para.flagOfModuleDecimal || sysPara->para.flagOfModuleHide){
|
|
||||||
digitalNum += 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 对于24、16、12点WenQuanYi字体,需要调整高度。我也不知道为什么,但是不调整会导致字模与普通文字不对齐 byons@2026年5月16日
|
// 对于24、16、12点WenQuanYi字体,需要调整高度。我也不知道为什么,但是不调整会导致字模与普通文字不对齐 byons@2026年5月16日
|
||||||
// 日后如果替换了这些高度的字体,需要根据实际情况调整高度
|
// 日后如果替换了这些高度的字体,需要根据实际情况调整高度
|
||||||
if((height == 25 || height == 17 || height == 13) && !ui->checkBoxBold->isChecked()) {
|
if((height == 25 || height == 17 || height == 13) && !ui->checkBoxBold->isChecked()) {
|
||||||
|
|||||||
+7
-21
@@ -93,13 +93,11 @@ TriggerCtrl::TriggerCtrl(QWidget *parent) :
|
|||||||
connect(pulseNumFix,SIGNAL(pulseNuxFixDone(float)),this,SLOT(onPulseNumFixDone(float)));
|
connect(pulseNumFix,SIGNAL(pulseNuxFixDone(float)),this,SLOT(onPulseNumFixDone(float)));
|
||||||
|
|
||||||
updateSysStatusToUI();
|
updateSysStatusToUI();
|
||||||
|
|
||||||
QString s;
|
QString s;
|
||||||
|
// s.sprintf("%d.%d.%02d%s%s_", UP_PRINTER_MAJOR_VER, UP_PRINTER_MINOR_VER,UP_PRINTER_RIVISION_VER,SUB_VERSION,SUB_RFID);
|
||||||
s.sprintf("%d.%d.%02d%s%s_", UP_PRINTER_MAJOR_VER, UP_PRINTER_MINOR_VER,UP_PRINTER_RIVISION_VER,SUB_VERSION,SUB_RFID);
|
s.sprintf("%s.%s.", MACHINAE_VER, PUMP_VER);
|
||||||
s = s + (QString) Public::DateToString(__DATE__)+"_"+ QString(__TIME__)+"_";
|
s = s + (QString) Public::DateToString(__DATE__)+"."+SUB_VER+SUB_RFID;
|
||||||
// hlp :邓总要求,采用新的格式进行转换 0727
|
|
||||||
// s = Public::ArmDate2String(__DATE__, __TIME__);
|
|
||||||
|
|
||||||
ui->test_version->setText(s);
|
ui->test_version->setText(s);
|
||||||
ui->checkBoxEleEyeMakeClean->setVisible(false);
|
ui->checkBoxEleEyeMakeClean->setVisible(false);
|
||||||
tr("独立参数");
|
tr("独立参数");
|
||||||
@@ -398,16 +396,6 @@ void TriggerCtrl::updateSysStatusToUI(){
|
|||||||
ui->spinBoxpluseSinal->setValue(sysPara->para.pulse_sinal_value);
|
ui->spinBoxpluseSinal->setValue(sysPara->para.pulse_sinal_value);
|
||||||
t_init = 1;
|
t_init = 1;
|
||||||
}
|
}
|
||||||
// if((sysPara->para.printTriggerMode == PRINT_TRIGGER_SYNCHRONIZER))
|
|
||||||
// {
|
|
||||||
// ui->lineEditPulseCount ->setText(QString::number((int )((sysPara->para.synTriggerPrintLenMm)*sysPara->para.synPulseNumPerMm)));
|
|
||||||
// }
|
|
||||||
// else if(((sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL
|
|
||||||
// ||sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE)
|
|
||||||
// && sysPara->para.eleEyeTriggerSynPrintEn))
|
|
||||||
// {
|
|
||||||
// ui->lineEditPulseCount ->setText(QString::number( (int )((sysPara->para.elecEyeTriggerInterval)*sysPara->para.synPulseNumPerMm)));
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -511,11 +499,9 @@ void TriggerCtrl::on_checkBoxPulseOutputEnable_clicked()
|
|||||||
void TriggerCtrl::setBuildTime(QString s1)
|
void TriggerCtrl::setBuildTime(QString s1)
|
||||||
{
|
{
|
||||||
QString s;
|
QString s;
|
||||||
s.sprintf("A%d.%d.%02d%s%s_", UP_PRINTER_MAJOR_VER, UP_PRINTER_MINOR_VER,UP_PRINTER_RIVISION_VER,SUB_VERSION,SUB_RFID);
|
// s.sprintf("A%d.%d.%02d%s%s_", UP_PRINTER_MAJOR_VER, UP_PRINTER_MINOR_VER,UP_PRINTER_RIVISION_VER,SUB_VERSION,SUB_RFID);
|
||||||
s = s + (QString) Public::DateToString(__DATE__)+ "_"+ QString(__TIME__);
|
s.sprintf("%s.%s.", MACHINAE_VER, PUMP_VER);
|
||||||
// hlp :邓总要求,采用新的格式进行转换 0727
|
s = s + (QString) Public::DateToString(__DATE__)+"."+SUB_VER+SUB_RFID;//+ "_"+ QString(__TIME__)
|
||||||
// s = Public::ArmDate2String(__DATE__, __TIME__);
|
|
||||||
|
|
||||||
ui->test_version->setText(s+s1);
|
ui->test_version->setText(s+s1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+13
-14
@@ -2,26 +2,25 @@
|
|||||||
#define VERBVERSION_H
|
#define VERBVERSION_H
|
||||||
#include "myinclude.h"
|
#include "myinclude.h"
|
||||||
/*
|
/*
|
||||||
Major.Minor.Rivison.yyyy-MM-DD_Beta
|
VX5.D.0826.0100_Std(-C)
|
||||||
|
MACHINAE_VER.PUMP_VER.MMdd.SUB_VER+SUB_RFID
|
||||||
*/
|
*/
|
||||||
#define UP_PRINTER_MAJOR_VER 6
|
#define MACHINAE_VER "VX5"
|
||||||
#define UP_PRINTER_MINOR_VER 8
|
#define PUMP_VER "D"
|
||||||
#define UP_PRINTER_RIVISION_VER 3
|
//#define SUB_VER "0100"
|
||||||
// #define SUB_VERSION "_GuiL"
|
//#define SUB_VER "IND"
|
||||||
//#define SUB_VERSION "_JingZ"
|
#define SUB_VER "GuiL"
|
||||||
//#define SUB_VERSION "_RFID"
|
|
||||||
#define SUB_VERSION "_Std"
|
|
||||||
// #define SUB_VERSION "_Std_VZ"
|
|
||||||
|
|
||||||
#ifdef __RFID_OLD
|
#ifdef __RFID_OLD
|
||||||
#define SUB_RFID "_RO"
|
#define SUB_RFID "_RO"
|
||||||
#else
|
#else
|
||||||
#define SUB_RFID ""
|
#define SUB_RFID "_Std"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __RFID_CARD
|
||||||
|
#undef SUB_RFID
|
||||||
|
#define SUB_RFID "-C"
|
||||||
#endif
|
#endif
|
||||||
//#define UP_PRINTER_STAGE_VER "Std"
|
|
||||||
//#define UP_PRINTER_STAGE_VER "Beta"
|
|
||||||
//#define UP_PRINTER_STAGE_VER "RC"
|
|
||||||
//#define UP_PRINTER_STAGE_VER "Release"
|
|
||||||
|
|
||||||
|
|
||||||
#define VERNONBACH_VERSION(a,b,c) (((a)<<16) + ((b)<<8) + (c))
|
#define VERNONBACH_VERSION(a,b,c) (((a)<<16) + ((b)<<8) + (c))
|
||||||
|
|||||||
-21660
File diff suppressed because it is too large
Load Diff
+602
-584
File diff suppressed because it is too large
Load Diff
-4100
File diff suppressed because it is too large
Load Diff
-5362
File diff suppressed because it is too large
Load Diff
BIN
Binary file not shown.
+606
-579
File diff suppressed because it is too large
Load Diff
-4210
File diff suppressed because it is too large
Load Diff
-4223
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
-4399
File diff suppressed because it is too large
Load Diff
-4223
File diff suppressed because it is too large
Load Diff
+71
-114
@@ -436,14 +436,16 @@ void MainWindow::RefreshStatusLight(){//100ms
|
|||||||
static int reclainTankReachEnd = 0;
|
static int reclainTankReachEnd = 0;
|
||||||
if((!(sysPara->status.statWarn & WARN_STATUS_HDINT)) && (hdint == 0)) { //喷头盖由开变关
|
if((!(sysPara->status.statWarn & WARN_STATUS_HDINT)) && (hdint == 0)) { //喷头盖由开变关
|
||||||
if (sysPara->status.reclainTankReachEnd) {
|
if (sysPara->status.reclainTankReachEnd) {
|
||||||
sysPara->devOp->highVoltageCtrl(sysPara->para.HighVoltageAmplitude);
|
// sysPara->devOp->highVoltageCtrl(sysPara->para.HighVoltageAmplitude);
|
||||||
|
sysPara->devOp->highVoltageCtrl(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
hdint = !(sysPara->status.statWarn & WARN_STATUS_HDINT);
|
hdint = !(sysPara->status.statWarn & WARN_STATUS_HDINT);
|
||||||
|
|
||||||
if(sysPara->status.reclainTankReachEnd && reclainTankReachEnd == 0) { //开回收槽到底
|
if(sysPara->status.reclainTankReachEnd && reclainTankReachEnd == 0) { //开回收槽到底
|
||||||
if (!(sysPara->status.statWarn & WARN_STATUS_HDINT)) { //喷头盖是关闭的状态
|
if (!(sysPara->status.statWarn & WARN_STATUS_HDINT)) { //喷头盖是关闭的状态
|
||||||
sysPara->devOp->highVoltageCtrl(sysPara->para.HighVoltageAmplitude);
|
// sysPara->devOp->highVoltageCtrl(sysPara->para.HighVoltageAmplitude);
|
||||||
|
sysPara->devOp->highVoltageCtrl(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
reclainTankReachEnd = sysPara->status.reclainTankReachEnd;
|
reclainTankReachEnd = sysPara->status.reclainTankReachEnd;
|
||||||
@@ -834,7 +836,10 @@ void MainWindow::updateSysStatusToUI(){ //100ms
|
|||||||
sysPara->devOp->readbuilDat();
|
sysPara->devOp->readbuilDat();
|
||||||
}
|
}
|
||||||
firstGetFpgaVersionNumFlag=1;
|
firstGetFpgaVersionNumFlag=1;
|
||||||
ui->labelFpgaVersionNum->setText(QString("%1/F%2.%3.%4").arg(SOFTWARE_VER_NUM).arg(0).arg(0).arg(0) );
|
QString ARM_Version;
|
||||||
|
ARM_Version.sprintf("%s.%s.", MACHINAE_VER, PUMP_VER);
|
||||||
|
ARM_Version = ARM_Version + (QString) Public::DateToString(__DATE__)+"."+SUB_VER+SUB_RFID;
|
||||||
|
ui->labelFpgaVersionNum->setText(QString("%1/F%2.%3.%4").arg(ARM_Version).arg(0).arg(0).arg(0) );
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
static bool logflag5 = true;
|
static bool logflag5 = true;
|
||||||
@@ -847,8 +852,9 @@ void MainWindow::updateSysStatusToUI(){ //100ms
|
|||||||
logflag5 = false;
|
logflag5 = false;
|
||||||
sysPara->devOp->writeFpgaPrintPara(true);
|
sysPara->devOp->writeFpgaPrintPara(true);
|
||||||
QString ARM_Version;
|
QString ARM_Version;
|
||||||
ARM_Version.sprintf("%d.%d.%02d%s%s", UP_PRINTER_MAJOR_VER, UP_PRINTER_MINOR_VER,UP_PRINTER_RIVISION_VER,SUB_VERSION,SUB_RFID);
|
ARM_Version.sprintf("%s.%s.", MACHINAE_VER, PUMP_VER);
|
||||||
ui->labelFpgaVersionNum->setText(QString("A%1/F%2.%3.%4").arg(ARM_Version).arg(sysPara->status.fpgaVersionNum >> 12)
|
ARM_Version = ARM_Version + (QString) Public::DateToString(__DATE__)+"."+SUB_VER+SUB_RFID;
|
||||||
|
ui->labelFpgaVersionNum->setText(QString("%1/F%2.%3.%4").arg(ARM_Version).arg(sysPara->status.fpgaVersionNum >> 12)
|
||||||
.arg((sysPara->status.fpgaVersionNum>>8) & 0x0f).arg(sysPara->status.fpgaVersionNum&0xff) );
|
.arg((sysPara->status.fpgaVersionNum>>8) & 0x0f).arg(sysPara->status.fpgaVersionNum&0xff) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1692,13 +1698,7 @@ void MainWindow::generateCharRamData(){/* 生成字模数据 */
|
|||||||
p_var->original = true;
|
p_var->original = true;
|
||||||
p_var->currVal = -1; //相当于初始化
|
p_var->currVal = -1; //相当于初始化
|
||||||
ramAddress += rowByteNum * width2;
|
ramAddress += rowByteNum * width2;
|
||||||
} else {
|
|
||||||
qDebug() << "startRowPos:" << p_var->startRowPos
|
|
||||||
<<" endRowPos:" << p_var->endRowPos
|
|
||||||
<<" rowDiff:" << rowDiff
|
|
||||||
<< " 按原逻辑,执行这一步的时候软件就已经崩溃了";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2036,85 +2036,48 @@ void MainWindow::enablePrintButton(bool enable){
|
|||||||
ui->pushButtonStopPrint->setEnabled(enable);
|
ui->pushButtonStopPrint->setEnabled(enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int mainInkPumpCtrlStatus = 0;
|
|
||||||
static int mainInkPumpCtrlCnt = 0;
|
|
||||||
//100ms 为单位
|
|
||||||
void MainWindow::airPushingProcess()
|
void MainWindow::airPushingProcess()
|
||||||
{
|
{
|
||||||
if(sysPara){
|
if(sysPara){
|
||||||
if (sysPara->status.airPushing) {
|
if (sysPara->status.airPushing) {
|
||||||
//qDebug()<< "start airPushingProcess "<<sysPara->status.airPushingOnTime;
|
|
||||||
// 执行排气 7 秒
|
|
||||||
setRunStatus(tr("正在排气 ..............."));
|
setRunStatus(tr("正在排气 ..............."));
|
||||||
++sysPara->status.airPushingOnTime;
|
// 执行排气 4 秒
|
||||||
if(sysPara->status.airPushingOnTime >= 50) {
|
sysPara->status.airPushingOnTime += 100;
|
||||||
static int delayCount = 0;
|
|
||||||
++delayCount;
|
|
||||||
m_2sFlag = true;
|
if(sysPara->para.airPushDurationSec <= 0 || sysPara->para.airPushDurationSec > 30) {
|
||||||
//sysPara->devOp->controlInkValve(false); //关供墨阀
|
sysPara->para.airPushDurationSec = 4;
|
||||||
if(delayCount >= 40)
|
sysPara->saveParaToFile();
|
||||||
{
|
|
||||||
m_2sFlag = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(delayCount >= 60)
|
// 延迟 7 秒后才开回收槽,正式结束排气阶段. reclaimTanOpen:会延迟半秒
|
||||||
{
|
if(sysPara->status.airPushingOnTime >= sysPara->para.airPushDurationSec * 1000 + 6500){
|
||||||
delayCount = 0;
|
|
||||||
airPushTimer->stop();
|
airPushTimer->stop();
|
||||||
sysPara->devOp->controlViscosityPump(false);
|
setRunStatus(tr("排气结束, 打开回收槽."));
|
||||||
|
LogInfo::setRunStatusText(tr("排气结束, 打开回收槽."));
|
||||||
|
|
||||||
reclaimTanOpen();
|
reclaimTanOpen();
|
||||||
//qDebug()<< "start stop";
|
|
||||||
sysPara->status.airPushingDone = 1;
|
sysPara->status.airPushingDone = 1;
|
||||||
sysPara->status.airPushing = 0;
|
sysPara->status.airPushing = 0;
|
||||||
sysPara->status.airPushingOnTime = 0;
|
sysPara->status.airPushingOnTime = 0;
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sysPara->status.airPushingOnTime%10 >= 5) {
|
if(sysPara->status.airPushingOnTime >= sysPara->para.airPushDurationSec * 1000){
|
||||||
sysPara->devOp->controlCycleValve(true);
|
|
||||||
}
|
if(sysPara->devOp->isViscosityPumpOpen())
|
||||||
else {
|
sysPara->devOp->controlViscosityPump(false);
|
||||||
|
|
||||||
|
if(sysPara->devOp->isCycleValveOpen())
|
||||||
sysPara->devOp->controlCycleValve(false);
|
sysPara->devOp->controlCycleValve(false);
|
||||||
}
|
|
||||||
if (mainInkPumpCtrlStatus == 0) {
|
if(!sysPara->devOp->isReclaimPumpOpen())
|
||||||
if(++mainInkPumpCtrlCnt > 15) { //100ms 为单位, 时间到关闭
|
sysPara->devOp->controlReclaimPump(true, false);
|
||||||
sysPara->devOp->controlMainInkPump(false);
|
|
||||||
sysPara->devOp->mainInkCtrl();
|
setRunStatus(tr("排气结束, 准备打开回收槽."));
|
||||||
mainInkPumpCtrlStatus = 1;
|
LogInfo::setRunStatusText(tr("排气结束, 准备打开回收槽."));
|
||||||
mainInkPumpCtrlCnt = 0;
|
sysPara->status.isPumpValveControledByHand = false;//切换手动,调节压力
|
||||||
}
|
return;
|
||||||
}
|
|
||||||
else if (mainInkPumpCtrlStatus == 1) { //100ms 为单位, 时间到开启
|
|
||||||
sysPara->devOp->controlMainInkPump(true);
|
|
||||||
sysPara->devOp->mainInkCtrl();
|
|
||||||
mainInkPumpCtrlStatus = 2;
|
|
||||||
}
|
|
||||||
else if (mainInkPumpCtrlStatus == 2) {
|
|
||||||
if(++mainInkPumpCtrlCnt>7) {
|
|
||||||
sysPara->devOp->controlMainInkPump(false);
|
|
||||||
sysPara->devOp->mainInkCtrl();
|
|
||||||
mainInkPumpCtrlStatus = 3;
|
|
||||||
mainInkPumpCtrlCnt = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (mainInkPumpCtrlStatus == 3) {
|
|
||||||
if(++mainInkPumpCtrlCnt>8) {
|
|
||||||
sysPara->devOp->controlMainInkPump(true);
|
|
||||||
sysPara->devOp->mainInkCtrl();
|
|
||||||
mainInkPumpCtrlStatus = 4;
|
|
||||||
mainInkPumpCtrlCnt = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (mainInkPumpCtrlStatus == 4) {
|
|
||||||
if(++mainInkPumpCtrlCnt>8) {
|
|
||||||
sysPara->devOp->controlMainInkPump(false);
|
|
||||||
sysPara->devOp->mainInkCtrl();
|
|
||||||
mainInkPumpCtrlStatus = 3;
|
|
||||||
mainInkPumpCtrlCnt = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2122,30 +2085,29 @@ void MainWindow::airPushingProcess()
|
|||||||
|
|
||||||
void MainWindow::reclaimTanOpen()
|
void MainWindow::reclaimTanOpen()
|
||||||
{
|
{
|
||||||
// 还原当前模式
|
|
||||||
if (sysPara->status.airPushing) {
|
|
||||||
sysPara->status.isPumpValveControledByHand = sysPara->status.byHandStore;
|
|
||||||
}
|
|
||||||
sysPara->status.isPumpValveControledByHand = false;
|
sysPara->status.isPumpValveControledByHand = false;
|
||||||
sysPara->devOp->mainInkCtrl();
|
sysPara->devOp->mainInkCtrl();
|
||||||
|
// 如果是排气流程,则不需要先收
|
||||||
|
if (sysPara->status.airPushingDone)
|
||||||
sysPara->devOp->controlReclaimTankClose(false);//开回收槽之前先让关回收槽停止
|
sysPara->devOp->controlReclaimTankClose(false);//开回收槽之前先让关回收槽停止
|
||||||
MySleep(1000);
|
MySleep(500);
|
||||||
sysPara->devOp->controlReclaimTankOpen(!sysPara->devOp->isReclaimTankOpenEnable());
|
|
||||||
ui->pushButtonReclaimTanOpen->setText(sysPara->devOp->isReclaimTankOpenEnable()?tr("停止"):tr("开"));
|
|
||||||
ui->pushButtonReclaimTankClose->setText(tr("关"));
|
|
||||||
enablePrintButton(SIMULATE_PRINTING_MODE);
|
|
||||||
sysPara->devOp->highVoltageCtrl(0); /*回收槽动作的时候务必关高压*/
|
|
||||||
// sysPara->status.reclaimTankstatus = 1;
|
|
||||||
setRunStatus(sysPara->devOp->isReclaimTankOpenEnable()?tr("正在打开回收槽..."):tr("停止打开"));
|
|
||||||
if (!sysPara->para.reclaimTankTime) {
|
|
||||||
LogInfo::setRunStatusText(tr("警告!回收槽开关时间未设置!"));
|
|
||||||
}
|
|
||||||
sysPara->status.currReclaimOperationCnt = 0;
|
sysPara->status.currReclaimOperationCnt = 0;
|
||||||
sysPara->status.reclainTankReachEnd = false;
|
sysPara->status.reclainTankReachEnd = false;
|
||||||
sysPara->status.reclainOpenAppending = true;
|
sysPara->status.reclainOpenAppending = true;
|
||||||
sysPara->status.reclainCloseAppending = false;
|
sysPara->status.reclainCloseAppending = false;
|
||||||
sysPara->status.reclaimBlockedCnt = 0;
|
sysPara->status.reclaimBlockedCnt = 0;
|
||||||
sysPara->status.canRunAirPushing = false;
|
sysPara->status.canRunAirPushing = false;
|
||||||
|
sysPara->devOp->controlReclaimTankOpen(!sysPara->devOp->isReclaimTankOpenEnable());
|
||||||
|
sysPara->devOp->highVoltageCtrl(0); /*回收槽动作的时候务必关高压*/
|
||||||
|
|
||||||
|
ui->pushButtonReclaimTanOpen->setText(
|
||||||
|
sysPara->devOp->isReclaimTankOpenEnable()?tr("停止"):tr("开"));
|
||||||
|
ui->pushButtonReclaimTankClose->setText(tr("关"));
|
||||||
|
setRunStatus(sysPara->devOp->isReclaimTankOpenEnable()?tr("正在打开回收槽..."):tr("停止打开"));
|
||||||
|
if (!sysPara->para.reclaimTankTime) {
|
||||||
|
LogInfo::setRunStatusText(tr("警告!回收槽开关时间未设置!"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::handleCode(int col, int row, int *varLastRow, int type)
|
void MainWindow::handleCode(int col, int row, int *varLastRow, int type)
|
||||||
@@ -2177,18 +2139,17 @@ void MainWindow::on_pushButtonReclaimTanOpen_pressed()
|
|||||||
if(sysPara){
|
if(sysPara){
|
||||||
if (!sysPara->status.reclaimTankBlockedAppending) {
|
if (!sysPara->status.reclaimTankBlockedAppending) {
|
||||||
if (sysPara->status.canRunAirPushing && (sysPara->status.currReclaimTankPos == 0)) { // 回收槽关闭的情况下才可以执行排气;//2019/10/24 当回收槽未在顶的位置,不需要排气
|
if (sysPara->status.canRunAirPushing && (sysPara->status.currReclaimTankPos == 0)) { // 回收槽关闭的情况下才可以执行排气;//2019/10/24 当回收槽未在顶的位置,不需要排气
|
||||||
if (!sysPara->status.airPushing) { // 先执行排气后开回收槽
|
if (!sysPara->status.airPushing) {
|
||||||
sysPara->status.byHandStore = sysPara->status.isPumpValveControledByHand;
|
// 先执行排气后开回收槽
|
||||||
sysPara->status.isPumpValveControledByHand = true;
|
sysPara->status.isPumpValveControledByHand = true;
|
||||||
sysPara->devOp->mainInkCtrl();
|
sysPara->devOp->mainInkCtrl();
|
||||||
sysPara->devOp->controlCycleValve(true);
|
sysPara->devOp->controlCycleValve(true);
|
||||||
sysPara->devOp->controlViscosityPump(false);//关粘度泵
|
sysPara->devOp->controlViscosityPump(true);//关粘度泵
|
||||||
sysPara->devOp->controlMainInkPump(true);//主墨泵敞开
|
sysPara->devOp->controlMainInkPump(true);//主墨泵敞开
|
||||||
sysPara->devOp->mainInkCtrl();
|
sysPara->devOp->mainInkCtrl();
|
||||||
sysPara->devOp->controlReclaimPump(true, false); // 回收泵开
|
sysPara->devOp->controlReclaimPump(true, false); // 回收泵开
|
||||||
sysPara->devOp->controlInkValve(true); //墨水阀
|
sysPara->devOp->controlInkValve(true); //墨水阀
|
||||||
sysPara->devOp->controlInkValvePWM(true); //墨水阀
|
sysPara->devOp->controlInkValvePWM(true); //墨水阀
|
||||||
//qDebug()<< "start airpushings";
|
|
||||||
|
|
||||||
sysPara->status.airPushing = 1;
|
sysPara->status.airPushing = 1;
|
||||||
sysPara->status.airPushingDone = 0;
|
sysPara->status.airPushingDone = 0;
|
||||||
@@ -2252,13 +2213,16 @@ void MySleep(unsigned int msec);
|
|||||||
* 关机前务必保存参数
|
* 关机前务必保存参数
|
||||||
* */
|
* */
|
||||||
void MainWindow::checkForPowerOff(){
|
void MainWindow::checkForPowerOff(){
|
||||||
|
if(m_powerOffInProgress)
|
||||||
|
return;
|
||||||
|
|
||||||
if(sysPara->status.powerOffAppending){
|
if(sysPara->status.powerOffAppending){
|
||||||
|
m_powerOffInProgress = true;
|
||||||
if(!sysPara->status.selfCheckDone)
|
if(!sysPara->status.selfCheckDone)
|
||||||
sysPara->status.selfCheckDone = true;
|
sysPara->status.selfCheckDone = true;
|
||||||
this->setDisabled(true);
|
this->setDisabled(true);
|
||||||
emit setDisableAll();
|
emit setDisableAll();
|
||||||
////////关机时提高转速和回收泵压力,粘度泵和循环阀/////
|
////////关机时通过闭环控制维持压力,控制目标不超过650/////
|
||||||
quint16 gearPumpValue_backup = sysPara->para.gearPumpValue;
|
|
||||||
int reclaimPumpPWMWidth_backup = sysPara->para.reclaimPumpPWMWidth;;
|
int reclaimPumpPWMWidth_backup = sysPara->para.reclaimPumpPWMWidth;;
|
||||||
if(!(sysPara->status.statWarn & WARN_STATUS_INK_WARN))
|
if(!(sysPara->status.statWarn & WARN_STATUS_INK_WARN))
|
||||||
{
|
{
|
||||||
@@ -2284,17 +2248,11 @@ void MainWindow::checkForPowerOff(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
sysPara->devOp->controlReclaimTankOpen(true);
|
sysPara->devOp->controlReclaimTankOpen(true);
|
||||||
sysPara->status.isPumpValveControledByHand = true; //停止自动
|
sysPara->status.isPumpValveControledByHand = true; // 阀门保持手动,隔膜泵由关机闭环控制
|
||||||
if(sysPara->para.gearPumpEnable ){
|
if(sysPara->para.gearPumpEnable ){
|
||||||
if(!sysPara->para.flagOfReclaimPumEnable){
|
if(sysPara->para.flagOfReclaimPumEnable)
|
||||||
sysPara->para.gearPumpValue = 360;
|
|
||||||
sysPara->devOp->WriteMoterPump();
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
sysPara->devOp->controlReclaimPump(true,false);
|
sysPara->devOp->controlReclaimPump(true,false);
|
||||||
sysPara->para.gearPumpValue = 0;
|
// 不再固定输出360,隔膜泵由pressureAdj按关机目标压力闭环调节
|
||||||
sysPara->devOp->WriteMoterPump();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
sysPara->para.reclaimPumpPWMWidth = 95;
|
sysPara->para.reclaimPumpPWMWidth = 95;
|
||||||
@@ -2325,7 +2283,10 @@ void MainWindow::checkForPowerOff(){
|
|||||||
updateTotalCnt(0);
|
updateTotalCnt(0);
|
||||||
sysPara->saveParaToFile(); // 关机前将相关配置保存
|
sysPara->saveParaToFile(); // 关机前将相关配置保存
|
||||||
}
|
}
|
||||||
|
// 退出关机压力维持阶段,后续关闭泵阀时禁止隔膜泵再次启动
|
||||||
sysPara->status.powerOffAppending = false;
|
sysPara->status.powerOffAppending = false;
|
||||||
|
sysPara->para.gearPumpValue = 0;
|
||||||
|
sysPara->devOp->WriteMoterPump();
|
||||||
if(!TEST_MODE){
|
if(!TEST_MODE){
|
||||||
for(int i=7;i>0;i--)
|
for(int i=7;i>0;i--)
|
||||||
{
|
{
|
||||||
@@ -2344,7 +2305,8 @@ void MainWindow::checkForPowerOff(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
emit CloseJd();
|
emit CloseJd();
|
||||||
sysPara->para.gearPumpValue=gearPumpValue_backup;
|
sysPara->para.gearPumpValue = 0;
|
||||||
|
sysPara->devOp->WriteMoterPump();
|
||||||
sysPara->para.reclaimPumpPWMWidth = reclaimPumpPWMWidth_backup;
|
sysPara->para.reclaimPumpPWMWidth = reclaimPumpPWMWidth_backup;
|
||||||
sysPara->devOp->controlCompressPump(false);
|
sysPara->devOp->controlCompressPump(false);
|
||||||
setRunStatus(tr("准备关机......"));
|
setRunStatus(tr("准备关机......"));
|
||||||
@@ -4462,15 +4424,9 @@ void MainWindow::on_pushButton_Reboot_clicked()
|
|||||||
sysPara->devOp->controlReclaimTankOpen(true);
|
sysPara->devOp->controlReclaimTankOpen(true);
|
||||||
sysPara->status.isPumpValveControledByHand = true; //停止自动
|
sysPara->status.isPumpValveControledByHand = true; //停止自动
|
||||||
if(sysPara->para.gearPumpEnable ){
|
if(sysPara->para.gearPumpEnable ){
|
||||||
if(!sysPara->para.flagOfReclaimPumEnable){
|
if(sysPara->para.flagOfReclaimPumEnable)
|
||||||
sysPara->para.gearPumpValue = 360;
|
|
||||||
sysPara->devOp->WriteMoterPump();
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
sysPara->devOp->controlReclaimPump(true,false);
|
sysPara->devOp->controlReclaimPump(true,false);
|
||||||
sysPara->para.gearPumpValue = 0;
|
// 不再固定输出360,由闭环控制维持压力
|
||||||
sysPara->devOp->WriteMoterPump();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
sysPara->para.reclaimPumpPWMWidth = 95;
|
sysPara->para.reclaimPumpPWMWidth = 95;
|
||||||
@@ -4622,7 +4578,8 @@ void MainWindow::UpdateUIVersion(){
|
|||||||
.arg((sysPara->status.stm32Verion>>8) & 0xFF).arg(sysPara->status.stm32Verion&0xFF).arg(baudRateValue);
|
.arg((sysPara->status.stm32Verion>>8) & 0xFF).arg(sysPara->status.stm32Verion&0xFF).arg(baudRateValue);
|
||||||
|
|
||||||
QString VernonBach;
|
QString VernonBach;
|
||||||
VernonBach.sprintf("A%d.%d.%02d%s%s", UP_PRINTER_MAJOR_VER, UP_PRINTER_MINOR_VER,UP_PRINTER_RIVISION_VER,SUB_VERSION,SUB_RFID);
|
VernonBach.sprintf("%s.%s.", MACHINAE_VER, PUMP_VER);
|
||||||
|
VernonBach = VernonBach + (QString) Public::DateToString(__DATE__)+"_"+SUB_VER;
|
||||||
|
|
||||||
QString Mac = QString::number(sysPara->status.machineMac);
|
QString Mac = QString::number(sysPara->status.machineMac);
|
||||||
LogInfo::showVerionInformation(Mac,VernonBach,fpgaVersion,STM32Ver,sysPara->status.flagOfPowerOnMode);
|
LogInfo::showVerionInformation(Mac,VernonBach,fpgaVersion,STM32Ver,sysPara->status.flagOfPowerOnMode);
|
||||||
|
|||||||
@@ -243,6 +243,7 @@ private:
|
|||||||
bool printingFlag; //判断当前是否在打印
|
bool printingFlag; //判断当前是否在打印
|
||||||
bool startPrintingFlag;
|
bool startPrintingFlag;
|
||||||
bool previewFlag;
|
bool previewFlag;
|
||||||
|
bool m_powerOffInProgress = false; // 防止MySleep处理事件时重复进入关机流程
|
||||||
|
|
||||||
int searchExpiryVar(QString html = "");//检索有效期变量
|
int searchExpiryVar(QString html = "");//检索有效期变量
|
||||||
void ExpiryDotUpdate(char Mode);
|
void ExpiryDotUpdate(char Mode);
|
||||||
|
|||||||
+1
-3
@@ -7,13 +7,11 @@
|
|||||||
#define SYS_ROOT_DIR "/home/plg/"
|
#define SYS_ROOT_DIR "/home/plg/"
|
||||||
#include "qnamespace.h"
|
#include "qnamespace.h"
|
||||||
|
|
||||||
#define SOFTWARE_VER_NUM "A3.09"
|
|
||||||
|
|
||||||
#define MYSAVEFILEDLG // 定义自己的保存文件对话框,解决系统对话框按键不弹起问题
|
#define MYSAVEFILEDLG // 定义自己的保存文件对话框,解决系统对话框按键不弹起问题
|
||||||
#define LANINTERFACE_NAME "eth0"
|
#define LANINTERFACE_NAME "eth0"
|
||||||
|
|
||||||
// #define FPGATEST // 给韦工测试时启用,发布版本需要关闭
|
// #define FPGATEST // 给韦工测试时启用,发布版本需要关闭
|
||||||
// #define NETWORKQRCODE //二维码允许tcp客户端修改
|
#define NETWORKQRCODE //二维码允许tcp客户端修改 --荆州四机赛瓦定制功能
|
||||||
// #define __RFID_OLD //旧的加密算法
|
// #define __RFID_OLD //旧的加密算法
|
||||||
// #define __RFID_CARD //刷卡功能
|
// #define __RFID_CARD //刷卡功能
|
||||||
// #define __RFID_IND //允许印度进行二次加密的宏
|
// #define __RFID_IND //允许印度进行二次加密的宏
|
||||||
|
|||||||
+1
-1
@@ -301,7 +301,7 @@ QTabBar::tab:selected {background-color: rgb(255, 170, 127)}
|
|||||||
QTabBar::tab:!selected {margin-top: 5px;}</string>
|
QTabBar::tab:!selected {margin-top: 5px;}</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>2</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="tab_3">
|
<widget class="QWidget" name="tab_3">
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
|
|||||||
BIN
Binary file not shown.
+631
-605
File diff suppressed because it is too large
Load Diff
@@ -828,6 +828,38 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="10" column="1">
|
||||||
|
<widget class="QLabel" name="label_7">
|
||||||
|
<property name="text">
|
||||||
|
<string>排气时间(秒):</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="10" column="2">
|
||||||
|
<widget class="QSpinBox" name="spinBoxAirPushDuration">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>37</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="buttonSymbols">
|
||||||
|
<enum>QAbstractSpinBox::NoButtons</enum>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>300</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>4</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
|
||||||
<html><head><meta name="qrichtext" content="1" /><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><style type="text/css">
|
|
||||||
p, li { white-space: pre-wrap; }
|
|
||||||
</style></head><body style=" font-family:'songti'; font-size:12pt; font-weight:400; font-style:normal;">
|
|
||||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">f</p></body></html>
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
|
||||||
<html><head><meta name="qrichtext" content="1" /><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><style type="text/css">
|
|
||||||
p, li { white-space: pre-wrap; }
|
|
||||||
</style></head><body style=" font-family:'songti'; font-size:12pt; font-weight:400; font-style:normal;">
|
|
||||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">fdafdsa</p></body></html>
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
|
||||||
<html><head><meta name="qrichtext" content="1" /><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><style type="text/css">
|
|
||||||
p, li { white-space: pre-wrap; }
|
|
||||||
</style></head><body style=" font-family:'songti'; font-size:12pt; font-weight:400; font-style:normal;">
|
|
||||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">化公为私于机构改革讨价还价液恭恭敬敬用同方</p></body></html>
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
|
||||||
<html><head><meta name="qrichtext" content="1" /><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><style type="text/css">
|
|
||||||
p, li { white-space: pre-wrap; }
|
|
||||||
</style></head><body style=" font-family:'songti'; font-size:12pt; font-weight:400; font-style:normal;">
|
|
||||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'helvetica'; font-size:8pt; font-weight:200;">yujhfdddeef</span><img src=":/6/image/digitalWidth2.png" width="10" height="8" /></p></body></html>
|
|
||||||
Reference in New Issue
Block a user