diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index 941287b..26d0937 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -2970,10 +2970,10 @@ //QString path ="C:\\AutoVerScheme"; switch (pathIndex) { case 0: - path+="\\File\\sync_info.txt"; + path+="\\File\\log\\sync_info.txt"; break; case 1: - path+="\\File\\textlog.txt"; + path+="\\File\\log\\textlog.txt"; break; } QByteArray utf8Dat; @@ -3122,7 +3122,7 @@ " FROM biz_business_device_measure_item_data_piston_gauge bbdmidpg " " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidpg.item_id " " JOIN biz_business_device_measure_item_config_piston_gauge bbdmicp ON bbdmicp.item_id = bbdmidpg.item_id " - " WHERE bbdmidpg.item_id = :itemId ORDER BY bbdmidpg.update_time DESC"); + " WHERE bbdmidpg.item_id = :itemId ORDER BY bbdmidpg.indicating_value"); // 将参数绑定到占位符 query.bindValue(":itemId", itemId); if (query.exec()) { diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index 941287b..26d0937 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -2970,10 +2970,10 @@ //QString path ="C:\\AutoVerScheme"; switch (pathIndex) { case 0: - path+="\\File\\sync_info.txt"; + path+="\\File\\log\\sync_info.txt"; break; case 1: - path+="\\File\\textlog.txt"; + path+="\\File\\log\\textlog.txt"; break; } QByteArray utf8Dat; @@ -3122,7 +3122,7 @@ " FROM biz_business_device_measure_item_data_piston_gauge bbdmidpg " " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidpg.item_id " " JOIN biz_business_device_measure_item_config_piston_gauge bbdmicp ON bbdmicp.item_id = bbdmidpg.item_id " - " WHERE bbdmidpg.item_id = :itemId ORDER BY bbdmidpg.update_time DESC"); + " WHERE bbdmidpg.item_id = :itemId ORDER BY bbdmidpg.indicating_value"); // 将参数绑定到占位符 query.bindValue(":itemId", itemId); if (query.exec()) { diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 2797ced..0500d53 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -47,49 +47,15 @@ ui->comboBoxModal_2->addItem("ALL"); //统一定义单位转换系数 - unitTransList.insert("V",1); - unitTransList.insert("MV",1000); - unitTransList.insert("A",1); - unitTransList.insert("MA",1000); - unitTransList.insert("UA",1000000); - unitTransList.insert("W",1); - unitTransList.insert("KW",0.001); - unitTransList.insert("Ω",1); - unitTransList.insert("KΩ",0.001); - unitTransList.insert("MΩ",0.000001); - unitTransList.insert("HZ",1); - unitTransList.insert("kHZ",0.001); - unitTransList.insert("MHZ",0.000001); - unitTransList.insert("GHZ",0.000000001); - unitTransList.insert("S",1); - unitTransList.insert("MS",1E+3); - unitTransList.insert("PS",1E+12); - unitTransList.insert("NS",1E+9); - //统一定义命令占位符 - cmdPlaceHolderList.insert("{CH}","通道"); - cmdPlaceHolderList.insert("{RANV}","量程"); - cmdPlaceHolderList.insert("{RANI}","量程"); - cmdPlaceHolderList.insert("{RANHZ}","量程"); - cmdPlaceHolderList.insert("{RANO}","量程"); - cmdPlaceHolderList.insert("{YSCA}","幅度/DIV"); - cmdPlaceHolderList.insert("{XSCA}","时间/DIV"); - cmdPlaceHolderList.insert("{POSI}","波形偏移量"); - cmdPlaceHolderList.insert("{STVAL}","标准值"); - cmdPlaceHolderList.insert("{RAN}","量程"); - cmdPlaceHolderList.insert("{FREQ}","频率"); - cmdPlaceHolderList.insert("{BW}","频带宽度"); - cmdPlaceHolderList.insert("{UNIT}","单位"); - cmdPlaceHolderList.insert("{FUNIT}","频率单位"); - cmdPlaceHolderList.insert("{OHM}","阻抗"); - cmdPlaceHolderList.insert("{POS}","周期时标信号"); - //示波器 - cmdPlaceHolderList.insert("{OHM}","阻抗"); - //转换 - unitTypeTransList.insert("Ω","OHM"); - unitTypeTransList.insert("KΩ","KOHM"); - unitTypeTransList.insert("MΩ","MOHM"); - unitTypeTransList.insert("50Ω","0"); - unitTypeTransList.insert("1MΩ","1"); + unitTransList=readDataFromFile("unitTrans.txt"); + //统一定义命令占位符 + cmdPlaceHolderList=readDataFromFile("cmdPlaceHolder.txt"); + //单位值特殊转换 + unitTypeTransList=readDataFromFile("unitTypeTrans.txt"); + //测试结果值填充列 + resultfillingList=readDataFromFile("resultfilling.txt"); + + getCheckDevice(); //ui->stackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); @@ -430,10 +396,12 @@ //获取行号 并进行添加行 rowCount = ui->tableWidget_Point->rowCount(); ui->tableWidget_Point->insertRow(rowCount); - int idx= getIndexByHeader(sLabel,"检定项目"); - int idx2= getIndexByHeader(sLabel,"标准值"); - int idx3= getIndexByHeader(sLabel,"单位"); - int chname= getIndexByHeader(sLabel,"通道"); + + + int idx= getIndexByHeader(sLabel,QStrTranQStrList("检定项目")); + int idx2= getIndexByHeader(sLabel,QStrTranQStrList("标准值")); + int idx3= getIndexByHeader(sLabel,QStrTranQStrList("单位")); + int chname= getIndexByHeader(sLabel,QStrTranQStrList("通道")); if(idx==-1){idx=1;};if(idx2==-1){idx2=5;};if(idx3==-1){idx3=4;}; ui->tableWidget_Point->setItem(row, 0, new QTableWidgetItem(dataRes[i][idx])); @@ -1047,7 +1015,7 @@ QString sParam,newCmd; QString sLabel = headTableList.keys()[curHeadIdx]; QList dataRes = caliDataList.value(sLabel); - int idx= getIndexByHeader(sLabel,"检定项目"); + int idx= getIndexByHeader(sLabel,QStrTranQStrList("检定项目")); if(idx!=-1) sParam = dataRes[nextIndex][idx]; else @@ -1105,7 +1073,7 @@ QString sParam,newCmd; QString sLabel = headTableList.keys()[curHeadIdx]; QList dataRes = caliDataList.value(sLabel); - int idx= getIndexByHeader(sLabel,"检定项目"); + int idx= getIndexByHeader(sLabel,QStrTranQStrList("检定项目")); if(idx!=-1) sParam = dataRes[nextIndex][idx]; else @@ -1274,23 +1242,52 @@ return nullptr; } -int CheckWindow::getIndexByHeader(QString sLabel,QString sName){ +int CheckWindow::getIndexByHeader(QString sLabel,QStringList sName){ const auto &headrs = headTableList.value(sLabel); - for(int i=0;iOHM - sNewCmd = sNewCmd.replace(key,NewUnit); - continue; - } - double dTmp; - QRegularExpression re("(?=.*[0-9])(?=.*[a-zA-ZΩΜΩ])"); - if(re.match(data[idx]).hasMatch()) - { - dTmp = tranunitSplit(data[idx],true); - }else - { - int idx2= getIndexByHeader(sLabel,"单位"); - if(idx2!=-1) - { - QString unit = data[idx2]; - dTmp = transUnit(data[idx],unit,true); - }else{ - dTmp=data[idx].toDouble(); - }; - } - sNewCmd = sNewCmd.replace(key,QString::number(dTmp)); + QStringList cmdPlaceHolderValue; + QStringList TemporaryValue; + for (QStringList keyList : cmdPlaceHolderList.keys()) { + if(sCmd.contains(keyList[0])){ + cmdPlaceHolderValue=cmdPlaceHolderList.value(keyList); - } + int idx= getIndexByHeader(sLabel,cmdPlaceHolderList.value(keyList)); + if(idx!=-1){ + if(devicetype || keyList[0]=="{CH}") + { + NewUnit = TranTypeUnit(data[idx]); //转换 Ω->OHM + sNewCmd = sNewCmd.replace(keyList[0],NewUnit); + continue; + } + double dTmp; + QRegularExpression re("(?=.*[0-9])(?=.*[a-zA-ZΩΜΩ])"); + if(re.match(data[idx]).hasMatch()) + { + dTmp = tranunitSplit(data[idx],true); + }else + { + TemporaryValue.append("单位"); + int idx2= getIndexByHeader(sLabel,TemporaryValue); + if(idx2!=-1) + { + QString unit = data[idx2]; + dTmp = transUnit(data[idx],unit,true); + }else{ + dTmp=data[idx].toDouble(); + }; + } + sNewCmd = sNewCmd.replace(keyList[0],QString::number(dTmp)); + + } + } } return sNewCmd; @@ -1432,7 +1436,9 @@ //标准器输出 BaseCommonApi::SaveLogInfo(1,QString("标准器输出")); QString sParam; - int idx= getIndexByHeader(sLabel,"检定项目"); + QStringList TempValue; + TempValue.append("检定项目"); + int idx= getIndexByHeader(sLabel,TempValue); if(idx!=-1) sParam = dataRes[i][idx]; if(standardEngine.getState()){ @@ -1470,7 +1476,9 @@ if(newCmd!=""){ qDebug() << "query cmds:" << newCmd; sRet = deviceEngine.queryData(newCmd); - idx= getIndexByHeader(sLabel,"单位"); + TempValue.clear(); + TempValue.append("单位"); + idx= getIndexByHeader(sLabel,TempValue); dStdValue = transUnit(sRet,dataRes[i][idx]); } } @@ -1500,35 +1508,35 @@ // ItemUnitSplit newdStdValue= TranDecimals(sLabel, dataRes[i],dStdValue); - - int idx= getIndexByHeader(sLabel,"示值"); + //QStringList ResultName=getsParambyHeader(sParam); + int idx= getIndexByHeader(sLabel,QStrTranQStrList("示值")); if(idx!=-1) { dataRes[i][idx] = newdStdValue; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //示值 } - idx= getIndexByHeader(sLabel,"绝对误差"); + idx= getIndexByHeader(sLabel,QStrTranQStrList("绝对误差")); if(idx!=-1) { - int idx2= getIndexByHeader(sLabel,"标准值"); + int idx2= getIndexByHeader(sLabel,QStrTranQStrList("标准值")); 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,"测量值"); + idx= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); if(idx!=-1) { dataRes[i][idx] = newdStdValue; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //测量值 } - idx= getIndexByHeader(sLabel,"相对误差"); + idx= getIndexByHeader(sLabel,QStrTranQStrList(("相对误差"))); if(idx!=-1) { - int idx2=getIndexByHeader(sLabel,"标准值"); + int idx2=getIndexByHeader(sLabel,QStrTranQStrList(("标准值"))); if(idx2==-1) - idx2=getIndexByHeader(sLabel,"标称值"); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("标称值")); if(idx2!=-1){ double dTmp = dataRes[i][idx2].toDouble(); dError = (dStdValue-dTmp); @@ -1538,68 +1546,72 @@ } } - idx= getIndexByHeader(sLabel,"结论"); + idx= getIndexByHeader(sLabel,QStrTranQStrList(("结论"))); if(idx!=-1) { dataRes[i][idx] = "符合指标"; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem("符合指标")); //测量值 } - - idx= getIndexByHeader(sLabel,"测量幅度"); - if(idx!=-1) - { - QString textValue= ui->tableWidgetCheck->item(i,idx)->text(); - - if(textValue==""){ - dataRes[i][idx] = newdStdValue; - ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //测试 - }else + if(sLabel=="频带宽度"){ + idx= getIndexByHeader(sLabel,QStrTranQStrList("测量幅度")); + if(idx!=-1) { - idx= getIndexByHeader(sLabel,"参考幅度"); - QString refvalue= newdStdValue; - dataRes[i][idx] = refvalue; - ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(refvalue)); //参考 - // 计算a除以b的对数(以10为底) - double logResult = std::log10( refvalue.toDouble() / textValue.toDouble()); - double result = 20 * logResult; - idx= getIndexByHeader(sLabel,"分贝数(dB)"); - if(idx!=-1) - { - QString newresult; - newresult=TranDecimals(sLabel, dataRes[i],result); - dataRes[i][idx] = newresult; - ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newresult)); //分贝数 - } + QString textValue= ui->tableWidgetCheck->item(i,idx)->text(); + if(textValue==""){ + dataRes[i][idx] = newdStdValue; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //测试 + }else + { + idx= getIndexByHeader(sLabel,QStrTranQStrList("参考幅度")); + QString refvalue= newdStdValue; + dataRes[i][idx] = refvalue; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(refvalue)); //参考 + // 计算a除以b的对数(以10为底) + double logResult = std::log10( refvalue.toDouble() / textValue.toDouble()); + double result = 20 * logResult; + idx= getIndexByHeader(sLabel,QStrTranQStrList(("分贝数(dB)"))); + if(idx!=-1) + { + QString newresult; + newresult=TranDecimals(sLabel, dataRes[i],result); + dataRes[i][idx] = newresult; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newresult)); //分贝数 + } + + } } } - idx= getIndexByHeader(sLabel,"周期时标信号"); - if(idx!=-1) - { - double ErrorCal; - QString sign=""; - if(dStdValue>0.2){sign="-";}; - - bool bOk = false; - dStdValue = QInputDialog::getDouble(this,"手动输入","请输入△T/ns值",0,-100000, 100000,5,&bOk); - if (bOk) { - }else{ - dStdValue=0; - } - dStdValue=transUnit(QString::number(dStdValue),"ns",true); - ErrorCal=std::fabs(dStdValue); - idx= getIndexByHeader(sLabel,"时基绝对误差△T/ns"); - if(idx!=-1){ - dataRes[i][idx] =sign+QString::number(ErrorCal); - ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(sign+QString::number(ErrorCal))); //测量值 - } - - idx= getIndexByHeader(sLabel,"时基相对误差△δ"); + if(sLabel=="时基"){ + idx= getIndexByHeader(sLabel,QStrTranQStrList(("周期时标信号"))); + if(idx!=-1) { - dataRes[i][idx] =sign+QString::number(ErrorCal/0.01); - ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(sign+QString::number(ErrorCal/0.01))); //测量值 + double ErrorCal; + QString sign=""; + if(dStdValue>0.2){sign="-";}; + + bool bOk = false; + dStdValue = QInputDialog::getDouble(this,"手动输入","请输入△T/ns值",0,-100000, 100000,5,&bOk); + if (bOk) { + }else{ + dStdValue=0; + } + dStdValue=transUnit(QString::number(dStdValue),"ns",true); + ErrorCal=std::fabs(dStdValue); + idx= getIndexByHeader(sLabel,QStrTranQStrList(("时基绝对误差△T/ns"))); + if(idx!=-1){ + dataRes[i][idx] =sign+QString::number(ErrorCal); + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(sign+QString::number(ErrorCal))); //测量值 + } + + idx= getIndexByHeader(sLabel,QStrTranQStrList(("时基相对误差△δ"))); + { + dataRes[i][idx] =sign+QString::number(ErrorCal/0.01); + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(sign+QString::number(ErrorCal/0.01))); //测量值 + } } } + BaseCommonApi::SaveLogInfo(1,QString("转换前 测试值 %1").arg(dStdValue)); BaseCommonApi::SaveLogInfo(1,QString("转换后 测试值 %1").arg(newdStdValue)); @@ -1617,16 +1629,16 @@ } if(sLabel=="电压示值误差"||sLabel=="电流示值误差(直接测量)"||sLabel=="电流示值误差(间接测量)"){ newdStdValue= TranDecimals(sLabel,dataRes[i],dStdValue); - int idx= getIndexByHeader(sLabel,"标准值"); + int idx= getIndexByHeader(sLabel,QStrTranQStrList(("标准值"))); if(idx!=-1) { dataRes[i][idx] = newdStdValue; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); } - idx= getIndexByHeader(sLabel,"绝对误差"); + idx= getIndexByHeader(sLabel,QStrTranQStrList(("绝对误差"))); if(idx!=-1) { - int idx2=getIndexByHeader(sLabel,"被检表示值"); + int idx2=getIndexByHeader(sLabel,QStrTranQStrList(("被检表示值"))); double dTmp = dataRes[i][idx2].toDouble(); dError = dTmp-dStdValue; newdError=TranDecimals(sLabel,dataRes[i],dError); @@ -1636,23 +1648,23 @@ } else if(sLabel=="电源电压调整率"){ newdStdValue= TranDecimals(sLabel,dataRes[i],dStdValue); - int idx= getIndexByHeader(sLabel,"被检电源输出电压值"); + int idx= getIndexByHeader(sLabel,QStrTranQStrList("被检电源输出电压值")); if(idx!=-1) { dataRes[i][idx] = newdStdValue; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); } - idx= getIndexByHeader(sLabel,"被检电源输出电压最大差值"); + idx= getIndexByHeader(sLabel,QStrTranQStrList("被检电源输出电压最大差值")); if(idx!=-1) { - int idx2=getIndexByHeader(sLabel,"调压器输出值"); + int idx2=getIndexByHeader(sLabel,QStrTranQStrList("调压器输出值")); double dTmp = dataRes[i][idx2].toDouble(); dError = dTmp-dStdValue; newdError=TranDecimals(sLabel,dataRes[i],dError); dataRes[i][idx] = newdError; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); - idx= getIndexByHeader(sLabel,"电源电压调整率"); + idx= getIndexByHeader(sLabel,QStrTranQStrList("电源电压调整率")); if(idx!=-1){ dError = dError/dTmp; newdError=TranDecimals(sLabel,dataRes[i],dError)+"%"; @@ -1663,7 +1675,7 @@ } else if(sLabel=="负载调整率"){ newdStdValue= TranDecimals(sLabel,dataRes[i],dStdValue); - int idx= getIndexByHeader(sLabel,"被检电源输出电压值"); + int idx= getIndexByHeader(sLabel,QStrTranQStrList("被检电源输出电压值")); if(idx!=-1) { dataRes[i][idx] = newdStdValue; @@ -1677,7 +1689,7 @@ dEmpty = item[5].toDouble(); } } - idx= getIndexByHeader(sLabel,"电压差值"); + idx= getIndexByHeader(sLabel,QStrTranQStrList("电压差值")); if(idx!=-1) { dError = abs(dFull-dEmpty); @@ -1685,7 +1697,7 @@ dataRes[i][idx] = newdError; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); - idx= getIndexByHeader(sLabel,"负载调整率"); + idx= getIndexByHeader(sLabel,QStrTranQStrList("负载调整率")); if(idx!=-1){ dError = dError/dEmpty; newdError=TranDecimals(sLabel,dataRes[i],dError)+"%"; @@ -1709,19 +1721,19 @@ int k=0; for(QString title:titles){ newdStdValue= TranDecimals(sLabel,dataRes[i],results[k]); - int idx= getIndexByHeader(sLabel,title); + int idx= getIndexByHeader(sLabel,QStrTranQStrList((title))); dataRes[i][idx] = newdStdValue; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //示值 k++; BaseCommonApi::SaveLogInfo(1,QString("测试项目: %1 测试值: %2").arg(title).arg(newdStdValue)); } - int idx= getIndexByHeader(sLabel,"轻敲前后变动量-正"); + int idx= getIndexByHeader(sLabel,QStrTranQStrList("轻敲前后变动量-正")); if(idx!=-1){ newdError= TranDecimals(sLabel,dataRes[i],results[2]-results[0]); dataRes[i][idx] = newdError; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); } - idx= getIndexByHeader(sLabel,"轻敲前后变动量-反"); + idx= getIndexByHeader(sLabel,QStrTranQStrList("轻敲前后变动量-反")); if(idx!=-1){ newdError= TranDecimals(sLabel,dataRes[i],results[3]-results[1]); dataRes[i][idx] = newdError; @@ -1753,7 +1765,7 @@ InstructionLib *instrcutLibOhm; for (int i = 0; i < dataRes.count(); ++i) { TextCount=1; - int _dex= getIndexByHeader(sLabel,"通道"); + int _dex= getIndexByHeader(sLabel,QStrTranQStrList("通道")); if(_dex==-1){sParam=chList[_ch];}else{sParam=dataRes[i][_dex];} if(sParam!=chList[_ch]){continue;}; CheckBackColorUpdate(true,i); @@ -1761,7 +1773,7 @@ QString newCmd; double dStdValue=FP_INFINITE; QString newdStdValue; - int idx= getIndexByHeader(sLabel,"检定项目"); + int idx= getIndexByHeader(sLabel,QStrTranQStrList("检定项目")); QString sParam; if(idx!=-1) sParam = dataRes[i][idx]; @@ -1775,13 +1787,13 @@ InItstan= getCmdByCheckName(1,"INIT"); if(InItbiz!=nullptr && instrcutLibbiz!=nullptr) { - if(deviceEngine.getState()) + if(deviceEngine.getState() ) { //设置电阻值+ instrcutLibOhm= getCmdByCheckName(0,"电阻"); if(instrcutLibOhm!=nullptr){ QStringList ohmList = instrcutLibOhm->instruct_config.split(";"); - int idxohm= getIndexByHeader(sLabel,"阻抗"); + int idxohm= getIndexByHeader(sLabel,QStrTranQStrList("阻抗")); if(idxohm!=-1) { QString onmname="50Ω"; @@ -1874,16 +1886,17 @@ qDebug() << "query cmds:" << newCmd; sRet = deviceEngine.queryData(newCmd); - idx= getIndexByHeader(sLabel,"单位"); + idx= getIndexByHeader(sLabel,QStrTranQStrList("单位")); //ValueUnit if(idx!=-1) { ValueUnit=dataRes[i][idx]; }else { - int idx= getIndexByHeader(sLabel,"标准值"); - if(idx==-1) - idx= getIndexByHeader(sLabel,"标称值"); + QStringList temp; + temp.append("标准值"); + temp.append("标称值"); + int idx= getIndexByHeader(sLabel,temp); if(idx!=-1) ItemUnitSplit(dataRes[i][idx],ValueUnit,ValueUnit); @@ -2127,3 +2140,63 @@ return false; } } +QMap CheckWindow::readDataFromFile(QString filePath) { + // 获取应用程序的根目录 + QString path = QCoreApplication::applicationDirPath()+"\\File\\config\\"+filePath; + QMap dataMap; + QFile file(path); + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { + // 错误处理 + qDebug() << "无法打开文件:" << file.errorString(); + QString str=file.errorString(); + return dataMap; + } + + QTextStream in(&file); + in.setCodec("UTF-8"); + QString line; + bool isFirstLine = true; // 跳过第一行 + + while (!in.atEnd()) { + line = in.readLine(); + if (isFirstLine) { + isFirstLine = false; // 第一行已读,接下来读取数据 + continue; + } + + // 使用'|'分割键和值 + QStringList keyValuePairs = line.split(QRegExp("\\s*\\|\\s*"), QString::SkipEmptyParts); + if (keyValuePairs.size() != 2) { + continue; // 跳过不符合格式的行 + } + + QStringList keys, values; + + // 分割键部分,并替换空格为空字符串 + QString keyPart = keyValuePairs.at(0); + keys = keyPart.split(',', QString::SkipEmptyParts); + for (int i = 0; i < keys.size(); ++i) { + keys[i].replace(" ", ""); + } + + // 分割值部分,并替换空格为空字符串 + QString valuePart = keyValuePairs.at(1); + values = valuePart.split(',', QString::SkipEmptyParts); + for (int i = 0; i < values.size(); ++i) { + values[i].replace(" ", ""); + values[i].replace("\t", ""); + } + + // 将键和值的QStringList插入到QMap中 + dataMap.insert(keys, values); + } + + file.close(); + return dataMap; +} +QStringList CheckWindow::QStrTranQStrList(QString value) +{ + QStringList valuelist; + valuelist.append(value); + return valuelist; +} diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index 941287b..26d0937 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -2970,10 +2970,10 @@ //QString path ="C:\\AutoVerScheme"; switch (pathIndex) { case 0: - path+="\\File\\sync_info.txt"; + path+="\\File\\log\\sync_info.txt"; break; case 1: - path+="\\File\\textlog.txt"; + path+="\\File\\log\\textlog.txt"; break; } QByteArray utf8Dat; @@ -3122,7 +3122,7 @@ " FROM biz_business_device_measure_item_data_piston_gauge bbdmidpg " " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidpg.item_id " " JOIN biz_business_device_measure_item_config_piston_gauge bbdmicp ON bbdmicp.item_id = bbdmidpg.item_id " - " WHERE bbdmidpg.item_id = :itemId ORDER BY bbdmidpg.update_time DESC"); + " WHERE bbdmidpg.item_id = :itemId ORDER BY bbdmidpg.indicating_value"); // 将参数绑定到占位符 query.bindValue(":itemId", itemId); if (query.exec()) { diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 2797ced..0500d53 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -47,49 +47,15 @@ ui->comboBoxModal_2->addItem("ALL"); //统一定义单位转换系数 - unitTransList.insert("V",1); - unitTransList.insert("MV",1000); - unitTransList.insert("A",1); - unitTransList.insert("MA",1000); - unitTransList.insert("UA",1000000); - unitTransList.insert("W",1); - unitTransList.insert("KW",0.001); - unitTransList.insert("Ω",1); - unitTransList.insert("KΩ",0.001); - unitTransList.insert("MΩ",0.000001); - unitTransList.insert("HZ",1); - unitTransList.insert("kHZ",0.001); - unitTransList.insert("MHZ",0.000001); - unitTransList.insert("GHZ",0.000000001); - unitTransList.insert("S",1); - unitTransList.insert("MS",1E+3); - unitTransList.insert("PS",1E+12); - unitTransList.insert("NS",1E+9); - //统一定义命令占位符 - cmdPlaceHolderList.insert("{CH}","通道"); - cmdPlaceHolderList.insert("{RANV}","量程"); - cmdPlaceHolderList.insert("{RANI}","量程"); - cmdPlaceHolderList.insert("{RANHZ}","量程"); - cmdPlaceHolderList.insert("{RANO}","量程"); - cmdPlaceHolderList.insert("{YSCA}","幅度/DIV"); - cmdPlaceHolderList.insert("{XSCA}","时间/DIV"); - cmdPlaceHolderList.insert("{POSI}","波形偏移量"); - cmdPlaceHolderList.insert("{STVAL}","标准值"); - cmdPlaceHolderList.insert("{RAN}","量程"); - cmdPlaceHolderList.insert("{FREQ}","频率"); - cmdPlaceHolderList.insert("{BW}","频带宽度"); - cmdPlaceHolderList.insert("{UNIT}","单位"); - cmdPlaceHolderList.insert("{FUNIT}","频率单位"); - cmdPlaceHolderList.insert("{OHM}","阻抗"); - cmdPlaceHolderList.insert("{POS}","周期时标信号"); - //示波器 - cmdPlaceHolderList.insert("{OHM}","阻抗"); - //转换 - unitTypeTransList.insert("Ω","OHM"); - unitTypeTransList.insert("KΩ","KOHM"); - unitTypeTransList.insert("MΩ","MOHM"); - unitTypeTransList.insert("50Ω","0"); - unitTypeTransList.insert("1MΩ","1"); + unitTransList=readDataFromFile("unitTrans.txt"); + //统一定义命令占位符 + cmdPlaceHolderList=readDataFromFile("cmdPlaceHolder.txt"); + //单位值特殊转换 + unitTypeTransList=readDataFromFile("unitTypeTrans.txt"); + //测试结果值填充列 + resultfillingList=readDataFromFile("resultfilling.txt"); + + getCheckDevice(); //ui->stackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); @@ -430,10 +396,12 @@ //获取行号 并进行添加行 rowCount = ui->tableWidget_Point->rowCount(); ui->tableWidget_Point->insertRow(rowCount); - int idx= getIndexByHeader(sLabel,"检定项目"); - int idx2= getIndexByHeader(sLabel,"标准值"); - int idx3= getIndexByHeader(sLabel,"单位"); - int chname= getIndexByHeader(sLabel,"通道"); + + + int idx= getIndexByHeader(sLabel,QStrTranQStrList("检定项目")); + int idx2= getIndexByHeader(sLabel,QStrTranQStrList("标准值")); + int idx3= getIndexByHeader(sLabel,QStrTranQStrList("单位")); + int chname= getIndexByHeader(sLabel,QStrTranQStrList("通道")); if(idx==-1){idx=1;};if(idx2==-1){idx2=5;};if(idx3==-1){idx3=4;}; ui->tableWidget_Point->setItem(row, 0, new QTableWidgetItem(dataRes[i][idx])); @@ -1047,7 +1015,7 @@ QString sParam,newCmd; QString sLabel = headTableList.keys()[curHeadIdx]; QList dataRes = caliDataList.value(sLabel); - int idx= getIndexByHeader(sLabel,"检定项目"); + int idx= getIndexByHeader(sLabel,QStrTranQStrList("检定项目")); if(idx!=-1) sParam = dataRes[nextIndex][idx]; else @@ -1105,7 +1073,7 @@ QString sParam,newCmd; QString sLabel = headTableList.keys()[curHeadIdx]; QList dataRes = caliDataList.value(sLabel); - int idx= getIndexByHeader(sLabel,"检定项目"); + int idx= getIndexByHeader(sLabel,QStrTranQStrList("检定项目")); if(idx!=-1) sParam = dataRes[nextIndex][idx]; else @@ -1274,23 +1242,52 @@ return nullptr; } -int CheckWindow::getIndexByHeader(QString sLabel,QString sName){ +int CheckWindow::getIndexByHeader(QString sLabel,QStringList sName){ const auto &headrs = headTableList.value(sLabel); - for(int i=0;iOHM - sNewCmd = sNewCmd.replace(key,NewUnit); - continue; - } - double dTmp; - QRegularExpression re("(?=.*[0-9])(?=.*[a-zA-ZΩΜΩ])"); - if(re.match(data[idx]).hasMatch()) - { - dTmp = tranunitSplit(data[idx],true); - }else - { - int idx2= getIndexByHeader(sLabel,"单位"); - if(idx2!=-1) - { - QString unit = data[idx2]; - dTmp = transUnit(data[idx],unit,true); - }else{ - dTmp=data[idx].toDouble(); - }; - } - sNewCmd = sNewCmd.replace(key,QString::number(dTmp)); + QStringList cmdPlaceHolderValue; + QStringList TemporaryValue; + for (QStringList keyList : cmdPlaceHolderList.keys()) { + if(sCmd.contains(keyList[0])){ + cmdPlaceHolderValue=cmdPlaceHolderList.value(keyList); - } + int idx= getIndexByHeader(sLabel,cmdPlaceHolderList.value(keyList)); + if(idx!=-1){ + if(devicetype || keyList[0]=="{CH}") + { + NewUnit = TranTypeUnit(data[idx]); //转换 Ω->OHM + sNewCmd = sNewCmd.replace(keyList[0],NewUnit); + continue; + } + double dTmp; + QRegularExpression re("(?=.*[0-9])(?=.*[a-zA-ZΩΜΩ])"); + if(re.match(data[idx]).hasMatch()) + { + dTmp = tranunitSplit(data[idx],true); + }else + { + TemporaryValue.append("单位"); + int idx2= getIndexByHeader(sLabel,TemporaryValue); + if(idx2!=-1) + { + QString unit = data[idx2]; + dTmp = transUnit(data[idx],unit,true); + }else{ + dTmp=data[idx].toDouble(); + }; + } + sNewCmd = sNewCmd.replace(keyList[0],QString::number(dTmp)); + + } + } } return sNewCmd; @@ -1432,7 +1436,9 @@ //标准器输出 BaseCommonApi::SaveLogInfo(1,QString("标准器输出")); QString sParam; - int idx= getIndexByHeader(sLabel,"检定项目"); + QStringList TempValue; + TempValue.append("检定项目"); + int idx= getIndexByHeader(sLabel,TempValue); if(idx!=-1) sParam = dataRes[i][idx]; if(standardEngine.getState()){ @@ -1470,7 +1476,9 @@ if(newCmd!=""){ qDebug() << "query cmds:" << newCmd; sRet = deviceEngine.queryData(newCmd); - idx= getIndexByHeader(sLabel,"单位"); + TempValue.clear(); + TempValue.append("单位"); + idx= getIndexByHeader(sLabel,TempValue); dStdValue = transUnit(sRet,dataRes[i][idx]); } } @@ -1500,35 +1508,35 @@ // ItemUnitSplit newdStdValue= TranDecimals(sLabel, dataRes[i],dStdValue); - - int idx= getIndexByHeader(sLabel,"示值"); + //QStringList ResultName=getsParambyHeader(sParam); + int idx= getIndexByHeader(sLabel,QStrTranQStrList("示值")); if(idx!=-1) { dataRes[i][idx] = newdStdValue; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //示值 } - idx= getIndexByHeader(sLabel,"绝对误差"); + idx= getIndexByHeader(sLabel,QStrTranQStrList("绝对误差")); if(idx!=-1) { - int idx2= getIndexByHeader(sLabel,"标准值"); + int idx2= getIndexByHeader(sLabel,QStrTranQStrList("标准值")); 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,"测量值"); + idx= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); if(idx!=-1) { dataRes[i][idx] = newdStdValue; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //测量值 } - idx= getIndexByHeader(sLabel,"相对误差"); + idx= getIndexByHeader(sLabel,QStrTranQStrList(("相对误差"))); if(idx!=-1) { - int idx2=getIndexByHeader(sLabel,"标准值"); + int idx2=getIndexByHeader(sLabel,QStrTranQStrList(("标准值"))); if(idx2==-1) - idx2=getIndexByHeader(sLabel,"标称值"); + idx2=getIndexByHeader(sLabel,QStrTranQStrList("标称值")); if(idx2!=-1){ double dTmp = dataRes[i][idx2].toDouble(); dError = (dStdValue-dTmp); @@ -1538,68 +1546,72 @@ } } - idx= getIndexByHeader(sLabel,"结论"); + idx= getIndexByHeader(sLabel,QStrTranQStrList(("结论"))); if(idx!=-1) { dataRes[i][idx] = "符合指标"; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem("符合指标")); //测量值 } - - idx= getIndexByHeader(sLabel,"测量幅度"); - if(idx!=-1) - { - QString textValue= ui->tableWidgetCheck->item(i,idx)->text(); - - if(textValue==""){ - dataRes[i][idx] = newdStdValue; - ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //测试 - }else + if(sLabel=="频带宽度"){ + idx= getIndexByHeader(sLabel,QStrTranQStrList("测量幅度")); + if(idx!=-1) { - idx= getIndexByHeader(sLabel,"参考幅度"); - QString refvalue= newdStdValue; - dataRes[i][idx] = refvalue; - ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(refvalue)); //参考 - // 计算a除以b的对数(以10为底) - double logResult = std::log10( refvalue.toDouble() / textValue.toDouble()); - double result = 20 * logResult; - idx= getIndexByHeader(sLabel,"分贝数(dB)"); - if(idx!=-1) - { - QString newresult; - newresult=TranDecimals(sLabel, dataRes[i],result); - dataRes[i][idx] = newresult; - ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newresult)); //分贝数 - } + QString textValue= ui->tableWidgetCheck->item(i,idx)->text(); + if(textValue==""){ + dataRes[i][idx] = newdStdValue; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //测试 + }else + { + idx= getIndexByHeader(sLabel,QStrTranQStrList("参考幅度")); + QString refvalue= newdStdValue; + dataRes[i][idx] = refvalue; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(refvalue)); //参考 + // 计算a除以b的对数(以10为底) + double logResult = std::log10( refvalue.toDouble() / textValue.toDouble()); + double result = 20 * logResult; + idx= getIndexByHeader(sLabel,QStrTranQStrList(("分贝数(dB)"))); + if(idx!=-1) + { + QString newresult; + newresult=TranDecimals(sLabel, dataRes[i],result); + dataRes[i][idx] = newresult; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newresult)); //分贝数 + } + + } } } - idx= getIndexByHeader(sLabel,"周期时标信号"); - if(idx!=-1) - { - double ErrorCal; - QString sign=""; - if(dStdValue>0.2){sign="-";}; - - bool bOk = false; - dStdValue = QInputDialog::getDouble(this,"手动输入","请输入△T/ns值",0,-100000, 100000,5,&bOk); - if (bOk) { - }else{ - dStdValue=0; - } - dStdValue=transUnit(QString::number(dStdValue),"ns",true); - ErrorCal=std::fabs(dStdValue); - idx= getIndexByHeader(sLabel,"时基绝对误差△T/ns"); - if(idx!=-1){ - dataRes[i][idx] =sign+QString::number(ErrorCal); - ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(sign+QString::number(ErrorCal))); //测量值 - } - - idx= getIndexByHeader(sLabel,"时基相对误差△δ"); + if(sLabel=="时基"){ + idx= getIndexByHeader(sLabel,QStrTranQStrList(("周期时标信号"))); + if(idx!=-1) { - dataRes[i][idx] =sign+QString::number(ErrorCal/0.01); - ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(sign+QString::number(ErrorCal/0.01))); //测量值 + double ErrorCal; + QString sign=""; + if(dStdValue>0.2){sign="-";}; + + bool bOk = false; + dStdValue = QInputDialog::getDouble(this,"手动输入","请输入△T/ns值",0,-100000, 100000,5,&bOk); + if (bOk) { + }else{ + dStdValue=0; + } + dStdValue=transUnit(QString::number(dStdValue),"ns",true); + ErrorCal=std::fabs(dStdValue); + idx= getIndexByHeader(sLabel,QStrTranQStrList(("时基绝对误差△T/ns"))); + if(idx!=-1){ + dataRes[i][idx] =sign+QString::number(ErrorCal); + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(sign+QString::number(ErrorCal))); //测量值 + } + + idx= getIndexByHeader(sLabel,QStrTranQStrList(("时基相对误差△δ"))); + { + dataRes[i][idx] =sign+QString::number(ErrorCal/0.01); + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(sign+QString::number(ErrorCal/0.01))); //测量值 + } } } + BaseCommonApi::SaveLogInfo(1,QString("转换前 测试值 %1").arg(dStdValue)); BaseCommonApi::SaveLogInfo(1,QString("转换后 测试值 %1").arg(newdStdValue)); @@ -1617,16 +1629,16 @@ } if(sLabel=="电压示值误差"||sLabel=="电流示值误差(直接测量)"||sLabel=="电流示值误差(间接测量)"){ newdStdValue= TranDecimals(sLabel,dataRes[i],dStdValue); - int idx= getIndexByHeader(sLabel,"标准值"); + int idx= getIndexByHeader(sLabel,QStrTranQStrList(("标准值"))); if(idx!=-1) { dataRes[i][idx] = newdStdValue; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); } - idx= getIndexByHeader(sLabel,"绝对误差"); + idx= getIndexByHeader(sLabel,QStrTranQStrList(("绝对误差"))); if(idx!=-1) { - int idx2=getIndexByHeader(sLabel,"被检表示值"); + int idx2=getIndexByHeader(sLabel,QStrTranQStrList(("被检表示值"))); double dTmp = dataRes[i][idx2].toDouble(); dError = dTmp-dStdValue; newdError=TranDecimals(sLabel,dataRes[i],dError); @@ -1636,23 +1648,23 @@ } else if(sLabel=="电源电压调整率"){ newdStdValue= TranDecimals(sLabel,dataRes[i],dStdValue); - int idx= getIndexByHeader(sLabel,"被检电源输出电压值"); + int idx= getIndexByHeader(sLabel,QStrTranQStrList("被检电源输出电压值")); if(idx!=-1) { dataRes[i][idx] = newdStdValue; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); } - idx= getIndexByHeader(sLabel,"被检电源输出电压最大差值"); + idx= getIndexByHeader(sLabel,QStrTranQStrList("被检电源输出电压最大差值")); if(idx!=-1) { - int idx2=getIndexByHeader(sLabel,"调压器输出值"); + int idx2=getIndexByHeader(sLabel,QStrTranQStrList("调压器输出值")); double dTmp = dataRes[i][idx2].toDouble(); dError = dTmp-dStdValue; newdError=TranDecimals(sLabel,dataRes[i],dError); dataRes[i][idx] = newdError; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); - idx= getIndexByHeader(sLabel,"电源电压调整率"); + idx= getIndexByHeader(sLabel,QStrTranQStrList("电源电压调整率")); if(idx!=-1){ dError = dError/dTmp; newdError=TranDecimals(sLabel,dataRes[i],dError)+"%"; @@ -1663,7 +1675,7 @@ } else if(sLabel=="负载调整率"){ newdStdValue= TranDecimals(sLabel,dataRes[i],dStdValue); - int idx= getIndexByHeader(sLabel,"被检电源输出电压值"); + int idx= getIndexByHeader(sLabel,QStrTranQStrList("被检电源输出电压值")); if(idx!=-1) { dataRes[i][idx] = newdStdValue; @@ -1677,7 +1689,7 @@ dEmpty = item[5].toDouble(); } } - idx= getIndexByHeader(sLabel,"电压差值"); + idx= getIndexByHeader(sLabel,QStrTranQStrList("电压差值")); if(idx!=-1) { dError = abs(dFull-dEmpty); @@ -1685,7 +1697,7 @@ dataRes[i][idx] = newdError; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); - idx= getIndexByHeader(sLabel,"负载调整率"); + idx= getIndexByHeader(sLabel,QStrTranQStrList("负载调整率")); if(idx!=-1){ dError = dError/dEmpty; newdError=TranDecimals(sLabel,dataRes[i],dError)+"%"; @@ -1709,19 +1721,19 @@ int k=0; for(QString title:titles){ newdStdValue= TranDecimals(sLabel,dataRes[i],results[k]); - int idx= getIndexByHeader(sLabel,title); + int idx= getIndexByHeader(sLabel,QStrTranQStrList((title))); dataRes[i][idx] = newdStdValue; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //示值 k++; BaseCommonApi::SaveLogInfo(1,QString("测试项目: %1 测试值: %2").arg(title).arg(newdStdValue)); } - int idx= getIndexByHeader(sLabel,"轻敲前后变动量-正"); + int idx= getIndexByHeader(sLabel,QStrTranQStrList("轻敲前后变动量-正")); if(idx!=-1){ newdError= TranDecimals(sLabel,dataRes[i],results[2]-results[0]); dataRes[i][idx] = newdError; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); } - idx= getIndexByHeader(sLabel,"轻敲前后变动量-反"); + idx= getIndexByHeader(sLabel,QStrTranQStrList("轻敲前后变动量-反")); if(idx!=-1){ newdError= TranDecimals(sLabel,dataRes[i],results[3]-results[1]); dataRes[i][idx] = newdError; @@ -1753,7 +1765,7 @@ InstructionLib *instrcutLibOhm; for (int i = 0; i < dataRes.count(); ++i) { TextCount=1; - int _dex= getIndexByHeader(sLabel,"通道"); + int _dex= getIndexByHeader(sLabel,QStrTranQStrList("通道")); if(_dex==-1){sParam=chList[_ch];}else{sParam=dataRes[i][_dex];} if(sParam!=chList[_ch]){continue;}; CheckBackColorUpdate(true,i); @@ -1761,7 +1773,7 @@ QString newCmd; double dStdValue=FP_INFINITE; QString newdStdValue; - int idx= getIndexByHeader(sLabel,"检定项目"); + int idx= getIndexByHeader(sLabel,QStrTranQStrList("检定项目")); QString sParam; if(idx!=-1) sParam = dataRes[i][idx]; @@ -1775,13 +1787,13 @@ InItstan= getCmdByCheckName(1,"INIT"); if(InItbiz!=nullptr && instrcutLibbiz!=nullptr) { - if(deviceEngine.getState()) + if(deviceEngine.getState() ) { //设置电阻值+ instrcutLibOhm= getCmdByCheckName(0,"电阻"); if(instrcutLibOhm!=nullptr){ QStringList ohmList = instrcutLibOhm->instruct_config.split(";"); - int idxohm= getIndexByHeader(sLabel,"阻抗"); + int idxohm= getIndexByHeader(sLabel,QStrTranQStrList("阻抗")); if(idxohm!=-1) { QString onmname="50Ω"; @@ -1874,16 +1886,17 @@ qDebug() << "query cmds:" << newCmd; sRet = deviceEngine.queryData(newCmd); - idx= getIndexByHeader(sLabel,"单位"); + idx= getIndexByHeader(sLabel,QStrTranQStrList("单位")); //ValueUnit if(idx!=-1) { ValueUnit=dataRes[i][idx]; }else { - int idx= getIndexByHeader(sLabel,"标准值"); - if(idx==-1) - idx= getIndexByHeader(sLabel,"标称值"); + QStringList temp; + temp.append("标准值"); + temp.append("标称值"); + int idx= getIndexByHeader(sLabel,temp); if(idx!=-1) ItemUnitSplit(dataRes[i][idx],ValueUnit,ValueUnit); @@ -2127,3 +2140,63 @@ return false; } } +QMap CheckWindow::readDataFromFile(QString filePath) { + // 获取应用程序的根目录 + QString path = QCoreApplication::applicationDirPath()+"\\File\\config\\"+filePath; + QMap dataMap; + QFile file(path); + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { + // 错误处理 + qDebug() << "无法打开文件:" << file.errorString(); + QString str=file.errorString(); + return dataMap; + } + + QTextStream in(&file); + in.setCodec("UTF-8"); + QString line; + bool isFirstLine = true; // 跳过第一行 + + while (!in.atEnd()) { + line = in.readLine(); + if (isFirstLine) { + isFirstLine = false; // 第一行已读,接下来读取数据 + continue; + } + + // 使用'|'分割键和值 + QStringList keyValuePairs = line.split(QRegExp("\\s*\\|\\s*"), QString::SkipEmptyParts); + if (keyValuePairs.size() != 2) { + continue; // 跳过不符合格式的行 + } + + QStringList keys, values; + + // 分割键部分,并替换空格为空字符串 + QString keyPart = keyValuePairs.at(0); + keys = keyPart.split(',', QString::SkipEmptyParts); + for (int i = 0; i < keys.size(); ++i) { + keys[i].replace(" ", ""); + } + + // 分割值部分,并替换空格为空字符串 + QString valuePart = keyValuePairs.at(1); + values = valuePart.split(',', QString::SkipEmptyParts); + for (int i = 0; i < values.size(); ++i) { + values[i].replace(" ", ""); + values[i].replace("\t", ""); + } + + // 将键和值的QStringList插入到QMap中 + dataMap.insert(keys, values); + } + + file.close(); + return dataMap; +} +QStringList CheckWindow::QStrTranQStrList(QString value) +{ + QStringList valuelist; + valuelist.append(value); + return valuelist; +} diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index ead5a17..490381d 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -73,7 +73,7 @@ void addGageData(bool bAdd=true); void on_pushButton_next_clicked(); - + QMap readDataFromFile(QString filePath); private: void getCheckDevice(bool bInit=true); void getCheckMethod(); @@ -86,7 +86,7 @@ bool comboBoxContainsItem(QComboBox *comboBox, const QString &itemText); void showStandard(); void connectDevice(); - int getIndexByHeader(QString sLabel,QString sName); + int getIndexByHeader(QString sLabel,QStringList sName); double transUnit(QString sData,QString sUnit,bool reverse=false); QString transCmd(QString sCmd,QString sLabel,QStringList data,bool reverse=false); void SetStandardCombox(CatDeviceInfor info); @@ -104,6 +104,8 @@ int TextCount; void openGageResult(); void stepGageCheck(); + QStringList getsParambyHeader(QString sParam); + QStringList QStrTranQStrList(QString value); private: Ui::CheckWindow *ui; QList programList; @@ -124,10 +126,12 @@ QStringList catIdList; int curHeadIdx=-1; int iEquipType=1; - QMap unitTransList; - //unitTypeTransList - QMap unitTypeTransList; - QMap cmdPlaceHolderList; + + QMap unitTransList; + QMap resultfillingList; + QMap unitTypeTransList; + QMap cmdPlaceHolderList; + QString standardId; int currConnectIdx; QList pageButtons;