diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 009f972..efc8d50 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -52,7 +52,19 @@ unitTransList.insert("KW",0.001); unitTransList.insert("Ω",1); unitTransList.insert("KΩ",0.001); - unitTransList.insert("KΩ",0.000001); + unitTransList.insert("MΩ",0.000001); + //统一定义命令占位符 + 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}","频率"); getCheckDevice(); //ui->stackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); @@ -750,14 +762,43 @@ return -1; } -double CheckWindow::transUnit(QString sData,QString sUnit){ +double CheckWindow::transUnit(QString sData,QString sUnit,bool reverse){ double dTmp = sData.toDouble(); - if(unitTransList.contains(sUnit.toUpper())){ - dTmp*=unitTransList.value(sUnit.toUpper()); + QString unit = sUnit.toUpper(); + if(unitTransList.contains(unit)){ + if(reverse) + dTmp/=unitTransList.value(unit); + else + dTmp*=unitTransList.value(unit); } return dTmp; } +QString CheckWindow::transCmd(QString sCmd,QString sLabel,QStringList data) +{ + QString sNewCmd = sCmd; + if(sNewCmd.contains("DELAY:")){ + int sTart = sNewCmd.indexOf(":"); + int delay = sNewCmd.mid(sTart+1,sNewCmd.length()-1-sTart).toInt(); + qDebug() << "delay time:" << delay; + Delay_MSec(delay); + return ""; + } + for (QString key : cmdPlaceHolderList.keys()) { + if(sCmd.contains(key)){ + int idx= getIndexByHeader(sLabel,cmdPlaceHolderList.value(key)); + if(idx!=-1){ + int idx2= getIndexByHeader(sLabel,"单位"); + QString unit = data[idx2]; + double dTmp = transUnit(data[idx],unit,true); + sNewCmd = sNewCmd.replace(key,QString::number(dTmp)); + } + + } + } + return sNewCmd; +} + void CheckWindow::on_pushButton_start_clicked() { connectDevice(); @@ -769,6 +810,7 @@ for (int i = 0; i < dataRes.count(); ++i) { QString sRet=""; + QString newCmd; double dStdValue,dError; //标准器输出 int idx= getIndexByHeader(sLabel,"检定项目"); @@ -779,8 +821,11 @@ QStringList sList = instrcutLib->instruct_config.split(";"); if(sList.length()>0){ for (QString& sCmd : sList){ - standardEngine.sendData(sCmd); - qDebug() << "standard cmds:" << sCmd; + newCmd = transCmd(sCmd,sLabel,dataRes[i]); + if(newCmd!=""){ + standardEngine.sendData(newCmd); + qDebug() << "standard cmds:" << newCmd; + } } } } @@ -792,15 +837,21 @@ QStringList sList = instrcutLib->instruct_config.split(";"); if(sList.length()>0){ for (QString& sCmd : sList){ - deviceEngine.sendData(sCmd); - qDebug() << "config cmds:" << sCmd; + newCmd = transCmd(sCmd,sLabel,dataRes[i]); + if(newCmd!=""){ + deviceEngine.sendData(newCmd); + qDebug() << "config cmds:" << newCmd; + } } } Delay_MSec(2000); - qDebug() << "query cmds:" << instrcutLib->instruct_read; - sRet = deviceEngine.queryData(instrcutLib->instruct_read); - idx= getIndexByHeader(sLabel,"单位"); - dStdValue = transUnit(sRet,dataRes[i][idx]); + newCmd = transCmd(instrcutLib->instruct_read,sLabel,dataRes[i]); + if(newCmd!=""){ + qDebug() << "query cmds:" << newCmd; + sRet = deviceEngine.queryData(newCmd); + idx= getIndexByHeader(sLabel,"单位"); + dStdValue = transUnit(sRet,dataRes[i][idx]); + } } } // diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 009f972..efc8d50 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -52,7 +52,19 @@ unitTransList.insert("KW",0.001); unitTransList.insert("Ω",1); unitTransList.insert("KΩ",0.001); - unitTransList.insert("KΩ",0.000001); + unitTransList.insert("MΩ",0.000001); + //统一定义命令占位符 + 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}","频率"); getCheckDevice(); //ui->stackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); @@ -750,14 +762,43 @@ return -1; } -double CheckWindow::transUnit(QString sData,QString sUnit){ +double CheckWindow::transUnit(QString sData,QString sUnit,bool reverse){ double dTmp = sData.toDouble(); - if(unitTransList.contains(sUnit.toUpper())){ - dTmp*=unitTransList.value(sUnit.toUpper()); + QString unit = sUnit.toUpper(); + if(unitTransList.contains(unit)){ + if(reverse) + dTmp/=unitTransList.value(unit); + else + dTmp*=unitTransList.value(unit); } return dTmp; } +QString CheckWindow::transCmd(QString sCmd,QString sLabel,QStringList data) +{ + QString sNewCmd = sCmd; + if(sNewCmd.contains("DELAY:")){ + int sTart = sNewCmd.indexOf(":"); + int delay = sNewCmd.mid(sTart+1,sNewCmd.length()-1-sTart).toInt(); + qDebug() << "delay time:" << delay; + Delay_MSec(delay); + return ""; + } + for (QString key : cmdPlaceHolderList.keys()) { + if(sCmd.contains(key)){ + int idx= getIndexByHeader(sLabel,cmdPlaceHolderList.value(key)); + if(idx!=-1){ + int idx2= getIndexByHeader(sLabel,"单位"); + QString unit = data[idx2]; + double dTmp = transUnit(data[idx],unit,true); + sNewCmd = sNewCmd.replace(key,QString::number(dTmp)); + } + + } + } + return sNewCmd; +} + void CheckWindow::on_pushButton_start_clicked() { connectDevice(); @@ -769,6 +810,7 @@ for (int i = 0; i < dataRes.count(); ++i) { QString sRet=""; + QString newCmd; double dStdValue,dError; //标准器输出 int idx= getIndexByHeader(sLabel,"检定项目"); @@ -779,8 +821,11 @@ QStringList sList = instrcutLib->instruct_config.split(";"); if(sList.length()>0){ for (QString& sCmd : sList){ - standardEngine.sendData(sCmd); - qDebug() << "standard cmds:" << sCmd; + newCmd = transCmd(sCmd,sLabel,dataRes[i]); + if(newCmd!=""){ + standardEngine.sendData(newCmd); + qDebug() << "standard cmds:" << newCmd; + } } } } @@ -792,15 +837,21 @@ QStringList sList = instrcutLib->instruct_config.split(";"); if(sList.length()>0){ for (QString& sCmd : sList){ - deviceEngine.sendData(sCmd); - qDebug() << "config cmds:" << sCmd; + newCmd = transCmd(sCmd,sLabel,dataRes[i]); + if(newCmd!=""){ + deviceEngine.sendData(newCmd); + qDebug() << "config cmds:" << newCmd; + } } } Delay_MSec(2000); - qDebug() << "query cmds:" << instrcutLib->instruct_read; - sRet = deviceEngine.queryData(instrcutLib->instruct_read); - idx= getIndexByHeader(sLabel,"单位"); - dStdValue = transUnit(sRet,dataRes[i][idx]); + newCmd = transCmd(instrcutLib->instruct_read,sLabel,dataRes[i]); + if(newCmd!=""){ + qDebug() << "query cmds:" << newCmd; + sRet = deviceEngine.queryData(newCmd); + idx= getIndexByHeader(sLabel,"单位"); + dStdValue = transUnit(sRet,dataRes[i][idx]); + } } } // diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 987cd18..ce91e11 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -78,7 +78,8 @@ void showStandard(); void connectDevice(); int getIndexByHeader(QString sLabel,QString sName); - double transUnit(QString sData,QString sUnit); + double transUnit(QString sData,QString sUnit,bool reverse=false); + QString transCmd(QString sCmd,QString sLabel,QStringList data); private: Ui::CheckWindow *ui; QList programList; @@ -98,6 +99,7 @@ int curHeadIdx=-1; int iEquipType=1; QMap unitTransList; + QMap cmdPlaceHolderList; QString standardId; int currConnectIdx; };