diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 87b3df7..99cea8d 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -1117,14 +1117,14 @@ } }else if(sLabel=="均匀性测试"){ for(int i=0;itableWidgetCheck->rowCount()/8;i++){ -// QString sLimit; -// if(dataRes[i*8][2]!="") -// sLimit = dataRes[i*8][2]; -// else -// sLimit = dataRes[i*8][3]; -// ui->tableWidgetCheck->item(i*8,1)->setText(sLimit); - ui->tableWidgetCheck->setSpan(i*8,1,8,1); -// ui->tableWidgetCheck->setSpan(i*8,2,8,2); + ui->tableWidgetCheck->setSpan(i*8,1,8,2); + QString sLimit; + if(dataRes[i*8][1]!="") + sLimit = dataRes[i*8][1]; + else + sLimit = dataRes[i*8][2]; + ui->tableWidgetCheck->item(i*8,1)->setText(sLimit); + ui->tableWidgetCheck->setSpan(i*8,3,8,1); ui->tableWidgetCheck->setSpan(i*8,15,8,1); ui->tableWidgetCheck->setSpan(i*8,16,8,1); ui->tableWidgetCheck->setSpan(i*8,17,8,1); @@ -1592,12 +1592,16 @@ } return NewsUnit; } -QString CheckWindow::TranDecimals(QString sLabel,QStringList data,double TestValue) +QString CheckWindow::TranDecimals(QString sLabel,QStringList data,double TestValue,QString ColName) { QStringList ValueList; + if(ColName==NULL){ ValueList.append("标准值"); ValueList.append("标准器示值"); ValueList.append("标称值"); + }else{ + ValueList.append(ColName); + } int dex=getIndexByHeader(sLabel,ValueList); if(dex==-1) return QString::number(TestValue); @@ -1701,20 +1705,25 @@ return; } else if(iEquipType==5){ - timerChart->start(5000); - /*connectDevice(); + //timerChart->start(5000); + connectDevice(); if(deviceEngine.getState()){ NumberCount=0; timerChart->start(5000); }else{ QMessageBox::warning(this, "警告", "设备未连接!"); - }*/ + } + return; + }else if(iEquipType==10){ + //信号源采集读数 标准器 + this->SignalGeneratortextflow(); return; } connectDevice(); for(int i=0;ikeys().length();i++) { if(Teststate==SyncRunStatus::Stopped){break;}; + //每次循环按钮变化 initCheckTable(i); constsLable= headTableList->keys()[i]; @@ -1728,7 +1737,7 @@ QString newCmd; double dStdValue=FP_INFINITE,dError=0; QString newdStdValue,newdError; - CheckBackColorUpdate(true,i); + //标准器输出 BaseCommonApi::SaveLogInfo(1,QString("标准器输出")); QString sParam; @@ -1737,6 +1746,8 @@ int idx= getIndexByHeader(constsLable,TempValue); if(idx!=-1) sParam = dataRes[i][idx]; + CheckBackColorUpdate(true,i); + //暂时加到这个地方 后面统一编写 if(sParam=="DCI"||sParam=="ACI") { @@ -1779,6 +1790,19 @@ BaseCommonApi::SaveLogInfo(1,QString("被检设备输出")); InstructionLib *instrcutLib = getCmdByCheckName(0,sParam); SendDevice(instrcutLib,&deviceEngine); + //在被检设备读数前 + if(iEquipType==10){ + if(sParam=="功率"){ + //功率开始测试前进行校准 + InstructionLib *PowerPage=getCmdByCheckName(1,"功率界面切换"); + InstructionLib *PowerCali=getCmdByCheckName(1,"功率校准"); + InstructionLib *PowerDevice=getCmdByCheckName(1,constsLable); + QStringList ReadCmd=PowerCali->instruct_read.split(';'); + for(int i=0;i& dataRes){ double dError; QString newdStdValue,newdError,Value; - if(iEquipType==1 || iEquipType==13){ + if(iEquipType==1 || iEquipType==13 ){ if(dStdValue==FP_INFINITE){ bool bOk = false; dStdValue = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,5,&bOk); @@ -1827,12 +1851,16 @@ idx= getIndexByHeader(sLabel,QStrTranQStrList("绝对误差")); if(idx!=-1) { - int idx2= getIndexByHeader(sLabel,QStrTranQStrList("标准值")); + int idx2=getIndexByHeader(sLabel,QStrTranQStrList(("标准值"))); + if(idx2==-1) + idx2=getIndexByHeader(sLabel,QStrTranQStrList("标称值")); + if(idx2!=-1){ double dTmp = dataRes[i][idx2].toDouble(); dError = dStdValue-dTmp; newdError=TranDecimals(sLabel,dataRes[i],dError); dataRes[i][idx] = newdError; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); + } } idx= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); @@ -2573,6 +2601,147 @@ } } } + else if(iEquipType==10){ + if(dStdValue==FP_INFINITE){ + dStdValue=InputDialog("请输入被检示值"); + } + int idx=-1; + QString data,unit; + QString ResultCol; + if(sLabel=="频率" || sLabel=="剩余调频" || sLabel=="调相相偏"){ + idx= getIndexByHeader(sLabel,QStrTranQStrList("指标上限")); + ItemUnitSplit(dataRes[i][idx],data,unit); + if(sLabel=="剩余调频" ){ + ResultCol=sLabel; + newdStdValue=QString::number(dStdValue,'f',4); + }else if(sLabel=="调相相偏"){ + ResultCol="测量值"; + newdStdValue=QString::number(dStdValue,'f',4); + }else{ + ResultCol="测量值"; + newdStdValue=TranDecimals(sLabel,dataRes[i],dStdValue,"指标上限"); + } + idx= getIndexByHeader(sLabel,QStrTranQStrList(ResultCol)); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + }else if(sLabel=="调幅深度" || sLabel=="功率" || sLabel=="调频频偏" ){ + idx= getIndexByHeader(sLabel,QStrTranQStrList("标称值")); + ItemUnitSplit(dataRes[i][idx],data,unit); + if(sLabel=="调频频偏"){ + newdStdValue=QString::number(dStdValue,'f',4); + }else{ + newdStdValue=TranDecimals(sLabel,dataRes[i],dStdValue); + } + idx= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + }else if(sLabel=="剩余调幅"){ + unit="%"; + newdStdValue=QString::number(dStdValue,'f',2); + idx= getIndexByHeader(sLabel,QStrTranQStrList(sLabel)); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + }else if (sLabel=="谐波") { + idx= getIndexByHeader(sLabel,QStrTranQStrList("幅度")); + ItemUnitSplit(dataRes[i][idx],data,unit); + newdStdValue=TranDecimals(sLabel,dataRes[i],dStdValue,"幅度"); + idx= getIndexByHeader(sLabel,QStrTranQStrList("基波幅度")); + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + dataRes[i][idx]=newdStdValue+unit; + //采集谐波 + //找到频率值 + idx= getIndexByHeader(sLabel,QStrTranQStrList("频率")); + QString freq,newunit,HarmonicWaveValue; + double freqtemp; + ItemUnitSplit(dataRes[i][idx],freq,newunit); + if(standardEngine.getState()){ + //找到谐波次数值 + idx= getIndexByHeader(sLabel,QStrTranQStrList("谐波次数")); + if(dataRes[i][idx].contains("/")){ + freqtemp=freq.toDouble()*(1/dataRes[i][idx].mid(1,2).toDouble()); + }else{ + freqtemp=freq.toDouble()*dataRes[i][idx].toDouble(); + } + InstructionLib *instrcutLibstan=getCmdByCheckName(1,sLabel); + InstructionLib tempstan; + QString cmd; + for(QString item:instrcutLibstan->instruct_config.split(";")){ + if(item.contains("{FREQ}")){ + cmd=item; + cmd.replace("{FREQ}",QString::number(freqtemp,'f',3)); + } + } + tempstan.instruct_config=cmd; + SendDevice(&tempstan,&standardEngine); + HarmonicWaveValue= ReadDevice(instrcutLibstan,&standardEngine); + }else{ + dStdValue=InputDialog("请输入谐波幅度值"); + HarmonicWaveValue=QString::number(dStdValue,'f',2); + } + idx= getIndexByHeader(sLabel,QStrTranQStrList("谐波幅度")); + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(HarmonicWaveValue+unit)); //测量值 + dataRes[i][idx]=HarmonicWaveValue+unit; + unit="dBc"; + idx= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + QString Res=QString::number(HarmonicWaveValue.toDouble()-newdStdValue.toDouble()); + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(Res+unit)); //测量值 + dataRes[i][idx]=(newdStdValue.toDouble()-HarmonicWaveValue.toDouble())+unit; + + + }else if (sLabel=="非谐波") { + unit ="dBc"; + newdStdValue=QString::number(dStdValue,'f',1); + idx= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + dataRes[i][idx]=newdStdValue+unit; + } + + idx= getIndexByHeader(sLabel,QStrTranQStrList(("相对误差"))); + if(idx!=-1) + { + int idx2=getIndexByHeader(sLabel,QStrTranQStrList(("标准值"))); + if(idx2==-1) + idx2=getIndexByHeader(sLabel,QStrTranQStrList("标称值")); + if(idx2!=-1){ + double dTmp = dataRes[i][idx2].toDouble(); + dError = (dStdValue-dTmp); + newdError=TranDecimals(sLabel,dataRes[i],dError); + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); + dataRes[i][idx]=newdError; + } + + } + BaseCommonApi::SaveLogInfo(1,QString("转换前 测试值 %1").arg(dStdValue)); + BaseCommonApi::SaveLogInfo(1,QString("转换后 测试值 %1").arg(newdStdValue)); + if(sLabel=="调频频偏" || sLabel=="调相相偏"|| sLabel=="调幅深度"){ + //获取THD值 + unit="%"; + InstructionLib* instrcutLibTHD= getCmdByCheckName(0,"THD"); + if(instrcutLibTHD==nullptr) + { + dStdValue= dStdValue=InputDialog("请输入THD值"); + if(sLabel=="调相相偏"){ + newdStdValue=QString::number(dStdValue,'f',3); + }else{ + newdStdValue=QString::number(dStdValue,'f',2); + } + }else{ + QString ResultThd=ReadDevice(instrcutLibTHD,&deviceEngine); + dStdValue = ResultThd.toDouble(); + if(sLabel=="调相相偏"){ + newdStdValue=QString::number(dStdValue,'f',3); + }else{ + newdStdValue=QString::number(dStdValue,'f',2); + } + + } + idx= getIndexByHeader(sLabel,QStrTranQStrList("THD")); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); + BaseCommonApi::SaveLogInfo(1,QString("转换前 THD 测试值 %1").arg(dStdValue)); + BaseCommonApi::SaveLogInfo(1,QString("转换后 THD 测试值 %1").arg(newdStdValue)); + } + } } void CheckWindow::Oscilloscopetextflow() { @@ -2870,7 +3039,100 @@ while( QTime::currentTime() < _Timer ) QCoreApplication::processEvents(QEventLoop::AllEvents, 100); } +void CheckWindow::SignalGeneratortextflow(){ + Teststate=SyncRunStatus::Running; + if(headTableList->keys().count()==0) + return; + BaseCommonApi::SaveLogInfo(1,QString("-----------------------------------")); + connectDevice(); + for(int i=0;ikeys().length();i++) + { + if(Teststate==SyncRunStatus::Stopped){break;}; + //每次循环按钮变化 + initCheckTable(i); + constsLable= headTableList->keys()[i]; + QList dataRes = caliDataList->value(constsLable); + BaseCommonApi::SaveLogInfo(1,QString("开始 %1 测试").arg(constsLable)); + for (int i = 0; i < dataRes.count(); ++i) { + if(Teststate==SyncRunStatus::Stopped){break;}; + constDataRes=dataRes[i]; + InItcmd(); + QString sRet=""; + QString newCmd; + double dStdValue=FP_INFINITE,dError=0; + QString newdStdValue,newdError; + //获取检定项目 + BaseCommonApi::SaveLogInfo(1,QString("被检设备设置")); + QString sParam,TempValue; + TempValue.append("检定项目"); + int idx= getIndexByHeader(constsLable,QStrTranQStrList(TempValue)); + if(idx!=-1) + sParam = dataRes[i][idx]; + //背景颜色显示 + CheckBackColorUpdate(true,i); + //首先设置被检设备输出 + InstructionLib *instrcutLib = getCmdByCheckName(0,sParam); + SendDevice(instrcutLib,&deviceEngine,true); + //设备标准仪器 + BaseCommonApi::SaveLogInfo(1,QString("标准仪器输出")); + InstructionLib *instrcutLibstan=getCmdByCheckName(1,sParam); + SendDevice(instrcutLibstan,&standardEngine); + if(sParam=="功率"){ + bool IsCli=true; + if(i!=0){ + idx = getIndexByHeader(constsLable,QStrTranQStrList("频率")); + QString FreqValue,PageFreqValue; + FreqValue=Removeunit(dataRes[i][idx]); + PageFreqValue=Removeunit(dataRes[i-1][idx]); + if(PageFreqValue==FreqValue){ + IsCli=false; + } + } + if(IsCli){ + //&& 只在频率切换时进行校准 + //功率校准 + InstructionLib *PowerPage=getCmdByCheckName(1,"功率界面切换"); + InstructionLib *PowerCali=getCmdByCheckName(0,"功率校准"); + InstructionLib *PowerCaliSt=getCmdByCheckName(1,"功率校准"); + if(PowerCali!=nullptr && PowerCaliSt!=nullptr && PowerCaliSt!=nullptr){ + InstructionLib Temp; + InstructionLib TempSt; + for(QString item:PowerCali->instruct_read.split(';')) + { + Temp.instruct_config=item; + SendDevice(&Temp,&deviceEngine); + if(item.contains("20")){ + TempSt.instruct_config=PowerPage->instruct_config.split(";")[0]; + SendDevice(&TempSt,&standardEngine); + TempSt.instruct_config=PowerCaliSt->instruct_config.split(";")[0]; + SendDevice(&TempSt,&standardEngine); + }else{ + TempSt.instruct_config=PowerPage->instruct_config.split(";")[1]; + SendDevice(&TempSt,&standardEngine); + TempSt.instruct_config=PowerCaliSt->instruct_config.split(";")[1]; + SendDevice(&TempSt,&standardEngine); + } + } + } + } + } + sRet=ReadDevice(instrcutLib,&standardEngine); + if(sRet!=""){ + TempValue.clear(); + TempValue.append("单位"); + idx= getIndexByHeader(constsLable,QStrTranQStrList(TempValue)); + dStdValue = transUnit(sRet,dataRes[i][idx]); + } + autoAdujstData(constsLable,i,dStdValue,dataRes); + CheckBackColorUpdate(false,i); + closeCmd(); + Delay_MSec(2000); + } + caliDataList->insert(constsLable,dataRes); + } + closeDevice(); +} void CheckWindow::on_pushButton_pause_clicked() { @@ -3007,8 +3269,8 @@ QString sData2=Value; QString sNewData,sUnit; // 正则表达式匹配数字 - QRegularExpression reLetters("[a-zA-ZΩΜΩ]"); - QRegularExpression reLetters1("[^a-zA-ZΩΜΩ]"); + QRegularExpression reLetters("[a-zA-ZΩΜΩ%]"); + QRegularExpression reLetters1("[^a-zA-ZΩΜΩ%]"); data=sData2.replace(reLetters,""); unit= Value.replace(reLetters1,""); @@ -3030,7 +3292,7 @@ } QString CheckWindow::Removeunit(QString data) { - QRegularExpression re("[a-zA-ZΩΜΩ]"); + QRegularExpression re("[a-zA-ZΩΜΩ%]"); return data.replace(re,""); } bool CheckWindow::showDialog(QString title,QString mess) @@ -3223,49 +3485,24 @@ InstructionLib instrcutLibTemp; QStringList CmdList=instrcutLib->instruct_read.split(";"); - if(NumberCount%2==0){ + /*if(NumberCount%2==0){ ch=0; }else{ ch=1; - } - instrcutLibTemp.instruct_read=CmdList[ch]; + }*/ + //默认只读移动的温度计 + instrcutLibTemp.instruct_read=CmdList[1]; SendDevice(instrcutLib,&deviceEngine); - sRet="通道"+QString::number(ch)+":"+ReadDevice(&instrcutLibTemp,&deviceEngine); + sRet=ReadDevice(&instrcutLibTemp,&deviceEngine); + //sRet="通道"+QString::number(ch)+":"+ReadDevice(&instrcutLibTemp,&deviceEngine); NumberCount++; } - - /* - if(instrcutLib!=nullptr){ - QStringList sList = instrcutLib->instruct_config.split(";"); - if(sList.length()>0){ - for (QString& sCmd : sList){ - //newCmd = transCmd(sCmd,sLabel,dataRes[i]); - newCmd = sCmd; - if(newCmd!=""){ - deviceEngine.sendData(newCmd); - qDebug() << "config cmds:" << newCmd; - } - } - } - - //newCmd = transCmd(instrcutLib->instruct_read,sLabel,dataRes[i]); - newCmd =instrcutLib->instruct_read; - if(newCmd!=""){ - qDebug() << "query cmds:" << newCmd; - sRet = deviceEngine.queryData(newCmd); - //TempValue.clear(); - //TempValue.append("单位"); - //idx= getIndexByHeader(sLabel,TempValue); - //dStdValue = transUnit(sRet,dataRes[i][idx]); - } - } - */ } //获取当前时间 QDateTime currentTime = QDateTime::currentDateTime(); //获取随机数 - qsrand(QTime::currentTime().second()); - int rand = qrand()%100;//获取0~10之间的数 + //qsrand(QTime::currentTime().second()); + //int rand = qrand()%100;//获取0~10之间的数 //获取初始化的qchart QChart *qchart =(QChart *)chartView->chart(); @@ -3278,7 +3515,7 @@ qchart->axisX()->setMin(QDateTime::currentDateTime().addSecs(-1*30)); qchart->axisX()->setMax(QDateTime::currentDateTime().addSecs(1*30)); - ui->lineEditTemp->setText(QString::number(rand)); + ui->lineEditTemp->setText(sRet); } } @@ -3288,6 +3525,9 @@ QString sData = ui->lineEditTemp->text(); if(sData.contains("通道")) sData=sData.mid(4,sData.count()); + InstructionLib *instrcutLib = getCmdByCheckName(0,sLabel); + QString sRet; + QList dataRes = caliDataList->value(sLabel); if(sLabel=="波动性测试"){ QTableWidgetItem *currentItem=ui->tableWidgetCheck->currentItem(); if(currentItem==nullptr||currentItem->column()<4||currentItem->column()>18){ @@ -3299,26 +3539,34 @@ if(row>=0 && row <=7){ for(int i=0;i<=7;i++){ for(int j=4;j<=18;j++){ - qsrand(QTime::currentTime().second()); - int rand = qrand()%100;//获取0~10之间的数4 - ui->tableWidgetCheck->setItem(i,j,new QTableWidgetItem(rand)); - //currentItem->setText(); + if(Teststate==SyncRunStatus::Stopped){return;}; + //每次读取值间隔一秒时间 + Delay_MSec(1000); + SendDevice(instrcutLib,&deviceEngine); + sRet=ReadDevice(instrcutLib,&deviceEngine); + + ui->tableWidgetCheck->setItem(i,j,new QTableWidgetItem(sRet)); + dataRes[i][j] = sRet; + } } } if(row>=8 && row <=15){ for(int i=8;i<=15;i++){ for(int j=4;j<=18;j++){ - qsrand(QTime::currentTime().second()); - int rand = qrand()%100;//获取0~10之间的数 - ui->tableWidgetCheck->setItem(i,j,new QTableWidgetItem(rand)); - //currentItem->setText(QString::number(rand)); + //每次读取值间隔一秒时间 + if(Teststate==SyncRunStatus::Stopped){return;}; + Delay_MSec(1000); + SendDevice(instrcutLib,&deviceEngine); + sRet=ReadDevice(instrcutLib,&deviceEngine); + ui->tableWidgetCheck->setItem(i,j,new QTableWidgetItem(sRet)); + dataRes[i][j] = sRet; } } } - QList dataRes = caliDataList->value(sLabel); - dataRes[row][col] = sData; + + for(int i=0;itableWidgetCheck->rowCount()/8;i++){ double dMin=0; @@ -3349,16 +3597,38 @@ } caliDataList->insert(sLabel,dataRes); }else if(sLabel=="均匀性测试"){ + QStringList Head=headTableList->value(sLabel); QTableWidgetItem *currentItem=ui->tableWidgetCheck->currentItem(); + InstructionLib instrcutLibTemp; + QStringList CmdList=instrcutLib->instruct_read.split(";"); if(currentItem==nullptr||currentItem->column()<5||currentItem->column()>14){ ui->tableWidgetCheck->setCurrentCell(0,5); } currentItem=ui->tableWidgetCheck->currentItem(); int row = currentItem->row(); - int col = currentItem->column(); - currentItem->setText(sData); - QList dataRes = caliDataList->value(sLabel); - dataRes[row][col] = sData; + //int col = currentItem->column(); + if(row>=0){ + for(int j=5;j<=12;j++){ + if(Teststate==SyncRunStatus::Stopped){break;}; + Delay_MSec(1000); + QString CurrentColName=Head[j]; + //int rand =0; + if(CurrentColName.contains("O")){ + instrcutLibTemp.instruct_read=CmdList[0]; + SendDevice(instrcutLib,&deviceEngine); + sRet=ReadDevice(&instrcutLibTemp,&deviceEngine); + }else{ + instrcutLibTemp.instruct_read=CmdList[1]; + SendDevice(instrcutLib,&deviceEngine); + sRet=ReadDevice(&instrcutLibTemp,&deviceEngine); + } + + ui->tableWidgetCheck->setItem(row,j,new QTableWidgetItem(sRet)); + dataRes[row][j] = sRet; + } + } + //currentItem->setText(sData); + for(int i=0;itableWidgetCheck->rowCount()/8;i++){ double dMin=0; @@ -3472,3 +3742,42 @@ stabInputdlg->setInputData(dStdValue); } } + +void CheckWindow::on_pushButton_Hidd_clicked() +{ + if(ui->pushButton_Hidd->text()=="隐藏"){ + ui->pushButton_Hidd->setText("显示"); + ui->widget_3->hide(); + ui->widget_4->hide(); + ui->widget_5->hide(); + ui->groupBox_5->hide(); + foreach(QWidget *widget, ui->verticalLayout_6->findChildren()) { + widget->hide(); + } + //ui->groupBoxChart->hide(); + //ui->groupBox_3->hide(); + //ui->groupBox_7->hide(); + }else{ + ui->pushButton_Hidd->setText("隐藏"); + ui->widget_3->show(); + ui->widget_4->show(); + ui->widget_5->show(); + ui->groupBox_5->show(); + foreach(QWidget *widget, ui->verticalLayout_6->findChildren()) { + widget->show(); + } + //ui->groupBoxChart->show(); + //ui->groupBox_3->show(); + //ui->groupBox_7->show(); + } + +} +double CheckWindow::InputDialog(QString Content) +{ + double value; + bool bOk = false; + value = QInputDialog::getDouble(this,"手动测试",Content,0,-100000, 100000,5,&bOk); + if (!bOk) + value=0; + return value; +} diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 87b3df7..99cea8d 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -1117,14 +1117,14 @@ } }else if(sLabel=="均匀性测试"){ for(int i=0;itableWidgetCheck->rowCount()/8;i++){ -// QString sLimit; -// if(dataRes[i*8][2]!="") -// sLimit = dataRes[i*8][2]; -// else -// sLimit = dataRes[i*8][3]; -// ui->tableWidgetCheck->item(i*8,1)->setText(sLimit); - ui->tableWidgetCheck->setSpan(i*8,1,8,1); -// ui->tableWidgetCheck->setSpan(i*8,2,8,2); + ui->tableWidgetCheck->setSpan(i*8,1,8,2); + QString sLimit; + if(dataRes[i*8][1]!="") + sLimit = dataRes[i*8][1]; + else + sLimit = dataRes[i*8][2]; + ui->tableWidgetCheck->item(i*8,1)->setText(sLimit); + ui->tableWidgetCheck->setSpan(i*8,3,8,1); ui->tableWidgetCheck->setSpan(i*8,15,8,1); ui->tableWidgetCheck->setSpan(i*8,16,8,1); ui->tableWidgetCheck->setSpan(i*8,17,8,1); @@ -1592,12 +1592,16 @@ } return NewsUnit; } -QString CheckWindow::TranDecimals(QString sLabel,QStringList data,double TestValue) +QString CheckWindow::TranDecimals(QString sLabel,QStringList data,double TestValue,QString ColName) { QStringList ValueList; + if(ColName==NULL){ ValueList.append("标准值"); ValueList.append("标准器示值"); ValueList.append("标称值"); + }else{ + ValueList.append(ColName); + } int dex=getIndexByHeader(sLabel,ValueList); if(dex==-1) return QString::number(TestValue); @@ -1701,20 +1705,25 @@ return; } else if(iEquipType==5){ - timerChart->start(5000); - /*connectDevice(); + //timerChart->start(5000); + connectDevice(); if(deviceEngine.getState()){ NumberCount=0; timerChart->start(5000); }else{ QMessageBox::warning(this, "警告", "设备未连接!"); - }*/ + } + return; + }else if(iEquipType==10){ + //信号源采集读数 标准器 + this->SignalGeneratortextflow(); return; } connectDevice(); for(int i=0;ikeys().length();i++) { if(Teststate==SyncRunStatus::Stopped){break;}; + //每次循环按钮变化 initCheckTable(i); constsLable= headTableList->keys()[i]; @@ -1728,7 +1737,7 @@ QString newCmd; double dStdValue=FP_INFINITE,dError=0; QString newdStdValue,newdError; - CheckBackColorUpdate(true,i); + //标准器输出 BaseCommonApi::SaveLogInfo(1,QString("标准器输出")); QString sParam; @@ -1737,6 +1746,8 @@ int idx= getIndexByHeader(constsLable,TempValue); if(idx!=-1) sParam = dataRes[i][idx]; + CheckBackColorUpdate(true,i); + //暂时加到这个地方 后面统一编写 if(sParam=="DCI"||sParam=="ACI") { @@ -1779,6 +1790,19 @@ BaseCommonApi::SaveLogInfo(1,QString("被检设备输出")); InstructionLib *instrcutLib = getCmdByCheckName(0,sParam); SendDevice(instrcutLib,&deviceEngine); + //在被检设备读数前 + if(iEquipType==10){ + if(sParam=="功率"){ + //功率开始测试前进行校准 + InstructionLib *PowerPage=getCmdByCheckName(1,"功率界面切换"); + InstructionLib *PowerCali=getCmdByCheckName(1,"功率校准"); + InstructionLib *PowerDevice=getCmdByCheckName(1,constsLable); + QStringList ReadCmd=PowerCali->instruct_read.split(';'); + for(int i=0;i& dataRes){ double dError; QString newdStdValue,newdError,Value; - if(iEquipType==1 || iEquipType==13){ + if(iEquipType==1 || iEquipType==13 ){ if(dStdValue==FP_INFINITE){ bool bOk = false; dStdValue = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,5,&bOk); @@ -1827,12 +1851,16 @@ idx= getIndexByHeader(sLabel,QStrTranQStrList("绝对误差")); if(idx!=-1) { - int idx2= getIndexByHeader(sLabel,QStrTranQStrList("标准值")); + int idx2=getIndexByHeader(sLabel,QStrTranQStrList(("标准值"))); + if(idx2==-1) + idx2=getIndexByHeader(sLabel,QStrTranQStrList("标称值")); + if(idx2!=-1){ double dTmp = dataRes[i][idx2].toDouble(); dError = dStdValue-dTmp; newdError=TranDecimals(sLabel,dataRes[i],dError); dataRes[i][idx] = newdError; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); + } } idx= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); @@ -2573,6 +2601,147 @@ } } } + else if(iEquipType==10){ + if(dStdValue==FP_INFINITE){ + dStdValue=InputDialog("请输入被检示值"); + } + int idx=-1; + QString data,unit; + QString ResultCol; + if(sLabel=="频率" || sLabel=="剩余调频" || sLabel=="调相相偏"){ + idx= getIndexByHeader(sLabel,QStrTranQStrList("指标上限")); + ItemUnitSplit(dataRes[i][idx],data,unit); + if(sLabel=="剩余调频" ){ + ResultCol=sLabel; + newdStdValue=QString::number(dStdValue,'f',4); + }else if(sLabel=="调相相偏"){ + ResultCol="测量值"; + newdStdValue=QString::number(dStdValue,'f',4); + }else{ + ResultCol="测量值"; + newdStdValue=TranDecimals(sLabel,dataRes[i],dStdValue,"指标上限"); + } + idx= getIndexByHeader(sLabel,QStrTranQStrList(ResultCol)); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + }else if(sLabel=="调幅深度" || sLabel=="功率" || sLabel=="调频频偏" ){ + idx= getIndexByHeader(sLabel,QStrTranQStrList("标称值")); + ItemUnitSplit(dataRes[i][idx],data,unit); + if(sLabel=="调频频偏"){ + newdStdValue=QString::number(dStdValue,'f',4); + }else{ + newdStdValue=TranDecimals(sLabel,dataRes[i],dStdValue); + } + idx= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + }else if(sLabel=="剩余调幅"){ + unit="%"; + newdStdValue=QString::number(dStdValue,'f',2); + idx= getIndexByHeader(sLabel,QStrTranQStrList(sLabel)); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + }else if (sLabel=="谐波") { + idx= getIndexByHeader(sLabel,QStrTranQStrList("幅度")); + ItemUnitSplit(dataRes[i][idx],data,unit); + newdStdValue=TranDecimals(sLabel,dataRes[i],dStdValue,"幅度"); + idx= getIndexByHeader(sLabel,QStrTranQStrList("基波幅度")); + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + dataRes[i][idx]=newdStdValue+unit; + //采集谐波 + //找到频率值 + idx= getIndexByHeader(sLabel,QStrTranQStrList("频率")); + QString freq,newunit,HarmonicWaveValue; + double freqtemp; + ItemUnitSplit(dataRes[i][idx],freq,newunit); + if(standardEngine.getState()){ + //找到谐波次数值 + idx= getIndexByHeader(sLabel,QStrTranQStrList("谐波次数")); + if(dataRes[i][idx].contains("/")){ + freqtemp=freq.toDouble()*(1/dataRes[i][idx].mid(1,2).toDouble()); + }else{ + freqtemp=freq.toDouble()*dataRes[i][idx].toDouble(); + } + InstructionLib *instrcutLibstan=getCmdByCheckName(1,sLabel); + InstructionLib tempstan; + QString cmd; + for(QString item:instrcutLibstan->instruct_config.split(";")){ + if(item.contains("{FREQ}")){ + cmd=item; + cmd.replace("{FREQ}",QString::number(freqtemp,'f',3)); + } + } + tempstan.instruct_config=cmd; + SendDevice(&tempstan,&standardEngine); + HarmonicWaveValue= ReadDevice(instrcutLibstan,&standardEngine); + }else{ + dStdValue=InputDialog("请输入谐波幅度值"); + HarmonicWaveValue=QString::number(dStdValue,'f',2); + } + idx= getIndexByHeader(sLabel,QStrTranQStrList("谐波幅度")); + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(HarmonicWaveValue+unit)); //测量值 + dataRes[i][idx]=HarmonicWaveValue+unit; + unit="dBc"; + idx= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + QString Res=QString::number(HarmonicWaveValue.toDouble()-newdStdValue.toDouble()); + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(Res+unit)); //测量值 + dataRes[i][idx]=(newdStdValue.toDouble()-HarmonicWaveValue.toDouble())+unit; + + + }else if (sLabel=="非谐波") { + unit ="dBc"; + newdStdValue=QString::number(dStdValue,'f',1); + idx= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + dataRes[i][idx]=newdStdValue+unit; + } + + idx= getIndexByHeader(sLabel,QStrTranQStrList(("相对误差"))); + if(idx!=-1) + { + int idx2=getIndexByHeader(sLabel,QStrTranQStrList(("标准值"))); + if(idx2==-1) + idx2=getIndexByHeader(sLabel,QStrTranQStrList("标称值")); + if(idx2!=-1){ + double dTmp = dataRes[i][idx2].toDouble(); + dError = (dStdValue-dTmp); + newdError=TranDecimals(sLabel,dataRes[i],dError); + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); + dataRes[i][idx]=newdError; + } + + } + BaseCommonApi::SaveLogInfo(1,QString("转换前 测试值 %1").arg(dStdValue)); + BaseCommonApi::SaveLogInfo(1,QString("转换后 测试值 %1").arg(newdStdValue)); + if(sLabel=="调频频偏" || sLabel=="调相相偏"|| sLabel=="调幅深度"){ + //获取THD值 + unit="%"; + InstructionLib* instrcutLibTHD= getCmdByCheckName(0,"THD"); + if(instrcutLibTHD==nullptr) + { + dStdValue= dStdValue=InputDialog("请输入THD值"); + if(sLabel=="调相相偏"){ + newdStdValue=QString::number(dStdValue,'f',3); + }else{ + newdStdValue=QString::number(dStdValue,'f',2); + } + }else{ + QString ResultThd=ReadDevice(instrcutLibTHD,&deviceEngine); + dStdValue = ResultThd.toDouble(); + if(sLabel=="调相相偏"){ + newdStdValue=QString::number(dStdValue,'f',3); + }else{ + newdStdValue=QString::number(dStdValue,'f',2); + } + + } + idx= getIndexByHeader(sLabel,QStrTranQStrList("THD")); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); + BaseCommonApi::SaveLogInfo(1,QString("转换前 THD 测试值 %1").arg(dStdValue)); + BaseCommonApi::SaveLogInfo(1,QString("转换后 THD 测试值 %1").arg(newdStdValue)); + } + } } void CheckWindow::Oscilloscopetextflow() { @@ -2870,7 +3039,100 @@ while( QTime::currentTime() < _Timer ) QCoreApplication::processEvents(QEventLoop::AllEvents, 100); } +void CheckWindow::SignalGeneratortextflow(){ + Teststate=SyncRunStatus::Running; + if(headTableList->keys().count()==0) + return; + BaseCommonApi::SaveLogInfo(1,QString("-----------------------------------")); + connectDevice(); + for(int i=0;ikeys().length();i++) + { + if(Teststate==SyncRunStatus::Stopped){break;}; + //每次循环按钮变化 + initCheckTable(i); + constsLable= headTableList->keys()[i]; + QList dataRes = caliDataList->value(constsLable); + BaseCommonApi::SaveLogInfo(1,QString("开始 %1 测试").arg(constsLable)); + for (int i = 0; i < dataRes.count(); ++i) { + if(Teststate==SyncRunStatus::Stopped){break;}; + constDataRes=dataRes[i]; + InItcmd(); + QString sRet=""; + QString newCmd; + double dStdValue=FP_INFINITE,dError=0; + QString newdStdValue,newdError; + //获取检定项目 + BaseCommonApi::SaveLogInfo(1,QString("被检设备设置")); + QString sParam,TempValue; + TempValue.append("检定项目"); + int idx= getIndexByHeader(constsLable,QStrTranQStrList(TempValue)); + if(idx!=-1) + sParam = dataRes[i][idx]; + //背景颜色显示 + CheckBackColorUpdate(true,i); + //首先设置被检设备输出 + InstructionLib *instrcutLib = getCmdByCheckName(0,sParam); + SendDevice(instrcutLib,&deviceEngine,true); + //设备标准仪器 + BaseCommonApi::SaveLogInfo(1,QString("标准仪器输出")); + InstructionLib *instrcutLibstan=getCmdByCheckName(1,sParam); + SendDevice(instrcutLibstan,&standardEngine); + if(sParam=="功率"){ + bool IsCli=true; + if(i!=0){ + idx = getIndexByHeader(constsLable,QStrTranQStrList("频率")); + QString FreqValue,PageFreqValue; + FreqValue=Removeunit(dataRes[i][idx]); + PageFreqValue=Removeunit(dataRes[i-1][idx]); + if(PageFreqValue==FreqValue){ + IsCli=false; + } + } + if(IsCli){ + //&& 只在频率切换时进行校准 + //功率校准 + InstructionLib *PowerPage=getCmdByCheckName(1,"功率界面切换"); + InstructionLib *PowerCali=getCmdByCheckName(0,"功率校准"); + InstructionLib *PowerCaliSt=getCmdByCheckName(1,"功率校准"); + if(PowerCali!=nullptr && PowerCaliSt!=nullptr && PowerCaliSt!=nullptr){ + InstructionLib Temp; + InstructionLib TempSt; + for(QString item:PowerCali->instruct_read.split(';')) + { + Temp.instruct_config=item; + SendDevice(&Temp,&deviceEngine); + if(item.contains("20")){ + TempSt.instruct_config=PowerPage->instruct_config.split(";")[0]; + SendDevice(&TempSt,&standardEngine); + TempSt.instruct_config=PowerCaliSt->instruct_config.split(";")[0]; + SendDevice(&TempSt,&standardEngine); + }else{ + TempSt.instruct_config=PowerPage->instruct_config.split(";")[1]; + SendDevice(&TempSt,&standardEngine); + TempSt.instruct_config=PowerCaliSt->instruct_config.split(";")[1]; + SendDevice(&TempSt,&standardEngine); + } + } + } + } + } + sRet=ReadDevice(instrcutLib,&standardEngine); + if(sRet!=""){ + TempValue.clear(); + TempValue.append("单位"); + idx= getIndexByHeader(constsLable,QStrTranQStrList(TempValue)); + dStdValue = transUnit(sRet,dataRes[i][idx]); + } + autoAdujstData(constsLable,i,dStdValue,dataRes); + CheckBackColorUpdate(false,i); + closeCmd(); + Delay_MSec(2000); + } + caliDataList->insert(constsLable,dataRes); + } + closeDevice(); +} void CheckWindow::on_pushButton_pause_clicked() { @@ -3007,8 +3269,8 @@ QString sData2=Value; QString sNewData,sUnit; // 正则表达式匹配数字 - QRegularExpression reLetters("[a-zA-ZΩΜΩ]"); - QRegularExpression reLetters1("[^a-zA-ZΩΜΩ]"); + QRegularExpression reLetters("[a-zA-ZΩΜΩ%]"); + QRegularExpression reLetters1("[^a-zA-ZΩΜΩ%]"); data=sData2.replace(reLetters,""); unit= Value.replace(reLetters1,""); @@ -3030,7 +3292,7 @@ } QString CheckWindow::Removeunit(QString data) { - QRegularExpression re("[a-zA-ZΩΜΩ]"); + QRegularExpression re("[a-zA-ZΩΜΩ%]"); return data.replace(re,""); } bool CheckWindow::showDialog(QString title,QString mess) @@ -3223,49 +3485,24 @@ InstructionLib instrcutLibTemp; QStringList CmdList=instrcutLib->instruct_read.split(";"); - if(NumberCount%2==0){ + /*if(NumberCount%2==0){ ch=0; }else{ ch=1; - } - instrcutLibTemp.instruct_read=CmdList[ch]; + }*/ + //默认只读移动的温度计 + instrcutLibTemp.instruct_read=CmdList[1]; SendDevice(instrcutLib,&deviceEngine); - sRet="通道"+QString::number(ch)+":"+ReadDevice(&instrcutLibTemp,&deviceEngine); + sRet=ReadDevice(&instrcutLibTemp,&deviceEngine); + //sRet="通道"+QString::number(ch)+":"+ReadDevice(&instrcutLibTemp,&deviceEngine); NumberCount++; } - - /* - if(instrcutLib!=nullptr){ - QStringList sList = instrcutLib->instruct_config.split(";"); - if(sList.length()>0){ - for (QString& sCmd : sList){ - //newCmd = transCmd(sCmd,sLabel,dataRes[i]); - newCmd = sCmd; - if(newCmd!=""){ - deviceEngine.sendData(newCmd); - qDebug() << "config cmds:" << newCmd; - } - } - } - - //newCmd = transCmd(instrcutLib->instruct_read,sLabel,dataRes[i]); - newCmd =instrcutLib->instruct_read; - if(newCmd!=""){ - qDebug() << "query cmds:" << newCmd; - sRet = deviceEngine.queryData(newCmd); - //TempValue.clear(); - //TempValue.append("单位"); - //idx= getIndexByHeader(sLabel,TempValue); - //dStdValue = transUnit(sRet,dataRes[i][idx]); - } - } - */ } //获取当前时间 QDateTime currentTime = QDateTime::currentDateTime(); //获取随机数 - qsrand(QTime::currentTime().second()); - int rand = qrand()%100;//获取0~10之间的数 + //qsrand(QTime::currentTime().second()); + //int rand = qrand()%100;//获取0~10之间的数 //获取初始化的qchart QChart *qchart =(QChart *)chartView->chart(); @@ -3278,7 +3515,7 @@ qchart->axisX()->setMin(QDateTime::currentDateTime().addSecs(-1*30)); qchart->axisX()->setMax(QDateTime::currentDateTime().addSecs(1*30)); - ui->lineEditTemp->setText(QString::number(rand)); + ui->lineEditTemp->setText(sRet); } } @@ -3288,6 +3525,9 @@ QString sData = ui->lineEditTemp->text(); if(sData.contains("通道")) sData=sData.mid(4,sData.count()); + InstructionLib *instrcutLib = getCmdByCheckName(0,sLabel); + QString sRet; + QList dataRes = caliDataList->value(sLabel); if(sLabel=="波动性测试"){ QTableWidgetItem *currentItem=ui->tableWidgetCheck->currentItem(); if(currentItem==nullptr||currentItem->column()<4||currentItem->column()>18){ @@ -3299,26 +3539,34 @@ if(row>=0 && row <=7){ for(int i=0;i<=7;i++){ for(int j=4;j<=18;j++){ - qsrand(QTime::currentTime().second()); - int rand = qrand()%100;//获取0~10之间的数4 - ui->tableWidgetCheck->setItem(i,j,new QTableWidgetItem(rand)); - //currentItem->setText(); + if(Teststate==SyncRunStatus::Stopped){return;}; + //每次读取值间隔一秒时间 + Delay_MSec(1000); + SendDevice(instrcutLib,&deviceEngine); + sRet=ReadDevice(instrcutLib,&deviceEngine); + + ui->tableWidgetCheck->setItem(i,j,new QTableWidgetItem(sRet)); + dataRes[i][j] = sRet; + } } } if(row>=8 && row <=15){ for(int i=8;i<=15;i++){ for(int j=4;j<=18;j++){ - qsrand(QTime::currentTime().second()); - int rand = qrand()%100;//获取0~10之间的数 - ui->tableWidgetCheck->setItem(i,j,new QTableWidgetItem(rand)); - //currentItem->setText(QString::number(rand)); + //每次读取值间隔一秒时间 + if(Teststate==SyncRunStatus::Stopped){return;}; + Delay_MSec(1000); + SendDevice(instrcutLib,&deviceEngine); + sRet=ReadDevice(instrcutLib,&deviceEngine); + ui->tableWidgetCheck->setItem(i,j,new QTableWidgetItem(sRet)); + dataRes[i][j] = sRet; } } } - QList dataRes = caliDataList->value(sLabel); - dataRes[row][col] = sData; + + for(int i=0;itableWidgetCheck->rowCount()/8;i++){ double dMin=0; @@ -3349,16 +3597,38 @@ } caliDataList->insert(sLabel,dataRes); }else if(sLabel=="均匀性测试"){ + QStringList Head=headTableList->value(sLabel); QTableWidgetItem *currentItem=ui->tableWidgetCheck->currentItem(); + InstructionLib instrcutLibTemp; + QStringList CmdList=instrcutLib->instruct_read.split(";"); if(currentItem==nullptr||currentItem->column()<5||currentItem->column()>14){ ui->tableWidgetCheck->setCurrentCell(0,5); } currentItem=ui->tableWidgetCheck->currentItem(); int row = currentItem->row(); - int col = currentItem->column(); - currentItem->setText(sData); - QList dataRes = caliDataList->value(sLabel); - dataRes[row][col] = sData; + //int col = currentItem->column(); + if(row>=0){ + for(int j=5;j<=12;j++){ + if(Teststate==SyncRunStatus::Stopped){break;}; + Delay_MSec(1000); + QString CurrentColName=Head[j]; + //int rand =0; + if(CurrentColName.contains("O")){ + instrcutLibTemp.instruct_read=CmdList[0]; + SendDevice(instrcutLib,&deviceEngine); + sRet=ReadDevice(&instrcutLibTemp,&deviceEngine); + }else{ + instrcutLibTemp.instruct_read=CmdList[1]; + SendDevice(instrcutLib,&deviceEngine); + sRet=ReadDevice(&instrcutLibTemp,&deviceEngine); + } + + ui->tableWidgetCheck->setItem(row,j,new QTableWidgetItem(sRet)); + dataRes[row][j] = sRet; + } + } + //currentItem->setText(sData); + for(int i=0;itableWidgetCheck->rowCount()/8;i++){ double dMin=0; @@ -3472,3 +3742,42 @@ stabInputdlg->setInputData(dStdValue); } } + +void CheckWindow::on_pushButton_Hidd_clicked() +{ + if(ui->pushButton_Hidd->text()=="隐藏"){ + ui->pushButton_Hidd->setText("显示"); + ui->widget_3->hide(); + ui->widget_4->hide(); + ui->widget_5->hide(); + ui->groupBox_5->hide(); + foreach(QWidget *widget, ui->verticalLayout_6->findChildren()) { + widget->hide(); + } + //ui->groupBoxChart->hide(); + //ui->groupBox_3->hide(); + //ui->groupBox_7->hide(); + }else{ + ui->pushButton_Hidd->setText("隐藏"); + ui->widget_3->show(); + ui->widget_4->show(); + ui->widget_5->show(); + ui->groupBox_5->show(); + foreach(QWidget *widget, ui->verticalLayout_6->findChildren()) { + widget->show(); + } + //ui->groupBoxChart->show(); + //ui->groupBox_3->show(); + //ui->groupBox_7->show(); + } + +} +double CheckWindow::InputDialog(QString Content) +{ + double value; + bool bOk = false; + value = QInputDialog::getDouble(this,"手动测试",Content,0,-100000, 100000,5,&bOk); + if (!bOk) + value=0; + return value; +} diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index b425c1a..7123fac 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -89,6 +89,9 @@ void on_pushButtonGetTemp_clicked(); void readDCStabData(QString sLabel); + void on_pushButton_Hidd_clicked(); + void SignalGeneratortextflow(); + private: void getCheckDevice(bool bInit=true); void getCheckMethod(); @@ -106,7 +109,7 @@ QString transCmd(QString sCmd,QString sLabel,QStringList data,bool reverse=false); void SetStandardCombox(CatDeviceInfor info); void updateStandardTable(); - QString TranDecimals(QString sLabel,QStringList data,double TestValue); + QString TranDecimals(QString sLabel,QStringList data,double TestValue,QString ColName=NULL); void autoAdujstData(QString sLabel,int i,double dStdValue,QList& dataRes); QString TranTypeUnit(QString sUnit); void Oscilloscopetextflow(); @@ -131,6 +134,7 @@ void InItcmd(); void closeCmd(); void CreateCharts(); + double InputDialog(QString Content); private: Ui::CheckWindow *ui; QList programList; diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 87b3df7..99cea8d 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -1117,14 +1117,14 @@ } }else if(sLabel=="均匀性测试"){ for(int i=0;itableWidgetCheck->rowCount()/8;i++){ -// QString sLimit; -// if(dataRes[i*8][2]!="") -// sLimit = dataRes[i*8][2]; -// else -// sLimit = dataRes[i*8][3]; -// ui->tableWidgetCheck->item(i*8,1)->setText(sLimit); - ui->tableWidgetCheck->setSpan(i*8,1,8,1); -// ui->tableWidgetCheck->setSpan(i*8,2,8,2); + ui->tableWidgetCheck->setSpan(i*8,1,8,2); + QString sLimit; + if(dataRes[i*8][1]!="") + sLimit = dataRes[i*8][1]; + else + sLimit = dataRes[i*8][2]; + ui->tableWidgetCheck->item(i*8,1)->setText(sLimit); + ui->tableWidgetCheck->setSpan(i*8,3,8,1); ui->tableWidgetCheck->setSpan(i*8,15,8,1); ui->tableWidgetCheck->setSpan(i*8,16,8,1); ui->tableWidgetCheck->setSpan(i*8,17,8,1); @@ -1592,12 +1592,16 @@ } return NewsUnit; } -QString CheckWindow::TranDecimals(QString sLabel,QStringList data,double TestValue) +QString CheckWindow::TranDecimals(QString sLabel,QStringList data,double TestValue,QString ColName) { QStringList ValueList; + if(ColName==NULL){ ValueList.append("标准值"); ValueList.append("标准器示值"); ValueList.append("标称值"); + }else{ + ValueList.append(ColName); + } int dex=getIndexByHeader(sLabel,ValueList); if(dex==-1) return QString::number(TestValue); @@ -1701,20 +1705,25 @@ return; } else if(iEquipType==5){ - timerChart->start(5000); - /*connectDevice(); + //timerChart->start(5000); + connectDevice(); if(deviceEngine.getState()){ NumberCount=0; timerChart->start(5000); }else{ QMessageBox::warning(this, "警告", "设备未连接!"); - }*/ + } + return; + }else if(iEquipType==10){ + //信号源采集读数 标准器 + this->SignalGeneratortextflow(); return; } connectDevice(); for(int i=0;ikeys().length();i++) { if(Teststate==SyncRunStatus::Stopped){break;}; + //每次循环按钮变化 initCheckTable(i); constsLable= headTableList->keys()[i]; @@ -1728,7 +1737,7 @@ QString newCmd; double dStdValue=FP_INFINITE,dError=0; QString newdStdValue,newdError; - CheckBackColorUpdate(true,i); + //标准器输出 BaseCommonApi::SaveLogInfo(1,QString("标准器输出")); QString sParam; @@ -1737,6 +1746,8 @@ int idx= getIndexByHeader(constsLable,TempValue); if(idx!=-1) sParam = dataRes[i][idx]; + CheckBackColorUpdate(true,i); + //暂时加到这个地方 后面统一编写 if(sParam=="DCI"||sParam=="ACI") { @@ -1779,6 +1790,19 @@ BaseCommonApi::SaveLogInfo(1,QString("被检设备输出")); InstructionLib *instrcutLib = getCmdByCheckName(0,sParam); SendDevice(instrcutLib,&deviceEngine); + //在被检设备读数前 + if(iEquipType==10){ + if(sParam=="功率"){ + //功率开始测试前进行校准 + InstructionLib *PowerPage=getCmdByCheckName(1,"功率界面切换"); + InstructionLib *PowerCali=getCmdByCheckName(1,"功率校准"); + InstructionLib *PowerDevice=getCmdByCheckName(1,constsLable); + QStringList ReadCmd=PowerCali->instruct_read.split(';'); + for(int i=0;i& dataRes){ double dError; QString newdStdValue,newdError,Value; - if(iEquipType==1 || iEquipType==13){ + if(iEquipType==1 || iEquipType==13 ){ if(dStdValue==FP_INFINITE){ bool bOk = false; dStdValue = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,5,&bOk); @@ -1827,12 +1851,16 @@ idx= getIndexByHeader(sLabel,QStrTranQStrList("绝对误差")); if(idx!=-1) { - int idx2= getIndexByHeader(sLabel,QStrTranQStrList("标准值")); + int idx2=getIndexByHeader(sLabel,QStrTranQStrList(("标准值"))); + if(idx2==-1) + idx2=getIndexByHeader(sLabel,QStrTranQStrList("标称值")); + if(idx2!=-1){ double dTmp = dataRes[i][idx2].toDouble(); dError = dStdValue-dTmp; newdError=TranDecimals(sLabel,dataRes[i],dError); dataRes[i][idx] = newdError; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); + } } idx= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); @@ -2573,6 +2601,147 @@ } } } + else if(iEquipType==10){ + if(dStdValue==FP_INFINITE){ + dStdValue=InputDialog("请输入被检示值"); + } + int idx=-1; + QString data,unit; + QString ResultCol; + if(sLabel=="频率" || sLabel=="剩余调频" || sLabel=="调相相偏"){ + idx= getIndexByHeader(sLabel,QStrTranQStrList("指标上限")); + ItemUnitSplit(dataRes[i][idx],data,unit); + if(sLabel=="剩余调频" ){ + ResultCol=sLabel; + newdStdValue=QString::number(dStdValue,'f',4); + }else if(sLabel=="调相相偏"){ + ResultCol="测量值"; + newdStdValue=QString::number(dStdValue,'f',4); + }else{ + ResultCol="测量值"; + newdStdValue=TranDecimals(sLabel,dataRes[i],dStdValue,"指标上限"); + } + idx= getIndexByHeader(sLabel,QStrTranQStrList(ResultCol)); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + }else if(sLabel=="调幅深度" || sLabel=="功率" || sLabel=="调频频偏" ){ + idx= getIndexByHeader(sLabel,QStrTranQStrList("标称值")); + ItemUnitSplit(dataRes[i][idx],data,unit); + if(sLabel=="调频频偏"){ + newdStdValue=QString::number(dStdValue,'f',4); + }else{ + newdStdValue=TranDecimals(sLabel,dataRes[i],dStdValue); + } + idx= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + }else if(sLabel=="剩余调幅"){ + unit="%"; + newdStdValue=QString::number(dStdValue,'f',2); + idx= getIndexByHeader(sLabel,QStrTranQStrList(sLabel)); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + }else if (sLabel=="谐波") { + idx= getIndexByHeader(sLabel,QStrTranQStrList("幅度")); + ItemUnitSplit(dataRes[i][idx],data,unit); + newdStdValue=TranDecimals(sLabel,dataRes[i],dStdValue,"幅度"); + idx= getIndexByHeader(sLabel,QStrTranQStrList("基波幅度")); + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + dataRes[i][idx]=newdStdValue+unit; + //采集谐波 + //找到频率值 + idx= getIndexByHeader(sLabel,QStrTranQStrList("频率")); + QString freq,newunit,HarmonicWaveValue; + double freqtemp; + ItemUnitSplit(dataRes[i][idx],freq,newunit); + if(standardEngine.getState()){ + //找到谐波次数值 + idx= getIndexByHeader(sLabel,QStrTranQStrList("谐波次数")); + if(dataRes[i][idx].contains("/")){ + freqtemp=freq.toDouble()*(1/dataRes[i][idx].mid(1,2).toDouble()); + }else{ + freqtemp=freq.toDouble()*dataRes[i][idx].toDouble(); + } + InstructionLib *instrcutLibstan=getCmdByCheckName(1,sLabel); + InstructionLib tempstan; + QString cmd; + for(QString item:instrcutLibstan->instruct_config.split(";")){ + if(item.contains("{FREQ}")){ + cmd=item; + cmd.replace("{FREQ}",QString::number(freqtemp,'f',3)); + } + } + tempstan.instruct_config=cmd; + SendDevice(&tempstan,&standardEngine); + HarmonicWaveValue= ReadDevice(instrcutLibstan,&standardEngine); + }else{ + dStdValue=InputDialog("请输入谐波幅度值"); + HarmonicWaveValue=QString::number(dStdValue,'f',2); + } + idx= getIndexByHeader(sLabel,QStrTranQStrList("谐波幅度")); + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(HarmonicWaveValue+unit)); //测量值 + dataRes[i][idx]=HarmonicWaveValue+unit; + unit="dBc"; + idx= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + QString Res=QString::number(HarmonicWaveValue.toDouble()-newdStdValue.toDouble()); + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(Res+unit)); //测量值 + dataRes[i][idx]=(newdStdValue.toDouble()-HarmonicWaveValue.toDouble())+unit; + + + }else if (sLabel=="非谐波") { + unit ="dBc"; + newdStdValue=QString::number(dStdValue,'f',1); + idx= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + dataRes[i][idx]=newdStdValue+unit; + } + + idx= getIndexByHeader(sLabel,QStrTranQStrList(("相对误差"))); + if(idx!=-1) + { + int idx2=getIndexByHeader(sLabel,QStrTranQStrList(("标准值"))); + if(idx2==-1) + idx2=getIndexByHeader(sLabel,QStrTranQStrList("标称值")); + if(idx2!=-1){ + double dTmp = dataRes[i][idx2].toDouble(); + dError = (dStdValue-dTmp); + newdError=TranDecimals(sLabel,dataRes[i],dError); + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); + dataRes[i][idx]=newdError; + } + + } + BaseCommonApi::SaveLogInfo(1,QString("转换前 测试值 %1").arg(dStdValue)); + BaseCommonApi::SaveLogInfo(1,QString("转换后 测试值 %1").arg(newdStdValue)); + if(sLabel=="调频频偏" || sLabel=="调相相偏"|| sLabel=="调幅深度"){ + //获取THD值 + unit="%"; + InstructionLib* instrcutLibTHD= getCmdByCheckName(0,"THD"); + if(instrcutLibTHD==nullptr) + { + dStdValue= dStdValue=InputDialog("请输入THD值"); + if(sLabel=="调相相偏"){ + newdStdValue=QString::number(dStdValue,'f',3); + }else{ + newdStdValue=QString::number(dStdValue,'f',2); + } + }else{ + QString ResultThd=ReadDevice(instrcutLibTHD,&deviceEngine); + dStdValue = ResultThd.toDouble(); + if(sLabel=="调相相偏"){ + newdStdValue=QString::number(dStdValue,'f',3); + }else{ + newdStdValue=QString::number(dStdValue,'f',2); + } + + } + idx= getIndexByHeader(sLabel,QStrTranQStrList("THD")); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); + BaseCommonApi::SaveLogInfo(1,QString("转换前 THD 测试值 %1").arg(dStdValue)); + BaseCommonApi::SaveLogInfo(1,QString("转换后 THD 测试值 %1").arg(newdStdValue)); + } + } } void CheckWindow::Oscilloscopetextflow() { @@ -2870,7 +3039,100 @@ while( QTime::currentTime() < _Timer ) QCoreApplication::processEvents(QEventLoop::AllEvents, 100); } +void CheckWindow::SignalGeneratortextflow(){ + Teststate=SyncRunStatus::Running; + if(headTableList->keys().count()==0) + return; + BaseCommonApi::SaveLogInfo(1,QString("-----------------------------------")); + connectDevice(); + for(int i=0;ikeys().length();i++) + { + if(Teststate==SyncRunStatus::Stopped){break;}; + //每次循环按钮变化 + initCheckTable(i); + constsLable= headTableList->keys()[i]; + QList dataRes = caliDataList->value(constsLable); + BaseCommonApi::SaveLogInfo(1,QString("开始 %1 测试").arg(constsLable)); + for (int i = 0; i < dataRes.count(); ++i) { + if(Teststate==SyncRunStatus::Stopped){break;}; + constDataRes=dataRes[i]; + InItcmd(); + QString sRet=""; + QString newCmd; + double dStdValue=FP_INFINITE,dError=0; + QString newdStdValue,newdError; + //获取检定项目 + BaseCommonApi::SaveLogInfo(1,QString("被检设备设置")); + QString sParam,TempValue; + TempValue.append("检定项目"); + int idx= getIndexByHeader(constsLable,QStrTranQStrList(TempValue)); + if(idx!=-1) + sParam = dataRes[i][idx]; + //背景颜色显示 + CheckBackColorUpdate(true,i); + //首先设置被检设备输出 + InstructionLib *instrcutLib = getCmdByCheckName(0,sParam); + SendDevice(instrcutLib,&deviceEngine,true); + //设备标准仪器 + BaseCommonApi::SaveLogInfo(1,QString("标准仪器输出")); + InstructionLib *instrcutLibstan=getCmdByCheckName(1,sParam); + SendDevice(instrcutLibstan,&standardEngine); + if(sParam=="功率"){ + bool IsCli=true; + if(i!=0){ + idx = getIndexByHeader(constsLable,QStrTranQStrList("频率")); + QString FreqValue,PageFreqValue; + FreqValue=Removeunit(dataRes[i][idx]); + PageFreqValue=Removeunit(dataRes[i-1][idx]); + if(PageFreqValue==FreqValue){ + IsCli=false; + } + } + if(IsCli){ + //&& 只在频率切换时进行校准 + //功率校准 + InstructionLib *PowerPage=getCmdByCheckName(1,"功率界面切换"); + InstructionLib *PowerCali=getCmdByCheckName(0,"功率校准"); + InstructionLib *PowerCaliSt=getCmdByCheckName(1,"功率校准"); + if(PowerCali!=nullptr && PowerCaliSt!=nullptr && PowerCaliSt!=nullptr){ + InstructionLib Temp; + InstructionLib TempSt; + for(QString item:PowerCali->instruct_read.split(';')) + { + Temp.instruct_config=item; + SendDevice(&Temp,&deviceEngine); + if(item.contains("20")){ + TempSt.instruct_config=PowerPage->instruct_config.split(";")[0]; + SendDevice(&TempSt,&standardEngine); + TempSt.instruct_config=PowerCaliSt->instruct_config.split(";")[0]; + SendDevice(&TempSt,&standardEngine); + }else{ + TempSt.instruct_config=PowerPage->instruct_config.split(";")[1]; + SendDevice(&TempSt,&standardEngine); + TempSt.instruct_config=PowerCaliSt->instruct_config.split(";")[1]; + SendDevice(&TempSt,&standardEngine); + } + } + } + } + } + sRet=ReadDevice(instrcutLib,&standardEngine); + if(sRet!=""){ + TempValue.clear(); + TempValue.append("单位"); + idx= getIndexByHeader(constsLable,QStrTranQStrList(TempValue)); + dStdValue = transUnit(sRet,dataRes[i][idx]); + } + autoAdujstData(constsLable,i,dStdValue,dataRes); + CheckBackColorUpdate(false,i); + closeCmd(); + Delay_MSec(2000); + } + caliDataList->insert(constsLable,dataRes); + } + closeDevice(); +} void CheckWindow::on_pushButton_pause_clicked() { @@ -3007,8 +3269,8 @@ QString sData2=Value; QString sNewData,sUnit; // 正则表达式匹配数字 - QRegularExpression reLetters("[a-zA-ZΩΜΩ]"); - QRegularExpression reLetters1("[^a-zA-ZΩΜΩ]"); + QRegularExpression reLetters("[a-zA-ZΩΜΩ%]"); + QRegularExpression reLetters1("[^a-zA-ZΩΜΩ%]"); data=sData2.replace(reLetters,""); unit= Value.replace(reLetters1,""); @@ -3030,7 +3292,7 @@ } QString CheckWindow::Removeunit(QString data) { - QRegularExpression re("[a-zA-ZΩΜΩ]"); + QRegularExpression re("[a-zA-ZΩΜΩ%]"); return data.replace(re,""); } bool CheckWindow::showDialog(QString title,QString mess) @@ -3223,49 +3485,24 @@ InstructionLib instrcutLibTemp; QStringList CmdList=instrcutLib->instruct_read.split(";"); - if(NumberCount%2==0){ + /*if(NumberCount%2==0){ ch=0; }else{ ch=1; - } - instrcutLibTemp.instruct_read=CmdList[ch]; + }*/ + //默认只读移动的温度计 + instrcutLibTemp.instruct_read=CmdList[1]; SendDevice(instrcutLib,&deviceEngine); - sRet="通道"+QString::number(ch)+":"+ReadDevice(&instrcutLibTemp,&deviceEngine); + sRet=ReadDevice(&instrcutLibTemp,&deviceEngine); + //sRet="通道"+QString::number(ch)+":"+ReadDevice(&instrcutLibTemp,&deviceEngine); NumberCount++; } - - /* - if(instrcutLib!=nullptr){ - QStringList sList = instrcutLib->instruct_config.split(";"); - if(sList.length()>0){ - for (QString& sCmd : sList){ - //newCmd = transCmd(sCmd,sLabel,dataRes[i]); - newCmd = sCmd; - if(newCmd!=""){ - deviceEngine.sendData(newCmd); - qDebug() << "config cmds:" << newCmd; - } - } - } - - //newCmd = transCmd(instrcutLib->instruct_read,sLabel,dataRes[i]); - newCmd =instrcutLib->instruct_read; - if(newCmd!=""){ - qDebug() << "query cmds:" << newCmd; - sRet = deviceEngine.queryData(newCmd); - //TempValue.clear(); - //TempValue.append("单位"); - //idx= getIndexByHeader(sLabel,TempValue); - //dStdValue = transUnit(sRet,dataRes[i][idx]); - } - } - */ } //获取当前时间 QDateTime currentTime = QDateTime::currentDateTime(); //获取随机数 - qsrand(QTime::currentTime().second()); - int rand = qrand()%100;//获取0~10之间的数 + //qsrand(QTime::currentTime().second()); + //int rand = qrand()%100;//获取0~10之间的数 //获取初始化的qchart QChart *qchart =(QChart *)chartView->chart(); @@ -3278,7 +3515,7 @@ qchart->axisX()->setMin(QDateTime::currentDateTime().addSecs(-1*30)); qchart->axisX()->setMax(QDateTime::currentDateTime().addSecs(1*30)); - ui->lineEditTemp->setText(QString::number(rand)); + ui->lineEditTemp->setText(sRet); } } @@ -3288,6 +3525,9 @@ QString sData = ui->lineEditTemp->text(); if(sData.contains("通道")) sData=sData.mid(4,sData.count()); + InstructionLib *instrcutLib = getCmdByCheckName(0,sLabel); + QString sRet; + QList dataRes = caliDataList->value(sLabel); if(sLabel=="波动性测试"){ QTableWidgetItem *currentItem=ui->tableWidgetCheck->currentItem(); if(currentItem==nullptr||currentItem->column()<4||currentItem->column()>18){ @@ -3299,26 +3539,34 @@ if(row>=0 && row <=7){ for(int i=0;i<=7;i++){ for(int j=4;j<=18;j++){ - qsrand(QTime::currentTime().second()); - int rand = qrand()%100;//获取0~10之间的数4 - ui->tableWidgetCheck->setItem(i,j,new QTableWidgetItem(rand)); - //currentItem->setText(); + if(Teststate==SyncRunStatus::Stopped){return;}; + //每次读取值间隔一秒时间 + Delay_MSec(1000); + SendDevice(instrcutLib,&deviceEngine); + sRet=ReadDevice(instrcutLib,&deviceEngine); + + ui->tableWidgetCheck->setItem(i,j,new QTableWidgetItem(sRet)); + dataRes[i][j] = sRet; + } } } if(row>=8 && row <=15){ for(int i=8;i<=15;i++){ for(int j=4;j<=18;j++){ - qsrand(QTime::currentTime().second()); - int rand = qrand()%100;//获取0~10之间的数 - ui->tableWidgetCheck->setItem(i,j,new QTableWidgetItem(rand)); - //currentItem->setText(QString::number(rand)); + //每次读取值间隔一秒时间 + if(Teststate==SyncRunStatus::Stopped){return;}; + Delay_MSec(1000); + SendDevice(instrcutLib,&deviceEngine); + sRet=ReadDevice(instrcutLib,&deviceEngine); + ui->tableWidgetCheck->setItem(i,j,new QTableWidgetItem(sRet)); + dataRes[i][j] = sRet; } } } - QList dataRes = caliDataList->value(sLabel); - dataRes[row][col] = sData; + + for(int i=0;itableWidgetCheck->rowCount()/8;i++){ double dMin=0; @@ -3349,16 +3597,38 @@ } caliDataList->insert(sLabel,dataRes); }else if(sLabel=="均匀性测试"){ + QStringList Head=headTableList->value(sLabel); QTableWidgetItem *currentItem=ui->tableWidgetCheck->currentItem(); + InstructionLib instrcutLibTemp; + QStringList CmdList=instrcutLib->instruct_read.split(";"); if(currentItem==nullptr||currentItem->column()<5||currentItem->column()>14){ ui->tableWidgetCheck->setCurrentCell(0,5); } currentItem=ui->tableWidgetCheck->currentItem(); int row = currentItem->row(); - int col = currentItem->column(); - currentItem->setText(sData); - QList dataRes = caliDataList->value(sLabel); - dataRes[row][col] = sData; + //int col = currentItem->column(); + if(row>=0){ + for(int j=5;j<=12;j++){ + if(Teststate==SyncRunStatus::Stopped){break;}; + Delay_MSec(1000); + QString CurrentColName=Head[j]; + //int rand =0; + if(CurrentColName.contains("O")){ + instrcutLibTemp.instruct_read=CmdList[0]; + SendDevice(instrcutLib,&deviceEngine); + sRet=ReadDevice(&instrcutLibTemp,&deviceEngine); + }else{ + instrcutLibTemp.instruct_read=CmdList[1]; + SendDevice(instrcutLib,&deviceEngine); + sRet=ReadDevice(&instrcutLibTemp,&deviceEngine); + } + + ui->tableWidgetCheck->setItem(row,j,new QTableWidgetItem(sRet)); + dataRes[row][j] = sRet; + } + } + //currentItem->setText(sData); + for(int i=0;itableWidgetCheck->rowCount()/8;i++){ double dMin=0; @@ -3472,3 +3742,42 @@ stabInputdlg->setInputData(dStdValue); } } + +void CheckWindow::on_pushButton_Hidd_clicked() +{ + if(ui->pushButton_Hidd->text()=="隐藏"){ + ui->pushButton_Hidd->setText("显示"); + ui->widget_3->hide(); + ui->widget_4->hide(); + ui->widget_5->hide(); + ui->groupBox_5->hide(); + foreach(QWidget *widget, ui->verticalLayout_6->findChildren()) { + widget->hide(); + } + //ui->groupBoxChart->hide(); + //ui->groupBox_3->hide(); + //ui->groupBox_7->hide(); + }else{ + ui->pushButton_Hidd->setText("隐藏"); + ui->widget_3->show(); + ui->widget_4->show(); + ui->widget_5->show(); + ui->groupBox_5->show(); + foreach(QWidget *widget, ui->verticalLayout_6->findChildren()) { + widget->show(); + } + //ui->groupBoxChart->show(); + //ui->groupBox_3->show(); + //ui->groupBox_7->show(); + } + +} +double CheckWindow::InputDialog(QString Content) +{ + double value; + bool bOk = false; + value = QInputDialog::getDouble(this,"手动测试",Content,0,-100000, 100000,5,&bOk); + if (!bOk) + value=0; + return value; +} diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index b425c1a..7123fac 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -89,6 +89,9 @@ void on_pushButtonGetTemp_clicked(); void readDCStabData(QString sLabel); + void on_pushButton_Hidd_clicked(); + void SignalGeneratortextflow(); + private: void getCheckDevice(bool bInit=true); void getCheckMethod(); @@ -106,7 +109,7 @@ QString transCmd(QString sCmd,QString sLabel,QStringList data,bool reverse=false); void SetStandardCombox(CatDeviceInfor info); void updateStandardTable(); - QString TranDecimals(QString sLabel,QStringList data,double TestValue); + QString TranDecimals(QString sLabel,QStringList data,double TestValue,QString ColName=NULL); void autoAdujstData(QString sLabel,int i,double dStdValue,QList& dataRes); QString TranTypeUnit(QString sUnit); void Oscilloscopetextflow(); @@ -131,6 +134,7 @@ void InItcmd(); void closeCmd(); void CreateCharts(); + double InputDialog(QString Content); private: Ui::CheckWindow *ui; QList programList; diff --git a/softwareDirectory/AutoVerScheme/checkwindow.ui b/softwareDirectory/AutoVerScheme/checkwindow.ui index a753c93..9a7ddf0 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.ui +++ b/softwareDirectory/AutoVerScheme/checkwindow.ui @@ -1700,6 +1700,20 @@ + + + + 12 + 75 + true + + + + 隐藏 + + + + Qt::Horizontal @@ -1990,6 +2004,15 @@ + + true + + + + 1000000 + 1000000 + + background-color: rgb(55, 83, 123);