3500/ChannelList.cpp

624 lines
33 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>
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){//开入开出板卡
}
}
}
}
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();
}