5300 lines
243 KiB
C++
5300 lines
243 KiB
C++
/*
|
||
*
|
||
*
|
||
*2013-9-15高压报警停止充电
|
||
*/
|
||
|
||
/*
|
||
QMessageBox::StandardButton ret;
|
||
ret = QMessageBox::warning(this, tr("警告"),
|
||
tr("是否初始化产品计数?"),
|
||
QMessageBox::Ok | QMessageBox::Cancel);
|
||
if (ret == QMessageBox::Ok){
|
||
updateTotalCnt(0);
|
||
sysPara->devOp->clearProductCnt(1);
|
||
sysPara->saveParaToFile();
|
||
|
||
}
|
||
*/
|
||
#include "mainwindow.h"
|
||
#include "ui_mainwindow.h"
|
||
#include "InputMethod.h"
|
||
#include <QVBoxLayout>
|
||
#include <InputMethod.h>
|
||
#include <QKeyEvent>
|
||
#include <QTextCodec>
|
||
#include <QTextEdit>
|
||
#include <QFont>
|
||
#include <TextEditOption.h>
|
||
#include <QDesktopWidget>
|
||
#ifndef Q_OS_WIN
|
||
#include <sys/reboot.h>
|
||
#else
|
||
#define reboot(a,...) (0 == 0)
|
||
#endif
|
||
#include <QPainter>
|
||
#include <QImage>
|
||
#include <QRgb>
|
||
#include <QDebug>
|
||
#include <QScrollBar>
|
||
#include <QFontMetrics>
|
||
#include <QChar>
|
||
#include <stdlib.h>
|
||
#include <unistd.h>
|
||
#include <string>
|
||
#include "DevOp.h"
|
||
#include "Public.h"
|
||
#include "LogInfo.h"
|
||
#include "myinclude.h"
|
||
#include "QBarCode.h"
|
||
#include "scene/picscene.h"
|
||
#include <QGraphicsItem>
|
||
#include "MyInputMethod.h"
|
||
#include <QTextBlockFormat>
|
||
#include "VerBVersion.h"
|
||
//#define SAVEWHENPREVIEW // 预览时先保存
|
||
#define MDTFLAG 0xff00FF10
|
||
#define QRFLAG 0xff00FF20
|
||
#define BARFLAG 0xff00FF30
|
||
#define MMVAR 1
|
||
|
||
#define MAX_ALLOW_VISICOSITY_OVERFLOW_NUM 120 //连续超那么多次,会被认为粘度故障
|
||
|
||
#define EXPIRY_VARI_RECONISE 0x0000FF
|
||
#define RECICLARNUMBER 21
|
||
|
||
unsigned char test_flag,open_close;
|
||
extern QFile PrintDatafile;
|
||
|
||
MainWindow::MainWindow(QWidget *parent) :
|
||
QWidget(parent),
|
||
ui(new Ui::MainWindow)
|
||
{
|
||
ui->setupUi(this); //不使用布局
|
||
|
||
//ui->textEdit->verticalScrollBar()->setStyleSheet("QScrollBar:vertical { width: 40px; }");
|
||
QFont font = ui->textEdit->font();
|
||
font.setPixelSize(12);
|
||
ui->textEdit->setFont(font);
|
||
previewFlag =0;
|
||
ui->textEditOption->bindText(ui->textEdit);
|
||
ui->textEditOption->bindPicWidget(ui->PicWidgetDisp);
|
||
ui->textEditOption->bindStackWidget(ui->stackedWidgetOption,ui->stackedWidgetText);
|
||
//ui->textEditOption->setl
|
||
#ifdef _2DCODE_
|
||
dlgqrcode = new dlgQrCode();//ui->textEditOption->dlgQrcode ;//
|
||
//barcode = ui->textEditOption->barcode;//new QBarCode();
|
||
barcode = new QBarCode();
|
||
#endif
|
||
//ui->pushButtonEditBarCode->hide();
|
||
|
||
connect(ui->labelFaultResume,SIGNAL(pressed()),this,SLOT(onLabelFaultRusumePressed()));
|
||
|
||
connect(ui->labelStatusHighVoltageFault,SIGNAL(pressed()),this,SLOT(onStatusHighVoltageFault()));
|
||
connect(ui->labelStatusInkLeak,SIGNAL(pressed()),this,SLOT(onStatusInkLeak()));
|
||
connect(ui->labelStatusInkSwint,SIGNAL(pressed()),this,SLOT(onStatusInkSwint()));
|
||
connect(ui->labelStatusInkWaterLevel,SIGNAL(pressed()),this,SLOT(onStatusInkWaterLevel()));
|
||
connect(ui->labelStatusRecycleWarn,SIGNAL(pressed()),this,SLOT(onStatusRecycleWarn()));
|
||
connect(ui->labelStatusSolvLevelWarn,SIGNAL(pressed()),this,SLOT(onStatusSolvLevelWarn()));
|
||
connect(ui->labelStatusViscosityWarn,SIGNAL(pressed()),this,SLOT(onStatusViscosityWarn()));
|
||
connect(ui->labelStatusChargefault,SIGNAL(pressed()),this,SLOT(onStatusChargefault()));
|
||
//connect(ui->labelStatu,SIGNAL(pressed()),this,SLOT(on())); labelStatusChargefault
|
||
//connect(ui->labelStatu,SIGNAL(pressed()),this,SLOT(on()));
|
||
|
||
|
||
connect(ui->textEdit,SIGNAL(textChanged ()),this,SLOT(ontextEdittextChanged()));
|
||
connect(ui->textEdit,SIGNAL(cursorPositionChanged()),this,SLOT(onTextEditCursorPositionChanged()));
|
||
connect(ui->textEdit, SIGNAL(currentCharFormatChanged(QTextCharFormat)), ui->textEditOption, SLOT(currentCharFormatChanged(QTextCharFormat)));
|
||
|
||
timer = new QTimer(this);
|
||
connect(timer, SIGNAL(timeout()), this, SLOT(displayTime()));
|
||
timer->start(1000);
|
||
airPushTimer = new QTimer(this);
|
||
connect(airPushTimer, SIGNAL(timeout()), this, SLOT(airPushingProcess()));
|
||
timerShowItem = new QTimer(this);
|
||
connect(timerShowItem, SIGNAL(timeout()), this, SLOT(onShowAndHideItem()));
|
||
// if(sysPara->para.EditMode==SCENE)
|
||
// {
|
||
// timerShowItem->start(10);
|
||
// }
|
||
|
||
printintFlag = false;
|
||
startPrintingFlag = false;
|
||
|
||
connect(ui->labelProductCnt,SIGNAL(pressed()),this,SLOT(onLabelProductCntPressed()));
|
||
connect(ui->labelTotalProductCnt,SIGNAL(pressed()),this,SLOT(onLabelTotalProductCntPressed()));
|
||
connect(ui->textEditOption->getPushButtonPreview(),SIGNAL(pressed()),this,SLOT(onPushButtonPreviewPressed()));
|
||
|
||
connect(ui->textEditOption,SIGNAL(fileNameChanged(QString)),ui->labelOpenedFileName,SLOT(setText(QString)));
|
||
connect(ui->textEditOption,SIGNAL(fileNameChanged(QString)),this,SLOT(changeTxtMode(QString)));
|
||
|
||
connect(ui->textEditOption,SIGNAL(PicfileNameOpen(QString,bool)),this,SLOT(openPicFIleOpen(QString,bool))); // 由TEXTOPTION界面按键触发
|
||
connect(ui->pushButtonTXTOpen,SIGNAL(clicked()),ui->textEditOption,SLOT( showDlg()));
|
||
connect(ui->pushButtonCNTResetNow,SIGNAL(pressed()),this,SLOT(onPushButtonCNTResetNowPressed()));
|
||
#ifdef _2DCODE_
|
||
connect(ui->pushButtonEditBarCode,SIGNAL(pressed()),this,SLOT(onEditBarCode()));
|
||
connect(ui->pushButtonQREnCode,SIGNAL(pressed()),this,SLOT(onEditQRCode()));
|
||
|
||
connect(ui->textEditOption, SIGNAL(fontSizeChange(int)), barcode, SLOT(setFontSize(int)));
|
||
connect(barcode,SIGNAL(onBarCodeClose()),this,SLOT(onBarCodeClose()));
|
||
connect(dlgqrcode,SIGNAL(onQRCodeCloseNow()),this,SLOT(onQRCodeClose()));
|
||
#endif
|
||
connect(this,SIGNAL(ShowWarnningText(QString,QString)),this,SLOT(ShowWarnningText1(QString,QString)));
|
||
|
||
msgtest = new QMessageBox(this);
|
||
connect(msgtest, SIGNAL(finished(int)), this, SLOT(OnFinished(int)));
|
||
|
||
//QFile file(SYS_ROOT_DIR"UseEn");
|
||
if( Public::ReadLanguageName()!="Chinese")
|
||
{
|
||
ui->pushButtonStartPrint->setIcon(QIcon(":/icon/Estartprint2.png"));
|
||
//ui->pushButtonPausePrint->setIcon(QIcon(":/icon/Epauseprint2.png"));
|
||
ui->pushButtonStopPrint->setIcon(QIcon(":/icon/EstopPrint2.png"));
|
||
if(Public::ReadLanguageName()=="Thai"){
|
||
ui->pushButtonStartPrint->setIcon(QIcon(":/icon/Estartprint3.png"));
|
||
ui->pushButtonStopPrint->setIcon(QIcon(":/icon/EstopPrint3.png"));
|
||
}
|
||
}
|
||
// 立即清零
|
||
#ifdef ENGLISH
|
||
ui->pushButtonStartPrint->setIcon(QIcon(":/icon/Estartprint2.png"));
|
||
ui->pushButtonPausePrint->setIcon(QIcon(":/icon/Epauseprint2.png"));
|
||
ui->pushButtonStopPrint->setIcon(QIcon(":/icon/EstopPrint2.png"));
|
||
#endif
|
||
|
||
#ifndef CLEARCNTNOW
|
||
ui->pushButtonCNTResetNow->hide();
|
||
#endif
|
||
fileChange=true;
|
||
pushButtonFlag = true;
|
||
|
||
if(sysPara)
|
||
{
|
||
sysPara->status.FileChangeRestCntFlag=0;
|
||
}
|
||
|
||
Public::derivePixelSizeFromHeight(12);
|
||
#if 1
|
||
pPicScene = new PicScene(this);
|
||
pPicScene->setSceneRect(QRectF(0, 0, 3200, MAX_PRINT_ROW_NUM));
|
||
//ui->fileSceneViewer->pView->setScene((QGraphicsScene *)pPicScene);
|
||
ui->graphicsView->setScene(pPicScene);
|
||
ui->graphicsView->centerOn(0,0);
|
||
ui->senceEditOption->bindScene(pPicScene, ui->graphicsView, ui->textEdit);
|
||
ui->senceEditOption->bindStackWidget(ui->stackedWidgetOption,ui->stackedWidgetText);
|
||
//connect(ui->senceEditOption,SIGNAL(addPicTextItem()),this,SLOT(onAddPicTextItem()));
|
||
//connect(ui->senceEditOption,SIGNAL(importFile(QString)),this,SLOT(onSceneImport(QString)));
|
||
//connect(ui->senceEditOption,SIGNAL(delItem()),this,SLOT(onDeleteItem()));
|
||
//connect(ui->senceEditOption,SIGNAL(saveScene(QString)),this,SLOT(onSaveScene(QString)));
|
||
//connect(ui->senceEditOption,SIGNAL(openSceneFile(QString)),this,SLOT(onOpenSceneFile(QString)));
|
||
connect(ui->senceEditOption,SIGNAL(generateQRCode(QString)),this,SLOT(onGenerateQRCode(QString)));
|
||
connect(ui->senceEditOption,SIGNAL(previewScene()),this,SLOT(onPreviewScene()));
|
||
//connect(ui->senceEditOption,SIGNAL(editItem()),this,SLOT(onEditItem()));
|
||
//connect(ui->textEditOption,SIGNAL(scenefileOpen(QString)),this,SLOT(onOpenSceneFile(QString)));
|
||
connect(ui->textEditOption,SIGNAL(scenefileOpen(QString,bool)),ui->senceEditOption,SLOT(onFileOpen(QString,bool)));
|
||
connect(this,SIGNAL(scenefileOpen(QString,bool)),ui->senceEditOption,SLOT(onFileOpen(QString,bool)));
|
||
connect(ui->senceEditOption,SIGNAL(editItemMode()),ui->textEditOption,SLOT(onEditItemMode()));
|
||
//connect(ui->textEditOption,SIGNAL(editItemDone()),this,SLOT(onEditItemDone()));
|
||
connect(ui->textEditOption,SIGNAL(editItemDone()),ui->senceEditOption,SLOT(onEditItemDone()));
|
||
|
||
connect(ui->senceEditOption,SIGNAL(fileNameChanged(QString)),ui->labelOpenedFileName,SLOT(setText(QString)));
|
||
connect(ui->senceEditOption,SIGNAL(fileNameChanged(QString)),this,SLOT(changeTxtMode(QString)));
|
||
|
||
// connect(ui->scrollArea->verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(update_scroll()));
|
||
//qDebug()<<"viewer size"<<ui->graphicsView->size();
|
||
//ui->graphicsView->setSizePolicy(QSizePolicy::Fixed);
|
||
#endif
|
||
|
||
// ui->textEditOption->modbus_insert_pic("/home/plg/doc/QR_aa.bmp");
|
||
|
||
#if 0
|
||
qDebug()<<"edit size heigh:"<<ui->stackedWidgetText->size().height()<<"edit size width:"<<ui->stackedWidgetText->size().width();
|
||
qDebug()<<"edit geometry bottomLeft:"<<ui->stackedWidgetText->geometry().bottomLeft();
|
||
qDebug()<<"edit geometry height:"<<ui->stackedWidgetText->geometry().height();
|
||
qDebug()<<"edit geometry x:"<<ui->stackedWidgetText->geometry().x();
|
||
qDebug()<<"edit geometry y:"<<ui->stackedWidgetText->mapToGlobal(ui->stackedWidgetText->pos());
|
||
#endif
|
||
m_2sFlag = false;
|
||
moveToThread(&ShowThead);
|
||
//connect(&ShowThead, SIGNAL(started()), this, SLOT(onShowAndHideItem()),Qt::QueuedConnection);
|
||
//ShowThead.start();
|
||
ui->pushButtonStart->setHidden(true);//屏蔽紧急停机按钮
|
||
// if(PrintDatafile.exists()) PrintDatafile.remove();
|
||
// if(!PrintDatafile.open(QIODevice::WriteOnly)){//怀疑是QIODevice::Truncate 引起参数错误,去掉试试看
|
||
// //QMessageBox::warning(0,"警告",QString("无法打开文件:mac.bin") );
|
||
// }
|
||
}
|
||
|
||
MainWindow::~MainWindow()
|
||
{
|
||
disconnect(&ShowThead, SIGNAL(started()), this, SLOT(onShowAndHideItem()));
|
||
if (ShowThead.isRunning()) {
|
||
ShowThead.quit();
|
||
ShowThead.wait();
|
||
}
|
||
|
||
delete ui;
|
||
delete timer;
|
||
delete pPicScene;
|
||
|
||
}
|
||
|
||
/*显示当前系统时间 */
|
||
void MainWindow::displayTime()
|
||
{
|
||
if(sysPara){
|
||
// sysPara->status.productCnt = 123;
|
||
// sysPara->status.lastProductCnt = sysPara->status.productCnt ; //这会让产品计数显示出来
|
||
// qDebug()<<"sysPara->status.productCnt="<<sysPara->status.productCnt;
|
||
#ifdef BOART_TEMP_DEVICE
|
||
if(1)
|
||
{
|
||
if(sysPara->devOp->GetTemp(BOART_TEMP_DEVICE, (quint8 *)&sysPara->status.boardTemp) !=-1)
|
||
{
|
||
ui->labelCurrentTime->setText(tr("机箱:")+QString().sprintf("%d ",sysPara->status.boardTemp)+"°C"); // 主板温度
|
||
}
|
||
}
|
||
else
|
||
#endif
|
||
{
|
||
ui->labelCurrentTime->setText(tr("机箱:")+QString().sprintf("%d ",sysPara->status.AD_FIXED/4)+"°C"); // 机箱温度
|
||
}
|
||
ui->labDate->setText(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));
|
||
//UpdateDateTimeQRCode(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));
|
||
// ui->pushButtonCNTResetNow->setEnabled( sysPara->para.printTriggerMode != PRINT_TRIGGER_TIME );
|
||
|
||
static bool CleanUPEn=1,preCleanUP=0;
|
||
if(!sysPara->para.isCheckMagnet)
|
||
{
|
||
CleanUPEn = (sysPara->status.currReclaimTankPos<70) && (sysPara->status.statWarn & WARN_STATUS_HDINT);
|
||
}
|
||
else
|
||
{
|
||
CleanUPEn = (sysPara->status.currReclaimTankPos<70) ;
|
||
}
|
||
if(CleanUPEn != preCleanUP){
|
||
ui->pushButtonCleanUP->setEnabled(CleanUPEn);
|
||
}
|
||
preCleanUP=CleanUPEn;
|
||
|
||
//static int delayCount2 = 0;
|
||
if(m_2sFlag)
|
||
{
|
||
//++delayCount2;
|
||
//if(delayCount2 %10 ==5)
|
||
{
|
||
|
||
sysPara->devOp->controlInkValve(!sysPara->devOp->isInkValveOpen()); //控制供墨阀开关
|
||
//setRunStatus(tr("我已关闭供墨阀"));
|
||
}
|
||
|
||
}
|
||
|
||
#ifdef __ADC_INPUT__
|
||
if(sysPara->status.boardTemp >= sysPara->para.FanTemperature)
|
||
{
|
||
//sysPara->devOp->controlFan1(1);
|
||
//sysPara->devOp->controlFan2(1);
|
||
}
|
||
else
|
||
{
|
||
//sysPara->devOp->controlFan1(0);
|
||
//sysPara->devOp->controlFan2(0);
|
||
}
|
||
#endif
|
||
|
||
///////自动设置喷头温度
|
||
// if(sysPara->status.boardTemp <= 20)
|
||
// {
|
||
// sysPara->para.temperature = 38;
|
||
// }
|
||
// else if(sysPara->status.boardTemp > 20 && sysPara->status.boardTemp <26 )
|
||
// {
|
||
// sysPara->para.temperature = 35;
|
||
// }
|
||
// else if(sysPara->status.boardTemp >= 26 && sysPara->status.boardTemp < 30 )
|
||
// {
|
||
// sysPara->para.temperature = 32;
|
||
// }
|
||
// else if(sysPara->status.boardTemp >= 30 )
|
||
// {
|
||
// sysPara->para.temperature = 20;
|
||
// }
|
||
QFile file("/dev/input/event1");
|
||
if(!file.exists())
|
||
{
|
||
QWSServer::setCursorVisible(false);
|
||
}
|
||
else
|
||
{
|
||
QWSServer::setCursorVisible(true);
|
||
}
|
||
}
|
||
}
|
||
|
||
void MainWindow::bindSysPara(SysPara *sysPara){
|
||
this->sysPara = sysPara;
|
||
ui->textEditOption->bindSysPara(sysPara);
|
||
ui->widgetPrintTextDisplay->bindSysPara(sysPara);
|
||
#ifdef _2DCODE_
|
||
barcode->bindSysPara(sysPara);
|
||
dlgqrcode->setSysPara(sysPara);
|
||
dlgqrcode->barCodeFlag = this->sysPara->para.qrOption.barCodeFlag;
|
||
dlgqrcode->SetOption((qrOption_t*)&sysPara->para.qrOption);
|
||
#endif
|
||
#ifdef PICSCENE
|
||
ui->senceEditOption->bindSysPara(sysPara);
|
||
#endif
|
||
}
|
||
|
||
void MainWindow::updateSysParaToUI(){
|
||
if(sysPara){
|
||
//nothing here
|
||
ui->textEditOption->updateSysParaToUI();
|
||
}
|
||
}
|
||
|
||
void MainWindow::applyUIPara(){
|
||
if(sysPara){
|
||
|
||
}
|
||
}
|
||
|
||
void MainWindow::CheckStatus(int Flag){
|
||
if(sysPara){
|
||
static unsigned int lastProductCnt=0;
|
||
int AutoCount=0;
|
||
int bcAutoCount=0;
|
||
static int lastMinutes = 0;
|
||
//QDate curDate=QDate::currentDate();
|
||
int currMinutes = QDateTime::currentDateTime().time().minute();
|
||
int usbDate = sysPara->status.ExpiryVarNum || sysPara->status.CurrDateVariNum ||sysPara->status.classVariNum;
|
||
if(usbDate)
|
||
{
|
||
//qDebug()<<"CheckStatus";
|
||
bool needSendPrintData=false;
|
||
//if(sysPara->print.CurDateVar.endRowPos && (sysPara->print.CurDateVar.day != curDate.day()))
|
||
if (sysPara->status.ExpiryVarNum && (lastMinutes != currMinutes))
|
||
{
|
||
ExpiryDotUpdate(1);
|
||
needSendPrintData = true;
|
||
}
|
||
//if(sysPara->print.ExpiryVar.endRowPos && (sysPara->para.ExpiryDay != r_ExpiryDay))
|
||
if(sysPara->status.CurrDateVariNum && (lastMinutes != currMinutes))
|
||
{
|
||
ExpiryDotUpdate(2);
|
||
needSendPrintData = true;
|
||
}
|
||
if(sysPara->status.classVariNum && (lastMinutes != currMinutes))
|
||
{
|
||
ExpiryDotUpdate(3);
|
||
needSendPrintData = true;
|
||
}
|
||
lastMinutes = currMinutes;
|
||
//sysPara->print.CurDateVar.day = curDate.day();
|
||
if(needSendPrintData)
|
||
{
|
||
sysPara->status.ExpiryDispUpdate=10;
|
||
SendPrintDataToFpga(0);
|
||
}
|
||
//if(ui->stackedWidgetText->currentWidget()==ui->pagePrintTextDisplay)
|
||
// ui->widgetPrintTextDisplay->update();
|
||
//sysPara->status.ExpiryDispUpdate=1;
|
||
|
||
}
|
||
if(sysPara->status.productCnt != lastProductCnt)
|
||
//if( sysPara->para.calandar_and_dat.cnt1CurrValue != sysPara->para.qrOption.counter )
|
||
{
|
||
lastProductCnt = sysPara->status.productCnt;
|
||
//sysPara->para.qrOption.counter = sysPara->status.productCnt ;
|
||
//sysPara->para.qrOption.counter ++;//= sysPara->para.calandar_and_dat.cnt1CurrValue;
|
||
sysPara->para.qrOption.counter +=sysPara->para.qrOption.CntInc;
|
||
//if(sysPara->para.qrOption.counter% 60) sysPara->para.qrOption.counter+=40;
|
||
|
||
AutoCount = (sysPara->status.QRvariNum?1:0);
|
||
//bcAutoCount = (sysPara->status.BCvariNum?1:0);
|
||
#ifdef MYARMTEST
|
||
qDebug()<<"CheckStatus:"<<sysPara->para.qrOption.counter<<AutoCount;
|
||
#endif
|
||
//qDebug()<<"CheckStatus :"<<sysPara->status.productCnt<<sysPara->para.qrOption.counter <<sysPara->status.QRvariNum;
|
||
}
|
||
//else qDebug()<<"P:"<<lastProductCnt<<sysPara->status.productCnt;
|
||
|
||
if( sysPara->para.qrOption.RecFromHost || AutoCount )
|
||
{
|
||
sysPara->para.qrOption.RecFromHost=0;
|
||
sysPara->para.qrOption.type = sysPara->print.QRvars[0].type;
|
||
sysPara->para.qrOption.height = sysPara->print.QRvars[0].height;
|
||
sysPara->para.qrOption.width = sysPara->print.QRvars[0].width;
|
||
|
||
if(ui->stackedWidgetText->currentWidget()==ui->pagePrintTextDisplay)
|
||
{
|
||
onUpdateDispQRCode(1); // 更新二维码显示
|
||
//qDebug()<<"PN:"<<lastProductCnt;
|
||
}
|
||
else { onUpdateDispQRCode(0);
|
||
//qDebug()<<"P0:"<<lastProductCnt;
|
||
}
|
||
|
||
if(AutoCount)
|
||
{
|
||
SendPrintDataToFpga(0);
|
||
}
|
||
|
||
AutoCount =0;
|
||
}
|
||
|
||
if(Flag){//pulse_300ms
|
||
sysPara->status.LightUpCnt ++ ;
|
||
if((sysPara->status.LightUpCnt%3) == 0){
|
||
if(printintFlag && startPrintingFlag && !sysPara->status.RedLightOnFlag && !sysPara->status.YellowLightOnFlag){
|
||
//if(printintFlag && startPrintingFlag && !sysPara->status.RedLightOnFlag){ //打印状态指示灯
|
||
sysPara->status.GreenLightOnFlag = true;
|
||
}
|
||
else{
|
||
sysPara->status.GreenLightOnFlag = false;
|
||
sysPara->devOp->controlGreenLight(false);
|
||
//sysPara->devOp->controlGreenLight(true);
|
||
}
|
||
if(sysPara->status.GreenLightOnFlag){ //报警会时有时无
|
||
if(!sysPara->para.isCheckPrintLight)
|
||
{
|
||
sysPara->devOp->controlGreenLight(!sysPara->devOp->isGreenLightEnable());
|
||
}
|
||
else
|
||
{
|
||
sysPara->devOp->controlGreenLight(true);
|
||
}
|
||
}
|
||
}
|
||
if(sysPara->status.circleProductCnt && (sysPara->status.productCnt >= sysPara->para.cnt1EndValue))
|
||
{
|
||
if(sysPara)
|
||
{
|
||
sysPara->devOp->clearProductCnt(3 | 0x10);// [3]总产品计数器清零FPGA
|
||
sysPara->para.totalProductCnt = 0;
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
|
||
void MainWindow::RefreshStatusLight(){
|
||
if(sysPara){
|
||
|
||
#ifdef DEBUG1
|
||
sysPara->status.statWarn =0| WARN_STATUS_HDINT;//sysPara->status.statWarn;
|
||
enablePrintButton(true);
|
||
#endif
|
||
#ifndef SYS_LINUX
|
||
sysPara->status.statWarn =0;//sysPara->status.statWarn;
|
||
enablePrintButton(true);
|
||
#endif
|
||
|
||
|
||
//ui->pushButtonCleanUP->setEnabled( (sysPara->status.currReclaimTankPos<70) && (sysPara->status.statWarn & WARN_STATUS_HDINT)); // sysPara->status.currReclaimTankPos
|
||
#ifdef __HV_FOR_WANG_DEBUG__ /* 盖上喷头盖,启动高压 */
|
||
static int hdint = 0;
|
||
static int reclainTankReachEnd = 0;
|
||
//int curr_swit = !(sysPara->status.statWarn & WARN_STATUS_INK_SWINT);// curr_swit墨线开关 1->开, 0->关
|
||
if((!(sysPara->status.statWarn & WARN_STATUS_HDINT)) && (hdint == 0)) { //喷头盖由开变关
|
||
if (sysPara->status.reclainTankReachEnd) {
|
||
#if 0
|
||
int actHvAmp = sysPara->para.HighVoltageAmplitude;
|
||
float tempHvAmp;// = sysPara->para.HighVoltageAmplitude * 1.73;
|
||
if(sysPara->para.HighVoltageAmplitude == 0) {
|
||
tempHvAmp = 0;
|
||
}
|
||
else if(sysPara->para.HighVoltageAmplitude == 1) {
|
||
tempHvAmp = 63.5;
|
||
}
|
||
else {
|
||
tempHvAmp = 63.5 + (sysPara->para.HighVoltageAmplitude - 1) * 0.51;
|
||
}
|
||
sysPara->para.HighVoltageAmplitude = (unsigned char)tempHvAmp;
|
||
#endif
|
||
sysPara->devOp->highVoltageCtrl(sysPara->para.HighVoltageAmplitude);
|
||
#if 0
|
||
sysPara->para.HighVoltageAmplitude = actHvAmp;
|
||
#endif
|
||
}
|
||
}
|
||
hdint = !(sysPara->status.statWarn & WARN_STATUS_HDINT);
|
||
|
||
if(sysPara->status.reclainTankReachEnd && reclainTankReachEnd == 0) { //开回收槽到底
|
||
if (!(sysPara->status.statWarn & WARN_STATUS_HDINT)) { //喷头盖是关闭的状态
|
||
#if 0
|
||
int actHvAmp = sysPara->para.HighVoltageAmplitude;
|
||
float tempHvAmp;// = sysPara->para.HighVoltageAmplitude * 1.73;
|
||
if(sysPara->para.HighVoltageAmplitude == 0) {
|
||
tempHvAmp = 0;
|
||
}
|
||
else if(sysPara->para.HighVoltageAmplitude == 1) {
|
||
tempHvAmp = 63.5;
|
||
}
|
||
else {
|
||
tempHvAmp = 63.5 + (sysPara->para.HighVoltageAmplitude - 1) * 0.51;
|
||
}
|
||
sysPara->para.HighVoltageAmplitude = (unsigned char)tempHvAmp;
|
||
#endif
|
||
sysPara->devOp->highVoltageCtrl(sysPara->para.HighVoltageAmplitude);
|
||
#if 0
|
||
sysPara->para.HighVoltageAmplitude = actHvAmp;
|
||
#endif
|
||
}
|
||
}
|
||
reclainTankReachEnd = sysPara->status.reclainTankReachEnd;
|
||
#endif
|
||
|
||
if(sysPara->status.lastStatWarn != sysPara->status.statWarn){
|
||
if(!(sysPara->status.statWarn & WARN_STATUS_INK_SWINT)){//墨线开关
|
||
ui->labelStatusInkSwint->setPixmap(QPixmap(QString::fromUtf8(":/image/ALARMGreen.PNG")));
|
||
}
|
||
else {
|
||
ui->labelStatusInkSwint->setPixmap(QPixmap(QString::fromUtf8(":/image/ALARMRed.PNG")));
|
||
}
|
||
|
||
if(!(sysPara->status.statWarn & WARN_STATUS_HDINT)){//喷头盖
|
||
ui->labelStatusHDINT->setPixmap(QPixmap(QString::fromUtf8(":/image/ALARMGreen.PNG")));
|
||
|
||
if(printintFlag && startPrintingFlag)
|
||
setRunStatus(tr("正在喷印..............."));
|
||
}
|
||
else {
|
||
ui->labelStatusHDINT->setPixmap(QPixmap(QString::fromUtf8(":/image/ALARMRed.PNG")));
|
||
if(printintFlag && startPrintingFlag)
|
||
setRunStatus(tr("喷头盖开, 喷印无法正常进行!!!"));
|
||
}
|
||
|
||
|
||
if(!(sysPara->status.statWarn & WARN_STATUS_SUMP_WARN)){ //液位渗漏,高电平警告
|
||
ui->labelStatusInkLeak->setPixmap(QPixmap(QString::fromUtf8(":/image/ALARMGreen.PNG")));
|
||
}
|
||
else {
|
||
ui->labelStatusInkLeak->setPixmap(QPixmap(QString::fromUtf8(":/image/ALARMRed.PNG")));
|
||
strTitle = tr("墨水缸满报警");
|
||
if(sysPara->devOp->isMixValveOpen()) {
|
||
sysPara->devOp->controlMixValve(false); //关掉混合阀
|
||
}
|
||
}
|
||
if(!(sysPara->status.statWarn & WARN_STATUS_INK_WARN)){
|
||
ui->labelStatusInkWaterLevel->setPixmap(QPixmap(QString::fromUtf8(":/image/ALARMGreen.PNG")));
|
||
}
|
||
else {
|
||
ui->labelStatusInkWaterLevel->setPixmap(QPixmap(QString::fromUtf8(":/image/ALARMRed.PNG")));
|
||
strTitle = tr("墨水液位报警");
|
||
|
||
|
||
}
|
||
if(!(sysPara->status.statWarn & WARN_STATUS_SOLV_WARN)){
|
||
ui->labelStatusSolvLevelWarn->setPixmap(QPixmap(QString::fromUtf8(":/image/ALARMGreen.PNG")));
|
||
}
|
||
else {
|
||
ui->labelStatusSolvLevelWarn->setPixmap(QPixmap(QString::fromUtf8(":/image/ALARMRed.PNG")));
|
||
strTitle = tr("溶剂液位报警");
|
||
|
||
}
|
||
|
||
if(!(sysPara->status.statWarn & WARN_STATUS_RECYCLE_FAULT) ){
|
||
ui->labelStatusRecycleWarn->setPixmap(QPixmap(QString::fromUtf8(":/image/ALARMGreen.PNG")));
|
||
|
||
}
|
||
else {
|
||
ui->labelStatusRecycleWarn->setPixmap(QPixmap(QString::fromUtf8(":/image/ALARMRed.PNG")));
|
||
|
||
}
|
||
|
||
//static int HVfaultCnt=0;
|
||
if(!(sysPara->status.statWarn & WARN_STATUS_POWER_MON)){
|
||
if(!sysPara->status.lastHighVoltageFault)
|
||
{
|
||
ui->labelStatusHighVoltageFault->setPixmap(QPixmap(QString::fromUtf8(":/image/ALARMGreen.PNG")));
|
||
}
|
||
// HVfaultCnt=0;
|
||
//sysPara->status.HVFaultCloseEn=0;
|
||
}
|
||
else {
|
||
ui->labelStatusHighVoltageFault->setPixmap(QPixmap(QString::fromUtf8(":/image/ALARMRed.PNG")));
|
||
#ifndef DEBUG1
|
||
if(startPrintingFlag && printintFlag){ //已经在打印,则暂停打印 2013-9-15高压报警停止充电
|
||
on_pushButtonPausePrint_pressed();
|
||
LogInfo::setRunStatusText(tr("高压故障,暂停打印"));
|
||
setRunStatus(tr("高压故障,暂停打印"));
|
||
|
||
strTitle = tr("高压故障,暂停打印.");
|
||
|
||
sysPara->status.lastHighVoltageFault = true;
|
||
}
|
||
|
||
|
||
#endif
|
||
//if(HVfaultCnt<9)HVfaultCnt++;
|
||
//else{
|
||
if((sysPara->status.currReclaimTankPos != 0) && sysPara->para.HVFaultCloseEn )
|
||
{
|
||
//HVfaultCnt++;
|
||
// 高压故障关回收槽
|
||
if(sysPara->status.HVFaultCloseEn==0){
|
||
sysPara->status.reclaimTankBlockedAppending=0;
|
||
sysPara->status.reclaimCloseCnt=100;
|
||
on_pushButtonReclaimTankClose_pressed();
|
||
sysPara->status.reclaimTankBlockedAppending=1;
|
||
LogInfo::setRunStatusText(tr("高压故障,关回收槽"));
|
||
setRunStatus(tr("高压故障,关回收槽和墨线"));
|
||
}
|
||
sysPara->status.HVFaultCloseEn=1;
|
||
}
|
||
//}
|
||
}
|
||
|
||
}
|
||
|
||
|
||
//if(sysPara->status.viscosityDelayCnt)
|
||
//ui->label_3->setText( QString::number(sysPara->status.viscosityDelayCnt/100,10) );//labViscoCnt
|
||
|
||
/*-----------------------------------------------------------------------------------*/
|
||
sysPara->status.lastStatWarn = sysPara->status.statWarn;
|
||
if(sysPara->status.lastViscosityFault != sysPara->status.viscosityFault){
|
||
if(sysPara->status.viscosityFault==0){
|
||
ui->labelStatusViscosityWarn->setPixmap(QPixmap(QString::fromUtf8(":/image/ALARMGreen.PNG")));
|
||
}
|
||
else {
|
||
if(sysPara->status.viscosityFault==1){
|
||
|
||
ui->labelStatusViscosityWarn->setPixmap(QPixmap(QString::fromUtf8(":/image/ALARMRed.PNG")));
|
||
|
||
}
|
||
else if(sysPara->status.viscosityFault==2) {
|
||
ui->labelStatusViscosityWarn->setPixmap(QPixmap(QString::fromUtf8(":/image/ALARMYellow.PNG")));
|
||
|
||
}
|
||
}
|
||
}
|
||
sysPara->status.lastViscosityFault = sysPara->status.viscosityFault;
|
||
/*-----------------------------------------------------------------------------------*/
|
||
//updatePhaseIndicatorLight(); //此部分工作交给InkJetPrinter的来做了
|
||
|
||
|
||
if(!(sysPara->status.statWarn & WARN_STATUS_RECYCLE_FAULT)){ //20140211 nie
|
||
if(sysPara->status.RecycleWarnCnt)
|
||
ui->labelStatusRecycleWarn->setPixmap(QPixmap(QString::fromUtf8(":/image/ALARMGreen.PNG")));
|
||
sysPara->status.RecycleWarnCnt = 0;
|
||
sysPara->status.lastRecycleWarn = 0;
|
||
}
|
||
#ifdef RETANKACK
|
||
else {
|
||
if(sysPara->status.RecycleWarnCnt==0) ui->labelStatusRecycleWarn->setPixmap(QPixmap(QString::fromUtf8(":/image/ALARMGreen.PNG")));
|
||
if(( sysPara->status.currReclaimTankPos/10 < sysPara->para.reclaimTankTime*0.85 ) | (sysPara->status.statWarn & WARN_STATUS_HDINT) )
|
||
sysPara->status.RecycleWarnCnt=0;
|
||
if(!sysPara->status.lastRecycleWarn && !sysPara->status.isPumpValveControledByHand && sysPara->status.selfCheckDone){
|
||
if(sysPara->para.RecycleWarnAction && startPrintingFlag && printintFlag )
|
||
on_pushButtonStopPrint_pressed();
|
||
if(sysPara->status.RecycleWarnCnt > 10)
|
||
ui->labelStatusRecycleWarn->setPixmap(QPixmap(QString::fromUtf8(":/image/ALARMRed.PNG")));
|
||
|
||
if(sysPara->status.RecycleWarnCnt > RECYCLE_WARN_DELAY){
|
||
ui->labelStatusRecycleWarn->setPixmap(QPixmap(QString::fromUtf8(":/image/ALARMRed.PNG")));
|
||
if(sysPara->para.RecycleWarnAction){
|
||
sysPara->status.lastRecycleWarn = 1;
|
||
if((sysPara->status.currReclaimTankPos != 0) && !sysPara->devOp->isReclaimTankCloseEnable()){
|
||
on_pushButtonReclaimTankClose_pressed();
|
||
LogInfo::setRunStatusText(tr("回收故障,关闭回收槽,关墨线"));
|
||
setRunStatus(tr("回收故障,关闭回收槽,关墨线"));
|
||
//ui->labelStatusInkSwint->setPixmap(QPixmap(QString::fromUtf8(":/image/ALARMRed.PNG")));
|
||
|
||
}
|
||
}
|
||
}
|
||
else{
|
||
sysPara->status.RecycleWarnCnt ++ ;
|
||
}
|
||
//
|
||
}
|
||
else {
|
||
//sysPara->status.RecycleWarnCnt=0;
|
||
}
|
||
}
|
||
#else
|
||
else {
|
||
if(!sysPara->status.lastRecycleWarn && !sysPara->status.isPumpValveControledByHand && sysPara->status.selfCheckDone)
|
||
{
|
||
if(sysPara->status.RecycleWarnCnt > RECYCLE_WARN_DELAY)
|
||
{
|
||
sysPara->status.lastRecycleWarn = RECYCLE_WARN_DELAY;
|
||
ui->labelStatusRecycleWarn->setPixmap(QPixmap(QString::fromUtf8(":/image/ALARMRed.PNG")));
|
||
sysPara->status.reclaimCloseCnt=100;
|
||
if(sysPara->para.RecycleWarnAction)
|
||
{
|
||
if((sysPara->status.currReclaimTankPos != 0) && !sysPara->devOp->isReclaimTankCloseEnable()){
|
||
on_pushButtonStopPrint_pressed();
|
||
on_pushButtonReclaimTankClose_pressed();
|
||
LogInfo::setRunStatusText(tr("回收故障,关闭回收槽,关墨线"));
|
||
setRunStatus(tr("回收故障,关闭回收槽,关墨线"));
|
||
//ui->labelStatusInkSwint->setPixmap(QPixmap(QString::fromUtf8(":/image/ALARMRed.PNG")));
|
||
|
||
|
||
}
|
||
}
|
||
else setRunStatus(tr("回收故障."));
|
||
|
||
}
|
||
else
|
||
{
|
||
sysPara->status.RecycleWarnCnt ++ ;
|
||
ui->labelStatusRecycleWarn->setPixmap(QPixmap(QString::fromUtf8(":/image/ALARMYellow.PNG")));
|
||
if(sysPara->status.RecycleWarnCnt%10==9)
|
||
LogInfo::setRunStatusText(tr("回收异常,墨线可能偏离.(%1)").arg(sysPara->status.RecycleWarnCnt));
|
||
}
|
||
}
|
||
else if(sysPara->status.lastRecycleWarn)sysPara->status.lastRecycleWarn--;
|
||
}
|
||
#endif
|
||
|
||
#ifdef MIMA
|
||
if(sysPara->status.WorkTimeOut) {
|
||
|
||
if( printintFlag) on_pushButtonStopPrint_pressed();
|
||
else sysPara->devOp->printCtrl( PRINT_CTRL_STOP);
|
||
setRunStatus(tr("维护时间已到,喷码机停止工作!"));
|
||
}
|
||
#endif
|
||
//ui->labelCurrentTime->setText( QString().sprintf("c:%d,s:%d",sysPara->status.RecycleWarnCnt,sysPara->status.reclaimTankstatus) );
|
||
/*-----------------------------------------------------------------------------------*/
|
||
|
||
// sysPara->status.LightUpCnt ++ ;
|
||
// if((sysPara->status.LightUpCnt%3) == 0){
|
||
// if(printintFlag && startPrintingFlag && !sysPara->status.RedLightOnFlag && !sysPara->status.YellowLightOnFlag){ //打印状态指示灯
|
||
// sysPara->status.GreenLightOnFlag = true;
|
||
// }
|
||
// else{
|
||
// sysPara->status.GreenLightOnFlag = false;
|
||
// sysPara->devOp->controlGreenLight(false);
|
||
// }
|
||
// if(sysPara->status.GreenLightOnFlag){ //报警会时有时无
|
||
// sysPara->devOp->controlGreenLight(!sysPara->devOp->isGreenLightEnable());
|
||
// }
|
||
// }
|
||
|
||
|
||
if(ui->labelRunStatus->text().length()<4){
|
||
if(startPrintingFlag ){
|
||
if(printintFlag)
|
||
setRunStatus(tr("正在喷印..............."));
|
||
else
|
||
setRunStatus(tr("暂停喷印..............."));
|
||
}
|
||
}
|
||
|
||
// 20160620 新增主界面显示:压力,粘度,隔膜位置,晶振电压数,相位
|
||
|
||
|
||
//ui->labPress->setText(QString("%1").arg(sysPara->status.PRESSURE));
|
||
//ui->labViso->setText(QString("%1").arg(sysPara->status.viscosity) );
|
||
//ui->labPosition->setText(QString("%1").arg(sysPara->status.SEPTAL_POSITION));
|
||
//ui->labOscVol->setText(QString("%1").arg(sysPara->para.oscillatorVoltage) );
|
||
|
||
ui->labPress->setText(QString("%1/%2").arg(sysPara->status.PRESSURE).arg(sysPara->para.pressure));
|
||
ui->labViso->setText(QString("%1/%2").arg(sysPara->status.viscosity).arg(sysPara->para.viscosity) );
|
||
if(sysPara->para.gearPumpEnable)
|
||
{
|
||
ui->labPosition->setText(QString("%1").arg(sysPara->status.gearPumpRunSpeed));
|
||
}
|
||
else
|
||
{
|
||
ui->labPosition->setText(QString("%1/%2").arg(sysPara->status.SEPTAL_POSITION).arg(sysPara->para.septalPostion) );
|
||
}
|
||
//ui->labOscVol->setText(QString("%1").arg(sysPara->para.oscillatorVoltage) );
|
||
ui->labOscVol->setText(QString::number(sysPara->status.HV_DETOUT) + "/" + QString::number(sysPara->para.maxHighVoltageDAC));
|
||
//ui->labOscVol->setText(QString::number(sysPara->status.HV_DETOUT) + "/" + "600");
|
||
|
||
|
||
}
|
||
}
|
||
|
||
|
||
bool MainWindow::updatePhaseIndicatorLight(){
|
||
|
||
if(sysPara<0) return 0;
|
||
|
||
if(dlgMyWarringShowDlyCnt)dlgMyWarringShowDlyCnt--;
|
||
if(dlgMyWarringShowDlyCnt==1) dlgMyWarring.hide();
|
||
|
||
/*------------------------------------------喷头盖未关或回收槽未全部打开的时候不报相位故障-------------------------------------------------*/
|
||
if((!sysPara->status.flight_tm_error && !sysPara->status.detect_phase_error) || (sysPara->status.statWarn & WARN_STATUS_HDINT) || !sysPara->status.reclainTankReachEnd){
|
||
//故障后必须等手动按故障恢复才会继续
|
||
if(!sysPara->para.suspendAfterPhaseFault && !sysPara->para.powerOffAfterPhaseFault){
|
||
if(sysPara->status.lastPhaseFault){
|
||
sysPara->status.lastPhaseFault = 0;
|
||
ui->labelStatusChargefault->setPixmap(QPixmap(QString::fromUtf8(":/image/ALARMGreen.PNG")));
|
||
}
|
||
}
|
||
sysPara->status.phaseErrorCnt = 0;
|
||
}
|
||
else {
|
||
if(sysPara->status.phaseErrorCnt < 10)
|
||
sysPara->status.phaseErrorCnt ++ ;
|
||
else {
|
||
if(!sysPara->status.lastPhaseFault){
|
||
ui->labelStatusChargefault->setPixmap(QPixmap(QString::fromUtf8(":/image/ALARMRed.PNG")));
|
||
sysPara->status.lastPhaseFault = 1;
|
||
if(sysPara->status.flight_tm_error)
|
||
{
|
||
LogInfo::setRunStatusText(tr("相位故障:飞行时间错误!"));
|
||
}
|
||
if(sysPara->status.detect_phase_error)
|
||
{
|
||
LogInfo::setRunStatusText(tr("相位故障:相位检测错误!"));
|
||
}
|
||
|
||
}
|
||
if(sysPara->para.powerOffAfterPhaseFault ){
|
||
if(!sysPara->status.powerOffAfterPhaseFaultAppending){
|
||
sysPara->status.powerOffAfterPhaseFaultAppending = 1;
|
||
_on_pushButtonPowerOff_pressed(false);
|
||
LogInfo::setRunStatusText(tr("相位故障,准备关机"));
|
||
setRunStatus(tr("相位故障,准备关机"));
|
||
strTitle = tr("相位故障,准备关机");
|
||
|
||
|
||
}
|
||
}
|
||
else if(sysPara->para.suspendAfterPhaseFault){
|
||
if(sysPara->para.stopCounterMeterAfterFault){
|
||
if(startPrintingFlag && printintFlag){ //已经在打印,则暂停打印
|
||
on_pushButtonPausePrint_pressed();
|
||
LogInfo::setRunStatusText(tr("相位故障,暂停打印"));
|
||
setRunStatus(tr("相位故障,暂停打印"));
|
||
strTitle = tr("相位故障,暂停打印");
|
||
|
||
}
|
||
}
|
||
else if(!sysPara->status.DACDisable){
|
||
sysPara->devOp->printCtrl(PRINT_CTRL_DAC_DISABLE);
|
||
sysPara->status.DACDisable = true;
|
||
LogInfo::setRunStatusText(tr("相位故障,屏蔽DAC输出"));
|
||
setRunStatus(tr("相位故障,屏蔽充电"));
|
||
strTitle = tr("相位故障,屏蔽充电");
|
||
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
return sysPara->status.lastPhaseFault;
|
||
}
|
||
|
||
void MainWindow::updateSysStatusToUI(){
|
||
|
||
if(sysPara){
|
||
if(sysPara->para.gearPumpEnable)
|
||
{
|
||
ui->label_11->setText(tr("齿轮泵转速"));
|
||
}
|
||
else
|
||
{
|
||
ui->label_11->setText(tr("隔膜位置"));
|
||
}
|
||
RefreshStatusLight();
|
||
if(sysPara->status.lastProductCnt != sysPara->status.productCnt){ //产品计数
|
||
ui->labelProductCnt->setText(QString::number(sysPara->status.productCnt));
|
||
updateTotalCnt(0);
|
||
/* qDebug()<<"total_syn_pulse_num" //<<QString::number(sysPara->status.productCnt)
|
||
<< QString::number(sysPara->status.calandar_and_dat.cnt1CurrValue,16)
|
||
<< (unsigned int)(sysPara->status.total_syn_pulse_num)
|
||
<< (unsigned int)(sysPara->status.volGap_pulse_num); */
|
||
|
||
|
||
}
|
||
if(sysPara->status.ExpiryDispUpdate >0 )
|
||
{
|
||
sysPara->status.ExpiryDispUpdate--;
|
||
ui->widgetPrintTextDisplay->update();// 2018.5.25
|
||
}
|
||
if(sysPara->para.alterPrint.enable==1) ui->labelXFileName->setText (tr("交替打印"));
|
||
else if(sysPara->para.alterPrint.enable==2) ui->labelXFileName->setText (tr("电眼交替"));
|
||
else ui->labelXFileName->setText ("");
|
||
/*--------------------------------------------------------------------------*/
|
||
//if(sysPara->para.printTriggerMode == PRINT_TRIGGER_SYNCHRONIZER && printintFlag){ //同步器速度
|
||
if((
|
||
(sysPara->para.printTriggerMode == PRINT_TRIGGER_SYNCHRONIZER)
|
||
||(((sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL)
|
||
||(sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE)
|
||
)&& sysPara->para.eleEyeTriggerSynPrintEn)
|
||
)
|
||
)//&&printintFlag
|
||
{
|
||
if(sysPara->para.synPulseNumPerMm) {
|
||
|
||
unsigned int tmp = ((unsigned int) sysPara->status.synPulseCntPer1s ) & 0xffffff;
|
||
unsigned int mm = tmp /sysPara->para.synPulseNumPerMm * 60; // 1min总脉冲/毫米脉冲数 = 1min走过的距离mm数
|
||
int dotNum = sysPara->para.divideRatio?(FPGA_SYS_HZ/(sysPara->para.divideRatio*2)):0;// 1s时间内墨点数 (即晶振频率 64000)
|
||
int colNum = sysPara->para.dotNumPerCol?dotNum/sysPara->para.dotNumPerCol:0; // 第列可用墨点数 = 1s时间内墨点数/ 列需要墨点数
|
||
int pulseNum = colNum*sysPara->para.synNumPerCol/(1<<8); //synNumPerCol是被放大后的值
|
||
|
||
int maxMM = 0;
|
||
if(!sysPara->para.charWidthSetEnable)
|
||
{
|
||
if( (sysPara->status.currPrintRow != 0)
|
||
&& (sysPara->para.printTriggerMode == PRINT_TRIGGER_SYNCHRONIZER)
|
||
/*&& (sysPara->para.currPrintMode == FAST_PRINT || sysPara->para.currPrintMode == STANDARD_PRINT) */){
|
||
maxMM = calculateMaxSpeed(pulseNum);
|
||
maxMM = maxMM *60;
|
||
if(sysPara->para.alterPrint.enable)
|
||
{
|
||
maxMM = maxMM * 2;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
maxMM = (pulseNum/sysPara->para.synPulseNumPerMm) * 60;// 列的最大间距
|
||
// qDebug()<< "[Info] OLD COUNT mm" << maxMM;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
maxMM = (pulseNum/sysPara->para.synPulseNumPerMm) * 60;// 列的最大间距
|
||
}
|
||
|
||
#ifdef DEBUG2
|
||
qDebug()<<"mm"<<"dotNum"<<"colNum"<<"pulseNum"<<"maxMM"<<"synNPCol"<<"divFre";
|
||
qDebug()<<mm<<dotNum<<colNum<<pulseNum<<maxMM<<sysPara->para.synNumPerCol<<sysPara->para.divideRatio<<sysPara->para.dotNumPerCol;
|
||
#endif
|
||
ui->labelSynRate->setText(tr("%1.%2[%3.%4]米/分").arg(mm/1000).arg(mm%1000,3,10,QLatin1Char('0'))
|
||
.arg(maxMM/1000).arg(maxMM%1000,3,10,QLatin1Char('0')));
|
||
}
|
||
else
|
||
ui->labelSynRate->setText("");
|
||
sysPara->status.lastSynPulseCntPer1s = sysPara->status.synPulseCntPer1s;
|
||
}
|
||
else
|
||
ui->labelSynRate->setText("");
|
||
|
||
/*--------------------------------------------------------------------------*/
|
||
if(sysPara->status.lastSynColDelay != sysPara->status.synColDelay){
|
||
// if(sysPara->para.printTriggerMode == PRINT_TRIGGER_SYNCHRONIZER)
|
||
if((sysPara->para.printTriggerMode == PRINT_TRIGGER_SYNCHRONIZER)
|
||
||((sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL
|
||
||sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE)
|
||
&& sysPara->para.eleEyeTriggerSynPrintEn))
|
||
ui->labelSynColDelay->setText(tr("列延时:%1点").arg(sysPara->status.synColDelay));
|
||
sysPara->status.lastSynColDelay = sysPara->status.synColDelay;
|
||
}
|
||
/*--------------------------------------------------------------------------*/
|
||
if(!sysPara->status.fpgaVersionNum && !sysPara->status.lostCommuFlag){ //因为进入系统就会进主界面,马上就会将版本号读出
|
||
sysPara->devOp->readFpgaVersionNum();
|
||
if(sysPara->status.fpgaVersionNum){
|
||
sysPara->devOp->writeFpgaPrintPara(true);
|
||
}
|
||
ui->labelFpgaVersionNum->setText(QString("%1/F%2.%3.%4").arg(SOFTWARE_VER_NUM).arg(0).arg(0).arg(0) );
|
||
}
|
||
else{
|
||
QString ARM_Version;
|
||
ARM_Version.sprintf("%d.%d.%02dS", UP_PRINTER_MAJOR_VER, UP_PRINTER_MINOR_VER,UP_PRINTER_RIVISION_VER);
|
||
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) );
|
||
}
|
||
bool found_CNT1 = false;
|
||
bool found_CNT2 = false;
|
||
bool found_CNT3 = false;
|
||
/*--------------------------------------------------------------------------*/
|
||
if(sysPara->status.variNum && (ui->stackedWidgetText->currentWidget() == ui->pagePrintTextDisplay)){
|
||
|
||
bool updatePrintTextDisplayFlag = false;
|
||
|
||
for(int i = 0; i < sysPara->status.variNum; i++){
|
||
int val = 0;
|
||
switch( Public::getType(sysPara->status.vars[i].type))
|
||
{
|
||
case CALANDAR_YEAR:val = sysPara->status.calandar_and_dat.year;break;
|
||
case CALANDAR_MONTH:val = sysPara->status.calandar_and_dat.month;break;
|
||
case CALANDAR_DAY:val = sysPara->status.calandar_and_dat.day;break;
|
||
//case CALANDAR_WEEK:val = sysPara->status.calandar_and_dat.week;break;
|
||
|
||
case CALANDAR_WEEK:val = sysPara->status.calandar_and_dat.week;break;
|
||
case CALANDAR_HOUR:val = sysPara->status.calandar_and_dat.hour;break;
|
||
case CALANDAR_MINUTE:val = sysPara->status.calandar_and_dat.minute;break;
|
||
case CALANDAR_SECOND:val = sysPara->status.calandar_and_dat.second;break;
|
||
|
||
#ifdef DEBUG_CNT
|
||
case CALANDAR_CNT1:val = QString::number(sysPara->status.calandar_and_dat.cnt1CurrValue,10).toInt();break;
|
||
case CALANDAR_CNT2:val = QString::number(sysPara->status.calandar_and_dat.cnt2CurrValue,10).toInt();break;
|
||
#else
|
||
case CALANDAR_CNT1:val = QString::number(sysPara->status.calandar_and_dat.cnt1CurrValue,16).toInt();found_CNT1=true;break;
|
||
case CALANDAR_CNT2:val = QString::number(sysPara->status.calandar_and_dat.cnt2CurrValue,16).toInt();found_CNT2=true;break;
|
||
#endif
|
||
case CALANDAR_CNT3:val = QString::number(sysPara->status.Status_Counter3.cnt3CurrValue,16).toInt();found_CNT3=true;break;
|
||
|
||
case RANDOMNUM : val = QString::number( sysPara->status.calandar_and_dat.RandomValue1, 16).toInt(); break;
|
||
//val = QString::number( sysPara->status.calandar_and_dat.RandomValue2 ,16).toInt();
|
||
|
||
case EXPIRYDATE: break;
|
||
default:qDebug() << "error,unknown variable type:" << sysPara->status.vars[i].type;
|
||
}
|
||
|
||
if(sysPara->status.vars[i].currVal != val)
|
||
//{
|
||
updatePrintTextDisplayFlag = true;
|
||
sysPara->status.vars[i].currVal = val;
|
||
//}
|
||
|
||
}
|
||
if(updatePrintTextDisplayFlag) //减少不必要的刷新动作
|
||
{
|
||
ui->widgetPrintTextDisplay->updateSysStatusToUI();
|
||
}
|
||
}
|
||
emit setCNT1Select(found_CNT1);
|
||
emit setCNT2Select(found_CNT2);
|
||
emit setCNT3Select(found_CNT3);
|
||
if(sysPara->para.isEnableGetDataButton)
|
||
{
|
||
ui->pushButtonGetData->setEnabled(true);
|
||
}
|
||
else
|
||
{
|
||
ui->pushButtonGetData->setEnabled(false);
|
||
}
|
||
if(SIMULATE_PRINTING_MODE)
|
||
enablePrintButton(true);
|
||
|
||
ui->label->setText(QString::number(sysPara->para.printTotalColNum));
|
||
}
|
||
}
|
||
|
||
void MainWindow::showPrintBitImage(){
|
||
if(sysPara){
|
||
// unsigned char *dat = sysPara->status.printDat;
|
||
unsigned char *dat;
|
||
bool MaxCol4000;
|
||
if(!sysPara->status.flagOfNo67FPGA && sysPara->status.FPGAVersionType == 0 && sysPara->status.FPGAChipType != 1)
|
||
MaxCol4000 = false;
|
||
else
|
||
MaxCol4000 = true;
|
||
if(MaxCol4000){
|
||
dat =sysPara->status.printDat_Normal;
|
||
}else{
|
||
dat =sysPara->status.printDat;
|
||
}
|
||
for(int j = sysPara->status.currPrintCol - 1; j >= 0 ; j --){
|
||
for(int i = 0; i < sysPara->status.currPrintRow; i++){
|
||
if(dat[j*MAX_PRINT_ROW_BYTE_NUM + i/8] & (1<<(i%8)))
|
||
printf("1");
|
||
else
|
||
printf(" ");
|
||
}
|
||
printf("\n");
|
||
}
|
||
}
|
||
}
|
||
|
||
//void MainWindow::on_pushButtonTXTOpen_pressed(){
|
||
|
||
//}
|
||
|
||
void MainWindow::openPicFIleOpen(QString filePath,bool insertFlag) {
|
||
fileChange=true;
|
||
#ifdef TXTEDIT
|
||
ui->textEditOption->onFileOpenN(filePath,insertFlag);
|
||
emit setMainTabNow(0);
|
||
#else
|
||
Q_UNUSED(insertFlag);
|
||
|
||
if(sysPara) {
|
||
|
||
|
||
|
||
if(//filePath.endsWith(".gif") || filePath.endsWith(".jpeg") ||
|
||
//filePath.endsWith(".jpg") ||
|
||
// ||filePath.endsWith(".bmp")
|
||
filePath.endsWith(".png"))
|
||
{
|
||
QFile file(filePath);
|
||
if(!file.open(QIODevice::ReadOnly)){
|
||
QMessageBox::warning(this,tr("警告"),tr("无法打开文件") + filePath);
|
||
return ;
|
||
}
|
||
else {
|
||
|
||
QByteArray data = file.readAll();
|
||
QTextCodec *codec = Qt::codecForHtml(data);
|
||
QString str = codec->toUnicode(data);
|
||
|
||
if(filePath.startsWith(UDISK_DOC_ROOT_DIR))
|
||
str.replace(DOC_ROOT_DIR,UDISK_DOC_ROOT_DIR); //做相应处理
|
||
file.close ();
|
||
ui->PicWidgetDisp->loadImage (filePath,false);
|
||
ui->labelOpenedFileName->setText (QFileInfo(filePath).fileName());
|
||
LogInfo::setRunStatusText(tr("打开文件:")+(QString)(QFileInfo(filePath).fileName()));
|
||
if(sysPara){
|
||
//QString str1 =QFileInfo( filePath).fileName ();
|
||
sysPara->sysFile= PARA_ROOT_DIR+QFileInfo( filePath).baseName()+".dpn";
|
||
sysPara->loadParaFromFile ();// 从磁盘读取参数文件
|
||
emit openFileChange();
|
||
// emit openFileChange();
|
||
snprintf(sysPara->para.lastOpenedFileName,sizeof(sysPara->para.lastOpenedFileName),"%s",filePath.toAscii().constData());
|
||
}
|
||
/* other action */
|
||
PreviewPressed();
|
||
|
||
|
||
if(sysPara->status.addSpace)
|
||
ui->widgetPrintTextDisplay->setDisplaySize(sysPara->status.currPrintCol/2, sysPara->para.AlterMode?sysPara->status.currAlterPrintRow : sysPara->status.currPrintRow);
|
||
else ui->widgetPrintTextDisplay->setDisplaySize(sysPara->status.currPrintCol, sysPara->para.AlterMode?sysPara->status.currAlterPrintRow : sysPara->status.currPrintRow);
|
||
ui->stackedWidgetText->setCurrentWidget(ui->pagePrintTextDisplay);
|
||
ui->widgetPrintTextDisplay->setScaleRatio(3);
|
||
//ui->labelTextWidthHeight->setText(tr("[ %1行 x %2列 ]").arg(sysPara->status.currPrintRow).arg(sysPara->status.currPrintCol));
|
||
}
|
||
}
|
||
}
|
||
#endif
|
||
|
||
}
|
||
|
||
void MainWindow::on_pushButtonGetData_pressed()
|
||
{
|
||
emit getJSONData();
|
||
}
|
||
|
||
void MainWindow::onPushButtonPreviewPressed(){
|
||
if(sysPara)
|
||
{
|
||
sysPara->para.EditMode = TXTFILE;
|
||
if(previewFlag==0) {
|
||
#ifdef SAVEWHENPREVIEW
|
||
if(ui->textEditOption->fileName.isEmpty()){
|
||
QMessageBox::StandardButton ret = QMessageBox::Ok;
|
||
ret = QMessageBox::warning(this, tr("提示"),
|
||
tr("文件未保存,是否先保存文件!"),
|
||
QMessageBox::Ok | QMessageBox::Cancel);
|
||
if (ret == QMessageBox::Ok)
|
||
{
|
||
ui->textEditOption->on_bottonSave_clicked();
|
||
}
|
||
}
|
||
else
|
||
ui->textEditOption->on_bottonSave_clicked();
|
||
#else
|
||
|
||
#endif
|
||
PreviewPressed();
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
int MainWindow::getVarStarRow(int x,int y,int h,int w,char *dat)
|
||
{
|
||
int t_x_start_pos = x;
|
||
int t_x_end_pos = t_x_start_pos + w;
|
||
bool MaxCol4000;
|
||
if(!sysPara->status.flagOfNo67FPGA && sysPara->status.FPGAVersionType == 0 && sysPara->status.FPGAChipType != 1)
|
||
MaxCol4000 = false;
|
||
else
|
||
MaxCol4000 = true;
|
||
if(t_x_end_pos > (MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide))
|
||
t_x_end_pos = MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide;
|
||
int t_y_start_pos = y - h/2;
|
||
//int t_y_end_pos = y ;
|
||
if(t_y_start_pos < 0)
|
||
t_y_start_pos = 0;
|
||
|
||
for(int j=y - h/2;j>0;j--)
|
||
{
|
||
char startRowFound=0;
|
||
for(int i = t_x_start_pos; i < t_x_end_pos; i++)
|
||
{
|
||
if( (dat[MAX_PRINT_ROW_BYTE_NUM*i + j/8] & (1 << (j%8))))
|
||
{
|
||
startRowFound=1;
|
||
dat[MAX_PRINT_ROW_BYTE_NUM*i + j/8] &=~ (1 << (j%8));//将画点取消掉
|
||
}
|
||
}
|
||
if(startRowFound)continue;
|
||
t_y_start_pos=j+1;
|
||
// qDebug()<<"F:"<<t_y_start_pos;
|
||
break;
|
||
}
|
||
return t_y_start_pos;
|
||
}
|
||
|
||
void MainWindow::PreviewPressed(){
|
||
int coldot=0;
|
||
if(sysPara){
|
||
previewFlag=1;
|
||
sysPara->status.currPrintRow = 0;
|
||
sysPara->status.variNum = 0;
|
||
sysPara->status.QRvariNum = 0;
|
||
sysPara->status.ExpiryVarNum=0;
|
||
// unsigned char *dat = sysPara->status.printDat;
|
||
// memset(dat,0,sizeof(sysPara->status.printDat));
|
||
unsigned char *dat;
|
||
bool MaxCol4000;
|
||
if(!sysPara->status.flagOfNo67FPGA && sysPara->status.FPGAVersionType == 0 && sysPara->status.FPGAChipType != 1)
|
||
MaxCol4000 = false;
|
||
else
|
||
MaxCol4000 = true;
|
||
LogInfo::setRunStatusText(tr("MaxCol4000: %1").arg(MaxCol4000));
|
||
if(MaxCol4000){
|
||
dat =sysPara->status.printDat_Normal;
|
||
memset(dat,0,sizeof(sysPara->status.printDat_Normal));
|
||
}else{
|
||
dat =sysPara->status.printDat;
|
||
memset(dat,0,sizeof(sysPara->status.printDat));
|
||
}
|
||
//qDebug()<<"Preview:";
|
||
//////////////////////////////////////////////////////在这里清变量参数
|
||
sysPara->status.ExpiryVarNum=0;
|
||
sysPara->status.CurrDateVariNum = 0;
|
||
sysPara->status.classVariNum = 0;
|
||
sysPara->print.ExpiryVar.startColPos = 0;
|
||
sysPara->print.ExpiryVar.endRowPos = 0;
|
||
sysPara->print.ExpiryVar.letterSpace =0;
|
||
sysPara->print.CurDateVar.startColPos = 0;
|
||
sysPara->print.CurDateVar.endRowPos = 0;
|
||
sysPara->print.CurDateVar.letterSpace = 0;
|
||
/////////////////////////////////////////////////////////////////
|
||
if(sysPara->para.EditMode==PICFILE)
|
||
{
|
||
|
||
ui->PicWidgetDisp->getPrintDat (dat,0,sysPara);
|
||
ui->PicWidgetDisp->readVar (sysPara,0);
|
||
|
||
// qDebug ()<<"v-n1:"<<sysPara->status.variNum<<"v-nLeter1:"<<sysPara->status.vars[0].letterSpace<<"v-nLeter2:"<<sysPara->status.vars[1].letterSpace<<"v-nLeter3:"<<sysPara->status.vars[2].letterSpace;
|
||
sysPara->status.variNum=ui->PicWidgetDisp->getVarNum ();
|
||
sysPara->status.currPrintCol=ui->PicWidgetDisp->getWidth ();
|
||
sysPara->status.currPrintRow=ui->PicWidgetDisp->getPicRealHeight();
|
||
|
||
ui->PicWidgetDisp->getCharRamData(sysPara);
|
||
|
||
//qDebug()<<"H0:"<<ui->PicWidgetDisp->getHeight()<<ui->PicWidgetDisp->getPicRealHeight();
|
||
|
||
}
|
||
// end of PICFILE
|
||
else if(sysPara->para.EditMode==TXTFILE)// TXTFLE
|
||
{
|
||
sysPara->status.addSpace = sysPara->para.checkSpace;
|
||
ontextEdittextChanged();
|
||
coldot = (int)ui->textEdit->document()->size().width();
|
||
if(coldot > (MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide))
|
||
{
|
||
coldot = MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide;
|
||
QMessageBox::warning(this, tr("警告"),
|
||
tr("最多支持的列数目为:%1请减小信息长度.").arg((MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide)));
|
||
}
|
||
int maxPicHeight = MAX_PRINT_ROW_NUM + 12;
|
||
QSize size(coldot,maxPicHeight);
|
||
|
||
sysPara->status.currPrintRow =0;
|
||
// qDebug()<<"currPrintCol="<<sysPara->status.currPrintCol<<" coldot="<<coldot<<" addSpace="<<sysPara->status.addSpace;
|
||
sysPara->status.currPrintCol = coldot + ( sysPara->status.addSpace?coldot:0) ; //checkSpace
|
||
|
||
|
||
QImage image(size,QImage::Format_ARGB32);
|
||
image.fill(0x00ffffff);//填充白色
|
||
//image.fill(0x00f0f000);//填充白色
|
||
QPainter painter(&image);
|
||
//image.save("./printImage.jpg");
|
||
ui->textEdit->document()->drawContents (&painter, image.rect()); /*将text写到pic*/
|
||
|
||
image.save("./printImage.bmp");
|
||
//ui->widgetPrintTextDisplay
|
||
int firstRow = maxPicHeight;
|
||
/*--------------------------------------------------------------------------*/
|
||
for(int j = 0; j < maxPicHeight; j++){ //计算首行位置
|
||
for(int i = 0; i < coldot; i++){
|
||
QRgb rgb = image.pixel(i,j);
|
||
if(rgb !=0x00ffffff )//& 0xff000000)
|
||
{
|
||
//qDebug()<<j<< QString().sprintf("%08X",rgb);
|
||
//if((rgb&0x00FFFFFF)==0)
|
||
{
|
||
firstRow = j;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
if(firstRow != maxPicHeight)
|
||
break;
|
||
}
|
||
firstRow = 0;
|
||
//qDebug()<<"firstRow"<<firstRow<<maxPicHeight;
|
||
//firstRow = 0;
|
||
/*--------------------------------------------------------------------------*/
|
||
int lastRow = firstRow + MAX_PRINT_ROW_NUM;
|
||
int TempVarNum=0;
|
||
int varLastRow=0;
|
||
lastRow = (lastRow>maxPicHeight)?maxPicHeight:lastRow;
|
||
sysPara->status.ExpiryVarNum=0;
|
||
sysPara->status.CurrDateVariNum = 0;
|
||
sysPara->status.classVariNum = 0;
|
||
sysPara->print.ExpiryVar.startColPos = 0;
|
||
sysPara->print.ExpiryVar.endRowPos = 0;
|
||
sysPara->print.ExpiryVar.letterSpace =0;
|
||
sysPara->print.CurDateVar.startColPos = 0;
|
||
sysPara->print.CurDateVar.endRowPos = 0;
|
||
sysPara->print.CurDateVar.letterSpace = 0;
|
||
|
||
//接下来就是要把打印到数据data填充以及确认变量的个数,变量对应的开始列和结束行
|
||
for(int j = 0; j < lastRow - firstRow; j++){ // Y
|
||
for(int i = 0; i < coldot; i++){ //
|
||
QRgb rgb = image.pixel(i,j + firstRow);
|
||
if(rgb&0x80000000) { //判断alpha,rgb<0xFFE0E0E0->过滤偏白背景
|
||
//if((rgb & 0xffffff) == 0xff0000) {j=40; break;}
|
||
if((rgb & 0xf0f0ff) == 0xf0f000){ //处理变量, 查找左下角,因为同一行的左下角是对齐的 看起来这个颜色是黄色
|
||
|
||
bool foundvar=0;
|
||
if(j>0){
|
||
QRgb r_rgb = image.pixel(i,j + firstRow+1);
|
||
if((r_rgb & 0xf0f0ff) != 0xf0f000 ){foundvar =1;}
|
||
//QRgb r_rgb = image.pixel(i,j + firstRow-1);if((r_rgb & 0xf0f0ff) == 0xf0f000 )foundvar =0;
|
||
}
|
||
if(foundvar){
|
||
if(sysPara->status.variNum < MAX_VARI_NUM){
|
||
sysPara->status.vars[sysPara->status.variNum].startColPos = i+(sysPara->status.addSpace?i:0);
|
||
sysPara->status.vars[sysPara->status.variNum].endRowPos = j;
|
||
if(varLastRow<j+1) varLastRow=j+1;
|
||
sysPara->status.variNum ++;TempVarNum++;
|
||
i+=5;
|
||
//qDebug()<<"VARr:"<<TempVarNum<<i<<j;
|
||
}
|
||
else TempVarNum++;
|
||
//dat[MAX_PRINT_ROW_BYTE_NUM*i + j/8] |= 1 << (j%8); //画黑点
|
||
}
|
||
}
|
||
else if( ((rgb & 0xfffff0) == 0x00ff10) || ((rgb & 0xfffff0) == 0x00ff20) ||((rgb & 0xfffff0) == 0x00ff30) ){
|
||
// 0xff00ff01(DMT) 0xff00ff02(QR) 0xff00ff03(BAR)
|
||
//qDebug()<<"FLAG:"<<i<<j+1<<QString().sprintf("%08X", rgb);
|
||
if(sysPara->status.QRvariNum>=4)continue;
|
||
if((rgb & 0x00ffff0) == 0x00ff10) { //MDT
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].type=MDT;
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].countEn=1;
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].Counter=sysPara->status.productCnt;
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].startColPos=i+(sysPara->status.addSpace?i:0);
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].endRowPos=j+1;
|
||
if(varLastRow<j+1) varLastRow=j+1;
|
||
sysPara->status.QRvariNum++;
|
||
}
|
||
else if((rgb & 0x00ffff0) == 0x00ff20) { //QR
|
||
//qDebug()<<"FLAG:"<<i<<j+1<<QString().sprintf("0x%08X", rgb);
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].type=QR;
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].countEn=1;
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].Counter=sysPara->status.productCnt;
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].startColPos=i+(sysPara->status.addSpace?i:0);
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].endRowPos=j+1;
|
||
//qDebug()<<"qr start row:"<<sysPara->print.QRvars[sysPara->status.QRvariNum].startColPos;
|
||
//qDebug()<<"qr end row:"<<sysPara->print.QRvars[sysPara->status.QRvariNum].endRowPos;
|
||
|
||
if(varLastRow<j+1) varLastRow=j+1;
|
||
sysPara->status.QRvariNum++;
|
||
}
|
||
else if((rgb & 0x00fffff0) == 0x00ff30) { //BAR
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].type=BAR;
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].countEn=1;
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].Counter=sysPara->status.productCnt;
|
||
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].startColPos=i+(sysPara->status.addSpace?i:0);
|
||
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].endRowPos=j+1;
|
||
|
||
if(varLastRow<j+1) varLastRow=j+1;
|
||
sysPara->status.QRvariNum++;
|
||
|
||
}
|
||
if(sysPara->status.QRvariNum>=4)sysPara->status.QRvariNum=4;
|
||
|
||
}
|
||
//else if((rgb & 0xfffff0)==0xff00f0)
|
||
else if((rgb & 0x00ffffff)==EXPIRY_VARI_RECONISE)
|
||
{ // 有效期变量 : 处理变量, 查找左下角,因为同一行的左下角是对齐的
|
||
bool foundExVar=0;
|
||
if(j>0){
|
||
QRgb r_rgb = image.pixel(i,j + firstRow+1);
|
||
if((r_rgb & 0x00ffffff) != EXPIRY_VARI_RECONISE ){foundExVar =1;}
|
||
}
|
||
if(foundExVar)
|
||
{
|
||
qDebug()<<"expiryVar:";
|
||
//if(sysPara->status.ExpiryVarNum <3)
|
||
{
|
||
sysPara->print.ExpiryVar.startColPos = i+(sysPara->status.addSpace?i:0);
|
||
sysPara->print.ExpiryVar.endRowPos = j;
|
||
if(varLastRow<j+1) varLastRow=j+1;
|
||
if(sysPara->status.ExpiryVarNum == 0)
|
||
sysPara->status.ExpiryVarNum ++;
|
||
i+=10;
|
||
}
|
||
//else TempVarNum++;
|
||
//dat[MAX_PRINT_ROW_BYTE_NUM*i + j/8] |= 1 << (j%8); //画黑点
|
||
}
|
||
}
|
||
else if((rgb & 0xfffff0)==0xff0cf0)
|
||
{ // 有效期变量 : 处理变量, 查找左下角,因为同一行的左下角是对齐的
|
||
//qDebug()<<"before found CurDateVar:"<<rgb;
|
||
bool foundExVar=0;
|
||
if(j>0){
|
||
QRgb r_rgb = image.pixel(i,j + firstRow+1);
|
||
if((r_rgb & 0xfffff0) != 0xff0cf0 ){foundExVar =1;}
|
||
}
|
||
if(foundExVar)
|
||
{
|
||
qDebug()<<"found CurDateVar:";
|
||
//if(sysPara->status.ExpiryVarNum <2)
|
||
{
|
||
sysPara->print.CurDateVar.startColPos = i+(sysPara->status.addSpace?i:0);
|
||
sysPara->print.CurDateVar.endRowPos = j;
|
||
if(varLastRow<j+1) varLastRow=j+1;
|
||
if(sysPara->status.CurrDateVariNum == 0)
|
||
sysPara->status.CurrDateVariNum ++;
|
||
i+=10;
|
||
}
|
||
|
||
//else TempVarNum++;
|
||
//dat[MAX_PRINT_ROW_BYTE_NUM*i + j/8] |= 1 << (j%8); //画黑点
|
||
}
|
||
}
|
||
//else if((rgb & 0xffffff)==0x0032c8)
|
||
else if((rgb & 0x0000ff)>0x0000c0 && (rgb & 0x00ff00)>0x002F00 && (rgb & 0x00ff0000)==0x00000000)
|
||
{
|
||
//qDebug()<<"before found class:"<<rgb;
|
||
//qDebug()<<" found class:"<<i<<j + firstRow;
|
||
{
|
||
qDebug()<<"found class:";
|
||
//if(sysPara->status.classVariNum <3)
|
||
{
|
||
EXPIRYVAR_t *currCLass = &sysPara->print.ClassVari ;
|
||
currCLass->startColPos = i+(sysPara->status.addSpace?i:0);
|
||
if (currCLass->startColPos>1)
|
||
currCLass->startColPos = currCLass->startColPos - 1;
|
||
currCLass->endRowPos = j;
|
||
if(varLastRow<j+1) varLastRow=j+1;
|
||
if(sysPara->status.classVariNum == 0)
|
||
sysPara->status.classVariNum ++;
|
||
i+=5;
|
||
}
|
||
}
|
||
}
|
||
else { //Y = 0.299*R' + 0.587*G' + 0.114*B
|
||
int y = (((rgb&0xff)*299 + ((rgb>>8)&0xff)*587 + ((rgb>>16)&0xff)*114))/1000;
|
||
if(y < 125 ) {
|
||
dat[MAX_PRINT_ROW_BYTE_NUM*(i+(sysPara->status.addSpace?i:0)) + j/8] |= 1 << (j%8); //画黑点
|
||
|
||
if((j+1) > sysPara->status.currPrintRow) {
|
||
sysPara->status.currPrintRow = j+1;
|
||
//qDebug()<<"dddd currPrintRow:"<< sysPara->status.currPrintRow;
|
||
}
|
||
|
||
}
|
||
}
|
||
}/*判断alpha end*/
|
||
}
|
||
}
|
||
|
||
// var
|
||
//qDebug() <<"VarNum"<<TempVarNum;
|
||
if(TempVarNum>8){
|
||
setRunStatus(tr("变量数大于8个,某些变量将不起作用!!!"));
|
||
strTitle= tr("变量数大于8个,某些变量将不起作用!!!");
|
||
strTitle.append("\r\n");
|
||
strTitle.append(tr("请减少信息中的变量(或计数器)数量."));
|
||
QMessageBox::warning(this, tr("警告"),strTitle,QMessageBox::Ok);
|
||
}
|
||
|
||
//qDebug()<<firstRow<<lastRow<< sysPara->status.vars[0].startRowPos<<sysPara->status.vars[0].endRowPos<< sysPara->status.currPrintRow;
|
||
// ==============查找QRV, DMTV,BARV 变量 MAX_QVARI_NUM
|
||
//qDebug()<<"qrvar"<<sysPara->status.QRvariNum;
|
||
searchQrVar();
|
||
//if(sysPara->status.ExpiryVarNum)
|
||
searchExpiryVar();
|
||
//ui->widgetPrintTextDisplay->update();
|
||
//===============
|
||
if(sysPara->status.variNum){
|
||
//
|
||
/*--------------------------------提取变量------------------------------------------*/
|
||
QString pattern = "<img src=\":/(\\d*)/(\\d*)/../image/digitalWidth(\\d*).bmp\" width=\"(\\d*)\" height=\"(\\d*)\" />";
|
||
|
||
QRegExp rx(pattern);
|
||
QString textHtml = ui->textEdit->toHtml();
|
||
int from = 0;
|
||
int varNum = 0;
|
||
// 正常变量
|
||
while(from < textHtml.size() && from != -1) {
|
||
from = textHtml.indexOf(rx,from);//返回匹配到到起始地址
|
||
bool ok;
|
||
if(from != -1){//找到匹配的
|
||
from ++;
|
||
if(varNum < sysPara->status.variNum){
|
||
sysPara->status.vars[varNum].digitalNum = rx.cap(3).toInt(&ok);//第二个匹配,数字到个数
|
||
sysPara->status.vars[varNum].bold = (sysPara->status.vars[varNum].digitalNum%100) == 75;
|
||
if(sysPara->status.vars[varNum].bold)
|
||
sysPara->status.vars[varNum].digitalNum = sysPara->status.vars[varNum].digitalNum/100;
|
||
|
||
sysPara->status.vars[varNum].type = rx.cap(2).toInt(&ok);//第一个匹配
|
||
sysPara->status.vars[varNum].width = rx.cap(4).toInt(&ok)*(sysPara->status.addSpace?2:1);
|
||
sysPara->status.vars[varNum].height = rx.cap(5).toInt(&ok);
|
||
|
||
//qDebug() <<varNum<< "startRowPos=:" << sysPara->status.vars[varNum].startRowPos
|
||
// << "endRowPos" << sysPara->status.vars[varNum].endRowPos
|
||
// <<"Height"<<sysPara->status.vars[varNum].height;
|
||
//sysPara->status.vars[varNum].endRowPos = sysPara->status.vars[varNum].startRowPos + sysPara->status.vars[varNum].height-1;
|
||
sysPara->status.vars[varNum].startRowPos = sysPara->status.vars[varNum].endRowPos - sysPara->status.vars[varNum].height+1;
|
||
if(sysPara->status.vars[varNum].startRowPos<0)sysPara->status.vars[varNum].startRowPos=0;
|
||
//sysPara->status.vars[varNum].startRowPos = sysPara->status.vars[varNum].endRowPos - sysPara->status.vars[varNum].height+(sysPara->status.vars[varNum].height==15||sysPara->status.vars[varNum].height==16?0:1);
|
||
// qDebug()<<"Hei:"<<sysPara->status.vars[varNum].height;
|
||
/*-----------------------------------------------------------------------------------------*/
|
||
int t_x_start_pos = sysPara->status.vars[varNum].startColPos;
|
||
int t_x_end_pos = t_x_start_pos + sysPara->status.vars[varNum].width ;
|
||
if(t_x_end_pos > (MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide))
|
||
t_x_end_pos = MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide;
|
||
int t_y_start_pos = sysPara->status.vars[varNum].startRowPos;
|
||
int t_y_end_pos = sysPara->status.vars[varNum].endRowPos+1 ;
|
||
if(t_y_start_pos < 0)
|
||
t_y_start_pos = 0;
|
||
for(int i = t_x_start_pos; i < t_x_end_pos; i++){
|
||
for(int j = t_y_start_pos; j < t_y_end_pos; j++){
|
||
|
||
dat[MAX_PRINT_ROW_BYTE_NUM*(i+(sysPara->status.addSpace?0:0)) + j/8] &= ~(1 << (j%8)); //将画点取消掉
|
||
|
||
}
|
||
}
|
||
|
||
sysPara->status.vars[varNum].height = rx.cap(5).toInt(&ok)-1;
|
||
if(sysPara->status.vars[varNum].height>16 ){
|
||
if(sysPara->status.vars[varNum].height==24)
|
||
;
|
||
else {
|
||
if(sysPara->status.vars[varNum].startRowPos)
|
||
{
|
||
sysPara->status.vars[varNum].endRowPos--;
|
||
sysPara->status.vars[varNum].startRowPos--;
|
||
}
|
||
|
||
}
|
||
|
||
}
|
||
|
||
if(sysPara->status.vars[varNum].type == RANDOMNUM)
|
||
{
|
||
//qDebug()<<"RAND:"<<sysPara->status.vars[varNum].type<< sysPara->status.vars[varNum].digitalNum;
|
||
sysPara->status.RandomDigitNum = sysPara->status.vars[varNum].digitalNum;
|
||
|
||
|
||
}
|
||
|
||
if(sysPara->status.vars[varNum].type >59 && sysPara->status.vars[varNum].type<70)
|
||
{
|
||
sysPara->status.vars[varNum].endRowPos = sysPara->status.vars[varNum].endRowPos-3;
|
||
sysPara->status.vars[varNum].startRowPos = sysPara->status.vars[varNum].startRowPos-3;
|
||
}
|
||
/*-----------------------------------------------------------------------------------------*/
|
||
int pixelSize = Public::derivePixelSizeFromHeight(sysPara->status.vars[varNum].height);
|
||
|
||
//qDebug()<<"MainWindows"<<sysPara->status.vars[varNum].height<<pixelSize;
|
||
|
||
sysPara->status.vars[varNum].letterSpace = 0;
|
||
if(sysPara->status.vars[varNum].digitalNum){ //算出letterspace
|
||
QFont font;
|
||
//font.setFamily(Public::getFontFamily(pixelSize));
|
||
font.setFamily(Public::getFontFamily(pixelSize,sysPara->status.vars[varNum].type )); // 20160812
|
||
//pixelSize==7? font.setFamily(ui->textEditOption->getLabelFontFamily()->text()):font.setFamily(Public::getFontFamily(pixelSize, 0));
|
||
font.setPixelSize(pixelSize);
|
||
font.setWeight(sysPara->status.vars[varNum].bold?QFont::Bold:QFont::Normal);
|
||
//font.setLetterSpacing(QFont::AbsoluteSpacing,sysPara->para.textEditCharSpace);
|
||
QFontMetrics fontMetrics(font);
|
||
int charWidth = (fontMetrics.width("0123456789"))/10 ;
|
||
sysPara->status.vars[varNum].letterSpace = sysPara->para.textEditCharSpace;
|
||
//sysPara->status.vars[varNum].width/sysPara->status.vars[varNum].digitalNum/(sysPara->status.addSpace?2:1) - charWidth;
|
||
}
|
||
|
||
if(varNum<7) varNum ++;
|
||
}
|
||
else
|
||
{
|
||
qDebug() << tr("warning,界面上有变量未显示完全");
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
//if(sysPara->status.variNum) qDebug()<< sysPara->status.vars[0].startColPos<<sysPara->status.vars[0].endRowPos ;
|
||
|
||
/*--------------------------------------------------------------------------*/
|
||
generateCharRamData();
|
||
|
||
/*---------------------------------------------------------------------------*/
|
||
//sysPara->status.currPrintRow ++;//总的行数,从1~n,而不是从0~n,
|
||
//if(sysPara->status.currPrintRow>39)sysPara->status.currPrintRow=39;
|
||
if(sysPara->status.currPrintRow>MAX_PRINT_ROW_NUM-1) sysPara->status.currPrintRow=MAX_PRINT_ROW_NUM-1;
|
||
bool found=0;
|
||
|
||
lastRow = sysPara->status.currPrintRow;
|
||
//qDebug()<<"lastRow:"<<lastRow;
|
||
for(int j = sysPara->status.currPrintRow; j >2 ; j--){ //计算首行位置
|
||
for(int i = 0; i < coldot; i++){
|
||
if(dat[MAX_PRINT_ROW_BYTE_NUM*i + j/8] & (1 << (j%8))){
|
||
lastRow = j+1;
|
||
found=1;//qDebug()<<"fOUND:"<<i<<j<<dat[MAX_PRINT_ROW_BYTE_NUM*i + j/8]<<sysPara->status.currPrintRow;
|
||
break;
|
||
}
|
||
}
|
||
if(found)
|
||
break;
|
||
}
|
||
if(lastRow>MAX_PRINT_ROW_NUM-1)lastRow =MAX_PRINT_ROW_NUM-1;
|
||
if(lastRow<varLastRow)lastRow= varLastRow-1;
|
||
|
||
if(lastRow<1) lastRow =1;
|
||
//if(lastRow>20 &&lastRow<=25) lastRow =24;
|
||
|
||
sysPara->status.currPrintRow =lastRow;
|
||
//sysPara->status.currPrintRow = (lastRow > varLastRow) ? lastRow : varLastRow; //配合賴工省点打印少行問题
|
||
//qDebug()<<"lastRow:"<<lastRow;
|
||
//qDebug()<<"2"<<sysPara->status.currPrintRow;
|
||
|
||
}
|
||
// end of TxtMode
|
||
|
||
//qDebug() << "varnum:"<<sysPara->status.variNum;
|
||
// 交替打印
|
||
// sysPara->status.currAlterPrintRow = sysPara->status.currPrintRow/2;
|
||
|
||
|
||
#ifdef _2DCODE_
|
||
if(sysPara->status.QRvariNum) {
|
||
onUpdateDispQRCode(1);
|
||
}
|
||
#endif
|
||
//if(sysPara->status.currPrintRow==11) sysPara->status.currPrintRow=12;
|
||
int wmax = sysPara->status.currPrintRow;
|
||
sysPara->status.currAlterPrintRow = sysPara->status.currPrintRow/2;
|
||
if(sysPara->para.alterPrint.enable<1) sysPara->para.AlterMode=0;
|
||
else {
|
||
if(sysPara->para.AlterMode==0)sysPara->para.AlterMode=1;
|
||
wmax = sysPara->status.currAlterPrintRow;
|
||
}
|
||
/*-------------------------------切换到显示窗口-----------------------------------*/
|
||
if(sysPara->status.addSpace)
|
||
ui->widgetPrintTextDisplay->setDisplaySize(sysPara->status.currPrintCol/2,sysPara->status.currPrintRow);
|
||
else ui->widgetPrintTextDisplay->setDisplaySize(sysPara->status.currPrintCol,sysPara->status.currPrintRow);
|
||
|
||
ui->widgetPrintTextDisplay->setDisplaySize(sysPara->status.currPrintCol,sysPara->para.AlterMode?sysPara->status.currAlterPrintRow : sysPara->status.currPrintRow);
|
||
ui->stackedWidgetText->setCurrentWidget(ui->pagePrintTextDisplay);
|
||
ui->stackedWidgetOption->setCurrentWidget(ui->pageOption);
|
||
ui->labelTextWidthHeight->setText(tr("[ %1行 x %2列 ]").arg(wmax).arg(sysPara->status.currPrintCol));
|
||
ui->widgetPrintTextDisplay->update();
|
||
//qDebug()<<"3"<<sysPara->status.currPrintRow;
|
||
}
|
||
previewFlag=0;
|
||
}
|
||
|
||
void MainWindow::showDat(unsigned char * Dat)
|
||
{
|
||
#ifdef DEBUG1
|
||
int i,j,x=MAX_PRINT_ROW_BYTE_NUM*sysPara->status.currPrintCol;
|
||
for(j=0;j<2;j++){
|
||
for(i=0;i<x;i+=5)
|
||
printf("%02X ",Dat[i+j]);
|
||
printf("\n");
|
||
}
|
||
#else
|
||
Q_UNUSED(Dat);
|
||
#endif
|
||
}
|
||
void MainWindow::alterDataPrint(unsigned char m)
|
||
{
|
||
if(sysPara)
|
||
{
|
||
|
||
ui->widgetPrintTextDisplay->setDisplaySize(sysPara->status.currPrintCol,sysPara->para.AlterMode?sysPara->status.currAlterPrintRow : sysPara->status.currPrintRow);
|
||
//sysPara->devOp->writeFpgaPrintPara(); /*务必放在最后一步*/
|
||
//sysPara->devOp->writeFpgaVariCtrl();
|
||
//SendPrintDataToFpga (m);
|
||
emit ui->widgetPrintTextDisplay->update();
|
||
|
||
}
|
||
}
|
||
|
||
/*
|
||
000 000 000 0000 0 000000 000 0000000 000 000
|
||
0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0
|
||
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
||
0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
||
0 0 0 0 0 0 0 0 000 0 000 0 000 0 0
|
||
0 0 0 0 000 0 0 00 0 00 0 0 0 0 0 00
|
||
0 0 0 0 0 0 0 0 0 0 0 0 0 000 0
|
||
0 0 0 0 0 00000000 0 0 0 0 0 0 0
|
||
0 0 0 0 0 0 0 0 0 0 0 0 0
|
||
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
||
000 00000 0000000 0000 0 0000 000 0 000 0000
|
||
|
||
*/
|
||
//#define DEBUG4
|
||
|
||
void MainWindow::generateCharRamData(){/* 生成字模数据 */
|
||
if(sysPara->status.variNum){
|
||
QTextEdit textEdit;
|
||
textEdit.document()->setDocumentMargin(0);
|
||
textEdit.setLineWrapMode(QTextEdit::NoWrap);
|
||
int ramAddress = 0;
|
||
int i;
|
||
qDebug()<<"sysPara->status.variNum:"<<sysPara->status.variNum;
|
||
for( i = 0; i < sysPara->status.variNum; i++){
|
||
vars_t *p_var = &sysPara->status.vars[i];
|
||
p_var->bassAddr = -1;
|
||
if(p_var->original){ //清除原来的记录
|
||
if(p_var->dat){
|
||
free(p_var->dat);
|
||
}
|
||
p_var->original = false;
|
||
}
|
||
|
||
int j;
|
||
#if 0 //同一个点陣的变量有BUG
|
||
qDebug()<<"p_var->height:"<<p_var->height;
|
||
if(p_var->height>6)
|
||
{
|
||
for( j = 0; j < i; j ++){ //重复检测是否有重复大小的字存在
|
||
|
||
if(p_var->height == sysPara->status.vars[j].height){
|
||
p_var->bassAddr = sysPara->status.vars[j].bassAddr;
|
||
p_var->datHeight = sysPara->status.vars[j].datHeight;
|
||
p_var->datWidth = sysPara->status.vars[j].datWidth;
|
||
p_var->rowByteNum = sysPara->status.vars[j].rowByteNum;
|
||
p_var->dat = sysPara->status.vars[j].dat;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
#endif
|
||
|
||
if(p_var->bassAddr == -1){
|
||
|
||
int width = (p_var->digitalNum)?(10*p_var->width/p_var->digitalNum):12;
|
||
int width2 = width;//+(sysPara->status.addSpace?width:0);
|
||
int height = Public::derivePixelSizeFromHeight(p_var->height);
|
||
textEdit.clear();
|
||
int DPI = textEdit.logicalDpiX();
|
||
DPI = DPI?DPI:1; //Pixel = DPI * Point / 72
|
||
textEdit.insertHtml(QString("<span style=\" font-family:'%1'; font-size:%2pt; font-weight:%3;\">0123456789</span>")
|
||
.arg(Public::getFontFamily(height,p_var->type)) // 20160812 增加横向字体 p_var->type <9 正常, p_var->type 20~28 左横 p_var->type 40~48 右横
|
||
.arg(height*72/DPI).arg(p_var->bold?600:400)); //600表示加粗,400表示普通
|
||
QFont font = textEdit.font();
|
||
font.setLetterSpacing(QFont::AbsoluteSpacing,p_var->letterSpace);
|
||
textEdit.setFont(font);
|
||
|
||
// qDebug() << "height:" << height << "fontFamily:" << Public::getFontFamily(height);
|
||
// qDebug() << "width2:" << width2 << "fontFamily:" << Public::getFontFamily(height);
|
||
|
||
|
||
int imgHeight = height + 12;
|
||
QSize size(width,imgHeight);
|
||
QImage image(size,QImage::Format_ARGB32);
|
||
image.fill(0x00ffffff);
|
||
QPainter painter(&image);
|
||
textEdit.show(); //如果不显示,似乎不会绘制
|
||
|
||
textEdit.document()->drawContents (&painter, image.rect()); /*将text写到pic*/
|
||
textEdit.hide();
|
||
image.save(QString::number(i) + "varRam.png");
|
||
#ifdef DEBUG4
|
||
//image.save("./var.png");
|
||
#endif
|
||
// 找到最下面的行
|
||
int lastValidRow = 0;
|
||
for(int k = imgHeight - 1; k >= 0 ; k--){
|
||
for(int j = 0; j < width; j ++){
|
||
QRgb rgb = image.pixel(j,k);
|
||
if(rgb&0xff000000){
|
||
lastValidRow = k + 1;
|
||
break;
|
||
}
|
||
}
|
||
if(lastValidRow != 0)
|
||
break;
|
||
}
|
||
|
||
qDebug()<<"lastValidRow"<<lastValidRow;
|
||
qDebug()<<"GetData"<<p_var->endRowPos<< p_var->startRowPos;
|
||
int rowDiff = p_var->endRowPos - p_var->startRowPos;
|
||
int firstValidRow = 0; // 变量的第一行所处的行地址
|
||
int firstValidRowDiff;// 看起来和上面的参数一样
|
||
qDebug()<<"rowDiff"<<rowDiff;
|
||
#ifdef DEBUG4
|
||
QString str="",s2="";
|
||
str.sprintf ("firstValidRow:%d,lastValidRow:%d,rowDiff:%d\n\r",firstValidRow,lastValidRow,rowDiff) ;
|
||
qDebug()<<str;
|
||
#endif
|
||
|
||
/*
|
||
firstValidRow = -1;
|
||
for(int k = 0; k <imgHeight; k++){
|
||
for(int j = 0; j < width; j ++){
|
||
QRgb rgb = image.pixel(j,k);
|
||
if(rgb&0xff000000){
|
||
firstValidRow=k;
|
||
|
||
break;
|
||
}
|
||
}
|
||
if(firstValidRow >=0)
|
||
break;
|
||
}
|
||
rowDiff = lastValidRow-firstValidRow;
|
||
firstValidRowDiff = firstValidRow/2;
|
||
*/
|
||
|
||
if(lastValidRow >= rowDiff){
|
||
firstValidRow = lastValidRow - rowDiff;
|
||
firstValidRowDiff = firstValidRow;
|
||
}
|
||
else {
|
||
firstValidRow = 0;
|
||
firstValidRowDiff = lastValidRow > rowDiff;
|
||
}
|
||
|
||
|
||
firstValidRow = firstValidRow >= 0?firstValidRow:0; //纠正
|
||
|
||
int rowByteNum = rowDiff/8 + ((rowDiff%8)?1:0); // 一列占用字节数
|
||
unsigned char *dat = (unsigned char *)calloc(width2,rowByteNum);
|
||
#ifdef DEBUG4
|
||
s2.sprintf ("firstValidRow:%d,lastValidRow:%d,rowByteNum:%d,width:%d ,rowDiff:%d\n\r",firstValidRow,lastValidRow,rowByteNum,width,rowDiff) ;
|
||
qDebug()<<s2;
|
||
str="";s2="";
|
||
#endif
|
||
|
||
for(int k = firstValidRow; k < lastValidRow; k++){
|
||
|
||
for(int j = 0; j < width; j ++){
|
||
QRgb rgb = image.pixel(j,k);
|
||
|
||
int currRow = k - firstValidRowDiff;
|
||
if(((rgb >> 24)&0xff) > 0x80){ // 判断是否有效的像素点
|
||
dat[rowByteNum*(j+(sysPara->status.addSpace?j:0) )+ currRow/8] |= (1<<(currRow%8));
|
||
#ifdef DEBUG4
|
||
s2.sprintf("%02X",rowByteNum*j + currRow/8);
|
||
str+=s2;
|
||
#endif
|
||
}
|
||
else{
|
||
#ifdef DEBUG4
|
||
s2.sprintf(" -");
|
||
str+=s2;
|
||
#endif
|
||
}
|
||
}
|
||
#ifdef DEBUG4
|
||
qDebug()<<str; str="";s2="";// printf("\n");
|
||
#endif
|
||
}
|
||
|
||
/*
|
||
startRowPos: 15 endRowPos 27 12
|
||
"firstValidRow:0,lastValidRow:12,rowDiff:12"
|
||
"firstValidRow:3,lastValidRow:12,rowByteNum:2,width:60 ,rowDiff:9
|
||
*/
|
||
|
||
//str.sprintf("startRow:%d,endRow:%d,Height:%d",p_var->startRowPos,p_var->endRowPos,p_var->height);
|
||
//qDebug()<<str;
|
||
|
||
p_var->bassAddr = ramAddress;
|
||
p_var->datHeight = height;
|
||
|
||
p_var->datWidth = width2;
|
||
p_var->rowByteNum = rowByteNum;
|
||
p_var->dat = dat;
|
||
p_var->original = true;
|
||
p_var->currVal = -1; //相当于初始化
|
||
ramAddress += rowByteNum * width2;
|
||
|
||
}
|
||
}
|
||
}
|
||
}
|
||
void MainWindow::updateTotalCnt(int en)
|
||
{
|
||
// No50 USEING
|
||
//sysPara->para.totalProductCnt += (sysPara->status.productCnt>sysPara->status.lastProductCnt)?sysPara->status.productCnt-sysPara->status.lastProductCnt:
|
||
// (sysPara->status.productCnt>=0&&sysPara->status.productCnt<20)?sysPara->status.productCnt:0;
|
||
//if(en) sysPara->para.totalProductCnt=0;
|
||
|
||
//sysPara->para.totalProductCnt = sysPara->status.totalProductCnt; // No51版本改进
|
||
sysPara->status.lastProductCnt = sysPara->status.productCnt;
|
||
ui->labelProductCnt->setText(QString::number(sysPara->status.productCnt));
|
||
ui->labelTotalProductCnt->setText(QString::number( sysPara->para.totalProductCnt+sysPara->status.totalProductCnt));
|
||
|
||
}
|
||
|
||
void MainWindow::on_pushButtonStartPrint_pressed()
|
||
{
|
||
if(sysPara->status.isPrinting){
|
||
qDebug("Mainwindow: Printing 开始打印");
|
||
}else{
|
||
qDebug("Mainwindow: Non printing 开始打印");
|
||
}
|
||
static int fileCount = 0;
|
||
fileCount++;
|
||
if(fileCount > 5)
|
||
{
|
||
fileCount = 1;
|
||
}
|
||
// QString fileName = "/home/plg/doc/SavePrintFile";
|
||
// fileName += QString::number(fileCount) + ".html";
|
||
// QTextDocumentWriter writer(fileName);
|
||
// writer.write(ui->textEditOption->textEdit->document());
|
||
|
||
if(sysPara){
|
||
bool MaxCol4000;
|
||
if(!sysPara->status.flagOfNo67FPGA && sysPara->status.FPGAVersionType == 0 && sysPara->status.FPGAChipType != 1)
|
||
MaxCol4000 = false;
|
||
else
|
||
MaxCol4000 = true;
|
||
#ifdef X86TEST
|
||
//sysPara->status.statWarn |=WARN_STATUS_HDINT;
|
||
#endif
|
||
#ifndef SYS_LINUX
|
||
sysPara->status.statWarn =0;
|
||
#endif
|
||
#ifdef MYTEST
|
||
|
||
#else
|
||
#ifdef AM335TEST
|
||
|
||
#else
|
||
#ifdef MIMA
|
||
static int xxxm=0;
|
||
if(xxxm==0){
|
||
QFile file("/usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib/libQtssl.o");
|
||
if(!file.exists())
|
||
{
|
||
LogInfo::setRunStatusText(QString("missing libQtssl.o"));
|
||
return;
|
||
}
|
||
}
|
||
xxxm=1;
|
||
if(sysPara->status.WorkTimeOut) { sysPara->devOp->printCtrl(PRINT_CTRL_STOP);
|
||
return;
|
||
}
|
||
#endif
|
||
#endif
|
||
#endif
|
||
|
||
/******2020/2/29*****/
|
||
// qDebug()<<"sysPara->para.printTriggerMode "<< sysPara->para.printTriggerMode;
|
||
if(sysPara->para.printTriggerMode == PRINT_TRIGGER_SYNCHRONIZER) //同步模式下,判断喷印间隔是否设置合理
|
||
{
|
||
QSizeF size = ui->textEdit->document()->size();
|
||
float stroke,print_len_min;
|
||
stroke = sysPara->para.printColDelay/sysPara->para.synPulseNumPerMm;
|
||
print_len_min = stroke * size.width();
|
||
if(print_len_min > sysPara->para.synTriggerPrintLenMm && !sysPara->para.charWidthSetEnable)
|
||
{
|
||
QMessageBox::information(this,tr("错误"),tr("喷印间隔过短,应高于%1!").arg(print_len_min));
|
||
return;
|
||
}
|
||
}
|
||
/******2020/2/29 end*****/
|
||
if(!SIMULATE_PRINTING_MODE){
|
||
if (!sysPara->status.reclainTankReachEnd) {
|
||
return;
|
||
}
|
||
if((sysPara->status.statWarn & WARN_STATUS_HDINT)){
|
||
QMessageBox::information(this,tr("错误"),tr("喷头盖未关,请先关喷头盖!"));
|
||
return ;
|
||
}
|
||
if((sysPara->status.statWarn & WARN_STATUS_INK_SWINT)){
|
||
QMessageBox::information(this,tr("错误"),tr("墨线未开,请先开墨线开关!"));
|
||
return ;
|
||
}
|
||
}
|
||
//if(printintFlag && !sysPara->status.FileChangeRestCntFlag) return;
|
||
// 发送数据到 外接屏 2017-07-25
|
||
sysPara->devOp->DatToDisp(sysPara->para.lastOpenedFileName,0);
|
||
#ifdef __HV_FOR_WANG_DEBUG__ /* 盖上喷头盖,启动高压 */
|
||
//sysPara->devOp->highVoltageCtrl(sysPara->para.HighVoltageAmplitude);
|
||
#else
|
||
sysPara->devOp->highVoltageCtrl(sysPara->para.HighVoltageAmplitude);
|
||
#endif
|
||
sysPara->status.waitHightVolOff = 0;
|
||
if(!printintFlag)setRunStatus(tr("正在加高压..."));
|
||
// 复位计数器
|
||
if(sysPara->status.FileChangeRestCntFlag){
|
||
if(sysPara->para.ResetAllProductCntEn)
|
||
{
|
||
sysPara->devOp->clearProductCnt(3 | 0x10); // [3]总产品计数器清零FPGA
|
||
sysPara->para.totalProductCnt=0;
|
||
}
|
||
else if(sysPara->para.ResetProductCntEn)
|
||
{
|
||
sysPara->devOp->clearProductCnt(3);
|
||
}
|
||
sysPara->status.FileChangeRestCntFlag=0;
|
||
sysPara->saveParaToFile();
|
||
}
|
||
if(sysPara->para.EditMode == TXTFILE||sysPara->para.EditMode== PICFILE)
|
||
PreviewPressed(); //生成打印数据,确定变量的位置和对应生成字模
|
||
else if(sysPara->para.EditMode == SCENE)
|
||
onPreviewScene();
|
||
|
||
if(sysPara->status.currPrintCol > (MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide)){
|
||
QMessageBox::critical(0,tr("错误"),tr("当前总列数 %1 ,支持的总列数为 %2,请减少打印串的长度").arg(sysPara->status.currPrintCol).arg((MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide)));
|
||
return ;
|
||
}
|
||
// LogInfo::setRunStatusText(tr("有效打印区域 %1行 x %2 列").arg(sysPara->status.currPrintRow).arg(sysPara->status.currPrintCol));
|
||
//if(sysPara->para.printTriggerMode != PRINT_TRIGGER_SYNCHRONIZER)
|
||
if(!((sysPara->para.printTriggerMode == PRINT_TRIGGER_SYNCHRONIZER)
|
||
||((sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL
|
||
||sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE)
|
||
&& sysPara->para.eleEyeTriggerSynPrintEn))
|
||
)
|
||
{
|
||
int dotNumPerCol = sysPara->status.currPrintRow*(1 + sysPara->para.printRowDelay) + sysPara->para.printColDelay;
|
||
//long long int printClkNum = dotNumPerCol*(1 + sysPara->para.charBold)*sysPara->status.currPrintCol*(2*sysPara->para.divideRatio);
|
||
//long printTmUs = printClkNum/(FPGA_SYS_HZ/1000000);
|
||
long printTmUs = 1.0f*dotNumPerCol*(1 + sysPara->para.charBold)*sysPara->status.currPrintCol*(2*sysPara->para.divideRatio)/(FPGA_SYS_HZ/1000000);
|
||
// LogInfo::setRunStatusText(tr("打印耗时 %1.%2 毫秒 /次").arg(printTmUs/1000).arg(printTmUs%1000,3,10,QLatin1Char('0')));
|
||
|
||
//qDebug()<<"mainWIN:"<<((printTmUs/1000 + 3) > (sysPara->para.printDelayMs) )<< (sysPara->para.timeTriggerPrintMode == TIME_TRIGGER_PRINT_MODE_HEAD_TO_HEAD);
|
||
//qDebug()<<"PDL:"<<dotNumPerCol<<(( long )printTmUs/1000 + 3) <<sysPara->para.printDelayMs;
|
||
|
||
if((printTmUs/1000 + 3) > (sysPara->para.printDelayMs)
|
||
&& (sysPara->para.timeTriggerPrintMode == TIME_TRIGGER_PRINT_MODE_HEAD_TO_HEAD)
|
||
&& (sysPara->para.printTriggerMode == PRINT_TRIGGER_TIME )
|
||
) // 在电眼方式下,是否需要判呢?
|
||
{
|
||
QMessageBox::critical(0,tr("错误"),tr("打印耗时 %1ms ,触发间隔 :%2ms ,触发间隔至少应当大于打印耗时3ms").arg(printTmUs/1000).arg(sysPara->para.printDelayMs));
|
||
return ;
|
||
}
|
||
}
|
||
else{
|
||
LogInfo::setRunStatusText(tr("同步目标每列有%1.%2个同步脉冲").arg(sysPara->para.synNumPerCol/(1<<8)).arg((sysPara->para.synNumPerCol%(1<<8))*1000/(1<<8),3,10,QLatin1Char('0')));
|
||
}
|
||
sysPara->status.isPrinting=true;
|
||
|
||
//if(!printintFlag) sleep(1);
|
||
|
||
setRunStatus(tr("开始打印"));
|
||
SendPrintDataToFpga(0); // 0--正常打印,1--打印交替部分信息1; 2--打印交替部分信息2,
|
||
if(sysPara->para.isCheckInsertTime)
|
||
{
|
||
if(!startPrintingFlag)
|
||
{
|
||
LogInfo::setRunStatusText(tr("开始打印"));
|
||
}
|
||
}
|
||
else
|
||
{
|
||
LogInfo::setRunStatusText(tr("开始打印"));
|
||
}
|
||
/*-------------------------------------------------------------------*/
|
||
ui->labelSynColDelay->setText("");
|
||
sysPara->status.lastSynColDelay = -1; //目的是为了清空原来的数据
|
||
/*--------------------------------暂停按钮------------------------------*/
|
||
ui->pushButtonPausePrint->setEnabled(true);
|
||
// ui->pushButtonPausePrint->setText(tr("暂停打印"));
|
||
/*---------------------------------开关回收槽------------------------------*/
|
||
enableReclaimCtrlButton(false);
|
||
updatePrintDisplayLabel();
|
||
// 20170717 移动此,以观察条形码打印异常问题。
|
||
if(!startPrintingFlag)
|
||
{
|
||
sysPara->devOp->printCtrl(PRINT_CTRL_START);
|
||
printintFlag = true;
|
||
}
|
||
else
|
||
{
|
||
//如果已经在打印,则不要在发送start命令,只要更新相应的数据即可
|
||
if(!printintFlag) //如果在暂停,重复取消暂停
|
||
on_pushButtonPausePrint_pressed();
|
||
}
|
||
startPrintingFlag = true;
|
||
}
|
||
}
|
||
|
||
void MainWindow::SendPrintDataToFpga(unsigned char alterEnable)
|
||
{
|
||
if(!sysPara) return ;
|
||
fileChange=false;
|
||
sysPara->devOp->writeFpgaPrintPara(1); /*务必放在最后一步*/
|
||
sysPara->devOp->writeFpgaVariCtrl();
|
||
|
||
unsigned char blankDat[BLANK_COL_NUM*MAX_PRINT_ROW_BYTE_NUM];
|
||
memset(blankDat,0,sizeof(blankDat));
|
||
sysPara->devOp->fpgaWr(0,blankDat,sizeof(blankDat));//...所加的空白偏移地址
|
||
// 交替打印处理
|
||
#ifdef FXCHG
|
||
unsigned char *dat;
|
||
size_t sizeofdat;
|
||
bool MaxCol4000;
|
||
if(!sysPara->status.flagOfNo67FPGA && sysPara->status.FPGAVersionType == 0 && sysPara->status.FPGAChipType != 1)
|
||
MaxCol4000 = false;
|
||
else
|
||
MaxCol4000 = true;
|
||
if(MaxCol4000){
|
||
dat =sysPara->status.printDat_Normal;
|
||
sizeofdat = sizeof(sysPara->status.printDat_Normal);
|
||
}else{
|
||
dat =sysPara->status.printDat;
|
||
sizeofdat = sizeof(sysPara->status.printDat);
|
||
}
|
||
sysPara->devOp->fpgaWr(sizeof(blankDat),dat,sizeofdat-sizeof(blankDat));
|
||
|
||
/*
|
||
if(sysPara->para.printOnce)
|
||
{
|
||
if(sysPara->status.oneCodePrintOnce)
|
||
{
|
||
sysPara->devOp->fpgaWr(sizeof(blankDat),sysPara->status.printDat, sysPara->status.currPrintCol* MAX_PRINT_ROW_BYTE_NUM);
|
||
}
|
||
sysPara->status.oneCodePrintOnce = false;
|
||
}
|
||
else
|
||
{
|
||
//sysPara->devOp->fpgaWr(sizeof(blankDat),sysPara->status.printDat, sysPara->status.currPrintCol* MAX_PRINT_ROW_BYTE_NUM);
|
||
sysPara->devOp->fpgaWr(sizeof(blankDat),sysPara->status.printDat,sizeof(sysPara->status.printDat)-sizeof(blankDat));
|
||
}
|
||
*/
|
||
#else
|
||
if(sysPara->para.alterPrint.enable)
|
||
{
|
||
int len=MAX_PRINT_ROW_BYTE_NUM*(sysPara->status.currPrintCol);
|
||
if(alterEnable==1) sysPara->devOp->fpgaWr(sizeof(blankDat),sysPara->status.printAlterDat1,len ); // alter1
|
||
else if(alterEnable==2) sysPara->devOp->fpgaWr(sizeof(blankDat),sysPara->status.printAlterDat2, len); // alter2
|
||
else sysPara->devOp->fpgaWr(sizeof(blankDat),sysPara->status.printAlterDat1, sizeof(sysPara->status.printAlterDat1)-sizeof(blankDat)); // alter2
|
||
}
|
||
else
|
||
|
||
sysPara->devOp->fpgaWr(sizeof(blankDat),sysPara->status.printDat,sizeof(sysPara->status.printDat)-sizeof(blankDat)); //将要打印的数据发送到fpga
|
||
#endif
|
||
|
||
#if 0
|
||
int printDataIndex=0;
|
||
char xor_value;
|
||
QFile xor_record_file("xor_record.txt");
|
||
|
||
for (int i = 0; i< sizeof(blankDat);) {
|
||
xor_value = 0;
|
||
xor_value ^= blankDat[i];
|
||
xor_value ^= blankDat[i+1];
|
||
xor_value ^= blankDat[i+2];
|
||
xor_value ^= blankDat[i+3];
|
||
xor_value ^= blankDat[i+4];
|
||
sysPara->devOp->fpgaWr(i,blankDat + i,5);
|
||
|
||
//sysPara->devOp->readPrintDataXor();
|
||
sysPara->devOp->readbuilDat();
|
||
if (((sysPara->status.build_dat.builTime & 0xFF00)>>8) != xor_value) {
|
||
//out << "Result: " << qSetFieldWidth(10) << left << 3.14 << 2.7;
|
||
qDebug()<<"sequence "<<i<<"error!";
|
||
if (xor_record_file.open(QFile::WriteOnly|QFile::Append)) {
|
||
QTextStream out(&xor_record_file);
|
||
// out<<QDateTime::currentDateTime().toString()<<"\n";
|
||
// out<<"sequence "<<i<<"error!"<<"\n";
|
||
// out<<"builTime "<<((sysPara->status.build_dat.builTime & 0xFF00)>>8)<<"xor_value "<<xor_value<<"\n";
|
||
xor_record_file.close();
|
||
}
|
||
//LogInfo::setRunStatusText(QString("sequence %1 error!").arg(i));
|
||
//LogInfo::setRunStatusText(tr("警告:‘-’和空格的宽度不一样"));
|
||
//LogInfo::setRunStatusText(QString("builTime %1 xor_value %2").arg(sysPara->status.build_dat.builTime).arg(xor_value));
|
||
}
|
||
i = i+5;
|
||
printDataIndex = i;
|
||
}
|
||
|
||
for (int i = 0; i< sizeof(sysPara->status.printDat) - sizeof(blankDat);) {
|
||
xor_value = 0;
|
||
xor_value ^= sysPara->status.printDat[i];
|
||
xor_value ^= sysPara->status.printDat[i+1];
|
||
xor_value ^= sysPara->status.printDat[i+2];
|
||
xor_value ^= sysPara->status.printDat[i+3];
|
||
xor_value ^= sysPara->status.printDat[i+4];
|
||
sysPara->devOp->fpgaWr(printDataIndex + i, (unsigned char*)sysPara->status.printDat + i, 5);
|
||
|
||
//sysPara->devOp->readPrintDataXor();
|
||
sysPara->devOp->readbuilDat();
|
||
if (((sysPara->status.build_dat.builTime & 0xFF00)>>8) != xor_value) {
|
||
qDebug()<<"sequence "<<printDataIndex+i<<"error!";
|
||
if (xor_record_file.open(QFile::WriteOnly|QFile::Append)) {
|
||
QTextStream out(&xor_record_file);
|
||
// out<<QDateTime::currentDateTime().toString()<<"\n";
|
||
// out<<"sequence "<<printDataIndex+i<<"error!"<<"\n";
|
||
// out<<"builTime "<<((sysPara->status.build_dat.builTime & 0xFF00)>>8)<<"xor_value "<<xor_value<<"\n";
|
||
xor_record_file.close();
|
||
}
|
||
}
|
||
i = i+5;
|
||
}
|
||
#endif
|
||
}
|
||
int MainWindow::getCurrPrintStatus()
|
||
{
|
||
int printStatus;
|
||
if (startPrintingFlag ) {
|
||
if(printintFlag) {
|
||
printStatus = 1; // 正在打印
|
||
}
|
||
else {
|
||
printStatus = 2; // 暂停喷印
|
||
}
|
||
}
|
||
else {
|
||
printStatus = 3; // 停止打印
|
||
}
|
||
return printStatus;
|
||
}
|
||
|
||
void MainWindow::updatePrintDisplayLabel(){
|
||
if(sysPara && !sysPara->status.reclainTankReachEnd){
|
||
setRunStatus(tr("回收槽未到底!!!!!!"));
|
||
}
|
||
else if(startPrintingFlag ){
|
||
if(printintFlag)
|
||
setRunStatus(tr("正在喷印..............."));
|
||
else
|
||
setRunStatus(tr("暂停喷印..............."));
|
||
}
|
||
else
|
||
setRunStatus("");
|
||
}
|
||
|
||
void MainWindow::on_pushButtonStopPrint_pressed()
|
||
{
|
||
if(sysPara->status.isPrinting){
|
||
qDebug("Mainwindow: Printing 停止打印");
|
||
}else{
|
||
qDebug("Mainwindow: Non printing 停止打印");
|
||
}
|
||
if(sysPara){
|
||
if (!sysPara->status.reclainTankReachEnd && !SIMULATE_PRINTING_MODE) {
|
||
return;
|
||
}
|
||
sysPara->status.isPrinting=false;
|
||
sysPara->devOp->printCtrl2(1);
|
||
sysPara->devOp->printCtrl( PRINT_CTRL_STOP);//:PRINT_CTRL_STOPSYNCNT
|
||
LogInfo::setRunStatusText(tr("停止打印"));
|
||
ui->pushButtonStartPrint->setEnabled(true);
|
||
|
||
ui->pushButtonPausePrint->setEnabled(false);
|
||
// ui->pushButtonPausePrint->setText(tr("暂停打印"));
|
||
enableReclaimCtrlButton(true);
|
||
printintFlag = false;
|
||
startPrintingFlag = false;
|
||
updatePrintDisplayLabel();
|
||
sysPara->status. waitHightVolOff = 1;
|
||
#ifndef __HV_FOR_WANG_DEBUG__
|
||
sysPara->status.waitHightVolOff = 3;
|
||
#endif
|
||
|
||
sysPara->saveParaToFile(); // 将相关配置保存
|
||
|
||
#ifdef RANDDEBUG
|
||
if(sysPara->status.RandomBackCnt>5 && (sysPara->status.RandomNum>0))
|
||
{
|
||
QMessageBox::StandardButton ret;
|
||
ret = QMessageBox::warning(this, tr("提示"),
|
||
tr("随机码文本将展出到U盘,请插入U盘"),
|
||
QMessageBox::Ok | QMessageBox::Cancel);
|
||
if (ret == QMessageBox::Ok){
|
||
LogInfo::setRunStatusText("正在导出随机码文件到U盘......");
|
||
sysPara->devOp->RandTxtBakup(0); //备份到U盘
|
||
LogInfo::setRunStatusText("随机码文件导出完成.");
|
||
|
||
}
|
||
}
|
||
#endif
|
||
|
||
}
|
||
}
|
||
|
||
void MainWindow::on_pushButtonPausePrint_pressed()
|
||
{
|
||
if(sysPara){
|
||
#ifdef MIMA
|
||
if(sysPara->status.WorkTimeOut && !SIMULATE_PRINTING_MODE) { sysPara->devOp->printCtrl(PRINT_CTRL_STOP);
|
||
return;
|
||
}
|
||
#endif
|
||
if (!sysPara->status.reclainTankReachEnd && !SIMULATE_PRINTING_MODE) {
|
||
return;
|
||
}
|
||
sysPara->devOp->printCtrl(PRINT_CTRL_PAUSE);
|
||
LogInfo::setRunStatusText(printintFlag?tr("暂停打印"):tr("继续打印"));
|
||
ui->pushButtonStartPrint->setEnabled(true);
|
||
//if(printintFlag){ sysPara->status.waitHightVolOff=2; }
|
||
printintFlag = !printintFlag;
|
||
//ui->pushButtonPausePrint->setText(printintFlag?tr("暂停打印"):tr("继续打印"));
|
||
//ui->pushButtonPausePrint->setText(printintFlag?tr("暂停打印\n保持高压"):tr("暂停打印\n停止高压"));
|
||
if(printintFlag)
|
||
{
|
||
ui->pushButtonPausePrint->setText(tr("继续打印\n保持高压"));
|
||
ui->pushButtonPausePrint->setStyleSheet("QPushButton{color:rgb(0, 255, 0)}");
|
||
sysPara->devOp->highVoltageCtrl(sysPara->para.HighVoltageAmplitude);
|
||
}
|
||
else
|
||
{
|
||
ui->pushButtonPausePrint->setText(tr("暂停打印\n停止高压"));
|
||
ui->pushButtonPausePrint->setStyleSheet("QPushButton{color:rgb(255, 0, 0)}");
|
||
//sysPara->devOp->highVoltageCtrl(0);
|
||
}
|
||
updatePrintDisplayLabel();
|
||
|
||
sysPara->saveParaToFile(); // 将相关配置保存
|
||
#ifdef RANDDEBUG
|
||
if(sysPara->status.RandomBackCnt>5 && (sysPara->status.RandomNum>0))
|
||
{
|
||
QMessageBox::StandardButton ret;
|
||
ret = QMessageBox::warning(this, tr("提示"),
|
||
tr("随机码文本将展出到U盘,请插入U盘"),
|
||
QMessageBox::Ok | QMessageBox::Cancel);
|
||
if (ret == QMessageBox::Ok){
|
||
LogInfo::setRunStatusText("正在导出随机码文件到U盘......");
|
||
sysPara->devOp->RandTxtBakup(0); //备份到U盘
|
||
LogInfo::setRunStatusText("随机码文件导出完成.");
|
||
|
||
}
|
||
}
|
||
#endif
|
||
|
||
}
|
||
}
|
||
|
||
void MainWindow::resetReclaimCtrlButtonText(){
|
||
ui->pushButtonReclaimTanOpen->setText(tr("开"));
|
||
ui->pushButtonReclaimTankClose->setText(tr("关"));
|
||
}
|
||
|
||
void MainWindow::enableReclaimCtrlButton(bool enable){
|
||
ui->pushButtonReclaimTanOpen->setEnabled(enable);
|
||
ui->pushButtonReclaimTankClose->setEnabled(enable);
|
||
|
||
}
|
||
|
||
void MainWindow::enablePushButtonStart(bool enable)
|
||
{
|
||
ui->pushButtonStart->setEnabled(enable);
|
||
}
|
||
|
||
void MainWindow::enablePrintButton(bool enable){
|
||
ui->pushButtonPausePrint->setEnabled(false);
|
||
ui->pushButtonStartPrint->setEnabled(enable);
|
||
ui->pushButtonStopPrint->setEnabled(enable);
|
||
}
|
||
|
||
static int mainInkPumpCtrlStatus = 0;
|
||
static int mainInkPumpCtrlCnt = 0;
|
||
//100ms 为单位
|
||
void MainWindow::airPushingProcess()
|
||
{
|
||
if(sysPara){
|
||
if (sysPara->status.airPushing) {
|
||
//qDebug()<< "start airPushingProcess "<<sysPara->status.airPushingOnTime;
|
||
// 执行排气 7 秒
|
||
setRunStatus(tr("正在排气 ..............."));
|
||
++sysPara->status.airPushingOnTime;
|
||
if(sysPara->status.airPushingOnTime >= 50) {
|
||
static int delayCount = 0;
|
||
++delayCount;
|
||
m_2sFlag = true;
|
||
//sysPara->devOp->controlInkValve(false); //关供墨阀
|
||
if(delayCount >= 40)
|
||
{
|
||
m_2sFlag = false;
|
||
}
|
||
|
||
if(delayCount >= 60)
|
||
{
|
||
delayCount = 0;
|
||
airPushTimer->stop();
|
||
sysPara->devOp->controlViscosityPump(false);
|
||
reclaimTanOpen();
|
||
//qDebug()<< "start stop";
|
||
sysPara->status.airPushingDone = 1;
|
||
sysPara->status.airPushing = 0;
|
||
sysPara->status.airPushingOnTime = 0;
|
||
}
|
||
|
||
|
||
return;
|
||
}
|
||
// if (sysPara->status.SEPTAL_POSITION > sysPara->para.septalPostion + 50) {
|
||
// sysPara->devOp->controlCycleValve(true);
|
||
// }
|
||
// else if (sysPara->status.SEPTAL_POSITION < sysPara->para.septalPostion - 50) {
|
||
// sysPara->devOp->controlCycleValve(false);
|
||
// }
|
||
// 以500ms 间隔开关循环阀
|
||
if (sysPara->status.airPushingOnTime%10 >= 5) {
|
||
sysPara->devOp->controlCycleValve(true);
|
||
}
|
||
else {
|
||
sysPara->devOp->controlCycleValve(false);
|
||
}
|
||
if (mainInkPumpCtrlStatus == 0) {
|
||
if(++mainInkPumpCtrlCnt > 15) { //100ms 为单位, 时间到关闭
|
||
sysPara->devOp->controlMainInkPump(false);
|
||
sysPara->devOp->mainInkCtrl();
|
||
mainInkPumpCtrlStatus = 1;
|
||
mainInkPumpCtrlCnt = 0;
|
||
}
|
||
}
|
||
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;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
void MainWindow::reclaimTanOpen()
|
||
{
|
||
// 还原当前模式
|
||
if (sysPara->status.airPushing) {
|
||
sysPara->status.isPumpValveControledByHand = sysPara->status.byHandStore;
|
||
}
|
||
sysPara->status.isPumpValveControledByHand = false;
|
||
sysPara->status.canRunAirPushing = 0;
|
||
sysPara->devOp->mainInkCtrl();
|
||
sysPara->devOp->controlReclaimTankClose(false);//开回收槽之前先让关回收槽停止
|
||
MySleep(1000);
|
||
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); /*回收槽动作的时候务必关高压*/
|
||
//LogInfo::setRunStatusText(sysPara->devOp->isReclaimTankOpenEnable()?tr("打开回收槽"):tr("停止打开"));
|
||
setRunStatus(sysPara->devOp->isReclaimTankOpenEnable()?tr("正在打开回收槽..."):tr("停止打开"));
|
||
if (!sysPara->para.reclaimTankTime) {
|
||
LogInfo::setRunStatusText(tr("警告!回收槽开关时间未设置!"));
|
||
}
|
||
sysPara->status.currReclaimOperationCnt = 0;
|
||
sysPara->status.reclainTankReachEnd = false;
|
||
sysPara->status.reclainOpenAppending = true;
|
||
sysPara->status.reclainCloseAppending = false;
|
||
sysPara->status.reclaimBlockedCnt = 0;
|
||
}
|
||
|
||
void MainWindow::on_pushButtonReclaimTanOpen_pressed()
|
||
{
|
||
if(sysPara){
|
||
if (!sysPara->status.reclaimTankBlockedAppending) {
|
||
if (sysPara->status.canRunAirPushing && (sysPara->status.currReclaimTankPos == 0)) { // 回收槽关闭的情况下才可以执行排气;//2019/10/24 当回收槽未在顶的位置,不需要排气
|
||
if (!sysPara->status.airPushing) { // 先执行排气后开回收槽
|
||
sysPara->status.byHandStore = sysPara->status.isPumpValveControledByHand;
|
||
sysPara->status.isPumpValveControledByHand = true;
|
||
sysPara->devOp->mainInkCtrl();
|
||
sysPara->devOp->controlCycleValve(true);
|
||
#ifdef __AIR_RELEASE_OLD__
|
||
// 粘度泵跟随循环阀动作
|
||
sysPara->devOp->controlViscosityPump(true);
|
||
#else
|
||
sysPara->devOp->controlViscosityPump(false);//关粘度泵
|
||
#endif
|
||
sysPara->devOp->controlMainInkPump(true);//主墨泵敞开
|
||
sysPara->devOp->mainInkCtrl();
|
||
sysPara->devOp->controlReclaimPump(true, false); // 回收泵开
|
||
sysPara->devOp->controlInkValve(true); //墨水阀
|
||
|
||
//qDebug()<< "start airpushings";
|
||
|
||
sysPara->status.airPushing = 1;
|
||
sysPara->status.airPushingDone = 0;
|
||
sysPara->status.airPushingOnTime = 0;
|
||
airPushTimer->start(100); // 100ms
|
||
}
|
||
}
|
||
else
|
||
reclaimTanOpen();
|
||
}
|
||
if(sysPara->status.reclaimTankBlockedAppending) {
|
||
sysPara->status.reclaimTankBlockedAppending = false;
|
||
QMessageBox::StandardButton ret;
|
||
ret = QMessageBox::warning(this, tr("警告"),
|
||
tr("回收槽之前发生阻塞或回收槽时间设置错误,是否强制将当前位置设为到顶位置?"),
|
||
QMessageBox::Ok | QMessageBox::Cancel);
|
||
if (ret == QMessageBox::Ok){
|
||
sysPara->para.reclaimTankTime = sysPara->status.currReclaimTankPos/10;
|
||
onReclainTankPositionChanged(sysPara->para.reclaimTankTime * 10);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
void MainWindow::on_pushButtonReclaimTankClose_pressed()
|
||
{
|
||
if(sysPara){
|
||
if(sysPara->status.reclaimTankBlockedAppending){
|
||
sysPara->status.reclaimTankBlockedAppending = false;
|
||
QMessageBox::StandardButton ret;
|
||
ret = QMessageBox::warning(this, tr("警告"),
|
||
tr("回收槽之前发生阻塞或回收槽时间设置错误,是否强制将当前位置设为到顶位置?"),
|
||
QMessageBox::Ok | QMessageBox::Cancel);
|
||
if (ret == QMessageBox::Ok){
|
||
sysPara->status.currReclaimTankPos = 0;
|
||
onReclainTankPositionChanged(0);
|
||
}
|
||
}
|
||
|
||
sysPara->devOp->controlReclaimTankClose(!sysPara->devOp->isReclaimTankCloseEnable());
|
||
ui->pushButtonReclaimTanOpen->setText(tr("开"));
|
||
ui->pushButtonReclaimTankClose->setText(sysPara->devOp->isReclaimTankCloseEnable()?tr("停止"):tr("关"));
|
||
enablePrintButton(SIMULATE_PRINTING_MODE);
|
||
sysPara->devOp->highVoltageCtrl(0);
|
||
//LogInfo::setRunStatusText(sysPara->devOp->isReclaimTankCloseEnable()?tr("关闭回收槽"):tr("停止关闭"));
|
||
setRunStatus(sysPara->devOp->isReclaimTankCloseEnable()?tr("正在关闭回收槽..."):tr("停止关闭"));
|
||
if(!sysPara->para.reclaimTankTime){
|
||
LogInfo::setRunStatusText(tr("警告!回收槽开关时间未设置!"));
|
||
}
|
||
sysPara->status.currReclaimOperationCnt = 0;
|
||
sysPara->status.reclainTankReachEnd = false;
|
||
sysPara->status.reclainOpenAppending = false;
|
||
sysPara->status.reclainCloseAppending = true;
|
||
sysPara->status.reclaimBlockedCnt = 0;
|
||
|
||
}
|
||
}
|
||
|
||
void MySleep(unsigned int msec);
|
||
/*
|
||
* 关机前务必保存参数
|
||
* */
|
||
void MainWindow::checkForPowerOff(){
|
||
if(sysPara->status.powerOffAppending){
|
||
if(!sysPara->status.selfCheckDone)
|
||
sysPara->status.selfCheckDone = true;
|
||
this->setDisabled(true);
|
||
emit setDisableAll();
|
||
////////关机时提高转速和回收泵压力,粘度泵和循环阀/////
|
||
quint16 gearPumpValue_backup = sysPara->para.gearPumpValue;
|
||
int reclaimPumpPWMWidth_backup = sysPara->para.reclaimPumpPWMWidth;;
|
||
if(!(sysPara->status.statWarn & WARN_STATUS_INK_WARN))
|
||
{
|
||
if(!TEST_MODE && sysPara->para.flagOfReclaimPumEnable){
|
||
for(int i=25;i>21;i--)
|
||
{
|
||
if(i == 25){
|
||
sysPara->status.isPumpValveControledByHand = true; //停止自动
|
||
sysPara->devOp->controlInkValve(true);
|
||
sysPara->devOp->controlReclaimPump(true,false);
|
||
sysPara->devOp->controlViscosityPump(true);
|
||
sysPara->devOp->controlCycleValve(true);
|
||
sysPara->para.gearPumpValue = 0;
|
||
sysPara->devOp->WriteMoterPump();
|
||
}
|
||
if(i == 22){
|
||
sysPara->devOp->controlInkValve(false);
|
||
}
|
||
this->setRunStatus(tr("正在准备关机,请等待%1秒...............").arg(i*2));
|
||
MySleep(2000);
|
||
}
|
||
}
|
||
|
||
// sysPara->status.flagOfPowerOff = true;
|
||
sysPara->devOp->fpgaWrD(0xA442,0,1);//打开回收槽
|
||
sysPara->status.isPumpValveControledByHand = true; //停止自动
|
||
if(sysPara->para.gearPumpEnable ){
|
||
if(!sysPara->para.flagOfReclaimPumEnable){
|
||
sysPara->para.gearPumpValue = 360;
|
||
sysPara->devOp->WriteMoterPump();
|
||
}
|
||
else{
|
||
sysPara->devOp->controlReclaimPump(true,false);
|
||
sysPara->para.gearPumpValue = 0;
|
||
sysPara->devOp->WriteMoterPump();
|
||
}
|
||
}
|
||
else{
|
||
sysPara->para.reclaimPumpPWMWidth = 95;
|
||
sysPara->devOp->controlReclaimPump(true,true);
|
||
}
|
||
|
||
if(!sysPara->devOp->isViscosityPumpOpen())
|
||
sysPara->devOp->controlViscosityPump(true);
|
||
sysPara->devOp->controlCycleValve(true);
|
||
sysPara->devOp->controlInkValve(false); //关供墨
|
||
|
||
if(!TEST_MODE){
|
||
for(int i=14;i>7;i--)
|
||
{
|
||
if(i==13)
|
||
sysPara->devOp->fpgaWrD(0xA442,1,1);//停止回收槽
|
||
this->setRunStatus(tr("正在准备关机,请等待%1秒...............").arg(i*3));
|
||
MySleep(3000);
|
||
}
|
||
}
|
||
|
||
if(!sysPara->status.lostCommuFlag){
|
||
sysPara->para.calandar_and_dat.cnt1CurrValue = QString::number(sysPara->status.calandar_and_dat.cnt1CurrValue,16).toInt();
|
||
sysPara->para.calandar_and_dat.cnt2CurrValue = QString::number(sysPara->status.calandar_and_dat.cnt2CurrValue,16).toInt();
|
||
sysPara->para.Counter3.cnt3CurrValue = QString::number(sysPara->status.Status_Counter3.cnt3CurrValue,16).toInt();
|
||
|
||
updateTotalCnt(0);
|
||
sysPara->saveParaToFile(); // 关机前将相关配置保存
|
||
}
|
||
sysPara->status.powerOffAppending = false;
|
||
sysPara->devOp->controlViscosityPump(false);
|
||
sysPara->devOp->controlCycleValve(false);
|
||
if(!TEST_MODE){
|
||
for(int i=7;i>0;i--)
|
||
{
|
||
if(i == 7)
|
||
sysPara->devOp->fpgaWrD(0xA442,2,1);//关闭回收槽
|
||
this->setRunStatus(tr("正在准备关机,请等待%1秒...............").arg(i*3));
|
||
MySleep(3000);
|
||
}
|
||
}
|
||
}
|
||
system("touch /home/plg/runFlag"); //表示是正常关机
|
||
emit CloseJd();
|
||
sysPara->para.gearPumpValue=gearPumpValue_backup;
|
||
sysPara->para.reclaimPumpPWMWidth = reclaimPumpPWMWidth_backup;
|
||
sysPara->devOp->controlCompressPump(false);
|
||
setRunStatus(tr("准备关机......"));
|
||
qDebug()<<"准备关机";
|
||
sysPara->para.totalProductCnt +=sysPara->status.totalProductCnt;
|
||
sysPara->devOp->clearProductCnt(3 | 0x10);//总产器计数器立即清零
|
||
sysPara->para.ReadFileErrorCnt=0;
|
||
sysPara->para.PowerOnErrorCnt=0;
|
||
if(sysPara->para.isCntSaveStateValue)
|
||
{
|
||
sysPara->para.cnt1CurrValue = QString::number(sysPara->status.calandar_and_dat.cnt1CurrValue,16).toInt();
|
||
sysPara->para.cnt2CurrValue = QString::number(sysPara->status.calandar_and_dat.cnt2CurrValue,16).toInt();
|
||
sysPara->para.cnt3CurrValue = QString::number(sysPara->status.Status_Counter3.cnt3CurrValue,16).toInt();
|
||
}
|
||
updateTotalCnt(0);
|
||
sysPara->saveParaToFile(); // 关机前将相关配置保存
|
||
|
||
#ifdef SYS_LINUX
|
||
#ifdef __STC_POWER__
|
||
sysPara->devOp->Heartbeat(0); //发送关机命令
|
||
MySleep(200);
|
||
//QProcess process;
|
||
//process.startDetached("poweroff");
|
||
//qApp->exit(0);
|
||
#endif
|
||
system("sync");//缓存同步
|
||
sleep(5);
|
||
sysPara->devOp->powerOff();
|
||
QProcess process;
|
||
process.startDetached("shutdown -h now");
|
||
//qDebug()<<"run shutdown -h now";
|
||
qApp->exit(0);
|
||
//qDebug()<<"qApp->exit(0)";
|
||
#endif
|
||
}
|
||
}
|
||
|
||
void MainWindow::on_pushButtonStart_pressed()
|
||
{
|
||
//QFont font;
|
||
//font.setPointSize(30);
|
||
// ui->pushButtonStart->setFont(font);
|
||
pushButtonFlag = !pushButtonFlag;
|
||
if(pushButtonFlag)
|
||
{
|
||
ui->pushButtonStart->setStyleSheet("QPushButton{background-color:rgb(0, 255, 0)}");
|
||
ui->pushButtonStart->setText(tr("泵启动"));
|
||
}
|
||
else
|
||
{
|
||
ui->pushButtonStart->setStyleSheet("QPushButton{background-color:rgb(255, 0, 0)}");
|
||
ui->pushButtonStart->setText(tr("泵停止"));
|
||
}
|
||
//ui->pushButtonStart->setEnabled(false);
|
||
emit pushButtonStartPressed(pushButtonFlag);
|
||
}
|
||
|
||
void MainWindow::_on_pushButtonPowerOff_pressed(bool notice){
|
||
if(sysPara){
|
||
if(sysPara->status.currReclaimTankPos != 0)
|
||
{
|
||
QMessageBox::StandardButton ret = QMessageBox::Ok;
|
||
if(notice)
|
||
ret = QMessageBox::warning(this, tr("警告"),
|
||
tr("回收槽未关,是否关闭回收槽后关机!"),
|
||
QMessageBox::Ok | QMessageBox::Cancel);
|
||
if (!notice || ret == QMessageBox::Ok){
|
||
|
||
system((char *)((QString("mkdir %1").arg(TESTDIR)).toAscii().data()));
|
||
system((char *)((QString("cp %1/*.bin %2/. ").arg(PARA_ROOT_DIR).arg(TESTDIR)).toAscii().data())); //先备份UP*
|
||
sysPara->status.reclaimCloseCnt=10;
|
||
on_pushButtonStopPrint_pressed();
|
||
on_pushButtonReclaimTankClose_pressed();
|
||
MySleep(1000);
|
||
sysPara->status.powerOffAppending = true;
|
||
enableReclaimCtrlButton(false); //所有的按钮全部屏蔽
|
||
|
||
}
|
||
}
|
||
else {
|
||
QMessageBox::StandardButton ret = QMessageBox::Ok;
|
||
if(notice)
|
||
ret = QMessageBox::warning(this, tr("警告"),
|
||
tr("是否确认关机?"),
|
||
QMessageBox::Ok | QMessageBox::Cancel);
|
||
|
||
if (!notice || ret == QMessageBox::Ok){
|
||
sysPara->status.powerOffAppending = true;
|
||
//system((char *)((QString("mkdir %1").arg(TESTDIR)).toAscii().data()));
|
||
//system((char *)((QString("cp %1/*.bin %2/. ").arg(PARA_ROOT_DIR).arg(TESTDIR)).toAscii().data())); //先备份UP*
|
||
checkForPowerOff();
|
||
}
|
||
}
|
||
}
|
||
}
|
||
void MainWindow::on_pushButtonPowerOff_pressed()
|
||
{
|
||
//if(!sysPara->status.lostCommuFlag)
|
||
_on_pushButtonPowerOff_pressed(true);
|
||
}
|
||
|
||
void MySleep(unsigned int msec)
|
||
{
|
||
|
||
QTime dieTime = QTime::currentTime().addMSecs(msec);
|
||
|
||
while( QTime::currentTime() < dieTime )
|
||
|
||
QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
|
||
|
||
}
|
||
|
||
extern MyInputMethod *myInputMethod;
|
||
|
||
void MainWindow::ontextEdittextChanged()
|
||
{
|
||
bool MaxCol4000;
|
||
if(!sysPara->status.flagOfNo67FPGA && sysPara->status.FPGAVersionType == 0 && sysPara->status.FPGAChipType != 1)
|
||
MaxCol4000 = false;
|
||
else
|
||
MaxCol4000 = true;
|
||
QSizeF size = ui->textEdit->document()->size();
|
||
ui->labelTextWidthHeight->setText(tr("[ %1行 x %2列 ]").arg(size.height()).arg(size.width()));
|
||
if(size.width() > (MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide)){
|
||
myInputMethod->getInputMethod()->on_Key_Backspace_released();
|
||
MySleep(300);
|
||
//QMessageBox::warning(this, tr("警告"),
|
||
// tr("最多支持的列数目为:%1请减小信息长度.").arg(MAX_PRINT_COL_NUM));
|
||
}
|
||
if(size.width() == 0)
|
||
{ //在通过关标选择文本然后删除的时候,不会调用cursorPosition事件
|
||
onTextEditCursorPositionChanged();
|
||
}
|
||
}
|
||
|
||
|
||
void MainWindow::onTextEditCursorPositionChanged(){
|
||
|
||
for(int i = 0; i < 2; i++){
|
||
QTextCharFormat fmt = ui->textEdit->currentCharFormat ();
|
||
QString s = ui->textEdit->document()->toPlainText();
|
||
QFont font = fmt.font();
|
||
QLabel *labelFontSize = ui->textEditOption->getLabelFontSize();
|
||
QLabel *labelFontFamily = ui->textEditOption->getLabelFontFamily();
|
||
QCheckBox *checkBoxBold = ui->textEditOption->getCheckBoxBold();
|
||
bool ok;
|
||
//qDebug()<<"onTextEditCursorPositionChanged"<< font.family()<<labelFontSize->text().toInt(&ok,10)<<s.length()<<s;
|
||
if(labelFontSize && checkBoxBold){
|
||
int DPI = labelFontSize->logicalDpiX();
|
||
DPI = DPI?DPI:1;
|
||
int pixeSize = font.pointSizeF()*DPI/72;
|
||
if(pixeSize >= Public::getMinFontPixelSize()){
|
||
labelFontSize->setText(QString::number(Public::getAdjustedPixelSize(pixeSize)));
|
||
checkBoxBold->setChecked(font.weight() == QFont::Bold);
|
||
labelFontFamily->setText(font.family());
|
||
barcode->setFontSize(Public::getAdjustedPixelSize(pixeSize));
|
||
break;
|
||
}
|
||
else {
|
||
if(s.length()<=1) {
|
||
ui->textEdit->selectAll();
|
||
font.setFamily(Public::getFontFamily(labelFontSize->text().toInt(&ok,10) ));
|
||
ui->textEditOption->setFontFormat(); //设置完格式后,在第二轮重设字体
|
||
ui->textEdit->moveCursor(QTextCursor::End);
|
||
} else
|
||
ui->textEditOption->setFontFormat(); //设置完格式后,在第二轮重设字体
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
void MainWindow::onLabelFaultRusumePressed(){
|
||
if(sysPara){
|
||
sysPara->status.flagOfSpeedAlarm = false;
|
||
sysPara->status.mainInkPumpError = false;
|
||
sysPara->status.mainInkPumpRunTmCnt = 0;
|
||
sysPara->status.compressPumpError = false;
|
||
sysPara->status.compressPumpRunTmCnt = 0;
|
||
sysPara->devOp->resumeFault();
|
||
ui->labelRunStatus->clear();
|
||
sysPara->status.beeperOnFlag = false;
|
||
sysPara->devOp->controlBeeper(false);
|
||
sysPara->status.heaterONTimeCnt = 0; //加热块计数清零
|
||
ui->labelStatusChargefault->setPixmap(QPixmap(QString::fromUtf8(":/image/ALARMGreen.PNG")));
|
||
sysPara->status.DACDisable = false;
|
||
sysPara->status.lastPhaseFault = 0;
|
||
sysPara->status.phaseErrorCnt = 0;
|
||
sysPara->status.lastHighVoltageFault = false;
|
||
|
||
if(sysPara->status.gearPumpRunStopFlag && pushButtonFlag)
|
||
{
|
||
emit repeatInitedPid();
|
||
sysPara->status.gearPumpRunStopFlag = false;//齿轮泵报警恢复
|
||
}
|
||
if((sysPara->devOp->color_flag == 2) ||(sysPara->devOp->color_flag == 1)||(sysPara->devOp->color_flag == 4))
|
||
{
|
||
sysPara->devOp->color_flag = 3;
|
||
sysPara->devOp->controlYellowLight(false);
|
||
sysPara->devOp->controlRedLight(false);
|
||
}
|
||
sysPara->status.visocityValueOverflowNum = 0;
|
||
|
||
if(sysPara->status.visocityValueOverflowNum>=MAX_ALLOW_VISICOSITY_OVERFLOW_NUM) //
|
||
sysPara->status.viscosityFault = 0;
|
||
|
||
sysPara->status.powerOffAfterPhaseFaultAppending = 0;
|
||
sysPara->status.lastwarmInkPump = 0;
|
||
sysPara->status.RecycleWarnCnt =0;
|
||
sysPara->status.lastRecycleWarn =0 ;
|
||
sysPara->status.powerOffAfterInkOrSOLVEmptyAppending=0;
|
||
//sysPara->status.lastStatWarn=0; // 机器报故障后,点击故障恢复按钮,再点击打印按钮,“正在喷印中…”字符未立即显示出来,需等待大约10秒才会出现。
|
||
//LogInfo::setRunStatusText(tr("故障恢复"));
|
||
sysPara->status.RecycleWarnCnt=0;
|
||
sysPara->status.HVFaultCloseEn=0;
|
||
|
||
if(sysPara->status.flagOfPressureFault){
|
||
sysPara->status.flagOfPressureFault = false;
|
||
sysPara->status.isPumpValveControledByHand = false;
|
||
sysPara->devOp->mainInkCtrl();
|
||
emit clearPressureFault();
|
||
}
|
||
|
||
if(printintFlag)
|
||
sysPara->devOp->highVoltageCtrl(sysPara->para.HighVoltageAmplitude);
|
||
}
|
||
}
|
||
|
||
void MainWindow::onEnableReclaimCtrlButton(bool flag)
|
||
{
|
||
enableReclaimCtrlButton(flag);
|
||
}
|
||
|
||
void MainWindow::onLabelProductCntPressed(){
|
||
if(sysPara){
|
||
QMessageBox::StandardButton ret;
|
||
ret = QMessageBox::warning(this, tr("警告"),
|
||
tr("是否初始化产品计数?"),
|
||
QMessageBox::Ok | QMessageBox::Cancel);
|
||
if (ret == QMessageBox::Ok){
|
||
updateTotalCnt(0);
|
||
sysPara->devOp->clearProductCnt(1);
|
||
sysPara->saveParaToFile();
|
||
|
||
}
|
||
}
|
||
}
|
||
|
||
void MainWindow::onLabelTotalProductCntPressed(){
|
||
if(sysPara){
|
||
QMessageBox::StandardButton ret;
|
||
ret = QMessageBox::warning(this, tr("警告"),
|
||
tr("是否清除总产品计数?"),
|
||
QMessageBox::Ok | QMessageBox::Cancel);
|
||
if (ret == QMessageBox::Ok){
|
||
sysPara->devOp->clearProductCnt(1 | 0x10 );// [3]总产品计数器清零FPGA
|
||
sysPara->para.totalProductCnt = 0;
|
||
|
||
}
|
||
}
|
||
}
|
||
|
||
void MainWindow::onPushButtonCNTResetNowPressed(){
|
||
if(sysPara){
|
||
|
||
QMessageBox::StandardButton ret;
|
||
ret = QMessageBox::warning(this, tr("警告"),
|
||
tr("是否立即重新计米?"),
|
||
QMessageBox::Ok | QMessageBox::Cancel);
|
||
if (ret == QMessageBox::Ok){
|
||
sysPara->devOp->clearProductCnt(3 | 0x10);// [3]总产品计数器清零FPGA
|
||
sysPara->para.totalProductCnt = 0;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
|
||
}
|
||
|
||
void MainWindow::on_bottonEditText_pressed()
|
||
{
|
||
//qDebug()<<"EditMode"<<sysPara->para.EditMode;
|
||
if(sysPara->para.EditMode==TXTFILE){
|
||
bool MaxCol4000;
|
||
if(!sysPara->status.flagOfNo67FPGA && sysPara->status.FPGAVersionType == 0 && sysPara->status.FPGAChipType != 1)
|
||
MaxCol4000 = false;
|
||
else
|
||
MaxCol4000 = true;
|
||
ui->stackedWidgetText->setCurrentWidget(ui->pageTextEdit);
|
||
ui->stackedWidgetOption->setCurrentWidget(ui->textEditOption);
|
||
ontextEdittextChanged(); //显示大小
|
||
int coldot = (int)ui->textEdit->document()->size().width();
|
||
if(coldot > (MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide))
|
||
{
|
||
coldot = MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide;
|
||
QMessageBox::warning(this, tr("警告"),
|
||
tr("最多支持的列数目为:%1请减小信息长度.").arg((MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide)));
|
||
}
|
||
}
|
||
else if(sysPara->para.EditMode==PICFILE){
|
||
emit openCurrFile(sysPara->para.lastOpenedFileName);
|
||
}
|
||
else if(sysPara->para.EditMode==SCENE){
|
||
//qDebug()<<"SCENE";
|
||
//emit openCurrFile(sysPara->para.lastOpenedFileName);
|
||
ui->stackedWidgetText->setCurrentWidget(ui->fileSceneViewer);
|
||
ui->stackedWidgetOption->setCurrentWidget(ui->senceEditOption);
|
||
}
|
||
|
||
}
|
||
|
||
void MainWindow::on_pushButtonReduceTextDisplay_pressed()
|
||
{
|
||
ui->widgetPrintTextDisplay->reduceDisplay();
|
||
}
|
||
|
||
void MainWindow::on_pushButtonEnlargeTextDisplay_pressed()
|
||
{
|
||
|
||
ui->widgetPrintTextDisplay->enlargeDisplay();
|
||
//update();
|
||
}
|
||
|
||
/*
|
||
* value以100ms为单位
|
||
* */
|
||
void MainWindow::onReclainTankPositionChanged(int value){
|
||
static bool init = false;
|
||
static int totalCharNum = 0;
|
||
if(!init){
|
||
int w = ui->labelReclaimStatus->geometry().width() - 1; //预留几个像素
|
||
QFontMetrics fontMetrics = QApplication::fontMetrics();
|
||
w -= fontMetrics.width(QString(" |>|"));
|
||
int t = fontMetrics.width(QChar('-'));
|
||
if(fontMetrics.width(QChar('-')) != fontMetrics.width(QChar(' '))){
|
||
LogInfo::setRunStatusText(tr("警告:‘-’和空格的宽度不一样")); //可能有的字体两者宽度不同
|
||
}
|
||
totalCharNum = t?w/t:w; //t永远都不应该为零,保险起见
|
||
init = true;
|
||
}
|
||
if(sysPara){
|
||
int reclaimTime = sysPara->para.reclaimTankTime?sysPara->para.reclaimTankTime:15;
|
||
int charNum = value*totalCharNum/(reclaimTime*10);
|
||
charNum = (charNum > totalCharNum)?totalCharNum:charNum;
|
||
QString str = " |";
|
||
for(int i = 0; i <= totalCharNum; i++){ //多加”>|“
|
||
if(i < charNum)
|
||
str.append(QChar('-'));
|
||
else if(i == charNum)
|
||
str.append(QChar('>'));
|
||
else
|
||
str.append(QChar(' '));
|
||
}
|
||
str.append(QChar('|'));
|
||
ui->labelReclaimStatus->setText(str);
|
||
}
|
||
}
|
||
|
||
|
||
void MainWindow::setRunStatus(QString str){
|
||
// QFont ft;
|
||
// ft.setPointSize(16);
|
||
// ft.setBold(true);
|
||
// ft.setFamily("Microsoft YaHei");
|
||
// ui->labelRunStatus->setFont(ft);P>p>
|
||
switch(sysPara->devOp->color_flag){
|
||
case 1:
|
||
ui->labelRunStatus->setStyleSheet("color:yellow");
|
||
break;
|
||
case 2:
|
||
ui->labelRunStatus->setStyleSheet("color:red");
|
||
break;
|
||
default:
|
||
ui->labelRunStatus->setStyleSheet("color:black");
|
||
break;
|
||
}
|
||
ui->labelRunStatus->setText(str);
|
||
}
|
||
|
||
|
||
void MainWindow::changeTxtMode(QString str){
|
||
if(sysPara){
|
||
fileChange=true;
|
||
sysPara->status.FileChangeRestCntFlag = true;
|
||
emit openFileChange();
|
||
unsigned char SpecialVarEnable = 0;
|
||
sysPara->devOp->fpgaWr(0xa4b0,(unsigned char *)&SpecialVarEnable,1);
|
||
}
|
||
}
|
||
|
||
void MainWindow::update_scroll()
|
||
{
|
||
ui->widgetPrintTextDisplay->scroll_update();
|
||
}
|
||
|
||
void MainWindow::changeEditMode(int editMode)
|
||
{
|
||
if(sysPara){
|
||
//qDebug()<<"changeEditMode"<<sysPara->para.EditMode;
|
||
if(sysPara->para.EditMode==PICFILE){
|
||
ui->stackedWidgetText->setCurrentWidget(ui->pagePrintTextDisplay);
|
||
ui->stackedWidgetOption->setCurrentWidget(ui->pageOption);
|
||
ui->widgetPrintTextDisplay->update();
|
||
ui->pushButtonTXTOpen->show();
|
||
ui->textEditOption->editMode=sysPara->para.EditMode;
|
||
}
|
||
else if(sysPara->para.EditMode==TXTFILE)
|
||
{
|
||
// ui->stackedWidgetText->setCurrentWidget(ui->pageTextEdit);
|
||
// ui->stackedWidgetOption->setCurrentWidget(ui->textEditOption);
|
||
sysPara->para.EditMode=TXTFILE;
|
||
ui->stackedWidgetText->setCurrentWidget(ui->pageTextEdit);
|
||
ui->stackedWidgetOption->setCurrentWidget(ui->textEditOption);
|
||
ui->widgetPrintTextDisplay->update();
|
||
ui->pushButtonTXTOpen->hide();
|
||
ui->textEditOption->editMode=sysPara->para.EditMode;
|
||
ui->textEditOption->editItemModeDone();
|
||
}
|
||
else if(sysPara->para.EditMode==SCENE)
|
||
{
|
||
//qDebug()<<"CCCCCENE";
|
||
sysPara->para.EditMode=SCENE;
|
||
ui->stackedWidgetText->setCurrentWidget(ui->fileSceneViewer);
|
||
ui->stackedWidgetOption->setCurrentWidget(ui->senceEditOption);
|
||
ui->widgetPrintTextDisplay->update();
|
||
ui->pushButtonTXTOpen->hide();
|
||
ui->textEditOption->editMode=sysPara->para.EditMode;
|
||
}
|
||
//ontextEdittextChanged(); //显示大小 20140831
|
||
if(sysPara->para.EditMode==SCENE)
|
||
{
|
||
onSwitchTimerShowItem(true);
|
||
}
|
||
else
|
||
{
|
||
onSwitchTimerShowItem(false);
|
||
}
|
||
}
|
||
}
|
||
|
||
TextEditOption* MainWindow::getTexteditOption()
|
||
{
|
||
return ui->textEditOption;
|
||
}
|
||
|
||
void MainWindow::SetEditMode(int mode)
|
||
{
|
||
ui->textEditOption->editMode = sysPara->para.EditMode;
|
||
// if(sysPara->para.EditMode==SCENE)
|
||
// {
|
||
// timerShowItem->start(10);
|
||
// }
|
||
}
|
||
|
||
void MainWindow::setRunStatus(QPixmap pixMap){
|
||
ui->labelRunStatus->setPixmap(pixMap);
|
||
}
|
||
void MainWindow::SetMainTabEdit(int n){
|
||
|
||
}
|
||
|
||
void MainWindow::testPrint(){
|
||
//on_pushButtonStartPrint_pressed();
|
||
}
|
||
|
||
|
||
void MainWindow::onEditBarCode(){
|
||
#ifdef _2DCODE_
|
||
if(sysPara) {
|
||
dlgqrcode->move( 0,10);
|
||
barcode->setWindowTitle(tr("条形码信息编辑"));
|
||
//qDebug()<<"bcOption->height"<<sysPara->para.bcOption.height;
|
||
barcode->SetOption((bcOption_t*)&sysPara->para.bcOption);
|
||
barcode->show();
|
||
//barcode->GetOption((bcOption_t*)&sysPara->para.bcOption);
|
||
}
|
||
#endif
|
||
|
||
}
|
||
void MainWindow::onBarCodeClose(){
|
||
#ifdef _2DCODE_
|
||
barcode->GetOption((bcOption_t*)&sysPara->para.bcOption);
|
||
// unsigned char *dat = sysPara->status.printDat;
|
||
unsigned char *dat;
|
||
bool MaxCol4000;
|
||
if(!sysPara->status.flagOfNo67FPGA && sysPara->status.FPGAVersionType == 0 && sysPara->status.FPGAChipType != 1)
|
||
MaxCol4000 = false;
|
||
else
|
||
MaxCol4000 = true;
|
||
if(MaxCol4000){
|
||
dat =sysPara->status.printDat_Normal;
|
||
}else{
|
||
dat =sysPara->status.printDat;
|
||
}
|
||
if(barcode->flagCount)
|
||
{
|
||
barcode->getDat(dat,0);
|
||
barcode->flagCount=0;
|
||
ui->widgetPrintTextDisplay->update();
|
||
}
|
||
if(barcode->flagInsert )
|
||
{
|
||
barcode->flagInsert=0;
|
||
if(sysPara->para.EditMode==PICFILE)
|
||
{
|
||
|
||
}
|
||
else
|
||
{
|
||
//ui->textEditOption->InsertBarCodeToEdit(barcode->pictureName,barcode->imgBar.width(),barcode->imgBar.height());
|
||
QString html = "<img src='" + barcode->pictureName + "'/>";
|
||
QTextCharFormat fmt = ui->textEditOption->textEdit->currentCharFormat ();
|
||
ui->textEditOption->textEdit->insertHtml (html);
|
||
ui->textEditOption->textEdit->mergeCurrentCharFormat(fmt);
|
||
ui->stackedWidgetText->setCurrentWidget(ui->pageTextEdit);
|
||
ui->stackedWidgetOption->setCurrentWidget(ui->textEditOption);
|
||
}
|
||
}
|
||
sysPara->saveParaToFile();
|
||
#endif
|
||
}
|
||
|
||
void MainWindow::onEditQRCode(){
|
||
#ifdef _2DCODE_
|
||
if(sysPara) {
|
||
dlgqrcode->SetOption((qrOption_t*)&sysPara->para.qrOption);
|
||
dlgqrcode->move( (this->width() - dlgqrcode->width())/2 ,10);
|
||
dlgqrcode->setWindowTitle(tr("二维码信息编辑"));
|
||
|
||
dlgqrcode->setCntCheckBoxHide(1);
|
||
|
||
dlgqrcode->show();
|
||
}
|
||
#endif
|
||
}
|
||
void MainWindow::onInitQRCode(){
|
||
#ifdef _2DCODE_
|
||
if(sysPara) {
|
||
dlgqrcode->SetOption((qrOption_t*)&sysPara->para.qrOption);
|
||
dlgqrcode->move( (this->width() - dlgqrcode->width())/2 ,10);
|
||
dlgqrcode->setWindowTitle(tr("二维码信息编辑"));
|
||
//dlgqrcode->show();
|
||
}
|
||
#endif
|
||
}
|
||
void MainWindow::onQRCodeClose(){
|
||
#ifdef _2DCODE_
|
||
dlgqrcode->GetOption((qrOption_t*)&sysPara->para.qrOption);
|
||
if(dlgqrcode->flagInsert ) {
|
||
//dlgqrcode->GetOption((qrOption_t*)&sysPara->para.qrOption);
|
||
dlgqrcode->flagInsert=0;
|
||
if(sysPara->para.EditMode==PICFILE){
|
||
|
||
}
|
||
else {
|
||
// qDebug()<<"flagInsert2"<<dlgqrcode->flagInsert<<dlgqrcode->bcWidth<<dlgqrcode->bcHeight;
|
||
ui->textEditOption->InsertBarCodeToEdit(dlgqrcode->pictureName,dlgqrcode->bcWidth,dlgqrcode->bcHeight);
|
||
ui->stackedWidgetText->setCurrentWidget(ui->pageTextEdit);
|
||
ui->stackedWidgetOption->setCurrentWidget(ui->textEditOption);
|
||
|
||
}
|
||
}
|
||
if( sysPara->para.qrOption.barCodeFlag != dlgqrcode->barCodeFlag)
|
||
{
|
||
sysPara->para.qrOption.barCodeFlag = dlgqrcode->barCodeFlag;
|
||
ui->textEditOption->textEdit->setHtml(QApplication::translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
|
||
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
|
||
"p, li { white-space: pre-wrap; }\n"
|
||
"</style></head><body style=\" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
|
||
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'wenquanyi'; font-size:10pt;\"><br /></p></body></html>", 0, QApplication::UnicodeUTF8));
|
||
}
|
||
sysPara->saveParaToFile();
|
||
#endif
|
||
}
|
||
|
||
void MainWindow::onGenerateQRCode(QString strData)
|
||
{
|
||
dlgqrcode->extSetText(strData);
|
||
dlgqrcode->GetOption((qrOption_t *)&sysPara->para.qrOption);
|
||
}
|
||
|
||
void MainWindow::onShowAndHideItem()
|
||
{
|
||
/////////特殊条件
|
||
//while(1)
|
||
{
|
||
static bool startFlag= false, lastStarFlag = false;
|
||
|
||
QList<QGraphicsItem *> items = pPicScene->items();
|
||
foreach (QGraphicsItem *item, items)
|
||
{
|
||
PicTextItem *picText = qgraphicsitem_cast<PicTextItem*>(item);
|
||
if(picText->SpecialConditions)
|
||
{
|
||
//setRunStatus(tr("六个内容(%1,%2)").arg(picText->CatchCnt1CurrValue).arg(QString::number(sysPara->status.calandar_and_dat.cnt1CurrValue,16).toInt()));
|
||
if(picText->CatchCnt1StartValue <= QString::number(sysPara->status.calandar_and_dat.cnt1CurrValue,16).toInt() &&
|
||
QString::number(sysPara->status.calandar_and_dat.cnt1CurrValue,16).toInt() <= picText->CatchCnt1CurrValue)
|
||
{
|
||
picText->show();
|
||
startFlag = true;
|
||
}
|
||
else
|
||
{
|
||
picText->hide();
|
||
startFlag = false;
|
||
}
|
||
if(startFlag != lastStarFlag)
|
||
{
|
||
lastStarFlag = startFlag;
|
||
//on_pushButtonStartPrint_pressed();
|
||
if(sysPara->para.EditMode == TXTFILE||sysPara->para.EditMode== PICFILE)
|
||
PreviewPressed(); //生成打印数据,确定变量的位置和对应生成字模
|
||
else if(sysPara->para.EditMode == SCENE)
|
||
onPreviewScene();
|
||
// unsigned char blankDat[BLANK_COL_NUM*MAX_PRINT_ROW_BYTE_NUM];
|
||
// memset(blankDat,0,sizeof(blankDat));
|
||
// sysPara->devOp->fpgaWr(0,blankDat,sizeof(blankDat));//...所加的空白偏移地址
|
||
// sysPara->devOp->fpgaWr(sizeof(blankDat),sysPara->status.printDat,sizeof(sysPara->status.printDat)-sizeof(blankDat));
|
||
}
|
||
}
|
||
}
|
||
//QApplication::processEvents();
|
||
}
|
||
//////////////
|
||
}
|
||
|
||
void MainWindow::onSwitchTimerShowItem(bool flag)
|
||
{
|
||
if(flag)
|
||
{
|
||
// timerShowItem->start(10);
|
||
}
|
||
else
|
||
{
|
||
timerShowItem->stop();
|
||
unsigned char SpecialVarEnable = 0;
|
||
sysPara->devOp->fpgaWr(0xa4b0,(unsigned char *)&SpecialVarEnable,1);
|
||
}
|
||
}
|
||
|
||
void MainWindow::JSON_UpdateDATA(){
|
||
|
||
QLabel *labelFontSize = ui->textEditOption->getLabelFontSize();
|
||
bool ok;
|
||
int font_size = labelFontSize->text().toInt(&ok,10);
|
||
QString font_family = Public::getFontFamily(font_size);
|
||
static int save_uniCode = 33; //数据码固定33位
|
||
ui->textEditOption->textEdit->clear();
|
||
|
||
QString strContentPrint(sysPara->Get_JSON_DATA.PrintingContent);
|
||
strContentPrint.replace(' '," ");
|
||
QString strContent = sysPara->Get_JSON_DATA.QRCodeContent;
|
||
int left_int = strContent.indexOf("https://dwz.cn/");
|
||
if(left_int == 0)
|
||
{
|
||
strContent = strContent.mid(8, strContent.size());
|
||
strContent = "www." + strContent;
|
||
}
|
||
if(sysPara->para.isRemoveCode)
|
||
{
|
||
QSize size(2,5);
|
||
QImage image(size,QImage::Format_ARGB32);
|
||
image.fill(0x00ffffff);//填充白色
|
||
//image.fill(0x00f0f000);//填充白色
|
||
// QPainter painter(&image);
|
||
// //image.save("./printImage.jpg");
|
||
// ui->textEdit->document()->drawContents (&painter, image.rect()); /*将text写到pic*/
|
||
image.save("/home/plg/doc/modbusQR.bmp");
|
||
}
|
||
else
|
||
{
|
||
if(dlgqrcode->barCodeFlag == 1)
|
||
{
|
||
barcode->extSetText(QString::fromUtf8(strContent.toStdString().c_str()));
|
||
barcode->GetOption((bcOption_t*)&sysPara->para.bcOption);
|
||
}
|
||
else
|
||
{
|
||
dlgqrcode->extSetText(QString::fromUtf8(strContent.toStdString().c_str()), true);
|
||
dlgqrcode->GetOption((qrOption_t *)&sysPara->para.qrOption);
|
||
}
|
||
}
|
||
QString save_text = ui->textEditOption->textEdit->toHtml();
|
||
|
||
if(save_text.contains("<img src=\"/home/plg/doc/modbusQR.bmp\" />", Qt::CaseSensitive)){
|
||
int left_int = save_text.indexOf("<img src=\"/home/plg/doc/modbusQR.bmp\" />");
|
||
QString str_html = save_text.left(left_int); //get the QRcode pic left html
|
||
QString right_str_html = save_text.mid(left_int, save_text.size());
|
||
|
||
|
||
// qDebug()<<"right_str_html="<<right_str_html;
|
||
//插入打印内容
|
||
#if 0
|
||
left_int = str_html.lastIndexOf("<span style=\" font-family:");
|
||
str_html = str_html.left(left_int);
|
||
str_html += QString::fromUtf8("<span style=\" font-family:'%1'; font-size:%2pt;font-weight:%3;\">").arg(font_family).arg(font_size)
|
||
.arg(ui->textEditOption->getCheckBoxBold()->isChecked()? 600:400);
|
||
//str_html += QString::fromUtf8(sysPara->Get_JSON_DATA.PrintingContent);
|
||
str_html += strContentPrint.toUtf8();
|
||
str_html += "</span>";
|
||
#endif
|
||
|
||
if(!sysPara->para.isRemoveDigitCode)
|
||
{
|
||
str_html += "<img src=\"/home/plg/doc/modbusQR.bmp\" />";
|
||
|
||
// qDebug()<<"str_html="<<str_html;
|
||
|
||
/*
|
||
*example"
|
||
<span style=" font-family:'wenquanyi'; font-size:12pt;">
|
||
201289985295612398451182413082479asd</span>
|
||
<span style=" font-family:'wenquanyi'; font-size:12pt;">
|
||
asdasdasdasd</span></p></td></tr></table></body></html>
|
||
*/
|
||
|
||
left_int = right_str_html.indexOf(";\">") + 1;
|
||
int index_size = QString(";\">").size();
|
||
QString right_html = right_str_html.mid(left_int+index_size+save_uniCode, right_str_html.size());
|
||
save_uniCode = QString::fromUtf8(sysPara->Get_JSON_DATA.ProductUniqueCode).size();
|
||
// qDebug()<<"right_html="<<right_html;
|
||
|
||
QString txt_fomart = QString::fromUtf8("<span style=\" font-family:'%1'; font-size:%2pt;font-weight:%3;\"> ").arg(font_family)
|
||
.arg(font_size).arg(ui->textEditOption->getCheckBoxBold()->isChecked()? 600:400);
|
||
txt_fomart += QString::fromUtf8(sysPara->Get_JSON_DATA.ProductUniqueCode);
|
||
|
||
if(!right_html.startsWith("<")){ //situation: "$ProductUniqueCodexxxx</span>"
|
||
QString crash_word = right_html.left(right_html.indexOf("<"));
|
||
txt_fomart += crash_word;
|
||
// qDebug()<<"crash_word="<<crash_word;
|
||
}
|
||
txt_fomart += "</span>";
|
||
str_html += txt_fomart;
|
||
|
||
left_int = right_html.indexOf("</span>");
|
||
index_size = QString("</span>").size();
|
||
QString final_str = right_html.mid(left_int +index_size, right_html.size());
|
||
|
||
str_html += final_str;
|
||
}
|
||
else
|
||
{
|
||
str_html += right_str_html;
|
||
}
|
||
// QMessageBox::StandardButton ret;
|
||
// ret = QMessageBox::question(this, tr("提示"),tr("是否接收新的信息!"), QMessageBox::Ok | QMessageBox::Cancel);
|
||
// if (ret == QMessageBox::Ok)
|
||
{
|
||
ui->textEditOption->textEdit->setHtml(str_html);
|
||
ui->textEditOption->textEdit->moveCursor(QTextCursor::EndOfLine);
|
||
}
|
||
}
|
||
else{
|
||
QString txt_fomart = "";
|
||
#if 1
|
||
txt_fomart += QString::fromUtf8("<span style=\" font-family:'%1'; font-size:%2pt;font-weight:%3;\">").arg(font_family).arg(font_size)
|
||
.arg(ui->textEditOption->getCheckBoxBold()->isChecked()? 600:400);
|
||
txt_fomart += strContentPrint.toUtf8();
|
||
txt_fomart += "</span>";
|
||
#endif
|
||
//ui->textEditOption->textEdit->insertHtml(txt_fomart);
|
||
|
||
//ui->textEditOption->modbus_insert_pic("/home/plg/doc/modbusQR.bmp");
|
||
//QString html = "<img src='" + filePath + "'/>";
|
||
txt_fomart += "<img src=\"/home/plg/doc/modbusQR.bmp\" />";
|
||
txt_fomart += QString::fromUtf8("<span style=\" font-family:'%1'; font-size:%2pt;font-weight:%3;\"> </span>").arg(font_family).arg(font_size);
|
||
|
||
if(!sysPara->para.isRemoveDigitCode)
|
||
{
|
||
txt_fomart += QString::fromUtf8("<span style=\" font-family:'%1'; font-size:%2pt;font-weight:%3;\"> ").arg(font_family).arg(font_size)
|
||
.arg(ui->textEditOption->getCheckBoxBold()->isChecked()? 600:400);
|
||
txt_fomart += QString::fromUtf8(sysPara->Get_JSON_DATA.ProductUniqueCode);
|
||
save_uniCode = QString::fromUtf8(sysPara->Get_JSON_DATA.ProductUniqueCode).size();
|
||
txt_fomart += " </span>";
|
||
}
|
||
else
|
||
{
|
||
txt_fomart += QString::fromUtf8("<span style=\" font-family:'%1'; font-size:%2pt;font-weight:%3;\"> </span>").arg(font_family).arg(font_size);
|
||
}
|
||
// QMessageBox::StandardButton ret;
|
||
// ret = QMessageBox::question(this, tr("提示"),tr("是否接收新的信息!"), QMessageBox::Ok | QMessageBox::Cancel);
|
||
// if (ret == QMessageBox::Ok)
|
||
{
|
||
ui->textEditOption->textEdit->insertHtml(txt_fomart);
|
||
}
|
||
// QString refresh_text = ui->textEditOption->textEdit->toHtml();
|
||
// ui->textEditOption->textEdit->setHtml(refresh_text);
|
||
// ui->textEditOption->textEdit->moveCursor(QTextCursor::EndOfLine);
|
||
}
|
||
|
||
if(sysPara->para.EditMode == TXTFILE||sysPara->para.EditMode== PICFILE)
|
||
PreviewPressed(); //生成打印数据,确定变量的位置和对应生成字模
|
||
else if(sysPara->para.EditMode == SCENE)
|
||
onPreviewScene();
|
||
//on_pushButtonStartPrint_pressed();
|
||
|
||
ui->label_24->setFocus(); //prevent keyboard pop up
|
||
}
|
||
|
||
QStringList stringListRecive;
|
||
|
||
// mdOpenFile(QString("/home/plg/doc/%1").arg(fileName));
|
||
void MainWindow::modbusUpdateQRCode(){
|
||
// QString temp = QString();
|
||
sysPara->modbusStatus.printFinishFlag = 0;//置打印标志
|
||
sysPara->status.printDoneFlag = false;
|
||
static QString lastReceiveContent = "";
|
||
char temp[120] = {0};
|
||
int i,j = 0;
|
||
for(i=0; i<110; i+=2)
|
||
{
|
||
//if(sysPara->modbusParas.QRcode_buf[i] == 0) break;
|
||
temp[j] = sysPara->modbusParas.QRcode_buf[i];
|
||
j++;
|
||
}
|
||
if(strlen(&temp[1]) == 0)
|
||
{
|
||
LogInfo::setRunStatusText(tr("获取DM码内容为空!"));
|
||
return;
|
||
}
|
||
|
||
if(sysPara->para.EditMode == TXTFILE)
|
||
{
|
||
QString receiveContent = QString::fromUtf8(&temp[1]);
|
||
dlgqrcode->extSetText(receiveContent);
|
||
LogInfo::setRunStatusText(tr("获取DM码内容:"));
|
||
LogInfo::setRunStatusText(receiveContent);
|
||
|
||
// dlgqrcode->extSetText("asbasb");
|
||
dlgqrcode->GetOption((qrOption_t *)&sysPara->para.qrOption);
|
||
|
||
// ui->textEditOption->modbus_insert_pic("/home/plg/doc/QR_aa.bmp");
|
||
ui->textEditOption->textEdit->clear();//插入之前先清空
|
||
//ui->textEditOption->modbus_insert_pic("/home/plg/doc/modbusQR.bmp");
|
||
QString html = "<img src=\"/home/plg/doc/modbusQR.bmp\" />";
|
||
ui->textEditOption->textEdit->setHtml(html);
|
||
ui->textEditOption->textEdit->moveCursor(QTextCursor::EndOfLine);
|
||
//sysPara->modbusStatus.printFinishFlag = 0;//置打印标志
|
||
if(receiveContent == lastReceiveContent)
|
||
{
|
||
LogInfo::setRunStatusText(tr("获取DM码内容跟上次相同"));
|
||
//sysPara->modbusStatus.printFinishFlag = 1;//置打印标志
|
||
MySleep(200);
|
||
sysPara->status.printDoneFlag = true;
|
||
return;
|
||
}
|
||
lastReceiveContent = receiveContent;
|
||
sysPara->status.oneCodePrintOnce = true;
|
||
on_pushButtonStartPrint_pressed();//开始打印
|
||
}
|
||
else if(sysPara->para.EditMode == SCENE)
|
||
{
|
||
QString receiveContent = QString::fromUtf8(&temp[1]);
|
||
LogInfo::setRunStatusText(tr("获取DM码内容:"));
|
||
LogInfo::setRunStatusText(receiveContent);
|
||
if(receiveContent == lastReceiveContent)
|
||
{
|
||
LogInfo::setRunStatusText(tr("获取DM码内容跟上次相同"));
|
||
//sysPara->modbusStatus.printFinishFlag = 1;//置打印标志
|
||
MySleep(200);
|
||
sysPara->status.printDoneFlag = true;
|
||
return;
|
||
}
|
||
lastReceiveContent = receiveContent;
|
||
|
||
stringListRecive = receiveContent.split(";");
|
||
|
||
QString lastopenedFileName = sysPara->para.lastOpenedFileName;
|
||
lastopenedFileName = QFileInfo(lastopenedFileName).baseName();
|
||
//LogInfo::setRunStatusText(tr("@文件名:"));
|
||
//LogInfo::setRunStatusText(lastopenedFileName);
|
||
int left_int = lastopenedFileName.indexOf('@');
|
||
if(left_int == 0)
|
||
{
|
||
//LogInfo::setRunStatusText(tr("文件名:1"));
|
||
sysPara->status.forTemplateUse = true;
|
||
emit scenefileOpen(sysPara->para.lastOpenedFileName,false);//sceneeditoption 接收这个信号然后打开文件
|
||
//emit fileNameChanged(QFileInfo(filePath).fileName());
|
||
sysPara->status.forTemplateUse = false;
|
||
sysPara->status.oneCodePrintOnce = true;
|
||
on_pushButtonStartPrint_pressed();//开始打印
|
||
}
|
||
}
|
||
|
||
|
||
}
|
||
|
||
void MainWindow::onUpdateDispQRCode(int type){
|
||
#ifdef _2DCODE_
|
||
int varNum;
|
||
|
||
qDebug()<<"onUpdateDispQRCode";
|
||
//QRcode string test
|
||
// static int cc = 0;
|
||
for(varNum=0;varNum<sysPara->status.QRvariNum;varNum++){
|
||
|
||
|
||
if(sysPara->print.QRvars[varNum].type<2)
|
||
{
|
||
sysPara->print.QRvars[varNum].Counter = sysPara->para.qrOption.counter;
|
||
sysPara->print.QRvars[varNum].cntNum = sysPara->para.qrOption.cntNum;
|
||
|
||
//QRcode string test
|
||
// qDebug()<<"QRcode string test";
|
||
// ++cc;
|
||
// QString text = "12345679801234567980123456798012345679801234567980";
|
||
// text+=QString::number(cc%100);
|
||
// dlgqrcode->extSetText(text);
|
||
// dlgqrcode->GetOption((qrOption_t *)&sysPara->para.qrOption);
|
||
|
||
|
||
dlgqrcode->TextToQRImg((qrOption_t *)&sysPara->para.qrOption); //
|
||
dlgqrcode->getDat(sysPara,varNum);
|
||
}else if(sysPara->print.QRvars[varNum].type==2)
|
||
{
|
||
QString txt,txt2,txt3,txt4,txtVar1,txtVar2;
|
||
//char fmt[]="%08d%04d";
|
||
txt2=sysPara->para.bcOption.TxtModule;
|
||
txt3=sysPara->para.bcOption.TxtLine;
|
||
txt4=sysPara->para.bcOption.TxtLine1;
|
||
sysPara->para.bcOption.var1Type =1;
|
||
sysPara->para.bcOption.var2Type =2;
|
||
txtVar1=barcode->getVarTxt(sysPara->para.bcOption.var1En,sysPara->para.bcOption.var1Type);
|
||
txtVar2=barcode->getVarTxt(sysPara->para.bcOption.var2En,sysPara->para.bcOption.var2Type);
|
||
//txt.sprintf(fmt,sysPara->status.calandar_and_dat.cnt1CurrValue,sysPara->status.calandar_and_dat.cnt2CurrValue);
|
||
txt = txt2.trimmed()+txtVar1+txt3.trimmed()+txtVar2+txt4.trimmed();
|
||
barcode->TextToBCImg((bcOption_t *)&sysPara->para.bcOption,txt); //
|
||
barcode->getDat2(sysPara,varNum);
|
||
//qDebug()<<"update BAR"<<sysPara->status.calandar_and_dat.cnt1CurrValue<<sysPara->status.calandar_and_dat.cnt2CurrValue;
|
||
//qDebug()<<txt;
|
||
}
|
||
|
||
sysPara->print.QRvars[varNum].startRowPos = sysPara->print.QRvars[varNum].endRowPos-sysPara->print.QRvars[varNum].height;
|
||
if(sysPara->status.currPrintCol < (sysPara->print.QRvars[varNum].startColPos+sysPara->print.QRvars[varNum].width)) {
|
||
sysPara->status.currPrintCol = sysPara->print.QRvars[varNum].startColPos+sysPara->print.QRvars[varNum].width;
|
||
}
|
||
if (sysPara->status.currPrintRow<sysPara->print.QRvars[varNum].endRowPos) {
|
||
sysPara->status.currPrintRow = sysPara->print.QRvars[varNum].endRowPos;
|
||
}
|
||
//sysPara->status.currPrintCol = (sysPara->status.currPrintCol<sysPara->print.QRvars[varNum].startColPos+sysPara->print.QRvars[varNum].width)?
|
||
// sysPara->print.QRvars[varNum].startColPos+sysPara->print.QRvars[varNum].width:sysPara->status.currPrintCol;
|
||
//sysPara->status.currPrintRow = (sysPara->status.currPrintRow<sysPara->print.QRvars[varNum].endRowPos)?sysPara->print.QRvars[varNum].endRowPos:sysPara->status.currPrintRow;
|
||
|
||
// qDebug()<<"onUpdate:"<< sysPara->print.QRvars[varNum].startColPos
|
||
// <<sysPara->print.QRvars[varNum].endRowPos <<sysPara->print.QRvars[varNum].width
|
||
// <<sysPara->print.QRvars[varNum].height <<sysPara->print.QRvars[varNum].type;
|
||
}
|
||
|
||
if(type)
|
||
{
|
||
|
||
sysPara->para.qrOption.DisplayUpdate=1;
|
||
// ui->widgetPrintTextDisplay->updateSysStatusToUI();
|
||
if(sysPara->status.addSpace)
|
||
ui->widgetPrintTextDisplay->setDisplaySize(sysPara->status.currPrintCol/2,sysPara->status.currPrintRow);
|
||
else ui->widgetPrintTextDisplay->setDisplaySize(sysPara->status.currPrintCol,sysPara->status.currPrintRow);
|
||
ui->stackedWidgetText->setCurrentWidget(ui->pagePrintTextDisplay);
|
||
ui->stackedWidgetOption->setCurrentWidget(ui->pageOption);
|
||
ui->labelTextWidthHeight->setText(tr("[ %1行 x %2列 ]").arg(sysPara->status.currPrintRow ).arg(sysPara->status.currPrintCol));
|
||
ui->widgetPrintTextDisplay->update();
|
||
//qDebug()<<"update BAR ??";
|
||
}
|
||
#endif
|
||
}
|
||
|
||
int MainWindow::searchExpiryVar()
|
||
{
|
||
int varNum = 0;
|
||
if( sysPara->status.ExpiryVarNum || sysPara->status.CurrDateVariNum || sysPara->status.classVariNum)
|
||
{
|
||
QString pattern = "<img src=\":/(\\d*)/image/(\\w*).bmp\" width=\"(\\d*)\" height=\"(\\d*)\" />";
|
||
// 1 type ,2 name,3 width,4 height
|
||
//<img src=":/80/image/expiryDate8.bmp" width="16" height="16" /></p><
|
||
//<img src=":/81/image/curDate8.bmp" width="25" height="21" />
|
||
QRegExp rx(pattern);
|
||
QString textHtml = ui->textEdit->toHtml();
|
||
int from = 0;
|
||
// int xx =textHtml.size();
|
||
sysPara->print.ExpiryVar.type = 0;
|
||
sysPara->print.CurDateVar.type = 0;
|
||
//sysPara->print.CurDateVar[1].type = 0;
|
||
sysPara->print.ClassVari.type = 0;
|
||
while(from < textHtml.size() && from != -1){
|
||
from = textHtml.indexOf(rx,from);
|
||
bool ok;
|
||
//qDebug()<<xx<<"from:"<<from;
|
||
if(from != -1)
|
||
{
|
||
from ++;
|
||
if(varNum < 3)
|
||
{
|
||
QString s = rx.cap(2);
|
||
int type = rx.cap(1).toInt(&ok);
|
||
// 填充信息
|
||
//qDebug()<<"QVARName:"<<type<<rx.cap(1)<<rx.cap(2)<<rx.cap(3)<<rx.cap(4);
|
||
if(type==EXPIRYDATE || type==EXPIRYDATE + 10 || type==EXPIRYDATE + 20 || type==EXPIRYDATE + 30)
|
||
{ //expiryDate
|
||
//qDebug()<<"ExpiryVar:"<<type<<rx.cap(1)<<rx.cap(2).left(10)<<rx.cap(2)<<rx.cap(3)<<rx.cap(4);
|
||
sysPara->print.ExpiryVar.type = type;
|
||
sysPara->print.ExpiryVar.width = rx.cap(3).toInt(&ok);// *(sysPara->status.addSpace && type==9 ?2:1) ;
|
||
sysPara->print.ExpiryVar.height = rx.cap(4).toInt(&ok);
|
||
//sysPara->print.ExpiryVar.startRowPos = sysPara->print.ExpiryVar.endRowPos-sysPara->print.ExpiryVar.height;
|
||
sysPara->print.ExpiryVar.startRowPos = sysPara->print.ExpiryVar.endRowPos-(sysPara->print.ExpiryVar.height-1);
|
||
if(sysPara->print.ExpiryVar.startRowPos < 0)
|
||
{
|
||
sysPara->print.ExpiryVar.startRowPos = 0;
|
||
}
|
||
if(rx.cap(2).contains("75"))
|
||
{
|
||
sysPara->print.ExpiryVar.bold = 1;
|
||
}
|
||
else
|
||
{
|
||
sysPara->print.ExpiryVar.bold = 0;
|
||
}
|
||
// 直接更新有效期,并退出?
|
||
ExpiryDotUpdate(1);
|
||
varNum++;
|
||
}
|
||
else if(type == CURDATE || type==CURDATE + 10 || type==CURDATE + 20 || type==CURDATE + 30)
|
||
{ //currDate
|
||
//qDebug()<<"CurDateVar:"<<type<<rx.cap(1)<<rx.cap(2).contains("875")<<rx.cap(2)<<rx.cap(3)<<rx.cap(4);
|
||
#if 0
|
||
qDebug()<<"CurDateVar:"<<type<<rx.cap(1)<<rx.cap(2).contains("875")<<rx.cap(2)<<rx.cap(3)<<rx.cap(4);
|
||
EXPIRYVAR_t *currDate ;
|
||
int searchIndex = 2;
|
||
if (sysPara->print.CurDateVar[0].type == 0) {
|
||
qDebug()<<"1st CurDateVar:";
|
||
currDate = &sysPara->print.CurDateVar[0];
|
||
searchIndex = 2;
|
||
}
|
||
else {
|
||
qDebug()<<"2nd CurDateVar:";
|
||
currDate = &sysPara->print.CurDateVar[1];
|
||
searchIndex = 3;
|
||
}
|
||
currDate->type = type;
|
||
currDate->width = rx.cap(3).toInt(&ok);// *(sysPara->status.addSpace && type==9 ?2:1) ;
|
||
currDate->height = rx.cap(4).toInt(&ok);
|
||
currDate->startRowPos = currDate->endRowPos-currDate->height;
|
||
if(rx.cap(2).contains("875")) {
|
||
//qDebug()<<"bold";
|
||
currDate->bold = 1;
|
||
}
|
||
else {
|
||
//qDebug()<<"normal";
|
||
currDate->bold = 0;
|
||
}
|
||
#else
|
||
sysPara->print.CurDateVar.type = type;
|
||
sysPara->print.CurDateVar.width = rx.cap(3).toInt(&ok);// *(sysPara->status.addSpace && type==9 ?2:1) ;
|
||
sysPara->print.CurDateVar.height = rx.cap(4).toInt(&ok);
|
||
//sysPara->print.CurDateVar.startRowPos = sysPara->print.CurDateVar.endRowPos-sysPara->print.CurDateVar.height;
|
||
sysPara->print.CurDateVar.startRowPos = sysPara->print.CurDateVar.endRowPos-(sysPara->print.CurDateVar.height-1);
|
||
if(sysPara->print.CurDateVar.startRowPos < 0)
|
||
{
|
||
sysPara->print.CurDateVar.startRowPos = 0;
|
||
}
|
||
if(rx.cap(2).contains("875"))
|
||
{
|
||
//qDebug()<<"bold";
|
||
sysPara->print.CurDateVar.bold = 1;
|
||
}
|
||
else
|
||
{
|
||
//qDebug()<<"normal";
|
||
sysPara->print.CurDateVar.bold = 0;
|
||
}
|
||
#endif
|
||
//sysPara->print.CurDateVar.startRowPos = sysPara->print.CurDateVar.endRowPos-(sysPara->print.CurDateVar.height-1);
|
||
//qDebug()<<"CurDateVar:startRowPos"<<sysPara->print.CurDateVar.startRowPos<<" height"<<sysPara->print.CurDateVar.height;
|
||
// 生产日期即当前日期
|
||
ExpiryDotUpdate(2);
|
||
varNum++;
|
||
}
|
||
else if(type == CURCLASS)
|
||
{
|
||
//qDebug()<<"CURCLASS:"<<type<<rx.cap(1)<<rx.cap(2).contains("875")<<rx.cap(2)<<rx.cap(3)<<rx.cap(4);
|
||
EXPIRYVAR_t *currClass = &sysPara->print.ClassVari ;
|
||
currClass->type = type;
|
||
currClass->width = rx.cap(3).toInt(&ok);// *(sysPara->status.addSpace && type==9 ?2:1) ;
|
||
currClass->height = rx.cap(4).toInt(&ok);
|
||
currClass->startRowPos = currClass->endRowPos-currClass->height-1;
|
||
if(rx.cap(2).contains("875")) {
|
||
//qDebug()<<"bold";
|
||
currClass->bold = 1;
|
||
}
|
||
else {
|
||
//qDebug()<<"normal";
|
||
currClass->bold = 0;
|
||
}
|
||
|
||
//sysPara->print.CurDateVar.startRowPos = sysPara->print.CurDateVar.endRowPos-(sysPara->print.CurDateVar.height-1);
|
||
//qDebug()<<"CurDateVar:startRowPos"<<sysPara->print.CurDateVar.startRowPos<<" height"<<sysPara->print.CurDateVar.height;
|
||
// 生产日期即当前日期
|
||
ExpiryDotUpdate(3);
|
||
varNum++;
|
||
}
|
||
}
|
||
else if(varNum>=3) break;
|
||
}
|
||
//break;
|
||
//if(varNum>sysPara->status.ExpiryVarNum)break;
|
||
}
|
||
}
|
||
return varNum;
|
||
}
|
||
void MainWindow::ExpiryDotUpdate(char Mode)
|
||
{ //更新有效期
|
||
QTextEdit textEdit;
|
||
//textEdit.document()->setDocumentMargin(0);
|
||
textEdit.setLineWrapMode(QTextEdit::NoWrap);
|
||
int height,width;
|
||
//QDate curDate=QDate::currentDate();
|
||
EXPIRYVAR_t *p_var;//=(Mode==1)?&sysPara->print.ExpiryVar:&sysPara->print.CurDateVar;
|
||
|
||
if(sysPara->status.flagOfAdjustWidth_1){
|
||
sysPara->print.ExpiryVar.splitMode = sysPara->status.splitMode_Adjust_1;
|
||
sysPara->status.flagOfAdjustWidth_1 = false;
|
||
}
|
||
if(sysPara->status.flagOfAdjustWidth_2){
|
||
sysPara->print.CurDateVar.splitMode = sysPara->status.splitMode_Adjust_2;
|
||
sysPara->status.flagOfAdjustWidth_2 = false;
|
||
}
|
||
if(Mode==1)
|
||
{
|
||
qDebug()<<"Mode==1";
|
||
if(sysPara->status.ExpiryVarNum == 0) {
|
||
return;
|
||
}
|
||
p_var = &sysPara->print.ExpiryVar;
|
||
QDate expiryDate=QDate::currentDate().addDays(sysPara->para.ExpiryDay);
|
||
sysPara->print.ExpiryVar.year = expiryDate.year();
|
||
sysPara->print.ExpiryVar.month = expiryDate.month();
|
||
sysPara->print.ExpiryVar.day = expiryDate.day();
|
||
r_ExpiryDay = sysPara->para.ExpiryDay;
|
||
}
|
||
else if(Mode==2)
|
||
{
|
||
p_var = &sysPara->print.CurDateVar;
|
||
qDebug()<<"Mode==2";
|
||
if(sysPara->status.CurrDateVariNum == 0) {
|
||
return;
|
||
}
|
||
#if 1
|
||
// EXPIRYVAR_t *currDateVar;
|
||
// for (int i = 0; i <2; ++i) {
|
||
// if (sysPara->print.CurDateVar[i].type) {
|
||
// currDateVar = &sysPara->print.CurDateVar[i];
|
||
// currDateVar->year = curDate.year();
|
||
// currDateVar->month = curDate.month();
|
||
// currDateVar->day = curDate.day();
|
||
// }
|
||
// }
|
||
#else
|
||
sysPara->print.CurDateVar.year = curDate.year();
|
||
sysPara->print.CurDateVar.month = curDate.month();
|
||
sysPara->print.CurDateVar.day = curDate.day();
|
||
#endif
|
||
}
|
||
else if(Mode==3)
|
||
{
|
||
p_var = &sysPara->print.ClassVari;
|
||
qDebug()<<"Mode==3";
|
||
if(sysPara->status.classVariNum == 0) {
|
||
return;
|
||
}
|
||
#if 1
|
||
// EXPIRYVAR_t *currDateVar;
|
||
// for (int i = 0; i <2; ++i) {
|
||
// if (sysPara->print.CurDateVar[i].type) {
|
||
// currDateVar = &sysPara->print.CurDateVar[i];
|
||
// currDateVar->year = curDate.year();
|
||
// currDateVar->month = curDate.month();
|
||
// currDateVar->day = curDate.day();
|
||
// }
|
||
// }
|
||
#else
|
||
sysPara->print.CurDateVar.year = curDate.year();
|
||
sysPara->print.CurDateVar.month = curDate.month();
|
||
sysPara->print.CurDateVar.day = curDate.day();
|
||
#endif
|
||
}
|
||
else return;
|
||
//qDebug()<<"sysPara->status.ExpiryVarNum:"<<sysPara->status.ExpiryVarNum;
|
||
//if(sysPara->status.ExpiryVarNum)
|
||
{
|
||
textEdit.clear();
|
||
height = p_var->height;
|
||
width = p_var->width;
|
||
|
||
//qDebug()<<"height"<<height;
|
||
//qDebug()<<"width"<<width;
|
||
QString str;
|
||
|
||
// switch(sysPara->para.ExpirySplitMode)
|
||
// {
|
||
// case 0: str.sprintf("%04d-%02d-%02d",curDate.year(),curDate.month(),curDate.day());break;
|
||
// case 1: str.sprintf("%04d/%02d/%02d",curDate.year(),curDate.month(),curDate.day());break;
|
||
// case 2: str.sprintf("%04d%02d%02d",curDate.year(),curDate.month(),curDate.day());break;
|
||
// case 3: str.sprintf("%04d年%02d月%02d日",curDate.year(),curDate.month(),curDate.day());break;
|
||
// default:str.sprintf("%04d-%02d-%02d",curDate.year(),curDate.month(),curDate.day());break;
|
||
// }
|
||
|
||
QHash<int, QString> dateFormat;
|
||
dateFormat.insert(0,"yyyy-MM-dd");
|
||
dateFormat.insert(1,"yyyy/MM/dd");
|
||
dateFormat.insert(2,"yyyyMMdd");
|
||
dateFormat.insert(3,"yyyy年MM月dd日");
|
||
dateFormat.insert(4,"yyyy-MM-dd hh:mm");
|
||
dateFormat.insert(5,"yyyy/MM/dd hh:mm");
|
||
dateFormat.insert(6,"yyyyMMddhhmm");
|
||
dateFormat.insert(7,"yyyy年MM月dd日 hh:mm");
|
||
dateFormat.insert(8,"hh:mm");
|
||
dateFormat.insert(9,"ddhhmm");
|
||
dateFormat.insert(10,"dd MM yy");
|
||
dateFormat.insert(11,"dd/MM/yy");
|
||
dateFormat.insert(12,"dd/MM/yyyy");
|
||
dateFormat.insert(13,"dd-MM-yy");
|
||
dateFormat.insert(14,"dd-MM-yyyy");
|
||
//dateFormat.insert(10,"x");
|
||
|
||
/*****轮班变量功能 start******/
|
||
/*00:00-08:00
|
||
08:00-16:00
|
||
16:00-00:00
|
||
*/
|
||
QTime current_time =QTime::currentTime();
|
||
int hour = current_time.hour();
|
||
//qDebug()<<"current_hour="<<hour;
|
||
QString DateTime;
|
||
if(Mode==1) {
|
||
DateTime = QDateTime::currentDateTime().addDays(sysPara->para.ExpiryDay).toString(dateFormat.value(sysPara->print.ExpiryVar.splitMode));
|
||
}
|
||
else if(Mode==2 ) {
|
||
DateTime = QDateTime::currentDateTime().toString(dateFormat.value(p_var->splitMode));
|
||
}
|
||
else if (Mode == 3) {
|
||
if(hour >= 0 && hour <8)
|
||
{
|
||
dateFormat.insert(15,"A");
|
||
DateTime = "A";
|
||
}
|
||
else if(hour >= 8 && hour < 16)
|
||
{
|
||
dateFormat.insert(15,"B");
|
||
DateTime = "B";
|
||
}
|
||
else if(hour >= 16)
|
||
{
|
||
dateFormat.insert(15,"C");
|
||
DateTime = "C";
|
||
}
|
||
}
|
||
|
||
/*****轮班变量功能 end******/
|
||
//qDebug()<<"splitMode:"<<p_var->splitMode;
|
||
//qDebug()<<"update DateTime:"<<DateTime;
|
||
int DPI = textEdit.logicalDpiX();
|
||
DPI = DPI?DPI:1; //Pixel = DPI * Point / 72
|
||
//height = Public::derivePixelSizeFromHeight(p_var->height);
|
||
//qDebug()<<"height"<<height;
|
||
//qDebug()<<"textEdit.logicalDpiX()"<<DPI;
|
||
//qDebug()<<"p_var->bold:"<<p_var->bold;
|
||
if(p_var->bold) {
|
||
textEdit.insertHtml(QString("<span style=\" font-family:'%1'; font-size:%2pt; font-weight:%3;\">%4</span>")
|
||
.arg(Public::getFontFamily(height-1,p_var->type)) // 20160812 增加横向字体 p_var->type <9 正常, p_var->type 20~28 左横 p_var->type 40~48 右横
|
||
.arg(height*72/DPI-1)
|
||
.arg(600)
|
||
.arg(DateTime)
|
||
); //600表示加粗,400表示普通
|
||
}
|
||
else {
|
||
textEdit.insertHtml(QString("<span style=\" font-family:'%1'; font-size:%2pt; font-weight:%3;\">%4</span>")
|
||
.arg(Public::getFontFamily(height-1,p_var->type)) // 20160812 增加横向字体 p_var->type <9 正常, p_var->type 20~28 左横 p_var->type 40~48 右横
|
||
.arg(height*72/DPI-1)
|
||
.arg(400)
|
||
.arg(DateTime)
|
||
// .arg("x")
|
||
); //600表示加粗,400表示普通
|
||
}
|
||
|
||
//qDebug()<<textEdit.toHtml();
|
||
QFont font = textEdit.font();
|
||
//int pixelSize = Public::derivePixelSizeFromHeight(height);
|
||
//font.setWeight(p_var->bold?QFont::Bold:QFont::Normal);
|
||
//QFontMetrics fontMetrics(font);
|
||
//int charWidth = (fontMetrics.width("0123456789"))/10 ;
|
||
//p_var->letterSpace = p_var->width/10/(sysPara->status.addSpace?2:1) - charWidth;
|
||
//font.setLetterSpacing(QFont::AbsoluteSpacing,p_var->letterSpace);
|
||
font.setLetterSpacing(QFont::AbsoluteSpacing,sysPara->para.textEditCharSpace );
|
||
textEdit.setFont(font);
|
||
//textEdit.document()->setDocumentMargin(0);
|
||
//qDebug()<<textEdit.document()<<str;
|
||
//qDebug() << "height:" << height << "fontFamily:" << Public::getFontFamily(height)<<sysPara->para.ExpirySplitMode;
|
||
|
||
int imgHeight = height + 12;
|
||
bool MaxCol4000;
|
||
if(!sysPara->status.flagOfNo67FPGA && sysPara->status.FPGAVersionType == 0 && sysPara->status.FPGAChipType != 1)
|
||
MaxCol4000 = false;
|
||
else
|
||
MaxCol4000 = true;
|
||
if(imgHeight> MAX_PRINT_ROW_NUM+12)
|
||
imgHeight = MAX_PRINT_ROW_NUM+12;
|
||
if(width> (MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide))
|
||
width = MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide;
|
||
QSize size(width+2,imgHeight);
|
||
QImage image(size,QImage::Format_ARGB32);
|
||
image.fill(0x00ffffff);
|
||
QPainter painter(&image);
|
||
textEdit.show(); //如果不显示,似乎不会绘制
|
||
textEdit.document()->drawContents (&painter, image.rect()); /*将text写到pic*/
|
||
textEdit.hide();
|
||
//qDebug()<<"/Expiry.bmp";
|
||
image.save("./Expiry.bmp");
|
||
#ifdef DEBUG4
|
||
image.save("./Expiry.bmp");
|
||
#endif
|
||
int lastValidRow = 0;
|
||
for(int k = imgHeight - 1; k >= 0 ; k--){
|
||
for(int j = 0; j < width+1; j ++){
|
||
QRgb rgb = image.pixel(j,k);
|
||
if(rgb&0xff000000){
|
||
lastValidRow = k + 1;
|
||
break;
|
||
}
|
||
}
|
||
if(lastValidRow != 0)
|
||
{
|
||
//qDebug()<<"lastValidRow"<<lastValidRow;
|
||
break;
|
||
}
|
||
}
|
||
//qDebug()<<"sysPara->status.ExpiryVarNum:"<<sysPara->status.ExpiryVarNum;
|
||
//qDebug()<<"GetData row:"<<p_var->endRowPos<<" start:"<< p_var->startRowPos;
|
||
//qDebug()<<"GetData col:"<<p_var->startColPos<<" start:"<< p_var->width;
|
||
int rowDiff = p_var->endRowPos - p_var->startRowPos;
|
||
int firstValidRow=0;
|
||
int firstValidRowDiff;
|
||
if(lastValidRow >= rowDiff)
|
||
{
|
||
firstValidRow = lastValidRow - rowDiff;
|
||
firstValidRowDiff = firstValidRow;
|
||
}
|
||
else
|
||
{
|
||
firstValidRow = 0;
|
||
firstValidRowDiff = lastValidRow > rowDiff;
|
||
}
|
||
|
||
firstValidRow = firstValidRow >= 0?firstValidRow:0; //纠正
|
||
//firstValidRow = 0;
|
||
//int rowByteNum = rowDiff/8 + ((rowDiff%8)?1:0);
|
||
//unsigned char *dat = (unsigned char *)calloc(width,rowByteNum);
|
||
#ifdef DEBUG4
|
||
QString s2;
|
||
s2.sprintf ("firstValidRow:%d,lastValidRow:%d,rowByteNum:%d,width:%d ,rowDiff:%d\n\r",firstValidRow,lastValidRow,rowByteNum,width,rowDiff) ;
|
||
qDebug()<<s2;
|
||
str="";s2="";
|
||
#endif
|
||
str="";//s2="";
|
||
|
||
int wStart=p_var->startColPos;
|
||
int hStart= p_var->startRowPos;
|
||
//int i = 0 ;
|
||
unsigned char *dat;
|
||
if(MaxCol4000){
|
||
dat =sysPara->status.printDat_Normal;
|
||
}else{
|
||
dat =sysPara->status.printDat;
|
||
}
|
||
for(int j = 2; j < width+1; j ++)
|
||
{
|
||
unsigned char c=0;
|
||
hStart= p_var->startRowPos;
|
||
c=dat[(wStart)*5+(hStart)/8];
|
||
for(int k = firstValidRow; k <= lastValidRow; k++)
|
||
{
|
||
QRgb rgb = image.pixel(j,k);
|
||
//int currRow = k - firstValidRowDiff;
|
||
if(((rgb >> 24)&0xff) > 0x80)
|
||
{
|
||
c |= (1 << (hStart%8));
|
||
//dat[rowByteNum*(j+(sysPara->status.addSpace?j:0) )+ currRow/8] |= (1<<(currRow%8));
|
||
//str+="#";
|
||
}
|
||
else
|
||
{
|
||
//str+="-";
|
||
c &= ~(1 << (hStart%8));
|
||
}
|
||
if(hStart%8==7) {
|
||
dat[(wStart)*5+(hStart)/8]=c;
|
||
c=dat[(wStart)*5+(hStart+1)/8];
|
||
}
|
||
hStart++;
|
||
}
|
||
//str+="\n";
|
||
dat[(wStart)*5+(hStart)/8]=c;
|
||
wStart++;
|
||
//if(sysPara->status.addSpace ) wStart++; //&& sysPara->print.QRvars[varNum].type==0
|
||
}
|
||
//qDebug()<<str;
|
||
}
|
||
//qDebug()<<"expiry end";
|
||
}
|
||
|
||
int MainWindow::searchQrVar(){
|
||
int varNum = 0;
|
||
if( sysPara->status.QRvariNum){
|
||
QString pattern = "<img src=\":/(\\d*)/image/(\\w*).bmp\" width=\"(\\d*)\" height=\"(\\d*)\" />";
|
||
// 1 type ,2 name,3 width,4 height
|
||
//<img src=":/9/image/DMTV16.bmp" width="16" height="16" /></p><
|
||
//<img src=":/10/image/QRV21.bmp" width="25" height="21" />
|
||
QRegExp rx(pattern);
|
||
//QString textHtml = ui->textEdit->toHtml();
|
||
/////////////
|
||
QTextEdit textEdit ;
|
||
for(int i=0;i<sysPara->status.QRvariNum;i++)
|
||
{
|
||
|
||
if(sysPara->print.QRvars[i].type==0){
|
||
textEdit.insertHtml(QString("<img src=':/%1/image/DMTV%2.bmp' height='%2' width='%3' />")
|
||
.arg(9).arg(sysPara->para.qrOption.height).arg(sysPara->para.qrOption.width)); //插入索引后
|
||
}
|
||
else if(sysPara->print.QRvars[i].type==1){
|
||
textEdit.insertHtml(QString("<img src=':/%1/image/QRV%2.bmp' height='%2' width='%3' />")
|
||
.arg(10).arg(sysPara->para.qrOption.height).arg(sysPara->para.qrOption.width)); //插入索引后
|
||
}
|
||
else if(sysPara->print.QRvars[i].type==2){
|
||
textEdit.insertHtml(QString("<img src=':/%1/image/BARV%2.bmp' height='%2' width='%3' />")
|
||
.arg(11).arg(sysPara->para.qrOption.height).arg(sysPara->para.qrOption.width)); //插入索引后
|
||
}
|
||
}
|
||
QString textHtml = textEdit.toHtml();
|
||
////////////
|
||
int from = 0;
|
||
// int xx =textHtml.size();
|
||
while(from < textHtml.size() && from != -1){
|
||
from = textHtml.indexOf(rx,from);
|
||
bool ok;
|
||
//qDebug()<<xx<<"from:"<<from;
|
||
if(from != -1){
|
||
from ++;
|
||
if(varNum < 4){
|
||
QString s = rx.cap(2);
|
||
int type = rx.cap(1).toInt(&ok);
|
||
// 填充信息
|
||
//qDebug()<<"QVARName:"<<type<<rx.cap(1)<<rx.cap(2)<<rx.cap(3)<<rx.cap(4);
|
||
if(type<20 && type>=9 && (sysPara->print.QRvars[varNum].type ==type-9))
|
||
{
|
||
//sysPara->print.QRvars[varNum].type = type-9;
|
||
sysPara->para.qrOption.type = type-9;
|
||
sysPara->para.qrOption.width=sysPara->print.QRvars[varNum].width = rx.cap(3).toInt(&ok);// *(sysPara->status.addSpace && type==9 ?2:1) ;
|
||
sysPara->para.qrOption.height =sysPara->print.QRvars[varNum].height = rx.cap(4).toInt(&ok);
|
||
sysPara->print.QRvars[varNum].startRowPos = sysPara->print.QRvars[varNum].endRowPos-sysPara->print.QRvars[varNum].height;
|
||
|
||
//qDebug()<<"type:"<<varNum<<sysPara->print.QRvars[varNum].type<<sysPara->status.QRvariNum
|
||
// <<sysPara->print.QRvars[varNum].startColPos<<sysPara->print.QRvars[varNum].startRowPos<<sysPara->print.QRvars[varNum].endRowPos
|
||
// <<sysPara->print.QRvars[varNum].width<<sysPara->print.QRvars[varNum].height
|
||
// <<rx.cap(1)<<rx.cap(2)<<rx.cap(3)<<rx.cap(4);
|
||
//type: 0 1 1 0 0 21 25 21 "10" "QRV21" "25" "21"
|
||
//type: 0 2 1 0 0 12 325 12 "11" "BARV12" "325" "12"
|
||
varNum++;
|
||
//break;
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return varNum;
|
||
}
|
||
|
||
PicScene* MainWindow::getPicScene()
|
||
{
|
||
return pPicScene;
|
||
}
|
||
|
||
void MainWindow::on_pushButtonCleanUP_pressed(){
|
||
|
||
emit InkjetCleanUP();
|
||
|
||
}
|
||
void MainWindow::ShowWarnningText1(QString strTitle,QString strWarring){
|
||
|
||
dlgMyWarring.SetTitleText(strTitle);
|
||
dlgMyWarring.SetWarringText(strWarring);
|
||
dlgMyWarring.show();
|
||
dlgMyWarringShowDlyCnt =20;
|
||
|
||
}
|
||
|
||
void MainWindow::onStatusHighVoltageFault(){
|
||
#ifdef X86TEST
|
||
|
||
#else
|
||
if(!(sysPara->status.statWarn & WARN_STATUS_POWER_MON)) return;
|
||
#endif
|
||
strTitle = tr("高压故障,暂停打印.");
|
||
|
||
strWarring = tr("高压故障:两高压偏转板间的电压检测异常");strWarring.append("\r\n");
|
||
strWarring.append(tr("1.高压偏转板和高压底座潮湿、脏污,请清洗并吹干高压板和高压底座;"));strWarring.append("\r\n");
|
||
strWarring.append( tr("2.机器更换主板或者高压包,请进入“系统设置”点击“重置高压”,字高设置为90时,重置高压报警值应在480—550之间;"));strWarring.append("\r\n");
|
||
//strWarring.append( tr("字高设置为90时,重置高压报警值应在480—550之间;"));strWarring.append("\r\n");
|
||
strWarring.append( tr("3.高压线路漏电,请更换高压线路;"));strWarring.append("\r\n");
|
||
strWarring.append( tr("4.高压底座漏电,请更换高压底座。"));strWarring.append("\r\n");
|
||
emit ShowWarnningText(strTitle,strWarring);
|
||
|
||
}
|
||
void MainWindow::onStatusInkLeak(){
|
||
#ifdef X86TEST
|
||
|
||
#else
|
||
if(!(sysPara->status.statWarn & WARN_STATUS_SUMP_WARN)) return;
|
||
#endif
|
||
strTitle = tr("墨水缸满报警");
|
||
|
||
strWarring = tr("墨水过多:墨水溢出");strWarring.append("\r\n");
|
||
strWarring.append(tr("1. 请停止添加墨水;"));strWarring.append("\r\n");
|
||
strWarring.append(tr("2. 请排出多余墨水。"));strWarring.append("\r\n");
|
||
emit ShowWarnningText(strTitle,strWarring);
|
||
}
|
||
void MainWindow::onStatusInkSwint(){
|
||
if(!(sysPara->status.statWarn & WARN_STATUS_INK_SWINT)) return;
|
||
|
||
}
|
||
void MainWindow::onStatusInkWaterLevel(){
|
||
#ifdef X86TEST
|
||
|
||
#else
|
||
if(!(sysPara->status.statWarn & WARN_STATUS_INK_WARN)) return;
|
||
#endif
|
||
strTitle = tr("墨水液位报警");
|
||
|
||
strWarring = tr("墨水液位:墨水即将耗尽");strWarring.append("\r\n");
|
||
strWarring.append(tr("1. 墨水耗尽,3小时后将自动关机,请及时添加墨水。"));strWarring.append("\r\n");
|
||
emit ShowWarnningText(strTitle,strWarring);
|
||
}
|
||
void MainWindow::onStatusRecycleWarn(){
|
||
#ifdef X86TEST
|
||
|
||
#else
|
||
if(!(sysPara->status.statWarn & WARN_STATUS_RECYCLE_FAULT)) return;
|
||
#endif
|
||
strTitle = tr("回收故障,关闭回收槽,关墨线");
|
||
strWarring = tr("回收故障:未检测到有墨水回收");strWarring.append("\r\n");
|
||
strWarring.append( tr("1. 墨水未射入回收管,请修正墨线方向;"));strWarring.append("\r\n");
|
||
strWarring.append( tr("2. 墨水粘度太低,请更换新墨水;"));strWarring.append("\r\n");
|
||
strWarring.append( tr("3. 回收管堵塞,请清通或者更换回收管;"));strWarring.append("\r\n");
|
||
strWarring.append(tr("4. 回收泵故障,请清洗或者更换回收泵;"));strWarring.append("\r\n");
|
||
strWarring.append( tr("5. 确认各参数及设备无异常后请进入“打印设置”取消“回收故障处理”的勾选,退回主窗口界面点击“故障恢复”按钮."));strWarring.append("\r\n");
|
||
//strWarring.append( tr(" 退回主窗口界面点击“故障恢复”按钮."));strWarring.append("\r\n");
|
||
emit ShowWarnningText(strTitle,strWarring);
|
||
}
|
||
void MainWindow::onStatusSolvLevelWarn(){
|
||
#ifdef X86TEST
|
||
|
||
#else
|
||
if(!(sysPara->status.statWarn & WARN_STATUS_SOLV_WARN)) return;
|
||
#endif
|
||
|
||
strTitle = tr("溶剂液位报警");
|
||
|
||
strWarring = tr("溶剂液位:溶剂即将耗尽");strWarring.append("\r\n");
|
||
strWarring .append(tr("1. 溶剂耗尽,3小时后将自动关机,请及时添加溶剂。"));strWarring.append("\r\n");
|
||
emit ShowWarnningText(strTitle,strWarring);
|
||
}
|
||
void MainWindow::onStatusViscosityWarn(){
|
||
#ifdef X86TEST
|
||
|
||
#else
|
||
if(sysPara->status.viscosityFault==1)
|
||
#endif
|
||
{
|
||
strTitle = tr("粘度故障报警");
|
||
strWarring = tr("粘度故障:墨水粘度无法自动调整");strWarring.append("\r\n");
|
||
strWarring.append( tr("1. 混合阀失灵,请冲洗或者更换混合阀;"));strWarring.append("\r\n");
|
||
strWarring.append( tr("2. 墨水罐内的墨水异常,请更换新墨水;"));strWarring.append("\r\n");
|
||
emit ShowWarnningText(strTitle,strWarring);
|
||
#ifdef X86TEST
|
||
|
||
#else
|
||
}
|
||
else if(sysPara->status.viscosityFault==2)
|
||
{
|
||
|
||
#endif
|
||
strTitle = tr("粘度故障报警");
|
||
strWarring= tr("粘度计异常:");strWarring.append("\r\n");
|
||
strWarring.append(tr("1. 泵前过滤网堵塞,请更换泵前滤网;"));strWarring.append("\r\n");
|
||
strWarring.append( tr("2. 粘度泵异常,请清洗或更换粘度泵;"));strWarring.append("\r\n");
|
||
strWarring.append(tr("3. 粘度传感器异常,请检查传感器线路或者更换传感器."));strWarring.append("\r\n");
|
||
emit ShowWarnningText(strTitle,strWarring);
|
||
}
|
||
|
||
}
|
||
void MainWindow::onStatusChargefault(){
|
||
#ifdef X86TEST
|
||
|
||
#else
|
||
if(sysPara->status.lastPhaseFault)
|
||
#endif
|
||
{
|
||
|
||
strTitle = tr("相位故障报警");
|
||
strWarring = tr("相位故障:相位信号检测异常");strWarring.append("\r\n");
|
||
strWarring.append(tr("1. 墨水分裂不正常,请调整墨水分裂;"));strWarring.append("\r\n");
|
||
strWarring.append(tr("2. 充电槽或者相检头脏污,请清洗充电槽和相检头;"));strWarring.append("\r\n");
|
||
strWarring.append(tr("3. 放大板功能性异常,请更换放大板;"));strWarring.append("\r\n");
|
||
strWarring.append( tr("4. 相检头和墨线的距离过远,请检测喷头活动机构,调整相检头和墨线间的距离;"));strWarring.append("\r\n");
|
||
strWarring.append( tr("5. 地线未接或者外界干扰,请连接地线或者隔离外界干扰;"));strWarring.append("\r\n");
|
||
strWarring.append( tr("6. 墨水质量异常,请更换新墨水。"));strWarring.append("\r\n");
|
||
emit ShowWarnningText(strTitle,strWarring);
|
||
|
||
}
|
||
}
|
||
|
||
void MainWindow::OnFinished(int event){
|
||
//msgtest->setText("孔一:60分钟灌浆结束条件!请点击\"结束\"按钮!");
|
||
//msgtest->show();
|
||
msgtest->hide();
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
void MainWindow::onPreviewScene()
|
||
{
|
||
|
||
#if 1
|
||
pPicScene->clearSelection();
|
||
QSize size(pPicScene->itemsBoundingRect().width(),pPicScene->itemsBoundingRect().height());
|
||
QImage image(size,QImage::Format_ARGB32);
|
||
image.fill(0x00ffffff);//填充白色
|
||
//image.save("./printScene.jpg");//图片
|
||
QPainter painter(&image);
|
||
pPicScene->render(&painter,QRectF(),pPicScene->itemsBoundingRect());
|
||
//qDebug()<<"scene rect:"<<pPicScene->itemsBoundingRect();
|
||
//image.save("./printSceneDone.jpg");//图片
|
||
|
||
#endif
|
||
|
||
int coldot=0;
|
||
if(sysPara){
|
||
bool MaxCol4000;
|
||
if(!sysPara->status.flagOfNo67FPGA && sysPara->status.FPGAVersionType == 0 && sysPara->status.FPGAChipType != 1)
|
||
MaxCol4000 = false;
|
||
else
|
||
MaxCol4000 = true;
|
||
previewFlag=1;
|
||
sysPara->status.currPrintRow = 0;
|
||
sysPara->status.variNum = 0;
|
||
sysPara->status.QRvariNum = 0;
|
||
// unsigned char *dat = sysPara->status.printDat;
|
||
// memset(dat,0,sizeof(sysPara->status.printDat));
|
||
unsigned char *dat;
|
||
if(MaxCol4000){
|
||
dat =sysPara->status.printDat_Normal;
|
||
memset(dat,0,sizeof(sysPara->status.printDat_Normal));
|
||
}else{
|
||
dat =sysPara->status.printDat;
|
||
memset(dat,0,sizeof(sysPara->status.printDat));
|
||
}
|
||
//qDebug()<<"Preview:";
|
||
{
|
||
sysPara->status.addSpace = sysPara->para.checkSpace;
|
||
|
||
coldot = (int)ui->textEdit->document()->size().width();
|
||
coldot = pPicScene->itemsBoundingRect().width();
|
||
if(coldot > (MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide))
|
||
coldot = MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide;
|
||
int maxPicHeight = MAX_PRINT_ROW_NUM + 12;
|
||
QSize size(coldot,maxPicHeight);
|
||
|
||
sysPara->status.currPrintRow =0;
|
||
#ifdef SPACEFLAG
|
||
sysPara->status.currPrintCol = coldot + ( sysPara->status.addSpace?coldot:0) ; //checkSpace
|
||
#else
|
||
sysPara->status.currPrintCol = coldot;
|
||
#endif
|
||
|
||
#ifdef VARCOLOR
|
||
|
||
|
||
#else
|
||
#if 0
|
||
QImage image(size,QImage::Format_ARGB32);
|
||
image.fill(0x00ffffff);//填充白色
|
||
//image.fill(0x00f0f000);//填充白色
|
||
QPainter painter(&image);
|
||
image.save("./printImage.jpg");
|
||
ui->textEdit->document()->drawContents (&painter, image.rect()); /*将text写到pic*/
|
||
#else
|
||
//QSize size(pPicScene->itemsBoundingRect().width(),pPicScene->itemsBoundingRect().height());
|
||
QImage image(size,QImage::Format_ARGB32);
|
||
image.fill(0x00ffffff);//填充白色
|
||
//image.save("./printScene.jpg");//图片
|
||
QPainter painter(&image);
|
||
QRectF validRectF(pPicScene->itemsBoundingRect().x(),pPicScene->itemsBoundingRect().y(),coldot,maxPicHeight);
|
||
pPicScene->render(&painter,QRectF(),validRectF);
|
||
//qDebug()<<"items bound:"<<pPicScene->itemsBoundingRect();
|
||
#endif
|
||
#ifndef DEBUG1
|
||
//image.save("/opt/printImage.jpg");
|
||
#endif
|
||
//image.save("./printImageScene.bmp");//图片
|
||
//image.save("./printImagenn.jpg");//图片
|
||
|
||
//ui->widgetPrintTextDisplay
|
||
// int firstRow = maxPicHeight;
|
||
int firstRow = 0;
|
||
/*--------------------------------------------------------------------------*/
|
||
for(int j = 0; j < maxPicHeight; j++){ //计算首行位置
|
||
for(int i = 0; i < coldot; i++){
|
||
QRgb rgb = image.pixel(i,j);
|
||
if(rgb !=0x00ffffff )//& 0xff000000)
|
||
{
|
||
//qDebug()<<j<< QString().sprintf("%08X",rgb);
|
||
//if((rgb&0x00FFFFFF)==0)
|
||
{
|
||
firstRow = j;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
if(firstRow != maxPicHeight)
|
||
break;
|
||
}
|
||
|
||
|
||
#if 1
|
||
qDebug()<<"firstRow"<<firstRow<<maxPicHeight;
|
||
firstRow = 0;
|
||
/*--------------------------------------------------------------------------*/
|
||
int lastRow = firstRow + MAX_PRINT_ROW_NUM;
|
||
int TempVarNum=0;
|
||
int varLastRow=0;
|
||
lastRow = (lastRow>maxPicHeight)?maxPicHeight:lastRow;
|
||
//接下来就是要把打印到数据data填充以及确认变量的个数,变量对应的开始列和结束行
|
||
for(int j = 0; j < lastRow - firstRow; j++){ // Y
|
||
for(int i = 0; i < coldot; i++){ //
|
||
QRgb rgb = image.pixel(i,j + firstRow);
|
||
if(rgb&0x80000000){ //判断alpha
|
||
//if((rgb & 0xffffff) == 0xff0000) {j=40; break;}
|
||
#ifdef MMVAR
|
||
if((rgb & 0xf0f0ff) == 0xf0f000){ //处理变量, 查找左下角,因为同一行的左下角是对齐的 看起来这个颜色是黄色
|
||
|
||
bool foundvar=0;
|
||
if(j>0){
|
||
QRgb r_rgb = image.pixel(i,j + firstRow+1);
|
||
if((r_rgb & 0xf0f0ff) != 0xf0f000 ){foundvar =1;}
|
||
//QRgb r_rgb = image.pixel(i,j + firstRow-1);if((r_rgb & 0xf0f0ff) == 0xf0f000 )foundvar =0;
|
||
}
|
||
if(foundvar){
|
||
if(sysPara->status.variNum < MAX_VARI_NUM){
|
||
sysPara->status.vars[sysPara->status.variNum].startColPos = i+(sysPara->status.addSpace?i:0);
|
||
sysPara->status.vars[sysPara->status.variNum].endRowPos = j;
|
||
//if(varLastRow<j+1) varLastRow=j+1;
|
||
//sysPara->status.variNum ++;TempVarNum++;
|
||
//i+=5;//scene 每一行可能都包含变量
|
||
//qDebug()<<"VARr:"<<TempVarNum<<i<<j;
|
||
}
|
||
else TempVarNum++;
|
||
//dat[MAX_PRINT_ROW_BYTE_NUM*i + j/8] |= 1 << (j%8); //画黑点
|
||
}
|
||
}
|
||
#else
|
||
if((rgb & 0xffffff) == 0xff0000){ //处理变量
|
||
|
||
int leftPointValue = (i > 0)?(dat[MAX_PRINT_ROW_BYTE_NUM*(i - 1) + j/8] & (1 << (j%8))):0;
|
||
int downPointValue = (j < (lastRow - firstRow - 1))?(image.pixel(i,j + firstRow + 1) != 0x00ffffff):0;
|
||
if(!leftPointValue && !downPointValue){ //找左下脚的位置
|
||
if(sysPara->status.variNum < MAX_VARI_NUM){
|
||
sysPara->status.vars[sysPara->status.variNum].startColPos = i;
|
||
sysPara->status.vars[sysPara->status.variNum].endRowPos = j;
|
||
sysPara->status.variNum ++;TempVarNum++;
|
||
}
|
||
else TempVarNum++;
|
||
}
|
||
dat[MAX_PRINT_ROW_BYTE_NUM*i + j/8] |= 1 << (j%8); //画黑点
|
||
}
|
||
|
||
#endif
|
||
|
||
else if( ((rgb & 0xfffff0) == 0x00ff10) || ((rgb & 0xfffff0) == 0x00ff20) ||((rgb & 0xfffff0) == 0x00ff30) ){
|
||
// 0xff00ff01(DMT) 0xff00ff02(QR) 0xff00ff03(BAR)
|
||
//qDebug()<<"FLAG:"<<i<<j+1<<QString().sprintf("%08X", rgb);
|
||
if(sysPara->status.QRvariNum>=4)continue;
|
||
if((rgb & 0x00ffff0) == 0x00ff10) { //MDT
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].type=MDT;
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].countEn=1;
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].Counter=sysPara->status.productCnt;
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].startColPos=i+(sysPara->status.addSpace?i:0);
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].endRowPos=j+1;
|
||
if(varLastRow<j+1) varLastRow=j+1;
|
||
sysPara->status.QRvariNum++;
|
||
}
|
||
else if((rgb & 0x00ffff0) == 0x00ff20) { //QR
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].type=QR;
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].countEn=1;
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].Counter=sysPara->status.productCnt;
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].startColPos=i+(sysPara->status.addSpace?i:0);
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].endRowPos=j+1;
|
||
if(varLastRow<j+1) varLastRow=j+1;
|
||
sysPara->status.QRvariNum++;
|
||
}
|
||
else if((rgb & 0x00fffff0) == 0x00ff30) { //BAR
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].type=BAR;
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].countEn=1;
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].Counter=sysPara->status.productCnt;
|
||
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].startColPos=i+(sysPara->status.addSpace?i:0);
|
||
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].endRowPos=j+1;
|
||
|
||
if(varLastRow<j+1) varLastRow=j+1;
|
||
sysPara->status.QRvariNum++;
|
||
|
||
}
|
||
if(sysPara->status.QRvariNum>=4)sysPara->status.QRvariNum=4;
|
||
|
||
}
|
||
//else if((rgb & 0xfffff0)==0xff00f0)
|
||
else if((rgb & 0x00ffffff)==EXPIRY_VARI_RECONISE)
|
||
{ // 有效期变量 : 处理变量, 查找左下角,因为同一行的左下角是对齐的
|
||
bool foundExVar=0;
|
||
if(j>0){
|
||
QRgb r_rgb = image.pixel(i,j + firstRow+1);
|
||
if((r_rgb & 0x00ffffff) != EXPIRY_VARI_RECONISE ){foundExVar =1;}
|
||
}
|
||
if(foundExVar)
|
||
{
|
||
if(sysPara->status.ExpiryVarNum <2)
|
||
{
|
||
sysPara->print.ExpiryVar.startColPos = i+(sysPara->status.addSpace?i:0);
|
||
sysPara->print.ExpiryVar.endRowPos = j;
|
||
if(varLastRow<j+1) varLastRow=j+1;
|
||
sysPara->status.ExpiryVarNum ++;
|
||
i+=5;
|
||
}
|
||
//else TempVarNum++;
|
||
//dat[MAX_PRINT_ROW_BYTE_NUM*i + j/8] |= 1 << (j%8); //画黑点
|
||
}
|
||
}
|
||
else if((rgb & 0xfffff0)==0xff0cf0)
|
||
{ // 有效期变量 : 处理变量, 查找左下角,因为同一行的左下角是对齐的
|
||
bool foundExVar=0;
|
||
if(j>0){
|
||
QRgb r_rgb = image.pixel(i,j + firstRow+1);
|
||
if((r_rgb & 0xfffff0) != 0xff0cf0 ){foundExVar =1;}
|
||
}
|
||
if(foundExVar)
|
||
{
|
||
if(sysPara->status.ExpiryVarNum <2)
|
||
{
|
||
sysPara->print.CurDateVar.startColPos = i+(sysPara->status.addSpace?i:0);
|
||
sysPara->print.CurDateVar.endRowPos = j;
|
||
if(varLastRow<j+1) varLastRow=j+1;
|
||
sysPara->status.CurrDateVariNum ++;
|
||
i+=5;
|
||
}
|
||
//else TempVarNum++;
|
||
//dat[MAX_PRINT_ROW_BYTE_NUM*i + j/8] |= 1 << (j%8); //画黑点
|
||
}
|
||
}
|
||
else if((rgb & 0xffffff)==0xff00ff)
|
||
{ // 有效期变量 : 处理变量, 查找左下角,因为同一行的左下角是对齐的
|
||
{
|
||
if(sysPara->status.classVariNum <3) {
|
||
EXPIRYVAR_t *currCLass = &sysPara->print.ClassVari ;
|
||
currCLass->day = QDateTime::currentDateTime().date().day();
|
||
currCLass->startColPos = i+(sysPara->status.addSpace?i:0);
|
||
currCLass->endRowPos = j;
|
||
if(varLastRow<j+1) varLastRow=j+1;
|
||
sysPara->status.classVariNum ++;
|
||
i+=5;
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{ //Y = 0.299*R' + 0.587*G' + 0.114*B //非变量
|
||
int y = (((rgb&0xff)*299 + ((rgb>>8)&0xff)*587 + ((rgb>>16)&0xff)*114))/1000;
|
||
//qDebug()<<"y:"<<y;
|
||
if(y < 125 ){
|
||
#ifdef SPACEFLAG
|
||
dat[MAX_PRINT_ROW_BYTE_NUM*(i+(sysPara->status.addSpace?i:0)) + j/8] |= 1 << (j%8); //画黑点
|
||
#else
|
||
dat[MAX_PRINT_ROW_BYTE_NUM*i + j/8] |= 1 << (j%8); //画黑点
|
||
#endif
|
||
// if(j > sysPara->status.currPrintRow)
|
||
// sysPara->status.currPrintRow = j;
|
||
if((j+1) > sysPara->status.currPrintRow) {
|
||
sysPara->status.currPrintRow = j+1;
|
||
//qDebug()<<"dddd currPrintRow:"<< sysPara->status.currPrintRow;
|
||
}
|
||
}
|
||
}
|
||
|
||
}/*判断alpha end*/
|
||
}
|
||
}
|
||
|
||
// var
|
||
//qDebug() <<"VarNum"<<TempVarNum;
|
||
if(TempVarNum>MAX_VARI_NUM){
|
||
setRunStatus(tr("变量数大于8个,某些变量将不起作用!!!"));
|
||
strTitle= tr("变量数大于8个,某些变量将不起作用!!!");
|
||
strTitle.append("\r\n");
|
||
strTitle.append(tr("请减少信息中的变量(或计数器)数量."));
|
||
QMessageBox::warning(this, tr("警告"),strTitle,QMessageBox::Ok);
|
||
}
|
||
#endif
|
||
//qDebug()<<firstRow<<lastRow<< sysPara->status.vars[0].startRowPos<<sysPara->status.vars[0].endRowPos<< sysPara->status.currPrintRow;
|
||
// ==============查找QRV, DMTV,BARV 变量 MAX_QVARI_NUM
|
||
//qDebug()<<"qrvar"<<sysPara->status.QRvariNum;
|
||
searchQrVar();
|
||
#if 1
|
||
sysPara->status.variNum = 0;
|
||
sysPara->status.ExpiryVarNum = 0;
|
||
sysPara->print.ExpiryVar.startColPos = 0;
|
||
sysPara->print.ExpiryVar.endRowPos = 0;
|
||
sysPara->print.ExpiryVar.letterSpace =0;
|
||
sysPara->print.CurDateVar.startColPos = 0;
|
||
sysPara->print.CurDateVar.endRowPos = 0;
|
||
sysPara->print.CurDateVar.letterSpace = 0;
|
||
sysPara->status.CurrDateVariNum = 0;
|
||
sysPara->status.QRvariNum=0;//lch add
|
||
int myvariNum=0;
|
||
int expiryVarNum = 0;
|
||
|
||
QList<QGraphicsItem *> items = pPicScene->items();
|
||
foreach (QGraphicsItem *item, items) {
|
||
PicTextItem *picText = qgraphicsitem_cast<PicTextItem*>(item);
|
||
//qDebug()<<"item position: "<< picText->pos();
|
||
//qDebug()<<"item bound: "<< picText->boundingRect();
|
||
//int varNum = 0;
|
||
bool ok;
|
||
int textvariNum=0;
|
||
|
||
int textColdot=0;
|
||
//textColdot = (int)picText->document()->size().width();
|
||
textColdot = picText->boundingRect().width();
|
||
//qDebug()<<"textColdot:"<<textColdot;
|
||
if(textColdot > (MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide))
|
||
textColdot = MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide;
|
||
int maxTextHeight = MAX_PRINT_ROW_NUM + 12;
|
||
//int maxTextHeight = picText->document()->size().height();
|
||
if(maxTextHeight > MAX_PRINT_ROW_NUM + 12)
|
||
{
|
||
//maxTextHeight = MAX_PRINT_ROW_NUM + 12;
|
||
}
|
||
QSize textSize(textColdot, maxTextHeight);
|
||
QImage textImage(textSize,QImage::Format_ARGB32);
|
||
textImage.fill(0x00ffffff);//填充白色
|
||
//image.fill(0x00f0f000);//填充白色
|
||
QPainter textPainter(&textImage);
|
||
//textImage.save("./textImage.jpg");
|
||
|
||
//QRectF validtextRectF(picText->pos().x(),picText->pos().y(),textColdot,maxTextHeight);
|
||
QRectF validtextRectF(picText->pos().x(),picText->pos().y(),textColdot,picText->document()->size().height());
|
||
pPicScene->render(&textPainter,QRectF(),validtextRectF);
|
||
//qDebug()<<"validtextRectF:"<<validtextRectF;
|
||
//textImage.save("./textImage.bmp");
|
||
int textFirstRow = maxTextHeight;
|
||
|
||
/*--------------------------------------------------------------------------*/
|
||
for(int j = 0; j < maxTextHeight; j++){ //计算首行位置
|
||
for(int i = 0; i < textColdot; i++){
|
||
QRgb rgb = textImage.pixel(i,j);
|
||
if(rgb !=0x00ffffff )//& 0xff000000)
|
||
{
|
||
//qDebug()<<j<< QString().sprintf("%08X",rgb);
|
||
//if((rgb&0x00FFFFFF)==0)
|
||
{
|
||
textFirstRow = j;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
if(textFirstRow != maxTextHeight)
|
||
break;
|
||
}
|
||
textFirstRow = 0;//变量显示底部会多一条横线
|
||
//qDebug()<<"textFirstRow:"<<textFirstRow;
|
||
int textLastRow = textFirstRow + MAX_PRINT_ROW_NUM;
|
||
int textItemPosX;
|
||
int textItemPosY;
|
||
textItemPosX = picText->pos().x() - pPicScene->itemsBoundingRect().x();
|
||
textItemPosY = picText->pos().y() - pPicScene->itemsBoundingRect().y();
|
||
|
||
//qDebug()<<"textItemPosX:"<<textItemPosX;
|
||
//qDebug()<<"textItemPosY:"<<textItemPosY;
|
||
if(picText->SpecialConditions)
|
||
{
|
||
//SpecialVarPrint specialVarPrint;
|
||
sysPara->status.specialVarPrint.SpecialVarEnable = picText->SpecialConditions;
|
||
sysPara->status.specialVarPrint.SpecialVarCountStart = picText->CatchCnt1StartValue ;
|
||
sysPara->status.specialVarPrint.SpecialVarCountEnd = picText->CatchCnt1CurrValue;
|
||
sysPara->status.specialVarPrint.SpecialVarColStart = 3 + picText->pos().x() - pPicScene->itemsBoundingRect().x();
|
||
sysPara->status.specialVarPrint.SpecialVarColEnd = 3 + picText->pos().x() - pPicScene->itemsBoundingRect().x()+ picText->boundingRect().width();
|
||
sysPara->status.specialVarPrint.SpecialVarRowStart = picText->pos().y() - pPicScene->itemsBoundingRect().y();
|
||
sysPara->status.specialVarPrint.SpecialVarRowEnd = picText->pos().y() - pPicScene->itemsBoundingRect().y()+ picText->boundingRect().height();
|
||
sysPara->devOp->fpgaWr(0xa4b0,(unsigned char *)&sysPara->status.specialVarPrint,sizeof(SpecialVarPrint)); // Send specialVarPrint 2022-8-6
|
||
// LogInfo::setRunStatusText(tr("发送特殊变量内容:"));
|
||
// LogInfo::setRunStatusText(tr("SpecialVarEnable:%1").arg(QString().sprintf("%02X",sysPara->status.specialVarPrint.SpecialVarEnable)));
|
||
// LogInfo::setRunStatusText(tr("SpecialVarCountStart:%1").arg(QString().sprintf("%02X",sysPara->status.specialVarPrint.SpecialVarCountStart)));
|
||
// LogInfo::setRunStatusText(tr("SpecialVarCountEnd:%1").arg(QString().sprintf("%02X",sysPara->status.specialVarPrint.SpecialVarCountEnd)));
|
||
// LogInfo::setRunStatusText(tr("SpecialVarColStart:%1").arg(QString().sprintf("%02X",sysPara->status.specialVarPrint.SpecialVarColStart)));
|
||
// LogInfo::setRunStatusText(tr("SpecialVarColEnd:%1").arg(QString().sprintf("%02X",sysPara->status.specialVarPrint.SpecialVarColEnd)));
|
||
// LogInfo::setRunStatusText(tr("SpecialVarRowStart:%1").arg(QString().sprintf("%02X",sysPara->status.specialVarPrint.SpecialVarRowStart)));
|
||
// LogInfo::setRunStatusText(tr("SpecialVarRowEnd:%1").arg(QString().sprintf("%02X",sysPara->status.specialVarPrint.SpecialVarRowEnd)));
|
||
// int BoundingRectY = pPicScene->itemsBoundingRect().y();
|
||
// int BoundingRectX = pPicScene->itemsBoundingRect().x();
|
||
// LogInfo::setRunStatusText(tr("itemsBoundingRect().y():%1").arg(QString().sprintf("%02X",BoundingRectY)));
|
||
// LogInfo::setRunStatusText(tr("itemsBoundingRect().x():%1").arg(QString().sprintf("%02X",BoundingRectX)));
|
||
}
|
||
|
||
//接下来就是要把打印到数据data填充以及确认变量的个数,变量对应的开始列和结束行
|
||
for(int j = 0; j < textLastRow - textFirstRow; j++){ // Y
|
||
for(int i = 0; i < textColdot; i++){ //
|
||
QRgb rgb = textImage.pixel(i,j + textFirstRow);
|
||
if((rgb&0x80000000)){ //判断alpha
|
||
#ifdef MMVAR
|
||
if((rgb & 0xf0f0ff) == 0xf0f000){ //处理变量, 查找左下角,因为同一行的左下角是对齐的 看起来这个颜色是黄色
|
||
|
||
bool textfoundvar = 0;
|
||
if(j>0){
|
||
QRgb r_rgb = textImage.pixel(i,j + textFirstRow+1);
|
||
if((r_rgb & 0xf0f0ff) != 0xf0f000 )
|
||
{
|
||
textfoundvar =1;
|
||
}
|
||
|
||
}
|
||
if(textfoundvar){
|
||
//qDebug()<<"general variable";
|
||
if(sysPara->status.variNum < MAX_VARI_NUM){
|
||
sysPara->status.vars[sysPara->status.variNum].startColPos = i+(sysPara->status.addSpace?i:0)+textItemPosX;
|
||
sysPara->status.vars[sysPara->status.variNum].endRowPos = j+textItemPosY;
|
||
//qDebug()<<"sysPara->status.variNum:"<<sysPara->status.variNum;
|
||
//qDebug()<<"startColPos:"<<sysPara->status.vars[sysPara->status.variNum].startColPos;
|
||
//qDebug()<<"endRowPos:"<<sysPara->status.vars[sysPara->status.variNum].endRowPos;
|
||
if(varLastRow<j+1)
|
||
varLastRow=j+1;
|
||
sysPara->status.variNum ++;
|
||
textvariNum++;
|
||
i+=5;//scene 每一行可能都包含变量
|
||
//qDebug()<<"VARr:"<<TempVarNum<<i<<j;
|
||
//gItem = pPicScene->itemAt(i,j+firstRow);
|
||
//picText_var[i]= (PicTextItem*) gItem;
|
||
//picText_var_hash.insert(picText_var[i],i);
|
||
}
|
||
else
|
||
{
|
||
textvariNum++;
|
||
}
|
||
}
|
||
}
|
||
#endif
|
||
else if( ((rgb & 0xfffff0) == 0x00ff10) || ((rgb & 0xfffff0) == 0x00ff20) ||((rgb & 0xfffff0) == 0x00ff30) ){
|
||
// 0xff00ff01(DMT) 0xff00ff02(QR) 0xff00ff03(BAR)
|
||
//qDebug()<<"FLAG:"<<i<<j+1<<QString().sprintf("%08X", rgb);
|
||
if(sysPara->status.QRvariNum>=4)continue;
|
||
if((rgb & 0x00ffff0) == 0x00ff10) { //MDT
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].type=MDT;
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].countEn=1;
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].Counter=sysPara->status.productCnt;
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].startColPos=i+(sysPara->status.addSpace?i:0)+textItemPosX;
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].endRowPos=j+1+textItemPosY;
|
||
if(varLastRow<j+1) varLastRow=j+1;
|
||
sysPara->status.QRvariNum++;
|
||
}
|
||
else if((rgb & 0x00ffff0) == 0x00ff20) { //QR
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].type=QR;
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].countEn=1;
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].Counter=sysPara->status.productCnt;
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].startColPos=i+(sysPara->status.addSpace?i:0)+textItemPosX;
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].endRowPos=j+1+textItemPosY;
|
||
if(varLastRow<j+1) varLastRow=j+1;
|
||
sysPara->status.QRvariNum++;
|
||
}
|
||
else if((rgb & 0x00fffff0) == 0x00ff30) { //BAR
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].type=BAR;
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].countEn=1;
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].Counter=sysPara->status.productCnt;
|
||
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].startColPos=i+(sysPara->status.addSpace?i:0)+textItemPosX;
|
||
|
||
sysPara->print.QRvars[sysPara->status.QRvariNum].endRowPos=j+1+textItemPosY;
|
||
|
||
if(varLastRow<j+1) varLastRow=j+1;
|
||
sysPara->status.QRvariNum++;
|
||
|
||
}
|
||
if(sysPara->status.QRvariNum>=4)sysPara->status.QRvariNum=4;
|
||
|
||
}
|
||
//else if((rgb & 0xfffff0)==0xff00f0)
|
||
else if((rgb & 0x0000ffff)==EXPIRY_VARI_RECONISE)
|
||
{ // 有效期变量 : 处理变量, 查找左下角,因为同一行的左下角是对齐的
|
||
//qDebug()<<"found EXPIRY_VARI_RECONISE";
|
||
bool foundExVar=0;
|
||
if(j>0){
|
||
QRgb r_rgb = textImage.pixel(i,j + firstRow+1);
|
||
if(((r_rgb & 0x0000ffff) != EXPIRY_VARI_RECONISE )){foundExVar =1;}
|
||
}
|
||
if(foundExVar)
|
||
{
|
||
//if(sysPara->status.ExpiryVarNum <2)
|
||
{
|
||
//if(sysPara->print.ExpiryVar.endRowPos==0)
|
||
if(sysPara->status.ExpiryVarNum == 0)
|
||
{
|
||
sysPara->status.ExpiryVarNum ++;
|
||
}
|
||
sysPara->print.ExpiryVar.startColPos = i+(sysPara->status.addSpace?i:0)+textItemPosX;
|
||
sysPara->print.ExpiryVar.endRowPos = j+textItemPosY;
|
||
if(varLastRow<j+1) varLastRow=j+1;
|
||
|
||
i+=10;
|
||
//qDebug()<<"ExpiryVar ixj:"<<i<<"x"<<j + firstRow;
|
||
//qDebug()<<"qqqq textItemPosY:"<<textItemPosY;
|
||
//qDebug()<<"qqqq sysPara->print.ExpiryVar.endRowPos:"<<sysPara->print.ExpiryVar.endRowPos;
|
||
}
|
||
//else TempVarNum++;
|
||
//dat[MAX_PRINT_ROW_BYTE_NUM*i + j/8] |= 1 << (j%8); //画黑点
|
||
}
|
||
}
|
||
else if((rgb & 0xfffff0)==0xff0cf0)
|
||
{ // 有效期变量 : 处理变量, 查找左下角,因为同一行的左下角是对齐的
|
||
|
||
bool foundExVar=0;
|
||
if(j>0){
|
||
QRgb r_rgb = textImage.pixel(i,j + firstRow+1);
|
||
if((r_rgb & 0xfffff0) != 0xff0cf0 ){foundExVar =1;}
|
||
}
|
||
if(foundExVar)
|
||
{
|
||
//qDebug()<<"found CurDateVar";
|
||
//if(sysPara->status.ExpiryVarNum <2)
|
||
{
|
||
//if(sysPara->print.CurDateVar.endRowPos==0)
|
||
if(sysPara->status.CurrDateVariNum == 0)
|
||
{
|
||
sysPara->status.CurrDateVariNum ++;
|
||
//setRunStatus(QString("CurrDateVariNum(%1)").arg(sysPara->status.CurrDateVariNum));
|
||
}
|
||
sysPara->print.CurDateVar.startColPos = i+(sysPara->status.addSpace?i:0)+textItemPosX;
|
||
sysPara->print.CurDateVar.endRowPos = j + textItemPosY;
|
||
//qDebug()<<"CurDateVar ixj:"<<i<<"x"<<j + firstRow;
|
||
//qDebug()<<"sysPara->print.CurDateVar.endRowPos:"<<sysPara->print.CurDateVar.endRowPos;
|
||
if(varLastRow<j+1) varLastRow=j+1;
|
||
|
||
i+=10;
|
||
//j++;
|
||
}
|
||
//else TempVarNum++;
|
||
//dat[MAX_PRINT_ROW_BYTE_NUM*i + j/8] |= 1 << (j%8); //画黑点
|
||
}
|
||
}
|
||
else
|
||
{
|
||
#if 0
|
||
//Y = 0.299*R' + 0.587*G' + 0.114*B //非变量
|
||
int y = (((rgb&0xff)*299 + ((rgb>>8)&0xff)*587 + ((rgb>>16)&0xff)*114))/1000;
|
||
//qDebug()<<"y:"<<y;
|
||
if(y < 125 ){
|
||
#ifdef SPACEFLAG
|
||
dat[MAX_PRINT_ROW_BYTE_NUM*(i+(sysPara->status.addSpace?i:0)) + j/8] |= 1 << (j%8); //画黑点
|
||
#else
|
||
dat[MAX_PRINT_ROW_BYTE_NUM*i + j/8] |= 1 << (j%8); //画黑点
|
||
#endif
|
||
}
|
||
#endif
|
||
}
|
||
|
||
if(j > sysPara->status.currPrintRow) {
|
||
sysPara->status.currPrintRow = j+textItemPosY;
|
||
qDebug()<<"sysPara->status.currPrintRow:"<<sysPara->status.currPrintRow;
|
||
}
|
||
}/*判断alpha end*/
|
||
}
|
||
}
|
||
//qDebug()<<"ExpiryVarNum:"<<sysPara->status.ExpiryVarNum;
|
||
//===================一般变量=====================
|
||
//myvariNum = 0;
|
||
QString textVariPattern = "<img src=\":/(\\d*)/(\\d*)/../image/digitalWidth(\\d*).bmp\" width=\"(\\d*)\" height=\"(\\d*)\" />";
|
||
QRegExp textrx(textVariPattern);
|
||
QString textHtml = picText->toHtml();
|
||
int from = 0;
|
||
//int myvariNum=0;
|
||
while(from < textHtml.size() && from != -1){
|
||
from = textHtml.indexOf(textrx,from);
|
||
|
||
if(from != -1){//找到匹配的
|
||
//qDebug()<<"found variable";
|
||
from ++;
|
||
//if(myvariNum < textvariNum)
|
||
if(myvariNum < sysPara->status.variNum)
|
||
{
|
||
sysPara->status.vars[myvariNum].digitalNum = textrx.cap(3).toInt(&ok);//第二个匹配,数字到个数
|
||
sysPara->status.vars[myvariNum].bold = (sysPara->status.vars[myvariNum].digitalNum%100) == 75;
|
||
if(sysPara->status.vars[myvariNum].bold)
|
||
sysPara->status.vars[myvariNum].digitalNum = sysPara->status.vars[myvariNum].digitalNum/100;
|
||
|
||
sysPara->status.vars[myvariNum].type = textrx.cap(2).toInt(&ok);//第一个匹配
|
||
|
||
sysPara->status.vars[myvariNum].width = textrx.cap(4).toInt(&ok)*(sysPara->status.addSpace?2:1);
|
||
sysPara->status.vars[myvariNum].height = textrx.cap(5).toInt(&ok);
|
||
//qDebug()<<"myvariNum endRowPos:"<<sysPara->status.vars[myvariNum].endRowPos;
|
||
//qDebug()<<"myvariNum height:"<<sysPara->status.vars[myvariNum].height;
|
||
sysPara->status.vars[myvariNum].startRowPos = sysPara->status.vars[myvariNum].endRowPos - sysPara->status.vars[myvariNum].height+1;
|
||
//sysPara->status.vars[myvariNum].startRowPos = sysPara->status.vars[myvariNum].endRowPos - sysPara->status.vars[myvariNum].height;
|
||
//qDebug()<<"start row:"<<sysPara->status.vars[myvariNum].startRowPos;
|
||
if(sysPara->status.vars[myvariNum].startRowPos<0)
|
||
sysPara->status.vars[myvariNum].startRowPos=0;
|
||
|
||
int item_x_start_pos = sysPara->status.vars[myvariNum].startColPos;
|
||
int item_x_end_pos = item_x_start_pos + sysPara->status.vars[myvariNum].width ;
|
||
if(item_x_end_pos > (MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide))
|
||
item_x_end_pos = MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide;
|
||
int item_y_start_pos = sysPara->status.vars[myvariNum].startRowPos;
|
||
int item_y_end_pos = sysPara->status.vars[myvariNum].endRowPos+1 ;
|
||
if(item_y_start_pos < 0)
|
||
item_y_start_pos = 0;
|
||
for(int i = item_x_start_pos; i < item_x_end_pos; i++){
|
||
for(int j = item_y_start_pos; j < item_y_end_pos; j++){
|
||
dat[MAX_PRINT_ROW_BYTE_NUM*(i+(sysPara->status.addSpace?0:0)) + j/8] &= ~(1 << (j%8)); //将画点取消掉
|
||
}
|
||
}
|
||
sysPara->status.vars[myvariNum].height = textrx.cap(5).toInt(&ok)-1;
|
||
if(sysPara->status.vars[myvariNum].height>16 ){
|
||
if(sysPara->status.vars[myvariNum].height==24)
|
||
;
|
||
else {
|
||
if(sysPara->status.vars[myvariNum].startRowPos)
|
||
{
|
||
sysPara->status.vars[myvariNum].endRowPos--;
|
||
sysPara->status.vars[myvariNum].startRowPos--;
|
||
}
|
||
|
||
}
|
||
|
||
}
|
||
|
||
if(sysPara->status.vars[myvariNum].type == RANDOMNUM)
|
||
{
|
||
//qDebug()<<"RAND:"<<sysPara->status.vars[myvariNum].type<< sysPara->status.vars[myvariNum].digitalNum;
|
||
sysPara->status.RandomDigitNum = sysPara->status.vars[myvariNum].digitalNum;
|
||
}
|
||
int pixelSize = Public::derivePixelSizeFromHeight(sysPara->status.vars[myvariNum].height);
|
||
|
||
//qDebug()<<"MainWindows"<<sysPara->status.vars[myvariNum].height<<pixelSize;
|
||
|
||
sysPara->status.vars[myvariNum].letterSpace = 0;
|
||
if(sysPara->status.vars[myvariNum].digitalNum){ //算出letterspace
|
||
QFont font;
|
||
//font.setFamily(Public::getFontFamily(pixelSize));
|
||
font.setFamily(Public::getFontFamily(pixelSize,sysPara->status.vars[myvariNum].type )); // 20160812
|
||
//pixelSize==7? font.setFamily(ui->textEditOption->getLabelFontFamily()->text()):font.setFamily(Public::getFontFamily(pixelSize, 0));
|
||
font.setPixelSize(pixelSize);
|
||
font.setWeight(sysPara->status.vars[myvariNum].bold?QFont::Bold:QFont::Normal);
|
||
//font.setLetterSpacing(QFont::AbsoluteSpacing,sysPara->para.textEditCharSpace);
|
||
QFontMetrics fontMetrics(font);
|
||
int charWidth = (fontMetrics.width("0123456789"))/10 ;
|
||
sysPara->status.vars[myvariNum].letterSpace = sysPara->para.textEditCharSpace;
|
||
//sysPara->status.vars[myvariNum].letterSpace =
|
||
//sysPara->status.vars[myvariNum].width/sysPara->status.vars[myvariNum].digitalNum/(sysPara->status.addSpace?2:1) - charWidth;
|
||
}
|
||
myvariNum++;
|
||
}
|
||
}
|
||
}
|
||
//==========================一般变量结束=======================
|
||
|
||
//=========================有效期/生产日期变量 开始==================
|
||
//qDebug()<<"sysPara->status.ExpiryVarNum";
|
||
if(sysPara->status.ExpiryVarNum || sysPara->status.CurrDateVariNum)
|
||
{
|
||
QString expiryPattern = "<img src=\":/(\\d*)/image/(\\w*).bmp\" width=\"(\\d*)\" height=\"(\\d*)\" />";
|
||
// 1 type ,2 name,3 width,4 height
|
||
//<img src=":/80/image/expiryDate8.bmp" width="149" height="10" /></p>
|
||
QRegExp expiryRx(expiryPattern);
|
||
QString expiryHtml = picText->toHtml();
|
||
int from = 0;
|
||
|
||
while(from < expiryHtml.size() && from != -1){
|
||
from = expiryHtml.indexOf(expiryRx,from);
|
||
bool ok;
|
||
//qDebug()<<xx<<"from:"<<from;
|
||
if(from != -1)
|
||
{
|
||
from ++;
|
||
if(expiryVarNum < 3)
|
||
{
|
||
QString s = expiryRx.cap(2);
|
||
int type = expiryRx.cap(1).toInt(&ok);
|
||
// 填充信息
|
||
//qDebug()<<"QVARName:"<<type<<expiryRx.cap(1)<<expiryRx.cap(2)<<expiryRx.cap(3)<<expiryRx.cap(4);
|
||
if(type==EXPIRYDATE || type==EXPIRYDATE + 10 || type==EXPIRYDATE + 20)
|
||
{ //expiryDate
|
||
qDebug()<<"expiryHtml:"<<expiryHtml;
|
||
//qDebug()<<"ExpiryVar:"<<type<<expiryRx.cap(1)<<expiryRx.cap(2).left(10)<<expiryRx.cap(2)<<expiryRx.cap(3)<<expiryRx.cap(4);
|
||
qDebug()<<"ddd sysPara->print.ExpiryVar.endRowPos:"<<sysPara->print.ExpiryVar.endRowPos;
|
||
sysPara->print.ExpiryVar.type = type;
|
||
sysPara->print.ExpiryVar.width = expiryRx.cap(3).toInt(&ok);// *(sysPara->status.addSpace && type==9 ?2:1) ;
|
||
sysPara->print.ExpiryVar.height = expiryRx.cap(4).toInt(&ok);
|
||
//sysPara->print.ExpiryVar.startRowPos = sysPara->print.ExpiryVar.endRowPos-sysPara->print.ExpiryVar.height;
|
||
sysPara->print.ExpiryVar.startRowPos = sysPara->print.ExpiryVar.endRowPos-(sysPara->print.ExpiryVar.height-1);
|
||
qDebug()<<"endRow:"<<sysPara->print.ExpiryVar.endRowPos;
|
||
qDebug()<<"startRow:"<<sysPara->print.ExpiryVar.startRowPos;
|
||
qDebug()<<"height:"<<sysPara->print.ExpiryVar.height;
|
||
if(expiryRx.cap(2).contains("875"))
|
||
{
|
||
//qDebug()<<"ExpiryVar:Bold";
|
||
sysPara->print.ExpiryVar.bold = 1;
|
||
}
|
||
else
|
||
{
|
||
//qDebug()<<"ExpiryVar:normal";
|
||
sysPara->print.ExpiryVar.bold = 0;
|
||
}
|
||
// 直接更新有效期,并退出?
|
||
ExpiryDotUpdate(1);
|
||
expiryVarNum++;
|
||
}
|
||
else if(type==CURDATE || type==CURDATE + 10 || type==CURDATE + 20)
|
||
{ //currDate
|
||
//qDebug()<<"CurDateVar:"<<type<<expiryRx.cap(1)<<expiryRx.cap(2).left(10)<<expiryRx.cap(2)<<expiryRx.cap(3)<<expiryRx.cap(4);
|
||
sysPara->print.CurDateVar.type = type;
|
||
sysPara->print.CurDateVar.width = expiryRx.cap(3).toInt(&ok);// *(sysPara->status.addSpace && type==9 ?2:1) ;
|
||
sysPara->print.CurDateVar.height = expiryRx.cap(4).toInt(&ok);
|
||
//sysPara->print.CurDateVar.startRowPos = sysPara->print.CurDateVar.endRowPos-sysPara->print.CurDateVar.height;
|
||
sysPara->print.CurDateVar.startRowPos = sysPara->print.CurDateVar.endRowPos-(sysPara->print.CurDateVar.height-1);
|
||
//qDebug()<<"CurDateVar:startRowPos"<<sysPara->print.CurDateVar.startRowPos<<" height"<<sysPara->print.CurDateVar.height;
|
||
// 生产日期即当前日期
|
||
if(expiryRx.cap(2).contains("875"))
|
||
{
|
||
//qDebug()<<"CurDateVar:Bold";
|
||
sysPara->print.CurDateVar.bold = 1;
|
||
}
|
||
else
|
||
{
|
||
//qDebug()<<"CurDateVar:normal";
|
||
sysPara->print.CurDateVar.bold = 0;
|
||
}
|
||
ExpiryDotUpdate(2);
|
||
expiryVarNum++;
|
||
}
|
||
|
||
}
|
||
else break;
|
||
}
|
||
}
|
||
}
|
||
//=========================有效期/生产日期变量 结束==================
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
#endif
|
||
|
||
//if(sysPara->status.variNum) qDebug()<< sysPara->status.vars[0].startColPos<<sysPara->status.vars[0].endRowPos ;
|
||
|
||
/*--------------------------------------------------------------------------*/
|
||
generateCharRamData();
|
||
|
||
//qDebug()<<"1"<<sysPara->status.currPrintRow;
|
||
/*---------------------------------------------------------------------------*/
|
||
//sysPara->status.currPrintRow ++;//总的行数,从1~n,而不是从0~n,
|
||
//if(sysPara->status.currPrintRow>39)sysPara->status.currPrintRow=39;
|
||
if(sysPara->status.currPrintRow>MAX_PRINT_ROW_NUM-1)sysPara->status.currPrintRow=MAX_PRINT_ROW_NUM-1;
|
||
bool found=0;
|
||
|
||
lastRow = sysPara->status.currPrintRow;
|
||
//qDebug()<<"lastRow:"<<lastRow;
|
||
for(int j = sysPara->status.currPrintRow; j >2 ; j--){ //计算首行位置
|
||
for(int i = 0; i < coldot; i++){
|
||
if(dat[MAX_PRINT_ROW_BYTE_NUM*i + j/8] & (1 << (j%8))){
|
||
lastRow = j+1;
|
||
found=1;//qDebug()<<"fOUND:"<<i<<j<<dat[MAX_PRINT_ROW_BYTE_NUM*i + j/8]<<sysPara->status.currPrintRow;
|
||
break;
|
||
}
|
||
}
|
||
if(found)
|
||
break;
|
||
}
|
||
if(lastRow>MAX_PRINT_ROW_NUM-1)lastRow = MAX_PRINT_ROW_NUM-1;
|
||
if(lastRow<varLastRow)lastRow= varLastRow-1;//在场景模式下,变量的最低一行并不一定是打印的最后一行
|
||
|
||
if(lastRow<1) lastRow =1;
|
||
//if(lastRow == 16) lastRow +=1; //来工測試用
|
||
//if(lastRow>20 &&lastRow<=25) lastRow =24;
|
||
|
||
sysPara->status.currPrintRow =lastRow;
|
||
//sysPara->status.currPrintRow =(lastRow > varLastRow) ? lastRow : varLastRow; //配合賴工省点打印少行問题
|
||
//qDebug()<<"lastRow:"<<lastRow;
|
||
//qDebug()<<"2"<<sysPara->status.currPrintRow;
|
||
#endif
|
||
|
||
}
|
||
|
||
#ifdef SPACEFLAG
|
||
//sysPara->status.currPrintCol
|
||
#else
|
||
|
||
#endif
|
||
|
||
#ifdef _2DCODE_
|
||
if(sysPara->status.QRvariNum) {
|
||
onUpdateDispQRCode(1);
|
||
}
|
||
#endif
|
||
//if(sysPara->status.currPrintRow==11) sysPara->status.currPrintRow=12;
|
||
int wmax = sysPara->status.currPrintRow;
|
||
sysPara->status.currAlterPrintRow = sysPara->status.currPrintRow/2;
|
||
if(sysPara->para.alterPrint.enable<1) sysPara->para.AlterMode=0;
|
||
else {
|
||
if(sysPara->para.AlterMode==0)sysPara->para.AlterMode=1;
|
||
wmax = sysPara->status.currAlterPrintRow;
|
||
}
|
||
/*-------------------------------切换到显示窗口-----------------------------------*/
|
||
if(sysPara->status.addSpace)
|
||
ui->widgetPrintTextDisplay->setDisplaySize(sysPara->status.currPrintCol/2,sysPara->status.currPrintRow);
|
||
else ui->widgetPrintTextDisplay->setDisplaySize(sysPara->status.currPrintCol,sysPara->status.currPrintRow);
|
||
|
||
ui->widgetPrintTextDisplay->setDisplaySize(sysPara->status.currPrintCol,sysPara->para.AlterMode?sysPara->status.currAlterPrintRow : sysPara->status.currPrintRow);
|
||
ui->stackedWidgetText->setCurrentWidget(ui->pagePrintTextDisplay);
|
||
ui->stackedWidgetOption->setCurrentWidget(ui->pageOption);
|
||
ui->labelTextWidthHeight->setText(tr("[ %1行 x %2列 ]").arg(wmax).arg(sysPara->status.currPrintCol));
|
||
ui->widgetPrintTextDisplay->update();
|
||
//qDebug()<<"3"<<sysPara->status.currPrintRow;
|
||
}
|
||
previewFlag=0;
|
||
}
|
||
|
||
|
||
int MainWindow::calculateMaxSpeed(int backup)
|
||
{
|
||
float stroke;
|
||
int valid_array;
|
||
int rongdian = 0;
|
||
int mm;
|
||
int oscfreq = 0;
|
||
|
||
// QSizeF size = ui->textEdit->document()->size();
|
||
|
||
switch (sysPara->para.oscillatoFreq) {
|
||
case CRYS_64K:
|
||
oscfreq = 64000;
|
||
break;
|
||
case CRYS_76K:
|
||
oscfreq = 76000;
|
||
break;
|
||
// case CRYS_83K:
|
||
// oscfreq = 83000;
|
||
// break;
|
||
case CRYS_96K:
|
||
oscfreq = 96000;
|
||
break;
|
||
case CRYS_128K:
|
||
oscfreq = 128000;
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
stroke = sysPara->para.printColDelay/sysPara->para.synPulseNumPerMm;
|
||
// stroke = stroke * 0.001; //unit is m
|
||
|
||
// qDebug()<< "[Info] stroke" << stroke;
|
||
// qDebug()<< "[Info] oscfreq" << oscfreq;
|
||
// qDebug()<< "[Info] sysPara->status.currPrintRow" << sysPara->status.currPrintRow;
|
||
// qDebug()<< "[Info] reducedPixelNumRatio" << sysPara->para.reducedPixelNumRatio;
|
||
|
||
// if(sysPara->para.currPrintMode == FAST_PRINT && (sysPara->status.currPrintRow < 10) && (sysPara->para.reducedPixelNumRatio == 0) ){
|
||
|
||
// mm = (float)(stroke * oscfreq /(sysPara->status.currPrintRow +1));
|
||
//// qDebug()<< "[Info] FAST_PRINT mm" << mm;
|
||
// return mm;
|
||
// }else if(sysPara->para.currPrintMode == STANDARD_PRINT){
|
||
|
||
// valid_array = sysPara->status.currPrintRow * (1- (float)sysPara->para.reducedPixelNumRatio/100);
|
||
//// qDebug()<< "[Info] sysPara->para.reducedPixelNumRatio" << sysPara->para.reducedPixelNumRatio;
|
||
//// qDebug()<< "[Info] valid_array " << valid_array;
|
||
// mm = (float)( (stroke * oscfreq) / (valid_array * 2));
|
||
|
||
//// qDebug()<< "[Info] STANDARD_PRINT mm" << mm;
|
||
|
||
// return mm;
|
||
// }else
|
||
// {
|
||
// mm = backup/sysPara->para.synPulseNumPerMm;
|
||
//// qDebug()<< "[Info]calculateMaxSpeed OLD COUNT mm" << mm;
|
||
// return mm; // 列的最大间距
|
||
// }
|
||
|
||
rongdian = sysPara->status.currPrintRow * (float)sysPara->para.reducedPixelNumRatio/100;
|
||
//rongdian = sysPara->status.currPrintRow * 0.3; //冗点30%计算
|
||
valid_array = sysPara->status.currPrintRow - rongdian;
|
||
|
||
// valid_array = sysPara->status.currPrintRow * (1- (float)sysPara->para.reducedPixelNumRatio/100);
|
||
|
||
switch (sysPara->para.currPrintMode) {
|
||
case FAST_PRINT:
|
||
mm = (float)(stroke * oscfreq /(sysPara->status.currPrintRow +1));
|
||
break;
|
||
case STANDARD_PRINT:
|
||
mm = (float)( (stroke * oscfreq) / (valid_array * 2));
|
||
break;
|
||
case SLOW_PRINT_ONE:
|
||
mm = (float)( (stroke * oscfreq) / (valid_array * 3));
|
||
break;
|
||
case SLOW_PRINT_TWO:
|
||
mm = (float)( (stroke * oscfreq) / (valid_array * 4));
|
||
break;
|
||
case SLOW_PRINT_THR:
|
||
mm = (float)( (stroke * oscfreq) / (valid_array * 5));
|
||
break;
|
||
case SLOW_PRINT_FOR:
|
||
mm = (float)( (stroke * oscfreq) / (valid_array * 6));
|
||
break;
|
||
case SLOW_PRINT_FIV:
|
||
mm = (float)( (stroke * oscfreq) / (valid_array * 7));
|
||
break;
|
||
case SLOW_PRINT_SIX:
|
||
mm = (float)( (stroke * oscfreq) / (valid_array * 8));
|
||
break;
|
||
case SLOW_PRINT_SEV:
|
||
mm = (float)( (stroke * oscfreq) / (valid_array * 9));
|
||
break;
|
||
case SLOW_PRINT_EIG:
|
||
mm = (float)( (stroke * oscfreq) / (valid_array * 10));
|
||
break;
|
||
case SLOW_PRINT_NIE:
|
||
mm = (float)( (stroke * oscfreq) / (valid_array * 11));
|
||
break;
|
||
default:
|
||
mm = backup/sysPara->para.synPulseNumPerMm;
|
||
break;
|
||
}
|
||
|
||
return mm;
|
||
|
||
}
|
||
|
||
void MainWindow::Test_Start_Stop()
|
||
{
|
||
if(test_flag <=0) return;
|
||
if(test_flag >= RECICLARNUMBER){
|
||
LogInfo::setRunStatusText(tr("回收槽开关检测完成!"));
|
||
test_flag = 0;
|
||
return;
|
||
}
|
||
if((test_flag%2) == 1){
|
||
if(!open_close){
|
||
on_pushButtonReclaimTanOpen_pressed();
|
||
open_close = 1;
|
||
}
|
||
}
|
||
else if(test_flag%2 == 0){
|
||
if(open_close){
|
||
on_pushButtonReclaimTankClose_pressed();
|
||
open_close = 0;
|
||
}
|
||
}
|
||
}
|
||
|
||
void MainWindow::UpdateDateTimeQRCode(QString strContent)
|
||
{
|
||
if(!printintFlag || !sysPara->para.isCheckInsertTime)
|
||
//if(!sysPara->para.isCheckInsertTime)
|
||
{
|
||
return ;
|
||
}
|
||
|
||
QLabel *labelFontSize = ui->textEditOption->getLabelFontSize();
|
||
bool ok;
|
||
int font_size = labelFontSize->text().toInt(&ok,10);
|
||
QString font_family = Public::getFontFamily(font_size);
|
||
if(sysPara->para.EditMode == TXTFILE)
|
||
{
|
||
QFile file("/home/plg/doc/modbusQR.bmp");
|
||
if(file.exists())
|
||
{
|
||
file.remove();
|
||
}
|
||
if(dlgqrcode->barCodeFlag == 1)
|
||
{
|
||
//barcode->extSetText(QString::fromUtf8(strContent.toStdString().c_str()));
|
||
barcode->extSetText("");
|
||
barcode->GetOption((bcOption_t*)&sysPara->para.bcOption);
|
||
}
|
||
else
|
||
{
|
||
QString receiveContent = QString::fromUtf8(strContent.toStdString().c_str());
|
||
dlgqrcode->extSetText(receiveContent,sysPara->para.qrOption.type);
|
||
// dlgqrcode->extSetText("asbasb");
|
||
dlgqrcode->GetOption((qrOption_t *)&sysPara->para.qrOption);
|
||
}
|
||
|
||
QString txt_fomart = "";
|
||
txt_fomart = QString::fromUtf8("<span style=\" font-family:'%1'; font-size:%2pt;font-weight:%3;\">").arg(font_family).arg(font_size)
|
||
.arg(ui->textEditOption->getCheckBoxBold()->isChecked()? 600:400);
|
||
txt_fomart += barcode->getLabe_TxtString().toUtf8();
|
||
txt_fomart += " </span>";
|
||
// ui->textEditOption->modbus_insert_pic("/home/plg/doc/QR_aa.bmp");
|
||
//ui->textEditOption->textEdit->clear();//插入之前先清空
|
||
//ui->textEditOption->modbus_insert_pic("/home/plg/doc/modbusQR.bmp");
|
||
txt_fomart += "<img src=\"/home/plg/doc/modbusQR.bmp\" />";
|
||
ui->textEditOption->textEdit->setHtml(txt_fomart);
|
||
ui->textEditOption->textEdit->moveCursor(QTextCursor::EndOfLine);
|
||
//sysPara->status.oneCodePrintOnce = true;
|
||
on_pushButtonStartPrint_pressed();//开始打印
|
||
}
|
||
|
||
}
|