diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index d21464f..710cbc6 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -6155,7 +6155,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[3] + row[4]);//标称值 QString temp_low = QString::number(row[3].toDouble() - row[12].toDouble()); Data.append(temp_low+ row[4]);//指标下限 @@ -6175,7 +6175,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[3] + row[4]);//标称值 QString temp_low = QString::number(row[3].toDouble() - row[12].toDouble()); @@ -6195,7 +6195,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//高通滤波 Data.append(row[17] + row[18]);//低通滤波 @@ -6220,7 +6220,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//高通滤波 Data.append(row[17] + row[18]);//低通滤波 @@ -6244,7 +6244,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//高通滤波 Data.append(row[17] + row[18]);//低通滤波 @@ -6261,7 +6261,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//高通滤波 Data.append(row[17] + row[18]);//低通滤波 @@ -6278,7 +6278,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[5] + row[6]);//幅度 Data.append(row[24]);//谐波次数 @@ -6298,7 +6298,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//高通滤波 Data.append(row[17] + row[18]);//低通滤波 @@ -6322,7 +6322,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//功率 Data.append(row[29] + row[30]);//偏移频率 diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index d21464f..710cbc6 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -6155,7 +6155,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[3] + row[4]);//标称值 QString temp_low = QString::number(row[3].toDouble() - row[12].toDouble()); Data.append(temp_low+ row[4]);//指标下限 @@ -6175,7 +6175,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[3] + row[4]);//标称值 QString temp_low = QString::number(row[3].toDouble() - row[12].toDouble()); @@ -6195,7 +6195,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//高通滤波 Data.append(row[17] + row[18]);//低通滤波 @@ -6220,7 +6220,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//高通滤波 Data.append(row[17] + row[18]);//低通滤波 @@ -6244,7 +6244,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//高通滤波 Data.append(row[17] + row[18]);//低通滤波 @@ -6261,7 +6261,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//高通滤波 Data.append(row[17] + row[18]);//低通滤波 @@ -6278,7 +6278,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[5] + row[6]);//幅度 Data.append(row[24]);//谐波次数 @@ -6298,7 +6298,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//高通滤波 Data.append(row[17] + row[18]);//低通滤波 @@ -6322,7 +6322,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//功率 Data.append(row[29] + row[30]);//偏移频率 diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index c723884..98a2833 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -300,7 +300,6 @@ Qt::CheckState state = ui->tableWidgetStd->item(i,0)->checkState(); if(state == Qt::Checked){ StandarIdList.append(catIdList[i]); - break; } } if(catIdList.count()==1) @@ -361,8 +360,8 @@ idList.clear(); } - if(programInfo.standard_device_id!=""){ - idList = programInfo.standard_device_id.split(","); + if(StandarIdList.count()!=0){ + idList =StandarIdList; for(const QString& id : idList) { @@ -1659,7 +1658,7 @@ BaseCommonApi::SaveLogInfo(1,QString("-----------------------------------")); if(iEquipType==13) { - connectDevice(); + //connectDevice(); this->Oscilloscopetextflow(); return; @@ -1685,6 +1684,7 @@ else if(iEquipType==5){ connectDevice(); if(deviceEngine.getState()){ + NumberCount=0; timerChart->start(5000); }else{ QMessageBox::warning(this, "警告", "设备未连接!"); @@ -1793,7 +1793,8 @@ } // ItemUnitSplit - newdStdValue= TranDecimals(sLabel, dataRes[i],dStdValue); + //newdStdValue= TranDecimals(sLabel, dataRes[i],dStdValue); + newdStdValue=QString::number(dStdValue,'f',4); //QStringList ResultName=getsParambyHeader(sParam); int idx= getIndexByHeader(sLabel,QStrTranQStrList("示值")); if(idx!=-1) @@ -1811,11 +1812,18 @@ dataRes[i][idx] = newdError; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); } + idx= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); if(idx!=-1) { dataRes[i][idx] = newdStdValue; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //测量值 + if(sLabel=="校准信号"){ + int topidx= getIndexByHeader(constsLable,QStrTranQStrList("顶部测量值")); + int bomidx= getIndexByHeader(constsLable,QStrTranQStrList("底部测量值")); + ui->tableWidgetCheck->setItem(i,topidx,new QTableWidgetItem(dataRes[i][topidx])); //测量值 + ui->tableWidgetCheck->setItem(i,bomidx,new QTableWidgetItem(dataRes[i][bomidx])); //测量值 + } } idx= getIndexByHeader(sLabel,QStrTranQStrList(("相对误差"))); if(idx!=-1) @@ -2165,6 +2173,7 @@ BaseCommonApi::SaveLogInfo(1,QString("开始 %1 %2 测试").arg(chList[_ch]).arg(constsLable)); QString sParam; QString ValueUnit; + double TopValue,BottomValue; InstructionLib *instrcutLibOhm; for (int i = 0; i < dataRes.count(); ++i) { TextCount=1; @@ -2184,6 +2193,7 @@ sParam = dataRes[i][idx]; InstructionLib *instrcutLibbiz=getCmdByCheckName(0,sParam); InstructionLib *instrcutLibstan=getCmdByCheckName(1,sParam); + int idxitem= getIndexByHeader(constsLable,QStrTranQStrList("项目")); //INIT 被检设备 - 标准设备 instrcutLibOhm= getCmdByCheckName(0,"电阻"); if(deviceEngine.getState()) @@ -2218,30 +2228,38 @@ for (int d=0;dinstruct_config.split(";"); - if(sList.length()>0){ - for (QString& sCmd : sList){ - if(d==1&& sCmd.contains("{BW}")) - { - sCmd.replace("{BW}","50000"); - } - newCmd = transCmd(sCmd,constsLable,constDataRes); - - if(newCmd!=""){ - standardEngine.sendData(newCmd); - qDebug() << "standard cmds:" << newCmd; - } - } - } + if(d==1 && sParam=="频带宽度"){ + QStringList sList = instrcutLibstan->instruct_config.split(";"); + for(QString &sCmd:sList){ + sCmd.replace("{BW}","50000"); + break; } } + QString LEVEL; + QString STVAL; + if(d==1 && sParam.contains("触发灵敏度")){ + QStringList sList = instrcutLibstan->instruct_config.split(";"); + for(QString &sCmd:sList){ + if(sCmd.contains("{LEVEL}")){ + LEVEL=sCmd; + sCmd.replace("{LEVEL}","0"); + } + else if(sCmd.contains("{STVAL}")) + { + STVAL=sCmd; + sCmd.replace("{STVAL}","1"); + } + + } + } + if(sParam!="校准信号") + { + SendDevice(instrcutLibstan,&standardEngine); //被检设备读数 BaseCommonApi::SaveLogInfo(1,QString("被检设备输出")); SendDevice(instrcutLibbiz,&deviceEngine); sRet=ReadDevice(instrcutLibbiz,&deviceEngine); + } if(sParam=="输入电阻"){ BaseCommonApi::SaveLogInfo(1,QString("数字万用表控制")); VisaCommonEngine tempEngine=getVisaCommbyRoleName("数字多用表"); //角色 @@ -2249,16 +2267,147 @@ sRet=ReadDevice(instrcutLibNum,&tempEngine); } if(sParam=="校准信号"){ - idx= getIndexByHeader(constsLable,QStrTranQStrList("项目")); - if(dataRes[i][idx]=="频率"){ + if(dataRes[i][idxitem]=="频率"){ if(!this->showDialog("输入电阻","请接入频率测试线")){continue;} BaseCommonApi::SaveLogInfo(1,QString("通用计数器控制")); VisaCommonEngine tempEngine=getVisaCommbyRoleName("通用计数器"); //角色 InstructionLib *instrcutLibNum=getCmdByRoleName("通用计数器",sParam); - SendDevice(instrcutLibbiz,&deviceEngine); + //SendDevice(instrcutLibbiz,&deviceEngine); sRet=ReadDevice(instrcutLibNum,&tempEngine); + }else if(dataRes[i][idxitem]=="幅度"){ + if(!this->showDialog("校准信号幅度","请接入幅度测试线")){continue;} + instrcutLibbiz=getCmdByCheckName(0,"校准信号幅度1"); + //初始化被检 + SendDevice(instrcutLibbiz,&deviceEngine); + //获取高值 + TopValue=ReadDevice(instrcutLibbiz,&deviceEngine).toDouble(); + //获取低值 + instrcutLibbiz=getCmdByCheckName(0,"校准信号幅度2"); + SendDevice(instrcutLibbiz,&deviceEngine); + BottomValue=ReadDevice(instrcutLibbiz,&deviceEngine).toDouble(); + //控制标准器 + if(!this->showDialog("校准信号幅度","请接入9500测试线")){continue;} + //QString config=instrcutLibstan->instruct_config; + InstructionLib instrcutLibtest; + for(int d=0;d<=1;d++){ + instrcutLibtest.instruct_config=instrcutLibstan->instruct_config; + QString StanValue; + double proc; + double values; + for (QString value:instrcutLibtest.instruct_config.split(';')) { + if(value.contains("{STVAL}")){ + StanValue=value; + STVAL=value; + break; + } + } + if(d==0){ + instrcutLibtest.instruct_config= + instrcutLibtest.instruct_config.replace("{STVAL}",QString::number(TopValue,'f',4)); + proc=TopValue; + values=TopValue; + }else{ + instrcutLibtest.instruct_config= + instrcutLibtest.instruct_config.replace("{STVAL}",QString::number(BottomValue,'f',4)); + proc=BottomValue; + values=BottomValue; + } + //测量值测试 + int count=0; + double lastvlaue; + double Sub=0.001; + SendDevice(&instrcutLibtest,&standardEngine); + //获取幅度值 + instrcutLibbiz=getCmdByCheckName(0,"校准信号幅度3"); + SendDevice(instrcutLibbiz,&deviceEngine); + Delay_MSec(2000); + double tempvalue=ReadDevice(instrcutLibbiz,&deviceEngine).toDouble(); + QString num; + + while(tempvaluevalues || count>50){ + break; + values=proc; + } + tempvalue=lastvlaue; + count++; + } + if(d==0){TopValue=values;}else{BottomValue=values;} + + } + int topidx= getIndexByHeader(constsLable,QStrTranQStrList("顶部测量值")); + int bomidx= getIndexByHeader(constsLable,QStrTranQStrList("底部测量值")); + dataRes[i][topidx]=QString::number(TopValue); + dataRes[i][bomidx]=QString::number(BottomValue); + sRet=QString::number(TopValue-BottomValue); } } + if(sParam.contains("触发灵敏度")){ + int count=0; + idx= getIndexByHeader(constsLable,QStrTranQStrList("触发类型")); + if(dataRes[i][idx]=="内触发"){ + idx= getIndexByHeader(constsLable,QStrTranQStrList("标称值")); + QString value=dataRes[i][idx]; + QString data,unit; + ItemUnitSplit(value,data,unit); + double step=0.01; + double textvalue=1*data.toDouble(); + QString tempSTVAL; + tempSTVAL=STVAL.replace("{STVAL}",QString::number(textvalue)); + instrcutLibstan->instruct_config=tempSTVAL; + SendDevice(instrcutLibstan,&standardEngine); + //是否调节电平-- + // + while(sRet=="TRIGGER" && count<20){ + textvalue-=step; + tempSTVAL=STVAL.replace("{STVAL}",QString::number(textvalue)); + instrcutLibstan->instruct_config=tempSTVAL; + SendDevice(instrcutLibstan,&standardEngine); + sRet=ReadDevice(instrcutLibbiz,&deviceEngine); + //是否调节电平-- 或延迟 + // + count++; + } + sRet=textvalue; + }else{ + QString data,unit; + double textvalue; + QString TempSTVAL; + idx= getIndexByHeader(constsLable,QStrTranQStrList("标称值")); + double Step=0.005; + ItemUnitSplit(dataRes[i][idx],data,unit); + data=transUnit(data,unit,true); + textvalue=data.toDouble(); + for(int i=0;i<5;i++){ + sRet=ReadDevice(instrcutLibbiz,&deviceEngine); + if(sRet=="TRIGGER"){break;}; + } + if(sRet=="TRIGGER"){ + sRet=QString::number(textvalue); + }else{ + count=0; + while(sRet!="TRIGGER" && count<20){ + textvalue+=Step; + TempSTVAL=STVAL.replace("{STVAL}",QString::number(textvalue)); + instrcutLibstan->instruct_config=TempSTVAL; + SendDevice(instrcutLibstan,&standardEngine); + sRet=ReadDevice(instrcutLibbiz,&deviceEngine); + //是否调节电平-- 或延迟 + // + count++; + } + } + } + + } //测试结果单位转换 if(sRet!=""){ idx= getIndexByHeader(constsLable,QStrTranQStrList("单位")); @@ -2645,10 +2794,29 @@ void CheckWindow::RefreshTime_Slot(){ QString sLabel = headTableList->keys()[curHeadIdx]; QString sRet ; + int ch; if(deviceEngine.getState()){ - QString sParam ="波动性"; - QString newCmd; - InstructionLib *instrcutLib = getCmdByCheckName(0,sParam); + InstructionLib *instrcutLib = getCmdByCheckName(0,sLabel); + if(sLabel=="波动性测试"){ + QString newCmd; + SendDevice(instrcutLib,&deviceEngine); + sRet=ReadDevice(instrcutLib,&deviceEngine); + }else if(sLabel=="均匀性测试"){ + + InstructionLib instrcutLibTemp; + QStringList CmdList=instrcutLib->instruct_read.split(";"); + if(NumberCount%2==0){ + ch=0; + }else{ + ch=1; + } + instrcutLibTemp.instruct_read=CmdList[ch]; + SendDevice(instrcutLib,&deviceEngine); + sRet="通道"+QString::number(ch)+":"+ReadDevice(&instrcutLibTemp,&deviceEngine); + NumberCount++; + } + + /* if(instrcutLib!=nullptr){ QStringList sList = instrcutLib->instruct_config.split(";"); if(sList.length()>0){ @@ -2673,6 +2841,7 @@ //dStdValue = transUnit(sRet,dataRes[i][idx]); } } + */ } //获取当前时间 QDateTime currentTime = QDateTime::currentDateTime(); @@ -2699,6 +2868,8 @@ { QString sLabel = headTableList->keys()[curHeadIdx]; QString sData = ui->lineEditTemp->text(); + if(sData.contains("通道")) + sData=sData.mid(4,sData.count()); if(sLabel=="波动性测试"){ QTableWidgetItem *currentItem=ui->tableWidgetCheck->currentItem(); if(currentItem==nullptr||currentItem->column()<4||currentItem->column()>18){ diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index d21464f..710cbc6 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -6155,7 +6155,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[3] + row[4]);//标称值 QString temp_low = QString::number(row[3].toDouble() - row[12].toDouble()); Data.append(temp_low+ row[4]);//指标下限 @@ -6175,7 +6175,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[3] + row[4]);//标称值 QString temp_low = QString::number(row[3].toDouble() - row[12].toDouble()); @@ -6195,7 +6195,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//高通滤波 Data.append(row[17] + row[18]);//低通滤波 @@ -6220,7 +6220,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//高通滤波 Data.append(row[17] + row[18]);//低通滤波 @@ -6244,7 +6244,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//高通滤波 Data.append(row[17] + row[18]);//低通滤波 @@ -6261,7 +6261,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//高通滤波 Data.append(row[17] + row[18]);//低通滤波 @@ -6278,7 +6278,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[5] + row[6]);//幅度 Data.append(row[24]);//谐波次数 @@ -6298,7 +6298,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//高通滤波 Data.append(row[17] + row[18]);//低通滤波 @@ -6322,7 +6322,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//功率 Data.append(row[29] + row[30]);//偏移频率 diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index c723884..98a2833 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -300,7 +300,6 @@ Qt::CheckState state = ui->tableWidgetStd->item(i,0)->checkState(); if(state == Qt::Checked){ StandarIdList.append(catIdList[i]); - break; } } if(catIdList.count()==1) @@ -361,8 +360,8 @@ idList.clear(); } - if(programInfo.standard_device_id!=""){ - idList = programInfo.standard_device_id.split(","); + if(StandarIdList.count()!=0){ + idList =StandarIdList; for(const QString& id : idList) { @@ -1659,7 +1658,7 @@ BaseCommonApi::SaveLogInfo(1,QString("-----------------------------------")); if(iEquipType==13) { - connectDevice(); + //connectDevice(); this->Oscilloscopetextflow(); return; @@ -1685,6 +1684,7 @@ else if(iEquipType==5){ connectDevice(); if(deviceEngine.getState()){ + NumberCount=0; timerChart->start(5000); }else{ QMessageBox::warning(this, "警告", "设备未连接!"); @@ -1793,7 +1793,8 @@ } // ItemUnitSplit - newdStdValue= TranDecimals(sLabel, dataRes[i],dStdValue); + //newdStdValue= TranDecimals(sLabel, dataRes[i],dStdValue); + newdStdValue=QString::number(dStdValue,'f',4); //QStringList ResultName=getsParambyHeader(sParam); int idx= getIndexByHeader(sLabel,QStrTranQStrList("示值")); if(idx!=-1) @@ -1811,11 +1812,18 @@ dataRes[i][idx] = newdError; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); } + idx= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); if(idx!=-1) { dataRes[i][idx] = newdStdValue; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //测量值 + if(sLabel=="校准信号"){ + int topidx= getIndexByHeader(constsLable,QStrTranQStrList("顶部测量值")); + int bomidx= getIndexByHeader(constsLable,QStrTranQStrList("底部测量值")); + ui->tableWidgetCheck->setItem(i,topidx,new QTableWidgetItem(dataRes[i][topidx])); //测量值 + ui->tableWidgetCheck->setItem(i,bomidx,new QTableWidgetItem(dataRes[i][bomidx])); //测量值 + } } idx= getIndexByHeader(sLabel,QStrTranQStrList(("相对误差"))); if(idx!=-1) @@ -2165,6 +2173,7 @@ BaseCommonApi::SaveLogInfo(1,QString("开始 %1 %2 测试").arg(chList[_ch]).arg(constsLable)); QString sParam; QString ValueUnit; + double TopValue,BottomValue; InstructionLib *instrcutLibOhm; for (int i = 0; i < dataRes.count(); ++i) { TextCount=1; @@ -2184,6 +2193,7 @@ sParam = dataRes[i][idx]; InstructionLib *instrcutLibbiz=getCmdByCheckName(0,sParam); InstructionLib *instrcutLibstan=getCmdByCheckName(1,sParam); + int idxitem= getIndexByHeader(constsLable,QStrTranQStrList("项目")); //INIT 被检设备 - 标准设备 instrcutLibOhm= getCmdByCheckName(0,"电阻"); if(deviceEngine.getState()) @@ -2218,30 +2228,38 @@ for (int d=0;dinstruct_config.split(";"); - if(sList.length()>0){ - for (QString& sCmd : sList){ - if(d==1&& sCmd.contains("{BW}")) - { - sCmd.replace("{BW}","50000"); - } - newCmd = transCmd(sCmd,constsLable,constDataRes); - - if(newCmd!=""){ - standardEngine.sendData(newCmd); - qDebug() << "standard cmds:" << newCmd; - } - } - } + if(d==1 && sParam=="频带宽度"){ + QStringList sList = instrcutLibstan->instruct_config.split(";"); + for(QString &sCmd:sList){ + sCmd.replace("{BW}","50000"); + break; } } + QString LEVEL; + QString STVAL; + if(d==1 && sParam.contains("触发灵敏度")){ + QStringList sList = instrcutLibstan->instruct_config.split(";"); + for(QString &sCmd:sList){ + if(sCmd.contains("{LEVEL}")){ + LEVEL=sCmd; + sCmd.replace("{LEVEL}","0"); + } + else if(sCmd.contains("{STVAL}")) + { + STVAL=sCmd; + sCmd.replace("{STVAL}","1"); + } + + } + } + if(sParam!="校准信号") + { + SendDevice(instrcutLibstan,&standardEngine); //被检设备读数 BaseCommonApi::SaveLogInfo(1,QString("被检设备输出")); SendDevice(instrcutLibbiz,&deviceEngine); sRet=ReadDevice(instrcutLibbiz,&deviceEngine); + } if(sParam=="输入电阻"){ BaseCommonApi::SaveLogInfo(1,QString("数字万用表控制")); VisaCommonEngine tempEngine=getVisaCommbyRoleName("数字多用表"); //角色 @@ -2249,16 +2267,147 @@ sRet=ReadDevice(instrcutLibNum,&tempEngine); } if(sParam=="校准信号"){ - idx= getIndexByHeader(constsLable,QStrTranQStrList("项目")); - if(dataRes[i][idx]=="频率"){ + if(dataRes[i][idxitem]=="频率"){ if(!this->showDialog("输入电阻","请接入频率测试线")){continue;} BaseCommonApi::SaveLogInfo(1,QString("通用计数器控制")); VisaCommonEngine tempEngine=getVisaCommbyRoleName("通用计数器"); //角色 InstructionLib *instrcutLibNum=getCmdByRoleName("通用计数器",sParam); - SendDevice(instrcutLibbiz,&deviceEngine); + //SendDevice(instrcutLibbiz,&deviceEngine); sRet=ReadDevice(instrcutLibNum,&tempEngine); + }else if(dataRes[i][idxitem]=="幅度"){ + if(!this->showDialog("校准信号幅度","请接入幅度测试线")){continue;} + instrcutLibbiz=getCmdByCheckName(0,"校准信号幅度1"); + //初始化被检 + SendDevice(instrcutLibbiz,&deviceEngine); + //获取高值 + TopValue=ReadDevice(instrcutLibbiz,&deviceEngine).toDouble(); + //获取低值 + instrcutLibbiz=getCmdByCheckName(0,"校准信号幅度2"); + SendDevice(instrcutLibbiz,&deviceEngine); + BottomValue=ReadDevice(instrcutLibbiz,&deviceEngine).toDouble(); + //控制标准器 + if(!this->showDialog("校准信号幅度","请接入9500测试线")){continue;} + //QString config=instrcutLibstan->instruct_config; + InstructionLib instrcutLibtest; + for(int d=0;d<=1;d++){ + instrcutLibtest.instruct_config=instrcutLibstan->instruct_config; + QString StanValue; + double proc; + double values; + for (QString value:instrcutLibtest.instruct_config.split(';')) { + if(value.contains("{STVAL}")){ + StanValue=value; + STVAL=value; + break; + } + } + if(d==0){ + instrcutLibtest.instruct_config= + instrcutLibtest.instruct_config.replace("{STVAL}",QString::number(TopValue,'f',4)); + proc=TopValue; + values=TopValue; + }else{ + instrcutLibtest.instruct_config= + instrcutLibtest.instruct_config.replace("{STVAL}",QString::number(BottomValue,'f',4)); + proc=BottomValue; + values=BottomValue; + } + //测量值测试 + int count=0; + double lastvlaue; + double Sub=0.001; + SendDevice(&instrcutLibtest,&standardEngine); + //获取幅度值 + instrcutLibbiz=getCmdByCheckName(0,"校准信号幅度3"); + SendDevice(instrcutLibbiz,&deviceEngine); + Delay_MSec(2000); + double tempvalue=ReadDevice(instrcutLibbiz,&deviceEngine).toDouble(); + QString num; + + while(tempvaluevalues || count>50){ + break; + values=proc; + } + tempvalue=lastvlaue; + count++; + } + if(d==0){TopValue=values;}else{BottomValue=values;} + + } + int topidx= getIndexByHeader(constsLable,QStrTranQStrList("顶部测量值")); + int bomidx= getIndexByHeader(constsLable,QStrTranQStrList("底部测量值")); + dataRes[i][topidx]=QString::number(TopValue); + dataRes[i][bomidx]=QString::number(BottomValue); + sRet=QString::number(TopValue-BottomValue); } } + if(sParam.contains("触发灵敏度")){ + int count=0; + idx= getIndexByHeader(constsLable,QStrTranQStrList("触发类型")); + if(dataRes[i][idx]=="内触发"){ + idx= getIndexByHeader(constsLable,QStrTranQStrList("标称值")); + QString value=dataRes[i][idx]; + QString data,unit; + ItemUnitSplit(value,data,unit); + double step=0.01; + double textvalue=1*data.toDouble(); + QString tempSTVAL; + tempSTVAL=STVAL.replace("{STVAL}",QString::number(textvalue)); + instrcutLibstan->instruct_config=tempSTVAL; + SendDevice(instrcutLibstan,&standardEngine); + //是否调节电平-- + // + while(sRet=="TRIGGER" && count<20){ + textvalue-=step; + tempSTVAL=STVAL.replace("{STVAL}",QString::number(textvalue)); + instrcutLibstan->instruct_config=tempSTVAL; + SendDevice(instrcutLibstan,&standardEngine); + sRet=ReadDevice(instrcutLibbiz,&deviceEngine); + //是否调节电平-- 或延迟 + // + count++; + } + sRet=textvalue; + }else{ + QString data,unit; + double textvalue; + QString TempSTVAL; + idx= getIndexByHeader(constsLable,QStrTranQStrList("标称值")); + double Step=0.005; + ItemUnitSplit(dataRes[i][idx],data,unit); + data=transUnit(data,unit,true); + textvalue=data.toDouble(); + for(int i=0;i<5;i++){ + sRet=ReadDevice(instrcutLibbiz,&deviceEngine); + if(sRet=="TRIGGER"){break;}; + } + if(sRet=="TRIGGER"){ + sRet=QString::number(textvalue); + }else{ + count=0; + while(sRet!="TRIGGER" && count<20){ + textvalue+=Step; + TempSTVAL=STVAL.replace("{STVAL}",QString::number(textvalue)); + instrcutLibstan->instruct_config=TempSTVAL; + SendDevice(instrcutLibstan,&standardEngine); + sRet=ReadDevice(instrcutLibbiz,&deviceEngine); + //是否调节电平-- 或延迟 + // + count++; + } + } + } + + } //测试结果单位转换 if(sRet!=""){ idx= getIndexByHeader(constsLable,QStrTranQStrList("单位")); @@ -2645,10 +2794,29 @@ void CheckWindow::RefreshTime_Slot(){ QString sLabel = headTableList->keys()[curHeadIdx]; QString sRet ; + int ch; if(deviceEngine.getState()){ - QString sParam ="波动性"; - QString newCmd; - InstructionLib *instrcutLib = getCmdByCheckName(0,sParam); + InstructionLib *instrcutLib = getCmdByCheckName(0,sLabel); + if(sLabel=="波动性测试"){ + QString newCmd; + SendDevice(instrcutLib,&deviceEngine); + sRet=ReadDevice(instrcutLib,&deviceEngine); + }else if(sLabel=="均匀性测试"){ + + InstructionLib instrcutLibTemp; + QStringList CmdList=instrcutLib->instruct_read.split(";"); + if(NumberCount%2==0){ + ch=0; + }else{ + ch=1; + } + instrcutLibTemp.instruct_read=CmdList[ch]; + SendDevice(instrcutLib,&deviceEngine); + sRet="通道"+QString::number(ch)+":"+ReadDevice(&instrcutLibTemp,&deviceEngine); + NumberCount++; + } + + /* if(instrcutLib!=nullptr){ QStringList sList = instrcutLib->instruct_config.split(";"); if(sList.length()>0){ @@ -2673,6 +2841,7 @@ //dStdValue = transUnit(sRet,dataRes[i][idx]); } } + */ } //获取当前时间 QDateTime currentTime = QDateTime::currentDateTime(); @@ -2699,6 +2868,8 @@ { QString sLabel = headTableList->keys()[curHeadIdx]; QString sData = ui->lineEditTemp->text(); + if(sData.contains("通道")) + sData=sData.mid(4,sData.count()); if(sLabel=="波动性测试"){ QTableWidgetItem *currentItem=ui->tableWidgetCheck->currentItem(); if(currentItem==nullptr||currentItem->column()<4||currentItem->column()>18){ diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 4e1b2de..b425c1a 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -184,6 +184,8 @@ QTimer* timerChart; SyncRunStatus Teststate; DialogDCStabInput* stabInputdlg; + + int NumberCount; }; #endif // CHECKWINDOW_H diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index d21464f..710cbc6 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -6155,7 +6155,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[3] + row[4]);//标称值 QString temp_low = QString::number(row[3].toDouble() - row[12].toDouble()); Data.append(temp_low+ row[4]);//指标下限 @@ -6175,7 +6175,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[3] + row[4]);//标称值 QString temp_low = QString::number(row[3].toDouble() - row[12].toDouble()); @@ -6195,7 +6195,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//高通滤波 Data.append(row[17] + row[18]);//低通滤波 @@ -6220,7 +6220,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//高通滤波 Data.append(row[17] + row[18]);//低通滤波 @@ -6244,7 +6244,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//高通滤波 Data.append(row[17] + row[18]);//低通滤波 @@ -6261,7 +6261,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//高通滤波 Data.append(row[17] + row[18]);//低通滤波 @@ -6278,7 +6278,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[5] + row[6]);//幅度 Data.append(row[24]);//谐波次数 @@ -6298,7 +6298,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//高通滤波 Data.append(row[17] + row[18]);//低通滤波 @@ -6322,7 +6322,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//功率 Data.append(row[29] + row[30]);//偏移频率 diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index c723884..98a2833 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -300,7 +300,6 @@ Qt::CheckState state = ui->tableWidgetStd->item(i,0)->checkState(); if(state == Qt::Checked){ StandarIdList.append(catIdList[i]); - break; } } if(catIdList.count()==1) @@ -361,8 +360,8 @@ idList.clear(); } - if(programInfo.standard_device_id!=""){ - idList = programInfo.standard_device_id.split(","); + if(StandarIdList.count()!=0){ + idList =StandarIdList; for(const QString& id : idList) { @@ -1659,7 +1658,7 @@ BaseCommonApi::SaveLogInfo(1,QString("-----------------------------------")); if(iEquipType==13) { - connectDevice(); + //connectDevice(); this->Oscilloscopetextflow(); return; @@ -1685,6 +1684,7 @@ else if(iEquipType==5){ connectDevice(); if(deviceEngine.getState()){ + NumberCount=0; timerChart->start(5000); }else{ QMessageBox::warning(this, "警告", "设备未连接!"); @@ -1793,7 +1793,8 @@ } // ItemUnitSplit - newdStdValue= TranDecimals(sLabel, dataRes[i],dStdValue); + //newdStdValue= TranDecimals(sLabel, dataRes[i],dStdValue); + newdStdValue=QString::number(dStdValue,'f',4); //QStringList ResultName=getsParambyHeader(sParam); int idx= getIndexByHeader(sLabel,QStrTranQStrList("示值")); if(idx!=-1) @@ -1811,11 +1812,18 @@ dataRes[i][idx] = newdError; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); } + idx= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); if(idx!=-1) { dataRes[i][idx] = newdStdValue; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //测量值 + if(sLabel=="校准信号"){ + int topidx= getIndexByHeader(constsLable,QStrTranQStrList("顶部测量值")); + int bomidx= getIndexByHeader(constsLable,QStrTranQStrList("底部测量值")); + ui->tableWidgetCheck->setItem(i,topidx,new QTableWidgetItem(dataRes[i][topidx])); //测量值 + ui->tableWidgetCheck->setItem(i,bomidx,new QTableWidgetItem(dataRes[i][bomidx])); //测量值 + } } idx= getIndexByHeader(sLabel,QStrTranQStrList(("相对误差"))); if(idx!=-1) @@ -2165,6 +2173,7 @@ BaseCommonApi::SaveLogInfo(1,QString("开始 %1 %2 测试").arg(chList[_ch]).arg(constsLable)); QString sParam; QString ValueUnit; + double TopValue,BottomValue; InstructionLib *instrcutLibOhm; for (int i = 0; i < dataRes.count(); ++i) { TextCount=1; @@ -2184,6 +2193,7 @@ sParam = dataRes[i][idx]; InstructionLib *instrcutLibbiz=getCmdByCheckName(0,sParam); InstructionLib *instrcutLibstan=getCmdByCheckName(1,sParam); + int idxitem= getIndexByHeader(constsLable,QStrTranQStrList("项目")); //INIT 被检设备 - 标准设备 instrcutLibOhm= getCmdByCheckName(0,"电阻"); if(deviceEngine.getState()) @@ -2218,30 +2228,38 @@ for (int d=0;dinstruct_config.split(";"); - if(sList.length()>0){ - for (QString& sCmd : sList){ - if(d==1&& sCmd.contains("{BW}")) - { - sCmd.replace("{BW}","50000"); - } - newCmd = transCmd(sCmd,constsLable,constDataRes); - - if(newCmd!=""){ - standardEngine.sendData(newCmd); - qDebug() << "standard cmds:" << newCmd; - } - } - } + if(d==1 && sParam=="频带宽度"){ + QStringList sList = instrcutLibstan->instruct_config.split(";"); + for(QString &sCmd:sList){ + sCmd.replace("{BW}","50000"); + break; } } + QString LEVEL; + QString STVAL; + if(d==1 && sParam.contains("触发灵敏度")){ + QStringList sList = instrcutLibstan->instruct_config.split(";"); + for(QString &sCmd:sList){ + if(sCmd.contains("{LEVEL}")){ + LEVEL=sCmd; + sCmd.replace("{LEVEL}","0"); + } + else if(sCmd.contains("{STVAL}")) + { + STVAL=sCmd; + sCmd.replace("{STVAL}","1"); + } + + } + } + if(sParam!="校准信号") + { + SendDevice(instrcutLibstan,&standardEngine); //被检设备读数 BaseCommonApi::SaveLogInfo(1,QString("被检设备输出")); SendDevice(instrcutLibbiz,&deviceEngine); sRet=ReadDevice(instrcutLibbiz,&deviceEngine); + } if(sParam=="输入电阻"){ BaseCommonApi::SaveLogInfo(1,QString("数字万用表控制")); VisaCommonEngine tempEngine=getVisaCommbyRoleName("数字多用表"); //角色 @@ -2249,16 +2267,147 @@ sRet=ReadDevice(instrcutLibNum,&tempEngine); } if(sParam=="校准信号"){ - idx= getIndexByHeader(constsLable,QStrTranQStrList("项目")); - if(dataRes[i][idx]=="频率"){ + if(dataRes[i][idxitem]=="频率"){ if(!this->showDialog("输入电阻","请接入频率测试线")){continue;} BaseCommonApi::SaveLogInfo(1,QString("通用计数器控制")); VisaCommonEngine tempEngine=getVisaCommbyRoleName("通用计数器"); //角色 InstructionLib *instrcutLibNum=getCmdByRoleName("通用计数器",sParam); - SendDevice(instrcutLibbiz,&deviceEngine); + //SendDevice(instrcutLibbiz,&deviceEngine); sRet=ReadDevice(instrcutLibNum,&tempEngine); + }else if(dataRes[i][idxitem]=="幅度"){ + if(!this->showDialog("校准信号幅度","请接入幅度测试线")){continue;} + instrcutLibbiz=getCmdByCheckName(0,"校准信号幅度1"); + //初始化被检 + SendDevice(instrcutLibbiz,&deviceEngine); + //获取高值 + TopValue=ReadDevice(instrcutLibbiz,&deviceEngine).toDouble(); + //获取低值 + instrcutLibbiz=getCmdByCheckName(0,"校准信号幅度2"); + SendDevice(instrcutLibbiz,&deviceEngine); + BottomValue=ReadDevice(instrcutLibbiz,&deviceEngine).toDouble(); + //控制标准器 + if(!this->showDialog("校准信号幅度","请接入9500测试线")){continue;} + //QString config=instrcutLibstan->instruct_config; + InstructionLib instrcutLibtest; + for(int d=0;d<=1;d++){ + instrcutLibtest.instruct_config=instrcutLibstan->instruct_config; + QString StanValue; + double proc; + double values; + for (QString value:instrcutLibtest.instruct_config.split(';')) { + if(value.contains("{STVAL}")){ + StanValue=value; + STVAL=value; + break; + } + } + if(d==0){ + instrcutLibtest.instruct_config= + instrcutLibtest.instruct_config.replace("{STVAL}",QString::number(TopValue,'f',4)); + proc=TopValue; + values=TopValue; + }else{ + instrcutLibtest.instruct_config= + instrcutLibtest.instruct_config.replace("{STVAL}",QString::number(BottomValue,'f',4)); + proc=BottomValue; + values=BottomValue; + } + //测量值测试 + int count=0; + double lastvlaue; + double Sub=0.001; + SendDevice(&instrcutLibtest,&standardEngine); + //获取幅度值 + instrcutLibbiz=getCmdByCheckName(0,"校准信号幅度3"); + SendDevice(instrcutLibbiz,&deviceEngine); + Delay_MSec(2000); + double tempvalue=ReadDevice(instrcutLibbiz,&deviceEngine).toDouble(); + QString num; + + while(tempvaluevalues || count>50){ + break; + values=proc; + } + tempvalue=lastvlaue; + count++; + } + if(d==0){TopValue=values;}else{BottomValue=values;} + + } + int topidx= getIndexByHeader(constsLable,QStrTranQStrList("顶部测量值")); + int bomidx= getIndexByHeader(constsLable,QStrTranQStrList("底部测量值")); + dataRes[i][topidx]=QString::number(TopValue); + dataRes[i][bomidx]=QString::number(BottomValue); + sRet=QString::number(TopValue-BottomValue); } } + if(sParam.contains("触发灵敏度")){ + int count=0; + idx= getIndexByHeader(constsLable,QStrTranQStrList("触发类型")); + if(dataRes[i][idx]=="内触发"){ + idx= getIndexByHeader(constsLable,QStrTranQStrList("标称值")); + QString value=dataRes[i][idx]; + QString data,unit; + ItemUnitSplit(value,data,unit); + double step=0.01; + double textvalue=1*data.toDouble(); + QString tempSTVAL; + tempSTVAL=STVAL.replace("{STVAL}",QString::number(textvalue)); + instrcutLibstan->instruct_config=tempSTVAL; + SendDevice(instrcutLibstan,&standardEngine); + //是否调节电平-- + // + while(sRet=="TRIGGER" && count<20){ + textvalue-=step; + tempSTVAL=STVAL.replace("{STVAL}",QString::number(textvalue)); + instrcutLibstan->instruct_config=tempSTVAL; + SendDevice(instrcutLibstan,&standardEngine); + sRet=ReadDevice(instrcutLibbiz,&deviceEngine); + //是否调节电平-- 或延迟 + // + count++; + } + sRet=textvalue; + }else{ + QString data,unit; + double textvalue; + QString TempSTVAL; + idx= getIndexByHeader(constsLable,QStrTranQStrList("标称值")); + double Step=0.005; + ItemUnitSplit(dataRes[i][idx],data,unit); + data=transUnit(data,unit,true); + textvalue=data.toDouble(); + for(int i=0;i<5;i++){ + sRet=ReadDevice(instrcutLibbiz,&deviceEngine); + if(sRet=="TRIGGER"){break;}; + } + if(sRet=="TRIGGER"){ + sRet=QString::number(textvalue); + }else{ + count=0; + while(sRet!="TRIGGER" && count<20){ + textvalue+=Step; + TempSTVAL=STVAL.replace("{STVAL}",QString::number(textvalue)); + instrcutLibstan->instruct_config=TempSTVAL; + SendDevice(instrcutLibstan,&standardEngine); + sRet=ReadDevice(instrcutLibbiz,&deviceEngine); + //是否调节电平-- 或延迟 + // + count++; + } + } + } + + } //测试结果单位转换 if(sRet!=""){ idx= getIndexByHeader(constsLable,QStrTranQStrList("单位")); @@ -2645,10 +2794,29 @@ void CheckWindow::RefreshTime_Slot(){ QString sLabel = headTableList->keys()[curHeadIdx]; QString sRet ; + int ch; if(deviceEngine.getState()){ - QString sParam ="波动性"; - QString newCmd; - InstructionLib *instrcutLib = getCmdByCheckName(0,sParam); + InstructionLib *instrcutLib = getCmdByCheckName(0,sLabel); + if(sLabel=="波动性测试"){ + QString newCmd; + SendDevice(instrcutLib,&deviceEngine); + sRet=ReadDevice(instrcutLib,&deviceEngine); + }else if(sLabel=="均匀性测试"){ + + InstructionLib instrcutLibTemp; + QStringList CmdList=instrcutLib->instruct_read.split(";"); + if(NumberCount%2==0){ + ch=0; + }else{ + ch=1; + } + instrcutLibTemp.instruct_read=CmdList[ch]; + SendDevice(instrcutLib,&deviceEngine); + sRet="通道"+QString::number(ch)+":"+ReadDevice(&instrcutLibTemp,&deviceEngine); + NumberCount++; + } + + /* if(instrcutLib!=nullptr){ QStringList sList = instrcutLib->instruct_config.split(";"); if(sList.length()>0){ @@ -2673,6 +2841,7 @@ //dStdValue = transUnit(sRet,dataRes[i][idx]); } } + */ } //获取当前时间 QDateTime currentTime = QDateTime::currentDateTime(); @@ -2699,6 +2868,8 @@ { QString sLabel = headTableList->keys()[curHeadIdx]; QString sData = ui->lineEditTemp->text(); + if(sData.contains("通道")) + sData=sData.mid(4,sData.count()); if(sLabel=="波动性测试"){ QTableWidgetItem *currentItem=ui->tableWidgetCheck->currentItem(); if(currentItem==nullptr||currentItem->column()<4||currentItem->column()>18){ diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 4e1b2de..b425c1a 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -184,6 +184,8 @@ QTimer* timerChart; SyncRunStatus Teststate; DialogDCStabInput* stabInputdlg; + + int NumberCount; }; #endif // CHECKWINDOW_H diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp index ca5fb00..eedb6ac 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp @@ -588,11 +588,205 @@ } //信号装置 else if(iEquipType==10){ + QString Value,Unit,StanValue; for (int i = 0; i < dataRes.count(); ++i) { DeviceMeasureDataSignalGenerator measItem; measItem.id = QString::number(api.generateId()); measItem.data_id = measInfo.id; + if(sLabel=="频率"){ + measItem.data_type=1; + ItemUnitSplit(getValueByHeader(i,sLabel,"标称值"),StanValue,Unit); + measItem.nominal_value=StanValue; + measItem.unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"指标下限"),Value,Unit); + measItem.lower_index=Value; + ItemUnitSplit(getValueByHeader(i,sLabel,"测量值"),Value,Unit); + measItem.measure_value=Value; + measItem.measure_value_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"指标上限"),Value,Unit); + measItem.upper_index=Value; + measItem.relative_error=getValueByHeader(i,sLabel,"相对误差"); + measItem.urel=getValueByHeader(i,sLabel,"U(k=2)"); + }else if(sLabel=="功率"){ + measItem.data_type=2; + ItemUnitSplit(getValueByHeader(i,sLabel,"频率"),Value,Unit); + measItem.frequency=Value; + measItem.frequency_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"标称值"),StanValue,Unit); + measItem.nominal_value=StanValue; + measItem.unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"指标下限"),Value,Unit); + measItem.lower_index=Value; + ItemUnitSplit(getValueByHeader(i,sLabel,"测量值"),Value,Unit); + measItem.measure_value=Value; + measItem.measure_value_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"指标上限"),Value,Unit); + measItem.upper_index=Value; + measItem.relative_error=getValueByHeader(i,sLabel,"相对误差"); + measItem.urel=getValueByHeader(i,sLabel,"U(k=2)"); + }else if(sLabel=="调幅深度"){ + measItem.data_type=3; + ItemUnitSplit(getValueByHeader(i,sLabel,"频率"),Value,Unit); + measItem.frequency=Value; + measItem.frequency_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"高通滤波"),Value,Unit); + measItem.high_pass_filter=Value; + measItem.high_pass_filter_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"低通滤波"),Value,Unit); + measItem.lower_pass_filter=Value; + measItem.lower_pass_filter_unit=Unit; + //lower_pass_filter + ItemUnitSplit(getValueByHeader(i,sLabel,"标称值"),StanValue,Unit); + measItem.nominal_value=StanValue; + measItem.unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"指标下限"),Value,Unit); + measItem.lower_index=Value; + ItemUnitSplit(getValueByHeader(i,sLabel,"测量值"),Value,Unit); + measItem.measure_value=Value; + measItem.measure_value_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"指标上限"),Value,Unit); + measItem.upper_index=Value; + measItem.relative_error=getValueByHeader(i,sLabel,"相对误差"); + measItem.urel=getValueByHeader(i,sLabel,"U(k=2)"); + measItem.thd=getValueByHeader(i,sLabel,"THD"); + Value=getValueByHeader(i,sLabel,"THD上限"); + int percentSignIndex = Value.lastIndexOf('%'); + int lessThanSignIndex = Value.indexOf('<'); + measItem.upper_thd=Value.mid(lessThanSignIndex + 1, percentSignIndex - lessThanSignIndex - 1); + measItem.upper_index_symbol=Value.left(lessThanSignIndex + 1); + measItem.upper_index_unit= Value.right(1); + }else if(sLabel=="调频频偏"){ + measItem.data_type=4; + ItemUnitSplit(getValueByHeader(i,sLabel,"频率"),Value,Unit); + measItem.frequency=Value; + measItem.frequency_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"高通滤波"),Value,Unit); + measItem.high_pass_filter=Value; + measItem.high_pass_filter_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"低通滤波"),Value,Unit); + measItem.lower_pass_filter=Value; + measItem.lower_pass_filter_unit=Unit; + //lower_pass_filter + ItemUnitSplit(getValueByHeader(i,sLabel,"标称值"),StanValue,Unit); + measItem.nominal_value=StanValue; + measItem.unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"指标下限"),Value,Unit); + measItem.lower_index=Value; + ItemUnitSplit(getValueByHeader(i,sLabel,"测量值"),Value,Unit); + measItem.measure_value=Value; + measItem.measure_value_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"指标上限"),Value,Unit); + measItem.upper_index=Value; + measItem.relative_error=getValueByHeader(i,sLabel,"相对误差"); + measItem.urel=getValueByHeader(i,sLabel,"U(k=2)"); + measItem.thd=getValueByHeader(i,sLabel,"THD"); + Value=getValueByHeader(i,sLabel,"THD上限"); + int percentSignIndex = Value.lastIndexOf('%'); + int lessThanSignIndex = Value.indexOf('<'); + measItem.upper_thd=Value.mid(lessThanSignIndex + 1, percentSignIndex - lessThanSignIndex - 1); + measItem.upper_index_symbol=Value.left(lessThanSignIndex + 1); + measItem.upper_index_unit= Value.right(1); + }else if(sLabel=="剩余调幅"){ + measItem.data_type=5; + ItemUnitSplit(getValueByHeader(i,sLabel,"频率"),Value,Unit); + measItem.frequency=Value; + measItem.frequency_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"高通滤波"),Value,Unit); + measItem.high_pass_filter=Value; + measItem.high_pass_filter_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"低通滤波"),Value,Unit); + measItem.lower_pass_filter=Value; + measItem.lower_pass_filter_unit=Unit; + measItem.remain_amplitude_modulation=getValueByHeader(i,sLabel,"剩余调幅"); + ItemUnitSplit(getValueByHeader(i,sLabel,"指标上限"),Value,Unit); + measItem.urel=getValueByHeader(i,sLabel,"U(k=2)"); + }else if(sLabel=="剩余调频"){ + measItem.data_type=6; + ItemUnitSplit(getValueByHeader(i,sLabel,"频率"),Value,Unit); + measItem.frequency=Value; + measItem.frequency_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"高通滤波"),Value,Unit); + measItem.high_pass_filter=Value; + measItem.high_pass_filter_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"低通滤波"),Value,Unit); + measItem.lower_pass_filter=Value; + measItem.lower_pass_filter_unit=Unit; + measItem.remain_amplitude_modulation=getValueByHeader(i,sLabel,"剩余调幅"); + + measItem.upper_index=getValueByHeader(i,sLabel,"指标上限"); + measItem.urel=getValueByHeader(i,sLabel,"U(k=2)"); + + }else if(sLabel=="谐波"){ + measItem.data_type=7; + ItemUnitSplit(getValueByHeader(i,sLabel,"频率"),Value,Unit); + measItem.frequency=Value; + measItem.frequency_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"幅度"),Value,Unit); + measItem.amplitude=Value; + measItem.amplitude_unit=Unit; + measItem.harmonic_number=getValueByHeader(i,sLabel,"谐波次数"); + ItemUnitSplit(getValueByHeader(i,sLabel,"基波幅度"),Value,Unit); + measItem.fundamental_amplitude=Value; + measItem.fundamental_amplitude_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"谐波幅度"),Value,Unit); + measItem.harmonic_amplitude=Value; + measItem.harmonic_amplitude_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"测量值"),Value,Unit); + measItem.measure_value=Value; + measItem.measure_value_unit=Unit; + measItem.upper_index=getValueByHeader(i,sLabel,"指标上限"); + measItem.urel=getValueByHeader(i,sLabel,"U(k=2)"); + }else if(sLabel=="调相相偏"){ + measItem.data_type=7; + ItemUnitSplit(getValueByHeader(i,sLabel,"频率"),Value,Unit); + measItem.frequency=Value; + measItem.frequency_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"高通滤波"),Value,Unit); + measItem.high_pass_filter=Value; + measItem.high_pass_filter_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"低通滤波"),Value,Unit); + measItem.lower_pass_filter=Value; + measItem.lower_pass_filter_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"调制速率"),Value,Unit); + measItem.modulation_rate=Value; + measItem.modulation_rate_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"标称值"),StanValue,Unit); + measItem.nominal_value=StanValue; + measItem.unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"指标下限"),Value,Unit); + measItem.lower_index=Value; + ItemUnitSplit(getValueByHeader(i,sLabel,"测量值"),Value,Unit); + measItem.measure_value=Value; + measItem.measure_value_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"指标上限"),Value,Unit); + measItem.upper_index=Value; + measItem.urel=getValueByHeader(i,sLabel,"U(k=2)"); + measItem.thd=getValueByHeader(i,sLabel,"THD"); + Value=getValueByHeader(i,sLabel,"THD上限"); + int percentSignIndex = Value.lastIndexOf('%'); + int lessThanSignIndex = Value.indexOf('<'); + measItem.upper_thd=Value.mid(lessThanSignIndex + 1, percentSignIndex - lessThanSignIndex - 1); + measItem.upper_index_symbol=Value.left(lessThanSignIndex + 1); + measItem.upper_index_unit= Value.right(1); + }else if(sLabel=="非谐波"){ + measItem.data_type=6; + ItemUnitSplit(getValueByHeader(i,sLabel,"频率"),Value,Unit); + measItem.frequency=Value; + measItem.frequency_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"功率"),Value,Unit); + measItem.power=Value; + measItem.power_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"偏移频率"),Value,Unit); + measItem.offset_frequency=Value; + measItem.offset_frequency_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"测量值"),Value,Unit); + measItem.measure_value=Value; + measItem.measure_value_unit=Unit; + measItem.remain_amplitude_modulation=getValueByHeader(i,sLabel,"剩余调幅"); + measItem.upper_index=getValueByHeader(i,sLabel,"指标上限"); + measItem.urel=getValueByHeader(i,sLabel,"U(k=2)"); + } BaseCommonApi::SearchSelectTable(QString::number(iEquipType),&measItem); } } diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index d21464f..710cbc6 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -6155,7 +6155,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[3] + row[4]);//标称值 QString temp_low = QString::number(row[3].toDouble() - row[12].toDouble()); Data.append(temp_low+ row[4]);//指标下限 @@ -6175,7 +6175,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[3] + row[4]);//标称值 QString temp_low = QString::number(row[3].toDouble() - row[12].toDouble()); @@ -6195,7 +6195,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//高通滤波 Data.append(row[17] + row[18]);//低通滤波 @@ -6220,7 +6220,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//高通滤波 Data.append(row[17] + row[18]);//低通滤波 @@ -6244,7 +6244,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//高通滤波 Data.append(row[17] + row[18]);//低通滤波 @@ -6261,7 +6261,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//高通滤波 Data.append(row[17] + row[18]);//低通滤波 @@ -6278,7 +6278,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[5] + row[6]);//幅度 Data.append(row[24]);//谐波次数 @@ -6298,7 +6298,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//高通滤波 Data.append(row[17] + row[18]);//低通滤波 @@ -6322,7 +6322,7 @@ //添加数据 QStringList Data; Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 + Data.append(VerificationItem); //检定项目 Data.append(row[7] + row[8]);//频率 Data.append(row[15] + row[16]);//功率 Data.append(row[29] + row[30]);//偏移频率 diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index c723884..98a2833 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -300,7 +300,6 @@ Qt::CheckState state = ui->tableWidgetStd->item(i,0)->checkState(); if(state == Qt::Checked){ StandarIdList.append(catIdList[i]); - break; } } if(catIdList.count()==1) @@ -361,8 +360,8 @@ idList.clear(); } - if(programInfo.standard_device_id!=""){ - idList = programInfo.standard_device_id.split(","); + if(StandarIdList.count()!=0){ + idList =StandarIdList; for(const QString& id : idList) { @@ -1659,7 +1658,7 @@ BaseCommonApi::SaveLogInfo(1,QString("-----------------------------------")); if(iEquipType==13) { - connectDevice(); + //connectDevice(); this->Oscilloscopetextflow(); return; @@ -1685,6 +1684,7 @@ else if(iEquipType==5){ connectDevice(); if(deviceEngine.getState()){ + NumberCount=0; timerChart->start(5000); }else{ QMessageBox::warning(this, "警告", "设备未连接!"); @@ -1793,7 +1793,8 @@ } // ItemUnitSplit - newdStdValue= TranDecimals(sLabel, dataRes[i],dStdValue); + //newdStdValue= TranDecimals(sLabel, dataRes[i],dStdValue); + newdStdValue=QString::number(dStdValue,'f',4); //QStringList ResultName=getsParambyHeader(sParam); int idx= getIndexByHeader(sLabel,QStrTranQStrList("示值")); if(idx!=-1) @@ -1811,11 +1812,18 @@ dataRes[i][idx] = newdError; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); } + idx= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); if(idx!=-1) { dataRes[i][idx] = newdStdValue; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //测量值 + if(sLabel=="校准信号"){ + int topidx= getIndexByHeader(constsLable,QStrTranQStrList("顶部测量值")); + int bomidx= getIndexByHeader(constsLable,QStrTranQStrList("底部测量值")); + ui->tableWidgetCheck->setItem(i,topidx,new QTableWidgetItem(dataRes[i][topidx])); //测量值 + ui->tableWidgetCheck->setItem(i,bomidx,new QTableWidgetItem(dataRes[i][bomidx])); //测量值 + } } idx= getIndexByHeader(sLabel,QStrTranQStrList(("相对误差"))); if(idx!=-1) @@ -2165,6 +2173,7 @@ BaseCommonApi::SaveLogInfo(1,QString("开始 %1 %2 测试").arg(chList[_ch]).arg(constsLable)); QString sParam; QString ValueUnit; + double TopValue,BottomValue; InstructionLib *instrcutLibOhm; for (int i = 0; i < dataRes.count(); ++i) { TextCount=1; @@ -2184,6 +2193,7 @@ sParam = dataRes[i][idx]; InstructionLib *instrcutLibbiz=getCmdByCheckName(0,sParam); InstructionLib *instrcutLibstan=getCmdByCheckName(1,sParam); + int idxitem= getIndexByHeader(constsLable,QStrTranQStrList("项目")); //INIT 被检设备 - 标准设备 instrcutLibOhm= getCmdByCheckName(0,"电阻"); if(deviceEngine.getState()) @@ -2218,30 +2228,38 @@ for (int d=0;dinstruct_config.split(";"); - if(sList.length()>0){ - for (QString& sCmd : sList){ - if(d==1&& sCmd.contains("{BW}")) - { - sCmd.replace("{BW}","50000"); - } - newCmd = transCmd(sCmd,constsLable,constDataRes); - - if(newCmd!=""){ - standardEngine.sendData(newCmd); - qDebug() << "standard cmds:" << newCmd; - } - } - } + if(d==1 && sParam=="频带宽度"){ + QStringList sList = instrcutLibstan->instruct_config.split(";"); + for(QString &sCmd:sList){ + sCmd.replace("{BW}","50000"); + break; } } + QString LEVEL; + QString STVAL; + if(d==1 && sParam.contains("触发灵敏度")){ + QStringList sList = instrcutLibstan->instruct_config.split(";"); + for(QString &sCmd:sList){ + if(sCmd.contains("{LEVEL}")){ + LEVEL=sCmd; + sCmd.replace("{LEVEL}","0"); + } + else if(sCmd.contains("{STVAL}")) + { + STVAL=sCmd; + sCmd.replace("{STVAL}","1"); + } + + } + } + if(sParam!="校准信号") + { + SendDevice(instrcutLibstan,&standardEngine); //被检设备读数 BaseCommonApi::SaveLogInfo(1,QString("被检设备输出")); SendDevice(instrcutLibbiz,&deviceEngine); sRet=ReadDevice(instrcutLibbiz,&deviceEngine); + } if(sParam=="输入电阻"){ BaseCommonApi::SaveLogInfo(1,QString("数字万用表控制")); VisaCommonEngine tempEngine=getVisaCommbyRoleName("数字多用表"); //角色 @@ -2249,16 +2267,147 @@ sRet=ReadDevice(instrcutLibNum,&tempEngine); } if(sParam=="校准信号"){ - idx= getIndexByHeader(constsLable,QStrTranQStrList("项目")); - if(dataRes[i][idx]=="频率"){ + if(dataRes[i][idxitem]=="频率"){ if(!this->showDialog("输入电阻","请接入频率测试线")){continue;} BaseCommonApi::SaveLogInfo(1,QString("通用计数器控制")); VisaCommonEngine tempEngine=getVisaCommbyRoleName("通用计数器"); //角色 InstructionLib *instrcutLibNum=getCmdByRoleName("通用计数器",sParam); - SendDevice(instrcutLibbiz,&deviceEngine); + //SendDevice(instrcutLibbiz,&deviceEngine); sRet=ReadDevice(instrcutLibNum,&tempEngine); + }else if(dataRes[i][idxitem]=="幅度"){ + if(!this->showDialog("校准信号幅度","请接入幅度测试线")){continue;} + instrcutLibbiz=getCmdByCheckName(0,"校准信号幅度1"); + //初始化被检 + SendDevice(instrcutLibbiz,&deviceEngine); + //获取高值 + TopValue=ReadDevice(instrcutLibbiz,&deviceEngine).toDouble(); + //获取低值 + instrcutLibbiz=getCmdByCheckName(0,"校准信号幅度2"); + SendDevice(instrcutLibbiz,&deviceEngine); + BottomValue=ReadDevice(instrcutLibbiz,&deviceEngine).toDouble(); + //控制标准器 + if(!this->showDialog("校准信号幅度","请接入9500测试线")){continue;} + //QString config=instrcutLibstan->instruct_config; + InstructionLib instrcutLibtest; + for(int d=0;d<=1;d++){ + instrcutLibtest.instruct_config=instrcutLibstan->instruct_config; + QString StanValue; + double proc; + double values; + for (QString value:instrcutLibtest.instruct_config.split(';')) { + if(value.contains("{STVAL}")){ + StanValue=value; + STVAL=value; + break; + } + } + if(d==0){ + instrcutLibtest.instruct_config= + instrcutLibtest.instruct_config.replace("{STVAL}",QString::number(TopValue,'f',4)); + proc=TopValue; + values=TopValue; + }else{ + instrcutLibtest.instruct_config= + instrcutLibtest.instruct_config.replace("{STVAL}",QString::number(BottomValue,'f',4)); + proc=BottomValue; + values=BottomValue; + } + //测量值测试 + int count=0; + double lastvlaue; + double Sub=0.001; + SendDevice(&instrcutLibtest,&standardEngine); + //获取幅度值 + instrcutLibbiz=getCmdByCheckName(0,"校准信号幅度3"); + SendDevice(instrcutLibbiz,&deviceEngine); + Delay_MSec(2000); + double tempvalue=ReadDevice(instrcutLibbiz,&deviceEngine).toDouble(); + QString num; + + while(tempvaluevalues || count>50){ + break; + values=proc; + } + tempvalue=lastvlaue; + count++; + } + if(d==0){TopValue=values;}else{BottomValue=values;} + + } + int topidx= getIndexByHeader(constsLable,QStrTranQStrList("顶部测量值")); + int bomidx= getIndexByHeader(constsLable,QStrTranQStrList("底部测量值")); + dataRes[i][topidx]=QString::number(TopValue); + dataRes[i][bomidx]=QString::number(BottomValue); + sRet=QString::number(TopValue-BottomValue); } } + if(sParam.contains("触发灵敏度")){ + int count=0; + idx= getIndexByHeader(constsLable,QStrTranQStrList("触发类型")); + if(dataRes[i][idx]=="内触发"){ + idx= getIndexByHeader(constsLable,QStrTranQStrList("标称值")); + QString value=dataRes[i][idx]; + QString data,unit; + ItemUnitSplit(value,data,unit); + double step=0.01; + double textvalue=1*data.toDouble(); + QString tempSTVAL; + tempSTVAL=STVAL.replace("{STVAL}",QString::number(textvalue)); + instrcutLibstan->instruct_config=tempSTVAL; + SendDevice(instrcutLibstan,&standardEngine); + //是否调节电平-- + // + while(sRet=="TRIGGER" && count<20){ + textvalue-=step; + tempSTVAL=STVAL.replace("{STVAL}",QString::number(textvalue)); + instrcutLibstan->instruct_config=tempSTVAL; + SendDevice(instrcutLibstan,&standardEngine); + sRet=ReadDevice(instrcutLibbiz,&deviceEngine); + //是否调节电平-- 或延迟 + // + count++; + } + sRet=textvalue; + }else{ + QString data,unit; + double textvalue; + QString TempSTVAL; + idx= getIndexByHeader(constsLable,QStrTranQStrList("标称值")); + double Step=0.005; + ItemUnitSplit(dataRes[i][idx],data,unit); + data=transUnit(data,unit,true); + textvalue=data.toDouble(); + for(int i=0;i<5;i++){ + sRet=ReadDevice(instrcutLibbiz,&deviceEngine); + if(sRet=="TRIGGER"){break;}; + } + if(sRet=="TRIGGER"){ + sRet=QString::number(textvalue); + }else{ + count=0; + while(sRet!="TRIGGER" && count<20){ + textvalue+=Step; + TempSTVAL=STVAL.replace("{STVAL}",QString::number(textvalue)); + instrcutLibstan->instruct_config=TempSTVAL; + SendDevice(instrcutLibstan,&standardEngine); + sRet=ReadDevice(instrcutLibbiz,&deviceEngine); + //是否调节电平-- 或延迟 + // + count++; + } + } + } + + } //测试结果单位转换 if(sRet!=""){ idx= getIndexByHeader(constsLable,QStrTranQStrList("单位")); @@ -2645,10 +2794,29 @@ void CheckWindow::RefreshTime_Slot(){ QString sLabel = headTableList->keys()[curHeadIdx]; QString sRet ; + int ch; if(deviceEngine.getState()){ - QString sParam ="波动性"; - QString newCmd; - InstructionLib *instrcutLib = getCmdByCheckName(0,sParam); + InstructionLib *instrcutLib = getCmdByCheckName(0,sLabel); + if(sLabel=="波动性测试"){ + QString newCmd; + SendDevice(instrcutLib,&deviceEngine); + sRet=ReadDevice(instrcutLib,&deviceEngine); + }else if(sLabel=="均匀性测试"){ + + InstructionLib instrcutLibTemp; + QStringList CmdList=instrcutLib->instruct_read.split(";"); + if(NumberCount%2==0){ + ch=0; + }else{ + ch=1; + } + instrcutLibTemp.instruct_read=CmdList[ch]; + SendDevice(instrcutLib,&deviceEngine); + sRet="通道"+QString::number(ch)+":"+ReadDevice(&instrcutLibTemp,&deviceEngine); + NumberCount++; + } + + /* if(instrcutLib!=nullptr){ QStringList sList = instrcutLib->instruct_config.split(";"); if(sList.length()>0){ @@ -2673,6 +2841,7 @@ //dStdValue = transUnit(sRet,dataRes[i][idx]); } } + */ } //获取当前时间 QDateTime currentTime = QDateTime::currentDateTime(); @@ -2699,6 +2868,8 @@ { QString sLabel = headTableList->keys()[curHeadIdx]; QString sData = ui->lineEditTemp->text(); + if(sData.contains("通道")) + sData=sData.mid(4,sData.count()); if(sLabel=="波动性测试"){ QTableWidgetItem *currentItem=ui->tableWidgetCheck->currentItem(); if(currentItem==nullptr||currentItem->column()<4||currentItem->column()>18){ diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 4e1b2de..b425c1a 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -184,6 +184,8 @@ QTimer* timerChart; SyncRunStatus Teststate; DialogDCStabInput* stabInputdlg; + + int NumberCount; }; #endif // CHECKWINDOW_H diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp index ca5fb00..eedb6ac 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp @@ -588,11 +588,205 @@ } //信号装置 else if(iEquipType==10){ + QString Value,Unit,StanValue; for (int i = 0; i < dataRes.count(); ++i) { DeviceMeasureDataSignalGenerator measItem; measItem.id = QString::number(api.generateId()); measItem.data_id = measInfo.id; + if(sLabel=="频率"){ + measItem.data_type=1; + ItemUnitSplit(getValueByHeader(i,sLabel,"标称值"),StanValue,Unit); + measItem.nominal_value=StanValue; + measItem.unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"指标下限"),Value,Unit); + measItem.lower_index=Value; + ItemUnitSplit(getValueByHeader(i,sLabel,"测量值"),Value,Unit); + measItem.measure_value=Value; + measItem.measure_value_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"指标上限"),Value,Unit); + measItem.upper_index=Value; + measItem.relative_error=getValueByHeader(i,sLabel,"相对误差"); + measItem.urel=getValueByHeader(i,sLabel,"U(k=2)"); + }else if(sLabel=="功率"){ + measItem.data_type=2; + ItemUnitSplit(getValueByHeader(i,sLabel,"频率"),Value,Unit); + measItem.frequency=Value; + measItem.frequency_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"标称值"),StanValue,Unit); + measItem.nominal_value=StanValue; + measItem.unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"指标下限"),Value,Unit); + measItem.lower_index=Value; + ItemUnitSplit(getValueByHeader(i,sLabel,"测量值"),Value,Unit); + measItem.measure_value=Value; + measItem.measure_value_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"指标上限"),Value,Unit); + measItem.upper_index=Value; + measItem.relative_error=getValueByHeader(i,sLabel,"相对误差"); + measItem.urel=getValueByHeader(i,sLabel,"U(k=2)"); + }else if(sLabel=="调幅深度"){ + measItem.data_type=3; + ItemUnitSplit(getValueByHeader(i,sLabel,"频率"),Value,Unit); + measItem.frequency=Value; + measItem.frequency_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"高通滤波"),Value,Unit); + measItem.high_pass_filter=Value; + measItem.high_pass_filter_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"低通滤波"),Value,Unit); + measItem.lower_pass_filter=Value; + measItem.lower_pass_filter_unit=Unit; + //lower_pass_filter + ItemUnitSplit(getValueByHeader(i,sLabel,"标称值"),StanValue,Unit); + measItem.nominal_value=StanValue; + measItem.unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"指标下限"),Value,Unit); + measItem.lower_index=Value; + ItemUnitSplit(getValueByHeader(i,sLabel,"测量值"),Value,Unit); + measItem.measure_value=Value; + measItem.measure_value_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"指标上限"),Value,Unit); + measItem.upper_index=Value; + measItem.relative_error=getValueByHeader(i,sLabel,"相对误差"); + measItem.urel=getValueByHeader(i,sLabel,"U(k=2)"); + measItem.thd=getValueByHeader(i,sLabel,"THD"); + Value=getValueByHeader(i,sLabel,"THD上限"); + int percentSignIndex = Value.lastIndexOf('%'); + int lessThanSignIndex = Value.indexOf('<'); + measItem.upper_thd=Value.mid(lessThanSignIndex + 1, percentSignIndex - lessThanSignIndex - 1); + measItem.upper_index_symbol=Value.left(lessThanSignIndex + 1); + measItem.upper_index_unit= Value.right(1); + }else if(sLabel=="调频频偏"){ + measItem.data_type=4; + ItemUnitSplit(getValueByHeader(i,sLabel,"频率"),Value,Unit); + measItem.frequency=Value; + measItem.frequency_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"高通滤波"),Value,Unit); + measItem.high_pass_filter=Value; + measItem.high_pass_filter_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"低通滤波"),Value,Unit); + measItem.lower_pass_filter=Value; + measItem.lower_pass_filter_unit=Unit; + //lower_pass_filter + ItemUnitSplit(getValueByHeader(i,sLabel,"标称值"),StanValue,Unit); + measItem.nominal_value=StanValue; + measItem.unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"指标下限"),Value,Unit); + measItem.lower_index=Value; + ItemUnitSplit(getValueByHeader(i,sLabel,"测量值"),Value,Unit); + measItem.measure_value=Value; + measItem.measure_value_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"指标上限"),Value,Unit); + measItem.upper_index=Value; + measItem.relative_error=getValueByHeader(i,sLabel,"相对误差"); + measItem.urel=getValueByHeader(i,sLabel,"U(k=2)"); + measItem.thd=getValueByHeader(i,sLabel,"THD"); + Value=getValueByHeader(i,sLabel,"THD上限"); + int percentSignIndex = Value.lastIndexOf('%'); + int lessThanSignIndex = Value.indexOf('<'); + measItem.upper_thd=Value.mid(lessThanSignIndex + 1, percentSignIndex - lessThanSignIndex - 1); + measItem.upper_index_symbol=Value.left(lessThanSignIndex + 1); + measItem.upper_index_unit= Value.right(1); + }else if(sLabel=="剩余调幅"){ + measItem.data_type=5; + ItemUnitSplit(getValueByHeader(i,sLabel,"频率"),Value,Unit); + measItem.frequency=Value; + measItem.frequency_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"高通滤波"),Value,Unit); + measItem.high_pass_filter=Value; + measItem.high_pass_filter_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"低通滤波"),Value,Unit); + measItem.lower_pass_filter=Value; + measItem.lower_pass_filter_unit=Unit; + measItem.remain_amplitude_modulation=getValueByHeader(i,sLabel,"剩余调幅"); + ItemUnitSplit(getValueByHeader(i,sLabel,"指标上限"),Value,Unit); + measItem.urel=getValueByHeader(i,sLabel,"U(k=2)"); + }else if(sLabel=="剩余调频"){ + measItem.data_type=6; + ItemUnitSplit(getValueByHeader(i,sLabel,"频率"),Value,Unit); + measItem.frequency=Value; + measItem.frequency_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"高通滤波"),Value,Unit); + measItem.high_pass_filter=Value; + measItem.high_pass_filter_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"低通滤波"),Value,Unit); + measItem.lower_pass_filter=Value; + measItem.lower_pass_filter_unit=Unit; + measItem.remain_amplitude_modulation=getValueByHeader(i,sLabel,"剩余调幅"); + + measItem.upper_index=getValueByHeader(i,sLabel,"指标上限"); + measItem.urel=getValueByHeader(i,sLabel,"U(k=2)"); + + }else if(sLabel=="谐波"){ + measItem.data_type=7; + ItemUnitSplit(getValueByHeader(i,sLabel,"频率"),Value,Unit); + measItem.frequency=Value; + measItem.frequency_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"幅度"),Value,Unit); + measItem.amplitude=Value; + measItem.amplitude_unit=Unit; + measItem.harmonic_number=getValueByHeader(i,sLabel,"谐波次数"); + ItemUnitSplit(getValueByHeader(i,sLabel,"基波幅度"),Value,Unit); + measItem.fundamental_amplitude=Value; + measItem.fundamental_amplitude_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"谐波幅度"),Value,Unit); + measItem.harmonic_amplitude=Value; + measItem.harmonic_amplitude_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"测量值"),Value,Unit); + measItem.measure_value=Value; + measItem.measure_value_unit=Unit; + measItem.upper_index=getValueByHeader(i,sLabel,"指标上限"); + measItem.urel=getValueByHeader(i,sLabel,"U(k=2)"); + }else if(sLabel=="调相相偏"){ + measItem.data_type=7; + ItemUnitSplit(getValueByHeader(i,sLabel,"频率"),Value,Unit); + measItem.frequency=Value; + measItem.frequency_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"高通滤波"),Value,Unit); + measItem.high_pass_filter=Value; + measItem.high_pass_filter_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"低通滤波"),Value,Unit); + measItem.lower_pass_filter=Value; + measItem.lower_pass_filter_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"调制速率"),Value,Unit); + measItem.modulation_rate=Value; + measItem.modulation_rate_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"标称值"),StanValue,Unit); + measItem.nominal_value=StanValue; + measItem.unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"指标下限"),Value,Unit); + measItem.lower_index=Value; + ItemUnitSplit(getValueByHeader(i,sLabel,"测量值"),Value,Unit); + measItem.measure_value=Value; + measItem.measure_value_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"指标上限"),Value,Unit); + measItem.upper_index=Value; + measItem.urel=getValueByHeader(i,sLabel,"U(k=2)"); + measItem.thd=getValueByHeader(i,sLabel,"THD"); + Value=getValueByHeader(i,sLabel,"THD上限"); + int percentSignIndex = Value.lastIndexOf('%'); + int lessThanSignIndex = Value.indexOf('<'); + measItem.upper_thd=Value.mid(lessThanSignIndex + 1, percentSignIndex - lessThanSignIndex - 1); + measItem.upper_index_symbol=Value.left(lessThanSignIndex + 1); + measItem.upper_index_unit= Value.right(1); + }else if(sLabel=="非谐波"){ + measItem.data_type=6; + ItemUnitSplit(getValueByHeader(i,sLabel,"频率"),Value,Unit); + measItem.frequency=Value; + measItem.frequency_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"功率"),Value,Unit); + measItem.power=Value; + measItem.power_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"偏移频率"),Value,Unit); + measItem.offset_frequency=Value; + measItem.offset_frequency_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"测量值"),Value,Unit); + measItem.measure_value=Value; + measItem.measure_value_unit=Unit; + measItem.remain_amplitude_modulation=getValueByHeader(i,sLabel,"剩余调幅"); + measItem.upper_index=getValueByHeader(i,sLabel,"指标上限"); + measItem.urel=getValueByHeader(i,sLabel,"U(k=2)"); + } BaseCommonApi::SearchSelectTable(QString::number(iEquipType),&measItem); } } diff --git a/softwareDirectory/AutoVerScheme/visacommonengine.cpp b/softwareDirectory/AutoVerScheme/visacommonengine.cpp index e3541d0..89cf716 100644 --- a/softwareDirectory/AutoVerScheme/visacommonengine.cpp +++ b/softwareDirectory/AutoVerScheme/visacommonengine.cpp @@ -93,7 +93,7 @@ commType = sType; - if(sType=="Visa"){ + if(sType=="Visa" && sAddr!=""){ utf8Bytes = sAddr.toUtf8(); remoteAddr = reinterpret_cast(utf8Bytes.constData()); status = viOpenDefaultRM(&defaultRM);