diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user index 162961a..02579f1 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user index 162961a..02579f1 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index beb4982..ff58124 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -1304,11 +1304,12 @@ " SET program_name = :program_name,create_name = :create_name, create_time = :create_time" "remark = :remark,img_path = :img_path,tested_device_id = :tested_device_id,standard_device_id = :standard_device_id ,update_time = :update_time" "WHERE id = :id;"); - QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + QString formattedDateTime = verInfo.create_time.toString("yyyy-MM-dd HH:mm:ss"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); query.bindValue(":update_time",currentDateTime); query.bindValue(":program_name", verInfo.program_name); query.bindValue(":create_name", verInfo.create_name); - query.bindValue(":create_time", verInfo.create_time); + query.bindValue(":create_time", formattedDateTime); query.bindValue(":remark", verInfo.remark); query.bindValue(":img_path", verInfo.img_path); query.bindValue(":tested_device_id", verInfo.tested_device_id); diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user index 162961a..02579f1 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index beb4982..ff58124 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -1304,11 +1304,12 @@ " SET program_name = :program_name,create_name = :create_name, create_time = :create_time" "remark = :remark,img_path = :img_path,tested_device_id = :tested_device_id,standard_device_id = :standard_device_id ,update_time = :update_time" "WHERE id = :id;"); - QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + QString formattedDateTime = verInfo.create_time.toString("yyyy-MM-dd HH:mm:ss"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); query.bindValue(":update_time",currentDateTime); query.bindValue(":program_name", verInfo.program_name); query.bindValue(":create_name", verInfo.create_name); - query.bindValue(":create_time", verInfo.create_time); + query.bindValue(":create_time", formattedDateTime); query.bindValue(":remark", verInfo.remark); query.bindValue(":img_path", verInfo.img_path); query.bindValue(":tested_device_id", verInfo.tested_device_id); diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 44aaa75..c90f1dc 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -3,6 +3,7 @@ #include "dialogcheckresult.h" #include #include "basecommonapi.h" +#include CheckWindow::CheckWindow(QWidget *parent) : QWidget(parent), @@ -27,6 +28,10 @@ ui->tableWidget_Point->setColumnWidth(0, 60); for(int i=1;i<3;i++) ui->tableWidget_Point->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidget_Standard->verticalHeader()->setParent(nullptr); + for(int i=0;i<2;i++) + ui->tableWidget_Standard->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidgetCheck->verticalHeader()->setParent(nullptr); getCheckDevice(); //ui->stackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); @@ -38,6 +43,9 @@ programList.clear(); connectList.clear(); selectTaskList.clear(); + headList.clear(); + calibrationList.clear(); + measureCalList.clear(); delete ui; } @@ -49,6 +57,7 @@ Qt::CheckState state = ui->tableWidgetDevice->item(i,0)->checkState(); if(state == Qt::Checked){ selectTaskList.append(myTaskList[i]); + measureInfo.order_id = myTaskList[i].id; /*if(ids=="") ids = myTaskList[i].id; else @@ -92,6 +101,8 @@ ui->tableWidget_3->clearContents(); ui->tableWidget_3->setRowCount(0); + ui->tableWidget_Standard->clearContents(); + ui->tableWidget_Standard->setRowCount(0); QStringList idList; int rowCount=0; int row=0; @@ -102,6 +113,8 @@ for(const QString& id : idList) { ConnectInfo info; + info.id = id; + info.type = 0; info.state="未连接"; QList result = BaseCommonApi::getTestedCatDevice(id); if(result.length()>0){ @@ -112,6 +125,7 @@ if(addrList.length()>0){ info.programInterface = addrList[0]; } + info.cmdList = BaseCommonApi::getInstructionLib(id); connectList.append(info); addrList.clear(); } @@ -123,29 +137,41 @@ for(const QString& id : idList) { ConnectInfo info; + info.id = id; + info.type = 1; info.state="未连接"; QList result = BaseCommonApi::getCatDeviceInfor(id); if(result.length()>0){ info.deviceName = result[0].equipment_name; + + //更新标准设备表格 + rowCount = ui->tableWidget_Standard->rowCount(); + ui->tableWidget_Standard->insertRow(rowCount); + ui->tableWidget_Standard->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_Standard->setItem(row, 1, new QTableWidgetItem("OFF")); //设置数据 + row++; } result.clear(); QList addrList = BaseCommonApi::getVerificationProgramConfigInterface(id); if(addrList.length()>0){ info.programInterface = addrList[0]; } + info.cmdList = BaseCommonApi::getInstructionLib(id); connectList.append(info); addrList.clear(); } idList.clear(); } - for(const ConnectInfo& info : connectList){ - rowCount = ui->tableWidget_3->rowCount(); - ui->tableWidget_3->insertRow(rowCount); - ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); - ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 - row++; - } - ui->tableWidget_3->selectRow(0); + rowCount=0; + row=0; + for(const ConnectInfo& info : connectList){ + rowCount = ui->tableWidget_3->rowCount(); + ui->tableWidget_3->insertRow(rowCount); + ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 + row++; + } + ui->tableWidget_3->selectRow(0); } void CheckWindow::showCheck() @@ -178,9 +204,10 @@ if(programInfo.tested_device_id!="") { QStringList idList=programInfo.tested_device_id.split(","); - QStringList headlist; - - QList Data=BaseCommonApi::Search_CalibrationTable(idList[0],&headlist); + //QStringList headlist; + headList.clear(); + calibrationList.clear(); + calibrationList =BaseCommonApi::Search_CalibrationTable(idList[0],&headList); //tableWidgetItem ui->tableWidget_Point->clearContents(); @@ -188,7 +215,7 @@ //循环数据 int rowCount=0; int row=0; - for (const QStringList& item : Data) + for (const QStringList& item : calibrationList) { //获取行号 并进行添加行 rowCount = ui->tableWidget_Point->rowCount(); @@ -259,6 +286,7 @@ void CheckWindow::showResult() { DialogCheckResult* dlg = new DialogCheckResult; + dlg->initCheckTable(measureCalList,headList); dlg->setModal(true); dlg->show(); } @@ -388,3 +416,134 @@ } } } + +void CheckWindow::initCheckTable() +{ + ui->tableWidgetCheck->clearContents(); + ui->tableWidgetCheck->setRowCount(0); + ui->tableWidgetCheck->setColumnCount(0); + int rowCount = 0; + int row=0; + ui->tableWidgetCheck->setColumnCount(headList.count()); + ui->tableWidgetCheck->setHorizontalHeaderLabels(headList); + for(int i=0;itableWidgetCheck->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + measureCalList.clear(); + for(int i=0;itableWidget_Point->rowCount();i++){ + Qt::CheckState state = ui->tableWidget_Point->item(i,0)->checkState(); + if(state == Qt::Checked){ + QStringList& item = calibrationList[i]; + int cnt = ui->tableWidget_Point->item(i,2)->text().toInt(); + for(int j=0;jtableWidgetCheck->rowCount(); + ui->tableWidgetCheck->insertRow(rowCount); + ui->tableWidgetCheck->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + //循环读取值 headlist,count是列的数量 + for(int k=1;ktableWidgetCheck->setItem(row, k, new QTableWidgetItem(item[k])); + } + SaveDeviceMeasureCalibrator measItem; + measItem.item_data_id = item[1]; + measItem.maximum_error_formula = item[10];//最大允许误差(公式) + measItem.error_param_a = item[11];//误差参数a + measItem.error_param_b = item[12];//误差参数b + measItem.params = item[2];//参数 + measItem.capacity=item[3];//量 + measItem.unit=item[4];//单位 + measItem.frequency=item[5];//频率 + measItem.frequency_unit=item[6];//频率单位 + measItem.range_range=item[7];//量程 + measItem.standard_value=item[8];//标准值(输入字段,特殊:指针式万用表输出字段) + measItem.indicating_value=item[15];//示值(输出字段,特殊:指针式万用表输入字段) + measItem.maximum_error=item[10];//最大允许误差(值) + //measItem.absolute_error=item[11];//绝对误差 + measItem.resolution=item[9];//分辨力 + measItem.measure_indication_value=item[19];//被检表示值 + measureCalList.append(measItem); + row++; + } + } + } + if(connectList.length()>0&&connectList[0].type==0) + deviceEngine.openDevice(connectList[0].programInterface.visa,"Visa"); + if(connectList.length()>1&&connectList[1].type==1) + standardEngine.openDevice(connectList[1].programInterface.visa,"Visa"); +} + +InstructionLib* CheckWindow::getCmdByCheckName(int idx,QString name) +{ + if(idx>=0&&idxinstruct_config.split(";"); + if(sList.length()>0){ + for (QString& sCmd : sList){ + standardEngine.sendData(sCmd); + } + } + } + } + //被检设备读数 + if(deviceEngine.getState()){ + InstructionLib *instrcutLib = getCmdByCheckName(0,item.params); + if(instrcutLib!=nullptr){ + QStringList sList = instrcutLib->instruct_config.split(";"); + if(sList.length()>0){ + for (QString& sCmd : sList){ + deviceEngine.sendData(sCmd); + } + } + Delay_MSec(2000); + sRet = deviceEngine.queryData(instrcutLib->instruct_read); + } + } + // + if(sRet==""){ + bool bOk = false; + double dRet = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,1,&bOk); + + if (bOk) { + sRet = QString::number(dRet); + } + } + item.measure_indication_value = sRet; + ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); + } +} + +void CheckWindow::Delay_MSec(unsigned int msec) +{ + QTime _Timer = QTime::currentTime().addMSecs(msec); + while( QTime::currentTime() < _Timer ) + QCoreApplication::processEvents(QEventLoop::AllEvents, 100); +} + +void CheckWindow::on_pushButton_pause_clicked() +{ + +} + +void CheckWindow::on_pushButton_stop_clicked() +{ + +} diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user index 162961a..02579f1 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index beb4982..ff58124 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -1304,11 +1304,12 @@ " SET program_name = :program_name,create_name = :create_name, create_time = :create_time" "remark = :remark,img_path = :img_path,tested_device_id = :tested_device_id,standard_device_id = :standard_device_id ,update_time = :update_time" "WHERE id = :id;"); - QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + QString formattedDateTime = verInfo.create_time.toString("yyyy-MM-dd HH:mm:ss"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); query.bindValue(":update_time",currentDateTime); query.bindValue(":program_name", verInfo.program_name); query.bindValue(":create_name", verInfo.create_name); - query.bindValue(":create_time", verInfo.create_time); + query.bindValue(":create_time", formattedDateTime); query.bindValue(":remark", verInfo.remark); query.bindValue(":img_path", verInfo.img_path); query.bindValue(":tested_device_id", verInfo.tested_device_id); diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 44aaa75..c90f1dc 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -3,6 +3,7 @@ #include "dialogcheckresult.h" #include #include "basecommonapi.h" +#include CheckWindow::CheckWindow(QWidget *parent) : QWidget(parent), @@ -27,6 +28,10 @@ ui->tableWidget_Point->setColumnWidth(0, 60); for(int i=1;i<3;i++) ui->tableWidget_Point->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidget_Standard->verticalHeader()->setParent(nullptr); + for(int i=0;i<2;i++) + ui->tableWidget_Standard->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidgetCheck->verticalHeader()->setParent(nullptr); getCheckDevice(); //ui->stackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); @@ -38,6 +43,9 @@ programList.clear(); connectList.clear(); selectTaskList.clear(); + headList.clear(); + calibrationList.clear(); + measureCalList.clear(); delete ui; } @@ -49,6 +57,7 @@ Qt::CheckState state = ui->tableWidgetDevice->item(i,0)->checkState(); if(state == Qt::Checked){ selectTaskList.append(myTaskList[i]); + measureInfo.order_id = myTaskList[i].id; /*if(ids=="") ids = myTaskList[i].id; else @@ -92,6 +101,8 @@ ui->tableWidget_3->clearContents(); ui->tableWidget_3->setRowCount(0); + ui->tableWidget_Standard->clearContents(); + ui->tableWidget_Standard->setRowCount(0); QStringList idList; int rowCount=0; int row=0; @@ -102,6 +113,8 @@ for(const QString& id : idList) { ConnectInfo info; + info.id = id; + info.type = 0; info.state="未连接"; QList result = BaseCommonApi::getTestedCatDevice(id); if(result.length()>0){ @@ -112,6 +125,7 @@ if(addrList.length()>0){ info.programInterface = addrList[0]; } + info.cmdList = BaseCommonApi::getInstructionLib(id); connectList.append(info); addrList.clear(); } @@ -123,29 +137,41 @@ for(const QString& id : idList) { ConnectInfo info; + info.id = id; + info.type = 1; info.state="未连接"; QList result = BaseCommonApi::getCatDeviceInfor(id); if(result.length()>0){ info.deviceName = result[0].equipment_name; + + //更新标准设备表格 + rowCount = ui->tableWidget_Standard->rowCount(); + ui->tableWidget_Standard->insertRow(rowCount); + ui->tableWidget_Standard->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_Standard->setItem(row, 1, new QTableWidgetItem("OFF")); //设置数据 + row++; } result.clear(); QList addrList = BaseCommonApi::getVerificationProgramConfigInterface(id); if(addrList.length()>0){ info.programInterface = addrList[0]; } + info.cmdList = BaseCommonApi::getInstructionLib(id); connectList.append(info); addrList.clear(); } idList.clear(); } - for(const ConnectInfo& info : connectList){ - rowCount = ui->tableWidget_3->rowCount(); - ui->tableWidget_3->insertRow(rowCount); - ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); - ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 - row++; - } - ui->tableWidget_3->selectRow(0); + rowCount=0; + row=0; + for(const ConnectInfo& info : connectList){ + rowCount = ui->tableWidget_3->rowCount(); + ui->tableWidget_3->insertRow(rowCount); + ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 + row++; + } + ui->tableWidget_3->selectRow(0); } void CheckWindow::showCheck() @@ -178,9 +204,10 @@ if(programInfo.tested_device_id!="") { QStringList idList=programInfo.tested_device_id.split(","); - QStringList headlist; - - QList Data=BaseCommonApi::Search_CalibrationTable(idList[0],&headlist); + //QStringList headlist; + headList.clear(); + calibrationList.clear(); + calibrationList =BaseCommonApi::Search_CalibrationTable(idList[0],&headList); //tableWidgetItem ui->tableWidget_Point->clearContents(); @@ -188,7 +215,7 @@ //循环数据 int rowCount=0; int row=0; - for (const QStringList& item : Data) + for (const QStringList& item : calibrationList) { //获取行号 并进行添加行 rowCount = ui->tableWidget_Point->rowCount(); @@ -259,6 +286,7 @@ void CheckWindow::showResult() { DialogCheckResult* dlg = new DialogCheckResult; + dlg->initCheckTable(measureCalList,headList); dlg->setModal(true); dlg->show(); } @@ -388,3 +416,134 @@ } } } + +void CheckWindow::initCheckTable() +{ + ui->tableWidgetCheck->clearContents(); + ui->tableWidgetCheck->setRowCount(0); + ui->tableWidgetCheck->setColumnCount(0); + int rowCount = 0; + int row=0; + ui->tableWidgetCheck->setColumnCount(headList.count()); + ui->tableWidgetCheck->setHorizontalHeaderLabels(headList); + for(int i=0;itableWidgetCheck->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + measureCalList.clear(); + for(int i=0;itableWidget_Point->rowCount();i++){ + Qt::CheckState state = ui->tableWidget_Point->item(i,0)->checkState(); + if(state == Qt::Checked){ + QStringList& item = calibrationList[i]; + int cnt = ui->tableWidget_Point->item(i,2)->text().toInt(); + for(int j=0;jtableWidgetCheck->rowCount(); + ui->tableWidgetCheck->insertRow(rowCount); + ui->tableWidgetCheck->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + //循环读取值 headlist,count是列的数量 + for(int k=1;ktableWidgetCheck->setItem(row, k, new QTableWidgetItem(item[k])); + } + SaveDeviceMeasureCalibrator measItem; + measItem.item_data_id = item[1]; + measItem.maximum_error_formula = item[10];//最大允许误差(公式) + measItem.error_param_a = item[11];//误差参数a + measItem.error_param_b = item[12];//误差参数b + measItem.params = item[2];//参数 + measItem.capacity=item[3];//量 + measItem.unit=item[4];//单位 + measItem.frequency=item[5];//频率 + measItem.frequency_unit=item[6];//频率单位 + measItem.range_range=item[7];//量程 + measItem.standard_value=item[8];//标准值(输入字段,特殊:指针式万用表输出字段) + measItem.indicating_value=item[15];//示值(输出字段,特殊:指针式万用表输入字段) + measItem.maximum_error=item[10];//最大允许误差(值) + //measItem.absolute_error=item[11];//绝对误差 + measItem.resolution=item[9];//分辨力 + measItem.measure_indication_value=item[19];//被检表示值 + measureCalList.append(measItem); + row++; + } + } + } + if(connectList.length()>0&&connectList[0].type==0) + deviceEngine.openDevice(connectList[0].programInterface.visa,"Visa"); + if(connectList.length()>1&&connectList[1].type==1) + standardEngine.openDevice(connectList[1].programInterface.visa,"Visa"); +} + +InstructionLib* CheckWindow::getCmdByCheckName(int idx,QString name) +{ + if(idx>=0&&idxinstruct_config.split(";"); + if(sList.length()>0){ + for (QString& sCmd : sList){ + standardEngine.sendData(sCmd); + } + } + } + } + //被检设备读数 + if(deviceEngine.getState()){ + InstructionLib *instrcutLib = getCmdByCheckName(0,item.params); + if(instrcutLib!=nullptr){ + QStringList sList = instrcutLib->instruct_config.split(";"); + if(sList.length()>0){ + for (QString& sCmd : sList){ + deviceEngine.sendData(sCmd); + } + } + Delay_MSec(2000); + sRet = deviceEngine.queryData(instrcutLib->instruct_read); + } + } + // + if(sRet==""){ + bool bOk = false; + double dRet = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,1,&bOk); + + if (bOk) { + sRet = QString::number(dRet); + } + } + item.measure_indication_value = sRet; + ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); + } +} + +void CheckWindow::Delay_MSec(unsigned int msec) +{ + QTime _Timer = QTime::currentTime().addMSecs(msec); + while( QTime::currentTime() < _Timer ) + QCoreApplication::processEvents(QEventLoop::AllEvents, 100); +} + +void CheckWindow::on_pushButton_pause_clicked() +{ + +} + +void CheckWindow::on_pushButton_stop_clicked() +{ + +} diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 8cfaaf3..35ca267 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -3,6 +3,7 @@ #include #include "basecommonapi.h" +#include "visacommonengine.h" namespace Ui { class CheckWindow; @@ -10,9 +11,12 @@ class ConnectInfo { public: + QString id; + int type; QString deviceName; QString state; VerificationProgramConfigInterface programInterface; + QList cmdList; }; class CheckWindow : public QWidget @@ -37,11 +41,20 @@ void on_tableWidget_3_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); void on_deviceButton_clicked(MyTask task,int idx); + void on_pushButton_start_clicked(); + + void on_pushButton_pause_clicked(); + + void on_pushButton_stop_clicked(); + private: void getCheckDevice(); void getCheckMethod(); void initDeviceInfo(); void deleteItem(QLayout *layout); + void initCheckTable(); + InstructionLib* getCmdByCheckName(int idx,QString name); + void Delay_MSec(unsigned int msec); private: Ui::CheckWindow *ui; QList programList; @@ -49,6 +62,12 @@ QList selectTaskList; VerificationProgramInfo programInfo; QList connectList; + QStringList headList; + QList calibrationList; + VisaCommonEngine deviceEngine; + VisaCommonEngine standardEngine; + QList measureCalList; + SaveDeviceMeasureInfo measureInfo; }; #endif // CHECKWINDOW_H diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user index 162961a..02579f1 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index beb4982..ff58124 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -1304,11 +1304,12 @@ " SET program_name = :program_name,create_name = :create_name, create_time = :create_time" "remark = :remark,img_path = :img_path,tested_device_id = :tested_device_id,standard_device_id = :standard_device_id ,update_time = :update_time" "WHERE id = :id;"); - QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + QString formattedDateTime = verInfo.create_time.toString("yyyy-MM-dd HH:mm:ss"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); query.bindValue(":update_time",currentDateTime); query.bindValue(":program_name", verInfo.program_name); query.bindValue(":create_name", verInfo.create_name); - query.bindValue(":create_time", verInfo.create_time); + query.bindValue(":create_time", formattedDateTime); query.bindValue(":remark", verInfo.remark); query.bindValue(":img_path", verInfo.img_path); query.bindValue(":tested_device_id", verInfo.tested_device_id); diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 44aaa75..c90f1dc 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -3,6 +3,7 @@ #include "dialogcheckresult.h" #include #include "basecommonapi.h" +#include CheckWindow::CheckWindow(QWidget *parent) : QWidget(parent), @@ -27,6 +28,10 @@ ui->tableWidget_Point->setColumnWidth(0, 60); for(int i=1;i<3;i++) ui->tableWidget_Point->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidget_Standard->verticalHeader()->setParent(nullptr); + for(int i=0;i<2;i++) + ui->tableWidget_Standard->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidgetCheck->verticalHeader()->setParent(nullptr); getCheckDevice(); //ui->stackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); @@ -38,6 +43,9 @@ programList.clear(); connectList.clear(); selectTaskList.clear(); + headList.clear(); + calibrationList.clear(); + measureCalList.clear(); delete ui; } @@ -49,6 +57,7 @@ Qt::CheckState state = ui->tableWidgetDevice->item(i,0)->checkState(); if(state == Qt::Checked){ selectTaskList.append(myTaskList[i]); + measureInfo.order_id = myTaskList[i].id; /*if(ids=="") ids = myTaskList[i].id; else @@ -92,6 +101,8 @@ ui->tableWidget_3->clearContents(); ui->tableWidget_3->setRowCount(0); + ui->tableWidget_Standard->clearContents(); + ui->tableWidget_Standard->setRowCount(0); QStringList idList; int rowCount=0; int row=0; @@ -102,6 +113,8 @@ for(const QString& id : idList) { ConnectInfo info; + info.id = id; + info.type = 0; info.state="未连接"; QList result = BaseCommonApi::getTestedCatDevice(id); if(result.length()>0){ @@ -112,6 +125,7 @@ if(addrList.length()>0){ info.programInterface = addrList[0]; } + info.cmdList = BaseCommonApi::getInstructionLib(id); connectList.append(info); addrList.clear(); } @@ -123,29 +137,41 @@ for(const QString& id : idList) { ConnectInfo info; + info.id = id; + info.type = 1; info.state="未连接"; QList result = BaseCommonApi::getCatDeviceInfor(id); if(result.length()>0){ info.deviceName = result[0].equipment_name; + + //更新标准设备表格 + rowCount = ui->tableWidget_Standard->rowCount(); + ui->tableWidget_Standard->insertRow(rowCount); + ui->tableWidget_Standard->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_Standard->setItem(row, 1, new QTableWidgetItem("OFF")); //设置数据 + row++; } result.clear(); QList addrList = BaseCommonApi::getVerificationProgramConfigInterface(id); if(addrList.length()>0){ info.programInterface = addrList[0]; } + info.cmdList = BaseCommonApi::getInstructionLib(id); connectList.append(info); addrList.clear(); } idList.clear(); } - for(const ConnectInfo& info : connectList){ - rowCount = ui->tableWidget_3->rowCount(); - ui->tableWidget_3->insertRow(rowCount); - ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); - ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 - row++; - } - ui->tableWidget_3->selectRow(0); + rowCount=0; + row=0; + for(const ConnectInfo& info : connectList){ + rowCount = ui->tableWidget_3->rowCount(); + ui->tableWidget_3->insertRow(rowCount); + ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 + row++; + } + ui->tableWidget_3->selectRow(0); } void CheckWindow::showCheck() @@ -178,9 +204,10 @@ if(programInfo.tested_device_id!="") { QStringList idList=programInfo.tested_device_id.split(","); - QStringList headlist; - - QList Data=BaseCommonApi::Search_CalibrationTable(idList[0],&headlist); + //QStringList headlist; + headList.clear(); + calibrationList.clear(); + calibrationList =BaseCommonApi::Search_CalibrationTable(idList[0],&headList); //tableWidgetItem ui->tableWidget_Point->clearContents(); @@ -188,7 +215,7 @@ //循环数据 int rowCount=0; int row=0; - for (const QStringList& item : Data) + for (const QStringList& item : calibrationList) { //获取行号 并进行添加行 rowCount = ui->tableWidget_Point->rowCount(); @@ -259,6 +286,7 @@ void CheckWindow::showResult() { DialogCheckResult* dlg = new DialogCheckResult; + dlg->initCheckTable(measureCalList,headList); dlg->setModal(true); dlg->show(); } @@ -388,3 +416,134 @@ } } } + +void CheckWindow::initCheckTable() +{ + ui->tableWidgetCheck->clearContents(); + ui->tableWidgetCheck->setRowCount(0); + ui->tableWidgetCheck->setColumnCount(0); + int rowCount = 0; + int row=0; + ui->tableWidgetCheck->setColumnCount(headList.count()); + ui->tableWidgetCheck->setHorizontalHeaderLabels(headList); + for(int i=0;itableWidgetCheck->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + measureCalList.clear(); + for(int i=0;itableWidget_Point->rowCount();i++){ + Qt::CheckState state = ui->tableWidget_Point->item(i,0)->checkState(); + if(state == Qt::Checked){ + QStringList& item = calibrationList[i]; + int cnt = ui->tableWidget_Point->item(i,2)->text().toInt(); + for(int j=0;jtableWidgetCheck->rowCount(); + ui->tableWidgetCheck->insertRow(rowCount); + ui->tableWidgetCheck->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + //循环读取值 headlist,count是列的数量 + for(int k=1;ktableWidgetCheck->setItem(row, k, new QTableWidgetItem(item[k])); + } + SaveDeviceMeasureCalibrator measItem; + measItem.item_data_id = item[1]; + measItem.maximum_error_formula = item[10];//最大允许误差(公式) + measItem.error_param_a = item[11];//误差参数a + measItem.error_param_b = item[12];//误差参数b + measItem.params = item[2];//参数 + measItem.capacity=item[3];//量 + measItem.unit=item[4];//单位 + measItem.frequency=item[5];//频率 + measItem.frequency_unit=item[6];//频率单位 + measItem.range_range=item[7];//量程 + measItem.standard_value=item[8];//标准值(输入字段,特殊:指针式万用表输出字段) + measItem.indicating_value=item[15];//示值(输出字段,特殊:指针式万用表输入字段) + measItem.maximum_error=item[10];//最大允许误差(值) + //measItem.absolute_error=item[11];//绝对误差 + measItem.resolution=item[9];//分辨力 + measItem.measure_indication_value=item[19];//被检表示值 + measureCalList.append(measItem); + row++; + } + } + } + if(connectList.length()>0&&connectList[0].type==0) + deviceEngine.openDevice(connectList[0].programInterface.visa,"Visa"); + if(connectList.length()>1&&connectList[1].type==1) + standardEngine.openDevice(connectList[1].programInterface.visa,"Visa"); +} + +InstructionLib* CheckWindow::getCmdByCheckName(int idx,QString name) +{ + if(idx>=0&&idxinstruct_config.split(";"); + if(sList.length()>0){ + for (QString& sCmd : sList){ + standardEngine.sendData(sCmd); + } + } + } + } + //被检设备读数 + if(deviceEngine.getState()){ + InstructionLib *instrcutLib = getCmdByCheckName(0,item.params); + if(instrcutLib!=nullptr){ + QStringList sList = instrcutLib->instruct_config.split(";"); + if(sList.length()>0){ + for (QString& sCmd : sList){ + deviceEngine.sendData(sCmd); + } + } + Delay_MSec(2000); + sRet = deviceEngine.queryData(instrcutLib->instruct_read); + } + } + // + if(sRet==""){ + bool bOk = false; + double dRet = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,1,&bOk); + + if (bOk) { + sRet = QString::number(dRet); + } + } + item.measure_indication_value = sRet; + ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); + } +} + +void CheckWindow::Delay_MSec(unsigned int msec) +{ + QTime _Timer = QTime::currentTime().addMSecs(msec); + while( QTime::currentTime() < _Timer ) + QCoreApplication::processEvents(QEventLoop::AllEvents, 100); +} + +void CheckWindow::on_pushButton_pause_clicked() +{ + +} + +void CheckWindow::on_pushButton_stop_clicked() +{ + +} diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 8cfaaf3..35ca267 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -3,6 +3,7 @@ #include #include "basecommonapi.h" +#include "visacommonengine.h" namespace Ui { class CheckWindow; @@ -10,9 +11,12 @@ class ConnectInfo { public: + QString id; + int type; QString deviceName; QString state; VerificationProgramConfigInterface programInterface; + QList cmdList; }; class CheckWindow : public QWidget @@ -37,11 +41,20 @@ void on_tableWidget_3_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); void on_deviceButton_clicked(MyTask task,int idx); + void on_pushButton_start_clicked(); + + void on_pushButton_pause_clicked(); + + void on_pushButton_stop_clicked(); + private: void getCheckDevice(); void getCheckMethod(); void initDeviceInfo(); void deleteItem(QLayout *layout); + void initCheckTable(); + InstructionLib* getCmdByCheckName(int idx,QString name); + void Delay_MSec(unsigned int msec); private: Ui::CheckWindow *ui; QList programList; @@ -49,6 +62,12 @@ QList selectTaskList; VerificationProgramInfo programInfo; QList connectList; + QStringList headList; + QList calibrationList; + VisaCommonEngine deviceEngine; + VisaCommonEngine standardEngine; + QList measureCalList; + SaveDeviceMeasureInfo measureInfo; }; #endif // CHECKWINDOW_H diff --git a/softwareDirectory/AutoVerScheme/checkwindow.ui b/softwareDirectory/AutoVerScheme/checkwindow.ui index d8d6a52..fb01e60 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.ui +++ b/softwareDirectory/AutoVerScheme/checkwindow.ui @@ -1266,7 +1266,7 @@ - + @@ -1293,6 +1293,36 @@ 标准设备面板 + + + + + + 设备名称 + + + + 12 + 75 + true + + + + + + 状态 + + + + 12 + 75 + true + + + + + + @@ -1515,7 +1545,7 @@ - + diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user index 162961a..02579f1 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index beb4982..ff58124 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -1304,11 +1304,12 @@ " SET program_name = :program_name,create_name = :create_name, create_time = :create_time" "remark = :remark,img_path = :img_path,tested_device_id = :tested_device_id,standard_device_id = :standard_device_id ,update_time = :update_time" "WHERE id = :id;"); - QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + QString formattedDateTime = verInfo.create_time.toString("yyyy-MM-dd HH:mm:ss"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); query.bindValue(":update_time",currentDateTime); query.bindValue(":program_name", verInfo.program_name); query.bindValue(":create_name", verInfo.create_name); - query.bindValue(":create_time", verInfo.create_time); + query.bindValue(":create_time", formattedDateTime); query.bindValue(":remark", verInfo.remark); query.bindValue(":img_path", verInfo.img_path); query.bindValue(":tested_device_id", verInfo.tested_device_id); diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 44aaa75..c90f1dc 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -3,6 +3,7 @@ #include "dialogcheckresult.h" #include #include "basecommonapi.h" +#include CheckWindow::CheckWindow(QWidget *parent) : QWidget(parent), @@ -27,6 +28,10 @@ ui->tableWidget_Point->setColumnWidth(0, 60); for(int i=1;i<3;i++) ui->tableWidget_Point->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidget_Standard->verticalHeader()->setParent(nullptr); + for(int i=0;i<2;i++) + ui->tableWidget_Standard->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidgetCheck->verticalHeader()->setParent(nullptr); getCheckDevice(); //ui->stackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); @@ -38,6 +43,9 @@ programList.clear(); connectList.clear(); selectTaskList.clear(); + headList.clear(); + calibrationList.clear(); + measureCalList.clear(); delete ui; } @@ -49,6 +57,7 @@ Qt::CheckState state = ui->tableWidgetDevice->item(i,0)->checkState(); if(state == Qt::Checked){ selectTaskList.append(myTaskList[i]); + measureInfo.order_id = myTaskList[i].id; /*if(ids=="") ids = myTaskList[i].id; else @@ -92,6 +101,8 @@ ui->tableWidget_3->clearContents(); ui->tableWidget_3->setRowCount(0); + ui->tableWidget_Standard->clearContents(); + ui->tableWidget_Standard->setRowCount(0); QStringList idList; int rowCount=0; int row=0; @@ -102,6 +113,8 @@ for(const QString& id : idList) { ConnectInfo info; + info.id = id; + info.type = 0; info.state="未连接"; QList result = BaseCommonApi::getTestedCatDevice(id); if(result.length()>0){ @@ -112,6 +125,7 @@ if(addrList.length()>0){ info.programInterface = addrList[0]; } + info.cmdList = BaseCommonApi::getInstructionLib(id); connectList.append(info); addrList.clear(); } @@ -123,29 +137,41 @@ for(const QString& id : idList) { ConnectInfo info; + info.id = id; + info.type = 1; info.state="未连接"; QList result = BaseCommonApi::getCatDeviceInfor(id); if(result.length()>0){ info.deviceName = result[0].equipment_name; + + //更新标准设备表格 + rowCount = ui->tableWidget_Standard->rowCount(); + ui->tableWidget_Standard->insertRow(rowCount); + ui->tableWidget_Standard->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_Standard->setItem(row, 1, new QTableWidgetItem("OFF")); //设置数据 + row++; } result.clear(); QList addrList = BaseCommonApi::getVerificationProgramConfigInterface(id); if(addrList.length()>0){ info.programInterface = addrList[0]; } + info.cmdList = BaseCommonApi::getInstructionLib(id); connectList.append(info); addrList.clear(); } idList.clear(); } - for(const ConnectInfo& info : connectList){ - rowCount = ui->tableWidget_3->rowCount(); - ui->tableWidget_3->insertRow(rowCount); - ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); - ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 - row++; - } - ui->tableWidget_3->selectRow(0); + rowCount=0; + row=0; + for(const ConnectInfo& info : connectList){ + rowCount = ui->tableWidget_3->rowCount(); + ui->tableWidget_3->insertRow(rowCount); + ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 + row++; + } + ui->tableWidget_3->selectRow(0); } void CheckWindow::showCheck() @@ -178,9 +204,10 @@ if(programInfo.tested_device_id!="") { QStringList idList=programInfo.tested_device_id.split(","); - QStringList headlist; - - QList Data=BaseCommonApi::Search_CalibrationTable(idList[0],&headlist); + //QStringList headlist; + headList.clear(); + calibrationList.clear(); + calibrationList =BaseCommonApi::Search_CalibrationTable(idList[0],&headList); //tableWidgetItem ui->tableWidget_Point->clearContents(); @@ -188,7 +215,7 @@ //循环数据 int rowCount=0; int row=0; - for (const QStringList& item : Data) + for (const QStringList& item : calibrationList) { //获取行号 并进行添加行 rowCount = ui->tableWidget_Point->rowCount(); @@ -259,6 +286,7 @@ void CheckWindow::showResult() { DialogCheckResult* dlg = new DialogCheckResult; + dlg->initCheckTable(measureCalList,headList); dlg->setModal(true); dlg->show(); } @@ -388,3 +416,134 @@ } } } + +void CheckWindow::initCheckTable() +{ + ui->tableWidgetCheck->clearContents(); + ui->tableWidgetCheck->setRowCount(0); + ui->tableWidgetCheck->setColumnCount(0); + int rowCount = 0; + int row=0; + ui->tableWidgetCheck->setColumnCount(headList.count()); + ui->tableWidgetCheck->setHorizontalHeaderLabels(headList); + for(int i=0;itableWidgetCheck->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + measureCalList.clear(); + for(int i=0;itableWidget_Point->rowCount();i++){ + Qt::CheckState state = ui->tableWidget_Point->item(i,0)->checkState(); + if(state == Qt::Checked){ + QStringList& item = calibrationList[i]; + int cnt = ui->tableWidget_Point->item(i,2)->text().toInt(); + for(int j=0;jtableWidgetCheck->rowCount(); + ui->tableWidgetCheck->insertRow(rowCount); + ui->tableWidgetCheck->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + //循环读取值 headlist,count是列的数量 + for(int k=1;ktableWidgetCheck->setItem(row, k, new QTableWidgetItem(item[k])); + } + SaveDeviceMeasureCalibrator measItem; + measItem.item_data_id = item[1]; + measItem.maximum_error_formula = item[10];//最大允许误差(公式) + measItem.error_param_a = item[11];//误差参数a + measItem.error_param_b = item[12];//误差参数b + measItem.params = item[2];//参数 + measItem.capacity=item[3];//量 + measItem.unit=item[4];//单位 + measItem.frequency=item[5];//频率 + measItem.frequency_unit=item[6];//频率单位 + measItem.range_range=item[7];//量程 + measItem.standard_value=item[8];//标准值(输入字段,特殊:指针式万用表输出字段) + measItem.indicating_value=item[15];//示值(输出字段,特殊:指针式万用表输入字段) + measItem.maximum_error=item[10];//最大允许误差(值) + //measItem.absolute_error=item[11];//绝对误差 + measItem.resolution=item[9];//分辨力 + measItem.measure_indication_value=item[19];//被检表示值 + measureCalList.append(measItem); + row++; + } + } + } + if(connectList.length()>0&&connectList[0].type==0) + deviceEngine.openDevice(connectList[0].programInterface.visa,"Visa"); + if(connectList.length()>1&&connectList[1].type==1) + standardEngine.openDevice(connectList[1].programInterface.visa,"Visa"); +} + +InstructionLib* CheckWindow::getCmdByCheckName(int idx,QString name) +{ + if(idx>=0&&idxinstruct_config.split(";"); + if(sList.length()>0){ + for (QString& sCmd : sList){ + standardEngine.sendData(sCmd); + } + } + } + } + //被检设备读数 + if(deviceEngine.getState()){ + InstructionLib *instrcutLib = getCmdByCheckName(0,item.params); + if(instrcutLib!=nullptr){ + QStringList sList = instrcutLib->instruct_config.split(";"); + if(sList.length()>0){ + for (QString& sCmd : sList){ + deviceEngine.sendData(sCmd); + } + } + Delay_MSec(2000); + sRet = deviceEngine.queryData(instrcutLib->instruct_read); + } + } + // + if(sRet==""){ + bool bOk = false; + double dRet = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,1,&bOk); + + if (bOk) { + sRet = QString::number(dRet); + } + } + item.measure_indication_value = sRet; + ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); + } +} + +void CheckWindow::Delay_MSec(unsigned int msec) +{ + QTime _Timer = QTime::currentTime().addMSecs(msec); + while( QTime::currentTime() < _Timer ) + QCoreApplication::processEvents(QEventLoop::AllEvents, 100); +} + +void CheckWindow::on_pushButton_pause_clicked() +{ + +} + +void CheckWindow::on_pushButton_stop_clicked() +{ + +} diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 8cfaaf3..35ca267 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -3,6 +3,7 @@ #include #include "basecommonapi.h" +#include "visacommonengine.h" namespace Ui { class CheckWindow; @@ -10,9 +11,12 @@ class ConnectInfo { public: + QString id; + int type; QString deviceName; QString state; VerificationProgramConfigInterface programInterface; + QList cmdList; }; class CheckWindow : public QWidget @@ -37,11 +41,20 @@ void on_tableWidget_3_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); void on_deviceButton_clicked(MyTask task,int idx); + void on_pushButton_start_clicked(); + + void on_pushButton_pause_clicked(); + + void on_pushButton_stop_clicked(); + private: void getCheckDevice(); void getCheckMethod(); void initDeviceInfo(); void deleteItem(QLayout *layout); + void initCheckTable(); + InstructionLib* getCmdByCheckName(int idx,QString name); + void Delay_MSec(unsigned int msec); private: Ui::CheckWindow *ui; QList programList; @@ -49,6 +62,12 @@ QList selectTaskList; VerificationProgramInfo programInfo; QList connectList; + QStringList headList; + QList calibrationList; + VisaCommonEngine deviceEngine; + VisaCommonEngine standardEngine; + QList measureCalList; + SaveDeviceMeasureInfo measureInfo; }; #endif // CHECKWINDOW_H diff --git a/softwareDirectory/AutoVerScheme/checkwindow.ui b/softwareDirectory/AutoVerScheme/checkwindow.ui index d8d6a52..fb01e60 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.ui +++ b/softwareDirectory/AutoVerScheme/checkwindow.ui @@ -1266,7 +1266,7 @@ - + @@ -1293,6 +1293,36 @@ 标准设备面板 + + + + + + 设备名称 + + + + 12 + 75 + true + + + + + + 状态 + + + + 12 + 75 + true + + + + + + @@ -1515,7 +1545,7 @@ - + diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp index 3a10cb0..41e1816 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp @@ -1,13 +1,13 @@ #include "dialogcheckresult.h" #include "ui_dialogcheckresult.h" +#include DialogCheckResult::DialogCheckResult(QWidget *parent) : QDialog(parent), ui(new Ui::DialogCheckResult) { ui->setupUi(this); - for(int i=0;i<7;i++) - ui->tableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } DialogCheckResult::~DialogCheckResult() @@ -15,10 +15,66 @@ delete ui; } +void DialogCheckResult::initCheckTable(QList measList,QStringList headList) +{ + ui->tableWidget->verticalHeader()->setParent(nullptr); + ui->tableWidget->setColumnCount(headList.count()); + ui->tableWidget->setHorizontalHeaderLabels(headList); + for(int i=0;itableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + int rowCount=0; + int row=0; + measureCalList = measList; + for (const SaveDeviceMeasureCalibrator& measItem : measList) + { + //获取行号 并进行添加行 + rowCount = ui->tableWidget->rowCount(); + ui->tableWidget->insertRow(rowCount); + //添加 序号 + ui->tableWidget->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + + ui->tableWidget->setItem(row, 2, new QTableWidgetItem(measItem.params)); + ui->tableWidget->setItem(row, 3, new QTableWidgetItem(measItem.capacity)); + ui->tableWidget->setItem(row, 4, new QTableWidgetItem(measItem.unit)); + ui->tableWidget->setItem(row, 5, new QTableWidgetItem(measItem.frequency)); + ui->tableWidget->setItem(row, 6, new QTableWidgetItem(measItem.frequency_unit)); + ui->tableWidget->setItem(row, 7, new QTableWidgetItem(measItem.range_range)); + ui->tableWidget->setItem(row, 8, new QTableWidgetItem(measItem.standard_value)); + ui->tableWidget->setItem(row, 9, new QTableWidgetItem(measItem.resolution)); + ui->tableWidget->setItem(row, 10, new QTableWidgetItem(measItem.maximum_error)); + ui->tableWidget->setItem(row, 11, new QTableWidgetItem(measItem.error_param_a)); + ui->tableWidget->setItem(row, 12, new QTableWidgetItem(measItem.error_param_b)); + ui->tableWidget->setItem(row, 15, new QTableWidgetItem(measItem.indicating_value)); + ui->tableWidget->setItem(row, 19, new QTableWidgetItem(measItem.measure_indication_value)); + row++; + } +} + void DialogCheckResult::on_pushButton_3_clicked() { SaveDeviceMeasureInfo measInfo; - BaseCommonApi::InsertSaveDeviceMeasureInfo(measInfo); + BaseCommonApi api; + measInfo.id = QString::number(api.generateId()); + measInfo.data_no = "jdsj"+QDateTime::currentDateTime().toString("yyyyMMdd")+"0002"; + measInfo.temperature = ui->lineEditTemp->text(); + measInfo.humidity =ui->lineEdit_Hum->text(); + measInfo.measure_address=ui->comboBoxPlace->currentText(); + measInfo.trace_date = ui->dateEditCheck->date(); + measInfo.measure_valid_date = ui->dateEdit_Valid->dateTime(); + measInfo.outcome = ui->lineEdit_Cons->text(); + if(BaseCommonApi::InsertSaveDeviceMeasureInfo(measInfo)){ + for(SaveDeviceMeasureCalibrator& item:measureCalList){ + item.id = QString::number(api.generateId()); + item.data_id = measInfo.id; + BaseCommonApi::InsertVerMultiCal(item); + } + } + else + { + QMessageBox::warning(this, "警告", "保存失败!"); + } } void DialogCheckResult::on_pushButton_2_clicked() diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user index 162961a..02579f1 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index beb4982..ff58124 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -1304,11 +1304,12 @@ " SET program_name = :program_name,create_name = :create_name, create_time = :create_time" "remark = :remark,img_path = :img_path,tested_device_id = :tested_device_id,standard_device_id = :standard_device_id ,update_time = :update_time" "WHERE id = :id;"); - QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + QString formattedDateTime = verInfo.create_time.toString("yyyy-MM-dd HH:mm:ss"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); query.bindValue(":update_time",currentDateTime); query.bindValue(":program_name", verInfo.program_name); query.bindValue(":create_name", verInfo.create_name); - query.bindValue(":create_time", verInfo.create_time); + query.bindValue(":create_time", formattedDateTime); query.bindValue(":remark", verInfo.remark); query.bindValue(":img_path", verInfo.img_path); query.bindValue(":tested_device_id", verInfo.tested_device_id); diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 44aaa75..c90f1dc 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -3,6 +3,7 @@ #include "dialogcheckresult.h" #include #include "basecommonapi.h" +#include CheckWindow::CheckWindow(QWidget *parent) : QWidget(parent), @@ -27,6 +28,10 @@ ui->tableWidget_Point->setColumnWidth(0, 60); for(int i=1;i<3;i++) ui->tableWidget_Point->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidget_Standard->verticalHeader()->setParent(nullptr); + for(int i=0;i<2;i++) + ui->tableWidget_Standard->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidgetCheck->verticalHeader()->setParent(nullptr); getCheckDevice(); //ui->stackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); @@ -38,6 +43,9 @@ programList.clear(); connectList.clear(); selectTaskList.clear(); + headList.clear(); + calibrationList.clear(); + measureCalList.clear(); delete ui; } @@ -49,6 +57,7 @@ Qt::CheckState state = ui->tableWidgetDevice->item(i,0)->checkState(); if(state == Qt::Checked){ selectTaskList.append(myTaskList[i]); + measureInfo.order_id = myTaskList[i].id; /*if(ids=="") ids = myTaskList[i].id; else @@ -92,6 +101,8 @@ ui->tableWidget_3->clearContents(); ui->tableWidget_3->setRowCount(0); + ui->tableWidget_Standard->clearContents(); + ui->tableWidget_Standard->setRowCount(0); QStringList idList; int rowCount=0; int row=0; @@ -102,6 +113,8 @@ for(const QString& id : idList) { ConnectInfo info; + info.id = id; + info.type = 0; info.state="未连接"; QList result = BaseCommonApi::getTestedCatDevice(id); if(result.length()>0){ @@ -112,6 +125,7 @@ if(addrList.length()>0){ info.programInterface = addrList[0]; } + info.cmdList = BaseCommonApi::getInstructionLib(id); connectList.append(info); addrList.clear(); } @@ -123,29 +137,41 @@ for(const QString& id : idList) { ConnectInfo info; + info.id = id; + info.type = 1; info.state="未连接"; QList result = BaseCommonApi::getCatDeviceInfor(id); if(result.length()>0){ info.deviceName = result[0].equipment_name; + + //更新标准设备表格 + rowCount = ui->tableWidget_Standard->rowCount(); + ui->tableWidget_Standard->insertRow(rowCount); + ui->tableWidget_Standard->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_Standard->setItem(row, 1, new QTableWidgetItem("OFF")); //设置数据 + row++; } result.clear(); QList addrList = BaseCommonApi::getVerificationProgramConfigInterface(id); if(addrList.length()>0){ info.programInterface = addrList[0]; } + info.cmdList = BaseCommonApi::getInstructionLib(id); connectList.append(info); addrList.clear(); } idList.clear(); } - for(const ConnectInfo& info : connectList){ - rowCount = ui->tableWidget_3->rowCount(); - ui->tableWidget_3->insertRow(rowCount); - ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); - ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 - row++; - } - ui->tableWidget_3->selectRow(0); + rowCount=0; + row=0; + for(const ConnectInfo& info : connectList){ + rowCount = ui->tableWidget_3->rowCount(); + ui->tableWidget_3->insertRow(rowCount); + ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 + row++; + } + ui->tableWidget_3->selectRow(0); } void CheckWindow::showCheck() @@ -178,9 +204,10 @@ if(programInfo.tested_device_id!="") { QStringList idList=programInfo.tested_device_id.split(","); - QStringList headlist; - - QList Data=BaseCommonApi::Search_CalibrationTable(idList[0],&headlist); + //QStringList headlist; + headList.clear(); + calibrationList.clear(); + calibrationList =BaseCommonApi::Search_CalibrationTable(idList[0],&headList); //tableWidgetItem ui->tableWidget_Point->clearContents(); @@ -188,7 +215,7 @@ //循环数据 int rowCount=0; int row=0; - for (const QStringList& item : Data) + for (const QStringList& item : calibrationList) { //获取行号 并进行添加行 rowCount = ui->tableWidget_Point->rowCount(); @@ -259,6 +286,7 @@ void CheckWindow::showResult() { DialogCheckResult* dlg = new DialogCheckResult; + dlg->initCheckTable(measureCalList,headList); dlg->setModal(true); dlg->show(); } @@ -388,3 +416,134 @@ } } } + +void CheckWindow::initCheckTable() +{ + ui->tableWidgetCheck->clearContents(); + ui->tableWidgetCheck->setRowCount(0); + ui->tableWidgetCheck->setColumnCount(0); + int rowCount = 0; + int row=0; + ui->tableWidgetCheck->setColumnCount(headList.count()); + ui->tableWidgetCheck->setHorizontalHeaderLabels(headList); + for(int i=0;itableWidgetCheck->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + measureCalList.clear(); + for(int i=0;itableWidget_Point->rowCount();i++){ + Qt::CheckState state = ui->tableWidget_Point->item(i,0)->checkState(); + if(state == Qt::Checked){ + QStringList& item = calibrationList[i]; + int cnt = ui->tableWidget_Point->item(i,2)->text().toInt(); + for(int j=0;jtableWidgetCheck->rowCount(); + ui->tableWidgetCheck->insertRow(rowCount); + ui->tableWidgetCheck->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + //循环读取值 headlist,count是列的数量 + for(int k=1;ktableWidgetCheck->setItem(row, k, new QTableWidgetItem(item[k])); + } + SaveDeviceMeasureCalibrator measItem; + measItem.item_data_id = item[1]; + measItem.maximum_error_formula = item[10];//最大允许误差(公式) + measItem.error_param_a = item[11];//误差参数a + measItem.error_param_b = item[12];//误差参数b + measItem.params = item[2];//参数 + measItem.capacity=item[3];//量 + measItem.unit=item[4];//单位 + measItem.frequency=item[5];//频率 + measItem.frequency_unit=item[6];//频率单位 + measItem.range_range=item[7];//量程 + measItem.standard_value=item[8];//标准值(输入字段,特殊:指针式万用表输出字段) + measItem.indicating_value=item[15];//示值(输出字段,特殊:指针式万用表输入字段) + measItem.maximum_error=item[10];//最大允许误差(值) + //measItem.absolute_error=item[11];//绝对误差 + measItem.resolution=item[9];//分辨力 + measItem.measure_indication_value=item[19];//被检表示值 + measureCalList.append(measItem); + row++; + } + } + } + if(connectList.length()>0&&connectList[0].type==0) + deviceEngine.openDevice(connectList[0].programInterface.visa,"Visa"); + if(connectList.length()>1&&connectList[1].type==1) + standardEngine.openDevice(connectList[1].programInterface.visa,"Visa"); +} + +InstructionLib* CheckWindow::getCmdByCheckName(int idx,QString name) +{ + if(idx>=0&&idxinstruct_config.split(";"); + if(sList.length()>0){ + for (QString& sCmd : sList){ + standardEngine.sendData(sCmd); + } + } + } + } + //被检设备读数 + if(deviceEngine.getState()){ + InstructionLib *instrcutLib = getCmdByCheckName(0,item.params); + if(instrcutLib!=nullptr){ + QStringList sList = instrcutLib->instruct_config.split(";"); + if(sList.length()>0){ + for (QString& sCmd : sList){ + deviceEngine.sendData(sCmd); + } + } + Delay_MSec(2000); + sRet = deviceEngine.queryData(instrcutLib->instruct_read); + } + } + // + if(sRet==""){ + bool bOk = false; + double dRet = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,1,&bOk); + + if (bOk) { + sRet = QString::number(dRet); + } + } + item.measure_indication_value = sRet; + ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); + } +} + +void CheckWindow::Delay_MSec(unsigned int msec) +{ + QTime _Timer = QTime::currentTime().addMSecs(msec); + while( QTime::currentTime() < _Timer ) + QCoreApplication::processEvents(QEventLoop::AllEvents, 100); +} + +void CheckWindow::on_pushButton_pause_clicked() +{ + +} + +void CheckWindow::on_pushButton_stop_clicked() +{ + +} diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 8cfaaf3..35ca267 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -3,6 +3,7 @@ #include #include "basecommonapi.h" +#include "visacommonengine.h" namespace Ui { class CheckWindow; @@ -10,9 +11,12 @@ class ConnectInfo { public: + QString id; + int type; QString deviceName; QString state; VerificationProgramConfigInterface programInterface; + QList cmdList; }; class CheckWindow : public QWidget @@ -37,11 +41,20 @@ void on_tableWidget_3_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); void on_deviceButton_clicked(MyTask task,int idx); + void on_pushButton_start_clicked(); + + void on_pushButton_pause_clicked(); + + void on_pushButton_stop_clicked(); + private: void getCheckDevice(); void getCheckMethod(); void initDeviceInfo(); void deleteItem(QLayout *layout); + void initCheckTable(); + InstructionLib* getCmdByCheckName(int idx,QString name); + void Delay_MSec(unsigned int msec); private: Ui::CheckWindow *ui; QList programList; @@ -49,6 +62,12 @@ QList selectTaskList; VerificationProgramInfo programInfo; QList connectList; + QStringList headList; + QList calibrationList; + VisaCommonEngine deviceEngine; + VisaCommonEngine standardEngine; + QList measureCalList; + SaveDeviceMeasureInfo measureInfo; }; #endif // CHECKWINDOW_H diff --git a/softwareDirectory/AutoVerScheme/checkwindow.ui b/softwareDirectory/AutoVerScheme/checkwindow.ui index d8d6a52..fb01e60 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.ui +++ b/softwareDirectory/AutoVerScheme/checkwindow.ui @@ -1266,7 +1266,7 @@ - + @@ -1293,6 +1293,36 @@ 标准设备面板 + + + + + + 设备名称 + + + + 12 + 75 + true + + + + + + 状态 + + + + 12 + 75 + true + + + + + + @@ -1515,7 +1545,7 @@ - + diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp index 3a10cb0..41e1816 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp @@ -1,13 +1,13 @@ #include "dialogcheckresult.h" #include "ui_dialogcheckresult.h" +#include DialogCheckResult::DialogCheckResult(QWidget *parent) : QDialog(parent), ui(new Ui::DialogCheckResult) { ui->setupUi(this); - for(int i=0;i<7;i++) - ui->tableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } DialogCheckResult::~DialogCheckResult() @@ -15,10 +15,66 @@ delete ui; } +void DialogCheckResult::initCheckTable(QList measList,QStringList headList) +{ + ui->tableWidget->verticalHeader()->setParent(nullptr); + ui->tableWidget->setColumnCount(headList.count()); + ui->tableWidget->setHorizontalHeaderLabels(headList); + for(int i=0;itableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + int rowCount=0; + int row=0; + measureCalList = measList; + for (const SaveDeviceMeasureCalibrator& measItem : measList) + { + //获取行号 并进行添加行 + rowCount = ui->tableWidget->rowCount(); + ui->tableWidget->insertRow(rowCount); + //添加 序号 + ui->tableWidget->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + + ui->tableWidget->setItem(row, 2, new QTableWidgetItem(measItem.params)); + ui->tableWidget->setItem(row, 3, new QTableWidgetItem(measItem.capacity)); + ui->tableWidget->setItem(row, 4, new QTableWidgetItem(measItem.unit)); + ui->tableWidget->setItem(row, 5, new QTableWidgetItem(measItem.frequency)); + ui->tableWidget->setItem(row, 6, new QTableWidgetItem(measItem.frequency_unit)); + ui->tableWidget->setItem(row, 7, new QTableWidgetItem(measItem.range_range)); + ui->tableWidget->setItem(row, 8, new QTableWidgetItem(measItem.standard_value)); + ui->tableWidget->setItem(row, 9, new QTableWidgetItem(measItem.resolution)); + ui->tableWidget->setItem(row, 10, new QTableWidgetItem(measItem.maximum_error)); + ui->tableWidget->setItem(row, 11, new QTableWidgetItem(measItem.error_param_a)); + ui->tableWidget->setItem(row, 12, new QTableWidgetItem(measItem.error_param_b)); + ui->tableWidget->setItem(row, 15, new QTableWidgetItem(measItem.indicating_value)); + ui->tableWidget->setItem(row, 19, new QTableWidgetItem(measItem.measure_indication_value)); + row++; + } +} + void DialogCheckResult::on_pushButton_3_clicked() { SaveDeviceMeasureInfo measInfo; - BaseCommonApi::InsertSaveDeviceMeasureInfo(measInfo); + BaseCommonApi api; + measInfo.id = QString::number(api.generateId()); + measInfo.data_no = "jdsj"+QDateTime::currentDateTime().toString("yyyyMMdd")+"0002"; + measInfo.temperature = ui->lineEditTemp->text(); + measInfo.humidity =ui->lineEdit_Hum->text(); + measInfo.measure_address=ui->comboBoxPlace->currentText(); + measInfo.trace_date = ui->dateEditCheck->date(); + measInfo.measure_valid_date = ui->dateEdit_Valid->dateTime(); + measInfo.outcome = ui->lineEdit_Cons->text(); + if(BaseCommonApi::InsertSaveDeviceMeasureInfo(measInfo)){ + for(SaveDeviceMeasureCalibrator& item:measureCalList){ + item.id = QString::number(api.generateId()); + item.data_id = measInfo.id; + BaseCommonApi::InsertVerMultiCal(item); + } + } + else + { + QMessageBox::warning(this, "警告", "保存失败!"); + } } void DialogCheckResult::on_pushButton_2_clicked() diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.h b/softwareDirectory/AutoVerScheme/dialogcheckresult.h index aec3b88..43cecac 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.h +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.h @@ -15,6 +15,7 @@ public: explicit DialogCheckResult(QWidget *parent = nullptr); ~DialogCheckResult(); + void initCheckTable(QList measList,QStringList headList); private slots: void on_pushButton_3_clicked(); @@ -25,6 +26,7 @@ private: Ui::DialogCheckResult *ui; + QList measureCalList; }; #endif // DIALOGCHECKRESULT_H diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user index 162961a..02579f1 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index beb4982..ff58124 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -1304,11 +1304,12 @@ " SET program_name = :program_name,create_name = :create_name, create_time = :create_time" "remark = :remark,img_path = :img_path,tested_device_id = :tested_device_id,standard_device_id = :standard_device_id ,update_time = :update_time" "WHERE id = :id;"); - QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + QString formattedDateTime = verInfo.create_time.toString("yyyy-MM-dd HH:mm:ss"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); query.bindValue(":update_time",currentDateTime); query.bindValue(":program_name", verInfo.program_name); query.bindValue(":create_name", verInfo.create_name); - query.bindValue(":create_time", verInfo.create_time); + query.bindValue(":create_time", formattedDateTime); query.bindValue(":remark", verInfo.remark); query.bindValue(":img_path", verInfo.img_path); query.bindValue(":tested_device_id", verInfo.tested_device_id); diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 44aaa75..c90f1dc 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -3,6 +3,7 @@ #include "dialogcheckresult.h" #include #include "basecommonapi.h" +#include CheckWindow::CheckWindow(QWidget *parent) : QWidget(parent), @@ -27,6 +28,10 @@ ui->tableWidget_Point->setColumnWidth(0, 60); for(int i=1;i<3;i++) ui->tableWidget_Point->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidget_Standard->verticalHeader()->setParent(nullptr); + for(int i=0;i<2;i++) + ui->tableWidget_Standard->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidgetCheck->verticalHeader()->setParent(nullptr); getCheckDevice(); //ui->stackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); @@ -38,6 +43,9 @@ programList.clear(); connectList.clear(); selectTaskList.clear(); + headList.clear(); + calibrationList.clear(); + measureCalList.clear(); delete ui; } @@ -49,6 +57,7 @@ Qt::CheckState state = ui->tableWidgetDevice->item(i,0)->checkState(); if(state == Qt::Checked){ selectTaskList.append(myTaskList[i]); + measureInfo.order_id = myTaskList[i].id; /*if(ids=="") ids = myTaskList[i].id; else @@ -92,6 +101,8 @@ ui->tableWidget_3->clearContents(); ui->tableWidget_3->setRowCount(0); + ui->tableWidget_Standard->clearContents(); + ui->tableWidget_Standard->setRowCount(0); QStringList idList; int rowCount=0; int row=0; @@ -102,6 +113,8 @@ for(const QString& id : idList) { ConnectInfo info; + info.id = id; + info.type = 0; info.state="未连接"; QList result = BaseCommonApi::getTestedCatDevice(id); if(result.length()>0){ @@ -112,6 +125,7 @@ if(addrList.length()>0){ info.programInterface = addrList[0]; } + info.cmdList = BaseCommonApi::getInstructionLib(id); connectList.append(info); addrList.clear(); } @@ -123,29 +137,41 @@ for(const QString& id : idList) { ConnectInfo info; + info.id = id; + info.type = 1; info.state="未连接"; QList result = BaseCommonApi::getCatDeviceInfor(id); if(result.length()>0){ info.deviceName = result[0].equipment_name; + + //更新标准设备表格 + rowCount = ui->tableWidget_Standard->rowCount(); + ui->tableWidget_Standard->insertRow(rowCount); + ui->tableWidget_Standard->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_Standard->setItem(row, 1, new QTableWidgetItem("OFF")); //设置数据 + row++; } result.clear(); QList addrList = BaseCommonApi::getVerificationProgramConfigInterface(id); if(addrList.length()>0){ info.programInterface = addrList[0]; } + info.cmdList = BaseCommonApi::getInstructionLib(id); connectList.append(info); addrList.clear(); } idList.clear(); } - for(const ConnectInfo& info : connectList){ - rowCount = ui->tableWidget_3->rowCount(); - ui->tableWidget_3->insertRow(rowCount); - ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); - ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 - row++; - } - ui->tableWidget_3->selectRow(0); + rowCount=0; + row=0; + for(const ConnectInfo& info : connectList){ + rowCount = ui->tableWidget_3->rowCount(); + ui->tableWidget_3->insertRow(rowCount); + ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 + row++; + } + ui->tableWidget_3->selectRow(0); } void CheckWindow::showCheck() @@ -178,9 +204,10 @@ if(programInfo.tested_device_id!="") { QStringList idList=programInfo.tested_device_id.split(","); - QStringList headlist; - - QList Data=BaseCommonApi::Search_CalibrationTable(idList[0],&headlist); + //QStringList headlist; + headList.clear(); + calibrationList.clear(); + calibrationList =BaseCommonApi::Search_CalibrationTable(idList[0],&headList); //tableWidgetItem ui->tableWidget_Point->clearContents(); @@ -188,7 +215,7 @@ //循环数据 int rowCount=0; int row=0; - for (const QStringList& item : Data) + for (const QStringList& item : calibrationList) { //获取行号 并进行添加行 rowCount = ui->tableWidget_Point->rowCount(); @@ -259,6 +286,7 @@ void CheckWindow::showResult() { DialogCheckResult* dlg = new DialogCheckResult; + dlg->initCheckTable(measureCalList,headList); dlg->setModal(true); dlg->show(); } @@ -388,3 +416,134 @@ } } } + +void CheckWindow::initCheckTable() +{ + ui->tableWidgetCheck->clearContents(); + ui->tableWidgetCheck->setRowCount(0); + ui->tableWidgetCheck->setColumnCount(0); + int rowCount = 0; + int row=0; + ui->tableWidgetCheck->setColumnCount(headList.count()); + ui->tableWidgetCheck->setHorizontalHeaderLabels(headList); + for(int i=0;itableWidgetCheck->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + measureCalList.clear(); + for(int i=0;itableWidget_Point->rowCount();i++){ + Qt::CheckState state = ui->tableWidget_Point->item(i,0)->checkState(); + if(state == Qt::Checked){ + QStringList& item = calibrationList[i]; + int cnt = ui->tableWidget_Point->item(i,2)->text().toInt(); + for(int j=0;jtableWidgetCheck->rowCount(); + ui->tableWidgetCheck->insertRow(rowCount); + ui->tableWidgetCheck->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + //循环读取值 headlist,count是列的数量 + for(int k=1;ktableWidgetCheck->setItem(row, k, new QTableWidgetItem(item[k])); + } + SaveDeviceMeasureCalibrator measItem; + measItem.item_data_id = item[1]; + measItem.maximum_error_formula = item[10];//最大允许误差(公式) + measItem.error_param_a = item[11];//误差参数a + measItem.error_param_b = item[12];//误差参数b + measItem.params = item[2];//参数 + measItem.capacity=item[3];//量 + measItem.unit=item[4];//单位 + measItem.frequency=item[5];//频率 + measItem.frequency_unit=item[6];//频率单位 + measItem.range_range=item[7];//量程 + measItem.standard_value=item[8];//标准值(输入字段,特殊:指针式万用表输出字段) + measItem.indicating_value=item[15];//示值(输出字段,特殊:指针式万用表输入字段) + measItem.maximum_error=item[10];//最大允许误差(值) + //measItem.absolute_error=item[11];//绝对误差 + measItem.resolution=item[9];//分辨力 + measItem.measure_indication_value=item[19];//被检表示值 + measureCalList.append(measItem); + row++; + } + } + } + if(connectList.length()>0&&connectList[0].type==0) + deviceEngine.openDevice(connectList[0].programInterface.visa,"Visa"); + if(connectList.length()>1&&connectList[1].type==1) + standardEngine.openDevice(connectList[1].programInterface.visa,"Visa"); +} + +InstructionLib* CheckWindow::getCmdByCheckName(int idx,QString name) +{ + if(idx>=0&&idxinstruct_config.split(";"); + if(sList.length()>0){ + for (QString& sCmd : sList){ + standardEngine.sendData(sCmd); + } + } + } + } + //被检设备读数 + if(deviceEngine.getState()){ + InstructionLib *instrcutLib = getCmdByCheckName(0,item.params); + if(instrcutLib!=nullptr){ + QStringList sList = instrcutLib->instruct_config.split(";"); + if(sList.length()>0){ + for (QString& sCmd : sList){ + deviceEngine.sendData(sCmd); + } + } + Delay_MSec(2000); + sRet = deviceEngine.queryData(instrcutLib->instruct_read); + } + } + // + if(sRet==""){ + bool bOk = false; + double dRet = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,1,&bOk); + + if (bOk) { + sRet = QString::number(dRet); + } + } + item.measure_indication_value = sRet; + ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); + } +} + +void CheckWindow::Delay_MSec(unsigned int msec) +{ + QTime _Timer = QTime::currentTime().addMSecs(msec); + while( QTime::currentTime() < _Timer ) + QCoreApplication::processEvents(QEventLoop::AllEvents, 100); +} + +void CheckWindow::on_pushButton_pause_clicked() +{ + +} + +void CheckWindow::on_pushButton_stop_clicked() +{ + +} diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 8cfaaf3..35ca267 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -3,6 +3,7 @@ #include #include "basecommonapi.h" +#include "visacommonengine.h" namespace Ui { class CheckWindow; @@ -10,9 +11,12 @@ class ConnectInfo { public: + QString id; + int type; QString deviceName; QString state; VerificationProgramConfigInterface programInterface; + QList cmdList; }; class CheckWindow : public QWidget @@ -37,11 +41,20 @@ void on_tableWidget_3_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); void on_deviceButton_clicked(MyTask task,int idx); + void on_pushButton_start_clicked(); + + void on_pushButton_pause_clicked(); + + void on_pushButton_stop_clicked(); + private: void getCheckDevice(); void getCheckMethod(); void initDeviceInfo(); void deleteItem(QLayout *layout); + void initCheckTable(); + InstructionLib* getCmdByCheckName(int idx,QString name); + void Delay_MSec(unsigned int msec); private: Ui::CheckWindow *ui; QList programList; @@ -49,6 +62,12 @@ QList selectTaskList; VerificationProgramInfo programInfo; QList connectList; + QStringList headList; + QList calibrationList; + VisaCommonEngine deviceEngine; + VisaCommonEngine standardEngine; + QList measureCalList; + SaveDeviceMeasureInfo measureInfo; }; #endif // CHECKWINDOW_H diff --git a/softwareDirectory/AutoVerScheme/checkwindow.ui b/softwareDirectory/AutoVerScheme/checkwindow.ui index d8d6a52..fb01e60 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.ui +++ b/softwareDirectory/AutoVerScheme/checkwindow.ui @@ -1266,7 +1266,7 @@ - + @@ -1293,6 +1293,36 @@ 标准设备面板 + + + + + + 设备名称 + + + + 12 + 75 + true + + + + + + 状态 + + + + 12 + 75 + true + + + + + + @@ -1515,7 +1545,7 @@ - + diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp index 3a10cb0..41e1816 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp @@ -1,13 +1,13 @@ #include "dialogcheckresult.h" #include "ui_dialogcheckresult.h" +#include DialogCheckResult::DialogCheckResult(QWidget *parent) : QDialog(parent), ui(new Ui::DialogCheckResult) { ui->setupUi(this); - for(int i=0;i<7;i++) - ui->tableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } DialogCheckResult::~DialogCheckResult() @@ -15,10 +15,66 @@ delete ui; } +void DialogCheckResult::initCheckTable(QList measList,QStringList headList) +{ + ui->tableWidget->verticalHeader()->setParent(nullptr); + ui->tableWidget->setColumnCount(headList.count()); + ui->tableWidget->setHorizontalHeaderLabels(headList); + for(int i=0;itableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + int rowCount=0; + int row=0; + measureCalList = measList; + for (const SaveDeviceMeasureCalibrator& measItem : measList) + { + //获取行号 并进行添加行 + rowCount = ui->tableWidget->rowCount(); + ui->tableWidget->insertRow(rowCount); + //添加 序号 + ui->tableWidget->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + + ui->tableWidget->setItem(row, 2, new QTableWidgetItem(measItem.params)); + ui->tableWidget->setItem(row, 3, new QTableWidgetItem(measItem.capacity)); + ui->tableWidget->setItem(row, 4, new QTableWidgetItem(measItem.unit)); + ui->tableWidget->setItem(row, 5, new QTableWidgetItem(measItem.frequency)); + ui->tableWidget->setItem(row, 6, new QTableWidgetItem(measItem.frequency_unit)); + ui->tableWidget->setItem(row, 7, new QTableWidgetItem(measItem.range_range)); + ui->tableWidget->setItem(row, 8, new QTableWidgetItem(measItem.standard_value)); + ui->tableWidget->setItem(row, 9, new QTableWidgetItem(measItem.resolution)); + ui->tableWidget->setItem(row, 10, new QTableWidgetItem(measItem.maximum_error)); + ui->tableWidget->setItem(row, 11, new QTableWidgetItem(measItem.error_param_a)); + ui->tableWidget->setItem(row, 12, new QTableWidgetItem(measItem.error_param_b)); + ui->tableWidget->setItem(row, 15, new QTableWidgetItem(measItem.indicating_value)); + ui->tableWidget->setItem(row, 19, new QTableWidgetItem(measItem.measure_indication_value)); + row++; + } +} + void DialogCheckResult::on_pushButton_3_clicked() { SaveDeviceMeasureInfo measInfo; - BaseCommonApi::InsertSaveDeviceMeasureInfo(measInfo); + BaseCommonApi api; + measInfo.id = QString::number(api.generateId()); + measInfo.data_no = "jdsj"+QDateTime::currentDateTime().toString("yyyyMMdd")+"0002"; + measInfo.temperature = ui->lineEditTemp->text(); + measInfo.humidity =ui->lineEdit_Hum->text(); + measInfo.measure_address=ui->comboBoxPlace->currentText(); + measInfo.trace_date = ui->dateEditCheck->date(); + measInfo.measure_valid_date = ui->dateEdit_Valid->dateTime(); + measInfo.outcome = ui->lineEdit_Cons->text(); + if(BaseCommonApi::InsertSaveDeviceMeasureInfo(measInfo)){ + for(SaveDeviceMeasureCalibrator& item:measureCalList){ + item.id = QString::number(api.generateId()); + item.data_id = measInfo.id; + BaseCommonApi::InsertVerMultiCal(item); + } + } + else + { + QMessageBox::warning(this, "警告", "保存失败!"); + } } void DialogCheckResult::on_pushButton_2_clicked() diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.h b/softwareDirectory/AutoVerScheme/dialogcheckresult.h index aec3b88..43cecac 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.h +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.h @@ -15,6 +15,7 @@ public: explicit DialogCheckResult(QWidget *parent = nullptr); ~DialogCheckResult(); + void initCheckTable(QList measList,QStringList headList); private slots: void on_pushButton_3_clicked(); @@ -25,6 +26,7 @@ private: Ui::DialogCheckResult *ui; + QList measureCalList; }; #endif // DIALOGCHECKRESULT_H diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.ui b/softwareDirectory/AutoVerScheme/dialogcheckresult.ui index fd74cfd..3be74e6 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.ui +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.ui @@ -145,7 +145,7 @@ - + @@ -155,7 +155,7 @@ - + @@ -165,7 +165,7 @@ - + @@ -175,7 +175,7 @@ - + @@ -185,7 +185,11 @@ - + + + true + + @@ -195,7 +199,11 @@ - + + + true + + @@ -205,7 +213,11 @@ - + + + true + + @@ -215,7 +227,7 @@ - + @@ -225,7 +237,7 @@ - + @@ -247,41 +259,6 @@ false - - - 新建列 - - - - - 量/单位 - - - - - 量程 - - - - - 新建列 - - - - - 检定点 - - - - - 测试值 - - - - - 备注 - - diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user index 162961a..02579f1 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index beb4982..ff58124 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -1304,11 +1304,12 @@ " SET program_name = :program_name,create_name = :create_name, create_time = :create_time" "remark = :remark,img_path = :img_path,tested_device_id = :tested_device_id,standard_device_id = :standard_device_id ,update_time = :update_time" "WHERE id = :id;"); - QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + QString formattedDateTime = verInfo.create_time.toString("yyyy-MM-dd HH:mm:ss"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); query.bindValue(":update_time",currentDateTime); query.bindValue(":program_name", verInfo.program_name); query.bindValue(":create_name", verInfo.create_name); - query.bindValue(":create_time", verInfo.create_time); + query.bindValue(":create_time", formattedDateTime); query.bindValue(":remark", verInfo.remark); query.bindValue(":img_path", verInfo.img_path); query.bindValue(":tested_device_id", verInfo.tested_device_id); diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 44aaa75..c90f1dc 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -3,6 +3,7 @@ #include "dialogcheckresult.h" #include #include "basecommonapi.h" +#include CheckWindow::CheckWindow(QWidget *parent) : QWidget(parent), @@ -27,6 +28,10 @@ ui->tableWidget_Point->setColumnWidth(0, 60); for(int i=1;i<3;i++) ui->tableWidget_Point->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidget_Standard->verticalHeader()->setParent(nullptr); + for(int i=0;i<2;i++) + ui->tableWidget_Standard->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidgetCheck->verticalHeader()->setParent(nullptr); getCheckDevice(); //ui->stackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); @@ -38,6 +43,9 @@ programList.clear(); connectList.clear(); selectTaskList.clear(); + headList.clear(); + calibrationList.clear(); + measureCalList.clear(); delete ui; } @@ -49,6 +57,7 @@ Qt::CheckState state = ui->tableWidgetDevice->item(i,0)->checkState(); if(state == Qt::Checked){ selectTaskList.append(myTaskList[i]); + measureInfo.order_id = myTaskList[i].id; /*if(ids=="") ids = myTaskList[i].id; else @@ -92,6 +101,8 @@ ui->tableWidget_3->clearContents(); ui->tableWidget_3->setRowCount(0); + ui->tableWidget_Standard->clearContents(); + ui->tableWidget_Standard->setRowCount(0); QStringList idList; int rowCount=0; int row=0; @@ -102,6 +113,8 @@ for(const QString& id : idList) { ConnectInfo info; + info.id = id; + info.type = 0; info.state="未连接"; QList result = BaseCommonApi::getTestedCatDevice(id); if(result.length()>0){ @@ -112,6 +125,7 @@ if(addrList.length()>0){ info.programInterface = addrList[0]; } + info.cmdList = BaseCommonApi::getInstructionLib(id); connectList.append(info); addrList.clear(); } @@ -123,29 +137,41 @@ for(const QString& id : idList) { ConnectInfo info; + info.id = id; + info.type = 1; info.state="未连接"; QList result = BaseCommonApi::getCatDeviceInfor(id); if(result.length()>0){ info.deviceName = result[0].equipment_name; + + //更新标准设备表格 + rowCount = ui->tableWidget_Standard->rowCount(); + ui->tableWidget_Standard->insertRow(rowCount); + ui->tableWidget_Standard->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_Standard->setItem(row, 1, new QTableWidgetItem("OFF")); //设置数据 + row++; } result.clear(); QList addrList = BaseCommonApi::getVerificationProgramConfigInterface(id); if(addrList.length()>0){ info.programInterface = addrList[0]; } + info.cmdList = BaseCommonApi::getInstructionLib(id); connectList.append(info); addrList.clear(); } idList.clear(); } - for(const ConnectInfo& info : connectList){ - rowCount = ui->tableWidget_3->rowCount(); - ui->tableWidget_3->insertRow(rowCount); - ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); - ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 - row++; - } - ui->tableWidget_3->selectRow(0); + rowCount=0; + row=0; + for(const ConnectInfo& info : connectList){ + rowCount = ui->tableWidget_3->rowCount(); + ui->tableWidget_3->insertRow(rowCount); + ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 + row++; + } + ui->tableWidget_3->selectRow(0); } void CheckWindow::showCheck() @@ -178,9 +204,10 @@ if(programInfo.tested_device_id!="") { QStringList idList=programInfo.tested_device_id.split(","); - QStringList headlist; - - QList Data=BaseCommonApi::Search_CalibrationTable(idList[0],&headlist); + //QStringList headlist; + headList.clear(); + calibrationList.clear(); + calibrationList =BaseCommonApi::Search_CalibrationTable(idList[0],&headList); //tableWidgetItem ui->tableWidget_Point->clearContents(); @@ -188,7 +215,7 @@ //循环数据 int rowCount=0; int row=0; - for (const QStringList& item : Data) + for (const QStringList& item : calibrationList) { //获取行号 并进行添加行 rowCount = ui->tableWidget_Point->rowCount(); @@ -259,6 +286,7 @@ void CheckWindow::showResult() { DialogCheckResult* dlg = new DialogCheckResult; + dlg->initCheckTable(measureCalList,headList); dlg->setModal(true); dlg->show(); } @@ -388,3 +416,134 @@ } } } + +void CheckWindow::initCheckTable() +{ + ui->tableWidgetCheck->clearContents(); + ui->tableWidgetCheck->setRowCount(0); + ui->tableWidgetCheck->setColumnCount(0); + int rowCount = 0; + int row=0; + ui->tableWidgetCheck->setColumnCount(headList.count()); + ui->tableWidgetCheck->setHorizontalHeaderLabels(headList); + for(int i=0;itableWidgetCheck->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + measureCalList.clear(); + for(int i=0;itableWidget_Point->rowCount();i++){ + Qt::CheckState state = ui->tableWidget_Point->item(i,0)->checkState(); + if(state == Qt::Checked){ + QStringList& item = calibrationList[i]; + int cnt = ui->tableWidget_Point->item(i,2)->text().toInt(); + for(int j=0;jtableWidgetCheck->rowCount(); + ui->tableWidgetCheck->insertRow(rowCount); + ui->tableWidgetCheck->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + //循环读取值 headlist,count是列的数量 + for(int k=1;ktableWidgetCheck->setItem(row, k, new QTableWidgetItem(item[k])); + } + SaveDeviceMeasureCalibrator measItem; + measItem.item_data_id = item[1]; + measItem.maximum_error_formula = item[10];//最大允许误差(公式) + measItem.error_param_a = item[11];//误差参数a + measItem.error_param_b = item[12];//误差参数b + measItem.params = item[2];//参数 + measItem.capacity=item[3];//量 + measItem.unit=item[4];//单位 + measItem.frequency=item[5];//频率 + measItem.frequency_unit=item[6];//频率单位 + measItem.range_range=item[7];//量程 + measItem.standard_value=item[8];//标准值(输入字段,特殊:指针式万用表输出字段) + measItem.indicating_value=item[15];//示值(输出字段,特殊:指针式万用表输入字段) + measItem.maximum_error=item[10];//最大允许误差(值) + //measItem.absolute_error=item[11];//绝对误差 + measItem.resolution=item[9];//分辨力 + measItem.measure_indication_value=item[19];//被检表示值 + measureCalList.append(measItem); + row++; + } + } + } + if(connectList.length()>0&&connectList[0].type==0) + deviceEngine.openDevice(connectList[0].programInterface.visa,"Visa"); + if(connectList.length()>1&&connectList[1].type==1) + standardEngine.openDevice(connectList[1].programInterface.visa,"Visa"); +} + +InstructionLib* CheckWindow::getCmdByCheckName(int idx,QString name) +{ + if(idx>=0&&idxinstruct_config.split(";"); + if(sList.length()>0){ + for (QString& sCmd : sList){ + standardEngine.sendData(sCmd); + } + } + } + } + //被检设备读数 + if(deviceEngine.getState()){ + InstructionLib *instrcutLib = getCmdByCheckName(0,item.params); + if(instrcutLib!=nullptr){ + QStringList sList = instrcutLib->instruct_config.split(";"); + if(sList.length()>0){ + for (QString& sCmd : sList){ + deviceEngine.sendData(sCmd); + } + } + Delay_MSec(2000); + sRet = deviceEngine.queryData(instrcutLib->instruct_read); + } + } + // + if(sRet==""){ + bool bOk = false; + double dRet = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,1,&bOk); + + if (bOk) { + sRet = QString::number(dRet); + } + } + item.measure_indication_value = sRet; + ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); + } +} + +void CheckWindow::Delay_MSec(unsigned int msec) +{ + QTime _Timer = QTime::currentTime().addMSecs(msec); + while( QTime::currentTime() < _Timer ) + QCoreApplication::processEvents(QEventLoop::AllEvents, 100); +} + +void CheckWindow::on_pushButton_pause_clicked() +{ + +} + +void CheckWindow::on_pushButton_stop_clicked() +{ + +} diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 8cfaaf3..35ca267 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -3,6 +3,7 @@ #include #include "basecommonapi.h" +#include "visacommonengine.h" namespace Ui { class CheckWindow; @@ -10,9 +11,12 @@ class ConnectInfo { public: + QString id; + int type; QString deviceName; QString state; VerificationProgramConfigInterface programInterface; + QList cmdList; }; class CheckWindow : public QWidget @@ -37,11 +41,20 @@ void on_tableWidget_3_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); void on_deviceButton_clicked(MyTask task,int idx); + void on_pushButton_start_clicked(); + + void on_pushButton_pause_clicked(); + + void on_pushButton_stop_clicked(); + private: void getCheckDevice(); void getCheckMethod(); void initDeviceInfo(); void deleteItem(QLayout *layout); + void initCheckTable(); + InstructionLib* getCmdByCheckName(int idx,QString name); + void Delay_MSec(unsigned int msec); private: Ui::CheckWindow *ui; QList programList; @@ -49,6 +62,12 @@ QList selectTaskList; VerificationProgramInfo programInfo; QList connectList; + QStringList headList; + QList calibrationList; + VisaCommonEngine deviceEngine; + VisaCommonEngine standardEngine; + QList measureCalList; + SaveDeviceMeasureInfo measureInfo; }; #endif // CHECKWINDOW_H diff --git a/softwareDirectory/AutoVerScheme/checkwindow.ui b/softwareDirectory/AutoVerScheme/checkwindow.ui index d8d6a52..fb01e60 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.ui +++ b/softwareDirectory/AutoVerScheme/checkwindow.ui @@ -1266,7 +1266,7 @@ - + @@ -1293,6 +1293,36 @@ 标准设备面板 + + + + + + 设备名称 + + + + 12 + 75 + true + + + + + + 状态 + + + + 12 + 75 + true + + + + + + @@ -1515,7 +1545,7 @@ - + diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp index 3a10cb0..41e1816 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp @@ -1,13 +1,13 @@ #include "dialogcheckresult.h" #include "ui_dialogcheckresult.h" +#include DialogCheckResult::DialogCheckResult(QWidget *parent) : QDialog(parent), ui(new Ui::DialogCheckResult) { ui->setupUi(this); - for(int i=0;i<7;i++) - ui->tableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } DialogCheckResult::~DialogCheckResult() @@ -15,10 +15,66 @@ delete ui; } +void DialogCheckResult::initCheckTable(QList measList,QStringList headList) +{ + ui->tableWidget->verticalHeader()->setParent(nullptr); + ui->tableWidget->setColumnCount(headList.count()); + ui->tableWidget->setHorizontalHeaderLabels(headList); + for(int i=0;itableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + int rowCount=0; + int row=0; + measureCalList = measList; + for (const SaveDeviceMeasureCalibrator& measItem : measList) + { + //获取行号 并进行添加行 + rowCount = ui->tableWidget->rowCount(); + ui->tableWidget->insertRow(rowCount); + //添加 序号 + ui->tableWidget->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + + ui->tableWidget->setItem(row, 2, new QTableWidgetItem(measItem.params)); + ui->tableWidget->setItem(row, 3, new QTableWidgetItem(measItem.capacity)); + ui->tableWidget->setItem(row, 4, new QTableWidgetItem(measItem.unit)); + ui->tableWidget->setItem(row, 5, new QTableWidgetItem(measItem.frequency)); + ui->tableWidget->setItem(row, 6, new QTableWidgetItem(measItem.frequency_unit)); + ui->tableWidget->setItem(row, 7, new QTableWidgetItem(measItem.range_range)); + ui->tableWidget->setItem(row, 8, new QTableWidgetItem(measItem.standard_value)); + ui->tableWidget->setItem(row, 9, new QTableWidgetItem(measItem.resolution)); + ui->tableWidget->setItem(row, 10, new QTableWidgetItem(measItem.maximum_error)); + ui->tableWidget->setItem(row, 11, new QTableWidgetItem(measItem.error_param_a)); + ui->tableWidget->setItem(row, 12, new QTableWidgetItem(measItem.error_param_b)); + ui->tableWidget->setItem(row, 15, new QTableWidgetItem(measItem.indicating_value)); + ui->tableWidget->setItem(row, 19, new QTableWidgetItem(measItem.measure_indication_value)); + row++; + } +} + void DialogCheckResult::on_pushButton_3_clicked() { SaveDeviceMeasureInfo measInfo; - BaseCommonApi::InsertSaveDeviceMeasureInfo(measInfo); + BaseCommonApi api; + measInfo.id = QString::number(api.generateId()); + measInfo.data_no = "jdsj"+QDateTime::currentDateTime().toString("yyyyMMdd")+"0002"; + measInfo.temperature = ui->lineEditTemp->text(); + measInfo.humidity =ui->lineEdit_Hum->text(); + measInfo.measure_address=ui->comboBoxPlace->currentText(); + measInfo.trace_date = ui->dateEditCheck->date(); + measInfo.measure_valid_date = ui->dateEdit_Valid->dateTime(); + measInfo.outcome = ui->lineEdit_Cons->text(); + if(BaseCommonApi::InsertSaveDeviceMeasureInfo(measInfo)){ + for(SaveDeviceMeasureCalibrator& item:measureCalList){ + item.id = QString::number(api.generateId()); + item.data_id = measInfo.id; + BaseCommonApi::InsertVerMultiCal(item); + } + } + else + { + QMessageBox::warning(this, "警告", "保存失败!"); + } } void DialogCheckResult::on_pushButton_2_clicked() diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.h b/softwareDirectory/AutoVerScheme/dialogcheckresult.h index aec3b88..43cecac 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.h +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.h @@ -15,6 +15,7 @@ public: explicit DialogCheckResult(QWidget *parent = nullptr); ~DialogCheckResult(); + void initCheckTable(QList measList,QStringList headList); private slots: void on_pushButton_3_clicked(); @@ -25,6 +26,7 @@ private: Ui::DialogCheckResult *ui; + QList measureCalList; }; #endif // DIALOGCHECKRESULT_H diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.ui b/softwareDirectory/AutoVerScheme/dialogcheckresult.ui index fd74cfd..3be74e6 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.ui +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.ui @@ -145,7 +145,7 @@ - + @@ -155,7 +155,7 @@ - + @@ -165,7 +165,7 @@ - + @@ -175,7 +175,7 @@ - + @@ -185,7 +185,11 @@ - + + + true + + @@ -195,7 +199,11 @@ - + + + true + + @@ -205,7 +213,11 @@ - + + + true + + @@ -215,7 +227,7 @@ - + @@ -225,7 +237,7 @@ - + @@ -247,41 +259,6 @@ false - - - 新建列 - - - - - 量/单位 - - - - - 量程 - - - - - 新建列 - - - - - 检定点 - - - - - 测试值 - - - - - 备注 - - diff --git a/softwareDirectory/AutoVerScheme/formaddrsetting.cpp b/softwareDirectory/AutoVerScheme/formaddrsetting.cpp index c0c6866..939e00f 100644 --- a/softwareDirectory/AutoVerScheme/formaddrsetting.cpp +++ b/softwareDirectory/AutoVerScheme/formaddrsetting.cpp @@ -37,16 +37,17 @@ QStringList headlist; QList caliList =BaseCommonApi::Search_CalibrationTable(sDeviceId,&headlist); for (const QStringList& item : caliList){ - this->ui->comboBox->addItem(item[1]); + this->ui->comboBox->addItem(item[2]); } } else { QStringList headlist; //QString DeviceName = BaseCommonApi::getApparatus(id); - QList bizDeviceManageData=BaseCommonApi::getCheckDCPower(sDeviceId,&headlist); - for (const CheckDCPower& item : bizDeviceManageData){ - this->ui->comboBox->addItem(item.check_type); + //QList bizDeviceManageData=BaseCommonApi::getCheckDCPower(sDeviceId,&headlist); + QList ptList = BaseCommonApi::Search_VerifyTable(sDeviceId,&headlist); + for (const QStringList& item : ptList){ + this->ui->comboBox->addItem(item[2]); } } } diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user index 162961a..02579f1 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index beb4982..ff58124 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -1304,11 +1304,12 @@ " SET program_name = :program_name,create_name = :create_name, create_time = :create_time" "remark = :remark,img_path = :img_path,tested_device_id = :tested_device_id,standard_device_id = :standard_device_id ,update_time = :update_time" "WHERE id = :id;"); - QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + QString formattedDateTime = verInfo.create_time.toString("yyyy-MM-dd HH:mm:ss"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); query.bindValue(":update_time",currentDateTime); query.bindValue(":program_name", verInfo.program_name); query.bindValue(":create_name", verInfo.create_name); - query.bindValue(":create_time", verInfo.create_time); + query.bindValue(":create_time", formattedDateTime); query.bindValue(":remark", verInfo.remark); query.bindValue(":img_path", verInfo.img_path); query.bindValue(":tested_device_id", verInfo.tested_device_id); diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 44aaa75..c90f1dc 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -3,6 +3,7 @@ #include "dialogcheckresult.h" #include #include "basecommonapi.h" +#include CheckWindow::CheckWindow(QWidget *parent) : QWidget(parent), @@ -27,6 +28,10 @@ ui->tableWidget_Point->setColumnWidth(0, 60); for(int i=1;i<3;i++) ui->tableWidget_Point->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidget_Standard->verticalHeader()->setParent(nullptr); + for(int i=0;i<2;i++) + ui->tableWidget_Standard->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidgetCheck->verticalHeader()->setParent(nullptr); getCheckDevice(); //ui->stackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); @@ -38,6 +43,9 @@ programList.clear(); connectList.clear(); selectTaskList.clear(); + headList.clear(); + calibrationList.clear(); + measureCalList.clear(); delete ui; } @@ -49,6 +57,7 @@ Qt::CheckState state = ui->tableWidgetDevice->item(i,0)->checkState(); if(state == Qt::Checked){ selectTaskList.append(myTaskList[i]); + measureInfo.order_id = myTaskList[i].id; /*if(ids=="") ids = myTaskList[i].id; else @@ -92,6 +101,8 @@ ui->tableWidget_3->clearContents(); ui->tableWidget_3->setRowCount(0); + ui->tableWidget_Standard->clearContents(); + ui->tableWidget_Standard->setRowCount(0); QStringList idList; int rowCount=0; int row=0; @@ -102,6 +113,8 @@ for(const QString& id : idList) { ConnectInfo info; + info.id = id; + info.type = 0; info.state="未连接"; QList result = BaseCommonApi::getTestedCatDevice(id); if(result.length()>0){ @@ -112,6 +125,7 @@ if(addrList.length()>0){ info.programInterface = addrList[0]; } + info.cmdList = BaseCommonApi::getInstructionLib(id); connectList.append(info); addrList.clear(); } @@ -123,29 +137,41 @@ for(const QString& id : idList) { ConnectInfo info; + info.id = id; + info.type = 1; info.state="未连接"; QList result = BaseCommonApi::getCatDeviceInfor(id); if(result.length()>0){ info.deviceName = result[0].equipment_name; + + //更新标准设备表格 + rowCount = ui->tableWidget_Standard->rowCount(); + ui->tableWidget_Standard->insertRow(rowCount); + ui->tableWidget_Standard->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_Standard->setItem(row, 1, new QTableWidgetItem("OFF")); //设置数据 + row++; } result.clear(); QList addrList = BaseCommonApi::getVerificationProgramConfigInterface(id); if(addrList.length()>0){ info.programInterface = addrList[0]; } + info.cmdList = BaseCommonApi::getInstructionLib(id); connectList.append(info); addrList.clear(); } idList.clear(); } - for(const ConnectInfo& info : connectList){ - rowCount = ui->tableWidget_3->rowCount(); - ui->tableWidget_3->insertRow(rowCount); - ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); - ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 - row++; - } - ui->tableWidget_3->selectRow(0); + rowCount=0; + row=0; + for(const ConnectInfo& info : connectList){ + rowCount = ui->tableWidget_3->rowCount(); + ui->tableWidget_3->insertRow(rowCount); + ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 + row++; + } + ui->tableWidget_3->selectRow(0); } void CheckWindow::showCheck() @@ -178,9 +204,10 @@ if(programInfo.tested_device_id!="") { QStringList idList=programInfo.tested_device_id.split(","); - QStringList headlist; - - QList Data=BaseCommonApi::Search_CalibrationTable(idList[0],&headlist); + //QStringList headlist; + headList.clear(); + calibrationList.clear(); + calibrationList =BaseCommonApi::Search_CalibrationTable(idList[0],&headList); //tableWidgetItem ui->tableWidget_Point->clearContents(); @@ -188,7 +215,7 @@ //循环数据 int rowCount=0; int row=0; - for (const QStringList& item : Data) + for (const QStringList& item : calibrationList) { //获取行号 并进行添加行 rowCount = ui->tableWidget_Point->rowCount(); @@ -259,6 +286,7 @@ void CheckWindow::showResult() { DialogCheckResult* dlg = new DialogCheckResult; + dlg->initCheckTable(measureCalList,headList); dlg->setModal(true); dlg->show(); } @@ -388,3 +416,134 @@ } } } + +void CheckWindow::initCheckTable() +{ + ui->tableWidgetCheck->clearContents(); + ui->tableWidgetCheck->setRowCount(0); + ui->tableWidgetCheck->setColumnCount(0); + int rowCount = 0; + int row=0; + ui->tableWidgetCheck->setColumnCount(headList.count()); + ui->tableWidgetCheck->setHorizontalHeaderLabels(headList); + for(int i=0;itableWidgetCheck->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + measureCalList.clear(); + for(int i=0;itableWidget_Point->rowCount();i++){ + Qt::CheckState state = ui->tableWidget_Point->item(i,0)->checkState(); + if(state == Qt::Checked){ + QStringList& item = calibrationList[i]; + int cnt = ui->tableWidget_Point->item(i,2)->text().toInt(); + for(int j=0;jtableWidgetCheck->rowCount(); + ui->tableWidgetCheck->insertRow(rowCount); + ui->tableWidgetCheck->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + //循环读取值 headlist,count是列的数量 + for(int k=1;ktableWidgetCheck->setItem(row, k, new QTableWidgetItem(item[k])); + } + SaveDeviceMeasureCalibrator measItem; + measItem.item_data_id = item[1]; + measItem.maximum_error_formula = item[10];//最大允许误差(公式) + measItem.error_param_a = item[11];//误差参数a + measItem.error_param_b = item[12];//误差参数b + measItem.params = item[2];//参数 + measItem.capacity=item[3];//量 + measItem.unit=item[4];//单位 + measItem.frequency=item[5];//频率 + measItem.frequency_unit=item[6];//频率单位 + measItem.range_range=item[7];//量程 + measItem.standard_value=item[8];//标准值(输入字段,特殊:指针式万用表输出字段) + measItem.indicating_value=item[15];//示值(输出字段,特殊:指针式万用表输入字段) + measItem.maximum_error=item[10];//最大允许误差(值) + //measItem.absolute_error=item[11];//绝对误差 + measItem.resolution=item[9];//分辨力 + measItem.measure_indication_value=item[19];//被检表示值 + measureCalList.append(measItem); + row++; + } + } + } + if(connectList.length()>0&&connectList[0].type==0) + deviceEngine.openDevice(connectList[0].programInterface.visa,"Visa"); + if(connectList.length()>1&&connectList[1].type==1) + standardEngine.openDevice(connectList[1].programInterface.visa,"Visa"); +} + +InstructionLib* CheckWindow::getCmdByCheckName(int idx,QString name) +{ + if(idx>=0&&idxinstruct_config.split(";"); + if(sList.length()>0){ + for (QString& sCmd : sList){ + standardEngine.sendData(sCmd); + } + } + } + } + //被检设备读数 + if(deviceEngine.getState()){ + InstructionLib *instrcutLib = getCmdByCheckName(0,item.params); + if(instrcutLib!=nullptr){ + QStringList sList = instrcutLib->instruct_config.split(";"); + if(sList.length()>0){ + for (QString& sCmd : sList){ + deviceEngine.sendData(sCmd); + } + } + Delay_MSec(2000); + sRet = deviceEngine.queryData(instrcutLib->instruct_read); + } + } + // + if(sRet==""){ + bool bOk = false; + double dRet = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,1,&bOk); + + if (bOk) { + sRet = QString::number(dRet); + } + } + item.measure_indication_value = sRet; + ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); + } +} + +void CheckWindow::Delay_MSec(unsigned int msec) +{ + QTime _Timer = QTime::currentTime().addMSecs(msec); + while( QTime::currentTime() < _Timer ) + QCoreApplication::processEvents(QEventLoop::AllEvents, 100); +} + +void CheckWindow::on_pushButton_pause_clicked() +{ + +} + +void CheckWindow::on_pushButton_stop_clicked() +{ + +} diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 8cfaaf3..35ca267 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -3,6 +3,7 @@ #include #include "basecommonapi.h" +#include "visacommonengine.h" namespace Ui { class CheckWindow; @@ -10,9 +11,12 @@ class ConnectInfo { public: + QString id; + int type; QString deviceName; QString state; VerificationProgramConfigInterface programInterface; + QList cmdList; }; class CheckWindow : public QWidget @@ -37,11 +41,20 @@ void on_tableWidget_3_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); void on_deviceButton_clicked(MyTask task,int idx); + void on_pushButton_start_clicked(); + + void on_pushButton_pause_clicked(); + + void on_pushButton_stop_clicked(); + private: void getCheckDevice(); void getCheckMethod(); void initDeviceInfo(); void deleteItem(QLayout *layout); + void initCheckTable(); + InstructionLib* getCmdByCheckName(int idx,QString name); + void Delay_MSec(unsigned int msec); private: Ui::CheckWindow *ui; QList programList; @@ -49,6 +62,12 @@ QList selectTaskList; VerificationProgramInfo programInfo; QList connectList; + QStringList headList; + QList calibrationList; + VisaCommonEngine deviceEngine; + VisaCommonEngine standardEngine; + QList measureCalList; + SaveDeviceMeasureInfo measureInfo; }; #endif // CHECKWINDOW_H diff --git a/softwareDirectory/AutoVerScheme/checkwindow.ui b/softwareDirectory/AutoVerScheme/checkwindow.ui index d8d6a52..fb01e60 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.ui +++ b/softwareDirectory/AutoVerScheme/checkwindow.ui @@ -1266,7 +1266,7 @@ - + @@ -1293,6 +1293,36 @@ 标准设备面板 + + + + + + 设备名称 + + + + 12 + 75 + true + + + + + + 状态 + + + + 12 + 75 + true + + + + + + @@ -1515,7 +1545,7 @@ - + diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp index 3a10cb0..41e1816 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp @@ -1,13 +1,13 @@ #include "dialogcheckresult.h" #include "ui_dialogcheckresult.h" +#include DialogCheckResult::DialogCheckResult(QWidget *parent) : QDialog(parent), ui(new Ui::DialogCheckResult) { ui->setupUi(this); - for(int i=0;i<7;i++) - ui->tableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } DialogCheckResult::~DialogCheckResult() @@ -15,10 +15,66 @@ delete ui; } +void DialogCheckResult::initCheckTable(QList measList,QStringList headList) +{ + ui->tableWidget->verticalHeader()->setParent(nullptr); + ui->tableWidget->setColumnCount(headList.count()); + ui->tableWidget->setHorizontalHeaderLabels(headList); + for(int i=0;itableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + int rowCount=0; + int row=0; + measureCalList = measList; + for (const SaveDeviceMeasureCalibrator& measItem : measList) + { + //获取行号 并进行添加行 + rowCount = ui->tableWidget->rowCount(); + ui->tableWidget->insertRow(rowCount); + //添加 序号 + ui->tableWidget->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + + ui->tableWidget->setItem(row, 2, new QTableWidgetItem(measItem.params)); + ui->tableWidget->setItem(row, 3, new QTableWidgetItem(measItem.capacity)); + ui->tableWidget->setItem(row, 4, new QTableWidgetItem(measItem.unit)); + ui->tableWidget->setItem(row, 5, new QTableWidgetItem(measItem.frequency)); + ui->tableWidget->setItem(row, 6, new QTableWidgetItem(measItem.frequency_unit)); + ui->tableWidget->setItem(row, 7, new QTableWidgetItem(measItem.range_range)); + ui->tableWidget->setItem(row, 8, new QTableWidgetItem(measItem.standard_value)); + ui->tableWidget->setItem(row, 9, new QTableWidgetItem(measItem.resolution)); + ui->tableWidget->setItem(row, 10, new QTableWidgetItem(measItem.maximum_error)); + ui->tableWidget->setItem(row, 11, new QTableWidgetItem(measItem.error_param_a)); + ui->tableWidget->setItem(row, 12, new QTableWidgetItem(measItem.error_param_b)); + ui->tableWidget->setItem(row, 15, new QTableWidgetItem(measItem.indicating_value)); + ui->tableWidget->setItem(row, 19, new QTableWidgetItem(measItem.measure_indication_value)); + row++; + } +} + void DialogCheckResult::on_pushButton_3_clicked() { SaveDeviceMeasureInfo measInfo; - BaseCommonApi::InsertSaveDeviceMeasureInfo(measInfo); + BaseCommonApi api; + measInfo.id = QString::number(api.generateId()); + measInfo.data_no = "jdsj"+QDateTime::currentDateTime().toString("yyyyMMdd")+"0002"; + measInfo.temperature = ui->lineEditTemp->text(); + measInfo.humidity =ui->lineEdit_Hum->text(); + measInfo.measure_address=ui->comboBoxPlace->currentText(); + measInfo.trace_date = ui->dateEditCheck->date(); + measInfo.measure_valid_date = ui->dateEdit_Valid->dateTime(); + measInfo.outcome = ui->lineEdit_Cons->text(); + if(BaseCommonApi::InsertSaveDeviceMeasureInfo(measInfo)){ + for(SaveDeviceMeasureCalibrator& item:measureCalList){ + item.id = QString::number(api.generateId()); + item.data_id = measInfo.id; + BaseCommonApi::InsertVerMultiCal(item); + } + } + else + { + QMessageBox::warning(this, "警告", "保存失败!"); + } } void DialogCheckResult::on_pushButton_2_clicked() diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.h b/softwareDirectory/AutoVerScheme/dialogcheckresult.h index aec3b88..43cecac 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.h +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.h @@ -15,6 +15,7 @@ public: explicit DialogCheckResult(QWidget *parent = nullptr); ~DialogCheckResult(); + void initCheckTable(QList measList,QStringList headList); private slots: void on_pushButton_3_clicked(); @@ -25,6 +26,7 @@ private: Ui::DialogCheckResult *ui; + QList measureCalList; }; #endif // DIALOGCHECKRESULT_H diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.ui b/softwareDirectory/AutoVerScheme/dialogcheckresult.ui index fd74cfd..3be74e6 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.ui +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.ui @@ -145,7 +145,7 @@ - + @@ -155,7 +155,7 @@ - + @@ -165,7 +165,7 @@ - + @@ -175,7 +175,7 @@ - + @@ -185,7 +185,11 @@ - + + + true + + @@ -195,7 +199,11 @@ - + + + true + + @@ -205,7 +213,11 @@ - + + + true + + @@ -215,7 +227,7 @@ - + @@ -225,7 +237,7 @@ - + @@ -247,41 +259,6 @@ false - - - 新建列 - - - - - 量/单位 - - - - - 量程 - - - - - 新建列 - - - - - 检定点 - - - - - 测试值 - - - - - 备注 - - diff --git a/softwareDirectory/AutoVerScheme/formaddrsetting.cpp b/softwareDirectory/AutoVerScheme/formaddrsetting.cpp index c0c6866..939e00f 100644 --- a/softwareDirectory/AutoVerScheme/formaddrsetting.cpp +++ b/softwareDirectory/AutoVerScheme/formaddrsetting.cpp @@ -37,16 +37,17 @@ QStringList headlist; QList caliList =BaseCommonApi::Search_CalibrationTable(sDeviceId,&headlist); for (const QStringList& item : caliList){ - this->ui->comboBox->addItem(item[1]); + this->ui->comboBox->addItem(item[2]); } } else { QStringList headlist; //QString DeviceName = BaseCommonApi::getApparatus(id); - QList bizDeviceManageData=BaseCommonApi::getCheckDCPower(sDeviceId,&headlist); - for (const CheckDCPower& item : bizDeviceManageData){ - this->ui->comboBox->addItem(item.check_type); + //QList bizDeviceManageData=BaseCommonApi::getCheckDCPower(sDeviceId,&headlist); + QList ptList = BaseCommonApi::Search_VerifyTable(sDeviceId,&headlist); + for (const QStringList& item : ptList){ + this->ui->comboBox->addItem(item[2]); } } } diff --git a/softwareDirectory/AutoVerScheme/newcheckmethod.cpp b/softwareDirectory/AutoVerScheme/newcheckmethod.cpp index cef8248..058a788 100644 --- a/softwareDirectory/AutoVerScheme/newcheckmethod.cpp +++ b/softwareDirectory/AutoVerScheme/newcheckmethod.cpp @@ -119,6 +119,7 @@ programInfo.program_name = ui->lineEditName->text(); programInfo.create_name = ui->lineEditUser->text(); programInfo.create_time = ui->dateEditTime->dateTime(); + programInfo.update_time = QDateTime::currentDateTime(); programInfo.remark = ui->lineEditMark->text(); if(BaseCommonApi::UpdateVerificationProgramInfo(programInfo)) { diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user index 162961a..02579f1 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index beb4982..ff58124 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -1304,11 +1304,12 @@ " SET program_name = :program_name,create_name = :create_name, create_time = :create_time" "remark = :remark,img_path = :img_path,tested_device_id = :tested_device_id,standard_device_id = :standard_device_id ,update_time = :update_time" "WHERE id = :id;"); - QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + QString formattedDateTime = verInfo.create_time.toString("yyyy-MM-dd HH:mm:ss"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); query.bindValue(":update_time",currentDateTime); query.bindValue(":program_name", verInfo.program_name); query.bindValue(":create_name", verInfo.create_name); - query.bindValue(":create_time", verInfo.create_time); + query.bindValue(":create_time", formattedDateTime); query.bindValue(":remark", verInfo.remark); query.bindValue(":img_path", verInfo.img_path); query.bindValue(":tested_device_id", verInfo.tested_device_id); diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 44aaa75..c90f1dc 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -3,6 +3,7 @@ #include "dialogcheckresult.h" #include #include "basecommonapi.h" +#include CheckWindow::CheckWindow(QWidget *parent) : QWidget(parent), @@ -27,6 +28,10 @@ ui->tableWidget_Point->setColumnWidth(0, 60); for(int i=1;i<3;i++) ui->tableWidget_Point->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidget_Standard->verticalHeader()->setParent(nullptr); + for(int i=0;i<2;i++) + ui->tableWidget_Standard->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidgetCheck->verticalHeader()->setParent(nullptr); getCheckDevice(); //ui->stackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); @@ -38,6 +43,9 @@ programList.clear(); connectList.clear(); selectTaskList.clear(); + headList.clear(); + calibrationList.clear(); + measureCalList.clear(); delete ui; } @@ -49,6 +57,7 @@ Qt::CheckState state = ui->tableWidgetDevice->item(i,0)->checkState(); if(state == Qt::Checked){ selectTaskList.append(myTaskList[i]); + measureInfo.order_id = myTaskList[i].id; /*if(ids=="") ids = myTaskList[i].id; else @@ -92,6 +101,8 @@ ui->tableWidget_3->clearContents(); ui->tableWidget_3->setRowCount(0); + ui->tableWidget_Standard->clearContents(); + ui->tableWidget_Standard->setRowCount(0); QStringList idList; int rowCount=0; int row=0; @@ -102,6 +113,8 @@ for(const QString& id : idList) { ConnectInfo info; + info.id = id; + info.type = 0; info.state="未连接"; QList result = BaseCommonApi::getTestedCatDevice(id); if(result.length()>0){ @@ -112,6 +125,7 @@ if(addrList.length()>0){ info.programInterface = addrList[0]; } + info.cmdList = BaseCommonApi::getInstructionLib(id); connectList.append(info); addrList.clear(); } @@ -123,29 +137,41 @@ for(const QString& id : idList) { ConnectInfo info; + info.id = id; + info.type = 1; info.state="未连接"; QList result = BaseCommonApi::getCatDeviceInfor(id); if(result.length()>0){ info.deviceName = result[0].equipment_name; + + //更新标准设备表格 + rowCount = ui->tableWidget_Standard->rowCount(); + ui->tableWidget_Standard->insertRow(rowCount); + ui->tableWidget_Standard->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_Standard->setItem(row, 1, new QTableWidgetItem("OFF")); //设置数据 + row++; } result.clear(); QList addrList = BaseCommonApi::getVerificationProgramConfigInterface(id); if(addrList.length()>0){ info.programInterface = addrList[0]; } + info.cmdList = BaseCommonApi::getInstructionLib(id); connectList.append(info); addrList.clear(); } idList.clear(); } - for(const ConnectInfo& info : connectList){ - rowCount = ui->tableWidget_3->rowCount(); - ui->tableWidget_3->insertRow(rowCount); - ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); - ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 - row++; - } - ui->tableWidget_3->selectRow(0); + rowCount=0; + row=0; + for(const ConnectInfo& info : connectList){ + rowCount = ui->tableWidget_3->rowCount(); + ui->tableWidget_3->insertRow(rowCount); + ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 + row++; + } + ui->tableWidget_3->selectRow(0); } void CheckWindow::showCheck() @@ -178,9 +204,10 @@ if(programInfo.tested_device_id!="") { QStringList idList=programInfo.tested_device_id.split(","); - QStringList headlist; - - QList Data=BaseCommonApi::Search_CalibrationTable(idList[0],&headlist); + //QStringList headlist; + headList.clear(); + calibrationList.clear(); + calibrationList =BaseCommonApi::Search_CalibrationTable(idList[0],&headList); //tableWidgetItem ui->tableWidget_Point->clearContents(); @@ -188,7 +215,7 @@ //循环数据 int rowCount=0; int row=0; - for (const QStringList& item : Data) + for (const QStringList& item : calibrationList) { //获取行号 并进行添加行 rowCount = ui->tableWidget_Point->rowCount(); @@ -259,6 +286,7 @@ void CheckWindow::showResult() { DialogCheckResult* dlg = new DialogCheckResult; + dlg->initCheckTable(measureCalList,headList); dlg->setModal(true); dlg->show(); } @@ -388,3 +416,134 @@ } } } + +void CheckWindow::initCheckTable() +{ + ui->tableWidgetCheck->clearContents(); + ui->tableWidgetCheck->setRowCount(0); + ui->tableWidgetCheck->setColumnCount(0); + int rowCount = 0; + int row=0; + ui->tableWidgetCheck->setColumnCount(headList.count()); + ui->tableWidgetCheck->setHorizontalHeaderLabels(headList); + for(int i=0;itableWidgetCheck->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + measureCalList.clear(); + for(int i=0;itableWidget_Point->rowCount();i++){ + Qt::CheckState state = ui->tableWidget_Point->item(i,0)->checkState(); + if(state == Qt::Checked){ + QStringList& item = calibrationList[i]; + int cnt = ui->tableWidget_Point->item(i,2)->text().toInt(); + for(int j=0;jtableWidgetCheck->rowCount(); + ui->tableWidgetCheck->insertRow(rowCount); + ui->tableWidgetCheck->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + //循环读取值 headlist,count是列的数量 + for(int k=1;ktableWidgetCheck->setItem(row, k, new QTableWidgetItem(item[k])); + } + SaveDeviceMeasureCalibrator measItem; + measItem.item_data_id = item[1]; + measItem.maximum_error_formula = item[10];//最大允许误差(公式) + measItem.error_param_a = item[11];//误差参数a + measItem.error_param_b = item[12];//误差参数b + measItem.params = item[2];//参数 + measItem.capacity=item[3];//量 + measItem.unit=item[4];//单位 + measItem.frequency=item[5];//频率 + measItem.frequency_unit=item[6];//频率单位 + measItem.range_range=item[7];//量程 + measItem.standard_value=item[8];//标准值(输入字段,特殊:指针式万用表输出字段) + measItem.indicating_value=item[15];//示值(输出字段,特殊:指针式万用表输入字段) + measItem.maximum_error=item[10];//最大允许误差(值) + //measItem.absolute_error=item[11];//绝对误差 + measItem.resolution=item[9];//分辨力 + measItem.measure_indication_value=item[19];//被检表示值 + measureCalList.append(measItem); + row++; + } + } + } + if(connectList.length()>0&&connectList[0].type==0) + deviceEngine.openDevice(connectList[0].programInterface.visa,"Visa"); + if(connectList.length()>1&&connectList[1].type==1) + standardEngine.openDevice(connectList[1].programInterface.visa,"Visa"); +} + +InstructionLib* CheckWindow::getCmdByCheckName(int idx,QString name) +{ + if(idx>=0&&idxinstruct_config.split(";"); + if(sList.length()>0){ + for (QString& sCmd : sList){ + standardEngine.sendData(sCmd); + } + } + } + } + //被检设备读数 + if(deviceEngine.getState()){ + InstructionLib *instrcutLib = getCmdByCheckName(0,item.params); + if(instrcutLib!=nullptr){ + QStringList sList = instrcutLib->instruct_config.split(";"); + if(sList.length()>0){ + for (QString& sCmd : sList){ + deviceEngine.sendData(sCmd); + } + } + Delay_MSec(2000); + sRet = deviceEngine.queryData(instrcutLib->instruct_read); + } + } + // + if(sRet==""){ + bool bOk = false; + double dRet = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,1,&bOk); + + if (bOk) { + sRet = QString::number(dRet); + } + } + item.measure_indication_value = sRet; + ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); + } +} + +void CheckWindow::Delay_MSec(unsigned int msec) +{ + QTime _Timer = QTime::currentTime().addMSecs(msec); + while( QTime::currentTime() < _Timer ) + QCoreApplication::processEvents(QEventLoop::AllEvents, 100); +} + +void CheckWindow::on_pushButton_pause_clicked() +{ + +} + +void CheckWindow::on_pushButton_stop_clicked() +{ + +} diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 8cfaaf3..35ca267 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -3,6 +3,7 @@ #include #include "basecommonapi.h" +#include "visacommonengine.h" namespace Ui { class CheckWindow; @@ -10,9 +11,12 @@ class ConnectInfo { public: + QString id; + int type; QString deviceName; QString state; VerificationProgramConfigInterface programInterface; + QList cmdList; }; class CheckWindow : public QWidget @@ -37,11 +41,20 @@ void on_tableWidget_3_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); void on_deviceButton_clicked(MyTask task,int idx); + void on_pushButton_start_clicked(); + + void on_pushButton_pause_clicked(); + + void on_pushButton_stop_clicked(); + private: void getCheckDevice(); void getCheckMethod(); void initDeviceInfo(); void deleteItem(QLayout *layout); + void initCheckTable(); + InstructionLib* getCmdByCheckName(int idx,QString name); + void Delay_MSec(unsigned int msec); private: Ui::CheckWindow *ui; QList programList; @@ -49,6 +62,12 @@ QList selectTaskList; VerificationProgramInfo programInfo; QList connectList; + QStringList headList; + QList calibrationList; + VisaCommonEngine deviceEngine; + VisaCommonEngine standardEngine; + QList measureCalList; + SaveDeviceMeasureInfo measureInfo; }; #endif // CHECKWINDOW_H diff --git a/softwareDirectory/AutoVerScheme/checkwindow.ui b/softwareDirectory/AutoVerScheme/checkwindow.ui index d8d6a52..fb01e60 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.ui +++ b/softwareDirectory/AutoVerScheme/checkwindow.ui @@ -1266,7 +1266,7 @@ - + @@ -1293,6 +1293,36 @@ 标准设备面板 + + + + + + 设备名称 + + + + 12 + 75 + true + + + + + + 状态 + + + + 12 + 75 + true + + + + + + @@ -1515,7 +1545,7 @@ - + diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp index 3a10cb0..41e1816 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp @@ -1,13 +1,13 @@ #include "dialogcheckresult.h" #include "ui_dialogcheckresult.h" +#include DialogCheckResult::DialogCheckResult(QWidget *parent) : QDialog(parent), ui(new Ui::DialogCheckResult) { ui->setupUi(this); - for(int i=0;i<7;i++) - ui->tableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } DialogCheckResult::~DialogCheckResult() @@ -15,10 +15,66 @@ delete ui; } +void DialogCheckResult::initCheckTable(QList measList,QStringList headList) +{ + ui->tableWidget->verticalHeader()->setParent(nullptr); + ui->tableWidget->setColumnCount(headList.count()); + ui->tableWidget->setHorizontalHeaderLabels(headList); + for(int i=0;itableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + int rowCount=0; + int row=0; + measureCalList = measList; + for (const SaveDeviceMeasureCalibrator& measItem : measList) + { + //获取行号 并进行添加行 + rowCount = ui->tableWidget->rowCount(); + ui->tableWidget->insertRow(rowCount); + //添加 序号 + ui->tableWidget->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + + ui->tableWidget->setItem(row, 2, new QTableWidgetItem(measItem.params)); + ui->tableWidget->setItem(row, 3, new QTableWidgetItem(measItem.capacity)); + ui->tableWidget->setItem(row, 4, new QTableWidgetItem(measItem.unit)); + ui->tableWidget->setItem(row, 5, new QTableWidgetItem(measItem.frequency)); + ui->tableWidget->setItem(row, 6, new QTableWidgetItem(measItem.frequency_unit)); + ui->tableWidget->setItem(row, 7, new QTableWidgetItem(measItem.range_range)); + ui->tableWidget->setItem(row, 8, new QTableWidgetItem(measItem.standard_value)); + ui->tableWidget->setItem(row, 9, new QTableWidgetItem(measItem.resolution)); + ui->tableWidget->setItem(row, 10, new QTableWidgetItem(measItem.maximum_error)); + ui->tableWidget->setItem(row, 11, new QTableWidgetItem(measItem.error_param_a)); + ui->tableWidget->setItem(row, 12, new QTableWidgetItem(measItem.error_param_b)); + ui->tableWidget->setItem(row, 15, new QTableWidgetItem(measItem.indicating_value)); + ui->tableWidget->setItem(row, 19, new QTableWidgetItem(measItem.measure_indication_value)); + row++; + } +} + void DialogCheckResult::on_pushButton_3_clicked() { SaveDeviceMeasureInfo measInfo; - BaseCommonApi::InsertSaveDeviceMeasureInfo(measInfo); + BaseCommonApi api; + measInfo.id = QString::number(api.generateId()); + measInfo.data_no = "jdsj"+QDateTime::currentDateTime().toString("yyyyMMdd")+"0002"; + measInfo.temperature = ui->lineEditTemp->text(); + measInfo.humidity =ui->lineEdit_Hum->text(); + measInfo.measure_address=ui->comboBoxPlace->currentText(); + measInfo.trace_date = ui->dateEditCheck->date(); + measInfo.measure_valid_date = ui->dateEdit_Valid->dateTime(); + measInfo.outcome = ui->lineEdit_Cons->text(); + if(BaseCommonApi::InsertSaveDeviceMeasureInfo(measInfo)){ + for(SaveDeviceMeasureCalibrator& item:measureCalList){ + item.id = QString::number(api.generateId()); + item.data_id = measInfo.id; + BaseCommonApi::InsertVerMultiCal(item); + } + } + else + { + QMessageBox::warning(this, "警告", "保存失败!"); + } } void DialogCheckResult::on_pushButton_2_clicked() diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.h b/softwareDirectory/AutoVerScheme/dialogcheckresult.h index aec3b88..43cecac 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.h +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.h @@ -15,6 +15,7 @@ public: explicit DialogCheckResult(QWidget *parent = nullptr); ~DialogCheckResult(); + void initCheckTable(QList measList,QStringList headList); private slots: void on_pushButton_3_clicked(); @@ -25,6 +26,7 @@ private: Ui::DialogCheckResult *ui; + QList measureCalList; }; #endif // DIALOGCHECKRESULT_H diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.ui b/softwareDirectory/AutoVerScheme/dialogcheckresult.ui index fd74cfd..3be74e6 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.ui +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.ui @@ -145,7 +145,7 @@ - + @@ -155,7 +155,7 @@ - + @@ -165,7 +165,7 @@ - + @@ -175,7 +175,7 @@ - + @@ -185,7 +185,11 @@ - + + + true + + @@ -195,7 +199,11 @@ - + + + true + + @@ -205,7 +213,11 @@ - + + + true + + @@ -215,7 +227,7 @@ - + @@ -225,7 +237,7 @@ - + @@ -247,41 +259,6 @@ false - - - 新建列 - - - - - 量/单位 - - - - - 量程 - - - - - 新建列 - - - - - 检定点 - - - - - 测试值 - - - - - 备注 - - diff --git a/softwareDirectory/AutoVerScheme/formaddrsetting.cpp b/softwareDirectory/AutoVerScheme/formaddrsetting.cpp index c0c6866..939e00f 100644 --- a/softwareDirectory/AutoVerScheme/formaddrsetting.cpp +++ b/softwareDirectory/AutoVerScheme/formaddrsetting.cpp @@ -37,16 +37,17 @@ QStringList headlist; QList caliList =BaseCommonApi::Search_CalibrationTable(sDeviceId,&headlist); for (const QStringList& item : caliList){ - this->ui->comboBox->addItem(item[1]); + this->ui->comboBox->addItem(item[2]); } } else { QStringList headlist; //QString DeviceName = BaseCommonApi::getApparatus(id); - QList bizDeviceManageData=BaseCommonApi::getCheckDCPower(sDeviceId,&headlist); - for (const CheckDCPower& item : bizDeviceManageData){ - this->ui->comboBox->addItem(item.check_type); + //QList bizDeviceManageData=BaseCommonApi::getCheckDCPower(sDeviceId,&headlist); + QList ptList = BaseCommonApi::Search_VerifyTable(sDeviceId,&headlist); + for (const QStringList& item : ptList){ + this->ui->comboBox->addItem(item[2]); } } } diff --git a/softwareDirectory/AutoVerScheme/newcheckmethod.cpp b/softwareDirectory/AutoVerScheme/newcheckmethod.cpp index cef8248..058a788 100644 --- a/softwareDirectory/AutoVerScheme/newcheckmethod.cpp +++ b/softwareDirectory/AutoVerScheme/newcheckmethod.cpp @@ -119,6 +119,7 @@ programInfo.program_name = ui->lineEditName->text(); programInfo.create_name = ui->lineEditUser->text(); programInfo.create_time = ui->dateEditTime->dateTime(); + programInfo.update_time = QDateTime::currentDateTime(); programInfo.remark = ui->lineEditMark->text(); if(BaseCommonApi::UpdateVerificationProgramInfo(programInfo)) { diff --git a/softwareDirectory/AutoVerScheme/newverifymethod.cpp b/softwareDirectory/AutoVerScheme/newverifymethod.cpp index 4fc3594..c9cb49c 100644 --- a/softwareDirectory/AutoVerScheme/newverifymethod.cpp +++ b/softwareDirectory/AutoVerScheme/newverifymethod.cpp @@ -254,6 +254,7 @@ programInfo.check_name = ui->lineEditName->text(); programInfo.create_name = ui->lineEditUser->text(); programInfo.create_time = ui->dateEditTime->dateTime(); + programInfo.update_time = QDateTime::currentDateTime(); programInfo.remark = ui->lineEditMark->text(); if(BaseCommonApi::UpdateCheckProgramManage(programInfo)) { diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user index 162961a..02579f1 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index beb4982..ff58124 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -1304,11 +1304,12 @@ " SET program_name = :program_name,create_name = :create_name, create_time = :create_time" "remark = :remark,img_path = :img_path,tested_device_id = :tested_device_id,standard_device_id = :standard_device_id ,update_time = :update_time" "WHERE id = :id;"); - QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + QString formattedDateTime = verInfo.create_time.toString("yyyy-MM-dd HH:mm:ss"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); query.bindValue(":update_time",currentDateTime); query.bindValue(":program_name", verInfo.program_name); query.bindValue(":create_name", verInfo.create_name); - query.bindValue(":create_time", verInfo.create_time); + query.bindValue(":create_time", formattedDateTime); query.bindValue(":remark", verInfo.remark); query.bindValue(":img_path", verInfo.img_path); query.bindValue(":tested_device_id", verInfo.tested_device_id); diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 44aaa75..c90f1dc 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -3,6 +3,7 @@ #include "dialogcheckresult.h" #include #include "basecommonapi.h" +#include CheckWindow::CheckWindow(QWidget *parent) : QWidget(parent), @@ -27,6 +28,10 @@ ui->tableWidget_Point->setColumnWidth(0, 60); for(int i=1;i<3;i++) ui->tableWidget_Point->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidget_Standard->verticalHeader()->setParent(nullptr); + for(int i=0;i<2;i++) + ui->tableWidget_Standard->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidgetCheck->verticalHeader()->setParent(nullptr); getCheckDevice(); //ui->stackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); @@ -38,6 +43,9 @@ programList.clear(); connectList.clear(); selectTaskList.clear(); + headList.clear(); + calibrationList.clear(); + measureCalList.clear(); delete ui; } @@ -49,6 +57,7 @@ Qt::CheckState state = ui->tableWidgetDevice->item(i,0)->checkState(); if(state == Qt::Checked){ selectTaskList.append(myTaskList[i]); + measureInfo.order_id = myTaskList[i].id; /*if(ids=="") ids = myTaskList[i].id; else @@ -92,6 +101,8 @@ ui->tableWidget_3->clearContents(); ui->tableWidget_3->setRowCount(0); + ui->tableWidget_Standard->clearContents(); + ui->tableWidget_Standard->setRowCount(0); QStringList idList; int rowCount=0; int row=0; @@ -102,6 +113,8 @@ for(const QString& id : idList) { ConnectInfo info; + info.id = id; + info.type = 0; info.state="未连接"; QList result = BaseCommonApi::getTestedCatDevice(id); if(result.length()>0){ @@ -112,6 +125,7 @@ if(addrList.length()>0){ info.programInterface = addrList[0]; } + info.cmdList = BaseCommonApi::getInstructionLib(id); connectList.append(info); addrList.clear(); } @@ -123,29 +137,41 @@ for(const QString& id : idList) { ConnectInfo info; + info.id = id; + info.type = 1; info.state="未连接"; QList result = BaseCommonApi::getCatDeviceInfor(id); if(result.length()>0){ info.deviceName = result[0].equipment_name; + + //更新标准设备表格 + rowCount = ui->tableWidget_Standard->rowCount(); + ui->tableWidget_Standard->insertRow(rowCount); + ui->tableWidget_Standard->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_Standard->setItem(row, 1, new QTableWidgetItem("OFF")); //设置数据 + row++; } result.clear(); QList addrList = BaseCommonApi::getVerificationProgramConfigInterface(id); if(addrList.length()>0){ info.programInterface = addrList[0]; } + info.cmdList = BaseCommonApi::getInstructionLib(id); connectList.append(info); addrList.clear(); } idList.clear(); } - for(const ConnectInfo& info : connectList){ - rowCount = ui->tableWidget_3->rowCount(); - ui->tableWidget_3->insertRow(rowCount); - ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); - ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 - row++; - } - ui->tableWidget_3->selectRow(0); + rowCount=0; + row=0; + for(const ConnectInfo& info : connectList){ + rowCount = ui->tableWidget_3->rowCount(); + ui->tableWidget_3->insertRow(rowCount); + ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 + row++; + } + ui->tableWidget_3->selectRow(0); } void CheckWindow::showCheck() @@ -178,9 +204,10 @@ if(programInfo.tested_device_id!="") { QStringList idList=programInfo.tested_device_id.split(","); - QStringList headlist; - - QList Data=BaseCommonApi::Search_CalibrationTable(idList[0],&headlist); + //QStringList headlist; + headList.clear(); + calibrationList.clear(); + calibrationList =BaseCommonApi::Search_CalibrationTable(idList[0],&headList); //tableWidgetItem ui->tableWidget_Point->clearContents(); @@ -188,7 +215,7 @@ //循环数据 int rowCount=0; int row=0; - for (const QStringList& item : Data) + for (const QStringList& item : calibrationList) { //获取行号 并进行添加行 rowCount = ui->tableWidget_Point->rowCount(); @@ -259,6 +286,7 @@ void CheckWindow::showResult() { DialogCheckResult* dlg = new DialogCheckResult; + dlg->initCheckTable(measureCalList,headList); dlg->setModal(true); dlg->show(); } @@ -388,3 +416,134 @@ } } } + +void CheckWindow::initCheckTable() +{ + ui->tableWidgetCheck->clearContents(); + ui->tableWidgetCheck->setRowCount(0); + ui->tableWidgetCheck->setColumnCount(0); + int rowCount = 0; + int row=0; + ui->tableWidgetCheck->setColumnCount(headList.count()); + ui->tableWidgetCheck->setHorizontalHeaderLabels(headList); + for(int i=0;itableWidgetCheck->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + measureCalList.clear(); + for(int i=0;itableWidget_Point->rowCount();i++){ + Qt::CheckState state = ui->tableWidget_Point->item(i,0)->checkState(); + if(state == Qt::Checked){ + QStringList& item = calibrationList[i]; + int cnt = ui->tableWidget_Point->item(i,2)->text().toInt(); + for(int j=0;jtableWidgetCheck->rowCount(); + ui->tableWidgetCheck->insertRow(rowCount); + ui->tableWidgetCheck->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + //循环读取值 headlist,count是列的数量 + for(int k=1;ktableWidgetCheck->setItem(row, k, new QTableWidgetItem(item[k])); + } + SaveDeviceMeasureCalibrator measItem; + measItem.item_data_id = item[1]; + measItem.maximum_error_formula = item[10];//最大允许误差(公式) + measItem.error_param_a = item[11];//误差参数a + measItem.error_param_b = item[12];//误差参数b + measItem.params = item[2];//参数 + measItem.capacity=item[3];//量 + measItem.unit=item[4];//单位 + measItem.frequency=item[5];//频率 + measItem.frequency_unit=item[6];//频率单位 + measItem.range_range=item[7];//量程 + measItem.standard_value=item[8];//标准值(输入字段,特殊:指针式万用表输出字段) + measItem.indicating_value=item[15];//示值(输出字段,特殊:指针式万用表输入字段) + measItem.maximum_error=item[10];//最大允许误差(值) + //measItem.absolute_error=item[11];//绝对误差 + measItem.resolution=item[9];//分辨力 + measItem.measure_indication_value=item[19];//被检表示值 + measureCalList.append(measItem); + row++; + } + } + } + if(connectList.length()>0&&connectList[0].type==0) + deviceEngine.openDevice(connectList[0].programInterface.visa,"Visa"); + if(connectList.length()>1&&connectList[1].type==1) + standardEngine.openDevice(connectList[1].programInterface.visa,"Visa"); +} + +InstructionLib* CheckWindow::getCmdByCheckName(int idx,QString name) +{ + if(idx>=0&&idxinstruct_config.split(";"); + if(sList.length()>0){ + for (QString& sCmd : sList){ + standardEngine.sendData(sCmd); + } + } + } + } + //被检设备读数 + if(deviceEngine.getState()){ + InstructionLib *instrcutLib = getCmdByCheckName(0,item.params); + if(instrcutLib!=nullptr){ + QStringList sList = instrcutLib->instruct_config.split(";"); + if(sList.length()>0){ + for (QString& sCmd : sList){ + deviceEngine.sendData(sCmd); + } + } + Delay_MSec(2000); + sRet = deviceEngine.queryData(instrcutLib->instruct_read); + } + } + // + if(sRet==""){ + bool bOk = false; + double dRet = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,1,&bOk); + + if (bOk) { + sRet = QString::number(dRet); + } + } + item.measure_indication_value = sRet; + ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); + } +} + +void CheckWindow::Delay_MSec(unsigned int msec) +{ + QTime _Timer = QTime::currentTime().addMSecs(msec); + while( QTime::currentTime() < _Timer ) + QCoreApplication::processEvents(QEventLoop::AllEvents, 100); +} + +void CheckWindow::on_pushButton_pause_clicked() +{ + +} + +void CheckWindow::on_pushButton_stop_clicked() +{ + +} diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 8cfaaf3..35ca267 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -3,6 +3,7 @@ #include #include "basecommonapi.h" +#include "visacommonengine.h" namespace Ui { class CheckWindow; @@ -10,9 +11,12 @@ class ConnectInfo { public: + QString id; + int type; QString deviceName; QString state; VerificationProgramConfigInterface programInterface; + QList cmdList; }; class CheckWindow : public QWidget @@ -37,11 +41,20 @@ void on_tableWidget_3_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); void on_deviceButton_clicked(MyTask task,int idx); + void on_pushButton_start_clicked(); + + void on_pushButton_pause_clicked(); + + void on_pushButton_stop_clicked(); + private: void getCheckDevice(); void getCheckMethod(); void initDeviceInfo(); void deleteItem(QLayout *layout); + void initCheckTable(); + InstructionLib* getCmdByCheckName(int idx,QString name); + void Delay_MSec(unsigned int msec); private: Ui::CheckWindow *ui; QList programList; @@ -49,6 +62,12 @@ QList selectTaskList; VerificationProgramInfo programInfo; QList connectList; + QStringList headList; + QList calibrationList; + VisaCommonEngine deviceEngine; + VisaCommonEngine standardEngine; + QList measureCalList; + SaveDeviceMeasureInfo measureInfo; }; #endif // CHECKWINDOW_H diff --git a/softwareDirectory/AutoVerScheme/checkwindow.ui b/softwareDirectory/AutoVerScheme/checkwindow.ui index d8d6a52..fb01e60 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.ui +++ b/softwareDirectory/AutoVerScheme/checkwindow.ui @@ -1266,7 +1266,7 @@ - + @@ -1293,6 +1293,36 @@ 标准设备面板 + + + + + + 设备名称 + + + + 12 + 75 + true + + + + + + 状态 + + + + 12 + 75 + true + + + + + + @@ -1515,7 +1545,7 @@ - + diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp index 3a10cb0..41e1816 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp @@ -1,13 +1,13 @@ #include "dialogcheckresult.h" #include "ui_dialogcheckresult.h" +#include DialogCheckResult::DialogCheckResult(QWidget *parent) : QDialog(parent), ui(new Ui::DialogCheckResult) { ui->setupUi(this); - for(int i=0;i<7;i++) - ui->tableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } DialogCheckResult::~DialogCheckResult() @@ -15,10 +15,66 @@ delete ui; } +void DialogCheckResult::initCheckTable(QList measList,QStringList headList) +{ + ui->tableWidget->verticalHeader()->setParent(nullptr); + ui->tableWidget->setColumnCount(headList.count()); + ui->tableWidget->setHorizontalHeaderLabels(headList); + for(int i=0;itableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + int rowCount=0; + int row=0; + measureCalList = measList; + for (const SaveDeviceMeasureCalibrator& measItem : measList) + { + //获取行号 并进行添加行 + rowCount = ui->tableWidget->rowCount(); + ui->tableWidget->insertRow(rowCount); + //添加 序号 + ui->tableWidget->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + + ui->tableWidget->setItem(row, 2, new QTableWidgetItem(measItem.params)); + ui->tableWidget->setItem(row, 3, new QTableWidgetItem(measItem.capacity)); + ui->tableWidget->setItem(row, 4, new QTableWidgetItem(measItem.unit)); + ui->tableWidget->setItem(row, 5, new QTableWidgetItem(measItem.frequency)); + ui->tableWidget->setItem(row, 6, new QTableWidgetItem(measItem.frequency_unit)); + ui->tableWidget->setItem(row, 7, new QTableWidgetItem(measItem.range_range)); + ui->tableWidget->setItem(row, 8, new QTableWidgetItem(measItem.standard_value)); + ui->tableWidget->setItem(row, 9, new QTableWidgetItem(measItem.resolution)); + ui->tableWidget->setItem(row, 10, new QTableWidgetItem(measItem.maximum_error)); + ui->tableWidget->setItem(row, 11, new QTableWidgetItem(measItem.error_param_a)); + ui->tableWidget->setItem(row, 12, new QTableWidgetItem(measItem.error_param_b)); + ui->tableWidget->setItem(row, 15, new QTableWidgetItem(measItem.indicating_value)); + ui->tableWidget->setItem(row, 19, new QTableWidgetItem(measItem.measure_indication_value)); + row++; + } +} + void DialogCheckResult::on_pushButton_3_clicked() { SaveDeviceMeasureInfo measInfo; - BaseCommonApi::InsertSaveDeviceMeasureInfo(measInfo); + BaseCommonApi api; + measInfo.id = QString::number(api.generateId()); + measInfo.data_no = "jdsj"+QDateTime::currentDateTime().toString("yyyyMMdd")+"0002"; + measInfo.temperature = ui->lineEditTemp->text(); + measInfo.humidity =ui->lineEdit_Hum->text(); + measInfo.measure_address=ui->comboBoxPlace->currentText(); + measInfo.trace_date = ui->dateEditCheck->date(); + measInfo.measure_valid_date = ui->dateEdit_Valid->dateTime(); + measInfo.outcome = ui->lineEdit_Cons->text(); + if(BaseCommonApi::InsertSaveDeviceMeasureInfo(measInfo)){ + for(SaveDeviceMeasureCalibrator& item:measureCalList){ + item.id = QString::number(api.generateId()); + item.data_id = measInfo.id; + BaseCommonApi::InsertVerMultiCal(item); + } + } + else + { + QMessageBox::warning(this, "警告", "保存失败!"); + } } void DialogCheckResult::on_pushButton_2_clicked() diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.h b/softwareDirectory/AutoVerScheme/dialogcheckresult.h index aec3b88..43cecac 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.h +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.h @@ -15,6 +15,7 @@ public: explicit DialogCheckResult(QWidget *parent = nullptr); ~DialogCheckResult(); + void initCheckTable(QList measList,QStringList headList); private slots: void on_pushButton_3_clicked(); @@ -25,6 +26,7 @@ private: Ui::DialogCheckResult *ui; + QList measureCalList; }; #endif // DIALOGCHECKRESULT_H diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.ui b/softwareDirectory/AutoVerScheme/dialogcheckresult.ui index fd74cfd..3be74e6 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.ui +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.ui @@ -145,7 +145,7 @@ - + @@ -155,7 +155,7 @@ - + @@ -165,7 +165,7 @@ - + @@ -175,7 +175,7 @@ - + @@ -185,7 +185,11 @@ - + + + true + + @@ -195,7 +199,11 @@ - + + + true + + @@ -205,7 +213,11 @@ - + + + true + + @@ -215,7 +227,7 @@ - + @@ -225,7 +237,7 @@ - + @@ -247,41 +259,6 @@ false - - - 新建列 - - - - - 量/单位 - - - - - 量程 - - - - - 新建列 - - - - - 检定点 - - - - - 测试值 - - - - - 备注 - - diff --git a/softwareDirectory/AutoVerScheme/formaddrsetting.cpp b/softwareDirectory/AutoVerScheme/formaddrsetting.cpp index c0c6866..939e00f 100644 --- a/softwareDirectory/AutoVerScheme/formaddrsetting.cpp +++ b/softwareDirectory/AutoVerScheme/formaddrsetting.cpp @@ -37,16 +37,17 @@ QStringList headlist; QList caliList =BaseCommonApi::Search_CalibrationTable(sDeviceId,&headlist); for (const QStringList& item : caliList){ - this->ui->comboBox->addItem(item[1]); + this->ui->comboBox->addItem(item[2]); } } else { QStringList headlist; //QString DeviceName = BaseCommonApi::getApparatus(id); - QList bizDeviceManageData=BaseCommonApi::getCheckDCPower(sDeviceId,&headlist); - for (const CheckDCPower& item : bizDeviceManageData){ - this->ui->comboBox->addItem(item.check_type); + //QList bizDeviceManageData=BaseCommonApi::getCheckDCPower(sDeviceId,&headlist); + QList ptList = BaseCommonApi::Search_VerifyTable(sDeviceId,&headlist); + for (const QStringList& item : ptList){ + this->ui->comboBox->addItem(item[2]); } } } diff --git a/softwareDirectory/AutoVerScheme/newcheckmethod.cpp b/softwareDirectory/AutoVerScheme/newcheckmethod.cpp index cef8248..058a788 100644 --- a/softwareDirectory/AutoVerScheme/newcheckmethod.cpp +++ b/softwareDirectory/AutoVerScheme/newcheckmethod.cpp @@ -119,6 +119,7 @@ programInfo.program_name = ui->lineEditName->text(); programInfo.create_name = ui->lineEditUser->text(); programInfo.create_time = ui->dateEditTime->dateTime(); + programInfo.update_time = QDateTime::currentDateTime(); programInfo.remark = ui->lineEditMark->text(); if(BaseCommonApi::UpdateVerificationProgramInfo(programInfo)) { diff --git a/softwareDirectory/AutoVerScheme/newverifymethod.cpp b/softwareDirectory/AutoVerScheme/newverifymethod.cpp index 4fc3594..c9cb49c 100644 --- a/softwareDirectory/AutoVerScheme/newverifymethod.cpp +++ b/softwareDirectory/AutoVerScheme/newverifymethod.cpp @@ -254,6 +254,7 @@ programInfo.check_name = ui->lineEditName->text(); programInfo.create_name = ui->lineEditUser->text(); programInfo.create_time = ui->dateEditTime->dateTime(); + programInfo.update_time = QDateTime::currentDateTime(); programInfo.remark = ui->lineEditMark->text(); if(BaseCommonApi::UpdateCheckProgramManage(programInfo)) { diff --git a/softwareDirectory/AutoVerScheme/verifywindow.cpp b/softwareDirectory/AutoVerScheme/verifywindow.cpp index a18d39d..34b5197 100644 --- a/softwareDirectory/AutoVerScheme/verifywindow.cpp +++ b/softwareDirectory/AutoVerScheme/verifywindow.cpp @@ -12,6 +12,10 @@ ui->tableWidgetMethod->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); ui->tableWidgetMethod->setColumnWidth(0, 60); ui->tableWidgetMethod->setColumnWidth(5, 100); + ui->tableWidget_3->verticalHeader()->setParent(nullptr); + for(int i=0;i<2;i++) + ui->tableWidget_3->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidget_3->setSelectionBehavior(QAbstractItemView::SelectRows); getVerifyMethod(); } @@ -71,13 +75,76 @@ QMessageBox::warning(this, "提示", "请选择检定程序!"); }else{ programInfo = BaseCommonApi::getCheckProgramManageById(sId); - QString strStyle = QString("QLabel{image:url(%1);}").arg(programInfo.img_path); - qDebug() << "strStyle:" << strStyle ; - ui->label_8->setStyleSheet(strStyle); + initDeviceInfo(); ui->stackedWidget->setCurrentIndex(1); } } +void VerifyWindow::initDeviceInfo() +{ + QString strStyle = QString("QLabel{image:url(%1);}").arg(programInfo.img_path); + qDebug() << "strStyle:" << strStyle; + ui->label_8->setStyleSheet(strStyle); + + ui->tableWidget_3->clearContents(); + ui->tableWidget_3->setRowCount(0); + QStringList idList; + int rowCount=0; + int row=0; + connectList.clear(); + if(programInfo.standard_device_id!="") + { + idList = programInfo.standard_device_id.split(","); + for(const QString& id : idList) + { + ConnectInfo info; + info.state="未连接"; + QList result = BaseCommonApi::getCatDeviceInfor(id); + if(result.length()>0){ + info.deviceName = result[0].equipment_name; + } + result.clear(); + QList addrList = BaseCommonApi::getVerificationProgramConfigInterface(id); + if(addrList.length()>0){ + info.programInterface = addrList[0]; + } + connectList.append(info); + addrList.clear(); + } + idList.clear(); + } + + if(programInfo.verification_documents_id!=""){ + idList = programInfo.verification_documents_id.split(","); + for(const QString& id : idList) + { + ConnectInfo info; + info.state="未连接"; + QList result = BaseCommonApi::getTestedCatDevice(id); + if(result.length()>0){ + info.deviceName = result[0].equipment_name; + } + result.clear(); + QList addrList = BaseCommonApi::getVerificationProgramConfigInterface(id); + if(addrList.length()>0){ + info.programInterface = addrList[0]; + } + connectList.append(info); + addrList.clear(); + } + idList.clear(); + } + for(const ConnectInfo& info : connectList){ + rowCount = ui->tableWidget_3->rowCount(); + ui->tableWidget_3->insertRow(rowCount); + ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 + row++; + } + ui->tableWidget_3->selectRow(0); +} + + void VerifyWindow::on_editButton_clicked() { @@ -96,3 +163,26 @@ } } } + +void VerifyWindow::on_tableWidget_3_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn) +{ + if(currentRow>=0&¤tRowradioButton_serial->setChecked(true); + else + ui->radioButton_visa->setChecked(true); + ui->comboBox_visa->setCurrentText(addr.visa); + if(addr.serial_port!=""){ + QStringList sList = addr.serial_port.split(";"); + if(sList.length()==5){ + ui->comboBox_port->setCurrentText(sList[0]); + ui->comboBox_baurt->setCurrentText(sList[1]); + ui->comboBox_check->setCurrentText(sList[2]); + ui->comboBox_data->setCurrentText(sList[3]); + ui->comboBox_stop->setCurrentText(sList[4]); + } + } + } +} diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user index 162961a..02579f1 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index beb4982..ff58124 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -1304,11 +1304,12 @@ " SET program_name = :program_name,create_name = :create_name, create_time = :create_time" "remark = :remark,img_path = :img_path,tested_device_id = :tested_device_id,standard_device_id = :standard_device_id ,update_time = :update_time" "WHERE id = :id;"); - QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + QString formattedDateTime = verInfo.create_time.toString("yyyy-MM-dd HH:mm:ss"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); query.bindValue(":update_time",currentDateTime); query.bindValue(":program_name", verInfo.program_name); query.bindValue(":create_name", verInfo.create_name); - query.bindValue(":create_time", verInfo.create_time); + query.bindValue(":create_time", formattedDateTime); query.bindValue(":remark", verInfo.remark); query.bindValue(":img_path", verInfo.img_path); query.bindValue(":tested_device_id", verInfo.tested_device_id); diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 44aaa75..c90f1dc 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -3,6 +3,7 @@ #include "dialogcheckresult.h" #include #include "basecommonapi.h" +#include CheckWindow::CheckWindow(QWidget *parent) : QWidget(parent), @@ -27,6 +28,10 @@ ui->tableWidget_Point->setColumnWidth(0, 60); for(int i=1;i<3;i++) ui->tableWidget_Point->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidget_Standard->verticalHeader()->setParent(nullptr); + for(int i=0;i<2;i++) + ui->tableWidget_Standard->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidgetCheck->verticalHeader()->setParent(nullptr); getCheckDevice(); //ui->stackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); @@ -38,6 +43,9 @@ programList.clear(); connectList.clear(); selectTaskList.clear(); + headList.clear(); + calibrationList.clear(); + measureCalList.clear(); delete ui; } @@ -49,6 +57,7 @@ Qt::CheckState state = ui->tableWidgetDevice->item(i,0)->checkState(); if(state == Qt::Checked){ selectTaskList.append(myTaskList[i]); + measureInfo.order_id = myTaskList[i].id; /*if(ids=="") ids = myTaskList[i].id; else @@ -92,6 +101,8 @@ ui->tableWidget_3->clearContents(); ui->tableWidget_3->setRowCount(0); + ui->tableWidget_Standard->clearContents(); + ui->tableWidget_Standard->setRowCount(0); QStringList idList; int rowCount=0; int row=0; @@ -102,6 +113,8 @@ for(const QString& id : idList) { ConnectInfo info; + info.id = id; + info.type = 0; info.state="未连接"; QList result = BaseCommonApi::getTestedCatDevice(id); if(result.length()>0){ @@ -112,6 +125,7 @@ if(addrList.length()>0){ info.programInterface = addrList[0]; } + info.cmdList = BaseCommonApi::getInstructionLib(id); connectList.append(info); addrList.clear(); } @@ -123,29 +137,41 @@ for(const QString& id : idList) { ConnectInfo info; + info.id = id; + info.type = 1; info.state="未连接"; QList result = BaseCommonApi::getCatDeviceInfor(id); if(result.length()>0){ info.deviceName = result[0].equipment_name; + + //更新标准设备表格 + rowCount = ui->tableWidget_Standard->rowCount(); + ui->tableWidget_Standard->insertRow(rowCount); + ui->tableWidget_Standard->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_Standard->setItem(row, 1, new QTableWidgetItem("OFF")); //设置数据 + row++; } result.clear(); QList addrList = BaseCommonApi::getVerificationProgramConfigInterface(id); if(addrList.length()>0){ info.programInterface = addrList[0]; } + info.cmdList = BaseCommonApi::getInstructionLib(id); connectList.append(info); addrList.clear(); } idList.clear(); } - for(const ConnectInfo& info : connectList){ - rowCount = ui->tableWidget_3->rowCount(); - ui->tableWidget_3->insertRow(rowCount); - ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); - ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 - row++; - } - ui->tableWidget_3->selectRow(0); + rowCount=0; + row=0; + for(const ConnectInfo& info : connectList){ + rowCount = ui->tableWidget_3->rowCount(); + ui->tableWidget_3->insertRow(rowCount); + ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 + row++; + } + ui->tableWidget_3->selectRow(0); } void CheckWindow::showCheck() @@ -178,9 +204,10 @@ if(programInfo.tested_device_id!="") { QStringList idList=programInfo.tested_device_id.split(","); - QStringList headlist; - - QList Data=BaseCommonApi::Search_CalibrationTable(idList[0],&headlist); + //QStringList headlist; + headList.clear(); + calibrationList.clear(); + calibrationList =BaseCommonApi::Search_CalibrationTable(idList[0],&headList); //tableWidgetItem ui->tableWidget_Point->clearContents(); @@ -188,7 +215,7 @@ //循环数据 int rowCount=0; int row=0; - for (const QStringList& item : Data) + for (const QStringList& item : calibrationList) { //获取行号 并进行添加行 rowCount = ui->tableWidget_Point->rowCount(); @@ -259,6 +286,7 @@ void CheckWindow::showResult() { DialogCheckResult* dlg = new DialogCheckResult; + dlg->initCheckTable(measureCalList,headList); dlg->setModal(true); dlg->show(); } @@ -388,3 +416,134 @@ } } } + +void CheckWindow::initCheckTable() +{ + ui->tableWidgetCheck->clearContents(); + ui->tableWidgetCheck->setRowCount(0); + ui->tableWidgetCheck->setColumnCount(0); + int rowCount = 0; + int row=0; + ui->tableWidgetCheck->setColumnCount(headList.count()); + ui->tableWidgetCheck->setHorizontalHeaderLabels(headList); + for(int i=0;itableWidgetCheck->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + measureCalList.clear(); + for(int i=0;itableWidget_Point->rowCount();i++){ + Qt::CheckState state = ui->tableWidget_Point->item(i,0)->checkState(); + if(state == Qt::Checked){ + QStringList& item = calibrationList[i]; + int cnt = ui->tableWidget_Point->item(i,2)->text().toInt(); + for(int j=0;jtableWidgetCheck->rowCount(); + ui->tableWidgetCheck->insertRow(rowCount); + ui->tableWidgetCheck->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + //循环读取值 headlist,count是列的数量 + for(int k=1;ktableWidgetCheck->setItem(row, k, new QTableWidgetItem(item[k])); + } + SaveDeviceMeasureCalibrator measItem; + measItem.item_data_id = item[1]; + measItem.maximum_error_formula = item[10];//最大允许误差(公式) + measItem.error_param_a = item[11];//误差参数a + measItem.error_param_b = item[12];//误差参数b + measItem.params = item[2];//参数 + measItem.capacity=item[3];//量 + measItem.unit=item[4];//单位 + measItem.frequency=item[5];//频率 + measItem.frequency_unit=item[6];//频率单位 + measItem.range_range=item[7];//量程 + measItem.standard_value=item[8];//标准值(输入字段,特殊:指针式万用表输出字段) + measItem.indicating_value=item[15];//示值(输出字段,特殊:指针式万用表输入字段) + measItem.maximum_error=item[10];//最大允许误差(值) + //measItem.absolute_error=item[11];//绝对误差 + measItem.resolution=item[9];//分辨力 + measItem.measure_indication_value=item[19];//被检表示值 + measureCalList.append(measItem); + row++; + } + } + } + if(connectList.length()>0&&connectList[0].type==0) + deviceEngine.openDevice(connectList[0].programInterface.visa,"Visa"); + if(connectList.length()>1&&connectList[1].type==1) + standardEngine.openDevice(connectList[1].programInterface.visa,"Visa"); +} + +InstructionLib* CheckWindow::getCmdByCheckName(int idx,QString name) +{ + if(idx>=0&&idxinstruct_config.split(";"); + if(sList.length()>0){ + for (QString& sCmd : sList){ + standardEngine.sendData(sCmd); + } + } + } + } + //被检设备读数 + if(deviceEngine.getState()){ + InstructionLib *instrcutLib = getCmdByCheckName(0,item.params); + if(instrcutLib!=nullptr){ + QStringList sList = instrcutLib->instruct_config.split(";"); + if(sList.length()>0){ + for (QString& sCmd : sList){ + deviceEngine.sendData(sCmd); + } + } + Delay_MSec(2000); + sRet = deviceEngine.queryData(instrcutLib->instruct_read); + } + } + // + if(sRet==""){ + bool bOk = false; + double dRet = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,1,&bOk); + + if (bOk) { + sRet = QString::number(dRet); + } + } + item.measure_indication_value = sRet; + ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); + } +} + +void CheckWindow::Delay_MSec(unsigned int msec) +{ + QTime _Timer = QTime::currentTime().addMSecs(msec); + while( QTime::currentTime() < _Timer ) + QCoreApplication::processEvents(QEventLoop::AllEvents, 100); +} + +void CheckWindow::on_pushButton_pause_clicked() +{ + +} + +void CheckWindow::on_pushButton_stop_clicked() +{ + +} diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 8cfaaf3..35ca267 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -3,6 +3,7 @@ #include #include "basecommonapi.h" +#include "visacommonengine.h" namespace Ui { class CheckWindow; @@ -10,9 +11,12 @@ class ConnectInfo { public: + QString id; + int type; QString deviceName; QString state; VerificationProgramConfigInterface programInterface; + QList cmdList; }; class CheckWindow : public QWidget @@ -37,11 +41,20 @@ void on_tableWidget_3_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); void on_deviceButton_clicked(MyTask task,int idx); + void on_pushButton_start_clicked(); + + void on_pushButton_pause_clicked(); + + void on_pushButton_stop_clicked(); + private: void getCheckDevice(); void getCheckMethod(); void initDeviceInfo(); void deleteItem(QLayout *layout); + void initCheckTable(); + InstructionLib* getCmdByCheckName(int idx,QString name); + void Delay_MSec(unsigned int msec); private: Ui::CheckWindow *ui; QList programList; @@ -49,6 +62,12 @@ QList selectTaskList; VerificationProgramInfo programInfo; QList connectList; + QStringList headList; + QList calibrationList; + VisaCommonEngine deviceEngine; + VisaCommonEngine standardEngine; + QList measureCalList; + SaveDeviceMeasureInfo measureInfo; }; #endif // CHECKWINDOW_H diff --git a/softwareDirectory/AutoVerScheme/checkwindow.ui b/softwareDirectory/AutoVerScheme/checkwindow.ui index d8d6a52..fb01e60 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.ui +++ b/softwareDirectory/AutoVerScheme/checkwindow.ui @@ -1266,7 +1266,7 @@ - + @@ -1293,6 +1293,36 @@ 标准设备面板 + + + + + + 设备名称 + + + + 12 + 75 + true + + + + + + 状态 + + + + 12 + 75 + true + + + + + + @@ -1515,7 +1545,7 @@ - + diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp index 3a10cb0..41e1816 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp @@ -1,13 +1,13 @@ #include "dialogcheckresult.h" #include "ui_dialogcheckresult.h" +#include DialogCheckResult::DialogCheckResult(QWidget *parent) : QDialog(parent), ui(new Ui::DialogCheckResult) { ui->setupUi(this); - for(int i=0;i<7;i++) - ui->tableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } DialogCheckResult::~DialogCheckResult() @@ -15,10 +15,66 @@ delete ui; } +void DialogCheckResult::initCheckTable(QList measList,QStringList headList) +{ + ui->tableWidget->verticalHeader()->setParent(nullptr); + ui->tableWidget->setColumnCount(headList.count()); + ui->tableWidget->setHorizontalHeaderLabels(headList); + for(int i=0;itableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + int rowCount=0; + int row=0; + measureCalList = measList; + for (const SaveDeviceMeasureCalibrator& measItem : measList) + { + //获取行号 并进行添加行 + rowCount = ui->tableWidget->rowCount(); + ui->tableWidget->insertRow(rowCount); + //添加 序号 + ui->tableWidget->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + + ui->tableWidget->setItem(row, 2, new QTableWidgetItem(measItem.params)); + ui->tableWidget->setItem(row, 3, new QTableWidgetItem(measItem.capacity)); + ui->tableWidget->setItem(row, 4, new QTableWidgetItem(measItem.unit)); + ui->tableWidget->setItem(row, 5, new QTableWidgetItem(measItem.frequency)); + ui->tableWidget->setItem(row, 6, new QTableWidgetItem(measItem.frequency_unit)); + ui->tableWidget->setItem(row, 7, new QTableWidgetItem(measItem.range_range)); + ui->tableWidget->setItem(row, 8, new QTableWidgetItem(measItem.standard_value)); + ui->tableWidget->setItem(row, 9, new QTableWidgetItem(measItem.resolution)); + ui->tableWidget->setItem(row, 10, new QTableWidgetItem(measItem.maximum_error)); + ui->tableWidget->setItem(row, 11, new QTableWidgetItem(measItem.error_param_a)); + ui->tableWidget->setItem(row, 12, new QTableWidgetItem(measItem.error_param_b)); + ui->tableWidget->setItem(row, 15, new QTableWidgetItem(measItem.indicating_value)); + ui->tableWidget->setItem(row, 19, new QTableWidgetItem(measItem.measure_indication_value)); + row++; + } +} + void DialogCheckResult::on_pushButton_3_clicked() { SaveDeviceMeasureInfo measInfo; - BaseCommonApi::InsertSaveDeviceMeasureInfo(measInfo); + BaseCommonApi api; + measInfo.id = QString::number(api.generateId()); + measInfo.data_no = "jdsj"+QDateTime::currentDateTime().toString("yyyyMMdd")+"0002"; + measInfo.temperature = ui->lineEditTemp->text(); + measInfo.humidity =ui->lineEdit_Hum->text(); + measInfo.measure_address=ui->comboBoxPlace->currentText(); + measInfo.trace_date = ui->dateEditCheck->date(); + measInfo.measure_valid_date = ui->dateEdit_Valid->dateTime(); + measInfo.outcome = ui->lineEdit_Cons->text(); + if(BaseCommonApi::InsertSaveDeviceMeasureInfo(measInfo)){ + for(SaveDeviceMeasureCalibrator& item:measureCalList){ + item.id = QString::number(api.generateId()); + item.data_id = measInfo.id; + BaseCommonApi::InsertVerMultiCal(item); + } + } + else + { + QMessageBox::warning(this, "警告", "保存失败!"); + } } void DialogCheckResult::on_pushButton_2_clicked() diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.h b/softwareDirectory/AutoVerScheme/dialogcheckresult.h index aec3b88..43cecac 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.h +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.h @@ -15,6 +15,7 @@ public: explicit DialogCheckResult(QWidget *parent = nullptr); ~DialogCheckResult(); + void initCheckTable(QList measList,QStringList headList); private slots: void on_pushButton_3_clicked(); @@ -25,6 +26,7 @@ private: Ui::DialogCheckResult *ui; + QList measureCalList; }; #endif // DIALOGCHECKRESULT_H diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.ui b/softwareDirectory/AutoVerScheme/dialogcheckresult.ui index fd74cfd..3be74e6 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.ui +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.ui @@ -145,7 +145,7 @@ - + @@ -155,7 +155,7 @@ - + @@ -165,7 +165,7 @@ - + @@ -175,7 +175,7 @@ - + @@ -185,7 +185,11 @@ - + + + true + + @@ -195,7 +199,11 @@ - + + + true + + @@ -205,7 +213,11 @@ - + + + true + + @@ -215,7 +227,7 @@ - + @@ -225,7 +237,7 @@ - + @@ -247,41 +259,6 @@ false - - - 新建列 - - - - - 量/单位 - - - - - 量程 - - - - - 新建列 - - - - - 检定点 - - - - - 测试值 - - - - - 备注 - - diff --git a/softwareDirectory/AutoVerScheme/formaddrsetting.cpp b/softwareDirectory/AutoVerScheme/formaddrsetting.cpp index c0c6866..939e00f 100644 --- a/softwareDirectory/AutoVerScheme/formaddrsetting.cpp +++ b/softwareDirectory/AutoVerScheme/formaddrsetting.cpp @@ -37,16 +37,17 @@ QStringList headlist; QList caliList =BaseCommonApi::Search_CalibrationTable(sDeviceId,&headlist); for (const QStringList& item : caliList){ - this->ui->comboBox->addItem(item[1]); + this->ui->comboBox->addItem(item[2]); } } else { QStringList headlist; //QString DeviceName = BaseCommonApi::getApparatus(id); - QList bizDeviceManageData=BaseCommonApi::getCheckDCPower(sDeviceId,&headlist); - for (const CheckDCPower& item : bizDeviceManageData){ - this->ui->comboBox->addItem(item.check_type); + //QList bizDeviceManageData=BaseCommonApi::getCheckDCPower(sDeviceId,&headlist); + QList ptList = BaseCommonApi::Search_VerifyTable(sDeviceId,&headlist); + for (const QStringList& item : ptList){ + this->ui->comboBox->addItem(item[2]); } } } diff --git a/softwareDirectory/AutoVerScheme/newcheckmethod.cpp b/softwareDirectory/AutoVerScheme/newcheckmethod.cpp index cef8248..058a788 100644 --- a/softwareDirectory/AutoVerScheme/newcheckmethod.cpp +++ b/softwareDirectory/AutoVerScheme/newcheckmethod.cpp @@ -119,6 +119,7 @@ programInfo.program_name = ui->lineEditName->text(); programInfo.create_name = ui->lineEditUser->text(); programInfo.create_time = ui->dateEditTime->dateTime(); + programInfo.update_time = QDateTime::currentDateTime(); programInfo.remark = ui->lineEditMark->text(); if(BaseCommonApi::UpdateVerificationProgramInfo(programInfo)) { diff --git a/softwareDirectory/AutoVerScheme/newverifymethod.cpp b/softwareDirectory/AutoVerScheme/newverifymethod.cpp index 4fc3594..c9cb49c 100644 --- a/softwareDirectory/AutoVerScheme/newverifymethod.cpp +++ b/softwareDirectory/AutoVerScheme/newverifymethod.cpp @@ -254,6 +254,7 @@ programInfo.check_name = ui->lineEditName->text(); programInfo.create_name = ui->lineEditUser->text(); programInfo.create_time = ui->dateEditTime->dateTime(); + programInfo.update_time = QDateTime::currentDateTime(); programInfo.remark = ui->lineEditMark->text(); if(BaseCommonApi::UpdateCheckProgramManage(programInfo)) { diff --git a/softwareDirectory/AutoVerScheme/verifywindow.cpp b/softwareDirectory/AutoVerScheme/verifywindow.cpp index a18d39d..34b5197 100644 --- a/softwareDirectory/AutoVerScheme/verifywindow.cpp +++ b/softwareDirectory/AutoVerScheme/verifywindow.cpp @@ -12,6 +12,10 @@ ui->tableWidgetMethod->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); ui->tableWidgetMethod->setColumnWidth(0, 60); ui->tableWidgetMethod->setColumnWidth(5, 100); + ui->tableWidget_3->verticalHeader()->setParent(nullptr); + for(int i=0;i<2;i++) + ui->tableWidget_3->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidget_3->setSelectionBehavior(QAbstractItemView::SelectRows); getVerifyMethod(); } @@ -71,13 +75,76 @@ QMessageBox::warning(this, "提示", "请选择检定程序!"); }else{ programInfo = BaseCommonApi::getCheckProgramManageById(sId); - QString strStyle = QString("QLabel{image:url(%1);}").arg(programInfo.img_path); - qDebug() << "strStyle:" << strStyle ; - ui->label_8->setStyleSheet(strStyle); + initDeviceInfo(); ui->stackedWidget->setCurrentIndex(1); } } +void VerifyWindow::initDeviceInfo() +{ + QString strStyle = QString("QLabel{image:url(%1);}").arg(programInfo.img_path); + qDebug() << "strStyle:" << strStyle; + ui->label_8->setStyleSheet(strStyle); + + ui->tableWidget_3->clearContents(); + ui->tableWidget_3->setRowCount(0); + QStringList idList; + int rowCount=0; + int row=0; + connectList.clear(); + if(programInfo.standard_device_id!="") + { + idList = programInfo.standard_device_id.split(","); + for(const QString& id : idList) + { + ConnectInfo info; + info.state="未连接"; + QList result = BaseCommonApi::getCatDeviceInfor(id); + if(result.length()>0){ + info.deviceName = result[0].equipment_name; + } + result.clear(); + QList addrList = BaseCommonApi::getVerificationProgramConfigInterface(id); + if(addrList.length()>0){ + info.programInterface = addrList[0]; + } + connectList.append(info); + addrList.clear(); + } + idList.clear(); + } + + if(programInfo.verification_documents_id!=""){ + idList = programInfo.verification_documents_id.split(","); + for(const QString& id : idList) + { + ConnectInfo info; + info.state="未连接"; + QList result = BaseCommonApi::getTestedCatDevice(id); + if(result.length()>0){ + info.deviceName = result[0].equipment_name; + } + result.clear(); + QList addrList = BaseCommonApi::getVerificationProgramConfigInterface(id); + if(addrList.length()>0){ + info.programInterface = addrList[0]; + } + connectList.append(info); + addrList.clear(); + } + idList.clear(); + } + for(const ConnectInfo& info : connectList){ + rowCount = ui->tableWidget_3->rowCount(); + ui->tableWidget_3->insertRow(rowCount); + ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 + row++; + } + ui->tableWidget_3->selectRow(0); +} + + void VerifyWindow::on_editButton_clicked() { @@ -96,3 +163,26 @@ } } } + +void VerifyWindow::on_tableWidget_3_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn) +{ + if(currentRow>=0&¤tRowradioButton_serial->setChecked(true); + else + ui->radioButton_visa->setChecked(true); + ui->comboBox_visa->setCurrentText(addr.visa); + if(addr.serial_port!=""){ + QStringList sList = addr.serial_port.split(";"); + if(sList.length()==5){ + ui->comboBox_port->setCurrentText(sList[0]); + ui->comboBox_baurt->setCurrentText(sList[1]); + ui->comboBox_check->setCurrentText(sList[2]); + ui->comboBox_data->setCurrentText(sList[3]); + ui->comboBox_stop->setCurrentText(sList[4]); + } + } + } +} diff --git a/softwareDirectory/AutoVerScheme/verifywindow.h b/softwareDirectory/AutoVerScheme/verifywindow.h index 796487f..e32aea4 100644 --- a/softwareDirectory/AutoVerScheme/verifywindow.h +++ b/softwareDirectory/AutoVerScheme/verifywindow.h @@ -3,6 +3,7 @@ #include #include "basecommonapi.h" +#include "checkwindow.h" namespace Ui { class VerifyWindow; @@ -17,16 +18,21 @@ ~VerifyWindow(); private: void getVerifyMethod(); + void initDeviceInfo(); private slots: void showDevice(); void on_editButton_clicked(); void on_tableWidgetMethod_cellChanged(int row, int column); + void on_tableWidget_3_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); + private: Ui::VerifyWindow *ui; QList programList; CheckProgramManage programInfo; + QList connectList; + }; #endif // VERIFYWINDOW_H diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user index 162961a..02579f1 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index beb4982..ff58124 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -1304,11 +1304,12 @@ " SET program_name = :program_name,create_name = :create_name, create_time = :create_time" "remark = :remark,img_path = :img_path,tested_device_id = :tested_device_id,standard_device_id = :standard_device_id ,update_time = :update_time" "WHERE id = :id;"); - QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + QString formattedDateTime = verInfo.create_time.toString("yyyy-MM-dd HH:mm:ss"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); query.bindValue(":update_time",currentDateTime); query.bindValue(":program_name", verInfo.program_name); query.bindValue(":create_name", verInfo.create_name); - query.bindValue(":create_time", verInfo.create_time); + query.bindValue(":create_time", formattedDateTime); query.bindValue(":remark", verInfo.remark); query.bindValue(":img_path", verInfo.img_path); query.bindValue(":tested_device_id", verInfo.tested_device_id); diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 44aaa75..c90f1dc 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -3,6 +3,7 @@ #include "dialogcheckresult.h" #include #include "basecommonapi.h" +#include CheckWindow::CheckWindow(QWidget *parent) : QWidget(parent), @@ -27,6 +28,10 @@ ui->tableWidget_Point->setColumnWidth(0, 60); for(int i=1;i<3;i++) ui->tableWidget_Point->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidget_Standard->verticalHeader()->setParent(nullptr); + for(int i=0;i<2;i++) + ui->tableWidget_Standard->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidgetCheck->verticalHeader()->setParent(nullptr); getCheckDevice(); //ui->stackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); @@ -38,6 +43,9 @@ programList.clear(); connectList.clear(); selectTaskList.clear(); + headList.clear(); + calibrationList.clear(); + measureCalList.clear(); delete ui; } @@ -49,6 +57,7 @@ Qt::CheckState state = ui->tableWidgetDevice->item(i,0)->checkState(); if(state == Qt::Checked){ selectTaskList.append(myTaskList[i]); + measureInfo.order_id = myTaskList[i].id; /*if(ids=="") ids = myTaskList[i].id; else @@ -92,6 +101,8 @@ ui->tableWidget_3->clearContents(); ui->tableWidget_3->setRowCount(0); + ui->tableWidget_Standard->clearContents(); + ui->tableWidget_Standard->setRowCount(0); QStringList idList; int rowCount=0; int row=0; @@ -102,6 +113,8 @@ for(const QString& id : idList) { ConnectInfo info; + info.id = id; + info.type = 0; info.state="未连接"; QList result = BaseCommonApi::getTestedCatDevice(id); if(result.length()>0){ @@ -112,6 +125,7 @@ if(addrList.length()>0){ info.programInterface = addrList[0]; } + info.cmdList = BaseCommonApi::getInstructionLib(id); connectList.append(info); addrList.clear(); } @@ -123,29 +137,41 @@ for(const QString& id : idList) { ConnectInfo info; + info.id = id; + info.type = 1; info.state="未连接"; QList result = BaseCommonApi::getCatDeviceInfor(id); if(result.length()>0){ info.deviceName = result[0].equipment_name; + + //更新标准设备表格 + rowCount = ui->tableWidget_Standard->rowCount(); + ui->tableWidget_Standard->insertRow(rowCount); + ui->tableWidget_Standard->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_Standard->setItem(row, 1, new QTableWidgetItem("OFF")); //设置数据 + row++; } result.clear(); QList addrList = BaseCommonApi::getVerificationProgramConfigInterface(id); if(addrList.length()>0){ info.programInterface = addrList[0]; } + info.cmdList = BaseCommonApi::getInstructionLib(id); connectList.append(info); addrList.clear(); } idList.clear(); } - for(const ConnectInfo& info : connectList){ - rowCount = ui->tableWidget_3->rowCount(); - ui->tableWidget_3->insertRow(rowCount); - ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); - ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 - row++; - } - ui->tableWidget_3->selectRow(0); + rowCount=0; + row=0; + for(const ConnectInfo& info : connectList){ + rowCount = ui->tableWidget_3->rowCount(); + ui->tableWidget_3->insertRow(rowCount); + ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 + row++; + } + ui->tableWidget_3->selectRow(0); } void CheckWindow::showCheck() @@ -178,9 +204,10 @@ if(programInfo.tested_device_id!="") { QStringList idList=programInfo.tested_device_id.split(","); - QStringList headlist; - - QList Data=BaseCommonApi::Search_CalibrationTable(idList[0],&headlist); + //QStringList headlist; + headList.clear(); + calibrationList.clear(); + calibrationList =BaseCommonApi::Search_CalibrationTable(idList[0],&headList); //tableWidgetItem ui->tableWidget_Point->clearContents(); @@ -188,7 +215,7 @@ //循环数据 int rowCount=0; int row=0; - for (const QStringList& item : Data) + for (const QStringList& item : calibrationList) { //获取行号 并进行添加行 rowCount = ui->tableWidget_Point->rowCount(); @@ -259,6 +286,7 @@ void CheckWindow::showResult() { DialogCheckResult* dlg = new DialogCheckResult; + dlg->initCheckTable(measureCalList,headList); dlg->setModal(true); dlg->show(); } @@ -388,3 +416,134 @@ } } } + +void CheckWindow::initCheckTable() +{ + ui->tableWidgetCheck->clearContents(); + ui->tableWidgetCheck->setRowCount(0); + ui->tableWidgetCheck->setColumnCount(0); + int rowCount = 0; + int row=0; + ui->tableWidgetCheck->setColumnCount(headList.count()); + ui->tableWidgetCheck->setHorizontalHeaderLabels(headList); + for(int i=0;itableWidgetCheck->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + measureCalList.clear(); + for(int i=0;itableWidget_Point->rowCount();i++){ + Qt::CheckState state = ui->tableWidget_Point->item(i,0)->checkState(); + if(state == Qt::Checked){ + QStringList& item = calibrationList[i]; + int cnt = ui->tableWidget_Point->item(i,2)->text().toInt(); + for(int j=0;jtableWidgetCheck->rowCount(); + ui->tableWidgetCheck->insertRow(rowCount); + ui->tableWidgetCheck->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + //循环读取值 headlist,count是列的数量 + for(int k=1;ktableWidgetCheck->setItem(row, k, new QTableWidgetItem(item[k])); + } + SaveDeviceMeasureCalibrator measItem; + measItem.item_data_id = item[1]; + measItem.maximum_error_formula = item[10];//最大允许误差(公式) + measItem.error_param_a = item[11];//误差参数a + measItem.error_param_b = item[12];//误差参数b + measItem.params = item[2];//参数 + measItem.capacity=item[3];//量 + measItem.unit=item[4];//单位 + measItem.frequency=item[5];//频率 + measItem.frequency_unit=item[6];//频率单位 + measItem.range_range=item[7];//量程 + measItem.standard_value=item[8];//标准值(输入字段,特殊:指针式万用表输出字段) + measItem.indicating_value=item[15];//示值(输出字段,特殊:指针式万用表输入字段) + measItem.maximum_error=item[10];//最大允许误差(值) + //measItem.absolute_error=item[11];//绝对误差 + measItem.resolution=item[9];//分辨力 + measItem.measure_indication_value=item[19];//被检表示值 + measureCalList.append(measItem); + row++; + } + } + } + if(connectList.length()>0&&connectList[0].type==0) + deviceEngine.openDevice(connectList[0].programInterface.visa,"Visa"); + if(connectList.length()>1&&connectList[1].type==1) + standardEngine.openDevice(connectList[1].programInterface.visa,"Visa"); +} + +InstructionLib* CheckWindow::getCmdByCheckName(int idx,QString name) +{ + if(idx>=0&&idxinstruct_config.split(";"); + if(sList.length()>0){ + for (QString& sCmd : sList){ + standardEngine.sendData(sCmd); + } + } + } + } + //被检设备读数 + if(deviceEngine.getState()){ + InstructionLib *instrcutLib = getCmdByCheckName(0,item.params); + if(instrcutLib!=nullptr){ + QStringList sList = instrcutLib->instruct_config.split(";"); + if(sList.length()>0){ + for (QString& sCmd : sList){ + deviceEngine.sendData(sCmd); + } + } + Delay_MSec(2000); + sRet = deviceEngine.queryData(instrcutLib->instruct_read); + } + } + // + if(sRet==""){ + bool bOk = false; + double dRet = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,1,&bOk); + + if (bOk) { + sRet = QString::number(dRet); + } + } + item.measure_indication_value = sRet; + ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); + } +} + +void CheckWindow::Delay_MSec(unsigned int msec) +{ + QTime _Timer = QTime::currentTime().addMSecs(msec); + while( QTime::currentTime() < _Timer ) + QCoreApplication::processEvents(QEventLoop::AllEvents, 100); +} + +void CheckWindow::on_pushButton_pause_clicked() +{ + +} + +void CheckWindow::on_pushButton_stop_clicked() +{ + +} diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 8cfaaf3..35ca267 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -3,6 +3,7 @@ #include #include "basecommonapi.h" +#include "visacommonengine.h" namespace Ui { class CheckWindow; @@ -10,9 +11,12 @@ class ConnectInfo { public: + QString id; + int type; QString deviceName; QString state; VerificationProgramConfigInterface programInterface; + QList cmdList; }; class CheckWindow : public QWidget @@ -37,11 +41,20 @@ void on_tableWidget_3_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); void on_deviceButton_clicked(MyTask task,int idx); + void on_pushButton_start_clicked(); + + void on_pushButton_pause_clicked(); + + void on_pushButton_stop_clicked(); + private: void getCheckDevice(); void getCheckMethod(); void initDeviceInfo(); void deleteItem(QLayout *layout); + void initCheckTable(); + InstructionLib* getCmdByCheckName(int idx,QString name); + void Delay_MSec(unsigned int msec); private: Ui::CheckWindow *ui; QList programList; @@ -49,6 +62,12 @@ QList selectTaskList; VerificationProgramInfo programInfo; QList connectList; + QStringList headList; + QList calibrationList; + VisaCommonEngine deviceEngine; + VisaCommonEngine standardEngine; + QList measureCalList; + SaveDeviceMeasureInfo measureInfo; }; #endif // CHECKWINDOW_H diff --git a/softwareDirectory/AutoVerScheme/checkwindow.ui b/softwareDirectory/AutoVerScheme/checkwindow.ui index d8d6a52..fb01e60 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.ui +++ b/softwareDirectory/AutoVerScheme/checkwindow.ui @@ -1266,7 +1266,7 @@ - + @@ -1293,6 +1293,36 @@ 标准设备面板 + + + + + + 设备名称 + + + + 12 + 75 + true + + + + + + 状态 + + + + 12 + 75 + true + + + + + + @@ -1515,7 +1545,7 @@ - + diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp index 3a10cb0..41e1816 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp @@ -1,13 +1,13 @@ #include "dialogcheckresult.h" #include "ui_dialogcheckresult.h" +#include DialogCheckResult::DialogCheckResult(QWidget *parent) : QDialog(parent), ui(new Ui::DialogCheckResult) { ui->setupUi(this); - for(int i=0;i<7;i++) - ui->tableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } DialogCheckResult::~DialogCheckResult() @@ -15,10 +15,66 @@ delete ui; } +void DialogCheckResult::initCheckTable(QList measList,QStringList headList) +{ + ui->tableWidget->verticalHeader()->setParent(nullptr); + ui->tableWidget->setColumnCount(headList.count()); + ui->tableWidget->setHorizontalHeaderLabels(headList); + for(int i=0;itableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + int rowCount=0; + int row=0; + measureCalList = measList; + for (const SaveDeviceMeasureCalibrator& measItem : measList) + { + //获取行号 并进行添加行 + rowCount = ui->tableWidget->rowCount(); + ui->tableWidget->insertRow(rowCount); + //添加 序号 + ui->tableWidget->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + + ui->tableWidget->setItem(row, 2, new QTableWidgetItem(measItem.params)); + ui->tableWidget->setItem(row, 3, new QTableWidgetItem(measItem.capacity)); + ui->tableWidget->setItem(row, 4, new QTableWidgetItem(measItem.unit)); + ui->tableWidget->setItem(row, 5, new QTableWidgetItem(measItem.frequency)); + ui->tableWidget->setItem(row, 6, new QTableWidgetItem(measItem.frequency_unit)); + ui->tableWidget->setItem(row, 7, new QTableWidgetItem(measItem.range_range)); + ui->tableWidget->setItem(row, 8, new QTableWidgetItem(measItem.standard_value)); + ui->tableWidget->setItem(row, 9, new QTableWidgetItem(measItem.resolution)); + ui->tableWidget->setItem(row, 10, new QTableWidgetItem(measItem.maximum_error)); + ui->tableWidget->setItem(row, 11, new QTableWidgetItem(measItem.error_param_a)); + ui->tableWidget->setItem(row, 12, new QTableWidgetItem(measItem.error_param_b)); + ui->tableWidget->setItem(row, 15, new QTableWidgetItem(measItem.indicating_value)); + ui->tableWidget->setItem(row, 19, new QTableWidgetItem(measItem.measure_indication_value)); + row++; + } +} + void DialogCheckResult::on_pushButton_3_clicked() { SaveDeviceMeasureInfo measInfo; - BaseCommonApi::InsertSaveDeviceMeasureInfo(measInfo); + BaseCommonApi api; + measInfo.id = QString::number(api.generateId()); + measInfo.data_no = "jdsj"+QDateTime::currentDateTime().toString("yyyyMMdd")+"0002"; + measInfo.temperature = ui->lineEditTemp->text(); + measInfo.humidity =ui->lineEdit_Hum->text(); + measInfo.measure_address=ui->comboBoxPlace->currentText(); + measInfo.trace_date = ui->dateEditCheck->date(); + measInfo.measure_valid_date = ui->dateEdit_Valid->dateTime(); + measInfo.outcome = ui->lineEdit_Cons->text(); + if(BaseCommonApi::InsertSaveDeviceMeasureInfo(measInfo)){ + for(SaveDeviceMeasureCalibrator& item:measureCalList){ + item.id = QString::number(api.generateId()); + item.data_id = measInfo.id; + BaseCommonApi::InsertVerMultiCal(item); + } + } + else + { + QMessageBox::warning(this, "警告", "保存失败!"); + } } void DialogCheckResult::on_pushButton_2_clicked() diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.h b/softwareDirectory/AutoVerScheme/dialogcheckresult.h index aec3b88..43cecac 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.h +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.h @@ -15,6 +15,7 @@ public: explicit DialogCheckResult(QWidget *parent = nullptr); ~DialogCheckResult(); + void initCheckTable(QList measList,QStringList headList); private slots: void on_pushButton_3_clicked(); @@ -25,6 +26,7 @@ private: Ui::DialogCheckResult *ui; + QList measureCalList; }; #endif // DIALOGCHECKRESULT_H diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.ui b/softwareDirectory/AutoVerScheme/dialogcheckresult.ui index fd74cfd..3be74e6 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.ui +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.ui @@ -145,7 +145,7 @@ - + @@ -155,7 +155,7 @@ - + @@ -165,7 +165,7 @@ - + @@ -175,7 +175,7 @@ - + @@ -185,7 +185,11 @@ - + + + true + + @@ -195,7 +199,11 @@ - + + + true + + @@ -205,7 +213,11 @@ - + + + true + + @@ -215,7 +227,7 @@ - + @@ -225,7 +237,7 @@ - + @@ -247,41 +259,6 @@ false - - - 新建列 - - - - - 量/单位 - - - - - 量程 - - - - - 新建列 - - - - - 检定点 - - - - - 测试值 - - - - - 备注 - - diff --git a/softwareDirectory/AutoVerScheme/formaddrsetting.cpp b/softwareDirectory/AutoVerScheme/formaddrsetting.cpp index c0c6866..939e00f 100644 --- a/softwareDirectory/AutoVerScheme/formaddrsetting.cpp +++ b/softwareDirectory/AutoVerScheme/formaddrsetting.cpp @@ -37,16 +37,17 @@ QStringList headlist; QList caliList =BaseCommonApi::Search_CalibrationTable(sDeviceId,&headlist); for (const QStringList& item : caliList){ - this->ui->comboBox->addItem(item[1]); + this->ui->comboBox->addItem(item[2]); } } else { QStringList headlist; //QString DeviceName = BaseCommonApi::getApparatus(id); - QList bizDeviceManageData=BaseCommonApi::getCheckDCPower(sDeviceId,&headlist); - for (const CheckDCPower& item : bizDeviceManageData){ - this->ui->comboBox->addItem(item.check_type); + //QList bizDeviceManageData=BaseCommonApi::getCheckDCPower(sDeviceId,&headlist); + QList ptList = BaseCommonApi::Search_VerifyTable(sDeviceId,&headlist); + for (const QStringList& item : ptList){ + this->ui->comboBox->addItem(item[2]); } } } diff --git a/softwareDirectory/AutoVerScheme/newcheckmethod.cpp b/softwareDirectory/AutoVerScheme/newcheckmethod.cpp index cef8248..058a788 100644 --- a/softwareDirectory/AutoVerScheme/newcheckmethod.cpp +++ b/softwareDirectory/AutoVerScheme/newcheckmethod.cpp @@ -119,6 +119,7 @@ programInfo.program_name = ui->lineEditName->text(); programInfo.create_name = ui->lineEditUser->text(); programInfo.create_time = ui->dateEditTime->dateTime(); + programInfo.update_time = QDateTime::currentDateTime(); programInfo.remark = ui->lineEditMark->text(); if(BaseCommonApi::UpdateVerificationProgramInfo(programInfo)) { diff --git a/softwareDirectory/AutoVerScheme/newverifymethod.cpp b/softwareDirectory/AutoVerScheme/newverifymethod.cpp index 4fc3594..c9cb49c 100644 --- a/softwareDirectory/AutoVerScheme/newverifymethod.cpp +++ b/softwareDirectory/AutoVerScheme/newverifymethod.cpp @@ -254,6 +254,7 @@ programInfo.check_name = ui->lineEditName->text(); programInfo.create_name = ui->lineEditUser->text(); programInfo.create_time = ui->dateEditTime->dateTime(); + programInfo.update_time = QDateTime::currentDateTime(); programInfo.remark = ui->lineEditMark->text(); if(BaseCommonApi::UpdateCheckProgramManage(programInfo)) { diff --git a/softwareDirectory/AutoVerScheme/verifywindow.cpp b/softwareDirectory/AutoVerScheme/verifywindow.cpp index a18d39d..34b5197 100644 --- a/softwareDirectory/AutoVerScheme/verifywindow.cpp +++ b/softwareDirectory/AutoVerScheme/verifywindow.cpp @@ -12,6 +12,10 @@ ui->tableWidgetMethod->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); ui->tableWidgetMethod->setColumnWidth(0, 60); ui->tableWidgetMethod->setColumnWidth(5, 100); + ui->tableWidget_3->verticalHeader()->setParent(nullptr); + for(int i=0;i<2;i++) + ui->tableWidget_3->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidget_3->setSelectionBehavior(QAbstractItemView::SelectRows); getVerifyMethod(); } @@ -71,13 +75,76 @@ QMessageBox::warning(this, "提示", "请选择检定程序!"); }else{ programInfo = BaseCommonApi::getCheckProgramManageById(sId); - QString strStyle = QString("QLabel{image:url(%1);}").arg(programInfo.img_path); - qDebug() << "strStyle:" << strStyle ; - ui->label_8->setStyleSheet(strStyle); + initDeviceInfo(); ui->stackedWidget->setCurrentIndex(1); } } +void VerifyWindow::initDeviceInfo() +{ + QString strStyle = QString("QLabel{image:url(%1);}").arg(programInfo.img_path); + qDebug() << "strStyle:" << strStyle; + ui->label_8->setStyleSheet(strStyle); + + ui->tableWidget_3->clearContents(); + ui->tableWidget_3->setRowCount(0); + QStringList idList; + int rowCount=0; + int row=0; + connectList.clear(); + if(programInfo.standard_device_id!="") + { + idList = programInfo.standard_device_id.split(","); + for(const QString& id : idList) + { + ConnectInfo info; + info.state="未连接"; + QList result = BaseCommonApi::getCatDeviceInfor(id); + if(result.length()>0){ + info.deviceName = result[0].equipment_name; + } + result.clear(); + QList addrList = BaseCommonApi::getVerificationProgramConfigInterface(id); + if(addrList.length()>0){ + info.programInterface = addrList[0]; + } + connectList.append(info); + addrList.clear(); + } + idList.clear(); + } + + if(programInfo.verification_documents_id!=""){ + idList = programInfo.verification_documents_id.split(","); + for(const QString& id : idList) + { + ConnectInfo info; + info.state="未连接"; + QList result = BaseCommonApi::getTestedCatDevice(id); + if(result.length()>0){ + info.deviceName = result[0].equipment_name; + } + result.clear(); + QList addrList = BaseCommonApi::getVerificationProgramConfigInterface(id); + if(addrList.length()>0){ + info.programInterface = addrList[0]; + } + connectList.append(info); + addrList.clear(); + } + idList.clear(); + } + for(const ConnectInfo& info : connectList){ + rowCount = ui->tableWidget_3->rowCount(); + ui->tableWidget_3->insertRow(rowCount); + ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 + row++; + } + ui->tableWidget_3->selectRow(0); +} + + void VerifyWindow::on_editButton_clicked() { @@ -96,3 +163,26 @@ } } } + +void VerifyWindow::on_tableWidget_3_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn) +{ + if(currentRow>=0&¤tRowradioButton_serial->setChecked(true); + else + ui->radioButton_visa->setChecked(true); + ui->comboBox_visa->setCurrentText(addr.visa); + if(addr.serial_port!=""){ + QStringList sList = addr.serial_port.split(";"); + if(sList.length()==5){ + ui->comboBox_port->setCurrentText(sList[0]); + ui->comboBox_baurt->setCurrentText(sList[1]); + ui->comboBox_check->setCurrentText(sList[2]); + ui->comboBox_data->setCurrentText(sList[3]); + ui->comboBox_stop->setCurrentText(sList[4]); + } + } + } +} diff --git a/softwareDirectory/AutoVerScheme/verifywindow.h b/softwareDirectory/AutoVerScheme/verifywindow.h index 796487f..e32aea4 100644 --- a/softwareDirectory/AutoVerScheme/verifywindow.h +++ b/softwareDirectory/AutoVerScheme/verifywindow.h @@ -3,6 +3,7 @@ #include #include "basecommonapi.h" +#include "checkwindow.h" namespace Ui { class VerifyWindow; @@ -17,16 +18,21 @@ ~VerifyWindow(); private: void getVerifyMethod(); + void initDeviceInfo(); private slots: void showDevice(); void on_editButton_clicked(); void on_tableWidgetMethod_cellChanged(int row, int column); + void on_tableWidget_3_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); + private: Ui::VerifyWindow *ui; QList programList; CheckProgramManage programInfo; + QList connectList; + }; #endif // VERIFYWINDOW_H diff --git a/softwareDirectory/AutoVerScheme/verifywindow.ui b/softwareDirectory/AutoVerScheme/verifywindow.ui index 5961d76..a4ee6c2 100644 --- a/softwareDirectory/AutoVerScheme/verifywindow.ui +++ b/softwareDirectory/AutoVerScheme/verifywindow.ui @@ -443,11 +443,25 @@ 设备名称 + + + 12 + 75 + true + + 连接状态 + + + 12 + 75 + true + + @@ -516,6 +530,237 @@ 设备接口设置 + + + + + + 12 + + + + 串口 + + + + + + + + 12 + + + + 端口号: + + + + + + + + 12 + + + + true + + + + + + + + 12 + + + + 波特率: + + + + + + + + 12 + + + + true + + + 9600 + + + 1 + + + + 4800 + + + + + 9600 + + + + + 14400 + + + + + 19200 + + + + + 38400 + + + + + + + + + 12 + + + + 校验位: + + + + + + + + 12 + + + + + None + + + + + Odd + + + + + Even + + + + + + + + + 12 + + + + 数据位: + + + + + + + + 12 + + + + 1 + + + + 7 + + + + + 8 + + + + + + + + + 12 + + + + 停止位: + + + + + + + + 12 + + + + 1 + + + + None + + + + + One + + + + + Two + + + + + OnePointFive + + + + + + + + + 12 + + + + VISA + + + + + + + + 12 + + + + true + + + + diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user index 162961a..02579f1 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index beb4982..ff58124 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -1304,11 +1304,12 @@ " SET program_name = :program_name,create_name = :create_name, create_time = :create_time" "remark = :remark,img_path = :img_path,tested_device_id = :tested_device_id,standard_device_id = :standard_device_id ,update_time = :update_time" "WHERE id = :id;"); - QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + QString formattedDateTime = verInfo.create_time.toString("yyyy-MM-dd HH:mm:ss"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); query.bindValue(":update_time",currentDateTime); query.bindValue(":program_name", verInfo.program_name); query.bindValue(":create_name", verInfo.create_name); - query.bindValue(":create_time", verInfo.create_time); + query.bindValue(":create_time", formattedDateTime); query.bindValue(":remark", verInfo.remark); query.bindValue(":img_path", verInfo.img_path); query.bindValue(":tested_device_id", verInfo.tested_device_id); diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 44aaa75..c90f1dc 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -3,6 +3,7 @@ #include "dialogcheckresult.h" #include #include "basecommonapi.h" +#include CheckWindow::CheckWindow(QWidget *parent) : QWidget(parent), @@ -27,6 +28,10 @@ ui->tableWidget_Point->setColumnWidth(0, 60); for(int i=1;i<3;i++) ui->tableWidget_Point->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidget_Standard->verticalHeader()->setParent(nullptr); + for(int i=0;i<2;i++) + ui->tableWidget_Standard->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidgetCheck->verticalHeader()->setParent(nullptr); getCheckDevice(); //ui->stackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); @@ -38,6 +43,9 @@ programList.clear(); connectList.clear(); selectTaskList.clear(); + headList.clear(); + calibrationList.clear(); + measureCalList.clear(); delete ui; } @@ -49,6 +57,7 @@ Qt::CheckState state = ui->tableWidgetDevice->item(i,0)->checkState(); if(state == Qt::Checked){ selectTaskList.append(myTaskList[i]); + measureInfo.order_id = myTaskList[i].id; /*if(ids=="") ids = myTaskList[i].id; else @@ -92,6 +101,8 @@ ui->tableWidget_3->clearContents(); ui->tableWidget_3->setRowCount(0); + ui->tableWidget_Standard->clearContents(); + ui->tableWidget_Standard->setRowCount(0); QStringList idList; int rowCount=0; int row=0; @@ -102,6 +113,8 @@ for(const QString& id : idList) { ConnectInfo info; + info.id = id; + info.type = 0; info.state="未连接"; QList result = BaseCommonApi::getTestedCatDevice(id); if(result.length()>0){ @@ -112,6 +125,7 @@ if(addrList.length()>0){ info.programInterface = addrList[0]; } + info.cmdList = BaseCommonApi::getInstructionLib(id); connectList.append(info); addrList.clear(); } @@ -123,29 +137,41 @@ for(const QString& id : idList) { ConnectInfo info; + info.id = id; + info.type = 1; info.state="未连接"; QList result = BaseCommonApi::getCatDeviceInfor(id); if(result.length()>0){ info.deviceName = result[0].equipment_name; + + //更新标准设备表格 + rowCount = ui->tableWidget_Standard->rowCount(); + ui->tableWidget_Standard->insertRow(rowCount); + ui->tableWidget_Standard->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_Standard->setItem(row, 1, new QTableWidgetItem("OFF")); //设置数据 + row++; } result.clear(); QList addrList = BaseCommonApi::getVerificationProgramConfigInterface(id); if(addrList.length()>0){ info.programInterface = addrList[0]; } + info.cmdList = BaseCommonApi::getInstructionLib(id); connectList.append(info); addrList.clear(); } idList.clear(); } - for(const ConnectInfo& info : connectList){ - rowCount = ui->tableWidget_3->rowCount(); - ui->tableWidget_3->insertRow(rowCount); - ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); - ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 - row++; - } - ui->tableWidget_3->selectRow(0); + rowCount=0; + row=0; + for(const ConnectInfo& info : connectList){ + rowCount = ui->tableWidget_3->rowCount(); + ui->tableWidget_3->insertRow(rowCount); + ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 + row++; + } + ui->tableWidget_3->selectRow(0); } void CheckWindow::showCheck() @@ -178,9 +204,10 @@ if(programInfo.tested_device_id!="") { QStringList idList=programInfo.tested_device_id.split(","); - QStringList headlist; - - QList Data=BaseCommonApi::Search_CalibrationTable(idList[0],&headlist); + //QStringList headlist; + headList.clear(); + calibrationList.clear(); + calibrationList =BaseCommonApi::Search_CalibrationTable(idList[0],&headList); //tableWidgetItem ui->tableWidget_Point->clearContents(); @@ -188,7 +215,7 @@ //循环数据 int rowCount=0; int row=0; - for (const QStringList& item : Data) + for (const QStringList& item : calibrationList) { //获取行号 并进行添加行 rowCount = ui->tableWidget_Point->rowCount(); @@ -259,6 +286,7 @@ void CheckWindow::showResult() { DialogCheckResult* dlg = new DialogCheckResult; + dlg->initCheckTable(measureCalList,headList); dlg->setModal(true); dlg->show(); } @@ -388,3 +416,134 @@ } } } + +void CheckWindow::initCheckTable() +{ + ui->tableWidgetCheck->clearContents(); + ui->tableWidgetCheck->setRowCount(0); + ui->tableWidgetCheck->setColumnCount(0); + int rowCount = 0; + int row=0; + ui->tableWidgetCheck->setColumnCount(headList.count()); + ui->tableWidgetCheck->setHorizontalHeaderLabels(headList); + for(int i=0;itableWidgetCheck->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + measureCalList.clear(); + for(int i=0;itableWidget_Point->rowCount();i++){ + Qt::CheckState state = ui->tableWidget_Point->item(i,0)->checkState(); + if(state == Qt::Checked){ + QStringList& item = calibrationList[i]; + int cnt = ui->tableWidget_Point->item(i,2)->text().toInt(); + for(int j=0;jtableWidgetCheck->rowCount(); + ui->tableWidgetCheck->insertRow(rowCount); + ui->tableWidgetCheck->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + //循环读取值 headlist,count是列的数量 + for(int k=1;ktableWidgetCheck->setItem(row, k, new QTableWidgetItem(item[k])); + } + SaveDeviceMeasureCalibrator measItem; + measItem.item_data_id = item[1]; + measItem.maximum_error_formula = item[10];//最大允许误差(公式) + measItem.error_param_a = item[11];//误差参数a + measItem.error_param_b = item[12];//误差参数b + measItem.params = item[2];//参数 + measItem.capacity=item[3];//量 + measItem.unit=item[4];//单位 + measItem.frequency=item[5];//频率 + measItem.frequency_unit=item[6];//频率单位 + measItem.range_range=item[7];//量程 + measItem.standard_value=item[8];//标准值(输入字段,特殊:指针式万用表输出字段) + measItem.indicating_value=item[15];//示值(输出字段,特殊:指针式万用表输入字段) + measItem.maximum_error=item[10];//最大允许误差(值) + //measItem.absolute_error=item[11];//绝对误差 + measItem.resolution=item[9];//分辨力 + measItem.measure_indication_value=item[19];//被检表示值 + measureCalList.append(measItem); + row++; + } + } + } + if(connectList.length()>0&&connectList[0].type==0) + deviceEngine.openDevice(connectList[0].programInterface.visa,"Visa"); + if(connectList.length()>1&&connectList[1].type==1) + standardEngine.openDevice(connectList[1].programInterface.visa,"Visa"); +} + +InstructionLib* CheckWindow::getCmdByCheckName(int idx,QString name) +{ + if(idx>=0&&idxinstruct_config.split(";"); + if(sList.length()>0){ + for (QString& sCmd : sList){ + standardEngine.sendData(sCmd); + } + } + } + } + //被检设备读数 + if(deviceEngine.getState()){ + InstructionLib *instrcutLib = getCmdByCheckName(0,item.params); + if(instrcutLib!=nullptr){ + QStringList sList = instrcutLib->instruct_config.split(";"); + if(sList.length()>0){ + for (QString& sCmd : sList){ + deviceEngine.sendData(sCmd); + } + } + Delay_MSec(2000); + sRet = deviceEngine.queryData(instrcutLib->instruct_read); + } + } + // + if(sRet==""){ + bool bOk = false; + double dRet = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,1,&bOk); + + if (bOk) { + sRet = QString::number(dRet); + } + } + item.measure_indication_value = sRet; + ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); + } +} + +void CheckWindow::Delay_MSec(unsigned int msec) +{ + QTime _Timer = QTime::currentTime().addMSecs(msec); + while( QTime::currentTime() < _Timer ) + QCoreApplication::processEvents(QEventLoop::AllEvents, 100); +} + +void CheckWindow::on_pushButton_pause_clicked() +{ + +} + +void CheckWindow::on_pushButton_stop_clicked() +{ + +} diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 8cfaaf3..35ca267 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -3,6 +3,7 @@ #include #include "basecommonapi.h" +#include "visacommonengine.h" namespace Ui { class CheckWindow; @@ -10,9 +11,12 @@ class ConnectInfo { public: + QString id; + int type; QString deviceName; QString state; VerificationProgramConfigInterface programInterface; + QList cmdList; }; class CheckWindow : public QWidget @@ -37,11 +41,20 @@ void on_tableWidget_3_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); void on_deviceButton_clicked(MyTask task,int idx); + void on_pushButton_start_clicked(); + + void on_pushButton_pause_clicked(); + + void on_pushButton_stop_clicked(); + private: void getCheckDevice(); void getCheckMethod(); void initDeviceInfo(); void deleteItem(QLayout *layout); + void initCheckTable(); + InstructionLib* getCmdByCheckName(int idx,QString name); + void Delay_MSec(unsigned int msec); private: Ui::CheckWindow *ui; QList programList; @@ -49,6 +62,12 @@ QList selectTaskList; VerificationProgramInfo programInfo; QList connectList; + QStringList headList; + QList calibrationList; + VisaCommonEngine deviceEngine; + VisaCommonEngine standardEngine; + QList measureCalList; + SaveDeviceMeasureInfo measureInfo; }; #endif // CHECKWINDOW_H diff --git a/softwareDirectory/AutoVerScheme/checkwindow.ui b/softwareDirectory/AutoVerScheme/checkwindow.ui index d8d6a52..fb01e60 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.ui +++ b/softwareDirectory/AutoVerScheme/checkwindow.ui @@ -1266,7 +1266,7 @@ - + @@ -1293,6 +1293,36 @@ 标准设备面板 + + + + + + 设备名称 + + + + 12 + 75 + true + + + + + + 状态 + + + + 12 + 75 + true + + + + + + @@ -1515,7 +1545,7 @@ - + diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp index 3a10cb0..41e1816 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp @@ -1,13 +1,13 @@ #include "dialogcheckresult.h" #include "ui_dialogcheckresult.h" +#include DialogCheckResult::DialogCheckResult(QWidget *parent) : QDialog(parent), ui(new Ui::DialogCheckResult) { ui->setupUi(this); - for(int i=0;i<7;i++) - ui->tableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } DialogCheckResult::~DialogCheckResult() @@ -15,10 +15,66 @@ delete ui; } +void DialogCheckResult::initCheckTable(QList measList,QStringList headList) +{ + ui->tableWidget->verticalHeader()->setParent(nullptr); + ui->tableWidget->setColumnCount(headList.count()); + ui->tableWidget->setHorizontalHeaderLabels(headList); + for(int i=0;itableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + int rowCount=0; + int row=0; + measureCalList = measList; + for (const SaveDeviceMeasureCalibrator& measItem : measList) + { + //获取行号 并进行添加行 + rowCount = ui->tableWidget->rowCount(); + ui->tableWidget->insertRow(rowCount); + //添加 序号 + ui->tableWidget->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + + ui->tableWidget->setItem(row, 2, new QTableWidgetItem(measItem.params)); + ui->tableWidget->setItem(row, 3, new QTableWidgetItem(measItem.capacity)); + ui->tableWidget->setItem(row, 4, new QTableWidgetItem(measItem.unit)); + ui->tableWidget->setItem(row, 5, new QTableWidgetItem(measItem.frequency)); + ui->tableWidget->setItem(row, 6, new QTableWidgetItem(measItem.frequency_unit)); + ui->tableWidget->setItem(row, 7, new QTableWidgetItem(measItem.range_range)); + ui->tableWidget->setItem(row, 8, new QTableWidgetItem(measItem.standard_value)); + ui->tableWidget->setItem(row, 9, new QTableWidgetItem(measItem.resolution)); + ui->tableWidget->setItem(row, 10, new QTableWidgetItem(measItem.maximum_error)); + ui->tableWidget->setItem(row, 11, new QTableWidgetItem(measItem.error_param_a)); + ui->tableWidget->setItem(row, 12, new QTableWidgetItem(measItem.error_param_b)); + ui->tableWidget->setItem(row, 15, new QTableWidgetItem(measItem.indicating_value)); + ui->tableWidget->setItem(row, 19, new QTableWidgetItem(measItem.measure_indication_value)); + row++; + } +} + void DialogCheckResult::on_pushButton_3_clicked() { SaveDeviceMeasureInfo measInfo; - BaseCommonApi::InsertSaveDeviceMeasureInfo(measInfo); + BaseCommonApi api; + measInfo.id = QString::number(api.generateId()); + measInfo.data_no = "jdsj"+QDateTime::currentDateTime().toString("yyyyMMdd")+"0002"; + measInfo.temperature = ui->lineEditTemp->text(); + measInfo.humidity =ui->lineEdit_Hum->text(); + measInfo.measure_address=ui->comboBoxPlace->currentText(); + measInfo.trace_date = ui->dateEditCheck->date(); + measInfo.measure_valid_date = ui->dateEdit_Valid->dateTime(); + measInfo.outcome = ui->lineEdit_Cons->text(); + if(BaseCommonApi::InsertSaveDeviceMeasureInfo(measInfo)){ + for(SaveDeviceMeasureCalibrator& item:measureCalList){ + item.id = QString::number(api.generateId()); + item.data_id = measInfo.id; + BaseCommonApi::InsertVerMultiCal(item); + } + } + else + { + QMessageBox::warning(this, "警告", "保存失败!"); + } } void DialogCheckResult::on_pushButton_2_clicked() diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.h b/softwareDirectory/AutoVerScheme/dialogcheckresult.h index aec3b88..43cecac 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.h +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.h @@ -15,6 +15,7 @@ public: explicit DialogCheckResult(QWidget *parent = nullptr); ~DialogCheckResult(); + void initCheckTable(QList measList,QStringList headList); private slots: void on_pushButton_3_clicked(); @@ -25,6 +26,7 @@ private: Ui::DialogCheckResult *ui; + QList measureCalList; }; #endif // DIALOGCHECKRESULT_H diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.ui b/softwareDirectory/AutoVerScheme/dialogcheckresult.ui index fd74cfd..3be74e6 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.ui +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.ui @@ -145,7 +145,7 @@ - + @@ -155,7 +155,7 @@ - + @@ -165,7 +165,7 @@ - + @@ -175,7 +175,7 @@ - + @@ -185,7 +185,11 @@ - + + + true + + @@ -195,7 +199,11 @@ - + + + true + + @@ -205,7 +213,11 @@ - + + + true + + @@ -215,7 +227,7 @@ - + @@ -225,7 +237,7 @@ - + @@ -247,41 +259,6 @@ false - - - 新建列 - - - - - 量/单位 - - - - - 量程 - - - - - 新建列 - - - - - 检定点 - - - - - 测试值 - - - - - 备注 - - diff --git a/softwareDirectory/AutoVerScheme/formaddrsetting.cpp b/softwareDirectory/AutoVerScheme/formaddrsetting.cpp index c0c6866..939e00f 100644 --- a/softwareDirectory/AutoVerScheme/formaddrsetting.cpp +++ b/softwareDirectory/AutoVerScheme/formaddrsetting.cpp @@ -37,16 +37,17 @@ QStringList headlist; QList caliList =BaseCommonApi::Search_CalibrationTable(sDeviceId,&headlist); for (const QStringList& item : caliList){ - this->ui->comboBox->addItem(item[1]); + this->ui->comboBox->addItem(item[2]); } } else { QStringList headlist; //QString DeviceName = BaseCommonApi::getApparatus(id); - QList bizDeviceManageData=BaseCommonApi::getCheckDCPower(sDeviceId,&headlist); - for (const CheckDCPower& item : bizDeviceManageData){ - this->ui->comboBox->addItem(item.check_type); + //QList bizDeviceManageData=BaseCommonApi::getCheckDCPower(sDeviceId,&headlist); + QList ptList = BaseCommonApi::Search_VerifyTable(sDeviceId,&headlist); + for (const QStringList& item : ptList){ + this->ui->comboBox->addItem(item[2]); } } } diff --git a/softwareDirectory/AutoVerScheme/newcheckmethod.cpp b/softwareDirectory/AutoVerScheme/newcheckmethod.cpp index cef8248..058a788 100644 --- a/softwareDirectory/AutoVerScheme/newcheckmethod.cpp +++ b/softwareDirectory/AutoVerScheme/newcheckmethod.cpp @@ -119,6 +119,7 @@ programInfo.program_name = ui->lineEditName->text(); programInfo.create_name = ui->lineEditUser->text(); programInfo.create_time = ui->dateEditTime->dateTime(); + programInfo.update_time = QDateTime::currentDateTime(); programInfo.remark = ui->lineEditMark->text(); if(BaseCommonApi::UpdateVerificationProgramInfo(programInfo)) { diff --git a/softwareDirectory/AutoVerScheme/newverifymethod.cpp b/softwareDirectory/AutoVerScheme/newverifymethod.cpp index 4fc3594..c9cb49c 100644 --- a/softwareDirectory/AutoVerScheme/newverifymethod.cpp +++ b/softwareDirectory/AutoVerScheme/newverifymethod.cpp @@ -254,6 +254,7 @@ programInfo.check_name = ui->lineEditName->text(); programInfo.create_name = ui->lineEditUser->text(); programInfo.create_time = ui->dateEditTime->dateTime(); + programInfo.update_time = QDateTime::currentDateTime(); programInfo.remark = ui->lineEditMark->text(); if(BaseCommonApi::UpdateCheckProgramManage(programInfo)) { diff --git a/softwareDirectory/AutoVerScheme/verifywindow.cpp b/softwareDirectory/AutoVerScheme/verifywindow.cpp index a18d39d..34b5197 100644 --- a/softwareDirectory/AutoVerScheme/verifywindow.cpp +++ b/softwareDirectory/AutoVerScheme/verifywindow.cpp @@ -12,6 +12,10 @@ ui->tableWidgetMethod->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); ui->tableWidgetMethod->setColumnWidth(0, 60); ui->tableWidgetMethod->setColumnWidth(5, 100); + ui->tableWidget_3->verticalHeader()->setParent(nullptr); + for(int i=0;i<2;i++) + ui->tableWidget_3->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidget_3->setSelectionBehavior(QAbstractItemView::SelectRows); getVerifyMethod(); } @@ -71,13 +75,76 @@ QMessageBox::warning(this, "提示", "请选择检定程序!"); }else{ programInfo = BaseCommonApi::getCheckProgramManageById(sId); - QString strStyle = QString("QLabel{image:url(%1);}").arg(programInfo.img_path); - qDebug() << "strStyle:" << strStyle ; - ui->label_8->setStyleSheet(strStyle); + initDeviceInfo(); ui->stackedWidget->setCurrentIndex(1); } } +void VerifyWindow::initDeviceInfo() +{ + QString strStyle = QString("QLabel{image:url(%1);}").arg(programInfo.img_path); + qDebug() << "strStyle:" << strStyle; + ui->label_8->setStyleSheet(strStyle); + + ui->tableWidget_3->clearContents(); + ui->tableWidget_3->setRowCount(0); + QStringList idList; + int rowCount=0; + int row=0; + connectList.clear(); + if(programInfo.standard_device_id!="") + { + idList = programInfo.standard_device_id.split(","); + for(const QString& id : idList) + { + ConnectInfo info; + info.state="未连接"; + QList result = BaseCommonApi::getCatDeviceInfor(id); + if(result.length()>0){ + info.deviceName = result[0].equipment_name; + } + result.clear(); + QList addrList = BaseCommonApi::getVerificationProgramConfigInterface(id); + if(addrList.length()>0){ + info.programInterface = addrList[0]; + } + connectList.append(info); + addrList.clear(); + } + idList.clear(); + } + + if(programInfo.verification_documents_id!=""){ + idList = programInfo.verification_documents_id.split(","); + for(const QString& id : idList) + { + ConnectInfo info; + info.state="未连接"; + QList result = BaseCommonApi::getTestedCatDevice(id); + if(result.length()>0){ + info.deviceName = result[0].equipment_name; + } + result.clear(); + QList addrList = BaseCommonApi::getVerificationProgramConfigInterface(id); + if(addrList.length()>0){ + info.programInterface = addrList[0]; + } + connectList.append(info); + addrList.clear(); + } + idList.clear(); + } + for(const ConnectInfo& info : connectList){ + rowCount = ui->tableWidget_3->rowCount(); + ui->tableWidget_3->insertRow(rowCount); + ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 + row++; + } + ui->tableWidget_3->selectRow(0); +} + + void VerifyWindow::on_editButton_clicked() { @@ -96,3 +163,26 @@ } } } + +void VerifyWindow::on_tableWidget_3_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn) +{ + if(currentRow>=0&¤tRowradioButton_serial->setChecked(true); + else + ui->radioButton_visa->setChecked(true); + ui->comboBox_visa->setCurrentText(addr.visa); + if(addr.serial_port!=""){ + QStringList sList = addr.serial_port.split(";"); + if(sList.length()==5){ + ui->comboBox_port->setCurrentText(sList[0]); + ui->comboBox_baurt->setCurrentText(sList[1]); + ui->comboBox_check->setCurrentText(sList[2]); + ui->comboBox_data->setCurrentText(sList[3]); + ui->comboBox_stop->setCurrentText(sList[4]); + } + } + } +} diff --git a/softwareDirectory/AutoVerScheme/verifywindow.h b/softwareDirectory/AutoVerScheme/verifywindow.h index 796487f..e32aea4 100644 --- a/softwareDirectory/AutoVerScheme/verifywindow.h +++ b/softwareDirectory/AutoVerScheme/verifywindow.h @@ -3,6 +3,7 @@ #include #include "basecommonapi.h" +#include "checkwindow.h" namespace Ui { class VerifyWindow; @@ -17,16 +18,21 @@ ~VerifyWindow(); private: void getVerifyMethod(); + void initDeviceInfo(); private slots: void showDevice(); void on_editButton_clicked(); void on_tableWidgetMethod_cellChanged(int row, int column); + void on_tableWidget_3_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); + private: Ui::VerifyWindow *ui; QList programList; CheckProgramManage programInfo; + QList connectList; + }; #endif // VERIFYWINDOW_H diff --git a/softwareDirectory/AutoVerScheme/verifywindow.ui b/softwareDirectory/AutoVerScheme/verifywindow.ui index 5961d76..a4ee6c2 100644 --- a/softwareDirectory/AutoVerScheme/verifywindow.ui +++ b/softwareDirectory/AutoVerScheme/verifywindow.ui @@ -443,11 +443,25 @@ 设备名称 + + + 12 + 75 + true + + 连接状态 + + + 12 + 75 + true + + @@ -516,6 +530,237 @@ 设备接口设置 + + + + + + 12 + + + + 串口 + + + + + + + + 12 + + + + 端口号: + + + + + + + + 12 + + + + true + + + + + + + + 12 + + + + 波特率: + + + + + + + + 12 + + + + true + + + 9600 + + + 1 + + + + 4800 + + + + + 9600 + + + + + 14400 + + + + + 19200 + + + + + 38400 + + + + + + + + + 12 + + + + 校验位: + + + + + + + + 12 + + + + + None + + + + + Odd + + + + + Even + + + + + + + + + 12 + + + + 数据位: + + + + + + + + 12 + + + + 1 + + + + 7 + + + + + 8 + + + + + + + + + 12 + + + + 停止位: + + + + + + + + 12 + + + + 1 + + + + None + + + + + One + + + + + Two + + + + + OnePointFive + + + + + + + + + 12 + + + + VISA + + + + + + + + 12 + + + + true + + + + diff --git a/softwareDirectory/AutoVerScheme/visacommonengine.cpp b/softwareDirectory/AutoVerScheme/visacommonengine.cpp index c9c00c7..61763c2 100644 --- a/softwareDirectory/AutoVerScheme/visacommonengine.cpp +++ b/softwareDirectory/AutoVerScheme/visacommonengine.cpp @@ -7,23 +7,39 @@ } -bool VisaCommonEngine::openDevice() +/*VisaCommonEngine::~VisaCommonEngine() { + closeDevice(); +}*/ +bool VisaCommonEngine::getState() +{ + return commState; +} +bool VisaCommonEngine::openDevice(QString sAddr,QString sType) +{ + if(getState()) + { + closeDevice(); + } + remoteAddr = sAddr.toLatin1().data(); + commType = sType; status = viOpenDefaultRM(&defaultRM); if (status < VI_SUCCESS) { qDebug() << "Could not open a session to the VISA Resource Manager!\n"; + return false; } status = viOpen(defaultRM, remoteAddr, VI_NULL, VI_NULL, &instr); if (status < VI_SUCCESS) { qDebug() << "Cannot open a session to the device.\n"; - goto Close; + closeDevice(); + return false; } //viQueryf(instr,"IDN ?\n","%t",buffer); - status = viQueryf( instr, "*IDN?\n", "%s", buffer); + /*status = viQueryf( instr, "*IDN?\n", "%s", buffer); if (status < VI_SUCCESS){ qDebug() << "Error reading a response from the device.\n"; @@ -31,65 +47,80 @@ qDebug() << "Data read:" << retCount << QString::fromLocal8Bit((char*)buffer); //ui->textBrowser->setText(QString::fromLocal8Bit((char*)buffer,retCount)); - } + }*/ /* Set the timeout to 5 seconds (5000 milliseconds). */ - status = viSetAttribute(instr, VI_ATTR_TMO_VALUE, 5000); + status = viSetAttribute(instr, VI_ATTR_TMO_VALUE, 10000); /* Set the baud rate to 4800 (default is 9600). */ - status = viSetAttribute(instr, VI_ATTR_ASRL_BAUD, 4800); + //status = viSetAttribute(instr, VI_ATTR_ASRL_BAUD, 4800); /* Set the number of data bits contained in each frame (from 5 to 8). * The data bits for each frame are located in the low-order bits of * every byte stored in memory. */ - status = viSetAttribute(instr, VI_ATTR_ASRL_DATA_BITS, 8); + //status = viSetAttribute(instr, VI_ATTR_ASRL_DATA_BITS, 8); - status = viSetAttribute(instr, VI_ATTR_ASRL_PARITY, VI_ASRL_PAR_NONE); + //status = viSetAttribute(instr, VI_ATTR_ASRL_PARITY, VI_ASRL_PAR_NONE); - status = viSetAttribute(instr, VI_ATTR_ASRL_STOP_BITS, VI_ASRL_STOP_ONE); + //status = viSetAttribute(instr, VI_ATTR_ASRL_STOP_BITS, VI_ASRL_STOP_ONE); - status = viSetAttribute(instr, VI_ATTR_TERMCHAR_EN, VI_TRUE); + //status = viSetAttribute(instr, VI_ATTR_TERMCHAR_EN, VI_TRUE); /* Set the termination character to 0xA */ status = viSetAttribute(instr, VI_ATTR_TERMCHAR, 0xA); - strcpy(stringinput, ":MEASure:VOLTage:DC?\n"); + //strcpy(stringinput, ":MEASure:VOLTage:DC?\n"); //strcpy(stringinput, "*IDN?\n"); - status = viWrite(instr, (ViBuf)stringinput, (ViUInt32)strlen(stringinput), &writeCount); - if (status < VI_SUCCESS){ - qDebug() << "Error writing to the device.\n"; - goto Close; - } + //status = viWrite(instr, (ViBuf)stringinput, (ViUInt32)strlen(stringinput), &writeCount); + //if (status < VI_SUCCESS){ + // qDebug() << "Error writing to the device.\n"; + // goto Close; + //} - status = viRead(instr, buffer, 100, &retCount); - if (status < VI_SUCCESS){ - qDebug() << "Error reading a response from the device.\n"; - }else{ - qDebug() << "Data read:" << retCount << QString::fromLocal8Bit((char*)buffer,retCount); + //status = viRead(instr, buffer, 100, &retCount); + //if (status < VI_SUCCESS){ + // qDebug() << "Error reading a response from the device.\n"; + //}else{ + // qDebug() << "Data read:" << retCount << QString::fromLocal8Bit((char*)buffer,retCount); //ui->textBrowser->setText(QString::fromLocal8Bit((char*)buffer,retCount)); - } - -Close: - status = viClose(instr); - status = viClose(defaultRM); + //} + commState = true; return true; } -QString VisaCommonEngine::queryData() +void VisaCommonEngine::closeDevice() { + status = viClose(instr); + status = viClose(defaultRM); + commState = false; +} + +QString VisaCommonEngine::queryData(QString sCmd) +{ + ViConstRsrc sQuery = (sCmd+"\n").toLatin1().data(); + status = viQueryf( instr, sQuery, "%s", buffer); + + if (status < VI_SUCCESS){ + qDebug() << "Error reading a response from the device.\n"; + return ""; + }else{ + qDebug() << "Data read:" << retCount << QString::fromLocal8Bit((char*)buffer); + return QString::fromLocal8Bit((char*)buffer); + //ui->textBrowser->setText(QString::fromLocal8Bit((char*)buffer,retCount)); + } return ""; } -bool VisaCommonEngine::sendData(QString strData) +bool VisaCommonEngine::sendData(QString sCmd) { //strcpy(stringinput, strData.toLatin1().data()); //strcpy(stringinput, "*IDN?\n"); - char *strBuf = strData.toLatin1().data(); + char *strBuf = (sCmd+"\n").toLatin1().data(); status = viWrite(instr, (ViBuf)strBuf, (ViUInt32)strlen(strBuf), &writeCount); if (status < VI_SUCCESS){ return false; diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user index 162961a..02579f1 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index beb4982..ff58124 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -1304,11 +1304,12 @@ " SET program_name = :program_name,create_name = :create_name, create_time = :create_time" "remark = :remark,img_path = :img_path,tested_device_id = :tested_device_id,standard_device_id = :standard_device_id ,update_time = :update_time" "WHERE id = :id;"); - QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + QString formattedDateTime = verInfo.create_time.toString("yyyy-MM-dd HH:mm:ss"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); query.bindValue(":update_time",currentDateTime); query.bindValue(":program_name", verInfo.program_name); query.bindValue(":create_name", verInfo.create_name); - query.bindValue(":create_time", verInfo.create_time); + query.bindValue(":create_time", formattedDateTime); query.bindValue(":remark", verInfo.remark); query.bindValue(":img_path", verInfo.img_path); query.bindValue(":tested_device_id", verInfo.tested_device_id); diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 44aaa75..c90f1dc 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -3,6 +3,7 @@ #include "dialogcheckresult.h" #include #include "basecommonapi.h" +#include CheckWindow::CheckWindow(QWidget *parent) : QWidget(parent), @@ -27,6 +28,10 @@ ui->tableWidget_Point->setColumnWidth(0, 60); for(int i=1;i<3;i++) ui->tableWidget_Point->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidget_Standard->verticalHeader()->setParent(nullptr); + for(int i=0;i<2;i++) + ui->tableWidget_Standard->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidgetCheck->verticalHeader()->setParent(nullptr); getCheckDevice(); //ui->stackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); @@ -38,6 +43,9 @@ programList.clear(); connectList.clear(); selectTaskList.clear(); + headList.clear(); + calibrationList.clear(); + measureCalList.clear(); delete ui; } @@ -49,6 +57,7 @@ Qt::CheckState state = ui->tableWidgetDevice->item(i,0)->checkState(); if(state == Qt::Checked){ selectTaskList.append(myTaskList[i]); + measureInfo.order_id = myTaskList[i].id; /*if(ids=="") ids = myTaskList[i].id; else @@ -92,6 +101,8 @@ ui->tableWidget_3->clearContents(); ui->tableWidget_3->setRowCount(0); + ui->tableWidget_Standard->clearContents(); + ui->tableWidget_Standard->setRowCount(0); QStringList idList; int rowCount=0; int row=0; @@ -102,6 +113,8 @@ for(const QString& id : idList) { ConnectInfo info; + info.id = id; + info.type = 0; info.state="未连接"; QList result = BaseCommonApi::getTestedCatDevice(id); if(result.length()>0){ @@ -112,6 +125,7 @@ if(addrList.length()>0){ info.programInterface = addrList[0]; } + info.cmdList = BaseCommonApi::getInstructionLib(id); connectList.append(info); addrList.clear(); } @@ -123,29 +137,41 @@ for(const QString& id : idList) { ConnectInfo info; + info.id = id; + info.type = 1; info.state="未连接"; QList result = BaseCommonApi::getCatDeviceInfor(id); if(result.length()>0){ info.deviceName = result[0].equipment_name; + + //更新标准设备表格 + rowCount = ui->tableWidget_Standard->rowCount(); + ui->tableWidget_Standard->insertRow(rowCount); + ui->tableWidget_Standard->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_Standard->setItem(row, 1, new QTableWidgetItem("OFF")); //设置数据 + row++; } result.clear(); QList addrList = BaseCommonApi::getVerificationProgramConfigInterface(id); if(addrList.length()>0){ info.programInterface = addrList[0]; } + info.cmdList = BaseCommonApi::getInstructionLib(id); connectList.append(info); addrList.clear(); } idList.clear(); } - for(const ConnectInfo& info : connectList){ - rowCount = ui->tableWidget_3->rowCount(); - ui->tableWidget_3->insertRow(rowCount); - ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); - ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 - row++; - } - ui->tableWidget_3->selectRow(0); + rowCount=0; + row=0; + for(const ConnectInfo& info : connectList){ + rowCount = ui->tableWidget_3->rowCount(); + ui->tableWidget_3->insertRow(rowCount); + ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 + row++; + } + ui->tableWidget_3->selectRow(0); } void CheckWindow::showCheck() @@ -178,9 +204,10 @@ if(programInfo.tested_device_id!="") { QStringList idList=programInfo.tested_device_id.split(","); - QStringList headlist; - - QList Data=BaseCommonApi::Search_CalibrationTable(idList[0],&headlist); + //QStringList headlist; + headList.clear(); + calibrationList.clear(); + calibrationList =BaseCommonApi::Search_CalibrationTable(idList[0],&headList); //tableWidgetItem ui->tableWidget_Point->clearContents(); @@ -188,7 +215,7 @@ //循环数据 int rowCount=0; int row=0; - for (const QStringList& item : Data) + for (const QStringList& item : calibrationList) { //获取行号 并进行添加行 rowCount = ui->tableWidget_Point->rowCount(); @@ -259,6 +286,7 @@ void CheckWindow::showResult() { DialogCheckResult* dlg = new DialogCheckResult; + dlg->initCheckTable(measureCalList,headList); dlg->setModal(true); dlg->show(); } @@ -388,3 +416,134 @@ } } } + +void CheckWindow::initCheckTable() +{ + ui->tableWidgetCheck->clearContents(); + ui->tableWidgetCheck->setRowCount(0); + ui->tableWidgetCheck->setColumnCount(0); + int rowCount = 0; + int row=0; + ui->tableWidgetCheck->setColumnCount(headList.count()); + ui->tableWidgetCheck->setHorizontalHeaderLabels(headList); + for(int i=0;itableWidgetCheck->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + measureCalList.clear(); + for(int i=0;itableWidget_Point->rowCount();i++){ + Qt::CheckState state = ui->tableWidget_Point->item(i,0)->checkState(); + if(state == Qt::Checked){ + QStringList& item = calibrationList[i]; + int cnt = ui->tableWidget_Point->item(i,2)->text().toInt(); + for(int j=0;jtableWidgetCheck->rowCount(); + ui->tableWidgetCheck->insertRow(rowCount); + ui->tableWidgetCheck->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + //循环读取值 headlist,count是列的数量 + for(int k=1;ktableWidgetCheck->setItem(row, k, new QTableWidgetItem(item[k])); + } + SaveDeviceMeasureCalibrator measItem; + measItem.item_data_id = item[1]; + measItem.maximum_error_formula = item[10];//最大允许误差(公式) + measItem.error_param_a = item[11];//误差参数a + measItem.error_param_b = item[12];//误差参数b + measItem.params = item[2];//参数 + measItem.capacity=item[3];//量 + measItem.unit=item[4];//单位 + measItem.frequency=item[5];//频率 + measItem.frequency_unit=item[6];//频率单位 + measItem.range_range=item[7];//量程 + measItem.standard_value=item[8];//标准值(输入字段,特殊:指针式万用表输出字段) + measItem.indicating_value=item[15];//示值(输出字段,特殊:指针式万用表输入字段) + measItem.maximum_error=item[10];//最大允许误差(值) + //measItem.absolute_error=item[11];//绝对误差 + measItem.resolution=item[9];//分辨力 + measItem.measure_indication_value=item[19];//被检表示值 + measureCalList.append(measItem); + row++; + } + } + } + if(connectList.length()>0&&connectList[0].type==0) + deviceEngine.openDevice(connectList[0].programInterface.visa,"Visa"); + if(connectList.length()>1&&connectList[1].type==1) + standardEngine.openDevice(connectList[1].programInterface.visa,"Visa"); +} + +InstructionLib* CheckWindow::getCmdByCheckName(int idx,QString name) +{ + if(idx>=0&&idxinstruct_config.split(";"); + if(sList.length()>0){ + for (QString& sCmd : sList){ + standardEngine.sendData(sCmd); + } + } + } + } + //被检设备读数 + if(deviceEngine.getState()){ + InstructionLib *instrcutLib = getCmdByCheckName(0,item.params); + if(instrcutLib!=nullptr){ + QStringList sList = instrcutLib->instruct_config.split(";"); + if(sList.length()>0){ + for (QString& sCmd : sList){ + deviceEngine.sendData(sCmd); + } + } + Delay_MSec(2000); + sRet = deviceEngine.queryData(instrcutLib->instruct_read); + } + } + // + if(sRet==""){ + bool bOk = false; + double dRet = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,1,&bOk); + + if (bOk) { + sRet = QString::number(dRet); + } + } + item.measure_indication_value = sRet; + ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); + } +} + +void CheckWindow::Delay_MSec(unsigned int msec) +{ + QTime _Timer = QTime::currentTime().addMSecs(msec); + while( QTime::currentTime() < _Timer ) + QCoreApplication::processEvents(QEventLoop::AllEvents, 100); +} + +void CheckWindow::on_pushButton_pause_clicked() +{ + +} + +void CheckWindow::on_pushButton_stop_clicked() +{ + +} diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 8cfaaf3..35ca267 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -3,6 +3,7 @@ #include #include "basecommonapi.h" +#include "visacommonengine.h" namespace Ui { class CheckWindow; @@ -10,9 +11,12 @@ class ConnectInfo { public: + QString id; + int type; QString deviceName; QString state; VerificationProgramConfigInterface programInterface; + QList cmdList; }; class CheckWindow : public QWidget @@ -37,11 +41,20 @@ void on_tableWidget_3_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); void on_deviceButton_clicked(MyTask task,int idx); + void on_pushButton_start_clicked(); + + void on_pushButton_pause_clicked(); + + void on_pushButton_stop_clicked(); + private: void getCheckDevice(); void getCheckMethod(); void initDeviceInfo(); void deleteItem(QLayout *layout); + void initCheckTable(); + InstructionLib* getCmdByCheckName(int idx,QString name); + void Delay_MSec(unsigned int msec); private: Ui::CheckWindow *ui; QList programList; @@ -49,6 +62,12 @@ QList selectTaskList; VerificationProgramInfo programInfo; QList connectList; + QStringList headList; + QList calibrationList; + VisaCommonEngine deviceEngine; + VisaCommonEngine standardEngine; + QList measureCalList; + SaveDeviceMeasureInfo measureInfo; }; #endif // CHECKWINDOW_H diff --git a/softwareDirectory/AutoVerScheme/checkwindow.ui b/softwareDirectory/AutoVerScheme/checkwindow.ui index d8d6a52..fb01e60 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.ui +++ b/softwareDirectory/AutoVerScheme/checkwindow.ui @@ -1266,7 +1266,7 @@ - + @@ -1293,6 +1293,36 @@ 标准设备面板 + + + + + + 设备名称 + + + + 12 + 75 + true + + + + + + 状态 + + + + 12 + 75 + true + + + + + + @@ -1515,7 +1545,7 @@ - + diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp index 3a10cb0..41e1816 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp @@ -1,13 +1,13 @@ #include "dialogcheckresult.h" #include "ui_dialogcheckresult.h" +#include DialogCheckResult::DialogCheckResult(QWidget *parent) : QDialog(parent), ui(new Ui::DialogCheckResult) { ui->setupUi(this); - for(int i=0;i<7;i++) - ui->tableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } DialogCheckResult::~DialogCheckResult() @@ -15,10 +15,66 @@ delete ui; } +void DialogCheckResult::initCheckTable(QList measList,QStringList headList) +{ + ui->tableWidget->verticalHeader()->setParent(nullptr); + ui->tableWidget->setColumnCount(headList.count()); + ui->tableWidget->setHorizontalHeaderLabels(headList); + for(int i=0;itableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + int rowCount=0; + int row=0; + measureCalList = measList; + for (const SaveDeviceMeasureCalibrator& measItem : measList) + { + //获取行号 并进行添加行 + rowCount = ui->tableWidget->rowCount(); + ui->tableWidget->insertRow(rowCount); + //添加 序号 + ui->tableWidget->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + + ui->tableWidget->setItem(row, 2, new QTableWidgetItem(measItem.params)); + ui->tableWidget->setItem(row, 3, new QTableWidgetItem(measItem.capacity)); + ui->tableWidget->setItem(row, 4, new QTableWidgetItem(measItem.unit)); + ui->tableWidget->setItem(row, 5, new QTableWidgetItem(measItem.frequency)); + ui->tableWidget->setItem(row, 6, new QTableWidgetItem(measItem.frequency_unit)); + ui->tableWidget->setItem(row, 7, new QTableWidgetItem(measItem.range_range)); + ui->tableWidget->setItem(row, 8, new QTableWidgetItem(measItem.standard_value)); + ui->tableWidget->setItem(row, 9, new QTableWidgetItem(measItem.resolution)); + ui->tableWidget->setItem(row, 10, new QTableWidgetItem(measItem.maximum_error)); + ui->tableWidget->setItem(row, 11, new QTableWidgetItem(measItem.error_param_a)); + ui->tableWidget->setItem(row, 12, new QTableWidgetItem(measItem.error_param_b)); + ui->tableWidget->setItem(row, 15, new QTableWidgetItem(measItem.indicating_value)); + ui->tableWidget->setItem(row, 19, new QTableWidgetItem(measItem.measure_indication_value)); + row++; + } +} + void DialogCheckResult::on_pushButton_3_clicked() { SaveDeviceMeasureInfo measInfo; - BaseCommonApi::InsertSaveDeviceMeasureInfo(measInfo); + BaseCommonApi api; + measInfo.id = QString::number(api.generateId()); + measInfo.data_no = "jdsj"+QDateTime::currentDateTime().toString("yyyyMMdd")+"0002"; + measInfo.temperature = ui->lineEditTemp->text(); + measInfo.humidity =ui->lineEdit_Hum->text(); + measInfo.measure_address=ui->comboBoxPlace->currentText(); + measInfo.trace_date = ui->dateEditCheck->date(); + measInfo.measure_valid_date = ui->dateEdit_Valid->dateTime(); + measInfo.outcome = ui->lineEdit_Cons->text(); + if(BaseCommonApi::InsertSaveDeviceMeasureInfo(measInfo)){ + for(SaveDeviceMeasureCalibrator& item:measureCalList){ + item.id = QString::number(api.generateId()); + item.data_id = measInfo.id; + BaseCommonApi::InsertVerMultiCal(item); + } + } + else + { + QMessageBox::warning(this, "警告", "保存失败!"); + } } void DialogCheckResult::on_pushButton_2_clicked() diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.h b/softwareDirectory/AutoVerScheme/dialogcheckresult.h index aec3b88..43cecac 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.h +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.h @@ -15,6 +15,7 @@ public: explicit DialogCheckResult(QWidget *parent = nullptr); ~DialogCheckResult(); + void initCheckTable(QList measList,QStringList headList); private slots: void on_pushButton_3_clicked(); @@ -25,6 +26,7 @@ private: Ui::DialogCheckResult *ui; + QList measureCalList; }; #endif // DIALOGCHECKRESULT_H diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.ui b/softwareDirectory/AutoVerScheme/dialogcheckresult.ui index fd74cfd..3be74e6 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.ui +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.ui @@ -145,7 +145,7 @@ - + @@ -155,7 +155,7 @@ - + @@ -165,7 +165,7 @@ - + @@ -175,7 +175,7 @@ - + @@ -185,7 +185,11 @@ - + + + true + + @@ -195,7 +199,11 @@ - + + + true + + @@ -205,7 +213,11 @@ - + + + true + + @@ -215,7 +227,7 @@ - + @@ -225,7 +237,7 @@ - + @@ -247,41 +259,6 @@ false - - - 新建列 - - - - - 量/单位 - - - - - 量程 - - - - - 新建列 - - - - - 检定点 - - - - - 测试值 - - - - - 备注 - - diff --git a/softwareDirectory/AutoVerScheme/formaddrsetting.cpp b/softwareDirectory/AutoVerScheme/formaddrsetting.cpp index c0c6866..939e00f 100644 --- a/softwareDirectory/AutoVerScheme/formaddrsetting.cpp +++ b/softwareDirectory/AutoVerScheme/formaddrsetting.cpp @@ -37,16 +37,17 @@ QStringList headlist; QList caliList =BaseCommonApi::Search_CalibrationTable(sDeviceId,&headlist); for (const QStringList& item : caliList){ - this->ui->comboBox->addItem(item[1]); + this->ui->comboBox->addItem(item[2]); } } else { QStringList headlist; //QString DeviceName = BaseCommonApi::getApparatus(id); - QList bizDeviceManageData=BaseCommonApi::getCheckDCPower(sDeviceId,&headlist); - for (const CheckDCPower& item : bizDeviceManageData){ - this->ui->comboBox->addItem(item.check_type); + //QList bizDeviceManageData=BaseCommonApi::getCheckDCPower(sDeviceId,&headlist); + QList ptList = BaseCommonApi::Search_VerifyTable(sDeviceId,&headlist); + for (const QStringList& item : ptList){ + this->ui->comboBox->addItem(item[2]); } } } diff --git a/softwareDirectory/AutoVerScheme/newcheckmethod.cpp b/softwareDirectory/AutoVerScheme/newcheckmethod.cpp index cef8248..058a788 100644 --- a/softwareDirectory/AutoVerScheme/newcheckmethod.cpp +++ b/softwareDirectory/AutoVerScheme/newcheckmethod.cpp @@ -119,6 +119,7 @@ programInfo.program_name = ui->lineEditName->text(); programInfo.create_name = ui->lineEditUser->text(); programInfo.create_time = ui->dateEditTime->dateTime(); + programInfo.update_time = QDateTime::currentDateTime(); programInfo.remark = ui->lineEditMark->text(); if(BaseCommonApi::UpdateVerificationProgramInfo(programInfo)) { diff --git a/softwareDirectory/AutoVerScheme/newverifymethod.cpp b/softwareDirectory/AutoVerScheme/newverifymethod.cpp index 4fc3594..c9cb49c 100644 --- a/softwareDirectory/AutoVerScheme/newverifymethod.cpp +++ b/softwareDirectory/AutoVerScheme/newverifymethod.cpp @@ -254,6 +254,7 @@ programInfo.check_name = ui->lineEditName->text(); programInfo.create_name = ui->lineEditUser->text(); programInfo.create_time = ui->dateEditTime->dateTime(); + programInfo.update_time = QDateTime::currentDateTime(); programInfo.remark = ui->lineEditMark->text(); if(BaseCommonApi::UpdateCheckProgramManage(programInfo)) { diff --git a/softwareDirectory/AutoVerScheme/verifywindow.cpp b/softwareDirectory/AutoVerScheme/verifywindow.cpp index a18d39d..34b5197 100644 --- a/softwareDirectory/AutoVerScheme/verifywindow.cpp +++ b/softwareDirectory/AutoVerScheme/verifywindow.cpp @@ -12,6 +12,10 @@ ui->tableWidgetMethod->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); ui->tableWidgetMethod->setColumnWidth(0, 60); ui->tableWidgetMethod->setColumnWidth(5, 100); + ui->tableWidget_3->verticalHeader()->setParent(nullptr); + for(int i=0;i<2;i++) + ui->tableWidget_3->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidget_3->setSelectionBehavior(QAbstractItemView::SelectRows); getVerifyMethod(); } @@ -71,13 +75,76 @@ QMessageBox::warning(this, "提示", "请选择检定程序!"); }else{ programInfo = BaseCommonApi::getCheckProgramManageById(sId); - QString strStyle = QString("QLabel{image:url(%1);}").arg(programInfo.img_path); - qDebug() << "strStyle:" << strStyle ; - ui->label_8->setStyleSheet(strStyle); + initDeviceInfo(); ui->stackedWidget->setCurrentIndex(1); } } +void VerifyWindow::initDeviceInfo() +{ + QString strStyle = QString("QLabel{image:url(%1);}").arg(programInfo.img_path); + qDebug() << "strStyle:" << strStyle; + ui->label_8->setStyleSheet(strStyle); + + ui->tableWidget_3->clearContents(); + ui->tableWidget_3->setRowCount(0); + QStringList idList; + int rowCount=0; + int row=0; + connectList.clear(); + if(programInfo.standard_device_id!="") + { + idList = programInfo.standard_device_id.split(","); + for(const QString& id : idList) + { + ConnectInfo info; + info.state="未连接"; + QList result = BaseCommonApi::getCatDeviceInfor(id); + if(result.length()>0){ + info.deviceName = result[0].equipment_name; + } + result.clear(); + QList addrList = BaseCommonApi::getVerificationProgramConfigInterface(id); + if(addrList.length()>0){ + info.programInterface = addrList[0]; + } + connectList.append(info); + addrList.clear(); + } + idList.clear(); + } + + if(programInfo.verification_documents_id!=""){ + idList = programInfo.verification_documents_id.split(","); + for(const QString& id : idList) + { + ConnectInfo info; + info.state="未连接"; + QList result = BaseCommonApi::getTestedCatDevice(id); + if(result.length()>0){ + info.deviceName = result[0].equipment_name; + } + result.clear(); + QList addrList = BaseCommonApi::getVerificationProgramConfigInterface(id); + if(addrList.length()>0){ + info.programInterface = addrList[0]; + } + connectList.append(info); + addrList.clear(); + } + idList.clear(); + } + for(const ConnectInfo& info : connectList){ + rowCount = ui->tableWidget_3->rowCount(); + ui->tableWidget_3->insertRow(rowCount); + ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 + row++; + } + ui->tableWidget_3->selectRow(0); +} + + void VerifyWindow::on_editButton_clicked() { @@ -96,3 +163,26 @@ } } } + +void VerifyWindow::on_tableWidget_3_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn) +{ + if(currentRow>=0&¤tRowradioButton_serial->setChecked(true); + else + ui->radioButton_visa->setChecked(true); + ui->comboBox_visa->setCurrentText(addr.visa); + if(addr.serial_port!=""){ + QStringList sList = addr.serial_port.split(";"); + if(sList.length()==5){ + ui->comboBox_port->setCurrentText(sList[0]); + ui->comboBox_baurt->setCurrentText(sList[1]); + ui->comboBox_check->setCurrentText(sList[2]); + ui->comboBox_data->setCurrentText(sList[3]); + ui->comboBox_stop->setCurrentText(sList[4]); + } + } + } +} diff --git a/softwareDirectory/AutoVerScheme/verifywindow.h b/softwareDirectory/AutoVerScheme/verifywindow.h index 796487f..e32aea4 100644 --- a/softwareDirectory/AutoVerScheme/verifywindow.h +++ b/softwareDirectory/AutoVerScheme/verifywindow.h @@ -3,6 +3,7 @@ #include #include "basecommonapi.h" +#include "checkwindow.h" namespace Ui { class VerifyWindow; @@ -17,16 +18,21 @@ ~VerifyWindow(); private: void getVerifyMethod(); + void initDeviceInfo(); private slots: void showDevice(); void on_editButton_clicked(); void on_tableWidgetMethod_cellChanged(int row, int column); + void on_tableWidget_3_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); + private: Ui::VerifyWindow *ui; QList programList; CheckProgramManage programInfo; + QList connectList; + }; #endif // VERIFYWINDOW_H diff --git a/softwareDirectory/AutoVerScheme/verifywindow.ui b/softwareDirectory/AutoVerScheme/verifywindow.ui index 5961d76..a4ee6c2 100644 --- a/softwareDirectory/AutoVerScheme/verifywindow.ui +++ b/softwareDirectory/AutoVerScheme/verifywindow.ui @@ -443,11 +443,25 @@ 设备名称 + + + 12 + 75 + true + + 连接状态 + + + 12 + 75 + true + + @@ -516,6 +530,237 @@ 设备接口设置 + + + + + + 12 + + + + 串口 + + + + + + + + 12 + + + + 端口号: + + + + + + + + 12 + + + + true + + + + + + + + 12 + + + + 波特率: + + + + + + + + 12 + + + + true + + + 9600 + + + 1 + + + + 4800 + + + + + 9600 + + + + + 14400 + + + + + 19200 + + + + + 38400 + + + + + + + + + 12 + + + + 校验位: + + + + + + + + 12 + + + + + None + + + + + Odd + + + + + Even + + + + + + + + + 12 + + + + 数据位: + + + + + + + + 12 + + + + 1 + + + + 7 + + + + + 8 + + + + + + + + + 12 + + + + 停止位: + + + + + + + + 12 + + + + 1 + + + + None + + + + + One + + + + + Two + + + + + OnePointFive + + + + + + + + + 12 + + + + VISA + + + + + + + + 12 + + + + true + + + + diff --git a/softwareDirectory/AutoVerScheme/visacommonengine.cpp b/softwareDirectory/AutoVerScheme/visacommonengine.cpp index c9c00c7..61763c2 100644 --- a/softwareDirectory/AutoVerScheme/visacommonengine.cpp +++ b/softwareDirectory/AutoVerScheme/visacommonengine.cpp @@ -7,23 +7,39 @@ } -bool VisaCommonEngine::openDevice() +/*VisaCommonEngine::~VisaCommonEngine() { + closeDevice(); +}*/ +bool VisaCommonEngine::getState() +{ + return commState; +} +bool VisaCommonEngine::openDevice(QString sAddr,QString sType) +{ + if(getState()) + { + closeDevice(); + } + remoteAddr = sAddr.toLatin1().data(); + commType = sType; status = viOpenDefaultRM(&defaultRM); if (status < VI_SUCCESS) { qDebug() << "Could not open a session to the VISA Resource Manager!\n"; + return false; } status = viOpen(defaultRM, remoteAddr, VI_NULL, VI_NULL, &instr); if (status < VI_SUCCESS) { qDebug() << "Cannot open a session to the device.\n"; - goto Close; + closeDevice(); + return false; } //viQueryf(instr,"IDN ?\n","%t",buffer); - status = viQueryf( instr, "*IDN?\n", "%s", buffer); + /*status = viQueryf( instr, "*IDN?\n", "%s", buffer); if (status < VI_SUCCESS){ qDebug() << "Error reading a response from the device.\n"; @@ -31,65 +47,80 @@ qDebug() << "Data read:" << retCount << QString::fromLocal8Bit((char*)buffer); //ui->textBrowser->setText(QString::fromLocal8Bit((char*)buffer,retCount)); - } + }*/ /* Set the timeout to 5 seconds (5000 milliseconds). */ - status = viSetAttribute(instr, VI_ATTR_TMO_VALUE, 5000); + status = viSetAttribute(instr, VI_ATTR_TMO_VALUE, 10000); /* Set the baud rate to 4800 (default is 9600). */ - status = viSetAttribute(instr, VI_ATTR_ASRL_BAUD, 4800); + //status = viSetAttribute(instr, VI_ATTR_ASRL_BAUD, 4800); /* Set the number of data bits contained in each frame (from 5 to 8). * The data bits for each frame are located in the low-order bits of * every byte stored in memory. */ - status = viSetAttribute(instr, VI_ATTR_ASRL_DATA_BITS, 8); + //status = viSetAttribute(instr, VI_ATTR_ASRL_DATA_BITS, 8); - status = viSetAttribute(instr, VI_ATTR_ASRL_PARITY, VI_ASRL_PAR_NONE); + //status = viSetAttribute(instr, VI_ATTR_ASRL_PARITY, VI_ASRL_PAR_NONE); - status = viSetAttribute(instr, VI_ATTR_ASRL_STOP_BITS, VI_ASRL_STOP_ONE); + //status = viSetAttribute(instr, VI_ATTR_ASRL_STOP_BITS, VI_ASRL_STOP_ONE); - status = viSetAttribute(instr, VI_ATTR_TERMCHAR_EN, VI_TRUE); + //status = viSetAttribute(instr, VI_ATTR_TERMCHAR_EN, VI_TRUE); /* Set the termination character to 0xA */ status = viSetAttribute(instr, VI_ATTR_TERMCHAR, 0xA); - strcpy(stringinput, ":MEASure:VOLTage:DC?\n"); + //strcpy(stringinput, ":MEASure:VOLTage:DC?\n"); //strcpy(stringinput, "*IDN?\n"); - status = viWrite(instr, (ViBuf)stringinput, (ViUInt32)strlen(stringinput), &writeCount); - if (status < VI_SUCCESS){ - qDebug() << "Error writing to the device.\n"; - goto Close; - } + //status = viWrite(instr, (ViBuf)stringinput, (ViUInt32)strlen(stringinput), &writeCount); + //if (status < VI_SUCCESS){ + // qDebug() << "Error writing to the device.\n"; + // goto Close; + //} - status = viRead(instr, buffer, 100, &retCount); - if (status < VI_SUCCESS){ - qDebug() << "Error reading a response from the device.\n"; - }else{ - qDebug() << "Data read:" << retCount << QString::fromLocal8Bit((char*)buffer,retCount); + //status = viRead(instr, buffer, 100, &retCount); + //if (status < VI_SUCCESS){ + // qDebug() << "Error reading a response from the device.\n"; + //}else{ + // qDebug() << "Data read:" << retCount << QString::fromLocal8Bit((char*)buffer,retCount); //ui->textBrowser->setText(QString::fromLocal8Bit((char*)buffer,retCount)); - } - -Close: - status = viClose(instr); - status = viClose(defaultRM); + //} + commState = true; return true; } -QString VisaCommonEngine::queryData() +void VisaCommonEngine::closeDevice() { + status = viClose(instr); + status = viClose(defaultRM); + commState = false; +} + +QString VisaCommonEngine::queryData(QString sCmd) +{ + ViConstRsrc sQuery = (sCmd+"\n").toLatin1().data(); + status = viQueryf( instr, sQuery, "%s", buffer); + + if (status < VI_SUCCESS){ + qDebug() << "Error reading a response from the device.\n"; + return ""; + }else{ + qDebug() << "Data read:" << retCount << QString::fromLocal8Bit((char*)buffer); + return QString::fromLocal8Bit((char*)buffer); + //ui->textBrowser->setText(QString::fromLocal8Bit((char*)buffer,retCount)); + } return ""; } -bool VisaCommonEngine::sendData(QString strData) +bool VisaCommonEngine::sendData(QString sCmd) { //strcpy(stringinput, strData.toLatin1().data()); //strcpy(stringinput, "*IDN?\n"); - char *strBuf = strData.toLatin1().data(); + char *strBuf = (sCmd+"\n").toLatin1().data(); status = viWrite(instr, (ViBuf)strBuf, (ViUInt32)strlen(strBuf), &writeCount); if (status < VI_SUCCESS){ return false; diff --git a/softwareDirectory/AutoVerScheme/visacommonengine.h b/softwareDirectory/AutoVerScheme/visacommonengine.h index 937f7b6..be4b8fc 100644 --- a/softwareDirectory/AutoVerScheme/visacommonengine.h +++ b/softwareDirectory/AutoVerScheme/visacommonengine.h @@ -7,10 +7,13 @@ { public: VisaCommonEngine(); - QString queryData(); - bool sendData(QString strData); -private: - bool openDevice(); + //~VisaCommonEngine(); + QString queryData(QString sCmd); + bool sendData(QString sCmd); +public: + bool openDevice(QString sAddr,QString sType); + void closeDevice(); + bool getState(); private: ViSession defaultRM; ViSession instr; @@ -20,6 +23,8 @@ unsigned char buffer[100]; char stringinput[512]; ViConstRsrc remoteAddr=""; + QString commType="Visa"; + bool commState=false; }; #endif // VISACOMMONENGINE_H