#include "TriggerCtrl.h" #include "ui_triggerctrl.h" #include #include #include #include #include "qdebug.h" #include #include "myinclude.h" #include "Public.h" #include "VerBVersion.h" #include "DevOp.h" #include "InkJetPrinter.h" extern InkJetPrinter *pInkJectPrinter; /* readme: 20140809 1. 同步字宽mm: 0.1+ w*(4-0.1) = 0.1+3.9w (mm) 2. 按长度喷印: */ // 20140923-12:05版本存在图形方式下变量不变绿问题,新版本已经更正 // 20141013-16:36修正密码有效期设置错误。 //2015-10-17 二维码变量问题 // 2015-11-01 无聊: 要从V6S版本恢复原来的 para.set_HVData_Flag = 0; 参数 // 估计过段时间又要要求增加 UART功能。 V6S 原来已经有这个功能了。但他们不用!! // 20151109 新增计数1和计数器2单独立即清零 版本号 No42 // 更新了Vietname字库,使用中文使用wenquanyiBitmap,编译uncode编码使用wenquanyimicrohei,英文自己编,越南语自己编,基于DejaVu Sans // 新版软件更新或升级,会因参数错位,出现隔膜位置设定值(等参数)错误,引起主墨泵不工作,开机不循环等现象。(解决办法,重新检查并设置所有参数) // 20160203:修改了变量定位方式,更新的Image图片。 将左下角更换为RGB = 250,250,0 -=== 0xFFF7FC00 // 修正了停止打印关闭高压的问题,重新打印出现高压故障 // 修改了密码一周一变,增加了密码校验,需要使用新版20以上的手机密码软件,密码为7位; // 20160218 修改了提示框显示方式,避免提示阻塞处理进程 // 20160304 优化了变量显示; 增加了中心旋转交替功能;增加了 13位随机码打印功能; 修正界面显示字库部分汉字问题 // 本次修改需要同时更并按ARM和FPGA // FPGA实现自动点距调整,实现连续点位置修正 20160714 FPGA版本 V44, 0714B // 20160715 : 去掉了“点距电压微调”、“内存数据显示”、部分相检控制参数设置 // 20160729: 发现打开历史记录会死机问题,原因待查。但执行删除历史记录后,可避免再次死机。 // 20160723: 增加电眼复位功能。 与电眼清零不同,复位时,计数不清零,而是等于预设的当前值。 // 20160718: 参考日立方案,优化打印效果 /* 20160728:发现历史记录打开时,会死机 20160729: 查找原因:fi // 20160806:重要修改 : 毫米脉冲的系数由X8改为X256,原因是:使用X8时传递误差较大,导致1000mm会有6mm误差, 使用X256(即8位二进制表示小数时,可以精确到0.004,从而提高精度) X8 时,小数精度为0.125而已 20160812:增加左横,右横变量 if((varType<9) // 普通变量 ||(varType>=20 && varType<29) // 横左变量 ||(varType>=40 && varType<49) // 右横变量 if(fontname.contains("SerifL") ||fontname.contains("serifl") ) varType1= 20+varType; else if(fontname.contains("SerifR") ||fontname.contains("serifr") ) varType1= 40+varType; 20160831: 增加临时密码,每小时一变 20160904: 解决重新开机后,有时不能自动打印文件问题。 20160905: 第二行单独变量时显示不全问题 // 20160912: 去掉高压故障自动关闭回收的默认值 1 // 20160912: 设置了隐藏按键,用于对墨线时间和开机次数进行复位 No49 20160927: FIFO实现RAND 码上传,暂时与RST0806 No49区别开来 No50 20161212: 修改总产品计数器清零功能。由ARM清零改为FPGA清零 No51 // [3]总产品计数器清零FPGA 20161217: 增加了 SPV210编译选项,以处理V6核心版驱动问题 修改随机码处理函数,以解决 不能输出奇数位 随机码问题。 20170217: 有厂家只想打一条横线,改最小列点阵数。 20170224: 输入密码不回显 20170313: 修改开机重启或重载参数时,设定计数当前值为起始值 20170318: 制作0318版本的刷机文件 20170803: 增加外接屏功能,20170808完成 */ #ifdef MIMA #ifdef ALT16 #define BVER "(ALT53)" TST // 20160801 之前使用 RST46 #else #define BVER "(SUN53)" TST // 20160801 之前使用 RST46 #endif #endif //#define NON_CABLE//喷印间隔固定 // 20160507 1138 // 20161209 编辑 小数点喷印间隔 // 20170603: 太阳能条码专用版本 // Nam Ninh phồng tuyệt vời Mã Technology Co., Ltd. TriggerCtrl::TriggerCtrl(QWidget *parent) : QWidget(parent), ui(new Ui::TriggerCtrl) { ui->setupUi(this); //#ifdef SYNLENFLOAT QRegExp double_rx100("10000000|([0-9]{1,8}[\.][0-9]{0,1})"); ui->spinBoxSynTriggerPrintLen->setValidator(new QRegExpValidator(double_rx100,ui->spinBoxSynTriggerPrintLen)); #ifdef NON_CABLE ui->spinBoxSynTriggerPrintLen->setEnabled(0); #endif //#endif pulseNumFix = new PulseNumFix(parent); pulseNumFix->hide(); ui->lineEditTriggerPulsePerMm->setValidator(new QDoubleValidator(0)); connect(pulseNumFix,SIGNAL(pulseNuxFixDone(float)),this,SLOT(onPulseNumFixDone(float))); //ui->test_version->setText (tr(BUILD_DATE)); updateSysStatusToUI(); QString s; #if 0 /* roger use new Version manage,so delete it */ s.sprintf(" %s ",__TIME__); #ifdef MYTEST s = (QString) Public::DateToString(__DATE__)+s + "A2451测试"; #else s = (QString) Public::DateToString(__DATE__)+s + BVER; #endif #else s.sprintf("%d.%d.%02d_%s_", UP_PRINTER_MAJOR_VER, UP_PRINTER_MINOR_VER,UP_PRINTER_RIVISION_VER,SUB_VERSION); s = s + (QString) Public::DateToString(__DATE__)+"_"+ QString(__TIME__)+"_"+ UP_PRINTER_STAGE_VER; //s = s + BVER; #endif ui->test_version->setText(s); ui->checkBoxEleEyeMakeClean->setVisible(false); tr("独立参数"); //ui->labelDelayTriggerValue->setText(tr("重复间隔(毫秒)")); //--if( QString(BUILD_DATE).left(21)!="2015-10-26 20:56(M40)"){ //--ui->labelEleMaskTime->hide(); //--ui->spinBoxEleMaskTime->hide(); //--} if(Public::ReadLanguageName()=="Chinese"){ ui->label_miv12->setPixmap(QPixmap(QString::fromUtf8(":/image/MIV12.png"))); }else { ui->label_miv12->setPixmap(QPixmap(QString::fromUtf8(":/image/MIV13.png"))); } //qDebug()<<"Run TriggerCtrl ok."; #ifdef ENGLISH ui->label_miv12->setPixmap(QPixmap(QString::fromUtf8(":/image/MIV13.png"))); #endif ui->spinBoxOuputPulseCol->setHidden(1); // ui->labelOuputPulseCol->setHidden(1); } TriggerCtrl::~TriggerCtrl() { delete ui; delete pulseNumFix; } void TriggerCtrl::setTriggerUI(int triggerMode){ ui->radioButtonDelayTrigger->setChecked(triggerMode == PRINT_TRIGGER_TIME); ui->spinBoxDelayTriggerValue->setEnabled(triggerMode == PRINT_TRIGGER_TIME); ui->labelDelayTriggerValue->setEnabled(triggerMode == PRINT_TRIGGER_TIME); ui->comboBoxTimeTriggerMode->setEnabled(triggerMode == PRINT_TRIGGER_TIME); ui->labelTimeTriggerMode->setEnabled(triggerMode == PRINT_TRIGGER_TIME); ui->radioButtonEleEyeEdgetTrigger->setChecked( triggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE); ui->radioButtonEleEyeLevelTrigger->setChecked(triggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL); ui->spinBoxEleEyeTriggerIntervalMs->setEnabled(triggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL || triggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE); ui->labelEleEyeTriggerIntervalMs->setEnabled(triggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL || triggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE); ui->spinBoxEleEyeTriggerRepeatCnt->setEnabled(triggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL || triggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE); ui->labelEleEyeTriggerRepeatCnt->setEnabled(triggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL || triggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE); ui->spinBoxEleEyeTriggerPrintDelay->setEnabled(triggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL || triggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE || PRINT_TRIGGER_SYNCHRONIZER); ui->labelEleEyeTriggerPrintDelay->setEnabled(triggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL || triggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE || PRINT_TRIGGER_SYNCHRONIZER); ui->checkBoxSynMakeClean->setEnabled(triggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL || triggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE); ui->checkEyeTriggerSynPrintEn->setEnabled (triggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL || triggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE); ui->labelEleMaskTime->setEnabled (triggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL || triggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE); ui->spinBoxEleMaskTime->setEnabled (triggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL || triggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE); if(sysPara->para.eleEyeTriggerSynPrintEn && (triggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL || triggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE) ) { //ui->radioButtonSynTrigger->setChecked(1); ui->spinBoxSynTriggerPrintLen->setEnabled(0); ui->labelSynTriggerPrintLen->setEnabled(1); ui->lineEditTriggerPulsePerMm->setEnabled(1); ui->labelTriggerPulsePerMm->setEnabled(1); ui->spinBoxSynTriggerPrintLenRatio->setEnabled(1); ui->labelSynTriggerPrintLenRatio->setEnabled(1); ui->checkBoxEleEyeMakeClean->setEnabled(1); ui->pushButtonApplyPulseFix->setEnabled(1); ui->comboBoxSynPrintMode->setEnabled(1); ui->labelSynPrintMode->setEnabled(1); //ui->checkBoxAutoSpeedEN->setEnabled (1); ui->labelEleMaskTime->setEnabled(1); ui->spinBoxEleMaskTime->setEnabled(1); //ui->spinBoxEleMaskTime->setEnabled(1); ui->labelEleEyeTriggerPrintDelay->setText(tr("触发延时(毫米)")); ui->labelEleEyeTriggerIntervalMs->setText(tr("重复间隔(毫米)")); ui->labelEleMaskTime->setText(tr("封锁间隔(毫米)")); } else { ui->radioButtonSynTrigger->setChecked(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); #ifndef NON_CABLE ui->spinBoxSynTriggerPrintLen->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); #endif ui->labelSynTriggerPrintLen->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->lineEditTriggerPulsePerMm->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->labelTriggerPulsePerMm->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->spinBoxSynTriggerPrintLenRatio->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->labelSynTriggerPrintLenRatio->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->checkBoxEleEyeMakeClean->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->pushButtonApplyPulseFix->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->comboBoxSynPrintMode->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->labelSynPrintMode->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); //ui->checkBoxAutoSpeedEN->setEnabled (triggerMode == PRINT_TRIGGER_SYNCHRONIZER); //ui->labelEleMaskTime->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); //ui->spinBoxEleMaskTime->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); if(triggerMode == PRINT_TRIGGER_SYNCHRONIZER) { ui->labelEleEyeTriggerPrintDelay->setText(tr("触发延时(毫米)")); } else { ui->labelEleEyeTriggerPrintDelay->setText(tr("触发延时(毫秒)")); } ui->labelEleEyeTriggerIntervalMs->setText(tr("重复间隔(毫秒)")); ui->labelEleMaskTime->setText(tr("封锁时间(毫秒)")); } if(( ( //sysPara->para.eleEyeTriggerSynPrintEn || ui->checkEyeTriggerSynPrintEn->isChecked()) &&(triggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL || triggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE)) || triggerMode == PRINT_TRIGGER_SYNCHRONIZER ) { ui->labelOutputPulseDelayMs->setText(tr("延时(毫米):")); } else ui->labelOutputPulseDelayMs->setText(tr("延时(毫秒):")); setSynPrintMode(sysPara->para.sysTriggerPrintMode); //72版本禁用该输入框 //67打开 // if(triggerMode== PRINT_TRIGGER_SYNCHRONIZER){ // const unsigned short &FpgaVer=sysPara->status.build_dat.builTime; // if(72==FpgaVer) // { // ui->spinBoxSynTriggerPrintLenRatio->setValue(0); // ui->spinBoxSynTriggerPrintLenRatio->setEnabled(false); // } // else if(67==FpgaVer) // { // ui->spinBoxSynTriggerPrintLenRatio->setEnabled(true); // } // } // else{ // ui->spinBoxSynTriggerPrintLenRatio->setValue(0); // ui->spinBoxSynTriggerPrintLenRatio->setEnabled(false); // } } void TriggerCtrl::setSynPrintMode(int mode){ ui->labelSynTriggerPrintLenRatio->setText((mode == SYN_PRINT_MODE_ACCORDING_CHAR_WIDTH)?tr("字符宽度"):tr("喷印比例(%)")); ui->comboBoxSynPrintMode->setCurrentIndex(mode); //ui->spinBoxSynTriggerPrintLenRatio->setValue((mode == SYN_PRINT_MODE_ACCORDING_CHAR_WIDTH)?sysPara->para.synCharWidthRatio:sysPara->para.synTriggerPrintLenRatio); //edit@11-18 if(SYN_PRINT_MODE_ACCORDING_CHAR_WIDTH!=mode) { ui->spinBoxSynTriggerPrintLenRatio->setValue(sysPara->para.synTriggerPrintLenRatio); } const bool bShow=SYN_PRINT_MODE_ACCORDING_CHAR_WIDTH!=mode; //隐藏文本框 ui->labelSynTriggerPrintLenRatio->setVisible(bShow); //隐藏输入框 ui->spinBoxSynTriggerPrintLenRatio->setVisible(bShow); } void TriggerCtrl::GetTriggerUIPara(){ if(sysPara){ sysPara->para.printDelayMs = ui->spinBoxDelayTriggerValue->value(); sysPara->para.timeTriggerPrintMode = ui->comboBoxTimeTriggerMode->currentIndex(); sysPara->para.elecEyeTriggerInterval = ui->spinBoxEleEyeTriggerIntervalMs->value(); sysPara->para.photoElectricityRepeateNum = ui->spinBoxEleEyeTriggerRepeatCnt->value(); // sysPara->para.synTriggerPrintLenMm = ui->spinBoxSynTriggerPrintLen->text().toFloat(); //sysPara->para.synTriggerPrintLenMm = ui->spinBoxSynTriggerPrintLen->value(); #ifdef NON_CABLE sysPara->para.synTriggerPrintLenMm = 255.0; ui->spinBoxSynTriggerPrintLen->setText("255"); #endif sysPara->para.synPulseNumPerMm = ui->lineEditTriggerPulsePerMm->text().toFloat(); sysPara->para.sysTriggerPrintMode = ui->comboBoxSynPrintMode->currentIndex(); if(sysPara->para.sysTriggerPrintMode == SYN_PRINT_MODE_ACCORDING_CHAR_WIDTH) //edit@11-19 ;//sysPara->para.synCharWidthRatio = ui->spinBoxSynTriggerPrintLenRatio->value(); else sysPara->para.synTriggerPrintLenRatio = ui->spinBoxSynTriggerPrintLenRatio->value(); // 原代码: //sysPara->para.AltMirrorGap =(unsigned int) ( ((unsigned int)ui->spinBoxAltMirrorGap->value()) & 0x7fff) | ( ui->comboBoxAltMirrType->currentIndex()==1?0x8000:0x0000); // 20160303: sysPara->para.AltMirrorGap =(unsigned int) ( ((unsigned int)ui->spinBoxAltMirrorGap->value()) & 0x0fff) |( ( ui->comboBoxAltMirrType->currentIndex())<<12 ); //qDebug()<< (sysPara->para.AltMirrorGap & 0x0fff) << (sysPara->para.AltMirrorGap & 0xf000); if(ui->radioButtonDelayTrigger->isChecked()) sysPara->para.printTriggerMode = PRINT_TRIGGER_TIME; else if(ui->radioButtonEleEyeLevelTrigger->isChecked()) sysPara->para.printTriggerMode = PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL; else if(ui->radioButtonEleEyeEdgetTrigger->isChecked()) sysPara->para.printTriggerMode = PRINT_TRIGGER_ELEC_EYE_EDGE; else if(ui->radioButtonSynTrigger->isChecked()) sysPara->para.printTriggerMode = PRINT_TRIGGER_SYNCHRONIZER; else sysPara->para.printTriggerMode = PRINT_TRIGGER_NONE; sysPara->para.eleEyeTriggerSynPrintEn = ui->checkEyeTriggerSynPrintEn->isChecked (); sysPara->para.eleEyeTriggerPrintDelay = ui->spinBoxEleEyeTriggerPrintDelay->value(); sysPara->para.synClearCntInEleEyeMode = ui->checkBoxSynMakeClean->isChecked(); sysPara->para.eleEyeClearCntInSynMode = (sysPara->para.eleEyeClearCntInSynMode & 0xf0) + ui->comboBoxEleEyeMakeClean->currentIndex(); //ui->checkBoxEleEyeMakeClean->isChecked(); //sysPara->para.autoSynSpeedEn = ui->checkBoxAutoSpeedEN->isChecked (); sysPara->para.autoSynSpeedEn = 0; //sysPara->para.synPulsePerMmX8 = (unsigned short)(sysPara->para.synPulseNumPerMm *256); sysPara->para.synPulsePerMmX8 = (unsigned short)((unsigned int)sysPara->para.synPulseNumPerMm <<8); sysPara->para.eleMaskTime = ui->spinBoxEleMaskTime->value(); //qDebug()<<"eleEyeClearCntInSynMode"<< sysPara->para.eleEyeClearCntInSynMode ; sysPara->para.synchronizorActType = ui->comboBoxSyncActType->currentIndex(); //qDebug()<<"synchronizorActType"<< sysPara->para.synchronizorActType; sysPara->para.pulse_sinal_value = ui->spinBoxpluseSinal->value(); } } void TriggerCtrl::TriggerupdateSysParaToUI(){ updateSysParaToUI(); } void TriggerCtrl::updateSysParaToUI(){ if(sysPara) { /*----------------------------------------*/ setTriggerUI(sysPara->para.printTriggerMode); ui->spinBoxDelayTriggerValue->setValue(sysPara->para.printDelayMs); #ifndef NON_CABLE ui->comboBoxTimeTriggerMode->setCurrentIndex(sysPara->para.timeTriggerPrintMode); #endif ui->spinBoxEleEyeTriggerIntervalMs->setValue(sysPara->para.elecEyeTriggerInterval); ui->spinBoxOutputPulseDelayMs->setValue(sysPara->para.outputPulseDelayMs); ui->spinBoxEleEyeTriggerRepeatCnt->setValue(sysPara->para.photoElectricityRepeateNum); //ui->spinBoxSynTriggerPrintLen->setValue(sysPara->para.synTriggerPrintLenMm); ui->spinBoxSynTriggerPrintLen->setText(QString::number(sysPara->para.synTriggerPrintLenMm)); ui->lineEditTriggerPulsePerMm->setText(QString::number(sysPara->para.synPulseNumPerMm)); if(sysPara->para.sysTriggerPrintMode == SYN_PRINT_MODE_ACCORDING_CHAR_WIDTH) //edit@11-19 ;//ui->spinBoxSynTriggerPrintLenRatio->setValue(sysPara->para.synCharWidthRatio); else ui->spinBoxSynTriggerPrintLenRatio->setValue(sysPara->para.synTriggerPrintLenRatio); /*----------------------------------------*/ ui->spinBoxEleEyeTriggerPrintDelay->setValue(sysPara->para.eleEyeTriggerPrintDelay); ui->checkBoxSynMakeClean->setChecked(sysPara->para.synClearCntInEleEyeMode); //ui->checkBoxEleEyeMakeClean->setChecked(sysPara->para.eleEyeClearCntInSynMode); ui->comboBoxEleEyeMakeClean->setCurrentIndex( sysPara->para.eleEyeClearCntInSynMode & 0x0f); ui->checkBoxPulseOutputEnable->setChecked(sysPara->para.pulseOutputEnable); ui->labelProductCntPerOutputPulse->setEnabled(sysPara->para.pulseOutputEnable); ui->spinBoxProductCntPerOutputPulse->setEnabled(sysPara->para.pulseOutputEnable); ui->spinBoxProductCntPerOutputPulse->setValue(sysPara->para.productCntPerOutputPulse); ui->labelOutputPulseDelayMs->setEnabled(sysPara->para.pulseOutputEnable); //ui->spinBoxOutputPulseDelayMs->setEnabled(sysPara->para.pulseOutputEnable); ui->spinBoxOutputPulseDelayMs->setEnabled(true /*sysPara->para.outputPulseDelayMs*/); ui->spinBoxOuputPulseCol->setValue(sysPara->para.OuputPulseCol); ui->checkEyeTriggerSynPrintEn->setChecked (sysPara->para.eleEyeTriggerSynPrintEn); ui->comboBoxSyncActType->setCurrentIndex (sysPara->para.synchronizorActType); //ui->checkBoxAutoSpeedEN->setChecked (sysPara->para.autoSynSpeedEn ); ui->spinBoxEleMaskTime->setValue(sysPara->para.eleMaskTime); ui->spinBoxAltMirrorGap->setValue( sysPara->para.AltMirrorGap & 0x0fff ); ui->comboBoxAltMirrType->setCurrentIndex( (sysPara->para.AltMirrorGap>>12) & 0x000F); ui->spinBoxpluseSinal->setValue(sysPara->para.pulse_sinal_value); //72版本禁用该输入框 //67打开 } } void TriggerCtrl::applyUIPara(){ if(sysPara){ GetTriggerUIPara(); if(sysPara->para.printTriggerMode == PRINT_TRIGGER_SYNCHRONIZER) { if( sysPara->para.synTriggerPrintLenMm < sysPara->para.eleEyeTriggerPrintDelay ) { QMessageBox::information(this,tr("提示:参数不正确"),tr("要求:触发长度小于喷印间隔")); } } sysPara->para.pulseOutputEnable = ui->checkBoxPulseOutputEnable->isChecked(); sysPara->para.productCntPerOutputPulse = ui->spinBoxProductCntPerOutputPulse->value(); sysPara->para.outputPulseDelayMs = ui->spinBoxOutputPulseDelayMs->value(); sysPara->para.OuputPulseCol = ui->spinBoxOuputPulseCol->value(); if(( ( //sysPara->para.eleEyeTriggerSynPrintEn || ui->checkEyeTriggerSynPrintEn->checkState()==1 ) &&(sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL || sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE)) || sysPara->para.printTriggerMode == PRINT_TRIGGER_SYNCHRONIZER ) { ui->labelOutputPulseDelayMs->setText(tr("延时(毫米):")); } else ui->labelOutputPulseDelayMs->setText(tr("延时(毫秒):")); #ifdef DEBUG1 qDebug()<<"TriggerCtrl::applyUIPara"<<"1"; #endif if(sysPara->devOp->writeFpgaPrintPara() != -1) QMessageBox::information(this,tr("提示"),tr("应用成功")); #ifdef DEBUG1 qDebug()<<"TriggerCtrl::applyUIPara"<<"3"; #endif } } void TriggerCtrl::updateSysStatusToUI(){ static char t_init = 0; if(sysPara){ if(t_init == 0){ sysPara->loadParaFromFile(); //qDebug()<<"sysPara->para.pulse_sinal_value="<para.pulse_sinal_value; ui->spinBoxpluseSinal->setValue(sysPara->para.pulse_sinal_value); 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))); // } } } void TriggerCtrl::on_checkEyeTriggerSynPrintEn_pressed() { #if 0 int triggerMode = sysPara->para.printTriggerMode; if(sysPara) { //if( !sysPara->para.eleEyeTriggerSynPrintEn ) if( !ui->checkEyeTriggerSynPrintEn->isChecked() ) { //ui->radioButtonSynTrigger->setChecked(1); ui->spinBoxSynTriggerPrintLen->setEnabled(1); ui->labelSynTriggerPrintLen->setEnabled(1); ui->lineEditTriggerPulsePerMm->setEnabled(1); ui->labelTriggerPulsePerMm->setEnabled(1); ui->spinBoxSynTriggerPrintLenRatio->setEnabled(1); ui->labelSynTriggerPrintLenRatio->setEnabled(1); ui->checkBoxEleEyeMakeClean->setEnabled(1); ui->pushButtonApplyPulseFix->setEnabled(1); ui->comboBoxSynPrintMode->setEnabled(1); ui->labelSynPrintMode->setEnabled(1); ui->checkBoxAutoSpeedEN->setEnabled (1); ui->spinBoxEleEyeTriggerIntervalMs->setEnabled(0); ui->labelEleEyeTriggerPrintDelay->setText(tr("触发延时(毫米)")); ui->labelEleEyeTriggerIntervalMs->setText(tr("重复间隔(毫米)")); ui->labelOutputPulseDelayMs->setText("延时(毫米):"); if(ui->checkBoxpausePrintSyncInv->isChecked()) { ui->checkBoxpausePrintSyncInv->setChecked(false); } } else { ui->radioButtonSynTrigger->setChecked(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->spinBoxSynTriggerPrintLen->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->labelSynTriggerPrintLen->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->lineEditTriggerPulsePerMm->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->labelTriggerPulsePerMm->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->spinBoxSynTriggerPrintLenRatio->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->labelSynTriggerPrintLenRatio->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->checkBoxEleEyeMakeClean->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->pushButtonApplyPulseFix->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->comboBoxSynPrintMode->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->labelSynPrintMode->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->checkBoxAutoSpeedEN->setEnabled (triggerMode == PRINT_TRIGGER_SYNCHRONIZER); //ui->spinBoxEleEyeTriggerIntervalMs->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->spinBoxEleEyeTriggerIntervalMs->setEnabled(1); ui->labelEleEyeTriggerPrintDelay->setText(tr("触发延时(毫秒)")); ui->labelEleEyeTriggerIntervalMs->setText(tr("重复间隔(毫秒)")); ui->labelOutputPulseDelayMs->setText( ui->radioButtonSynTrigger->isChecked()?"延时(毫米):":"延时(毫秒):"); } // sysPara->para.eleEyeTriggerSynPrintEn=!sysPara->para.eleEyeTriggerSynPrintEn; } #endif } void TriggerCtrl::on_radioButtonDelayTrigger_pressed() { setTriggerUI(PRINT_TRIGGER_TIME); // emit synDisableFontWidth(false); } void TriggerCtrl::on_radioButtonEleEyeEdgetTrigger_pressed() { setTriggerUI(PRINT_TRIGGER_ELEC_EYE_EDGE); // emit synDisableFontWidth(false); } void TriggerCtrl::on_radioButtonEleEyeLevelTrigger_pressed() { setTriggerUI(PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL); // emit synDisableFontWidth(false); } void TriggerCtrl::on_radioButtonSynTrigger_pressed() { //edit@11-19 sysPara->para.printTriggerMode = PRINT_TRIGGER_SYNCHRONIZER; setTriggerUI(PRINT_TRIGGER_SYNCHRONIZER); // const unsigned short &FpgaVer=sysPara->status.build_dat.builTime; // //72版本禁用字符宽度 // if(72 == FpgaVer){ // ui->spinBoxSynTriggerPrintLenRatio->setValue(0); // ui->spinBoxSynTriggerPrintLenRatio->setEnabled(0); // }else if (67 == FpgaVer) // ui->spinBoxSynTriggerPrintLenRatio->setEnabled(1); // emit synDisableFontWidth(true); } void TriggerCtrl::on_pushButtonApplyPulseFix_clicked() { pulseNumFix->bindSysPara(sysPara); pulseNumFix->hide(); pulseNumFix->show(); } void TriggerCtrl::onPulseNumFixDone(float value){ ui->lineEditTriggerPulsePerMm->setText(QString::number(value)); } void TriggerCtrl::on_comboBoxSynPrintMode_currentIndexChanged(int index) { setSynPrintMode(index); } void TriggerCtrl::on_pushButtonApply_pressed() { applyUIPara(); if(sysPara)sysPara->saveParaToFile (); emit autoUpdateFontWidthByTriggerCtrl(sysPara->status.textEditTotalCol); TriggerCtrlLog(); } void TriggerCtrl::TriggerCtrlLog(){ qDebug()<para.printTriggerMode); qDebug()<lineEditTriggerPulsePerMm->text().toFloat()); qDebug()<spinBoxSynTriggerPrintLen->text().toFloat()); qDebug()<comboBoxSynPrintMode->currentIndex()); qDebug()<spinBoxSynTriggerPrintLenRatio->value()); qDebug()<comboBoxEleEyeMakeClean->currentIndex()); qDebug()<comboBoxAltMirrType->currentIndex()); qDebug()<spinBoxAltMirrorGap->value()); qDebug()<spinBoxpluseSinal->value()); qDebug()<spinBoxEleEyeTriggerRepeatCnt->value()); qDebug()<spinBoxEleEyeTriggerIntervalMs->value()); qDebug()<checkEyeTriggerSynPrintEn->isChecked ()); qDebug()<spinBoxEleEyeTriggerPrintDelay->value()); qDebug()<spinBoxEleMaskTime->value()); qDebug()<checkBoxSynMakeClean->isChecked()); qDebug()<spinBoxDelayTriggerValue->value()); qDebug()<comboBoxTimeTriggerMode->currentIndex()); qDebug()<comboBoxSyncActType->currentIndex()); qDebug()<spinBoxProductCntPerOutputPulse->value()); qDebug()<spinBoxOutputPulseDelayMs->value()); qDebug()<checkBoxPulseOutputEnable->isChecked()); } void TriggerCtrl::on_checkBoxPulseOutputEnable_clicked() { bool checked = ui->checkBoxPulseOutputEnable->isChecked(); ui->labelProductCntPerOutputPulse->setEnabled(checked); ui->spinBoxProductCntPerOutputPulse->setEnabled(checked); //ui->labelOutputPulseDelayMs->setEnabled(checked); //ui->spinBoxOutputPulseDelayMs->setEnabled(checked); } void TriggerCtrl::setBuildTime(QString s1) { QString s; #if 0 /* roger use new Version manage,so delete it */ s.sprintf(" %s ",__TIME__); s = (QString) Public::DateToString(__DATE__)+s + BVER; #else s.sprintf("%d.%d.%02d_%s_", UP_PRINTER_MAJOR_VER, UP_PRINTER_MINOR_VER,UP_PRINTER_RIVISION_VER,SUB_VERSION); s = s + (QString) Public::DateToString(__DATE__)+ "_"+ QString(__TIME__)+"_"+UP_PRINTER_STAGE_VER; // s = s + BVER; #endif ui->test_version->setText(s+s1); //ui->test_version->setText (BUILD_DATE+s); } void TriggerCtrl::on_checkEyeTriggerSynPrintEn_clicked(bool checked) { int triggerMode = sysPara->para.printTriggerMode; if(sysPara) { //if( !sysPara->para.eleEyeTriggerSynPrintEn ) if( checked) { //ui->radioButtonSynTrigger->setChecked(1); #ifndef NON_CABLE ui->spinBoxSynTriggerPrintLen->setEnabled(1); #endif ui->labelSynTriggerPrintLen->setEnabled(1); ui->lineEditTriggerPulsePerMm->setEnabled(1); ui->labelTriggerPulsePerMm->setEnabled(1); ui->spinBoxSynTriggerPrintLenRatio->setEnabled(1); ui->labelSynTriggerPrintLenRatio->setEnabled(1); ui->checkBoxEleEyeMakeClean->setEnabled(1); ui->pushButtonApplyPulseFix->setEnabled(1); ui->comboBoxSynPrintMode->setEnabled(1); ui->labelSynPrintMode->setEnabled(1); //ui->checkBoxAutoSpeedEN->setEnabled (1); ui->spinBoxEleEyeTriggerIntervalMs->setEnabled(0); ui->labelEleEyeTriggerPrintDelay->setText(tr("触发延时(毫米)")); ui->labelEleEyeTriggerIntervalMs->setText(tr("重复间隔(毫米)")); ui->labelEleMaskTime->setText(tr("封锁间隔(毫米)")); ui->labelOutputPulseDelayMs->setText(tr("延时(毫米):")); if(ui->comboBoxSyncActType->currentIndex() || 0b11) //如果不是在正反转打印的模式下,就切换到正反转模式 { ui->comboBoxSyncActType->setCurrentIndex(0); } } else { ui->radioButtonSynTrigger->setChecked(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); #ifndef NON_CABLE ui->spinBoxSynTriggerPrintLen->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); #endif ui->labelSynTriggerPrintLen->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->lineEditTriggerPulsePerMm->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->labelTriggerPulsePerMm->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->spinBoxSynTriggerPrintLenRatio->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->labelSynTriggerPrintLenRatio->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->checkBoxEleEyeMakeClean->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->pushButtonApplyPulseFix->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->comboBoxSynPrintMode->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->labelSynPrintMode->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); //ui->checkBoxAutoSpeedEN->setEnabled (triggerMode == PRINT_TRIGGER_SYNCHRONIZER); //ui->spinBoxEleEyeTriggerIntervalMs->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->spinBoxEleEyeTriggerIntervalMs->setEnabled(1); ui->labelEleEyeTriggerPrintDelay->setText(tr("触发延时(毫秒)")); ui->labelEleEyeTriggerIntervalMs->setText(tr("重复间隔(毫秒)")); ui->labelEleMaskTime->setText(tr("封锁间隔(毫秒)")); ui->labelOutputPulseDelayMs->setText( ui->radioButtonSynTrigger->isChecked()?tr("延时(毫米):"):tr("延时(毫秒):")); } } } void TriggerCtrl::on_comboBoxSyncActType_activated(int index) { if(index>0) { on_checkEyeTriggerSynPrintEn_clicked(false); } } void TriggerCtrl::on_lineEditTriggerPulsePerMm_textChanged(const QString &arg1) { Q_UNUSED(arg1); sysPara->para.synPulseNumPerMm = ui->lineEditTriggerPulsePerMm->text().toFloat(); } void TriggerCtrl::on_spinBoxSynTriggerPrintLen_textChanged(const QString &arg1) { Q_UNUSED(arg1); //sysPara->para.synTriggerPrintLenMm = ui->spinBoxSynTriggerPrintLen->text().toFloat(); } //void TriggerCtrl::on_spinBoxEleEyeTriggerIntervalMs_valueChanged(int arg1) //{ // sysPara->para.elecEyeTriggerInterval = arg1; //} // //2020/3/2 // void TriggerCtrl::on_radioButtonSynTrigger_clicked() // { // sysPara->para.printTriggerMode = PRINT_TRIGGER_SYNCHRONIZER; // sysPara->para.printColDelay = 0; // } void TriggerCtrl::on_radioButtonEleEyeLevelTrigger_clicked() { sysPara->para.printTriggerMode = PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL; } void TriggerCtrl::on_radioButtonEleEyeEdgetTrigger_clicked() { sysPara->para.printTriggerMode = PRINT_TRIGGER_ELEC_EYE_EDGE; } void TriggerCtrl::on_radioButtonDelayTrigger_clicked() { sysPara->para.printTriggerMode = PRINT_TRIGGER_TIME; } #define PRINT_CTRL_ADDR_BASE 0xa400 typedef struct pulse_struct { unsigned int pulse_value:16; }Pulse_struct; void TriggerCtrl::on_spinBoxpluseSinal_valueChanged(int arg1) { Pulse_struct t_pulse_struct; sysPara->para.pulse_sinal_value = arg1; t_pulse_struct.pulse_value = arg1*10*ui->lineEditTriggerPulsePerMm->text().toFloat(); sysPara->devOp->fpgaWr(PRINT_CTRL_ADDR_BASE + 0x88, (unsigned char *)&t_pulse_struct, 2); } void TriggerCtrl::OutputPulse() { ui->checkBoxPulseOutputEnable->setChecked(true); ui->spinBoxProductCntPerOutputPulse->setEnabled(true); ui->spinBoxProductCntPerOutputPulse->setValue(sysPara->para.productCntPerOutputPulse); }