From dbed6453cf68e7c9ca0b10a672aa7d8216d23b3d Mon Sep 17 00:00:00 2001 From: qushuailong Date: Tue, 6 Jul 2021 11:43:13 +0800 Subject: [PATCH] =?UTF-8?q?1=20=E6=B7=BB=E5=8A=A0lpReport=E6=9F=A5?= =?UTF-8?q?=E7=9C=8B=E6=8A=A5=E8=A1=A8=E8=BD=AF=E4=BB=B6=E7=9A=84=E8=8B=B1?= =?UTF-8?q?=E6=96=87=E7=BF=BB=E8=AF=91=202=20=E8=A7=A3=E5=86=B3=E9=83=A8?= =?UTF-8?q?=E5=88=86.ts=E7=BF=BB=E8=AF=91=E6=96=87=E4=BB=B6=E4=B8=AD?= =?UTF-8?q?=E6=96=87=E4=B9=B1=E7=A0=81=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- runner17/language/English/lpmain_en.qm | Bin 46182 -> 46112 bytes runner17/language/English/rastersdg20_en.qm | Bin 13614 -> 14806 bytes src/RasterSDG20/Raster.cpp | 18 +- src/RasterSDG20/Raster.h | 12 +- src/RasterSDG20/ThicknessVector.cpp | 8 +- src/RasterSDG20/muban.cpp | 60 ++-- src/RasterSDG20/qsimpletickergraph.cpp | 2 +- src/RasterSDG20/rastersdg20.cpp | 12 +- src/RasterSDG20/widget/mychart1.cpp | 2 +- src/RasterSDG20/widget/switchbutton.cpp | 64 ++-- src/ReportModel/checkdata.h | 2 +- src/ReportModel/checkthread.h | 2 +- src/ReportModel/countdata.h | 2 +- src/ReportModel/qcheckcal.h | 2 +- src/ReportModel/qgenalwidget.h | 2 +- src/ReportModel/qreportwidget.h | 2 +- src/ReportModel/qsavecsvthread.h | 2 +- src/ReportModel/qtimedlg.h | 2 +- src/ReportModel/reportmodel.h | 2 +- src/ReportModel/reportmodel_global.h | 2 +- src/ReportModel/testwidget.h | 2 +- src/ReportModel/waitingdialog.h | 2 +- src/ReportModel/workfordb.h | 2 +- tpvs17/RasterSDG20/rastersdg20_en.ts | 104 +++--- tpvs17/lpReport/ModelDB.cpp | 22 +- tpvs17/lpReport/lpReport.cpp | 330 ++++++++++++-------- tpvs17/lpReport/lpReport.h | 10 + tpvs17/lpReport/main.cpp | 2 +- tpvs17/tpMain/lpMainWin.ui | 2 +- tpvs17/tpMain/lpmain_en.ts | 22 +- 30 files changed, 406 insertions(+), 290 deletions(-) diff --git a/runner17/language/English/lpmain_en.qm b/runner17/language/English/lpmain_en.qm index fec61811170a603993fc61ed0c2965433bafc0c4..72aaea6f2905afb14e43f3e98892427caf468728 100644 GIT binary patch delta 2201 zcmX9v1PJ1mAtTY@m~j$}<8q8+Mgp#w7!)y#%Lqo$NsP)|PoMhnoqF}&efNI%yI=L( z>oBHknf3g9O0)QQ6 z;4u%>+<|u3e86`dv?*~wsSlLmP#}6H)WvTB>rY{5Eyb}ff>%i|P&*s8pUwjT4vfcF z^nDFt?r4F+Zp5A{1uFYp(^RA!r8M-7$jq8UAs-?8@Wi{03lM zE=%MsuDQHdkOItZ<-L-=2AGYlNVW1+YJq9Tyzq{e+i4&?URWg_l1T1G%jl zF2oxc9j!6+lDaDEG+}%40BM3I=3y4_PO>I3tq}OY$b2-uUKOpH(!?3S#wD81jJtrf zO`4-^#K_KXS+Zuk=NN6+Uebu6Lpyf@t(JVDT@2k4;GEExB=CP#P@+(cm-z919a9~AVYPO3!as_Ek8I*%w^~9%69({w(*N3tn z^dFSp4$zcWVIiS~q9tX8se0qnSBSw7X+@G=_+J8NtiwwA8= z()e%H71(puc;&%sgO$r-D-C10MeL9vdStN@T0Dy4 zeXE3hNuFzJS4!4KkySydx{^nJa!lEiKm_GIV(zllHAJ~Oi(GK)D&^X(`@oi?EKatL zKcRHlC`Or}bou*`aP>|s3st&iO$AnOQ*QT)vHrV=yPNF-C`UQ2FKOXT)$e%P=~)iEOJeV17=oYWR-i zYj$zss&Z9+MM>IvRc<{{8 z7AyVvbboc?ip$Jo^5yppvLKVMx!}3#-L@7e+UUfZk65ZH*fU@CzCFpTXZ*p*R*acJY$kXb$8Puwx8*1cfB6hi1jl4vZn$p$CYjwbfU260M%CEkO zjZlK82B&dEbsJoI|$;kTD6NwJW%A&Tt`p<63Q7;wI5H0*vz12wHmxid1T|OWi zTdoeanJ8N6ax&hc=4z#3s%*d<k-{6|3^j=5Nd40^Iy?)$?Ta~r}+BFxPL z^S-yUCYuNAU1w)KQNGRN)<^JcV4h3!=EAp)77xs(BiTrY4T;DhqyQ*j9_8WMp@_vA wmKW&8a?3*m55zVfDZlK>4|2_=wSvF`s)sh$)Tg>|jqKUsPhTxJ967`PA9wqUYXATM delta 2290 zcmZ8iX;f3!7XI$NA<0c{?oA>PK_nq6!GTFp6cmt()FCQW(5k2?*g7HLR6qe+5rwCM zr#M3a$J*N3rmkfb>U!3;)>RQ4D(^Xh*5^>Q74+HG;cd;2uJwL>_nx!QK6`)r+xyhq z=5O8R%lq*qaz%fuSPaDb14|B6q*@9O0{82IgQd+XKzYEFo~25jxkDFBe}Y8@GpWIWb!)_Ib>}TLap-w)^S8!Y1y9OeBmv&fS`R12Dhj?)?QI ze?4>Z7SlJpZ?FuEZ{&TGz5&>~Yzc4WzGRiWb?7{P^I;z#UBx%|dkl<=2t3F7jp>LSWyO(L&m_jg(%X zP@Mh*7<^Y)vuh!+^Qo|I%@;uT5yHAQ3Z^(kXn3z2*u9K32#!Gug%_9TlCAl|iz`Jy z)~_lq%nyi&Rp}m>NeREI`qpLxVzesm{(N9|vdWoO0DLf+byfNMR`{t(oMV8M2UVX) zTY$WuREL^~ku9BAvTB3R3Xi@!Nh7)zkBQN=x?1HiJw~R(=h$1BhNB2|3Yc!(y0Z_R@qZ}j8mB%#3 zhO=bPG-kg)fepbLzggRWG0Qa8fJ>y5C{3{KUli9UP29sBz|0^wZi?5$?=A)OHJVZS z7$EBX7aBHWCouP(=Jbm)ASpp}v4Z3}w?uRK+ZLc8LUTQ3I`Q(g=FT2EC^l>ErDg!j z7BHvUYAV$l8~uS{Q{7njl&w%(dhXMDJ|=E83$@-EF6uI;)~AT%%AeNyU8Szf=&bc0 zKNu(*#TwKO(`N0-t3=MyI_Ui$~lg$ts%vpcXLOf+{}1q649 zo-q_i*D0b`wilJvA$D$#q)aMApYl{7^S;>SA@!xPUF`CVnDHzT!(JXHJs%W@?7a%a z6pQh;FjCV7G4Y3&KzNEcQ8f|Rby(a!jVe%dR@@&w6awm|uqsVx_>Vg69%|bahjivF zD_swrU&}la>nfeCgH%>NOc(gZ5+HT6F08qcCR7D`u1VzlS%Nk(>8YNtAeXGOUKRQo zY3ROQn?p*SIa_a5NT~(2ddr5fbf%Bq_6rrS$1T0%^Y5wHlk`0okk;gv`rubJ=~}Ii zxJ>73a@iGar0GL_efC2tb(8*7IVpBmChH*%h+pfJ0*PdQS+jgNpZPO^KQqAuAa z1(lH!Hu_6J2dEuJpOShN5s#|}OZ`4>qtSUr8ek{dN4&+VL@T$LHHelu>!rFEnLyv~ zrTQ*;)H0BMQcOUdEM2(Qizdc@rM9V)0Y?|S?@=HFz$iM09lqU)$#- zlJkau=7GS}X$E@%CGfsv7_f-^_IcAV!n&DSbP^k)vv8FxS!d-+*%DnOx0fBz#r8ZY zhZlta)t%(NM`-36n&slW7#dZOD=%czJUJrQjv#_^Wag!}nhNBf$I%pA_nmz4`dylx z0!z?a2VId{ZRDdgNp9`dm4vHxV`-t>I&L`d-luX~djxfwB;TB2q-j_#|7T1ciE<6A z(kBLdCErQ9P3)z+G54Aq%bv*(9h7;si+M<)+(g!2a)?Ler@#M6Bcq;WNDj(lofJ4Z zOHy=aNWNyH8<%~o=wDHiwp`IS?j=g>iaAC@weL{O*#k(X5lW}4w4Ogu@eHGj^Jghu zwbWZL?|OT^AGD^cf&QbW2Db+MXW(oiKf zn&PW@!g|P|!-pvw?aOIYUskpxHv+4MD94-*ipruiy?STYHYn!`sfniTQ?Bo){ddBY zN5&6`+!EzwlYzu`VGgP2JJ&Y3Zn#0h1mqwMbC3y}D>3)FVK4U6e(0W#R7{NAEBh9Lv<>2GDN#pSm=hBp~8l#J8= zHgu&G%$Iui!g#XGeC;O_@6fi}>#Nf?j3%EmU&oY#Tz0dxU#Gy=o)^=ZS#+a~c5_*F ukS7Z(3o~{9|2@~NvhyY$A+AAHg238lnOzfVQjOd`_T|BSuBl&~;Qt3;`;dPC diff --git a/runner17/language/English/rastersdg20_en.qm b/runner17/language/English/rastersdg20_en.qm index c2fc514d396df174d3feca054e009f6e40faeca3..2ba5280f5458d7727a7e5db341fc9cdc1e293818 100644 GIT binary patch delta 2641 zcmcIldr(wW82|R}E+8(8iO;lHAIrGN!(Dk8k&TEC%FGcQ8=YxHScKvgyDP#>Eu_2@ zkhqY71_n}!37aUOfQ{qmOwH8jn9kH+)$F~nmYR;)XgT#e_u>VKa{QyYu;<>p=lovZ zcg}Xabr8?7>KMAT1vp%gICch0x@TL77H?Lq z>~1G=hRj!4`|pBuj;j7{D<;0H>W{9+vVLyDD=|dDSGc*auOeEgmq*JaE^1d3#Ok^A zuCE~MJ?`flmx;n&R9pBktXrv05O)(rG^uX}!AQgs&7=dtz}cZOFG?VaoTrKSbsq%x zXkPvHHA7fc~g?Me?V1)Dc=Dw~)QtP~Rt{ynO$FEQYIlWK%n7_et%O#)t zo3SkPj|t!RK7g-uU++qcVa2}Y06lcZ`zAE)fX)Kn!af)1!zM16g7>ED6RW~b5~&(= zhL+p#|D|s6(VtL&!@6}3zQc2p?)SeOz`5tgaVsF>j9+cbQlh9g{A$lGpe+=2(eJd+ zP3ZkZzqoEP^nIv5?*g#VsK0Rm0!-WWceTi2;dy^!bteS;=wETQ0EOxCzi>Mm^Dp^d zJerFNw)@}HZh`@e|NTFg;hD=o`)ugi#6@e-D71tU`Ocu}@kTO}fsACqX9{If4%x^` zsWeBr3_h4jZ2oL_?+IaVtI=#QS`0!-muKJcTm8lIAAj3tnmSGfOd1WCL%9IU26P%F zQwHG2gPuDYTCCuO{vzS<=R+sk9w%5M6KoidfWaD|+yM_MAhF>}!&4@%0vd5K^Pf~= zd5y5UnOO*or{$2D387ml4|jIli+oTvisZ3ZL3_HQ46u zgoa6!h-`AB+?ZicNsn{b?K#3Z&Ylkl5m}Yjr~LLGgIY zxGSF>wbBNwSul)}&Sy##@?ii^S($jKXM~zh4_WIRr6QK%pqgPAu-t)htK@=}FAeYP zQjpm&%&gjRF^@6WPG<5|$fgNKLFs1obCpHR^?!xeqHf;yi>9;lE%v6ifq!BQ!0QtYgc*_M?1G#dqFt;HO&BIij( zakA5X@?clrU|+LPTH@JxL?}DsscRThg;+{LZ&;-Y6rc(WQif-zTRwxMx0Q~_l?d30 zmj}v`L*NllPn&xHJGxcq?RAbJiu)I$RDdy3)=-Qx7nF?DAi2uGv6Br!tTF9Mv(1ui ziLFKAsXaouOXxf;l$E-BtA;8%AJIC8PoP*@1H63TvBYw*Gg-SamVC*E{Bx5loi6x^ zL8s)vnjP%hXyjm>F?5y}O4@4YMt!)!^BNNH_i;gq~yj Nd2_@}ep=*=zX9wV&-DNR delta 1681 zcmb7Ec}Nst6n`^2v+C?Ir7K03YiVujuDfd~iIH}wSy5>v6de{xN?Xt>QDH-2L6Kw) z(jf$8QQ2v$=CKu>ptXvmc94JMUme&XmK24(@!PghoUCPb-tqn3@BO~_%}l%VYHqPX zNCcqw0NAers6+t29RSQbfGNAsp9x@E3QT(u#+ks5U5PdtMw*`jL={3%Ru-;bfrQjA z0PqviuIT`*&mlA7Eye()+1rtO4wYP84iFhmrL1knbpy50-Geg>>4}R|03vugw(t~+($neJ8v&vP`h8amfH^^B7cGcSRwY&b1h8FJ6$GPD zYcVsTGy>~)FkzB#Yc@0O(=ilU!_2>D1yBbw3tAVUkP7B*$W8!D8apZ41u+o0i=EYt zJF}c*_n$h6jY8St4HE!HhOkegIGjSDdO3}XX9>hr*#e8bApuXt8@FOa47W>^ z&nw!>@07b5YB6JUjpvRVrExPb8{);< zh`A(KfB_ZRWawXUfWvnpw8J63jtX}5L^}P%K29g7Ne5|n+KkMcybYUX=jY{Z-7;v< zfzzD?*jPbq%QdNlb>y$l8jRI?%GxD$c>M)6q8}y5o(V-li{~<-BlrGM$`hU{j9Sa@ z*OR0o&*k&I%wovbU}J>FNb$$KR6;WlnaF0=HRFe%Z< L^Ad%4Ziej_WZKF- diff --git a/src/RasterSDG20/Raster.cpp b/src/RasterSDG20/Raster.cpp index 4e11007..a5e1b85 100644 --- a/src/RasterSDG20/Raster.cpp +++ b/src/RasterSDG20/Raster.cpp @@ -1,4 +1,4 @@ -#include "Raster.h" +#include "Raster.h" #include "ThicknessVector.h" #include #include @@ -30,7 +30,7 @@ void CRaster::saveDefaultParam() QJsonObject Rasterobj_dev; Rasterobj_dev.insert("beilv", QJsonValue(m_pRasSt->m_beilv)); Rasterobj_dev.insert("basehight", QJsonValue(m_pRasSt->m_baseHight)); - Rasterobj_dev.insert("mid_value", QJsonValue(m_pRasSt->mid_value));//ֵ + Rasterobj_dev.insert("mid_value", QJsonValue(m_pRasSt->mid_value));//中值 Rasterobj_dev.insert("maxsize", QJsonValue(m_pRasSt->m_maxsize)); Rasterobj_dev.insert("lowNum", QJsonValue(m_pRasSt->m_lowNum)); Rasterobj_dev.insert("beilv_bool", QJsonValue(m_pRasSt->m_bool_beilv)); @@ -61,7 +61,7 @@ RasterST * CRaster::getRasterSt() const bool CRaster::readRasterJson() { - //!>ȡģʽϢ Ƿ񱣴goodͼƬ Ƿ񱣴badͼƬ Ƿʹõģʽ + //!>读取调试模式信息 是否保存good的图片 是否保存bad的图片 是否使用调试模式 QFile loadFile(m_strPath); if (!loadFile.open(QIODevice::ReadOnly)) { @@ -76,7 +76,7 @@ bool CRaster::readRasterJson() if (!Rsaterobj.isEmpty()) { m_pRasSt->m_beilv = Rsaterobj.value("beilv").toDouble(5.07); m_pRasSt->m_baseHight = Rsaterobj.value("basehight").toDouble(87); - m_pRasSt->mid_value = Rsaterobj.value("mid_value").toDouble(0.8);//ֵ + m_pRasSt->mid_value = Rsaterobj.value("mid_value").toDouble(0.8);//中值 m_pRasSt->m_maxsize = Rsaterobj.value("maxsize").toInt(10); m_pRasSt->m_lowNum = Rsaterobj.value("lowNum").toInt(0); m_pRasSt->m_bool_beilv = Rsaterobj.value("beilv_bool").toBool(false); @@ -121,7 +121,7 @@ bool CRaster::saveRasterJson(emTySaveJsonType emType) QJsonObject Rasterobj; Rasterobj.insert("beilv", QJsonValue(m_pRasSt->m_beilv)); Rasterobj.insert("basehight", QJsonValue(m_pRasSt->m_baseHight)); - Rasterobj.insert("mid_value", QJsonValue(m_pRasSt->mid_value));//ֵ + Rasterobj.insert("mid_value", QJsonValue(m_pRasSt->mid_value));//中值 Rasterobj.insert("maxsize", QJsonValue(m_pRasSt->m_maxsize)); Rasterobj.insert("lowNum", QJsonValue(m_pRasSt->m_lowNum)); Rasterobj.insert("beilv_bool", QJsonValue(m_pRasSt->m_bool_beilv)); @@ -153,7 +153,7 @@ bool CRaster::saveRasterJson(emTySaveJsonType emType) QString CRaster::getThicknessListStr() { - QList m = getThicknessList();/*ʾ˲*/ + QList m = getThicknessList();/*显示滤波的数据*/ QString str = "thickness list: "; for (int i = 0; i < m.size(); i++) { @@ -167,7 +167,7 @@ QString CRaster::getThicknessListStr() double CRaster::getThicknessValue() const { // -// QList m = getThicknessList();/*ʾ˲*/ +// QList m = getThicknessList();/*显示滤波的数据*/ // QString str = "thickness value list: "; // for (int i = 0; i < m.size(); i++) // { @@ -180,7 +180,7 @@ double CRaster::getThicknessValue() const void CRaster::addThicknessValue(double dValue) { - double dThickness = (63 - dValue) * m_pRasSt->m_beilv*1.0;//ȡդ óڵĺ + double dThickness = (63 - dValue) * m_pRasSt->m_beilv*1.0;//获取光栅数据 乘以 倍率 得出遮挡的厚度 m_pThickness->addValue(dThickness + m_pRasSt->m_baseHight); } @@ -188,7 +188,7 @@ bool CRaster::showRasterDlg() { // QRasterDlg dlg; // dlg.SetData2UI(m_pRasSt); -// dlg.setWindowTitle("դ궨"); +// dlg.setWindowTitle("光栅标定参数设置"); // dlg.setWindowIcon(QIcon(":/image/leaper")); // if (dlg.exec() == QDialog::Accepted) // { diff --git a/src/RasterSDG20/Raster.h b/src/RasterSDG20/Raster.h index 37b0909..236d27f 100644 --- a/src/RasterSDG20/Raster.h +++ b/src/RasterSDG20/Raster.h @@ -1,13 +1,13 @@ #pragma once #include "qstring.h" struct RasterST; -struct RasterST//դݽṹ +struct RasterST//光栅数据结构体 { - double m_beilv;//դ һӦĺ - double m_baseHight;//ۼӸ߶ - double mid_value;//ֵС - int m_maxsize;//С - int m_lowNum;//Сֵ + double m_beilv;//光栅倍率 一格对应的毫米数 + double m_baseHight;//测量累加高度 + double mid_value;//中值大小 + int m_maxsize;//容器大小 + int m_lowNum;//最小值 bool m_bool_beilv; bool m_bool_baseHight; bool m_bool_maxsize; diff --git a/src/RasterSDG20/ThicknessVector.cpp b/src/RasterSDG20/ThicknessVector.cpp index 7c4d0ac..69b724a 100644 --- a/src/RasterSDG20/ThicknessVector.cpp +++ b/src/RasterSDG20/ThicknessVector.cpp @@ -1,4 +1,4 @@ -#include "ThicknessVector.h" +#include "ThicknessVector.h" #include "Raster.h" ThicknessVector::ThicknessVector() @@ -33,11 +33,11 @@ double ThicknessVector::filterValue() } QList lstCopy = m_lstThickness; qSort(lstCopy); - //ֵ + //中值 return lstCopy.at(int(m_lstThickness.size() * pRaster->mid_value/*0.8*/)); - // ֵ + // 均值 - // + // 众数 return 0; } diff --git a/src/RasterSDG20/muban.cpp b/src/RasterSDG20/muban.cpp index 482af91..007cdf6 100644 --- a/src/RasterSDG20/muban.cpp +++ b/src/RasterSDG20/muban.cpp @@ -1,4 +1,4 @@ -#include "muban.h" +#include "muban.h" #include #include "RasterAnalysis.h" #include "QtWidgets/QGroupBox" @@ -46,7 +46,7 @@ muban::muban(QWidget *parent) :QWidget(parent), m_pRasterCom(NULL), m_pRaster(NU Rasteranalysis->loadAnalyseUpdatefunc(this, &muban::Appanalysis); connect(this, SIGNAL(recvDataSignal(QByteArray)), Rasteranalysis, SLOT(recvDataByCOM(QByteArray))); - /*ڲźźͲԸ иĹ*/ + /*类内部的信号和槽自个绑定 各有各的功能*/ m_timer = new QTimer(); m_timerChackSys = new QTimer(); connect(m_timer, SIGNAL(timeout()), this, SLOT(onTimer())); @@ -113,10 +113,10 @@ void muban::Appanalysis(Raster_ComFrame m_ComFrame){ case 0x66: { QString str; - str += tr(":%1\n").arg(m_RecvData.data1); - str += tr("ͨλ:%1\n").arg(m_RecvData.data2); - str += tr(":%1\n").arg(m_RecvData.data3); - str += tr("ͨλ:%1\n").arg(m_RecvData.data4); + str += tr("发送器光束数:%1\n").arg(m_RecvData.data1); + str += tr("发送器故障通道位置:%1\n").arg(m_RecvData.data2); + str += tr("接收器光束数:%1\n").arg(m_RecvData.data3); + str += tr("接收器故障通道位置:%1\n").arg(m_RecvData.data4); str += getSysState(m_RecvData.data5); emit(sgShowSys(str, m_RecvData.data5)); @@ -124,9 +124,9 @@ void muban::Appanalysis(Raster_ComFrame m_ComFrame){ break; case 0x67: { - emit(sgThress((m_RecvData.data4 * 255 + m_RecvData.data3)));//͹դ + emit(sgThress((m_RecvData.data4 * 255 + m_RecvData.data3)));//发送光栅数据 - emit(sgShowValue(63-(m_RecvData.data4 * 255 + m_RecvData.data3)));//ʾդ + emit(sgShowValue(63-(m_RecvData.data4 * 255 + m_RecvData.data3)));//显示光栅数据 if (bInsertData) { emit(sgShowMsgLabel(m_RecvData.data4 * 255 + m_RecvData.data3, 1)); @@ -190,8 +190,8 @@ void muban::initUI() m_switchbp = new SWitchButton; //m_switchbp->resize(150, 100); //m_switchbp->setFixedHeight(50); - m_switchbp->SetOffName(tr("ֹͣ")); - m_switchbp->SetOnName(tr("ʼ")); + m_switchbp->SetOffName(tr("停止采样")); + m_switchbp->SetOnName(tr("开始采样")); m_switchbp->SetPressOffBkColor1(QColor(230, 10, 10)); m_switchbp->SetPressOffBkColor2(QColor(230, 10, 10)); m_switchbp->SetPressOnBkColor1(QColor(46, 183, 67)); @@ -211,15 +211,15 @@ void muban::initUI() QSize ht = Raster_frame->size(); QRect a= Raster_frame->rect(); m_chart = new myChart1(Raster_frame); - m_chart->setTitle(tr("դݲ")); + m_chart->setTitle(tr("光栅数据采样")); { QGroupBox *pGroup = ui.Raster_groupBoxSys; QHBoxLayout *pGridLayout = new QHBoxLayout; m_switsybp = new SWitchButton; m_switsybp->resize(150, 50); - m_switsybp->SetOffName(tr("ֹͣѯ")); - m_switsybp->SetOnName(tr("5sʱѯ")); + m_switsybp->SetOffName(tr("停止查询")); + m_switsybp->SetOnName(tr("5s定时查询")); m_switsybp->SetPressOffBkColor1(QColor(200, 10, 10)); m_switsybp->SetPressOffBkColor2(QColor(200, 10, 10)); m_switsybp->SetPressOnBkColor1(QColor(46, 150, 67)); @@ -238,24 +238,24 @@ void muban::initUI() connect(ui.Raster_SaveRaster, SIGNAL(clicked()), this, SLOT(onSaveData())); -//ɨ谴ť +//串口扫描按钮 connect(ui.Raster_ResScan, SIGNAL(clicked()), this, SLOT(onScanDevice())); -// +//串口名 Raster_ComBox = ui.Raster_ComBox; -// +//波特率 Raster_Baute = ui.Raster_Baute; Raster_Baute->addItem("115200"); Raster_Baute->addItem("38400"); Raster_Baute->addItem("19200"); Raster_Baute->addItem("9600"); -// 豸 +// 打开设备 Raster_OpenDevice = ui.Raster_OpenDevice; connect(Raster_OpenDevice, SIGNAL(clicked()), this, SLOT(onCtrolDevice())); -//ر豸 +//关闭设备 Raster_CloseDevice = ui.Raster_CloseDevice; connect(Raster_CloseDevice, SIGNAL(clicked()), this, SLOT(onCtrolDevice())); @@ -311,22 +311,22 @@ QString muban::getSysState(quint8 nValue) switch (nValue) { case 0: - str = tr("ϵͳ"); + str = tr("系统工作正常"); break; case 1: - str = tr("ϵͳ⵽׼"); + str = tr("系统检测到对准不良"); break; case 2: - str = tr("Դѹƫ"); + str = tr("输入电源电压偏高"); break; case 3: - str = tr("Դѹƫ"); + str = tr("输入电源电压偏低"); break; case 4: - str = tr("ͬʧ͵Ԫû"); + str = tr("同步丢失,发送单元没接"); break; case 5: - str = tr("ϵͳڲ"); + str = tr("系统内部出错"); break; default: break; @@ -340,13 +340,13 @@ Q_SLOT void muban::ButtonClick() QString strObj = watchObj->objectName(); if (strObj == "Raster_SendData"){ QByteArray m_sendData; - QString strSend = "F4 41 67 00 63 FE ";//ѯդֵ + QString strSend = "F4 41 67 00 63 FE ";//查询光栅值 m_sendData.append(MyHelper::QString2Hex(strSend)); emit (SignalByteData2Parent(m_sendData)); } else if (strObj == "Raster_CheckSys"){ QByteArray m_sendData; - QString strSend = "F4 41 66 00 64 FE ";//ѯդϵͳ״̬ + QString strSend = "F4 41 66 00 64 FE ";//查询光栅系统状态 m_sendData.append(MyHelper::QString2Hex(strSend)); emit(SignalByteData2Parent(m_sendData)); } @@ -419,7 +419,7 @@ Q_SLOT void muban::onShowValue(int value) Q_SLOT void muban::onTimerCheckSys() { QByteArray m_sendData; - QString strSend = "F4 41 66 00 64 FE ";//ѯդϵͳ״̬ + QString strSend = "F4 41 66 00 64 FE ";//查询光栅系统状态 m_sendData.append(MyHelper::QString2Hex(strSend)); emit(SignalByteData2Parent(m_sendData)); } @@ -517,8 +517,8 @@ Q_SLOT void muban::onSaveData() } Q_SLOT void muban::onScanDevice() -{/*ɨд豸*/ - Raster_ComBox->clear();// +{/*扫描所有串口设备*/ + Raster_ComBox->clear();//清空 QFindDevice *workerThread = new QFindDevice(this); connect(workerThread, &QFindDevice::resultReady, this, &muban::onRecvThread); @@ -635,7 +635,7 @@ Q_SLOT void muban::onAddData2Graph(int nData) { if (m_graph1&&bInsertData&&m_pRaster) { - double dThickness = (63 - nData) * m_pRaster->m_beilv*1.0;//ȡդ óڵĺ + double dThickness = (63 - nData) * m_pRaster->m_beilv*1.0;//获取光栅数据 乘以 倍率 得出遮挡的厚度 double dValue = dThickness + m_pRaster->m_baseHight; m_graph1->appendPoint(dValue); } diff --git a/src/RasterSDG20/qsimpletickergraph.cpp b/src/RasterSDG20/qsimpletickergraph.cpp index 5a338d5..916422e 100644 --- a/src/RasterSDG20/qsimpletickergraph.cpp +++ b/src/RasterSDG20/qsimpletickergraph.cpp @@ -1,4 +1,4 @@ -#include +#include #include "qsimpletickergraph.h" namespace diff --git a/src/RasterSDG20/rastersdg20.cpp b/src/RasterSDG20/rastersdg20.cpp index 7f0272c..df670de 100644 --- a/src/RasterSDG20/rastersdg20.cpp +++ b/src/RasterSDG20/rastersdg20.cpp @@ -1,4 +1,4 @@ -#include "rastersdg20.h" +#include "rastersdg20.h" #include "muban.h" #include "CMySerialPort.h" #include "Raster.h" @@ -31,14 +31,14 @@ RasterSDG20::RasterSDG20(const QString filepath) connect(this, SIGNAL(sgShowComState(QString, int)), m_pmuBan, SLOT(onShowComState(QString, int))); connect(m_pmuBan, SIGNAL(sgCtrolDevice(int)), this, SLOT(onCtrolDevice(int))); //connect(this, SIGNAL(sgShowThress(QString)), m_pmuBan, SLOT(onShowThrenss(QString))); - m_pmuBan->setWindowTitle(tr("դ궨")); + m_pmuBan->setWindowTitle(tr("光栅标定和设置")); m_pmuBan->setWindowIcon(QIcon(":/image/leaper")); RasterCom* m_pRasterCom = m_pRaster->getRasterCom(); if (m_pRasterCom->m_UseRaster){ onCtrolDevice(0); } else{ - QString str = tr("δκδ豸");// .arg(m_pRasterCom->m_ComName).arg(m_pRasterCom->m_Baute); + QString str = tr("未打开任何串口设备!!!");// .arg(m_pRasterCom->m_ComName).arg(m_pRasterCom->m_Baute); emit(sgShowComState(str, 3)); } } @@ -132,17 +132,17 @@ Q_SLOT void RasterSDG20::onCtrolDevice(int nValue) RasterCom* m_pRasterCom = m_pRaster->getRasterCom(); if (nValue == int(EMTYPE_OPENCOM)){ if (m_SerialPort->OpenCom(m_pRasterCom->m_ComName, m_pRasterCom->m_Baute)){ - QString str = tr("%1 %2 򿪳ɹ ").arg(m_pRasterCom->m_ComName).arg(m_pRasterCom->m_Baute); + QString str = tr("串口%1 %2 打开成功 ").arg(m_pRasterCom->m_ComName).arg(m_pRasterCom->m_Baute); emit(sgShowComState(str, int(EMTYPE_OPENCOM))); } else{ - QString str = tr("%1 %2 ʧܣ ").arg(m_pRasterCom->m_ComName).arg(m_pRasterCom->m_Baute); + QString str = tr("串口%1 %2 打开失败!!! ").arg(m_pRasterCom->m_ComName).arg(m_pRasterCom->m_Baute); emit(sgShowComState(str, int(EMTYPE_OPENERROR))); } } else if(nValue==int(EMTYPE_CLOSECOM)){ m_SerialPort->CloseCom(); - QString str = tr("%1 %2 رգ ").arg(m_pRasterCom->m_ComName).arg(m_pRasterCom->m_Baute); + QString str = tr("串口%1 %2 关闭!!! ").arg(m_pRasterCom->m_ComName).arg(m_pRasterCom->m_Baute); emit(sgShowComState(str, int(EMTYPE_CLOSECOM))); } } diff --git a/src/RasterSDG20/widget/mychart1.cpp b/src/RasterSDG20/widget/mychart1.cpp index 76bb167..7845dcf 100644 --- a/src/RasterSDG20/widget/mychart1.cpp +++ b/src/RasterSDG20/widget/mychart1.cpp @@ -1,4 +1,4 @@ -#include "mychart1.h" +#include "mychart1.h" #include "QtGui\QPainter" #include "QtGui\QBrush" #include "QtGui\QColor" diff --git a/src/RasterSDG20/widget/switchbutton.cpp b/src/RasterSDG20/widget/switchbutton.cpp index 743fdcc..4a12ebd 100644 --- a/src/RasterSDG20/widget/switchbutton.cpp +++ b/src/RasterSDG20/widget/switchbutton.cpp @@ -1,4 +1,4 @@ -#include "switchbutton.h" +#include "switchbutton.h" #include "QtGui\qevent.h" #include "QtGui\QPainter" @@ -11,22 +11,22 @@ SWitchButton::SWitchButton(QWidget *parent) { m_pressstyle = GRAPH_PRESSSTYLE_SYSTEM1; - //ɫ - m_offbkcolor1 = QColor(133, 133, 133); //ֿɫ1 - m_offbkcolor2 = QColor(99, 99, 99); //ֿɫ2 + //渐进色 + m_offbkcolor1 = QColor(133, 133, 133); //分开背景色1 + m_offbkcolor2 = QColor(99, 99, 99); //分开背景色2 - //ɫ - m_onbkcolor1 = QColor(91, 137, 14); //պϱɫ1 - m_onbkcolor2 = QColor(71, 103, 8); //պϱɫ2 + //渐进色 + m_onbkcolor1 = QColor(91, 137, 14); //闭合背景色1 + m_onbkcolor2 = QColor(71, 103, 8); //闭合背景色2 m_slidecolor1 = QColor(252, 252, 252); m_slidecolor2 = QColor(224, 224, 224); m_textcolor = QColor(255, 255, 255); - m_textfont = QFont("", 10); + m_textfont = QFont("宋体", 10); - m_offname = tr(""); - m_onname = tr(""); + m_offname = tr("分"); + m_onname = tr("合"); m_state = 0; } @@ -76,11 +76,11 @@ void SWitchButton::DrawPressStyle(QPainter *painter, QRect &rect, uchar state) { if (painter == NULL) return; - DrawPressBkGround(painter, rect, state); //Ʊ + DrawPressBkGround(painter, rect, state); //绘制背景 - DrawPressText(painter, rect, state); // + DrawPressText(painter, rect, state); //绘制文字 - DrawPressSlide(painter, rect, state); //ƻ + DrawPressSlide(painter, rect, state); //绘制滑块 } void SWitchButton::DrawPressBkGround(QPainter *painter, QRect &rect, uchar state) @@ -95,8 +95,8 @@ void SWitchButton::DrawPressBkGround(QPainter *painter, QRect &rect, uchar state int x2 = rect.right(); int y2 = rect.bottom(); int width = rect.width(); int height = rect.height(); - if (panestyle == GRAPH_PRESSSTYLE_SYSTEM1) { //αλ - if (state > 0) { //Ͷ״̬ + if (panestyle == GRAPH_PRESSSTYLE_SYSTEM1) { //矩形背景、方形滑块 + if (state > 0) { //投入状态 painter->setPen(Qt::NoPen); QLinearGradient linGrad(rect.left(), rect.top(), rect.left(), rect.bottom()); linGrad.setColorAt(0, m_onbkcolor1); @@ -106,7 +106,7 @@ void SWitchButton::DrawPressBkGround(QPainter *painter, QRect &rect, uchar state painter->drawRoundedRect(rect, 5.0, 5.0); } - else { //˳״̬ + else { //退出状态 painter->setPen(Qt::NoPen); QLinearGradient linGrad(rect.left(), rect.top(), rect.left(), rect.bottom()); linGrad.setColorAt(0, m_offbkcolor1); @@ -117,14 +117,14 @@ void SWitchButton::DrawPressBkGround(QPainter *painter, QRect &rect, uchar state painter->drawRoundedRect(rect, 5.0, 5.0); } - //Ӱ...... + //画立体阴影...... painter->setBrush(Qt::NoBrush); QPen tmppen(Qt::darkGray); tmppen.setWidth(2.0); painter->setPen(tmppen); painter->drawRoundedRect(rect, 5.0, 5.0); } - else if (panestyle == GRAPH_PRESSSTYLE_SYSTEM2) { //ԲǾαԲλ + else if (panestyle == GRAPH_PRESSSTYLE_SYSTEM2) { //圆角矩形背景、圆形滑块 //path QPainterPath path; @@ -143,7 +143,7 @@ void SWitchButton::DrawPressBkGround(QPainter *painter, QRect &rect, uchar state QPainterPath interpath = path.intersected(pathrect); - if (state > 0) { //Ͷ״̬ + if (state > 0) { //投入状态 painter->setPen(Qt::NoPen); QLinearGradient linGrad(rect.left(), rect.top(), rect.left(), rect.bottom()); linGrad.setColorAt(0, m_onbkcolor1); @@ -152,7 +152,7 @@ void SWitchButton::DrawPressBkGround(QPainter *painter, QRect &rect, uchar state painter->setBrush(linGrad); painter->drawPath(interpath); } - else { //˳״̬ + else { //退出状态 painter->setPen(Qt::NoPen); QLinearGradient linGrad(rect.left(), rect.top(), rect.left(), rect.bottom()); linGrad.setColorAt(0, m_offbkcolor1); @@ -162,7 +162,7 @@ void SWitchButton::DrawPressBkGround(QPainter *painter, QRect &rect, uchar state painter->drawPath(interpath); } - //Ӱ...... + //画立体阴影...... painter->setBrush(Qt::NoBrush); painter->setPen(QColor(0, 0, 0, 255)); painter->drawPath(interpath); @@ -186,12 +186,12 @@ void SWitchButton::DrawPressText(QPainter *painter, QRect &rect, uchar state) QPen tmppen(m_textcolor); - if (state > 0) { //Ͷ״̬ + if (state > 0) { //投入状态 painter->setFont(m_textfont); painter->setPen(tmppen); painter->drawText((int)(x1 + width / 2.0), y1, (int)(width / 2.0), height, Qt::AlignCenter, m_onname); } - else { //˳״̬ + else { //退出状态 painter->setFont(m_textfont); painter->setPen(tmppen); painter->drawText(x1, y1, (int)(width / 2.0), height, Qt::AlignCenter, m_offname); @@ -216,8 +216,8 @@ void SWitchButton::DrawPressSlide(QPainter *painter, QRect &rect, uchar state) QRect sliderect; - if (panestyle == GRAPH_PRESSSTYLE_SYSTEM1) { //αλ - if (state > 0) { //Ͷ״̬ + if (panestyle == GRAPH_PRESSSTYLE_SYSTEM1) { //矩形背景、方形滑块 + if (state > 0) { //投入状态 sliderect.setLeft(rect.left() + 2); sliderect.setTop(rect.top() + 2); sliderect.setWidth((int)(rect.width() / 2.0 - 4)); @@ -232,7 +232,7 @@ void SWitchButton::DrawPressSlide(QPainter *painter, QRect &rect, uchar state) painter->drawRoundedRect(sliderect, 5.0, 5.0); } - else { //˳״̬ + else { //退出状态 sliderect.setLeft(rect.right() - (int)(rect.width() / 2.0) + 2); sliderect.setTop(rect.top() + 2); sliderect.setWidth((int)(rect.width() / 2.0 - 4)); @@ -248,12 +248,12 @@ void SWitchButton::DrawPressSlide(QPainter *painter, QRect &rect, uchar state) painter->drawRoundedRect(sliderect, 5.0, 5.0); } - //Ӱ...... + //画立体阴影...... painter->setBrush(Qt::NoBrush); painter->setPen(QColor(0, 0, 0, 255)); painter->drawRoundedRect(sliderect, 5.0, 5.0); - // + //画纹理 painter->setPen(QColor(54, 54, 54)); painter->drawLine(sliderect.left() + sliderect.width() / 2.0, sliderect.top() + sliderect.height() / 4.0 + 2, sliderect.left() + sliderect.width() / 2.0, sliderect.bottom() - sliderect.height() / 4.0 - 2); painter->drawLine(sliderect.left() + sliderect.width() / 2.0 - 5, sliderect.top() + sliderect.height() / 4.0 + 2, sliderect.left() + sliderect.width() / 2.0 - 5, sliderect.bottom() - sliderect.height() / 4.0 - 2); @@ -264,11 +264,11 @@ void SWitchButton::DrawPressSlide(QPainter *painter, QRect &rect, uchar state) painter->drawLine(sliderect.left() + sliderect.width() / 2.0 - 5 + 1, sliderect.top() + sliderect.height() / 4.0 + 2, sliderect.left() + sliderect.width() / 2.0 - 5 + 1, sliderect.bottom() - sliderect.height() / 4.0 - 2); painter->drawLine(sliderect.left() + sliderect.width() / 2.0 + 5 + 1, sliderect.top() + sliderect.height() / 4.0 + 2, sliderect.left() + sliderect.width() / 2.0 + 5 + 1, sliderect.bottom() - sliderect.height() / 4.0 - 2); } - else if (panestyle == GRAPH_PRESSSTYLE_SYSTEM2) { //ԲǾαԲλ + else if (panestyle == GRAPH_PRESSSTYLE_SYSTEM2) { //圆角矩形背景、圆形滑块 QRect rrect; - if (state > 0) { //Ͷ״̬ + if (state > 0) { //投入状态 sliderect.setLeft(rect.left() + 2); sliderect.setTop(rect.top() + 2); sliderect.setWidth(rect.height() - 4); @@ -285,7 +285,7 @@ void SWitchButton::DrawPressSlide(QPainter *painter, QRect &rect, uchar state) painter->drawEllipse(rrect); } - else { //˳״̬ + else { //退出状态 sliderect.setLeft(rect.right() - rect.height() + 4 - 2); sliderect.setTop(rect.top() + 2); sliderect.setWidth(rect.height() - 4); @@ -302,7 +302,7 @@ void SWitchButton::DrawPressSlide(QPainter *painter, QRect &rect, uchar state) painter->drawEllipse(rrect); } - //Ӱ...... + //画立体阴影...... painter->setBrush(Qt::NoBrush); painter->setPen(QColor(0, 0, 0, 160)); painter->drawEllipse(rrect); diff --git a/src/ReportModel/checkdata.h b/src/ReportModel/checkdata.h index a759475..521d3db 100644 --- a/src/ReportModel/checkdata.h +++ b/src/ReportModel/checkdata.h @@ -1,4 +1,4 @@ -#ifndef CHECKDATA_H +#ifndef CHECKDATA_H #define CHECKDATA_H #include diff --git a/src/ReportModel/checkthread.h b/src/ReportModel/checkthread.h index b8dcf26..c34c856 100644 --- a/src/ReportModel/checkthread.h +++ b/src/ReportModel/checkthread.h @@ -1,4 +1,4 @@ -#ifndef CHECKTHREAD_H +#ifndef CHECKTHREAD_H #define CHECKTHREAD_H #include diff --git a/src/ReportModel/countdata.h b/src/ReportModel/countdata.h index c2a1970..73522b7 100644 --- a/src/ReportModel/countdata.h +++ b/src/ReportModel/countdata.h @@ -1,4 +1,4 @@ -#ifndef COUNTDATA_H +#ifndef COUNTDATA_H #define COUNTDATA_H #include diff --git a/src/ReportModel/qcheckcal.h b/src/ReportModel/qcheckcal.h index a657ee1..fd51646 100644 --- a/src/ReportModel/qcheckcal.h +++ b/src/ReportModel/qcheckcal.h @@ -1,4 +1,4 @@ -#ifndef QCHECKCAL_H +#ifndef QCHECKCAL_H #define QCHECKCAL_H #include diff --git a/src/ReportModel/qgenalwidget.h b/src/ReportModel/qgenalwidget.h index b0fb52a..d34e6cd 100644 --- a/src/ReportModel/qgenalwidget.h +++ b/src/ReportModel/qgenalwidget.h @@ -1,4 +1,4 @@ -#ifndef QGENALWIDGET_H +#ifndef QGENALWIDGET_H #define QGENALWIDGET_H #include diff --git a/src/ReportModel/qreportwidget.h b/src/ReportModel/qreportwidget.h index dac4d8a..b934bdc 100644 --- a/src/ReportModel/qreportwidget.h +++ b/src/ReportModel/qreportwidget.h @@ -1,4 +1,4 @@ -#ifndef QREPORTWIDGET_H +#ifndef QREPORTWIDGET_H #define QREPORTWIDGET_H #include diff --git a/src/ReportModel/qsavecsvthread.h b/src/ReportModel/qsavecsvthread.h index 8a6180f..1b60137 100644 --- a/src/ReportModel/qsavecsvthread.h +++ b/src/ReportModel/qsavecsvthread.h @@ -1,4 +1,4 @@ -#ifndef QSAVECSVTHREAD_H +#ifndef QSAVECSVTHREAD_H #define QSAVECSVTHREAD_H #include diff --git a/src/ReportModel/qtimedlg.h b/src/ReportModel/qtimedlg.h index e29bb6e..ea02594 100644 --- a/src/ReportModel/qtimedlg.h +++ b/src/ReportModel/qtimedlg.h @@ -1,4 +1,4 @@ -#ifndef QTIMEDLG_H +#ifndef QTIMEDLG_H #define QTIMEDLG_H #include diff --git a/src/ReportModel/reportmodel.h b/src/ReportModel/reportmodel.h index cdda975..de328a0 100644 --- a/src/ReportModel/reportmodel.h +++ b/src/ReportModel/reportmodel.h @@ -1,4 +1,4 @@ -#ifndef REPORTMODEL_H +#ifndef REPORTMODEL_H #define REPORTMODEL_H #include "reportmodel_global.h" diff --git a/src/ReportModel/reportmodel_global.h b/src/ReportModel/reportmodel_global.h index 98be9c5..89f0a3a 100644 --- a/src/ReportModel/reportmodel_global.h +++ b/src/ReportModel/reportmodel_global.h @@ -1,4 +1,4 @@ -#ifndef REPORTMODEL_GLOBAL_H +#ifndef REPORTMODEL_GLOBAL_H #define REPORTMODEL_GLOBAL_H #include diff --git a/src/ReportModel/testwidget.h b/src/ReportModel/testwidget.h index 3153169..d395890 100644 --- a/src/ReportModel/testwidget.h +++ b/src/ReportModel/testwidget.h @@ -1,4 +1,4 @@ -#ifndef TESTWIDGET_H +#ifndef TESTWIDGET_H #define TESTWIDGET_H #include diff --git a/src/ReportModel/waitingdialog.h b/src/ReportModel/waitingdialog.h index 6459a9b..a9b8d85 100644 --- a/src/ReportModel/waitingdialog.h +++ b/src/ReportModel/waitingdialog.h @@ -1,4 +1,4 @@ -#ifndef WAITINGDIALOG_H +#ifndef WAITINGDIALOG_H #define WAITINGDIALOG_H #include diff --git a/src/ReportModel/workfordb.h b/src/ReportModel/workfordb.h index 8a768e6..ee38d71 100644 --- a/src/ReportModel/workfordb.h +++ b/src/ReportModel/workfordb.h @@ -1,4 +1,4 @@ -#ifndef WORKFORDB_H +#ifndef WORKFORDB_H #define WORKFORDB_H #include diff --git a/tpvs17/RasterSDG20/rastersdg20_en.ts b/tpvs17/RasterSDG20/rastersdg20_en.ts index 2130dd1..6b60ac9 100644 --- a/tpvs17/RasterSDG20/rastersdg20_en.ts +++ b/tpvs17/RasterSDG20/rastersdg20_en.ts @@ -1,6 +1,6 @@ - + QextSerialPort @@ -103,28 +103,28 @@ RasterSDG20 - ��դ�궨������ - + 光栅标定和设置 + Calibration and setting of grating - δ�����κδ����豸������ - + 未打开任何串口设备!!! + No serial port device is opened!!! - ����%1 %2 �򿪳ɹ� - + 串口%1 %2 打开成功 + Serial port %1 %2 opened successfully - ����%1 %2 ����ʧ�ܣ����� - + 串口%1 %2 打开失败!!! + Serial port %1 %2 open failed!!! - ����%1 %2 �رգ����� - + 串口%1 %2 关闭!!! + Serial port %1 %2 closed!!! @@ -251,7 +251,7 @@ mm - mm + @@ -304,7 +304,7 @@ p, li { white-space: pre-wrap; } B: - B: + @@ -324,7 +324,7 @@ p, li { white-space: pre-wrap; } K: - K: + @@ -336,77 +336,99 @@ p, li { white-space: pre-wrap; } SWitchButton + 分 + Separate + + - �� - + 合 + Closed muban - - ������������:%1 + 发送器光束数:%1 - + Beam number of transmitter:%1 + + 发送器故障通道位置:%1 + + Fault channel location of transmitter:%1 + + + + + 接收器光束数:%1 + + Beam number of receiver:%1 + + + - ����������ͨ��λ��:%1 + 接收器故障通道位置:%1 - + Fault channel location of receiver:%1 + - ֹͣ���� - + 停止采样 + Stop sampling - ��ʼ���� - + 开始采样 + Start sampling - ��դ���ݲ��� - + 光栅数据采样 + Raster data sampling - ֹͣ��ѯ - + 停止查询 + Stop query - 5s��ʱ��ѯ - + 5s定时查询 + 5s timing query - ϵͳ�������� - + 系统工作正常 + The system is working properly - ϵͳ���⵽��׼���� - + 系统检测到对准不良 + The system detects poor alignment + 输入电源电压偏高 + High input power supply voltage + + - ������Դ��ѹƫ�� - + 输入电源电压偏低 + Low input power supply voltage - ͬ����ʧ�����͵�Ԫû�� - + 同步丢失,发送单元没接 + Synchronization lost, sending unit not connected - ϵͳ�ڲ����� - + 系统内部出错 + System internal error diff --git a/tpvs17/lpReport/ModelDB.cpp b/tpvs17/lpReport/ModelDB.cpp index 8a3e225..b19a79c 100644 --- a/tpvs17/lpReport/ModelDB.cpp +++ b/tpvs17/lpReport/ModelDB.cpp @@ -1,15 +1,15 @@ -#include "ModelDB.h" +#include "ModelDB.h" #define _MD_PRIMARY_KEY "uid" -#define _MD_TABLE_FORMS_MANE "wftable" //ݱ -#define _MD_MODEL "model" //model ģ -#define _MD_DIAMETER "diameter" //ֱ -#define _MD_HIGHT "hight" //߶ -#define _MD_CORRELATE "correlate" //ƶ -#define _MD_CHANNEL "channel" //ͨ -#define _MD_PICPATH "picpath" //ͼƬ· -#define _MD_ROTATE "rotate"// -#define _MD_UPDATE_TIME "time" //µʱ -#define _MD_PIC "pic" //ͼƬ +#define _MD_TABLE_FORMS_MANE "wftable" //数据表名称 +#define _MD_MODEL "model" //model 模型名称 +#define _MD_DIAMETER "diameter" //直径 +#define _MD_HIGHT "hight" //高度 +#define _MD_CORRELATE "correlate" //相似度 +#define _MD_CHANNEL "channel" //通道 +#define _MD_PICPATH "picpath" //图片路径 +#define _MD_ROTATE "rotate"//辐条个数 +#define _MD_UPDATE_TIME "time" //最后更新的时间 +#define _MD_PIC "pic" //图片 ModelDB::ModelDB(const QString& dbName, const QString& dbType) :DataBaseSql(dbName, dbType) { } diff --git a/tpvs17/lpReport/lpReport.cpp b/tpvs17/lpReport/lpReport.cpp index 8f3363f..8152e80 100644 --- a/tpvs17/lpReport/lpReport.cpp +++ b/tpvs17/lpReport/lpReport.cpp @@ -1,4 +1,4 @@ -#include "lpReport.h" +#include "lpReport.h" #include "qtimedlg.h" #include #include @@ -26,7 +26,11 @@ enum EM_TYPE_TIME lpReport::lpReport(QWidget *parent) : QMainWindow(parent) { - + //加载语言设置 + QSettings languageSetting("hubdetect.ini", QSettings::IniFormat); + QString strLanguage = languageSetting.value("language", "Chinese").toString(); + SetLanguage(strLanguage); + qRegisterMetaType("QSqlQuery"); ui.setupUi(this); onInitUI(); @@ -51,14 +55,14 @@ lpReport::lpReport(QWidget *parent) nstartTime.setHMS(0, 0, 0); nEndTime.setHMS(23, 59, 59); m_tableModel = new QStandardItemModel; - - m_WorkDB = new WorkForDB; - m_WorkDB->moveToThread(&m_Workthread); + + m_WorkDB = new WorkForDB; + m_WorkDB->moveToThread(&m_Workthread); m_WorkDB->setDB(m_pDb); - connect(&m_Workthread, &QThread::finished, m_WorkDB, &QObject::deleteLater); - connect(this, &lpReport::operate, m_WorkDB, &WorkForDB::doWork); - connect(m_WorkDB, &WorkForDB::resultReady, this, &lpReport::handleResults); - m_Workthread.start(); + connect(&m_Workthread, &QThread::finished, m_WorkDB, &QObject::deleteLater); + connect(this, &lpReport::operate, m_WorkDB, &WorkForDB::doWork); + connect(m_WorkDB, &WorkForDB::resultReady, this, &lpReport::handleResults); + m_Workthread.start(); qDebug() << "start thread m_Workthread"; m_WorkCount = new CountData; @@ -90,7 +94,8 @@ lpReport::lpReport(QWidget *parent) InitUIParam(); SetModelNames(strList); - setWindowTitle("ݼ¼鿴"); + setWindowTitle(tr("数据记录查看")); + setWindowIcon(QIcon(":/lpReport/Resources/Log.png")); } @@ -128,7 +133,7 @@ lpReport::~lpReport() if (_pCompleter) { delete _pCompleter; _pCompleter = NULL; - } + } if (m_countwidget) { delete m_countwidget; @@ -155,9 +160,9 @@ void lpReport::onInitUI() connect(this, SIGNAL(sgSetCurrentIndex(int)), ui.stackedWidget, SLOT(setCurrentIndex(int))); connect(ui.comboBox_Banci_Calculate, SIGNAL(currentIndexChanged(int)), this, SLOT(SlotCombox(int))); connect(ui.comboBox_Banci, SIGNAL(currentIndexChanged(int)), this, SLOT(SlotCombox(int))); - + ui.comboBox_Model->setEditable(true); - + connect(ui.Prev_checkShengchang, SIGNAL(clicked()), this, SLOT(onHistoryButton())); connect(ui.Next_checkShengchang, SIGNAL(clicked()), this, SLOT(onHistoryButton())); @@ -165,8 +170,8 @@ void lpReport::onInitUI() QValidator *validator = new QIntValidator(1, 9999, this); ui.LineNumber_checkShengchang->setValidator(validator); - ui.showNum_Label_Checkdata->setText(tr("ʾ%1¼").arg(0)); - ui.showPage_Label_Checkdata->setText(tr("%1ҳ %2ҳ").arg(0).arg(0)); + ui.showNum_Label_Checkdata->setText(tr("共显示%1条记录").arg(0)); + ui.showPage_Label_Checkdata->setText(tr("第%1页 共%2页").arg(0).arg(0)); int nItenCount = ui.check_listWidget->count(); for (int nIndex = 0; nIndex < nItenCount; nIndex++) @@ -185,8 +190,8 @@ void lpReport::onInitUI() connect(ui.Prev_checklog, SIGNAL(clicked()), this, SLOT(onLogButton())); connect(ui.Next_checklog, SIGNAL(clicked()), this, SLOT(onLogButton())); - ui.showPage_Label_Checkdata_2->setText(tr("%1ҳ %2ҳ").arg(0).arg(0)); - ui.showNum_Label_Checkdata_2->setText(tr("ʾ%1¼").arg(0)); + ui.showPage_Label_Checkdata_2->setText(tr("第%1页 共%2页").arg(0).arg(0)); + ui.showNum_Label_Checkdata_2->setText(tr("共显示%1条记录").arg(0)); } void lpReport::timerEvent(QTimerEvent *event) @@ -271,8 +276,8 @@ Q_SLOT void lpReport::onCheckButton() { QObject *obj = sender(); QString str = obj->objectName(); - if ("pushButton_Checkdata" == str)//ѯ - {/*Ҫݷҳʾ ڴй¶*/ + if ("pushButton_Checkdata" == str)//查询生产数据 + {/*这里需要做数据分页显示 减少内存泄露*/ static bool checkflags = false; if (checkflags == false) { @@ -285,13 +290,13 @@ Q_SLOT void lpReport::onCheckButton() { if (m_Totaltime.value(strBanci).m_startTime > m_Totaltime.value(strBanci).m_endTime) { - onMessageBox(QMessageBox::Information, tr("ʾ"), tr("ѡİʱǸҹģѡһµǰѯڣٲѯ")); + onMessageBox(QMessageBox::Information, tr("提示"), tr("您选择的班次时间是隔夜的,请您重新选择一下当前查询的日期,再查询")); checkflags = false; return; } else { - onMessageBox(QMessageBox::Information, tr("ʾ"), tr("ѡڲѡһµǰѯڣٲѯ")); + onMessageBox(QMessageBox::Information, tr("提示"), tr("您选择的日期不合理,请您重新选择一下当前查询的日期,再查询")); checkflags = false; return; } @@ -301,7 +306,7 @@ Q_SLOT void lpReport::onCheckButton() { if (m_startDate_History.date() > m_endDate_History.date()) { - onMessageBox(QMessageBox::Information, tr("ʾ"), tr("ѡڲѡһµǰѯڣٲѯ")); + onMessageBox(QMessageBox::Information, tr("提示"), tr("您选择的日期不合理,请您重新选择一下当前查询的日期,再查询")); checkflags = false; return; } @@ -309,15 +314,15 @@ Q_SLOT void lpReport::onCheckButton() QString m_strLast = ui.label_Time1_History->text(); QString m_endLast = ui.label_Time2_History->text(); - QString strMsg = tr("ѯ%1-%2").arg(m_strLast).arg(m_endLast); + QString strMsg = tr("查询了%1-%2的生产数据").arg(m_strLast).arg(m_endLast); SaveLog(strMsg); QApplication::setOverrideCursor(Qt::WaitCursor); QFont font; font.setPixelSize(14); ui.label_Tab2_Title->setFont(font); - QString m_Title = tr("ʼʱ:%1 ʱ:%2 ʷ¼").arg(m_strLast).arg(m_endLast); + QString m_Title = tr("起始时间:%1 到 结束时间:%2 的历史记录").arg(m_strLast).arg(m_endLast); ui.label_Tab2_Title->setText(m_Title); - if (modelName == tr("ȫ")) + if (modelName == tr("全部")) CheckDataHistoryByDate(m_strLast, m_endLast, "*"); else CheckDataHistoryByDate(m_strLast, m_endLast, modelName); @@ -326,7 +331,7 @@ Q_SLOT void lpReport::onCheckButton() } else { - onMessageBox(QMessageBox::Information, tr("ʾ"), tr("ڲѯݣԺ")); + onMessageBox(QMessageBox::Information, tr("提示"), tr("正在查询数据,请稍后")); } } else if ("pushButton_SaveHistory" == str) @@ -335,12 +340,12 @@ Q_SLOT void lpReport::onCheckButton() return; if (m_tableModel->rowCount() <= 0) { - onMessageBox(QMessageBox::Warning, tr("ʾ"), tr("ûݣ²ѯ")); + onMessageBox(QMessageBox::Warning, tr("提示"), tr("没有数据,请重新查询")); return; } QString filename = QString("History_%1.csv").arg(QDateTime::currentDateTime().toString("yyyy_MM_dd")); - QString fileTitle = tr("ѡ񱣴ļ·"); + QString fileTitle = tr("请选择保存文件的路径"); QFileDialog *fileDialog = new QFileDialog(NULL, fileTitle, filename); fileDialog->setWindowTitle("Save As"); fileDialog->setAcceptMode(QFileDialog::AcceptSave); @@ -362,11 +367,11 @@ Q_SLOT void lpReport::onCheckButton() connect(workerThread, &QSaveCSVThread::finished, workerThread, &QObject::deleteLater); workerThread->start(); - onEventLoop(tr("ڵݣԵ")); + onEventLoop(tr("正在导出数据,请稍等")); - QString strMsg = tr("%1-%2").arg(ui.label_Time1_History->text()).arg(ui.label_Time2_History->text()); + QString strMsg = tr("导出了%1-%2的生产数据").arg(ui.label_Time1_History->text()).arg(ui.label_Time2_History->text()); SaveLog(strMsg); - onMessageBox(QMessageBox::Information, tr("ʾ"), tr("ݵ")); + onMessageBox(QMessageBox::Information, tr("提示"), tr("数据导出完成")); } if (fileDialog) { delete fileDialog; @@ -382,23 +387,23 @@ Q_SLOT void lpReport::onCheckButton() QApplication::setOverrideCursor(Qt::WaitCursor); QString m_strLast = ui.label_Time1_warning->text(); QString m_endLast = ui.label_Time2_warning->text(); - QString strMsg = tr("ѯ%1-%2־").arg(m_strLast).arg(m_endLast); + QString strMsg = tr("查询了%1-%2的日志数据").arg(m_strLast).arg(m_endLast); QString strCombox = ui.comboBox_Wandring_Log->currentText(); int mType = 0; - if (strCombox == tr("ʹü¼ѯ")) { + if (strCombox == tr("使用记录查询")) { mType = (int)emTypeUseState; } - else if (strCombox == tr("¼ѯ")) { + else if (strCombox == tr("报警记录查询")) { mType = (int)emTypeWaring; } - else if (strCombox == tr("״̬ѯ")) { + else if (strCombox == tr("运行状态查询")) { mType = (int)emTypeRunState; } SaveLog(strMsg); QFont font; font.setPixelSize(14); ui.label_Tab3_Title->setFont(font); - QString m_Title = tr("ʼʱ:%1 ʱ:%2 ʷ¼").arg(m_strLast).arg(m_endLast); + QString m_Title = tr("起始时间:%1 到 结束时间:%2 的历史记录").arg(m_strLast).arg(m_endLast); ui.label_Tab3_Title->setText(m_Title); CheckDataWarningByDate(mType, m_strLast, m_endLast); @@ -407,23 +412,23 @@ Q_SLOT void lpReport::onCheckButton() } else { - onMessageBox(QMessageBox::Information, tr("ʾ"), tr("ڲѯݣԺ")); + onMessageBox(QMessageBox::Information, tr("提示"), tr("正在查询数据,请稍后")); } } else if (str == "pushButton_SaveWaring") { if (m_tableWarnModel == NULL) { - onMessageBox(QMessageBox::Warning, tr("ʾ"), tr("ûݣ²ѯ")); + onMessageBox(QMessageBox::Warning, tr("提示"), tr("没有数据,请重新查询")); return; } if (m_tableWarnModel->rowCount() <= 0) { - onMessageBox(QMessageBox::Warning, tr("ʾ"), tr("ûݣ²ѯ")); + onMessageBox(QMessageBox::Warning, tr("提示"), tr("没有数据,请重新查询")); return; } QString filename = QString("WarnMessage_%1.csv").arg(QDateTime::currentDateTime().toString("yyyy_MM_dd")); - QString fileTitle = tr("ѡ񱣴ļ·"); + QString fileTitle = tr("请选择保存文件的路径"); QFileDialog *fileDialog = new QFileDialog(NULL, fileTitle, filename); fileDialog->setWindowTitle("Save As"); fileDialog->setAcceptMode(QFileDialog::AcceptSave); @@ -444,11 +449,11 @@ Q_SLOT void lpReport::onCheckButton() connect(workerThread, &QSaveCSVThread::finished, workerThread, &QObject::deleteLater); workerThread->start(); - onEventLoop(tr("ڵݣԵ")); + onEventLoop(tr("正在导出数据,请稍等")); - QString strMsg = tr("%1-%2־").arg(ui.label_Time1_warning->text()).arg(ui.label_Time2_warning->text()); + QString strMsg = tr("导出了%1-%2的日志数据").arg(ui.label_Time1_warning->text()).arg(ui.label_Time2_warning->text()); SaveLog(strMsg); - onMessageBox(QMessageBox::Information, tr("ʾ"), tr("ݵ")); + onMessageBox(QMessageBox::Information, tr("提示"), tr("数据导出完成")); } if (fileDialog) { delete fileDialog; @@ -469,13 +474,13 @@ Q_SLOT void lpReport::onCheckButton() { if (m_Totaltime.value(strBanci).m_startTime > m_Totaltime.value(strBanci).m_endTime) { - onMessageBox(QMessageBox::Information, tr("ʾ"), tr("ѡİʱǸҹģѡһµǰѯڣٲѯ")); + onMessageBox(QMessageBox::Information, tr("提示"), tr("您选择的班次时间是隔夜的,请您重新选择一下当前查询的日期,再查询")); checkflags = false; return; } else { - onMessageBox(QMessageBox::Information, tr("ʾ"), tr("ѡڲʼڣٲѯ")); + onMessageBox(QMessageBox::Information, tr("提示"), tr("您选择的日期不合理,请您重新起始日期,再查询")); checkflags = false; return; } @@ -485,14 +490,14 @@ Q_SLOT void lpReport::onCheckButton() { if (m_startDate_Count.date() > m_endDate_Count.date()) { - onMessageBox(QMessageBox::Information, tr("ʾ"), tr("ѡڲѡһµǰѯڣٲѯ")); + onMessageBox(QMessageBox::Information, tr("提示"), tr("您选择的日期不合理,请您重新选择一下当前查询的日期,再查询")); checkflags = false; return; } } QString m_strLast = ui.label_Time1_Count->text(); QString m_endLast = ui.label_Time2_Count->text(); - QString strMsg = tr("ѯ%1-%2ͳ").arg(ui.label_Time1_Count->text()).arg(ui.label_Time2_Count->text()); + QString strMsg = tr("查询了%1-%2的统计数据").arg(ui.label_Time1_Count->text()).arg(ui.label_Time2_Count->text()); SaveLog(strMsg); QApplication::setOverrideCursor(Qt::WaitCursor); CheckDataByDate(m_strLast, m_endLast); @@ -501,18 +506,18 @@ Q_SLOT void lpReport::onCheckButton() } else { - onMessageBox(QMessageBox::Information, tr("ʾ"), tr("ڲѯݣԺ")); + onMessageBox(QMessageBox::Information, tr("提示"), tr("正在查询数据,请稍后")); } } else if ("pushButton_SaveCalculate" == str) { if (m_CountNumber.size() <= 0) { - onMessageBox(QMessageBox::Warning, tr("ʾ"), tr("ûݣ²ѯ")); + onMessageBox(QMessageBox::Warning, tr("提示"), tr("没有数据,请重新查询")); return; } QString filename = QString("Data_%1.csv").arg(QDateTime::currentDateTime().toString("yyyy_MM_dd")); - QString fileTitle = tr("ѡ񱣴ļ·"); + QString fileTitle = tr("请选择保存文件的路径"); QFileDialog *fileDialog = new QFileDialog(NULL, fileTitle, filename); fileDialog->setWindowTitle("Save As"); fileDialog->setAcceptMode(QFileDialog::AcceptSave); @@ -526,8 +531,8 @@ Q_SLOT void lpReport::onCheckButton() { QString path = fileDialog->selectedFiles()[0]; if (SaveDataToCSV(path, m_CountNumber)) - onMessageBox(QMessageBox::Information, tr("ʾ"), tr("ݵ")); - QString strMsg = tr("%1-%2ͳ").arg(ui.label_Time1_Count->text()).arg(ui.label_Time2_Count->text()); + onMessageBox(QMessageBox::Information, tr("提示"), tr("数据导出完成")); + QString strMsg = tr("导出了%1-%2的统计数据").arg(ui.label_Time1_Count->text()).arg(ui.label_Time2_Count->text()); SaveLog(strMsg); } if (fileDialog) { @@ -545,8 +550,8 @@ bool lpReport::onMessageBox(QMessageBox::Icon ntype, QString strTitle, QString s button = QMessageBox::Cancel; QMessageBox infobox(ntype, strTitle, strAtl, QMessageBox::Ok | button, NULL); infobox.setWindowIcon(QIcon(":/image/leaper")); - infobox.setButtonText(QMessageBox::Ok, tr("ȷ")); - infobox.setButtonText(QMessageBox::Cancel, tr("ȡ")); + infobox.setButtonText(QMessageBox::Ok, tr("确认")); + infobox.setButtonText(QMessageBox::Cancel, tr("取消")); return (infobox.exec() == QMessageBox::Ok); } @@ -589,14 +594,14 @@ void lpReport::CheckDataHistoryByDate(QString m_strLast, QString m_endLast, QStr bool lpReport::SaveDataToCSV(QString filePath, QMap &m_mapTable) { QFile file(filePath); - if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append))// ׷д + if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append))// 追加写入数据 return false; QTextStream out(&file); QString tableData; QString m_startStr = m_startDate_Count.toString("yyyy-MM-dd ") + m_startTime.toString("hh:mm:ss"); QString m_endStr = m_endDate_Count.toString("yyyy-MM-dd ") + m_endTime.toString("hh:mm:ss"); - out << tr("%1%2ͳƵ").arg(m_startStr).arg(m_endStr) << "\n"; - out << tr("") << "," << tr("ͺ") << "," << tr("") << "\n"; + out << tr("从%1到%2统计的数据如下").arg(m_startStr).arg(m_endStr) << "\n"; + out << tr("序号") << "," << tr("型号") << "," << tr("数量") << "\n"; int index = 1; int sum = 0; for (QMap::iterator its = m_mapTable.begin(); its != m_mapTable.end(); ++its) @@ -612,9 +617,9 @@ bool lpReport::SaveDataToCSV(QString filePath, QMap &m_mapTable) { out << (index++) << "," << QString("NG") << "," << 0 << "\n"; } - out << (index++) << "," << tr("") << "," << QString::number(sum) << "\n"; - out << tr("ʱ:") << "," << QDateTime::currentDateTime().toString("yyyy-MM-dd") << "," << QDateTime::currentDateTime().toString("hh:mm:ss") << "\n"; - out << tr("û:") << "," << "username" << "," << "\n"; + out << (index++) << "," << tr("总数") << "," << QString::number(sum) << "\n"; + out << tr("时间:") << "," << QDateTime::currentDateTime().toString("yyyy-MM-dd") << "," << QDateTime::currentDateTime().toString("hh:mm:ss") << "\n"; + out << tr("用户:") << "," << "username" << "," << "\n"; file.close(); return true; } @@ -631,9 +636,9 @@ void lpReport::CheckDataByDate(QString m_strLast, QString m_endLast) QProgressDialog progress; progress.setWindowModality(Qt::ApplicationModal); - progress.setWindowTitle(tr("ѯ")); + progress.setWindowTitle(tr("查询进度")); progress.setWindowIcon(QIcon(":/image/leaper")); - progress.setLabelText(tr("ݲѯ,Ժ.....")); + progress.setLabelText(tr("数据查询中,请稍后.....")); progress.setCancelButton(0); QSqlQuery sql; QVariantMap m_Value; @@ -676,7 +681,7 @@ QString lpReport::getHistoryCheckString() QString m_endLast = ui.label_Time2_History->text(); QString modelName = ui.comboBox_Model->currentText(); QString strString; - if (modelName == tr("ȫ")) + if (modelName == tr("全部")) strString = QString("select * from wftable where time >'%1' and time <'%2'").arg(m_strLast).arg(m_endLast); else strString = QString("select * from wftable where time >'%1' and time <'%2' and model = '%3'").arg(m_strLast).arg(m_endLast).arg(modelName); @@ -702,7 +707,7 @@ Q_SLOT void lpReport::onHistoryButton() m_PrevNum = 0; strString = strString + QString(" LIMIT %1 OFFSET %2").arg(limitNum).arg(m_PrevNum); - /*̲߳ѯ ٽ濨*/ + /*启用线程查询数据 减少界面卡顿*/ CheckThread *workerThread = new CheckThread(this); workerThread->setCheckStr(m_pDb, strString); connect(workerThread, SIGNAL(resultReady(QSqlQuery)), this, SLOT(onUpdateTableViewShow(QSqlQuery))); @@ -711,7 +716,7 @@ Q_SLOT void lpReport::onHistoryButton() m_totalPage = (m_totlaNum / limitNum); m_page = ((m_PrevNum) / limitNum) + 1; - ui.showPage_Label_Checkdata->setText(tr("%1ҳ %2ҳ").arg(m_page).arg(m_totalPage + 1)); + ui.showPage_Label_Checkdata->setText(tr("第%1页 共%2页").arg(m_page).arg(m_totalPage + 1)); if (m_PrevNum <= 0) { m_PrevNum = 0; @@ -734,7 +739,7 @@ Q_SLOT void lpReport::onHistoryButton() QString strString = getHistoryCheckString(); strString = strString + QString(" LIMIT %1 OFFSET %2").arg(limitNum).arg(m_PrevNum); - /*̲߳ѯ ٽ濨*/ + /*启用线程查询数据 减少界面卡顿*/ CheckThread *workerThread = new CheckThread(this); workerThread->setCheckStr(m_pDb, strString); connect(workerThread, SIGNAL(resultReady(QSqlQuery)), this, SLOT(onUpdateTableViewShow(QSqlQuery))); @@ -743,7 +748,7 @@ Q_SLOT void lpReport::onHistoryButton() m_totalPage = (m_totlaNum / limitNum); m_page = (m_PrevNum + limitNum) / limitNum; - ui.showPage_Label_Checkdata->setText(tr("%1ҳ %2ҳ").arg(m_page).arg(m_totalPage + 1)); + ui.showPage_Label_Checkdata->setText(tr("第%1页 共%2页").arg(m_page).arg(m_totalPage + 1)); if ((m_PrevNum + limitNum) >= m_totlaNum) { m_PrevNum = m_totlaNum; @@ -767,13 +772,13 @@ void lpReport::cleanHistorycal() m_pagelog = 0; m_totalPagelog = 0; - ui.showNum_Label_Checkdata->setText(tr("ʾ%1¼").arg(0)); - ui.showPage_Label_Checkdata->setText(tr("%1ҳ %2ҳ").arg(0).arg(0)); + ui.showNum_Label_Checkdata->setText(tr("共显示%1条记录").arg(0)); + ui.showPage_Label_Checkdata->setText(tr("第%1页 共%2页").arg(0).arg(0)); ui.Prev_checkShengchang->setDisabled(true); ui.Next_checkShengchang->setDisabled(true); - ui.showNum_Label_Checkdata_2->setText(tr("ʾ%1¼").arg(0)); - ui.showPage_Label_Checkdata_2->setText(tr("%1ҳ %2ҳ").arg(0).arg(0)); + ui.showNum_Label_Checkdata_2->setText(tr("共显示%1条记录").arg(0)); + ui.showPage_Label_Checkdata_2->setText(tr("第%1页 共%2页").arg(0).arg(0)); ui.Prev_checklog->setDisabled(true); ui.Next_checklog->setDisabled(true); } @@ -791,9 +796,9 @@ Q_SLOT void lpReport::onSaveCSVDone(int) Q_SLOT void lpReport::handleResults(QString str) { - //QString strMsg = "username" + ":" + tr("ϵͳԶʱѯһɣĿڵ"); + //QString strMsg = "username" + ":" + tr("系统自动定时查询了一次数据完成,目标是清除超期的数据"); //m_pCtrl->addLog(strMsg, emTypeRunState); - onShowMessage(tr("ϵͳԶ")); + onShowMessage(tr("系统自动进行清理完成")); } Q_SLOT void lpReport::onShowMessage(QString str) { @@ -809,7 +814,7 @@ Q_SLOT void lpReport::onProgressForTsk(QVariantMap m_map) QString nType = m_map.value("Type").toString(); if (nType == "start") { - QString strMsg = m_map.value("msg", tr("ڲѯ")).toString(); + QString strMsg = m_map.value("msg", tr("正在查询数据")).toString(); m_Progressdlg.setWindowTitle(strMsg); m_Progressdlg.Start(50, 150), m_Progressdlg.show(); @@ -829,7 +834,7 @@ Q_SLOT void lpReport::handleResultsHistory(QVariantMap Mapstr, QSqlQuery sql) m_totlaNum = Mapstr.value("sum").toInt(); int nlimit = Mapstr.value("limit").toInt(); int nIndex = Mapstr.value("nIndex").toInt(); - QString m_Title = tr("ʼʱ:%1 ʱ:%2 ʷ¼ %3").arg(m_strLast).arg(m_endLast).arg(m_totlaNum); + QString m_Title = tr("起始时间:%1 到 结束时间:%2 的历史记录 共%3条").arg(m_strLast).arg(m_endLast).arg(m_totlaNum); ui.label_Number->setText(QString::number(m_totlaNum)); QFont font; font.setPixelSize(14); @@ -849,20 +854,20 @@ Q_SLOT void lpReport::handleResultsHistory(QVariantMap Mapstr, QSqlQuery sql) m_totlaNum = 0; m_page = 0; } - ui.showPage_Label_Checkdata->setText(tr("%1ҳ %2ҳ").arg(m_page).arg(m_totalPage)); - ui.showNum_Label_Checkdata->setText(tr("ʾ%1¼").arg(nIndex)); - onShowMessage(tr("ݲѯ")); + ui.showPage_Label_Checkdata->setText(tr("第%1页 共%2页").arg(m_page).arg(m_totalPage)); + ui.showNum_Label_Checkdata->setText(tr("共显示%1条记录").arg(nIndex)); + onShowMessage(tr("数据查询完成")); } Q_SLOT void lpReport::onShowMsg() { - onMessageBox(QMessageBox::Information, tr("ʾ"), tr("Ч")); + onMessageBox(QMessageBox::Information, tr("提示"), tr("操作已生效")); } Q_SLOT void lpReport::handleResultsCount(const QString &result, const QMap *p) { reportdlg->ClearData(); - reportdlg->setTitle(tr("ͳƽ ")); + reportdlg->setTitle(tr("统计结果 ")); if (p == NULL) { m_IsRunCountTsk = false; return; @@ -870,9 +875,9 @@ Q_SLOT void lpReport::handleResultsCount(const QString &result, const QMapSetData(QMap(*p)/*m_CountNumber*/); if (!p->contains(QString("NG"))) reportdlg->AppendData(QString("NG"), 0, true); - reportdlg->AppendData(tr(""), result.toInt(), true); + reportdlg->AppendData(tr("总数"), result.toInt(), true); reportdlg->UpdateTableView(); - onShowMessage(tr("ͳ")); + onShowMessage(tr("统计完成")); m_IsRunCountTsk = false; if (p) delete p; @@ -895,7 +900,7 @@ Q_SLOT void lpReport::onLogButton() m_PrevNumlog = 0; QString strString = getLogCheckString(); strString += QString(" LIMIT %1 OFFSET %2 ").arg(limitNum).arg(m_PrevNumlog); - /*̲߳ѯ ٽ濨*/ + /*启用线程查询数据 减少界面卡顿*/ CheckThread *workerThread = new CheckThread(this); workerThread->setCheckStr(m_pDb, strString); connect(workerThread, SIGNAL(resultReady(QSqlQuery)), this, SLOT(onUpdateTableViewShowlog(QSqlQuery))); @@ -904,7 +909,7 @@ Q_SLOT void lpReport::onLogButton() m_totalPagelog = (m_totlaNumlog / limitNum); m_pagelog = ((m_PrevNumlog) / limitNum) + 1; - ui.showPage_Label_Checkdata_2->setText(tr("%1ҳ %2ҳ").arg(m_pagelog).arg(m_totalPagelog + 1)); + ui.showPage_Label_Checkdata_2->setText(tr("第%1页 共%2页").arg(m_pagelog).arg(m_totalPagelog + 1)); if (m_PrevNumlog <= 0) { m_PrevNumlog = 0; @@ -927,7 +932,7 @@ Q_SLOT void lpReport::onLogButton() QString strString = getLogCheckString(); strString += QString(" LIMIT %1 OFFSET %2 ").arg(limitNum).arg(m_PrevNumlog); - /*̲߳ѯ ٽ濨*/ + /*启用线程查询数据 减少界面卡顿*/ CheckThread *workerThread = new CheckThread(this); workerThread->setCheckStr(m_pDb, strString); connect(workerThread, SIGNAL(resultReady(QSqlQuery)), this, SLOT(onUpdateTableViewShowlog(QSqlQuery))); @@ -936,7 +941,7 @@ Q_SLOT void lpReport::onLogButton() m_totalPagelog = (m_totlaNumlog / limitNum); m_pagelog = (m_PrevNumlog + limitNum) / limitNum; - ui.showPage_Label_Checkdata_2->setText(tr("%1ҳ %2ҳ").arg(m_pagelog).arg(m_totalPagelog + 1)); + ui.showPage_Label_Checkdata_2->setText(tr("第%1页 共%2页").arg(m_pagelog).arg(m_totalPagelog + 1)); if ((m_PrevNumlog + limitNum) >= m_totlaNumlog) { m_PrevNumlog = m_totlaNumlog; @@ -952,13 +957,13 @@ QString lpReport::getLogCheckString(int nCheckCount/*=0*/) QString m_endLast = ui.label_Time2_warning->text(); QString strCombox = ui.comboBox_Wandring_Log->currentText(); int mType = 0; - if (strCombox == tr("ʹü¼ѯ")) { + if (strCombox == tr("使用记录查询")) { mType = (int)emTypeUseState; } - else if (strCombox == tr("¼ѯ")) { + else if (strCombox == tr("报警记录查询")) { mType = (int)emTypeWaring; } - else if (strCombox == tr("״̬ѯ")) { + else if (strCombox == tr("运行状态查询")) { mType = (int)emTypeRunState; } QVariantMap m_vlaue; @@ -979,29 +984,29 @@ Q_SLOT void lpReport::onUpdateTableViewShow(QSqlQuery sql) void lpReport::updateModelShowHistory(QSqlQuery &sql) { QStandardItemModel *testmodel = new QStandardItemModel; - ui.tableView_checkShengchang->setModel(testmodel);//ȽģͲһʾ ʾ + ui.tableView_checkShengchang->setModel(testmodel);//先将模型插入后在一次性显示 可以提高显示速率 ui.tableView_checkShengchang->setEditTriggers(QAbstractItemView::NoEditTriggers); ui.tableView_checkShengchang->setSelectionBehavior(QAbstractItemView::SelectRows); - ui.tableView_checkShengchang->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);//Ӧп + ui.tableView_checkShengchang->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);//自适应行宽 ui.tableView_checkShengchang->horizontalHeader()->setMaximumHeight(100); - + if (m_tableModel == NULL) m_tableModel = new QStandardItemModel; m_tableModel->clear(); ui.CheckDlg_label_Pic->clear(); - m_tableModel->setHorizontalHeaderItem(0, new QStandardItem(tr("ʱ"))); - m_tableModel->setHorizontalHeaderItem(1, new QStandardItem(tr("ƥͺ"))); - m_tableModel->setHorizontalHeaderItem(2, new QStandardItem(tr("ƶ"))); - m_tableModel->setHorizontalHeaderItem(3, new QStandardItem(tr("ʱs"))); - m_tableModel->setHorizontalHeaderItem(4, new QStandardItem(tr("ֱmm"))); - m_tableModel->setHorizontalHeaderItem(5, new QStandardItem(tr("mm"))); - m_tableModel->setHorizontalHeaderItem(6, new QStandardItem(tr("ͼ"))); + m_tableModel->setHorizontalHeaderItem(0, new QStandardItem(tr("日期时间"))); + m_tableModel->setHorizontalHeaderItem(1, new QStandardItem(tr("匹配型号"))); + m_tableModel->setHorizontalHeaderItem(2, new QStandardItem(tr("相似度"))); + m_tableModel->setHorizontalHeaderItem(3, new QStandardItem(tr("消耗时间s"))); + m_tableModel->setHorizontalHeaderItem(4, new QStandardItem(tr("直径mm"))); + m_tableModel->setHorizontalHeaderItem(5, new QStandardItem(tr("厚度mm"))); + m_tableModel->setHorizontalHeaderItem(6, new QStandardItem(tr("缩略图"))); m_tableModel->setHorizontalHeaderItem(7, new QStandardItem(tr("uid"))); int nIndex = 0; while (sql.next()) { - /*ͳƲѯͨӦIJƷ*/ + /*这里下面是统计查询到的通道对应的产品总数*/ int uid = sql.value("uid").toInt(); QString time = sql.value("time").toString(); QString model = sql.value("model").toString(); @@ -1031,7 +1036,7 @@ void lpReport::updateModelShowHistory(QSqlQuery &sql) m_tableModel->setItem(nIndex, 7, new QStandardItem(QString("%1").arg(uid))); nIndex++; } - ui.showNum_Label_Checkdata->setText(tr("ʾ%1¼").arg(nIndex)); + ui.showNum_Label_Checkdata->setText(tr("共显示%1条记录").arg(nIndex)); ui.tableView_checkShengchang->setModel(m_tableModel); ui.tableView_checkShengchang->hideColumn(7); ui.tableView_checkShengchang->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); @@ -1068,7 +1073,7 @@ void lpReport::CheckDataWarningByDate(int nType, QString m_strLast, QString m_en connect(workThread, SIGNAL(resultCount(int)), this, SLOT(onResultCountlog(int))); connect(workThread, &CheckThread::finished, workThread, &QObject::deleteLater); workThread->start(); - onEventLoop(tr("ڲѯ¼Ե")); + onEventLoop(tr("正在查询记录,请稍等")); strString = getLogCheckString(); int nlimit = ui.LineNumber_log->text().toInt(); @@ -1084,7 +1089,7 @@ void lpReport::CheckDataWarningByDate(int nType, QString m_strLast, QString m_en connect(workerThread, &CheckThread::finished, workerThread, &QObject::deleteLater); workerThread->start(); - QString m_Title = tr("%1 %2 ļ¼ %3").arg(m_strLast).arg(m_endLast).arg(m_totlaNumlog); + QString m_Title = tr("从%1 到 %2 的记录 共%3条").arg(m_strLast).arg(m_endLast).arg(m_totlaNumlog); QFont font; font.setPixelSize(14); font.setBold(true); @@ -1103,26 +1108,26 @@ void lpReport::CheckDataWarningByDate(int nType, QString m_strLast, QString m_en m_totlaNumlog = 0; m_pagelog = 0; } - ui.showPage_Label_Checkdata_2->setText(tr("%1ҳ %2ҳ").arg(m_pagelog).arg(m_totalPagelog)); + ui.showPage_Label_Checkdata_2->setText(tr("第%1页 共%2页").arg(m_pagelog).arg(m_totalPagelog)); } void lpReport::updateModelShowLog(QSqlQuery &sql) { QStandardItemModel *testmodel = new QStandardItemModel; - ui.tableView_TWarning->setModel(testmodel);//ȽģͲһʾ ʾ + ui.tableView_TWarning->setModel(testmodel);//先将模型插入后在一次性显示 可以提高显示速率 ui.tableView_TWarning->setEditTriggers(QAbstractItemView::NoEditTriggers); ui.tableView_TWarning->setSelectionBehavior(QAbstractItemView::SelectRows); - ui.tableView_TWarning->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);//Ӧп + ui.tableView_TWarning->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);//自适应行宽 if (m_tableWarnModel == NULL) m_tableWarnModel = new QStandardItemModel; m_tableWarnModel->clear(); - m_tableWarnModel->setHorizontalHeaderItem(0, new QStandardItem(tr("ʱ"))); - m_tableWarnModel->setHorizontalHeaderItem(1, new QStandardItem(tr("Ϣ"))); + m_tableWarnModel->setHorizontalHeaderItem(0, new QStandardItem(tr("时间"))); + m_tableWarnModel->setHorizontalHeaderItem(1, new QStandardItem(tr("信息"))); int nIndex = 0; while (sql.next()) { - /*ͳƲѯͨӦIJƷ*/ + /*这里下面是统计查询到的通道对应的产品总数*/ QString time = sql.value("time").toString(); QString message = sql.value("message").toString(); QString classd = sql.value("class").toString(); @@ -1130,7 +1135,7 @@ void lpReport::updateModelShowLog(QSqlQuery &sql) m_tableWarnModel->setItem(nIndex, 1, new QStandardItem(message)); nIndex++; } - ui.showNum_Label_Checkdata_2->setText(tr("ʾ%1¼").arg(nIndex)); + ui.showNum_Label_Checkdata_2->setText(tr("共显示%1条记录").arg(nIndex)); ui.tableView_TWarning->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); ui.tableView_TWarning->setModel(m_tableWarnModel); delete testmodel; @@ -1166,7 +1171,7 @@ Q_SLOT void lpReport::SlotCombox(int index) } else { - if (str == tr("ȫ")) + if (str == tr("全天")) { QString strTime = nstartTime.toString("hh:mm:ss"); if (m_startDate_Count.date() > m_endDate_Count.date()) @@ -1204,7 +1209,7 @@ Q_SLOT void lpReport::SlotCombox(int index) } else { - if (str == tr("ȫ")) + if (str == tr("全天")) { QString strTime = nstartTime.toString("hh:mm:ss"); if (m_startDate_History.date() > m_endDate_History.date()) @@ -1265,7 +1270,7 @@ Q_SLOT void lpReport::onTableViewClick(QModelIndex mIndex) m_value.insert(_CHECK_TYPE_, EMT_CHECK_BY_UID); QString seletcStr = m_pDb->genCheckStr(m_value); - /*̲߳ѯ ٽ濨*/ + /*启用线程查询数据 减少界面卡顿*/ CheckThread *workerThread = new CheckThread(this); workerThread->setCheckStr(m_pDb, seletcStr); connect(workerThread, SIGNAL(resultReady(QSqlQuery)), this, SLOT(onSlowPixmap(QSqlQuery))); @@ -1275,7 +1280,7 @@ Q_SLOT void lpReport::onTableViewClick(QModelIndex mIndex) } } } -//ʼUI +//初始化UI参数 void lpReport::InitUIParam() { m_startDate_History = QDateTime::currentDateTime(); @@ -1294,18 +1299,18 @@ void lpReport::InitUIParam() ui.label_Time2_warning->setText(m_endDate_Warning.toString("yyyy-MM-dd hh:mm:ss")); ui.comboBox_Banci->clear(); - ui.comboBox_Banci->addItem(tr("ȫ")); + ui.comboBox_Banci->addItem(tr("全天")); ui.comboBox_Banci->addItems(m_Totaltime.keys()); ui.comboBox_Banci_Calculate->clear(); - ui.comboBox_Banci_Calculate->addItem(tr("ȫ")); + ui.comboBox_Banci_Calculate->addItem(tr("全天")); ui.comboBox_Banci_Calculate->addItems(m_Totaltime.keys()); ui.comboBox_Wandring_Log->clear(); - ui.comboBox_Wandring_Log->addItem(tr("¼ѯ")); - ui.comboBox_Wandring_Log->addItem(tr("״̬ѯ")); - ui.comboBox_Wandring_Log->addItem(tr("ʹü¼ѯ")); + ui.comboBox_Wandring_Log->addItem(tr("报警记录查询")); + ui.comboBox_Wandring_Log->addItem(tr("运行状态查询")); + ui.comboBox_Wandring_Log->addItem(tr("使用记录查询")); - ui.label_Title->setText(tr("ݲѯ")); + ui.label_Title->setText(tr("生产数据查询")); ui.stackedWidget->setCurrentIndex(0); if (m_tableModel) @@ -1317,7 +1322,7 @@ void lpReport::InitUIParam() ui.label_Number->setText("0"); ui.CheckDlg_label_Pic->clear(); - + if (reportdlg) reportdlg->ClearData(); } @@ -1325,7 +1330,7 @@ void lpReport::InitUIParam() void lpReport::SetModelNames(QStringList models) { ui.comboBox_Model->clear(); - ui.comboBox_Model->addItem(tr("ȫ")); + ui.comboBox_Model->addItem(tr("全部")); if (!models.contains("NG")) ui.comboBox_Model->addItem(tr("NG")); ui.comboBox_Model->addItems(models); @@ -1334,4 +1339,83 @@ void lpReport::SetModelNames(QStringList models) _pCompleter = new QCompleter(models); _pCompleter->setCaseSensitivity(Qt::CaseInsensitive); ui.comboBox_Model->setCompleter(_pCompleter); -} \ No newline at end of file +} + +void lpReport::SetLanguage(QString strLanguage) +{ + QString strDirPath = QString(QCoreApplication::applicationDirPath() + "/language/"); + QString translatorFileName = strLanguage; + if (!translatorFileName.isEmpty()) + { + if (m_VecTranPtr.size() > 0) + { + while (m_VecTranPtr.size()) + { + QTranslator *pVa = m_VecTranPtr.takeFirst(); + qApp->removeTranslator(pVa); + delete pVa; + pVa = NULL; + } + } + //if (strLangage == "Chinese") + // return; + QLocale::setDefault(QLocale(translatorFileName)); + + QString transDir = strDirPath + translatorFileName; + SearchQmFile(transDir); + } +} + +void lpReport::SearchQmFile(const QString & strDir) +{ + QDir dir(strDir); + if (!dir.exists()) + { + return; + } + dir.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot); + dir.setSorting(QDir::DirsFirst); // 文件夹优先 + // 转换成一个List + QFileInfoList list = dir.entryInfoList(); + if (list.size() < 1) + { + return; + } + int i = 0; + do + { + QFileInfo fileInfo = list.at(i); + QString tt = fileInfo.fileName(); + // 如果是文件夹 + bool bisDir = fileInfo.isDir(); + if (bisDir) + { + SearchQmFile(fileInfo.filePath()); + } + else + { + bool bQm = fileInfo.fileName().endsWith(".qm"); + SetTranslator(fileInfo.filePath()); + } + i++; + } while (i < list.size()); +} + +void lpReport::SetTranslator(const QString strPath) +{ + if (strPath.isEmpty()) + { + return; + } + QTranslator *pTrans = new QTranslator; + if (pTrans->load(strPath)) // 如果加载成功 + { + qApp->installTranslator(pTrans); + m_VecTranPtr.append(pTrans); + } + else + { + delete pTrans; + pTrans = NULL; + } +} diff --git a/tpvs17/lpReport/lpReport.h b/tpvs17/lpReport/lpReport.h index 5872a2d..5cdd463 100644 --- a/tpvs17/lpReport/lpReport.h +++ b/tpvs17/lpReport/lpReport.h @@ -21,6 +21,9 @@ #include #include "DetectDataDB.h" +#include +#include + class lpReport : public QMainWindow { Q_OBJECT @@ -32,6 +35,11 @@ public: void onInitUI(); protected: + //ʻ + void SetLanguage(QString strLangage); + void SearchQmFile(const QString & strDir); + void SetTranslator(const QString strPath); + virtual void timerEvent(QTimerEvent *event); Q_SLOT void SlotEditTime(); Q_SLOT void onCheckButton(); @@ -80,6 +88,8 @@ private: class QGridLayout *m_GridLayout{ nullptr }; class QVBoxLayout *Hbox{ nullptr }; class QWidget *m_countwidget{ nullptr }; + + QVector m_VecTranPtr;//ʻ԰ protected: QDateTime m_startDate_Count, m_endDate_Count; QDateTime m_startDate_History, m_endDate_History; diff --git a/tpvs17/lpReport/main.cpp b/tpvs17/lpReport/main.cpp index 0b98297..d339a78 100644 --- a/tpvs17/lpReport/main.cpp +++ b/tpvs17/lpReport/main.cpp @@ -1,4 +1,4 @@ -#include "lpReport.h" +#include "lpReport.h" #include int main(int argc, char *argv[]) diff --git a/tpvs17/tpMain/lpMainWin.ui b/tpvs17/tpMain/lpMainWin.ui index e6bf188..d854b41 100644 --- a/tpvs17/tpMain/lpMainWin.ui +++ b/tpvs17/tpMain/lpMainWin.ui @@ -858,8 +858,8 @@ background-color: rgb(170, 170, 127); - + diff --git a/tpvs17/tpMain/lpmain_en.ts b/tpvs17/tpMain/lpmain_en.ts index cf7d0f5..2a15cf7 100644 --- a/tpvs17/tpMain/lpmain_en.ts +++ b/tpvs17/tpMain/lpmain_en.ts @@ -729,7 +729,7 @@ p, li { white-space: pre-wrap; } 轮毂信息: - Wheel information + Wheel information: @@ -800,7 +800,7 @@ p, li { white-space: pre-wrap; } 训练模板 - Train + Train @@ -1686,17 +1686,17 @@ p, li { white-space: pre-wrap; } 添加时间 - Add time + Add 删除时间 - Delete time + Delete 修改时间 - Modify time + Modify @@ -1937,17 +1937,17 @@ p, li { white-space: pre-wrap; } 按照直径检测 - Detect by diameter + By diameter 按照厚度检测 - Detect by thickness + By thickness 手动发送模板库 - Sending Model Library + Send Models @@ -2222,7 +2222,7 @@ p, li { white-space: pre-wrap; } 数据查询 - Data + History @@ -2426,13 +2426,13 @@ p, li { white-space: pre-wrap; } 当前曝光时间未识别到轮毂! - The current exposure time does not recognize the hub. + The current exposure time does not recognize the hub! 调整5次曝光时间后依然未能识别到轮毂! - After adjusting the exposure time for 5 times, the wheel hub is still not recognized + After adjusting the exposure time for 5 times, the wheel hub is still not recognized!