提交原始齿轮泵代码

This commit is contained in:
kite_lucs
2026-08-26 16:13:59 +08:00
commit afc8fcf2a4
1688 changed files with 316635 additions and 0 deletions
+650
View File
@@ -0,0 +1,650 @@
#include "TriggerCtrl.h"
#include "ui_triggerctrl.h"
#include <QCheckBox>
#include <QMessageBox>
#include <QValidator>
#include <QDoubleValidator>
#include "qdebug.h"
#include <stdio.h>
#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完成
*/
//#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);
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)));
updateSysStatusToUI();
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 = s + (QString) Public::DateToString(__DATE__)+"_"+ QString(__TIME__)+"_";
// hlp :邓总要求,采用新的格式进行转换 0727
// s = Public::ArmDate2String(__DATE__, __TIME__);
ui->test_version->setText(s);
ui->checkBoxEleEyeMakeClean->setVisible(false);
tr("独立参数");
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")));
}
ui->spinBoxOuputPulseCol->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("延时(毫秒):"));
if(sysPara->devOp->writeFpgaPrintPara() != -1)
QMessageBox::information(this,tr("提示"),tr("应用成功"));
emit checkPrintIntervalSignal();
}
}
void TriggerCtrl::updateSysStatusToUI(){
static char t_init = 0;
if(sysPara){
if(t_init == 0){
sysPara->loadParaFromFile();
//qDebug()<<"sysPara->para.pulse_sinal_value="<<sysPara->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()
{
}
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()<<QString("TriggerCtrl 触发模式: %1").arg(sysPara->para.printTriggerMode);
qDebug()<<QString("TriggerCtrl 脉冲数/毫米: %1").arg(ui->lineEditTriggerPulsePerMm->text().toFloat());
qDebug()<<QString("TriggerCtrl 喷印间隔(毫米): %1").arg(ui->spinBoxSynTriggerPrintLen->text().toFloat());
qDebug()<<QString("TriggerCtrl 同步喷印模式: %1").arg(ui->comboBoxSynPrintMode->currentIndex());
qDebug()<<QString("TriggerCtrl 字符宽度: %1").arg(ui->spinBoxSynTriggerPrintLenRatio->value());
qDebug()<<QString("TriggerCtrl 电眼控制: %1").arg(ui->comboBoxEleEyeMakeClean->currentIndex());
qDebug()<<QString("TriggerCtrl 镜象交替类型: %1").arg(ui->comboBoxAltMirrType->currentIndex());
qDebug()<<QString("TriggerCtrl 镜像交替间隔: %1").arg(ui->spinBoxAltMirrorGap->value());
qDebug()<<QString("TriggerCtrl 脉冲信号值: %1").arg(ui->spinBoxpluseSinal->value());
qDebug()<<QString("TriggerCtrl 重复次数: %1").arg(ui->spinBoxEleEyeTriggerRepeatCnt->value());
qDebug()<<QString("TriggerCtrl 重复间隔(毫秒): %1").arg(ui->spinBoxEleEyeTriggerIntervalMs->value());
qDebug()<<QString("TriggerCtrl 同步打印: %1").arg(ui->checkEyeTriggerSynPrintEn->isChecked ());
qDebug()<<QString("TriggerCtrl 触发延时(毫秒): %1").arg(ui->spinBoxEleEyeTriggerPrintDelay->value());
qDebug()<<QString("TriggerCtrl 封锁时间(毫秒): %1").arg(ui->spinBoxEleMaskTime->value());
qDebug()<<QString("TriggerCtrl 同步器清零: %1").arg(ui->checkBoxSynMakeClean->isChecked());
qDebug()<<QString("TriggerCtrl 重复间隔(毫秒): %1").arg(ui->spinBoxDelayTriggerValue->value());
qDebug()<<QString("TriggerCtrl 间隔模式: %1").arg(ui->comboBoxTimeTriggerMode->currentIndex());
qDebug()<<QString("TriggerCtrl 同步器正反转打印: %1").arg(ui->comboBoxSyncActType->currentIndex());
qDebug()<<QString("TriggerCtrl 产生脉冲所需计数: %1").arg(ui->spinBoxProductCntPerOutputPulse->value());
qDebug()<<QString("TriggerCtrl 延时(毫秒): %1").arg(ui->spinBoxOutputPulseDelayMs->value());
qDebug()<<QString("TriggerCtrl 脉冲输出使能: %1").arg(ui->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;
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__);
// hlp :邓总要求,采用新的格式进行转换 0727
// s = Public::ArmDate2String(__DATE__, __TIME__);
ui->test_version->setText(s+s1);
}
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);
}