3500/ChannelList.cpp

672 lines
35 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "ChannelList.h"
#include "ui_channellist.h"
#include <QCheckBox>
#include "sqlitedb.h"
#include <QLabel>
#include <QDateTime>
#include <QDate>
#include <QTime>
#include <QInputDialog>
#include "NetMgr.h"
CChannelList::CChannelList(QWidget *parent) :
QWidget(parent),
ui(new Ui::CChannelList)
{
ui->setupUi(this);
// this->setWindowTitle("QTableView简单使用");
// //建立模型对象空间并指定父对象
// m_pModel = new QStandardItemModel(ui->tableView);
// //添加列标题
// //m_pModel->setHorizontalHeaderLabels(QStringList() << "one" << "two"\
// << "three" << "four");
// m_pModel->setColumnCount(5);
// //将数据模型设置到表对象上
// ui->tableView->setModel(m_pModel);
// //建立表头对象空间并指定父对象
// m_pHeaderView = new CHeaderView(Qt::Horizontal, ui->tableView);
// //将表对象的表头设为自定义表头
// ui->tableView->setHorizontalHeader(m_pHeaderView);
// //连接表头点击信号槽
// connect(m_pHeaderView, &CHeaderView::columnSectionClicked
// , this, &CChannelList::on_columnSectionClicked);
// //循环添加三行数据
// for(int index = 0; index != 3; ++index)
// {
// m_pModel->appendRow(QList<QStandardItem *>()
// << new QStandardItem(QString("第%1行第0列").arg(index))
// << new QStandardItem(QString("第%1行第1列").arg(index))
// << new QStandardItem(QString("第%1行第2列").arg(index))
// << new QStandardItem(QString("第%1行第3列").arg(index)));
// }
// //m_pModel->appendRow(new QStandardItem(QString("第%1行第0列")));
// //设置第0列和第2列为可选
// this->setColumnCheckable(0, true);
// //this->setColumnCheckable(2, true);
//--1 初始化
headerStr = QObject::tr(" ,通道名称,模块编号,通道序号,通道状态,通道类型,采样频率(Hz),灵敏度,工程单位,范围检查,最小值,\
最大值,1x幅值补偿,1x相位补偿,初始间距,安装角度,安装位置,转向,速度参考,转速比,关联通道,\
轴承间隙,启动位置,IEPE,耦合性,0值电压,满程电压,自动转速,触发沿,触发次数,Hysteresis(V),\
触发阈值,热电偶类型,配置时间,滤波器,起始频率,截止频率,备注");
iniVar();
iniUi();
iniConnect();
initReadConfig();
connect(ui->tableView, SIGNAL(doubleClicked(const QModelIndex &)), this, SLOT(slotRowDoubleClicked(const QModelIndex &)));
ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
ui->tableView->setColumnWidth(33, 256);
m_nCurRow = -1;
SlowSpeeddialog = new CSlowSpeedChannelSetting();
connect(SlowSpeeddialog, SIGNAL(sgSetChannelData(ChannelSetting)), this, SLOT(slotSetChannelData(ChannelSetting)));
ChannelSettingdialog = new CChannelSetting();
connect(ChannelSettingdialog, SIGNAL(sgSetChannelData(ChannelSetting)), this, SLOT(slotSetChannelData(ChannelSetting)));
SlowSpeeddialog = new CSlowSpeedChannelSetting();
connect(SlowSpeeddialog, SIGNAL(sgSetChannelData(ChannelSetting)), this, SLOT(slotSetChannelData(ChannelSetting)));
//--2 创建表格项
// QStringList workingConditionName;
// workingConditionName<<tr("工况1")<<tr("工况2")<<tr("工况3");
// createItem(workingConditionName);
}
CChannelList::~CChannelList()
{
delete ui;
}
void CChannelList::initReadConfig()
{
//model->clear();
for (int i = 0; i < g_channelSetting.size(); i++) {
QString strChannelType;
QMap<QString,QString>::Iterator iter = g_MapChannelType.begin();
for (; iter != g_MapChannelType.end(); iter++) {
if(iter.key() == g_channelSetting[i].sensorType){
strChannelType = iter.value();
break;
}
}
QVariantList strRowItem ;
QString strChannelStatus;
if(g_channelSetting[i].isEnable)
strChannelStatus = "启用";
else
strChannelStatus = "关闭";
QString strcouplingACDC;
if(g_channelSetting[i].couplingACDC)
strcouplingACDC = "AC";
else
strcouplingACDC = "DC";
QString TStr = QDateTime::fromSecsSinceEpoch(g_channelSetting[i].sensorConfigureDate.toInt()).toString("yyyy-MM-dd hh:mm:ss");
strRowItem << g_channelSetting[i].channelName << g_channelSetting[i].sensorModuleNo << g_channelSetting[i].sensorNo\
<< strChannelStatus << strChannelType << g_channelSetting[i].samplingRate\
<< g_channelSetting[i].sensorSensitivity <<g_channelSetting[i].sensorEngineeringUnit <<g_channelSetting[i].sensorRangeCheck \
<< g_channelSetting[i].sensorRangeMin <<g_channelSetting[i].sensorRangeMax <<g_channelSetting[i].sensor1xAmplitudeRunout\
<< g_channelSetting[i].sensor1xPhaseRunout <<g_channelSetting[i].sensorGapVoltage <<g_channelSetting[i].sensorLocationInDegree\
<< g_channelSetting[i].sensorLeftOrRight <<g_channelSetting[i].shaftRotationDirection <<g_channelSetting[i].speedRefChannelName\
<< g_channelSetting[i].rpmMultiplier <<g_channelSetting[i].pairChannelName <<g_channelSetting[i].bearingClearance \
<< g_channelSetting[i].bearingStartPosition <<g_channelSetting[i].sensorICP << strcouplingACDC \
<< g_channelSetting[i].zeroScalePosition <<g_channelSetting[i].fullScalePosition <<g_channelSetting[i].tachAutoTach\
<< g_channelSetting[i].tachTriggerEdge <<g_channelSetting[i].tachTriggerPerRev <<g_channelSetting[i].tachTriggerHysteresis\
<< g_channelSetting[i].tachTriggerVoltageLevel <<g_channelSetting[i].thermalCoupleType \
<< TStr <<g_channelSetting[i].filter <<g_channelSetting[i].startBrands \
<< g_channelSetting[i].stopBrands << g_channelSetting[i].comments << g_channelSetting[i].channelId << g_channelSetting[i].boardType;
createRowItem(i,strRowItem);
//g_MapTableList.insert(g_channelSetting[i].channelId,strRowItem);
}
// ui->tableView->sortByColumn(2,Qt::AscendingOrder);//第3列是按照升序来排列
// ui->tableView->setSortingEnabled(true);
}
void CChannelList::iniVar()
{
myHeader = new TableHeaderView(Qt::Horizontal, ui->tableView);
model = new QStandardItemModel(ui->tableView);
}
void CChannelList::iniUi()
{
ui->tableView->setHorizontalHeader(myHeader);
ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows); //选中行
QStringList headerList = headerStr.split(",");
model->setHorizontalHeaderLabels(headerList);
model->setColumnCount(headerList.size());
CheckBoxDelegate *pCheckDelegate = new CheckBoxDelegate(this);
ui->tableView->setItemDelegateForColumn(0, pCheckDelegate);
ui->tableView->setModel(model);
ui->tableView->setAlternatingRowColors(true);
for (int i = 0; i < model->columnCount() ; i++) {
if(i == 1){
ui->tableView->setColumnWidth(i, 200);
}else{
ui->tableView->setColumnWidth(i, 150);
}
}
}
void CChannelList::iniConnect()
{
connect(myHeader, &TableHeaderView::stateChanged, this, &CChannelList::headerStateChangedSlot);
connect(model, SIGNAL(itemChanged(QStandardItem*)), this, SLOT(itemChangedSlot(QStandardItem*)));
}
void CChannelList::createItem(QStringList filename)
{
qDebug()<< "createItem" << endl;
int rowCount = filename.size();
model->setRowCount(rowCount);
for(int i = 0; i < rowCount; ++i)
{
model->setItem(i,1,new QStandardItem(filename.at(i)));
QModelIndex index = model->index(i, 1, QModelIndex());
QStandardItem *item = model->itemFromIndex(index);
item->setData(QColor(Qt::green), Qt::BackgroundRole);
}
}
void CChannelList::createRowItem(int Row,QVariantList RowItem)
{
model->setRowCount(Row+1);
{
for (int j = 1; j < RowItem.size()+1; ++j)
{
//model->setItem(i,j,new QStandardItem(filename.at(j-1)));
model->setData(model->index(Row,j,QModelIndex()),RowItem.at(j-1));
//model->set
}
}
}
void CChannelList::headerStateChangedSlot(int state)
{
int rowCount = model->rowCount();
if (state == 2)//全选
{
for (int j = 0; j<rowCount; j++)
{
QModelIndex index = model->index(j, 0, QModelIndex());
model->setData(index, true, Qt::UserRole);
}
}
else if (state == 0) //全不选
{
for (int j = 0; j<rowCount; j++)
{
QModelIndex index = model->index(j, 0, QModelIndex());
model->setData(index, false, Qt::UserRole);
}
}
}
void CChannelList::itemChangedSlot(QStandardItem *item)
{
int rowCount = model->rowCount();
int column = item->index().column();
if (column == 0) //第0列 checkbox
{
Qt::CheckState state = Qt::Unchecked;
int nSelectedCount = 0;
for (int i = 0; i< rowCount; i++)
{
if (model->index(i, 0).data(Qt::UserRole).toBool())
{
nSelectedCount++;
}
}
if (nSelectedCount >= rowCount)
{
state = Qt::Checked;
}
else if (nSelectedCount > 0)
{
state = Qt::PartiallyChecked;
}
myHeader->onStateChanged(state);
}
}
void CChannelList::slotSetChannelData(ChannelSetting channelSetting)
{
int i;
for (i = 0;i <g_channelSetting.size() ; i++) {
if(g_channelSetting[i].channelId == channelSetting.channelId){
g_channelSetting[i] = channelSetting;
break;
}
}
QString strChannelType;
QMap<QString,QString>::Iterator iter = g_MapChannelType.begin();
for (; iter != g_MapChannelType.end(); iter++) {
if(iter.key() == channelSetting.sensorType){
strChannelType = iter.value();
break;
}
}
QVariantList strRowItem ;
QString strChannelStatus;
if(channelSetting.isEnable)
strChannelStatus = "启用";
else
strChannelStatus = "关闭";
QString TStr = QDateTime::fromSecsSinceEpoch(channelSetting.sensorConfigureDate.toInt()).toString("yyyy-MM-dd hh:mm:ss");
strRowItem << channelSetting.channelName << channelSetting.sensorModuleNo << channelSetting.sensorNo\
<< strChannelStatus << strChannelType << channelSetting.samplingRate\
<< channelSetting.sensorSensitivity <<channelSetting.sensorEngineeringUnit <<channelSetting.sensorRangeCheck \
<< channelSetting.sensorRangeMin <<channelSetting.sensorRangeMax <<channelSetting.sensor1xAmplitudeRunout\
<< channelSetting.sensor1xPhaseRunout <<channelSetting.bearingClearance <<channelSetting.sensorLocationInDegree\
<< channelSetting.sensorLeftOrRight <<channelSetting.shaftRotationDirection <<channelSetting.speedRefChannelId\
<< channelSetting.rpmMultiplier <<channelSetting.pairChannelId <<channelSetting.bearingClearance \
<< channelSetting.bearingStartPosition <<channelSetting.sensorICP << channelSetting.couplingACDC \
<< channelSetting.zeroScalePosition <<channelSetting.fullScalePosition <<channelSetting.tachAutoTach\
<< channelSetting.tachTriggerEdge <<channelSetting.tachTriggerPerRev <<channelSetting.tachTriggerHysteresis\
<< channelSetting.tachTriggerVoltageLevel <<channelSetting.thermalCoupleType \
<< TStr <<channelSetting.filter <<channelSetting.startBrands \
<< channelSetting.stopBrands << channelSetting.comments << g_channelSetting[i].channelId << g_channelSetting[i].boardType;
// for (int j = 1; j < strRowItem.size()+1; ++j)
// {
// model->setData(model->index(m_nCurRow,j,QModelIndex()),strRowItem.at(j-1));
// }
// model->setData(model->index(m_nCurRow,1,QModelIndex()),g_channelSetting[i].channelName);
// QJsonDocument document;
// document.setArray(m_JsonArray);
// QByteArray byteArray = document.toJson(QJsonDocument::Compact);
// QString name = QCoreApplication::applicationDirPath() + "\\config\\channelSettings.json";
// QFile file(name);
// file.open(QIODevice::WriteOnly);
// file.write(byteArray);
// file.close();
QString strUpdateSql = QString(" set ChUnitCoeff = '%1' , ChUnitDot = %2,SensorICP = '%3', \
SensorType = '%4',bearingClearance='%5',bearingStartPosition='%6',\
channelIntDiff = '%7',channelName='%8',channelRMSPkPk2Pk='%9',channelSensorType='%10',\
comments = '%11',couplingACDC='%12',envelopeHighpassband=%13,envelopeLowpassband=%14,\
equipmentId = %15,filter='%16',frequencyRangeMax='%17',frequencyRangeMin='%18',\
fullScalePosition=%19,highPassFrequency='%20',installMethod='%21',isEnable=%22,\
isWork=%23,lowPassFrequency='%24',measuringRange='%25',offset=%26,pairChannelId='%27',\
pairChannelName='%28',rpmMultiplier='%29',samplingRate=%30,sensor1xAmplitudeRunout='%31',\
sensor1xPhaseRunout='%32',sensorConfigureDate='%33',sensorEngineeringUnit='%34',\
sensorGapVoltage='%35',sensorLeftOrRight='%36',sensorLocationInDegree=%37,sensorModuleNo=%38,\
sensorNo=%39,sensorRange='%40',sensorRangeCheck='%41',sensorRangeMax='%42',sensorRangeMin='%43',\
sensorSensitivity='%44',shaftRotationDirection='%45',speedRefChannelId='%46',\
startBrands='%47',stopBrands='%48',tachAutoTach='%49',tachTriggerEdge='%50',tachTriggerHysteresis=%51,\
tachTriggerPerRev='%52',tachTriggerVoltageLevel='%53',thermalCoupleType = '%54',xFullScalePosition='%55',\
xProcessVariableName='%56',xZeroScalePosition='%57',zeroScalePosition='%58',speedRefChannelName = '%59',defaultDisplay = '%60',sensorTypes = '%61',\
confidenceDegree = %62,sectionNum = %63,EngineeringUnit2 = '%64',firstPoleNum = '%65' where channelId = '%66'").\
arg(channelSetting.ChUnitCoeff).arg(channelSetting.ChUnitDot).arg(channelSetting.sensorICP).\
arg(channelSetting.sensorType).arg(channelSetting.bearingClearance).arg(channelSetting.bearingStartPosition).\
arg(channelSetting.channelIntDiff).arg(channelSetting.channelName).arg(channelSetting.channelRMSPkPk2Pk).arg(channelSetting.channelSensorType).\
arg(channelSetting.comments).arg(channelSetting.couplingACDC).arg(channelSetting.envelopeHighpassband).arg(channelSetting.envelopeLowpassband).\
arg(channelSetting.equipmentId).arg(channelSetting.filter).arg(channelSetting.frequencyRangeMax).\
arg(channelSetting.frequencyRangeMin).arg(channelSetting.fullScalePosition).arg(channelSetting.highPassFrequency).\
arg(channelSetting.installMethod).arg(channelSetting.isEnable).arg(channelSetting.isWork).\
arg(channelSetting.lowPassFrequency).arg(channelSetting.measuringRange).arg(channelSetting.offset).\
arg(channelSetting.pairChannelId).arg(channelSetting.pairChannelName).arg(channelSetting.rpmMultiplier).\
arg(channelSetting.samplingRate).arg(channelSetting.sensor1xAmplitudeRunout).arg(channelSetting.sensor1xPhaseRunout).\
arg(channelSetting.sensorConfigureDate).arg(channelSetting.sensorEngineeringUnit).arg(channelSetting.sensorGapVoltage).\
arg(channelSetting.sensorLeftOrRight).arg(channelSetting.sensorLocationInDegree).arg(channelSetting.sensorModuleNo).\
arg(channelSetting.sensorNo).arg(channelSetting.sensorRange).arg(channelSetting.sensorRangeCheck).\
arg(channelSetting.sensorRangeMax).arg(channelSetting.sensorRangeMin).arg(channelSetting.sensorSensitivity).\
arg(channelSetting.shaftRotationDirection).arg(channelSetting.speedRefChannelId).\
arg(channelSetting.startBrands).arg(channelSetting.stopBrands).arg(channelSetting.tachAutoTach).arg(channelSetting.tachTriggerEdge).\
arg(channelSetting.tachTriggerHysteresis).arg(channelSetting.tachTriggerPerRev).arg(channelSetting.tachTriggerVoltageLevel).\
arg(channelSetting.thermalCoupleType).arg(channelSetting.xFullScalePosition).arg(channelSetting.xProcessVariableName).arg(channelSetting.xZeroScalePosition).\
arg(channelSetting.zeroScalePosition).arg(channelSetting.speedRefChannelName).arg(channelSetting.defaultDisplay).arg(channelSetting.sensorTypes).\
arg(channelSetting.confidenceDegree).arg(channelSetting.sectionNum).arg(channelSetting.EngineeringUnit).arg(channelSetting.firstPoleNum).arg(channelSetting.channelId);
QString tableName = "t_ChannelSetting ";
g_SqliteDB->UpdateDataSql(tableName,strUpdateSql);
g_channelSetting = g_SqliteDB->GetDataMultiLine("t_ChannelSetting");
putJson();
//disconnect(ChannelSettingdialog, SIGNAL(sgSetChannelData(ChannelSetting)), this, SLOT(slotSetChannelData(ChannelSetting)));
//disconnect(SlowSpeeddialog, SIGNAL(sgSetChannelData(ChannelSetting)), this, SLOT(slotSetChannelData(ChannelSetting)));
}
void CChannelList::putJson()
{
QJsonArray channelArray;
for(int i = 0; i < g_channelSetting.size();i++){
QJsonObject channelObj;
channelObj["ChUnitCoeff"] = g_channelSetting[i].ChUnitCoeff;
channelObj["ChUnitDot"] = g_channelSetting[i].ChUnitDot;
channelObj["sensorICP"] = g_channelSetting[i].sensorICP;
channelObj["bearingClearance"] = g_channelSetting[i].bearingClearance.toDouble();
channelObj["bearingStartPosition"] = g_channelSetting[i].bearingStartPosition;
channelObj["channel1P5XAMP"] = g_channelSetting[i].channel1P5XAMP;
channelObj["channel1P5XAMPDefaultValue"] = g_channelSetting[i].channel1P5XAMPDefaultValue;
channelObj["channel1xAmpl"] = g_channelSetting[i].channel1xAmpl;
channelObj["channel1xAmpleDefaultValue"] = g_channelSetting[i].channel1xAmpleDefaultValue;
channelObj["channel2P5XAMP"] = g_channelSetting[i].channel2P5XAMP;
channelObj["channel2P5XAMPDefaultValue"] = g_channelSetting[i].channel2P5XAMPDefaultValue;
channelObj["channel2p5xAmpl"] = g_channelSetting[i].channel2p5xAmpl;
channelObj["channel2p5xAmplDefaultValue"] = g_channelSetting[i].channel2p5xAmplDefaultValue;
channelObj["channel2xAmpl"] = g_channelSetting[i].channel2xAmpl;
channelObj["channel2xAmplDefaultValue"] = g_channelSetting[i].channel2xAmplDefaultValue;
channelObj["channel3XAmpl"] = g_channelSetting[i].channel3XAmpl;
channelObj["channel3XAmplDefaultValue"] = g_channelSetting[i].channel3XAmplDefaultValue;
channelObj["channelACHighpassband"] = g_channelSetting[i].channelACHighpassband;
channelObj["channelDefaultValueEU"] = g_channelSetting[i].channelDefaultValueEU;
channelObj["channelDirect"] = g_channelSetting[i].channelDirect;
channelObj["channelDirectDefaultValue"] = g_channelSetting[i].channelDirectDefaultValue;
channelObj["channelElement"] = g_channelSetting[i].channelElement;
channelObj["channelElementDefaultValue"] = g_channelSetting[i].channelElementDefaultValue;
channelObj["channelGapVoltage"] = g_channelSetting[i].channelGapVoltage;
channelObj["channelGapVoltageDefaultValue"] = g_channelSetting[i].channelGapVoltageDefaultValue;
channelObj["channelId"] = g_channelSetting[i].channelId;
channelObj["channelIntDiff"] = g_channelSetting[i].channelIntDiff;
channelObj["channelName"] = g_channelSetting[i].channelName;
channelObj["channelNot1xAmp"] = g_channelSetting[i].channelNot1xAmp;
channelObj["channelNot1xAmpDefaultValue"] = g_channelSetting[i].channelNot1xAmpDefaultValue;
channelObj["channelOP5XAMP"] = g_channelSetting[i].channelOP5XAMP;
channelObj["channelOP5XAMPDefaultValue"] = g_channelSetting[i].channelOP5XAMPDefaultValue;
channelObj["channelRMSPkPk2Pk"] = g_channelSetting[i].channelRMSPkPk2Pk;
channelObj["channelRecorderOutput"] = g_channelSetting[i].channelRecorderOutput;
channelObj["channelRecorderOutputDefaultVal"] = g_channelSetting[i].channelRecorderOutputDefaultVal;
channelObj["channelRotor"] = g_channelSetting[i].channelRotor;
channelObj["channelRotorDefaultValue"] = g_channelSetting[i].channelRotorDefaultValue;
channelObj["channelSensorType"] = g_channelSetting[i].channelSensorType;
channelObj["channelSmax"] = g_channelSetting[i].channelSmax;
channelObj["channelSmaxDefaultValue"] = g_channelSetting[i].channelSmaxDefaultValue;
channelObj["channelSpike"] = g_channelSetting[i].channelSpike;
channelObj["channelSpikeDefaultValue"] = g_channelSetting[i].channelSpikeDefaultValue;
channelObj["comments"] = g_channelSetting[i].comments;
channelObj["couplingACDC"] = g_channelSetting[i].couplingACDC;
channelObj["dataWatchNo"] = g_channelSetting[i].dataWatchNo;
channelObj["envelopeHighpassband"] = g_channelSetting[i].envelopeHighpassband;
channelObj["envelopeLowpassband"] = g_channelSetting[i].envelopeLowpassband;
channelObj["equipmentId"] = g_channelSetting[i].equipmentId;
channelObj["filter"] = g_channelSetting[i].filter;
channelObj["frequencyRangeMax"] = g_channelSetting[i].frequencyRangeMax.toDouble();
channelObj["frequencyRangeMin"] = g_channelSetting[i].frequencyRangeMin.toDouble();
channelObj["fullScalePosition"] = g_channelSetting[i].fullScalePosition;
channelObj["highPassFrequency"] = g_channelSetting[i].highPassFrequency.toDouble();
channelObj["installMethod"] = g_channelSetting[i].installMethod;
channelObj["isEnable"] = g_channelSetting[i].isEnable;
channelObj["isWork"] = g_channelSetting[i].isWork;
channelObj["lowPassFrequency"] = g_channelSetting[i].lowPassFrequency.toDouble();
channelObj["measuringRange"] = g_channelSetting[i].measuringRange.toDouble();
channelObj["offset"] = g_channelSetting[i].offset;
channelObj["pairChannelId"] = g_channelSetting[i].pairChannelId;
channelObj["pairChannelName"] = g_channelSetting[i].pairChannelName;
channelObj["rpmMultiplier"] = g_channelSetting[i].rpmMultiplier.toDouble();
channelObj["samplingRate"] = g_channelSetting[i].samplingRate;
channelObj["sensor1xAmplitudeRunout"] = g_channelSetting[i].sensor1xAmplitudeRunout.toDouble();
channelObj["sensor1xPhaseRunout"] = g_channelSetting[i].sensor1xPhaseRunout.toDouble();
channelObj["sensorConfigureDate"] = g_channelSetting[i].sensorConfigureDate.toInt();
channelObj["sensorEngineeringUnit"] = g_channelSetting[i].sensorEngineeringUnit;
channelObj["sensorGapVoltage"] = g_channelSetting[i].sensorGapVoltage.toDouble();
channelObj["sensorLeftOrRight"] = g_channelSetting[i].sensorLeftOrRight;
channelObj["sensorLocationInDegree"] = g_channelSetting[i].sensorLocationInDegree;
channelObj["sensorModuleNo"] = g_channelSetting[i].sensorModuleNo;
channelObj["sensorNo"] = g_channelSetting[i].sensorNo;
channelObj["sensorRange"] = g_channelSetting[i].sensorRange;
channelObj["sensorRangeCheck"] = g_channelSetting[i].sensorRangeCheck;
channelObj["sensorRangeMax"] = g_channelSetting[i].sensorRangeMax.toDouble();
channelObj["sensorRangeMin"] = g_channelSetting[i].sensorRangeMin.toDouble();
channelObj["sensorSensitivity"] = g_channelSetting[i].sensorSensitivity.toDouble();
channelObj["sensorType"] = g_channelSetting[i].sensorType;
channelObj["shaftRotationDirection"] = g_channelSetting[i].shaftRotationDirection;
channelObj["speedRefChannelId"] = g_channelSetting[i].speedRefChannelId;
channelObj["startBrands"] = g_channelSetting[i].startBrands;
channelObj["stopBrands"] = g_channelSetting[i].stopBrands;
channelObj["tachAutoTach"] = g_channelSetting[i].tachAutoTach;
channelObj["tachTriggerEdge"] = g_channelSetting[i].tachTriggerEdge;
channelObj["tachTriggerHysteresis"] = g_channelSetting[i].tachTriggerHysteresis;
channelObj["tachTriggerPerRev"] = g_channelSetting[i].tachTriggerPerRev.toInt();
channelObj["tachTriggerVoltageLevel"] = g_channelSetting[i].tachTriggerVoltageLevel;
channelObj["thermalCoupleType"] = g_channelSetting[i].thermalCoupleType;
channelObj["xFullScalePosition"] = g_channelSetting[i].xFullScalePosition.toDouble();
channelObj["xProcessVariableName"] = g_channelSetting[i].xProcessVariableName;
channelObj["xZeroScalePosition"] = g_channelSetting[i].xZeroScalePosition.toDouble();
channelObj["zeroScalePosition"] = g_channelSetting[i].zeroScalePosition.toDouble();
channelObj["boardType"] = g_channelSetting[i].boardType;
channelObj["defaultDisplay"] = g_channelSetting[i].defaultDisplay;
channelObj["sectionNum"] = g_channelSetting[i].sectionNum;
channelObj["confidenceDegree"] = g_channelSetting[i].confidenceDegree;
channelObj["EngineeringUnit"] = g_channelSetting[i].EngineeringUnit;
channelObj["firstPoleNum"] = g_channelSetting[i].firstPoleNum;
channelArray.append(channelObj);
}
QJsonDocument jsonDoc;
jsonDoc.setArray(channelArray);
QString name = QCoreApplication::applicationDirPath() + "\\config\\ChannelSettings.json";
QFile file(name);
file.open(QIODevice::WriteOnly);
file.write(jsonDoc.toJson());
file.close();
QVector<ChannelSetting>().swap(g_channelSetting);
QVector<channelBaseInfo>().swap(g_ChannelBaseInfo);
QMap<QString,QMap<QString,QString>>().swap(g_MapChannel);
g_channelSetting = g_SqliteDB->GetDataMultiLine("t_ChannelSetting");
for (int i = 0; i < g_channelSetting.size(); i++)
{
QMap<QString,QString> mapChannelType;
mapChannelType.insert(g_channelSetting[i].sensorType,g_channelSetting[i].channelName);
g_MapChannel.insert(g_channelSetting[i].channelId,mapChannelType);
channelBaseInfo tempchannelbaseinfo;
tempchannelbaseinfo.bordNo = g_channelSetting[i].sensorModuleNo;
tempchannelbaseinfo.channelID = g_channelSetting[i].channelId;
tempchannelbaseinfo.channelNoInBoard = g_channelSetting[i].sensorNo;
tempchannelbaseinfo.channelName = g_channelSetting[i].channelName;
tempchannelbaseinfo.channelType = g_channelSetting[i].sensorType;
tempchannelbaseinfo.sensorEngineeringUnit = g_channelSetting[i].sensorEngineeringUnit;
tempchannelbaseinfo.defaultDisplay = g_channelSetting[i].defaultDisplay;
tempchannelbaseinfo.speedRefChannelId = g_channelSetting[i].speedRefChannelId;
tempchannelbaseinfo.boardType = g_channelSetting[i].boardType;
tempchannelbaseinfo.isEnable = g_channelSetting[i].isEnable;
tempchannelbaseinfo.ChUnitDot = g_channelSetting[i].ChUnitDot;
g_ChannelBaseInfo.append(tempchannelbaseinfo);
}
initReadConfig();
#if QT_NO_DEBUG
QString str = QString("ftp://%1/CIDW/qtconfig/%2").arg(IP).arg("ChannelSettings.json");
g_FtpClient->SetServerInfo(str);
g_FtpClient->SetUserInfo("root","@#cidw!@123456");
g_FtpClient->UpLoadFile(name,"ChannelSettings.json");
#endif
}
void CChannelList::slotRowDoubleClicked(const QModelIndex &index)
{
if (index.isValid())
{
m_nCurRow = ui->tableView->currentIndex().row();//选中行
QAbstractItemModel *modessl = ui->tableView->model();
QModelIndex indextemp = modessl->index(m_nCurRow,1);//遍历第一行的所有列
QModelIndex indexCheck = modessl->index(m_nCurRow,0);
QVariant datatemp = modessl->data(indextemp);
qDebug() << datatemp << m_nCurRow << endl;
qDebug() << g_channelSetting[m_nCurRow].channelId << endl;
qDebug() << g_channelSetting[m_nCurRow].boardType << endl;
bool check = model->data(indexCheck, Qt::UserRole).toBool();
qDebug() << check << endl;
for (int i = 0; i < g_channelSetting.size(); i++)
{
if(g_channelSetting[m_nCurRow].boardType.toInt() == 1 && g_channelSetting[i].channelId == g_channelSetting[m_nCurRow].channelId){//开入开出板卡
SlowSpeeddialog->channelSetting = g_channelSetting[i];
SlowSpeeddialog->setWindowModality(Qt::ApplicationModal);
SlowSpeeddialog->displayChannelSetting();
SlowSpeeddialog->show();
}
else if(g_channelSetting[m_nCurRow].boardType.toInt() > 1 && g_channelSetting[m_nCurRow].boardType.toInt() < 5 && g_channelSetting[i].channelId == g_channelSetting[m_nCurRow].channelId){//高速板卡
qDebug() << g_channelSetting[m_nCurRow].boardType << g_channelSetting[i].channelId << g_channelSetting[m_nCurRow].channelId<< endl;
ChannelSettingdialog->channelSetting = g_channelSetting[i];
ChannelSettingdialog->setWindowModality(Qt::ApplicationModal);
ChannelSettingdialog->displayChannelSetting();
ChannelSettingdialog->show();
}else if((g_channelSetting[m_nCurRow].boardType.toInt() == 5) && g_channelSetting[i].channelId == g_channelSetting[m_nCurRow].channelId){//低速板卡
SlowSpeeddialog->channelSetting = g_channelSetting[i];
SlowSpeeddialog->setWindowModality(Qt::ApplicationModal);
SlowSpeeddialog->displayChannelSetting();
SlowSpeeddialog->show();
}else if(g_channelSetting[m_nCurRow].boardType.toInt() == 6 && g_channelSetting[i].channelId == g_channelSetting[m_nCurRow].channelId){//开入开出板卡
QString strTips = "输入开入开出板卡通道名称";
bool ok;
QString channleName = QInputDialog::getText(this, tr("输入名称对话框"), strTips, QLineEdit::Normal,"",&ok);
if(!ok) return;
qDebug() << channleName << endl;
QString strUpdateSql = QString(" set channelName = '%1' where sensorModuleNo = %2 and sensorNo = %3 ")\
.arg(channleName).arg(g_channelSetting[m_nCurRow].sensorModuleNo).arg(g_channelSetting[m_nCurRow].sensorNo);
QString tableName = "t_ChannelSetting ";
g_SqliteDB->UpdateDataSql(tableName,strUpdateSql);
g_channelSetting = g_SqliteDB->GetDataMultiLine("t_ChannelSetting");
putJson();
}
}
}
}
void CChannelList::setColumnCheckable(int column, bool checkable)
{
m_pHeaderView->setColumnCheckable(column, checkable);
for(int row = 0; row != m_pModel->rowCount(); ++row)
{
m_pModel->item(row, column)->setCheckable(checkable);
}
}
void CChannelList::on_columnSectionClicked(int column, bool checked)
{
//遍历行
for(int row = 0; row != m_pModel->rowCount(); ++row)
{
//获取指定列当前行的item,根据checked设置选中状态
if(checked)
{
m_pModel->item(row, column)->setCheckState(Qt::Checked);
}
else
{
m_pModel->item(row, column)->setCheckState(Qt::Unchecked);
}
}
}
void CChannelList::on_pushButton_open_clicked()
{
for (int i = 0; i < model->rowCount(); i++) {
QModelIndex indexCheck = model->index(i,0);
bool check = model->data(indexCheck, Qt::UserRole).toBool();
if(check){
// QLabel *pLabel = new QLabel(this);
// pLabel->setText("启用");
// QPalette palette;
// palette.setColor(QPalette::Background, QColor(Qt::green));
// //palette.setColor(QPalette::WindowText,Qt::white);
// //pLabel->setAutoFillBackground(true);
// pLabel->setPalette(palette);
// ui->tableView->setIndexWidget(model->index(i,4),pLabel);
//model->setData(model->index(i,4),QBrush(Qt::red), Qt::BackgroundRole);
model->setItem(i,4,new QStandardItem("启用"));
QString strChannelID = model->data(model->index(i,38)).toString();
QString strUpdateSql = QString(" set isEnable = %1 , isWork = %2 where channelId = '%3' ").arg(1).arg(1).arg(g_channelSetting[i].channelId);
QString tableName = "t_ChannelSetting ";
g_SqliteDB->UpdateDataSql(tableName,strUpdateSql);
g_channelSetting = g_SqliteDB->GetDataMultiLine("t_ChannelSetting");
}
}
putJson();
}
void CChannelList::on_pushButton_close_clicked()
{
for (int i = 0; i < model->rowCount(); i++) {
QModelIndex indexCheck = model->index(i,0);
bool check = model->data(indexCheck, Qt::UserRole).toBool();
if(check){
model->setItem(i,4,new QStandardItem("关闭"));
QString strChannelID = model->data(model->index(i,39)).toString();
QString strUpdateSql = QString(" set isEnable = %1, isWork = %2 where channelId = '%3' ").arg(0).arg(0).arg(g_channelSetting[i].channelId);
QString tableName = "t_ChannelSetting ";
g_SqliteDB->UpdateDataSql(tableName,strUpdateSql);
g_channelSetting = g_SqliteDB->GetDataMultiLine("t_ChannelSetting");
}
}
putJson();
}
void CChannelList::on_pushButton_refresh_clicked()
{
model->removeRows(0, model->rowCount());
g_channelSetting = g_SqliteDB->GetDataMultiLine("t_ChannelSetting");
initReadConfig();
}
void CChannelList::slotNetMgr(QString sAddr, const QVariant &msg)
{
QJsonObject objec = msg.value<QJsonObject>();
if(objec.contains("cmd"))
{
QJsonValue arrays_value = objec.take("cmd");
//qDebug()<<"cmd ="<<arrays_value.toString();
if(arrays_value.toString() == "08"){
bool Status = objec.take("success").toBool();
QString strMessage = objec.take("message").toString();
if(Status){
QMessageBox::information(NULL, QStringLiteral("提示"), strMessage);
}
}
}
}
void CChannelList::on_pushButton_restart_clicked()
{
QMessageBox::StandardButton reply;
reply = QMessageBox::question(NULL, "提示", "确认后将重启服务",
QMessageBox::Yes | QMessageBox::No, QMessageBox::No);
if (reply == QMessageBox::Yes)
{
connect(g_NetMgr,SIGNAL(sigNetMgr(QString, const QVariant&)), this, SLOT(slotNetMgr(QString,const QVariant&)));
QJsonObject allObj,cmdBody;
allObj.insert("cmd", "08");
allObj["cmdBody"] = cmdBody;
QNetworkRequest req;
QString sUrl = QString("http://%1/cgi-bin/General.cgi/").arg(IP);
req.setUrl(sUrl);
g_NetMgr->PostJson(req,allObj);
}
}