diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro index d9a99ea..a01b8e1 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro @@ -51,6 +51,7 @@ main.cpp \ mainsysdatabaseconnection.cpp \ mainwindow.cpp \ + multiinputdialog.cpp \ my_task.cpp \ newcheckmethod.cpp \ newverifymethod.cpp \ @@ -102,6 +103,7 @@ loginwindow.h \ mainsysdatabaseconnection.h \ mainwindow.h \ + multiinputdialog.h \ my_task.h \ newcheckmethod.h \ newverifymethod.h \ diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro index d9a99ea..a01b8e1 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro @@ -51,6 +51,7 @@ main.cpp \ mainsysdatabaseconnection.cpp \ mainwindow.cpp \ + multiinputdialog.cpp \ my_task.cpp \ newcheckmethod.cpp \ newverifymethod.cpp \ @@ -102,6 +103,7 @@ loginwindow.h \ mainsysdatabaseconnection.h \ mainwindow.h \ + multiinputdialog.h \ my_task.h \ newcheckmethod.h \ newverifymethod.h \ diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 976715c..3118dbc 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -6,6 +6,7 @@ #include #include "newcheckmethod.h" #include "formcheckpoint.h" +#include "multiinputdialog.h" CheckWindow::CheckWindow(QWidget *parent) : QWidget(parent), @@ -770,7 +771,7 @@ // } // } // } - if(curHeadIdx==idx) + if(curHeadIdx==idx||headTableList.keys().count()==0) return; @@ -844,6 +845,10 @@ QString CheckWindow::TranDecimals(QString sLabel,QStringList data,double TestValue) { int dex=getIndexByHeader(sLabel,"标准值"); + if(dex==-1) + dex=getIndexByHeader(sLabel,"标准器示值"); + if(dex==-1) + return QString::number(TestValue); QString StanValue=data[dex]; int decimalPlaces = 0; int decimalPos = StanValue.indexOf('.'); @@ -908,12 +913,14 @@ for (int i = 0; i < dataRes.count(); ++i) { QString sRet=""; QString newCmd; - double dStdValue,dError; + double dStdValue=FP_INFINITE,dError=0; QString newdStdValue,newdError; //标准器输出 BaseCommonApi::SaveLogInfo(1,QString("标准器输出")); + QString sParam; int idx= getIndexByHeader(sLabel,"检定项目"); - QString sParam = dataRes[i][idx]; + if(idx!=-1) + sParam = dataRes[i][idx]; if(standardEngine.getState()){ InstructionLib *instrcutLib = getCmdByCheckName(1,sParam); if(instrcutLib!=nullptr){ @@ -951,87 +958,81 @@ sRet = deviceEngine.queryData(newCmd); idx= getIndexByHeader(sLabel,"单位"); dStdValue = transUnit(sRet,dataRes[i][idx]); - } } } - // - if(sRet==""){ - bool bOk = false; - dStdValue = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,1,&bOk); - - if (bOk) { - sRet = QString::number(dStdValue); - //idx= getIndexByHeader(sLabel,"单位"); - //dStdValue = transUnit(sRet,dataRes[i][idx]); - //sRet = QString::number(dStdValue); - } - } - //item.measure_indication_value = sRet; - if(iEquipType==1){ - newdStdValue= TranDecimals(sLabel,dataRes[i],dStdValue); - idx= getIndexByHeader(sLabel,"示值"); - dataRes[i][idx] = newdStdValue; - ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //示值 - idx= getIndexByHeader(sLabel,"标准值"); - double dTmp = dataRes[i][idx].toDouble(); - dError = dStdValue-dTmp; - newdError=TranDecimals(sLabel,dataRes[i],dError); - idx= getIndexByHeader(sLabel,"绝对误差"); - dataRes[i][idx] = newdError; - ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); //示值 - - BaseCommonApi::SaveLogInfo(1,QString("示值: %1 绝对误差 %2").arg(newdStdValue).arg(newdError)); - Delay_MSec(2000); - } - //ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); + autoAdujstData(sLabel,i,dStdValue,dataRes); + //caliDataList.insert(sLabel,dataRes); + Delay_MSec(2000); } caliDataList.insert(sLabel,dataRes); } -// initCheckTable(); -// for(int i=0;iinstruct_config.split(";"); -// if(sList.length()>0){ -// for (QString& sCmd : sList){ -// standardEngine.sendData(sCmd); -// } -// } -// } -// } -// //被检设备读数 -// if(deviceEngine.getState()){ -// InstructionLib *instrcutLib = getCmdByCheckName(0,item.params); -// if(instrcutLib!=nullptr){ -// QStringList sList = instrcutLib->instruct_config.split(";"); -// if(sList.length()>0){ -// for (QString& sCmd : sList){ -// deviceEngine.sendData(sCmd); -// } -// } -// Delay_MSec(2000); -// sRet = deviceEngine.queryData(instrcutLib->instruct_read); -// } -// } -// // -// if(sRet==""){ -// bool bOk = false; -// double dRet = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,1,&bOk); +} -// if (bOk) { -// sRet = QString::number(dRet); -// } -// } -// item.measure_indication_value = sRet; -// ui->tableWidgetCheck->setItem(i,15,new QTableWidgetItem(sRet)); //示值 -// ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); -// } +void CheckWindow::autoAdujstData(QString sLabel,int i,double dStdValue,QList& dataRes){ + double dError; + QString newdStdValue,newdError; + if(iEquipType==1){ + if(qIsFinite(dStdValue)){ + bool bOk = false; + dStdValue = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,5,&bOk); + + if (bOk) { + //sRet = QString::number(dStdValue); + }else{ + dStdValue=0; + } + } + newdStdValue= TranDecimals(sLabel,dataRes[i],dStdValue); + int idx= getIndexByHeader(sLabel,"示值"); + dataRes[i][idx] = newdStdValue; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //示值 + idx= getIndexByHeader(sLabel,"标准值"); + double dTmp = dataRes[i][idx].toDouble(); + dError = dStdValue-dTmp; + newdError=TranDecimals(sLabel,dataRes[i],dError); + idx= getIndexByHeader(sLabel,"绝对误差"); + dataRes[i][idx] = newdError; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); //示值 + + BaseCommonApi::SaveLogInfo(1,QString("示值: %1 绝对误差 %2").arg(newdStdValue).arg(newdError)); + //Delay_MSec(2000); + } + else if(iEquipType==4){ + if(qIsFinite(dStdValue)){ + MultiInputDialog dlg(4); + QStringList titles ; + titles << "轻敲前示值-正" <<"轻敲前示值-反"<< "轻敲后示值-正" << "轻敲后示值-反"; + dlg.setWindowTitle("输入测试值"); + dlg.resize(400,400); + dlg.SetLabelTexts(titles); + dlg.setModal(true); + if(dlg.exec()==QDialog::Accepted){ + QList results = dlg.GetAllTexts(); + int k=0; + for(QString title:titles){ + newdStdValue= TranDecimals(sLabel,dataRes[i],results[k]); + int idx= getIndexByHeader(sLabel,title); + dataRes[i][idx] = newdStdValue; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //示值 + k++; + BaseCommonApi::SaveLogInfo(1,QString("测试项目: %1 测试值: %2").arg(title).arg(newdStdValue)); + } + int idx= getIndexByHeader(sLabel,"轻敲前后变动量-正"); + if(idx!=-1){ + newdError= TranDecimals(sLabel,dataRes[i],results[2]-results[0]); + dataRes[i][idx] = newdError; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); + } + idx= getIndexByHeader(sLabel,"轻敲前后变动量-反"); + if(idx!=-1){ + newdError= TranDecimals(sLabel,dataRes[i],results[3]-results[1]); + dataRes[i][idx] = newdError; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); + } + } + } + } } void CheckWindow::Delay_MSec(unsigned int msec) diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro index d9a99ea..a01b8e1 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro @@ -51,6 +51,7 @@ main.cpp \ mainsysdatabaseconnection.cpp \ mainwindow.cpp \ + multiinputdialog.cpp \ my_task.cpp \ newcheckmethod.cpp \ newverifymethod.cpp \ @@ -102,6 +103,7 @@ loginwindow.h \ mainsysdatabaseconnection.h \ mainwindow.h \ + multiinputdialog.h \ my_task.h \ newcheckmethod.h \ newverifymethod.h \ diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 976715c..3118dbc 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -6,6 +6,7 @@ #include #include "newcheckmethod.h" #include "formcheckpoint.h" +#include "multiinputdialog.h" CheckWindow::CheckWindow(QWidget *parent) : QWidget(parent), @@ -770,7 +771,7 @@ // } // } // } - if(curHeadIdx==idx) + if(curHeadIdx==idx||headTableList.keys().count()==0) return; @@ -844,6 +845,10 @@ QString CheckWindow::TranDecimals(QString sLabel,QStringList data,double TestValue) { int dex=getIndexByHeader(sLabel,"标准值"); + if(dex==-1) + dex=getIndexByHeader(sLabel,"标准器示值"); + if(dex==-1) + return QString::number(TestValue); QString StanValue=data[dex]; int decimalPlaces = 0; int decimalPos = StanValue.indexOf('.'); @@ -908,12 +913,14 @@ for (int i = 0; i < dataRes.count(); ++i) { QString sRet=""; QString newCmd; - double dStdValue,dError; + double dStdValue=FP_INFINITE,dError=0; QString newdStdValue,newdError; //标准器输出 BaseCommonApi::SaveLogInfo(1,QString("标准器输出")); + QString sParam; int idx= getIndexByHeader(sLabel,"检定项目"); - QString sParam = dataRes[i][idx]; + if(idx!=-1) + sParam = dataRes[i][idx]; if(standardEngine.getState()){ InstructionLib *instrcutLib = getCmdByCheckName(1,sParam); if(instrcutLib!=nullptr){ @@ -951,87 +958,81 @@ sRet = deviceEngine.queryData(newCmd); idx= getIndexByHeader(sLabel,"单位"); dStdValue = transUnit(sRet,dataRes[i][idx]); - } } } - // - if(sRet==""){ - bool bOk = false; - dStdValue = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,1,&bOk); - - if (bOk) { - sRet = QString::number(dStdValue); - //idx= getIndexByHeader(sLabel,"单位"); - //dStdValue = transUnit(sRet,dataRes[i][idx]); - //sRet = QString::number(dStdValue); - } - } - //item.measure_indication_value = sRet; - if(iEquipType==1){ - newdStdValue= TranDecimals(sLabel,dataRes[i],dStdValue); - idx= getIndexByHeader(sLabel,"示值"); - dataRes[i][idx] = newdStdValue; - ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //示值 - idx= getIndexByHeader(sLabel,"标准值"); - double dTmp = dataRes[i][idx].toDouble(); - dError = dStdValue-dTmp; - newdError=TranDecimals(sLabel,dataRes[i],dError); - idx= getIndexByHeader(sLabel,"绝对误差"); - dataRes[i][idx] = newdError; - ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); //示值 - - BaseCommonApi::SaveLogInfo(1,QString("示值: %1 绝对误差 %2").arg(newdStdValue).arg(newdError)); - Delay_MSec(2000); - } - //ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); + autoAdujstData(sLabel,i,dStdValue,dataRes); + //caliDataList.insert(sLabel,dataRes); + Delay_MSec(2000); } caliDataList.insert(sLabel,dataRes); } -// initCheckTable(); -// for(int i=0;iinstruct_config.split(";"); -// if(sList.length()>0){ -// for (QString& sCmd : sList){ -// standardEngine.sendData(sCmd); -// } -// } -// } -// } -// //被检设备读数 -// if(deviceEngine.getState()){ -// InstructionLib *instrcutLib = getCmdByCheckName(0,item.params); -// if(instrcutLib!=nullptr){ -// QStringList sList = instrcutLib->instruct_config.split(";"); -// if(sList.length()>0){ -// for (QString& sCmd : sList){ -// deviceEngine.sendData(sCmd); -// } -// } -// Delay_MSec(2000); -// sRet = deviceEngine.queryData(instrcutLib->instruct_read); -// } -// } -// // -// if(sRet==""){ -// bool bOk = false; -// double dRet = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,1,&bOk); +} -// if (bOk) { -// sRet = QString::number(dRet); -// } -// } -// item.measure_indication_value = sRet; -// ui->tableWidgetCheck->setItem(i,15,new QTableWidgetItem(sRet)); //示值 -// ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); -// } +void CheckWindow::autoAdujstData(QString sLabel,int i,double dStdValue,QList& dataRes){ + double dError; + QString newdStdValue,newdError; + if(iEquipType==1){ + if(qIsFinite(dStdValue)){ + bool bOk = false; + dStdValue = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,5,&bOk); + + if (bOk) { + //sRet = QString::number(dStdValue); + }else{ + dStdValue=0; + } + } + newdStdValue= TranDecimals(sLabel,dataRes[i],dStdValue); + int idx= getIndexByHeader(sLabel,"示值"); + dataRes[i][idx] = newdStdValue; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //示值 + idx= getIndexByHeader(sLabel,"标准值"); + double dTmp = dataRes[i][idx].toDouble(); + dError = dStdValue-dTmp; + newdError=TranDecimals(sLabel,dataRes[i],dError); + idx= getIndexByHeader(sLabel,"绝对误差"); + dataRes[i][idx] = newdError; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); //示值 + + BaseCommonApi::SaveLogInfo(1,QString("示值: %1 绝对误差 %2").arg(newdStdValue).arg(newdError)); + //Delay_MSec(2000); + } + else if(iEquipType==4){ + if(qIsFinite(dStdValue)){ + MultiInputDialog dlg(4); + QStringList titles ; + titles << "轻敲前示值-正" <<"轻敲前示值-反"<< "轻敲后示值-正" << "轻敲后示值-反"; + dlg.setWindowTitle("输入测试值"); + dlg.resize(400,400); + dlg.SetLabelTexts(titles); + dlg.setModal(true); + if(dlg.exec()==QDialog::Accepted){ + QList results = dlg.GetAllTexts(); + int k=0; + for(QString title:titles){ + newdStdValue= TranDecimals(sLabel,dataRes[i],results[k]); + int idx= getIndexByHeader(sLabel,title); + dataRes[i][idx] = newdStdValue; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //示值 + k++; + BaseCommonApi::SaveLogInfo(1,QString("测试项目: %1 测试值: %2").arg(title).arg(newdStdValue)); + } + int idx= getIndexByHeader(sLabel,"轻敲前后变动量-正"); + if(idx!=-1){ + newdError= TranDecimals(sLabel,dataRes[i],results[2]-results[0]); + dataRes[i][idx] = newdError; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); + } + idx= getIndexByHeader(sLabel,"轻敲前后变动量-反"); + if(idx!=-1){ + newdError= TranDecimals(sLabel,dataRes[i],results[3]-results[1]); + dataRes[i][idx] = newdError; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); + } + } + } + } } void CheckWindow::Delay_MSec(unsigned int msec) diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 35707bf..8b109af 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -84,6 +84,7 @@ void SetStandardCombox(CatDeviceInfor info); void updateStandardTable(); QString TranDecimals(QString sLabel,QStringList data,double TestValue); + void autoAdujstData(QString sLabel,int i,double dStdValue,QList& dataRes); private: Ui::CheckWindow *ui; diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro index d9a99ea..a01b8e1 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro @@ -51,6 +51,7 @@ main.cpp \ mainsysdatabaseconnection.cpp \ mainwindow.cpp \ + multiinputdialog.cpp \ my_task.cpp \ newcheckmethod.cpp \ newverifymethod.cpp \ @@ -102,6 +103,7 @@ loginwindow.h \ mainsysdatabaseconnection.h \ mainwindow.h \ + multiinputdialog.h \ my_task.h \ newcheckmethod.h \ newverifymethod.h \ diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 976715c..3118dbc 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -6,6 +6,7 @@ #include #include "newcheckmethod.h" #include "formcheckpoint.h" +#include "multiinputdialog.h" CheckWindow::CheckWindow(QWidget *parent) : QWidget(parent), @@ -770,7 +771,7 @@ // } // } // } - if(curHeadIdx==idx) + if(curHeadIdx==idx||headTableList.keys().count()==0) return; @@ -844,6 +845,10 @@ QString CheckWindow::TranDecimals(QString sLabel,QStringList data,double TestValue) { int dex=getIndexByHeader(sLabel,"标准值"); + if(dex==-1) + dex=getIndexByHeader(sLabel,"标准器示值"); + if(dex==-1) + return QString::number(TestValue); QString StanValue=data[dex]; int decimalPlaces = 0; int decimalPos = StanValue.indexOf('.'); @@ -908,12 +913,14 @@ for (int i = 0; i < dataRes.count(); ++i) { QString sRet=""; QString newCmd; - double dStdValue,dError; + double dStdValue=FP_INFINITE,dError=0; QString newdStdValue,newdError; //标准器输出 BaseCommonApi::SaveLogInfo(1,QString("标准器输出")); + QString sParam; int idx= getIndexByHeader(sLabel,"检定项目"); - QString sParam = dataRes[i][idx]; + if(idx!=-1) + sParam = dataRes[i][idx]; if(standardEngine.getState()){ InstructionLib *instrcutLib = getCmdByCheckName(1,sParam); if(instrcutLib!=nullptr){ @@ -951,87 +958,81 @@ sRet = deviceEngine.queryData(newCmd); idx= getIndexByHeader(sLabel,"单位"); dStdValue = transUnit(sRet,dataRes[i][idx]); - } } } - // - if(sRet==""){ - bool bOk = false; - dStdValue = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,1,&bOk); - - if (bOk) { - sRet = QString::number(dStdValue); - //idx= getIndexByHeader(sLabel,"单位"); - //dStdValue = transUnit(sRet,dataRes[i][idx]); - //sRet = QString::number(dStdValue); - } - } - //item.measure_indication_value = sRet; - if(iEquipType==1){ - newdStdValue= TranDecimals(sLabel,dataRes[i],dStdValue); - idx= getIndexByHeader(sLabel,"示值"); - dataRes[i][idx] = newdStdValue; - ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //示值 - idx= getIndexByHeader(sLabel,"标准值"); - double dTmp = dataRes[i][idx].toDouble(); - dError = dStdValue-dTmp; - newdError=TranDecimals(sLabel,dataRes[i],dError); - idx= getIndexByHeader(sLabel,"绝对误差"); - dataRes[i][idx] = newdError; - ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); //示值 - - BaseCommonApi::SaveLogInfo(1,QString("示值: %1 绝对误差 %2").arg(newdStdValue).arg(newdError)); - Delay_MSec(2000); - } - //ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); + autoAdujstData(sLabel,i,dStdValue,dataRes); + //caliDataList.insert(sLabel,dataRes); + Delay_MSec(2000); } caliDataList.insert(sLabel,dataRes); } -// initCheckTable(); -// for(int i=0;iinstruct_config.split(";"); -// if(sList.length()>0){ -// for (QString& sCmd : sList){ -// standardEngine.sendData(sCmd); -// } -// } -// } -// } -// //被检设备读数 -// if(deviceEngine.getState()){ -// InstructionLib *instrcutLib = getCmdByCheckName(0,item.params); -// if(instrcutLib!=nullptr){ -// QStringList sList = instrcutLib->instruct_config.split(";"); -// if(sList.length()>0){ -// for (QString& sCmd : sList){ -// deviceEngine.sendData(sCmd); -// } -// } -// Delay_MSec(2000); -// sRet = deviceEngine.queryData(instrcutLib->instruct_read); -// } -// } -// // -// if(sRet==""){ -// bool bOk = false; -// double dRet = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,1,&bOk); +} -// if (bOk) { -// sRet = QString::number(dRet); -// } -// } -// item.measure_indication_value = sRet; -// ui->tableWidgetCheck->setItem(i,15,new QTableWidgetItem(sRet)); //示值 -// ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); -// } +void CheckWindow::autoAdujstData(QString sLabel,int i,double dStdValue,QList& dataRes){ + double dError; + QString newdStdValue,newdError; + if(iEquipType==1){ + if(qIsFinite(dStdValue)){ + bool bOk = false; + dStdValue = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,5,&bOk); + + if (bOk) { + //sRet = QString::number(dStdValue); + }else{ + dStdValue=0; + } + } + newdStdValue= TranDecimals(sLabel,dataRes[i],dStdValue); + int idx= getIndexByHeader(sLabel,"示值"); + dataRes[i][idx] = newdStdValue; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //示值 + idx= getIndexByHeader(sLabel,"标准值"); + double dTmp = dataRes[i][idx].toDouble(); + dError = dStdValue-dTmp; + newdError=TranDecimals(sLabel,dataRes[i],dError); + idx= getIndexByHeader(sLabel,"绝对误差"); + dataRes[i][idx] = newdError; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); //示值 + + BaseCommonApi::SaveLogInfo(1,QString("示值: %1 绝对误差 %2").arg(newdStdValue).arg(newdError)); + //Delay_MSec(2000); + } + else if(iEquipType==4){ + if(qIsFinite(dStdValue)){ + MultiInputDialog dlg(4); + QStringList titles ; + titles << "轻敲前示值-正" <<"轻敲前示值-反"<< "轻敲后示值-正" << "轻敲后示值-反"; + dlg.setWindowTitle("输入测试值"); + dlg.resize(400,400); + dlg.SetLabelTexts(titles); + dlg.setModal(true); + if(dlg.exec()==QDialog::Accepted){ + QList results = dlg.GetAllTexts(); + int k=0; + for(QString title:titles){ + newdStdValue= TranDecimals(sLabel,dataRes[i],results[k]); + int idx= getIndexByHeader(sLabel,title); + dataRes[i][idx] = newdStdValue; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //示值 + k++; + BaseCommonApi::SaveLogInfo(1,QString("测试项目: %1 测试值: %2").arg(title).arg(newdStdValue)); + } + int idx= getIndexByHeader(sLabel,"轻敲前后变动量-正"); + if(idx!=-1){ + newdError= TranDecimals(sLabel,dataRes[i],results[2]-results[0]); + dataRes[i][idx] = newdError; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); + } + idx= getIndexByHeader(sLabel,"轻敲前后变动量-反"); + if(idx!=-1){ + newdError= TranDecimals(sLabel,dataRes[i],results[3]-results[1]); + dataRes[i][idx] = newdError; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); + } + } + } + } } void CheckWindow::Delay_MSec(unsigned int msec) diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 35707bf..8b109af 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -84,6 +84,7 @@ void SetStandardCombox(CatDeviceInfor info); void updateStandardTable(); QString TranDecimals(QString sLabel,QStringList data,double TestValue); + void autoAdujstData(QString sLabel,int i,double dStdValue,QList& dataRes); private: Ui::CheckWindow *ui; diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp index cd2427a..734034c 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp @@ -169,6 +169,7 @@ QString sLabel = headTableList->keys()[k]; const auto &dataRes = caliDataList->value(sLabel); //tableWidget->setRowCount(data.count()); + //多功能校准源 if(iEquipType==1){ for (int i = 0; i < dataRes.count(); ++i) { SaveDeviceMeasureCalibrator measItem; @@ -193,6 +194,27 @@ BaseCommonApi::InsertVerMultiCal(measItem); } } + //0.02压力活塞计 + else if(iEquipType==4){ + for (int i = 0; i < dataRes.count(); ++i) { + DeviceMeasureDataPistonGauge measItem; + measItem.id = QString::number(api.generateId()); + measItem.data_id = measInfo.id; + if(sLabel=="示值误差"||sLabel=="回程误差"||sLabel=="轻敲位移") + measItem.data_type = "1"; + else + measItem.data_type = "2"; + measItem.data_category = "1"; + measItem.before_friction_forward_stroke = getValueByHeader(i,sLabel,"轻敲前示值-正"); + measItem.before_friction_reverse_stroke = getValueByHeader(i,sLabel,"轻敲前示值-反"); + measItem.after_friction_forward_stroke = getValueByHeader(i,sLabel,"轻敲后示值-正"); + measItem.after_friction_reverse_stroke = getValueByHeader(i,sLabel,"轻敲后示值-反"); + measItem.variation_forward_stroke = getValueByHeader(i,sLabel,"轻敲前后变动量-正"); + measItem.variation_reverse_stroke = getValueByHeader(i,sLabel,"轻敲前后变动量-反"); + measItem.indicating_value=getValueByHeader(i,sLabel,"标准器示值"); + BaseCommonApi::InsertDeviceMeasureDataPistonGauge(measItem); + } + } } // for(SaveDeviceMeasureCalibrator& item:measureCalList){ // item.id = QString::number(api.generateId()); diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro index d9a99ea..a01b8e1 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro @@ -51,6 +51,7 @@ main.cpp \ mainsysdatabaseconnection.cpp \ mainwindow.cpp \ + multiinputdialog.cpp \ my_task.cpp \ newcheckmethod.cpp \ newverifymethod.cpp \ @@ -102,6 +103,7 @@ loginwindow.h \ mainsysdatabaseconnection.h \ mainwindow.h \ + multiinputdialog.h \ my_task.h \ newcheckmethod.h \ newverifymethod.h \ diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 976715c..3118dbc 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -6,6 +6,7 @@ #include #include "newcheckmethod.h" #include "formcheckpoint.h" +#include "multiinputdialog.h" CheckWindow::CheckWindow(QWidget *parent) : QWidget(parent), @@ -770,7 +771,7 @@ // } // } // } - if(curHeadIdx==idx) + if(curHeadIdx==idx||headTableList.keys().count()==0) return; @@ -844,6 +845,10 @@ QString CheckWindow::TranDecimals(QString sLabel,QStringList data,double TestValue) { int dex=getIndexByHeader(sLabel,"标准值"); + if(dex==-1) + dex=getIndexByHeader(sLabel,"标准器示值"); + if(dex==-1) + return QString::number(TestValue); QString StanValue=data[dex]; int decimalPlaces = 0; int decimalPos = StanValue.indexOf('.'); @@ -908,12 +913,14 @@ for (int i = 0; i < dataRes.count(); ++i) { QString sRet=""; QString newCmd; - double dStdValue,dError; + double dStdValue=FP_INFINITE,dError=0; QString newdStdValue,newdError; //标准器输出 BaseCommonApi::SaveLogInfo(1,QString("标准器输出")); + QString sParam; int idx= getIndexByHeader(sLabel,"检定项目"); - QString sParam = dataRes[i][idx]; + if(idx!=-1) + sParam = dataRes[i][idx]; if(standardEngine.getState()){ InstructionLib *instrcutLib = getCmdByCheckName(1,sParam); if(instrcutLib!=nullptr){ @@ -951,87 +958,81 @@ sRet = deviceEngine.queryData(newCmd); idx= getIndexByHeader(sLabel,"单位"); dStdValue = transUnit(sRet,dataRes[i][idx]); - } } } - // - if(sRet==""){ - bool bOk = false; - dStdValue = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,1,&bOk); - - if (bOk) { - sRet = QString::number(dStdValue); - //idx= getIndexByHeader(sLabel,"单位"); - //dStdValue = transUnit(sRet,dataRes[i][idx]); - //sRet = QString::number(dStdValue); - } - } - //item.measure_indication_value = sRet; - if(iEquipType==1){ - newdStdValue= TranDecimals(sLabel,dataRes[i],dStdValue); - idx= getIndexByHeader(sLabel,"示值"); - dataRes[i][idx] = newdStdValue; - ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //示值 - idx= getIndexByHeader(sLabel,"标准值"); - double dTmp = dataRes[i][idx].toDouble(); - dError = dStdValue-dTmp; - newdError=TranDecimals(sLabel,dataRes[i],dError); - idx= getIndexByHeader(sLabel,"绝对误差"); - dataRes[i][idx] = newdError; - ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); //示值 - - BaseCommonApi::SaveLogInfo(1,QString("示值: %1 绝对误差 %2").arg(newdStdValue).arg(newdError)); - Delay_MSec(2000); - } - //ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); + autoAdujstData(sLabel,i,dStdValue,dataRes); + //caliDataList.insert(sLabel,dataRes); + Delay_MSec(2000); } caliDataList.insert(sLabel,dataRes); } -// initCheckTable(); -// for(int i=0;iinstruct_config.split(";"); -// if(sList.length()>0){ -// for (QString& sCmd : sList){ -// standardEngine.sendData(sCmd); -// } -// } -// } -// } -// //被检设备读数 -// if(deviceEngine.getState()){ -// InstructionLib *instrcutLib = getCmdByCheckName(0,item.params); -// if(instrcutLib!=nullptr){ -// QStringList sList = instrcutLib->instruct_config.split(";"); -// if(sList.length()>0){ -// for (QString& sCmd : sList){ -// deviceEngine.sendData(sCmd); -// } -// } -// Delay_MSec(2000); -// sRet = deviceEngine.queryData(instrcutLib->instruct_read); -// } -// } -// // -// if(sRet==""){ -// bool bOk = false; -// double dRet = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,1,&bOk); +} -// if (bOk) { -// sRet = QString::number(dRet); -// } -// } -// item.measure_indication_value = sRet; -// ui->tableWidgetCheck->setItem(i,15,new QTableWidgetItem(sRet)); //示值 -// ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); -// } +void CheckWindow::autoAdujstData(QString sLabel,int i,double dStdValue,QList& dataRes){ + double dError; + QString newdStdValue,newdError; + if(iEquipType==1){ + if(qIsFinite(dStdValue)){ + bool bOk = false; + dStdValue = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,5,&bOk); + + if (bOk) { + //sRet = QString::number(dStdValue); + }else{ + dStdValue=0; + } + } + newdStdValue= TranDecimals(sLabel,dataRes[i],dStdValue); + int idx= getIndexByHeader(sLabel,"示值"); + dataRes[i][idx] = newdStdValue; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //示值 + idx= getIndexByHeader(sLabel,"标准值"); + double dTmp = dataRes[i][idx].toDouble(); + dError = dStdValue-dTmp; + newdError=TranDecimals(sLabel,dataRes[i],dError); + idx= getIndexByHeader(sLabel,"绝对误差"); + dataRes[i][idx] = newdError; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); //示值 + + BaseCommonApi::SaveLogInfo(1,QString("示值: %1 绝对误差 %2").arg(newdStdValue).arg(newdError)); + //Delay_MSec(2000); + } + else if(iEquipType==4){ + if(qIsFinite(dStdValue)){ + MultiInputDialog dlg(4); + QStringList titles ; + titles << "轻敲前示值-正" <<"轻敲前示值-反"<< "轻敲后示值-正" << "轻敲后示值-反"; + dlg.setWindowTitle("输入测试值"); + dlg.resize(400,400); + dlg.SetLabelTexts(titles); + dlg.setModal(true); + if(dlg.exec()==QDialog::Accepted){ + QList results = dlg.GetAllTexts(); + int k=0; + for(QString title:titles){ + newdStdValue= TranDecimals(sLabel,dataRes[i],results[k]); + int idx= getIndexByHeader(sLabel,title); + dataRes[i][idx] = newdStdValue; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //示值 + k++; + BaseCommonApi::SaveLogInfo(1,QString("测试项目: %1 测试值: %2").arg(title).arg(newdStdValue)); + } + int idx= getIndexByHeader(sLabel,"轻敲前后变动量-正"); + if(idx!=-1){ + newdError= TranDecimals(sLabel,dataRes[i],results[2]-results[0]); + dataRes[i][idx] = newdError; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); + } + idx= getIndexByHeader(sLabel,"轻敲前后变动量-反"); + if(idx!=-1){ + newdError= TranDecimals(sLabel,dataRes[i],results[3]-results[1]); + dataRes[i][idx] = newdError; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); + } + } + } + } } void CheckWindow::Delay_MSec(unsigned int msec) diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 35707bf..8b109af 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -84,6 +84,7 @@ void SetStandardCombox(CatDeviceInfor info); void updateStandardTable(); QString TranDecimals(QString sLabel,QStringList data,double TestValue); + void autoAdujstData(QString sLabel,int i,double dStdValue,QList& dataRes); private: Ui::CheckWindow *ui; diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp index cd2427a..734034c 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp @@ -169,6 +169,7 @@ QString sLabel = headTableList->keys()[k]; const auto &dataRes = caliDataList->value(sLabel); //tableWidget->setRowCount(data.count()); + //多功能校准源 if(iEquipType==1){ for (int i = 0; i < dataRes.count(); ++i) { SaveDeviceMeasureCalibrator measItem; @@ -193,6 +194,27 @@ BaseCommonApi::InsertVerMultiCal(measItem); } } + //0.02压力活塞计 + else if(iEquipType==4){ + for (int i = 0; i < dataRes.count(); ++i) { + DeviceMeasureDataPistonGauge measItem; + measItem.id = QString::number(api.generateId()); + measItem.data_id = measInfo.id; + if(sLabel=="示值误差"||sLabel=="回程误差"||sLabel=="轻敲位移") + measItem.data_type = "1"; + else + measItem.data_type = "2"; + measItem.data_category = "1"; + measItem.before_friction_forward_stroke = getValueByHeader(i,sLabel,"轻敲前示值-正"); + measItem.before_friction_reverse_stroke = getValueByHeader(i,sLabel,"轻敲前示值-反"); + measItem.after_friction_forward_stroke = getValueByHeader(i,sLabel,"轻敲后示值-正"); + measItem.after_friction_reverse_stroke = getValueByHeader(i,sLabel,"轻敲后示值-反"); + measItem.variation_forward_stroke = getValueByHeader(i,sLabel,"轻敲前后变动量-正"); + measItem.variation_reverse_stroke = getValueByHeader(i,sLabel,"轻敲前后变动量-反"); + measItem.indicating_value=getValueByHeader(i,sLabel,"标准器示值"); + BaseCommonApi::InsertDeviceMeasureDataPistonGauge(measItem); + } + } } // for(SaveDeviceMeasureCalibrator& item:measureCalList){ // item.id = QString::number(api.generateId()); diff --git a/softwareDirectory/AutoVerScheme/multiinputdialog.cpp b/softwareDirectory/AutoVerScheme/multiinputdialog.cpp new file mode 100644 index 0000000..045bfe8 --- /dev/null +++ b/softwareDirectory/AutoVerScheme/multiinputdialog.cpp @@ -0,0 +1,88 @@ +#include "multiinputdialog.h" +#include +#include +#include +#include +#include + +MultiInputDialog::MultiInputDialog(int count, QWidget *parent) +: QDialog(parent), m_GroupCount(count) +{ + QVBoxLayout *layout = new QVBoxLayout; + QHBoxLayout *subLayout; + m_Labels = new QLabel*[m_GroupCount]; + m_LineEdits = new QDoubleSpinBox*[m_GroupCount]; + //设计界面 + for(int i=0; iaddWidget(m_Labels[i]); + subLayout->addWidget(m_LineEdits[i]); + layout->addLayout(subLayout); + } + + m_OKButton = new QPushButton( tr("确定"), this ); + m_CancelButton = new QPushButton( tr("取消"), this ); + subLayout = new QHBoxLayout; + subLayout->addStretch(); + subLayout->addWidget(m_OKButton); + subLayout->addWidget(m_CancelButton); + layout->addLayout(subLayout); + setLayout(layout); + + connect(m_OKButton, SIGNAL(clicked()), this, SLOT(accept())); + connect(m_CancelButton, SIGNAL(clicked()), this, SLOT(reject())); + setWindowTitle("输入测试值"); + setStyleSheet("background-color:white;"); + resize(400,300); +} + +MultiInputDialog::~MultiInputDialog() +{ + delete m_LineEdits; + delete m_Labels; +} + +void MultiInputDialog::SetLabelTexts(const QStringList &listText) +{ + for(int i=0; i= m_GroupCount ) + break; + m_Labels[i]->setText( listText.at(i) ); + } +} + +void MultiInputDialog::SetOneLabelText(int index, const QString &text) +{ + m_Labels[index]->setText(text); +} + +void MultiInputDialog::SetLabelsWidth(int width) +{ + for(int i=0; isetFixedWidth(width); +} + +void MultiInputDialog::SetLineEditRegExp(int index, QRegExp regExp) +{ + //QValidator *validator = new QRegExpValidator(regExp, this); + //m_LineEdits[index]->setValidator( validator ); +} + +QString MultiInputDialog::GetOneText(int index) +{ + return m_LineEdits[index]->text(); +} + +QList MultiInputDialog::GetAllTexts() +{ + QList list; + for(int i=0; ivalue() ); + } + return list; +} diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro index d9a99ea..a01b8e1 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro @@ -51,6 +51,7 @@ main.cpp \ mainsysdatabaseconnection.cpp \ mainwindow.cpp \ + multiinputdialog.cpp \ my_task.cpp \ newcheckmethod.cpp \ newverifymethod.cpp \ @@ -102,6 +103,7 @@ loginwindow.h \ mainsysdatabaseconnection.h \ mainwindow.h \ + multiinputdialog.h \ my_task.h \ newcheckmethod.h \ newverifymethod.h \ diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 976715c..3118dbc 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -6,6 +6,7 @@ #include #include "newcheckmethod.h" #include "formcheckpoint.h" +#include "multiinputdialog.h" CheckWindow::CheckWindow(QWidget *parent) : QWidget(parent), @@ -770,7 +771,7 @@ // } // } // } - if(curHeadIdx==idx) + if(curHeadIdx==idx||headTableList.keys().count()==0) return; @@ -844,6 +845,10 @@ QString CheckWindow::TranDecimals(QString sLabel,QStringList data,double TestValue) { int dex=getIndexByHeader(sLabel,"标准值"); + if(dex==-1) + dex=getIndexByHeader(sLabel,"标准器示值"); + if(dex==-1) + return QString::number(TestValue); QString StanValue=data[dex]; int decimalPlaces = 0; int decimalPos = StanValue.indexOf('.'); @@ -908,12 +913,14 @@ for (int i = 0; i < dataRes.count(); ++i) { QString sRet=""; QString newCmd; - double dStdValue,dError; + double dStdValue=FP_INFINITE,dError=0; QString newdStdValue,newdError; //标准器输出 BaseCommonApi::SaveLogInfo(1,QString("标准器输出")); + QString sParam; int idx= getIndexByHeader(sLabel,"检定项目"); - QString sParam = dataRes[i][idx]; + if(idx!=-1) + sParam = dataRes[i][idx]; if(standardEngine.getState()){ InstructionLib *instrcutLib = getCmdByCheckName(1,sParam); if(instrcutLib!=nullptr){ @@ -951,87 +958,81 @@ sRet = deviceEngine.queryData(newCmd); idx= getIndexByHeader(sLabel,"单位"); dStdValue = transUnit(sRet,dataRes[i][idx]); - } } } - // - if(sRet==""){ - bool bOk = false; - dStdValue = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,1,&bOk); - - if (bOk) { - sRet = QString::number(dStdValue); - //idx= getIndexByHeader(sLabel,"单位"); - //dStdValue = transUnit(sRet,dataRes[i][idx]); - //sRet = QString::number(dStdValue); - } - } - //item.measure_indication_value = sRet; - if(iEquipType==1){ - newdStdValue= TranDecimals(sLabel,dataRes[i],dStdValue); - idx= getIndexByHeader(sLabel,"示值"); - dataRes[i][idx] = newdStdValue; - ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //示值 - idx= getIndexByHeader(sLabel,"标准值"); - double dTmp = dataRes[i][idx].toDouble(); - dError = dStdValue-dTmp; - newdError=TranDecimals(sLabel,dataRes[i],dError); - idx= getIndexByHeader(sLabel,"绝对误差"); - dataRes[i][idx] = newdError; - ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); //示值 - - BaseCommonApi::SaveLogInfo(1,QString("示值: %1 绝对误差 %2").arg(newdStdValue).arg(newdError)); - Delay_MSec(2000); - } - //ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); + autoAdujstData(sLabel,i,dStdValue,dataRes); + //caliDataList.insert(sLabel,dataRes); + Delay_MSec(2000); } caliDataList.insert(sLabel,dataRes); } -// initCheckTable(); -// for(int i=0;iinstruct_config.split(";"); -// if(sList.length()>0){ -// for (QString& sCmd : sList){ -// standardEngine.sendData(sCmd); -// } -// } -// } -// } -// //被检设备读数 -// if(deviceEngine.getState()){ -// InstructionLib *instrcutLib = getCmdByCheckName(0,item.params); -// if(instrcutLib!=nullptr){ -// QStringList sList = instrcutLib->instruct_config.split(";"); -// if(sList.length()>0){ -// for (QString& sCmd : sList){ -// deviceEngine.sendData(sCmd); -// } -// } -// Delay_MSec(2000); -// sRet = deviceEngine.queryData(instrcutLib->instruct_read); -// } -// } -// // -// if(sRet==""){ -// bool bOk = false; -// double dRet = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,1,&bOk); +} -// if (bOk) { -// sRet = QString::number(dRet); -// } -// } -// item.measure_indication_value = sRet; -// ui->tableWidgetCheck->setItem(i,15,new QTableWidgetItem(sRet)); //示值 -// ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); -// } +void CheckWindow::autoAdujstData(QString sLabel,int i,double dStdValue,QList& dataRes){ + double dError; + QString newdStdValue,newdError; + if(iEquipType==1){ + if(qIsFinite(dStdValue)){ + bool bOk = false; + dStdValue = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,5,&bOk); + + if (bOk) { + //sRet = QString::number(dStdValue); + }else{ + dStdValue=0; + } + } + newdStdValue= TranDecimals(sLabel,dataRes[i],dStdValue); + int idx= getIndexByHeader(sLabel,"示值"); + dataRes[i][idx] = newdStdValue; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //示值 + idx= getIndexByHeader(sLabel,"标准值"); + double dTmp = dataRes[i][idx].toDouble(); + dError = dStdValue-dTmp; + newdError=TranDecimals(sLabel,dataRes[i],dError); + idx= getIndexByHeader(sLabel,"绝对误差"); + dataRes[i][idx] = newdError; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); //示值 + + BaseCommonApi::SaveLogInfo(1,QString("示值: %1 绝对误差 %2").arg(newdStdValue).arg(newdError)); + //Delay_MSec(2000); + } + else if(iEquipType==4){ + if(qIsFinite(dStdValue)){ + MultiInputDialog dlg(4); + QStringList titles ; + titles << "轻敲前示值-正" <<"轻敲前示值-反"<< "轻敲后示值-正" << "轻敲后示值-反"; + dlg.setWindowTitle("输入测试值"); + dlg.resize(400,400); + dlg.SetLabelTexts(titles); + dlg.setModal(true); + if(dlg.exec()==QDialog::Accepted){ + QList results = dlg.GetAllTexts(); + int k=0; + for(QString title:titles){ + newdStdValue= TranDecimals(sLabel,dataRes[i],results[k]); + int idx= getIndexByHeader(sLabel,title); + dataRes[i][idx] = newdStdValue; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //示值 + k++; + BaseCommonApi::SaveLogInfo(1,QString("测试项目: %1 测试值: %2").arg(title).arg(newdStdValue)); + } + int idx= getIndexByHeader(sLabel,"轻敲前后变动量-正"); + if(idx!=-1){ + newdError= TranDecimals(sLabel,dataRes[i],results[2]-results[0]); + dataRes[i][idx] = newdError; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); + } + idx= getIndexByHeader(sLabel,"轻敲前后变动量-反"); + if(idx!=-1){ + newdError= TranDecimals(sLabel,dataRes[i],results[3]-results[1]); + dataRes[i][idx] = newdError; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); + } + } + } + } } void CheckWindow::Delay_MSec(unsigned int msec) diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 35707bf..8b109af 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -84,6 +84,7 @@ void SetStandardCombox(CatDeviceInfor info); void updateStandardTable(); QString TranDecimals(QString sLabel,QStringList data,double TestValue); + void autoAdujstData(QString sLabel,int i,double dStdValue,QList& dataRes); private: Ui::CheckWindow *ui; diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp index cd2427a..734034c 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp @@ -169,6 +169,7 @@ QString sLabel = headTableList->keys()[k]; const auto &dataRes = caliDataList->value(sLabel); //tableWidget->setRowCount(data.count()); + //多功能校准源 if(iEquipType==1){ for (int i = 0; i < dataRes.count(); ++i) { SaveDeviceMeasureCalibrator measItem; @@ -193,6 +194,27 @@ BaseCommonApi::InsertVerMultiCal(measItem); } } + //0.02压力活塞计 + else if(iEquipType==4){ + for (int i = 0; i < dataRes.count(); ++i) { + DeviceMeasureDataPistonGauge measItem; + measItem.id = QString::number(api.generateId()); + measItem.data_id = measInfo.id; + if(sLabel=="示值误差"||sLabel=="回程误差"||sLabel=="轻敲位移") + measItem.data_type = "1"; + else + measItem.data_type = "2"; + measItem.data_category = "1"; + measItem.before_friction_forward_stroke = getValueByHeader(i,sLabel,"轻敲前示值-正"); + measItem.before_friction_reverse_stroke = getValueByHeader(i,sLabel,"轻敲前示值-反"); + measItem.after_friction_forward_stroke = getValueByHeader(i,sLabel,"轻敲后示值-正"); + measItem.after_friction_reverse_stroke = getValueByHeader(i,sLabel,"轻敲后示值-反"); + measItem.variation_forward_stroke = getValueByHeader(i,sLabel,"轻敲前后变动量-正"); + measItem.variation_reverse_stroke = getValueByHeader(i,sLabel,"轻敲前后变动量-反"); + measItem.indicating_value=getValueByHeader(i,sLabel,"标准器示值"); + BaseCommonApi::InsertDeviceMeasureDataPistonGauge(measItem); + } + } } // for(SaveDeviceMeasureCalibrator& item:measureCalList){ // item.id = QString::number(api.generateId()); diff --git a/softwareDirectory/AutoVerScheme/multiinputdialog.cpp b/softwareDirectory/AutoVerScheme/multiinputdialog.cpp new file mode 100644 index 0000000..045bfe8 --- /dev/null +++ b/softwareDirectory/AutoVerScheme/multiinputdialog.cpp @@ -0,0 +1,88 @@ +#include "multiinputdialog.h" +#include +#include +#include +#include +#include + +MultiInputDialog::MultiInputDialog(int count, QWidget *parent) +: QDialog(parent), m_GroupCount(count) +{ + QVBoxLayout *layout = new QVBoxLayout; + QHBoxLayout *subLayout; + m_Labels = new QLabel*[m_GroupCount]; + m_LineEdits = new QDoubleSpinBox*[m_GroupCount]; + //设计界面 + for(int i=0; iaddWidget(m_Labels[i]); + subLayout->addWidget(m_LineEdits[i]); + layout->addLayout(subLayout); + } + + m_OKButton = new QPushButton( tr("确定"), this ); + m_CancelButton = new QPushButton( tr("取消"), this ); + subLayout = new QHBoxLayout; + subLayout->addStretch(); + subLayout->addWidget(m_OKButton); + subLayout->addWidget(m_CancelButton); + layout->addLayout(subLayout); + setLayout(layout); + + connect(m_OKButton, SIGNAL(clicked()), this, SLOT(accept())); + connect(m_CancelButton, SIGNAL(clicked()), this, SLOT(reject())); + setWindowTitle("输入测试值"); + setStyleSheet("background-color:white;"); + resize(400,300); +} + +MultiInputDialog::~MultiInputDialog() +{ + delete m_LineEdits; + delete m_Labels; +} + +void MultiInputDialog::SetLabelTexts(const QStringList &listText) +{ + for(int i=0; i= m_GroupCount ) + break; + m_Labels[i]->setText( listText.at(i) ); + } +} + +void MultiInputDialog::SetOneLabelText(int index, const QString &text) +{ + m_Labels[index]->setText(text); +} + +void MultiInputDialog::SetLabelsWidth(int width) +{ + for(int i=0; isetFixedWidth(width); +} + +void MultiInputDialog::SetLineEditRegExp(int index, QRegExp regExp) +{ + //QValidator *validator = new QRegExpValidator(regExp, this); + //m_LineEdits[index]->setValidator( validator ); +} + +QString MultiInputDialog::GetOneText(int index) +{ + return m_LineEdits[index]->text(); +} + +QList MultiInputDialog::GetAllTexts() +{ + QList list; + for(int i=0; ivalue() ); + } + return list; +} diff --git a/softwareDirectory/AutoVerScheme/multiinputdialog.h b/softwareDirectory/AutoVerScheme/multiinputdialog.h new file mode 100644 index 0000000..69463e6 --- /dev/null +++ b/softwareDirectory/AutoVerScheme/multiinputdialog.h @@ -0,0 +1,34 @@ +#ifndef MULTIINPUTDIALOG_H +#define MULTIINPUTDIALOG_H +#include +#include +#include + +class MultiInputDialog : public QDialog +{ + Q_OBJECT + private: + const int m_GroupCount; + QLabel **m_Labels; + QDoubleSpinBox **m_LineEdits; + QPushButton *m_OKButton; + QPushButton *m_CancelButton; + + public: + MultiInputDialog(int count, QWidget *parent = 0); + virtual ~MultiInputDialog(); + void SetLabelTexts(const QStringList &listText); + void SetOneLabelText(int index, const QString &text); + QString GetOneText(int index); + QList GetAllTexts(); + //为了让多组输入框看起来整齐些,所以我固定了QLabel的宽度 + void SetLabelsWidth(int width); + //使用正则表达式来限制输入的字符 + void SetLineEditRegExp(int index, QRegExp regExp); + + //请根据需要重写这两个函数 + virtual void accept() { QDialog::accept(); } + virtual void reject() { QDialog::reject(); } +}; + +#endif // MULTIINPUTDIALOG_H