diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 98a2833..77ca2c6 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -1911,7 +1911,7 @@ //Delay_MSec(2000); } - if(iEquipType==2){ + else if(iEquipType==2){ // if(qIsFinite(dStdValue)){ // bool bOk = false; // dStdValue = QInputDialog::getDouble(this,"手动测试","请输入测量值",0,-100000, 100000,5,&bOk); @@ -2152,8 +2152,403 @@ } } } - }else if(iEquipType==13) + }else if(iEquipType==9) { + QStringList heads; + QString data,unit; + if(sLabel=="中频带宽转换偏差"||sLabel=="平均噪声电平"||sLabel=="谐波失真"||sLabel=="1db增益压缩点"){ + unit = "dBm"; + }else if(sLabel=="输入频响"||sLabel=="输入衰减"){ + int idx= getIndexByHeader(constsLable,QStrTranQStrList("指标下限")); + QString value=dataRes[i][idx]; + ItemUnitSplit(value,data,unit); + }else{ + int idx= getIndexByHeader(constsLable,QStrTranQStrList("标称值")); + QString value=dataRes[i][idx]; + ItemUnitSplit(value,data,unit); + } + if(sLabel=="中频带宽"||sLabel=="扫频宽度"){ + heads <<"fl1"<<"fr1"<<"fl2"<<"fr2"<<"fl3"<<"fr3"; + + }else if(sLabel=="中频带宽转换偏差"||sLabel=="平均噪声电平"||sLabel=="1db增益压缩点"){ + heads <<"测量值"; + }else if(sLabel=="参考电平"||sLabel=="垂直刻度"){ + heads <<"信号源幅度"; + } + else if(sLabel=="频率显示"||sLabel=="输入频响"||sLabel=="输入衰减"||sLabel=="校准信号"){ + heads <<"测量值1"<<"测量值2"<<"测量值3"; + }else if(sLabel=="谐波失真"){ + heads <<"基波幅度"<<"二次谐波幅度"<<"三次谐波幅度"<<"四次谐波幅度"; + } + for(QString &head:heads){ + QString sTips= "请调节频谱仪至额定状态后,点击测量:"+head; + + DialogDCStabInput dlg(this,sLabel,sTips); + dlg.dataRes = &dataRes[i]; + stabInputdlg = &dlg; + connect(&dlg,SIGNAL(readData(QString)),this,SLOT(readDCStabData(QString))); + dlg.setModal(true); + if(dlg.exec()==QDialog::Accepted){ + dStdValue = dlg.getInputData(); + newdStdValue= TranDecimals(sLabel,dataRes[i],dStdValue); + int idx= getIndexByHeader(sLabel,QStrTranQStrList(head)); + if(idx!=-1) + { + dataRes[i][idx] = newdStdValue; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); + } + //计算结果,判断是否合格 + if(sLabel=="中频带宽"){ + double dMean=0; + int idx2=getIndexByHeader(sLabel,QStrTranQStrList("fr1")); + dError = dataRes[i][idx2].toDouble(); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("fl1")); + dError -=dataRes[i][idx2].toDouble(); + dMean+=dError; + newdError=TranDecimals(sLabel,dataRes[i],dError); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("△f1")); + dataRes[i][idx2] = newdError; + ui->tableWidgetCheck->setItem(i,idx2,new QTableWidgetItem(newdError+unit)); + + idx2=getIndexByHeader(sLabel,QStrTranQStrList("fr2")); + dError = dataRes[i][idx2].toDouble(); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("fl2")); + dError -=dataRes[i][idx2].toDouble(); + dMean+=dError; + newdError=TranDecimals(sLabel,dataRes[i],dError); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("△f2")); + dataRes[i][idx2] = newdError; + ui->tableWidgetCheck->setItem(i,idx2,new QTableWidgetItem(newdError+unit)); + + idx2=getIndexByHeader(sLabel,QStrTranQStrList("fr3")); + dError = dataRes[i][idx2].toDouble(); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("fl3")); + dError -=dataRes[i][idx2].toDouble(); + dMean+=dError; + dMean/=3; + newdError=TranDecimals(sLabel,dataRes[i],dError); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("△f3")); + dataRes[i][idx2] = newdError; + ui->tableWidgetCheck->setItem(i,idx2,new QTableWidgetItem(newdError+unit)); + + newdError=QString::number(dMean, 'f', 2); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("均值")); + dataRes[i][idx2] = newdError; + ui->tableWidgetCheck->setItem(i,idx2,new QTableWidgetItem(newdError+unit)); + + QString sLow,sUpper,sUnit; + idx2=getIndexByHeader(sLabel,QStrTranQStrList("指标下限")); + ItemUnitSplit(dataRes[i][idx2],sLow,sUnit); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("指标上限")); + ItemUnitSplit(dataRes[i][idx2],sUpper,sUnit); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("结论")); + if(dMean>=sLow.toDouble()&&dMean<=sUpper.toDouble()){ + sUnit = "符合指标"; + }else{ + sUnit = "不符合指标"; + } + dataRes[i][idx2] = sUnit; + ui->tableWidgetCheck->setItem(i,idx2,new QTableWidgetItem(sUnit)); + }else if(sLabel=="扫频宽度"){ + double dMean=0; + int idx2=getIndexByHeader(sLabel,QStrTranQStrList("fr1")); + dError = dataRes[i][idx2].toDouble(); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("fl1")); + dError -=dataRes[i][idx2].toDouble(); + dMean+=dError; + + idx2=getIndexByHeader(sLabel,QStrTranQStrList("fr2")); + dError = dataRes[i][idx2].toDouble(); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("fl2")); + dError -=dataRes[i][idx2].toDouble(); + dMean+=dError; + + idx2=getIndexByHeader(sLabel,QStrTranQStrList("fr3")); + dError = dataRes[i][idx2].toDouble(); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("fl3")); + dError -=dataRes[i][idx2].toDouble(); + dMean+=dError; + dMean/=3; + + newdError=QString::number(dMean, 'f', 5); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("均值")); + dataRes[i][idx2] = newdError; + ui->tableWidgetCheck->setItem(i,idx2,new QTableWidgetItem(newdError+unit)); + + QString sLow,sUpper,sUnit; + idx2=getIndexByHeader(sLabel,QStrTranQStrList("指标下限")); + ItemUnitSplit(dataRes[i][idx2],sLow,sUnit); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("指标上限")); + ItemUnitSplit(dataRes[i][idx2],sUpper,sUnit); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("结论")); + if(dMean>=sLow.toDouble()&&dMean<=sUpper.toDouble()){ + sUnit = "符合指标"; + }else{ + sUnit = "不符合指标"; + } + dataRes[i][idx2] = sUnit; + ui->tableWidgetCheck->setItem(i,idx2,new QTableWidgetItem(sUnit)); + } + else if(sLabel=="中频带宽转换偏差"){ + int idx2=getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + QString sLow,sUpper,sUnit; + //参考点 + if(i==0){ + idx2=getIndexByHeader(sLabel,QStrTranQStrList("转换偏差")); + dataRes[i][idx2] = "/"; + ui->tableWidgetCheck->setItem(i,idx2,new QTableWidgetItem("/")); + sUnit="参考点"; + }else{ + dError = dataRes[i][idx2].toDouble()-dataRes[0][idx2].toDouble(); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("转换偏差")); + newdError = QString::number(dError, 'f', 2); + dataRes[i][idx2] = newdError; + ui->tableWidgetCheck->setItem(i,idx2,new QTableWidgetItem(newdError+"dB")); + + idx2=getIndexByHeader(sLabel,QStrTranQStrList("指标下限")); + ItemUnitSplit(dataRes[i][idx2],sLow,sUnit); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("指标上限")); + ItemUnitSplit(dataRes[i][idx2],sUpper,sUnit); + if(dError>=sLow.toDouble()&&dError<=sUpper.toDouble()){ + sUnit = "符合指标"; + }else{ + sUnit = "不符合指标"; + } + } + idx2=getIndexByHeader(sLabel,QStrTranQStrList("结论")); + dataRes[i][idx2] = sUnit; + ui->tableWidgetCheck->setItem(i,idx2,new QTableWidgetItem(sUnit)); + } + else if(sLabel=="参考电平"){ + int idx2=getIndexByHeader(sLabel,QStrTranQStrList("标准衰减器衰减量")); + QString sLow,sUpper,sUnit; + //参考点 + if(i==0){ + sUnit="参考点"; + }else{ + ItemUnitSplit(dataRes[i][idx2],sLow,sUnit); + dError = sLow.toDouble(); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("信号源幅度")); + dError = dError+dataRes[0][idx2].toDouble()-dataRes[i][idx2].toDouble(); + newdError = QString::number(dError, 'f', 2); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + dataRes[i][idx2] = newdError; + ui->tableWidgetCheck->setItem(i,idx2,new QTableWidgetItem(newdError+unit)); + + idx2=getIndexByHeader(sLabel,QStrTranQStrList("指标下限")); + ItemUnitSplit(dataRes[i][idx2],sLow,sUnit); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("指标上限")); + ItemUnitSplit(dataRes[i][idx2],sUpper,sUnit); + if(dError>=sLow.toDouble()&&dError<=sUpper.toDouble()){ + sUnit = "符合指标"; + }else{ + sUnit = "不符合指标"; + } + } + idx2=getIndexByHeader(sLabel,QStrTranQStrList("结论")); + dataRes[i][idx2] = sUnit; + ui->tableWidgetCheck->setItem(i,idx2,new QTableWidgetItem(sUnit)); + } + else if(sLabel=="垂直刻度"){ + int idx2=getIndexByHeader(sLabel,QStrTranQStrList("标准衰减器衰减量")); + QString sLow,sUpper,sUnit; + //参考点 + if(i==0){ + sUnit="参考点"; + }else{ + ItemUnitSplit(dataRes[i][idx2],sUpper,sUnit); + ItemUnitSplit(dataRes[0][idx2],sLow,sUnit); + dError = sUpper.toDouble()-sLow.toDouble(); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("信号源幅度")); + dError = dError+dataRes[i][idx2].toDouble()-dataRes[0][idx2].toDouble(); + newdError = QString::number(dError, 'f', 2); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + dataRes[i][idx2] = newdError; + ui->tableWidgetCheck->setItem(i,idx2,new QTableWidgetItem(newdError+unit)); + + idx2=getIndexByHeader(sLabel,QStrTranQStrList("指标下限")); + ItemUnitSplit(dataRes[i][idx2],sLow,sUnit); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("指标上限")); + ItemUnitSplit(dataRes[i][idx2],sUpper,sUnit); + if(dError>=sLow.toDouble()&&dError<=sUpper.toDouble()){ + sUnit = "符合指标"; + }else{ + sUnit = "不符合指标"; + } + } + idx2=getIndexByHeader(sLabel,QStrTranQStrList("结论")); + dataRes[i][idx2] = sUnit; + ui->tableWidgetCheck->setItem(i,idx2,new QTableWidgetItem(sUnit)); + } + else if(sLabel=="平均噪声电平"){ + int idx2=getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + dError = dataRes[i][idx2].toDouble(); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("修正值")); + dError += dataRes[i][idx2].toDouble(); + QString sUpper,sUnit; + idx2=getIndexByHeader(sLabel,QStrTranQStrList("修正后结果")); + newdError = QString::number(dError, 'f', 2); + dataRes[i][idx2] = newdError; + ui->tableWidgetCheck->setItem(i,idx2,new QTableWidgetItem(newdError+unit)); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("指标上限")); + ItemUnitSplit(dataRes[i][idx2],sUpper,sUnit); + if(dErrortableWidgetCheck->setItem(i,idx2,new QTableWidgetItem(sUnit)); + } + else if(sLabel=="1db增益压缩点"){ + int idx2=getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + dError = dataRes[i][idx2].toDouble(); + QString sUpper,sUnit; + idx2=getIndexByHeader(sLabel,QStrTranQStrList("输入衰减")); + ItemUnitSplit(dataRes[i][idx2],sUpper,sUnit); + dError -= sUpper.toDouble(); + newdError = QString::number(dError, 'f', 2); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("增益压缩")); + dataRes[i][idx2] = newdError; + ui->tableWidgetCheck->setItem(i,idx2,new QTableWidgetItem(newdError+unit)); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("技术指标")); + ItemUnitSplit(dataRes[i][idx2],sUpper,sUnit); + if(dError>sUpper.toDouble()){ + sUnit = "符合指标"; + }else{ + sUnit = "不符合指标"; + } + idx2=getIndexByHeader(sLabel,QStrTranQStrList("结论")); + dataRes[i][idx2] = sUnit; + ui->tableWidgetCheck->setItem(i,idx2,new QTableWidgetItem(sUnit)); + } + else if(sLabel=="频率显示"||sLabel=="校准信号") + { + double dMean=0; + int idx2=getIndexByHeader(sLabel,QStrTranQStrList("测量值1")); + dMean += dataRes[i][idx2].toDouble(); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("测量值2")); + dMean += dataRes[i][idx2].toDouble(); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("测量值3")); + dMean += dataRes[i][idx2].toDouble(); + dMean/=3; + + if(sLabel=="频率显示"){ + newdError=QString::number(dMean, 'f', 6); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("均值")); + }else{ + newdError=QString::number(dMean, 'f', 3); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("测量结果")); + } + dataRes[i][idx2] = newdError; + ui->tableWidgetCheck->setItem(i,idx2,new QTableWidgetItem(newdError+unit)); + + QString sLow,sUpper,sUnit; + idx2=getIndexByHeader(sLabel,QStrTranQStrList("指标下限")); + ItemUnitSplit(dataRes[i][idx2],sLow,sUnit); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("指标上限")); + ItemUnitSplit(dataRes[i][idx2],sUpper,sUnit); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("结论")); + if(dMean>=sLow.toDouble()&&dMean<=sUpper.toDouble()){ + sUnit = "符合指标"; + }else{ + sUnit = "不符合指标"; + } + dataRes[i][idx2] = sUnit; + ui->tableWidgetCheck->setItem(i,idx2,new QTableWidgetItem(sUnit)); + } + else if(sLabel=="输入频响"||sLabel=="输入衰减") + { + double dMean=0; + int idx2=getIndexByHeader(sLabel,QStrTranQStrList("测量值1")); + dMean += dataRes[i][idx2].toDouble(); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("测量值2")); + dMean += dataRes[i][idx2].toDouble(); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("测量值3")); + dMean += dataRes[i][idx2].toDouble(); + dMean/=3; + + newdError=QString::number(dMean, 'f', 2); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("均值")); + dataRes[i][idx2] = newdError; + ui->tableWidgetCheck->setItem(i,idx2,new QTableWidgetItem(newdError+unit)); + + QString sLow,sUpper,sUnit; + //参考点 + if(i==0){ + idx2=getIndexByHeader(sLabel,QStrTranQStrList("输入频响")); + dataRes[i][idx2] = newdError; + ui->tableWidgetCheck->setItem(i,idx2,new QTableWidgetItem(newdError+unit)); + sUnit="参考点"; + }else{ + idx2=getIndexByHeader(sLabel,QStrTranQStrList("输入频响")); + dError = dataRes[0][idx2].toDouble()-dMean; + newdError = QString::number(dError, 'f', 2); + dataRes[i][idx2] = newdError; + ui->tableWidgetCheck->setItem(i,idx2,new QTableWidgetItem(newdError+unit)); + + idx2=getIndexByHeader(sLabel,QStrTranQStrList("指标下限")); + ItemUnitSplit(dataRes[i][idx2],sLow,sUnit); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("指标上限")); + ItemUnitSplit(dataRes[i][idx2],sUpper,sUnit); + if(dError>=sLow.toDouble()&&dError<=sUpper.toDouble()){ + sUnit = "符合指标"; + }else{ + sUnit = "不符合指标"; + } + } + idx2=getIndexByHeader(sLabel,QStrTranQStrList("结论")); + dataRes[i][idx2] = sUnit; + ui->tableWidgetCheck->setItem(i,idx2,new QTableWidgetItem(sUnit)); + } + else if(sLabel=="谐波失真"){ + QString sUpper2,sUpper3,sUpper4,sBase,sUnit,sResult; + + int idx2=getIndexByHeader(sLabel,QStrTranQStrList("二次谐波失真指标上限")); + ItemUnitSplit(dataRes[i][idx2],sUpper2,sUnit); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("三次谐波失真指标上限")); + ItemUnitSplit(dataRes[i][idx2],sUpper3,sUnit); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("四次谐波失真指标上限")); + ItemUnitSplit(dataRes[i][idx2],sUpper4,sUnit); + + idx2=getIndexByHeader(sLabel,QStrTranQStrList("基波幅度")); + ItemUnitSplit(dataRes[i][idx2],sBase,sUnit); + + sResult = "符合指标"; + idx2=getIndexByHeader(sLabel,QStrTranQStrList("二次谐波幅度")); + dError = dataRes[i][idx2].toDouble()-sBase.toDouble(); + newdError=QString::number(dError, 'f', 2); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("二次谐波失真")); + dataRes[i][idx2] = newdError; + ui->tableWidgetCheck->setItem(i,idx2,new QTableWidgetItem(newdError+"dBc")); + if(dError>=sUpper2.toDouble()){ + sResult = "不符合指标"; + } + idx2=getIndexByHeader(sLabel,QStrTranQStrList("三次谐波幅度")); + dError = dataRes[i][idx2].toDouble()-sBase.toDouble(); + newdError=QString::number(dError, 'f', 2); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("三次谐波失真")); + dataRes[i][idx2] = newdError; + ui->tableWidgetCheck->setItem(i,idx2,new QTableWidgetItem(newdError+"dBc")); + if(dError>=sUpper3.toDouble()){ + sResult = "不符合指标"; + } + idx2=getIndexByHeader(sLabel,QStrTranQStrList("四次谐波幅度")); + dError = dataRes[i][idx2].toDouble()-sBase.toDouble(); + newdError=QString::number(dError, 'f', 2); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("四次谐波失真")); + dataRes[i][idx2] = newdError; + ui->tableWidgetCheck->setItem(i,idx2,new QTableWidgetItem(newdError+"dBc")); + if(dError>=sUpper4.toDouble()){ + sResult = "不符合指标"; + } + idx2=getIndexByHeader(sLabel,QStrTranQStrList("结论")); + dataRes[i][idx2] = sResult; + ui->tableWidgetCheck->setItem(i,idx2,new QTableWidgetItem(sResult)); + } + } + } } } void CheckWindow::Oscilloscopetextflow() @@ -3003,14 +3398,28 @@ } void CheckWindow::readDCStabData(QString sLabel){ - qDebug() << sLabel; - QString sRole = "数字多用表"; - if(sLabel=="纹波电压") - sRole="示波器"; - BaseCommonApi::SaveLogInfo(1,QString("可编程交流电源读取数值")); - VisaCommonEngine engineRole=getVisaCommbyRoleName("sRole"); //角色 - InstructionLib *instrcutLibRole=getCmdByRoleName("sRole",sLabel); - QString sRet = ReadDevice(instrcutLibRole,&engineRole); + QString sRet; + if(iEquipType==2){ + qDebug() << sLabel; + QString sRole = "电压表"; + if(sLabel=="纹波电压") + sRole="示波器"; + else if(sLabel=="电流示值误差(直接测量)") + sRole ="电流表"; + BaseCommonApi::SaveLogInfo(1,QString("可编程交流电源读取数值")); + VisaCommonEngine engineRole=getVisaCommbyRoleName("sRole"); //角色 + InstructionLib *instrcutLibRole=getCmdByRoleName("sRole",sLabel); + sRet = ReadDevice(instrcutLibRole,&engineRole); + }else{ + BaseCommonApi::SaveLogInfo(1,QString("被检设备输出")); + int idx= getIndexByHeader(sLabel,QStrTranQStrList("检定项目")); + QString sParam; + if(idx!=-1) + sParam = stabInputdlg->dataRes->at(idx); + InstructionLib *instrcutLib = getCmdByCheckName(0,sParam); + SendDevice(instrcutLib,&deviceEngine); + sRet=ReadDevice(instrcutLib,&deviceEngine); + } //sRet="0.005"; if(sRet!=""){ QStringList TempValue;