[ref]同步711

This commit is contained in:
shi_jq 2025-03-13 14:24:11 +08:00
parent 17f18f4135
commit 56b9649be6
27 changed files with 5614 additions and 150 deletions

View File

@ -95,6 +95,8 @@ void CDebugTool::addRealData()
m_pRealDataWatch->initWatch();
ui->textEdit_status->setToolTip("具体状态");
m_pRealDataSelect->setRealDataWatch(m_pRealDataWatch);
}
void CDebugTool::addRealAlarm()
{
@ -205,6 +207,7 @@ void CDebugTool::connectSignalSlot()
m_pRealDatabaseShow,SLOT(slot_showOrHindColumn(int,int)));
connect(m_pRealDataWatch,SIGNAL(signal_selectTextEdit(QString ,QString , int )),
this,SLOT(slot_selectTextEdit(QString,QString, int )));
connect(m_pRealDataWatch,SIGNAL(signal_paging()),m_pRealDataSelect,SLOT(slot_paging()));
connect(m_pRealDatabaseShow,SIGNAL(signal_selectTextEdit(QString)),
this,SLOT(slot_selectTextEdit(QString)));
}

View File

@ -8,7 +8,19 @@
#include "public/pub_sysinfo_api/SysInfoApi.h"
#include "perm_mng_api/PermMngApi.h"
#include "CEventMsgManage.h"
//< 屏蔽xml_parser编译告警
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-copy"
#endif
#include "boost/property_tree/xml_parser.hpp"
#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif
#include "boost/typeof/typeof.hpp"
#include "boost/filesystem.hpp"
#include "Common.h"

View File

@ -24,7 +24,7 @@ CEventFormShow::~CEventFormShow()
void CEventFormShow::initRealModel()
{
CEventDataCollect::setSystemResources(m_pSystemResources);
QSettings columFlags("KBD_HMI", "eventReal config");
QSettings columFlags("IOT_HMI", "eventReal config");
if(!columFlags.contains(QString("eventReal/colum_0")))
{
columFlags.setValue(QString("eventReal/colum_0"), false); //< 时间
@ -49,7 +49,7 @@ void CEventFormShow::initRealModel()
}
ui->eventView->setModel(m_pRealTimeModel);
m_pRealDelegate->setEventModel(m_pRealTimeModel);
QSettings columFlags1("KBD_HMI", "eventReal config");
QSettings columFlags1("IOT_HMI", "eventReal config");
for(int nColumnIndex(0); nColumnIndex < m_pRealTimeModel->columnCount() - 1; nColumnIndex++)
{
bool visible = columFlags1.value(QString("eventReal/colum_%1").arg(nColumnIndex)).toBool();

View File

@ -252,8 +252,7 @@ void CRealDataControl::exeSetAiLimit()
aiLimitQueue.fValue = value;
strAiLimitSet.stHead = head;
strAiLimitSet.vecAiLimitQueue.push_back(aiLimitQueue);
CAiLimitSet objAiLimitSet;
std::string jsonObj = objAiLimitSet.generate(strAiLimitSet);
std::string jsonObj = CAiLimitSet::generate(strAiLimitSet);
int msgType = ui->comboBox_cmdType->currentData().toInt();
iot_net::CMbMessage msg = iot_net::CMbMessage(jsonObj,m_stAppInfo.nId,CH_HMI_TO_OPT_OPTCMD_DOWN,msgType);
@ -287,9 +286,9 @@ void CRealDataControl::exeInhibitRef()
optTagQueue.nLocationId = m_nDestLocationId;
optTagQueue.nSubSystem = m_nDestSubSystemId;
optTagSet.vecTagQueue.push_back(optTagQueue);
COptTagSet objOptTagSet;
int msgType = ui->comboBox_cmdType->currentData().toInt();
std::string jsonObj = objOptTagSet.generate(optTagSet);
std::string jsonObj = COptTagSet::generate(optTagSet);
iot_net::CMbMessage msg = iot_net::CMbMessage(jsonObj,m_stAppInfo.nId,CH_HMI_TO_OPT_OPTCMD_DOWN,msgType);
if(!m_pSendComm->sendMsgToDomain(msg,m_pSystemResources->getDomainIdByLocationId(m_nDestLocationId)))
{
@ -322,9 +321,9 @@ void CRealDataControl::exeInhibitAlarm()
optTagQueue.nLocationId = m_nDestLocationId;
optTagQueue.nSubSystem = m_nDestSubSystemId;
optTagSet.vecTagQueue.push_back(optTagQueue);
COptTagSet objOptTagSet;
int msgType = ui->comboBox_cmdType->currentData().toInt();
std::string jsonObj = objOptTagSet.generate(optTagSet);
std::string jsonObj = COptTagSet::generate(optTagSet);
iot_net::CMbMessage msg = iot_net::CMbMessage(jsonObj,m_stAppInfo.nId,CH_HMI_TO_OPT_OPTCMD_DOWN,msgType);
if(!m_pSendComm->sendMsgToDomain(msg,m_pSystemResources->getDomainIdByLocationId(m_nDestLocationId)))
{
@ -356,9 +355,9 @@ void CRealDataControl::exeInhibitCtrl()
optTagQueue.nLocationId = m_nDestLocationId;
optTagQueue.nSubSystem = m_nDestSubSystemId;
optTagSet.vecTagQueue.push_back(optTagQueue);
COptTagSet objOptTagSet;
int msgType = ui->comboBox_cmdType->currentData().toInt();
std::string jsonObj = objOptTagSet.generate(optTagSet);
std::string jsonObj = COptTagSet::generate(optTagSet);
iot_net::CMbMessage msg = iot_net::CMbMessage(jsonObj,m_stAppInfo.nId,CH_HMI_TO_OPT_OPTCMD_DOWN,msgType);
if(!m_pSendComm->sendMsgToDomain(msg,m_pSystemResources->getDomainIdByLocationId(m_nDestLocationId)))
{
@ -397,9 +396,9 @@ void CRealDataControl::exeSetValue()
optTagQueue.nLocationId = m_nDestLocationId;
optTagQueue.nSubSystem = m_nDestSubSystemId;
optTagSet.vecTagQueue.push_back(optTagQueue);
COptTagSet objOptTagSet;
int msgType = ui->comboBox_cmdType->currentData().toInt();
std::string jsonObj = objOptTagSet.generate(optTagSet);
std::string jsonObj = COptTagSet::generate(optTagSet);
iot_net::CMbMessage msg = iot_net::CMbMessage(jsonObj,m_stAppInfo.nId,CH_HMI_TO_OPT_OPTCMD_DOWN,msgType);
if(!m_pSendComm->sendMsgToDomain(msg,m_pSystemResources->getDomainIdByLocationId(m_nDestLocationId)))
{
@ -436,9 +435,7 @@ void CRealDataControl::exeCtrlRequest()
optCtrlRequest.vecOptCtrlQueue.push_back(optCtrlReqQueue);
int msgType = ui->comboBox_cmdType->currentData().toInt();
COptCtrlRequest objOptCtrlRequest;
std::string objJson = objOptCtrlRequest.generate(optCtrlRequest);
std::string objJson = COptCtrlRequest::generate(optCtrlRequest);
iot_net::CMbMessage msg = iot_net::CMbMessage(objJson,m_stAppInfo.nId,CH_HMI_TO_OPT_OPTCMD_DOWN,msgType);
if(!m_pSendComm->sendMsgToDomain(msg,m_pSystemResources->getDomainIdByLocationId(m_nDestLocationId)))
{
@ -468,6 +465,13 @@ void CRealDataControl::exeCtrlSelect()
QString columnName = "value";
optCtrlReqQueue.strKeyIdTag = (tableName+"."+strTagName+"."+columnName).toStdString();
optCtrlReqQueue.nCtrlType = 0;
if("ANALOG" == m_strTableName)
{
optCtrlReqQueue.dTargetValue = ui->lineEdit_ctrlValue->text().toFloat();
}
else
{
if(ui->comboBox_ctrlValue->count())
{
optCtrlReqQueue.dTargetValue = ui->comboBox_ctrlValue->currentData().toInt();
@ -476,6 +480,8 @@ void CRealDataControl::exeCtrlSelect()
{
optCtrlReqQueue.dTargetValue = 0.0;
}
}
optCtrlReqQueue.nCtrlActType = 0;
optCtrlReqQueue.strCtrlActName = "";
optCtrlReqQueue.strOffsetNo = "";
@ -486,8 +492,7 @@ void CRealDataControl::exeCtrlSelect()
int msgType = ui->comboBox_cmdType->currentData().toInt();
COptCtrlRequest objOptCtrlRequest;
std::string objJson = objOptCtrlRequest.generate(optCtrlRequest);
std::string objJson = COptCtrlRequest::generate(optCtrlRequest);
iot_net::CMbMessage msg = iot_net::CMbMessage(objJson,m_stAppInfo.nId,CH_HMI_TO_OPT_OPTCMD_DOWN,msgType);
if(!m_pSendComm->sendMsgToDomain(msg,m_pSystemResources->getDomainIdByLocationId(m_nDestLocationId)))
{
@ -515,6 +520,13 @@ void CRealDataControl::exeCtrlExecute()
QString columnName = "value";
optCtrlReqQueue.strKeyIdTag = (tableName+"."+strTagName+"."+columnName).toStdString();
optCtrlReqQueue.nCtrlType = 0;
if("ANALOG" == m_strTableName)
{
optCtrlReqQueue.dTargetValue = ui->lineEdit_ctrlValue->text().toFloat();
}
else
{
if(ui->comboBox_ctrlValue->count())
{
optCtrlReqQueue.dTargetValue = ui->comboBox_ctrlValue->currentData().toInt();
@ -523,6 +535,7 @@ void CRealDataControl::exeCtrlExecute()
{
optCtrlReqQueue.dTargetValue = 0.0;
}
}
optCtrlReqQueue.nCtrlActType = 0;
optCtrlReqQueue.strCtrlActName = "";
optCtrlReqQueue.strOffsetNo = "";
@ -533,8 +546,7 @@ void CRealDataControl::exeCtrlExecute()
int msgType = ui->comboBox_cmdType->currentData().toInt();
COptCtrlRequest objOptCtrlRequest;
std::string objJson = objOptCtrlRequest.generate(optCtrlRequest);
std::string objJson = COptCtrlRequest::generate(optCtrlRequest);
iot_net::CMbMessage msg = iot_net::CMbMessage(objJson,m_stAppInfo.nId,CH_HMI_TO_OPT_OPTCMD_DOWN,msgType);
if(!m_pSendComm->sendMsgToDomain(msg,m_pSystemResources->getDomainIdByLocationId(m_nDestLocationId)))
{
@ -561,6 +573,13 @@ void CRealDataControl::exeCtrlCancel()
QString columnName = "value";
optCtrlReqQueue.strKeyIdTag = (tableName+"."+strTagName+"."+columnName).toStdString();
optCtrlReqQueue.nCtrlType = 0;
if("ANALOG" == m_strTableName)
{
optCtrlReqQueue.dTargetValue = ui->lineEdit_ctrlValue->text().toFloat();
}
else
{
if(ui->comboBox_ctrlValue->count())
{
optCtrlReqQueue.dTargetValue = ui->comboBox_ctrlValue->currentData().toInt();
@ -569,6 +588,8 @@ void CRealDataControl::exeCtrlCancel()
{
optCtrlReqQueue.dTargetValue = 0.0;
}
}
optCtrlReqQueue.nCtrlActType = 0;
optCtrlReqQueue.strCtrlActName = "";
optCtrlReqQueue.strOffsetNo = "";
@ -578,8 +599,7 @@ void CRealDataControl::exeCtrlCancel()
optCtrlRequest.vecOptCtrlQueue.push_back(optCtrlReqQueue);
int msgType = ui->comboBox_cmdType->currentData().toInt();
COptCtrlRequest objOptCtrlRequest;
std::string objJson = objOptCtrlRequest.generate(optCtrlRequest);
std::string objJson = COptCtrlRequest::generate(optCtrlRequest);
iot_net::CMbMessage msg = iot_net::CMbMessage(objJson,m_stAppInfo.nId,CH_HMI_TO_OPT_OPTCMD_DOWN,msgType);
if(!m_pSendComm->sendMsgToDomain(msg,m_pSystemResources->getDomainIdByLocationId(m_nDestLocationId)))
{
@ -617,8 +637,7 @@ void CRealDataControl::exeCtrlClose()
optCtrlRequest.vecOptCtrlQueue.push_back(optCtrlReqQueue);
int msgType = ui->comboBox_cmdType->currentData().toInt();
COptCtrlRequest objOptCtrlRequest;
std::string objJson = objOptCtrlRequest.generate(optCtrlRequest);
std::string objJson = COptCtrlRequest::generate(optCtrlRequest);
iot_net::CMbMessage msg = iot_net::CMbMessage(objJson,m_stAppInfo.nId,CH_HMI_TO_OPT_OPTCMD_DOWN,msgType);
if(!m_pSendComm->sendMsgToDomain(msg,m_pSystemResources->getDomainIdByLocationId(m_nDestLocationId)))
{
@ -825,9 +844,8 @@ void CRealDataControl::OptPointQuery()
void CRealDataControl::ctrlRequestReply(const std::string &strMsg)
{
int nRetCode = -1;
COptCtrlReply objOptCtrlReply;
SOptCtrlReply stOptCtrlReply;
nRetCode = objOptCtrlReply.parse(strMsg,stOptCtrlReply);
nRetCode = COptCtrlReply::parse(strMsg,stOptCtrlReply);
if(nRetCode <= 0)
{
ui->textBrowser_exeResult->setText(tr("解析返回结果出错"));
@ -898,13 +916,13 @@ void CRealDataControl::setTargetValue(bool &bExist)
if(ctrlActName != "")
{
bExist = true;
strSql = QString("SELECT CTRL_ACT_NAME,CTRL_GRP_NO FROM OPT_CTRL_ACT_DEFINE WHERE CTRL_GRP_NAME = ") + "'" + ctrlActName + "'";
strSql = QString("SELECT CTRL_ACT_NAME,CTRL_GRP_NO,TARGET_VALUE FROM OPT_CTRL_ACT_DEFINE WHERE CTRL_GRP_NAME = ") + "'" + ctrlActName + "'";
m_pDbInterface->execute(strSql,queryRet);
if(queryRet.isActive())
{
while(queryRet.next())
{
ui->comboBox_ctrlValue->addItem(ctrlActName+"_"+queryRet.value("CTRL_ACT_NAME").toString(),queryRet.value("CTRL_GRP_NO").toInt());
ui->comboBox_ctrlValue->addItem(ctrlActName+"_"+queryRet.value("CTRL_ACT_NAME").toString(),queryRet.value("TARGET_VALUE").toInt());
}
}
}
@ -1120,8 +1138,16 @@ void CRealDataControl::slot_updateOtherArgs(int index)
ui->textBrowser_exeStatus->clear();
ui->comboBox_otherArgs->setEnabled(true);
ui->lineEdit_ctrlValue->setEnabled(true);
if("ANALOG" == m_strTableName)
{
ui->lineEdit_ctrlValue->show();
ui->comboBox_ctrlValue->hide();
}
else
{
ui->lineEdit_ctrlValue->hide();
ui->comboBox_ctrlValue->show();
}
ui->comboBox_otherArgs->addItem(tr("占用设备"),true);
ui->comboBox_otherArgs->addItem(tr("不占用设备"),false);
ui->pushButton_exe->setEnabled(true);
@ -1135,8 +1161,17 @@ void CRealDataControl::slot_updateOtherArgs(int index)
ui->textBrowser_exeStatus->clear();
ui->comboBox_otherArgs->setEnabled(true);
ui->lineEdit_ctrlValue->setEnabled(true);
if("ANALOG" == m_strTableName)
{
ui->lineEdit_ctrlValue->show();
ui->comboBox_ctrlValue->hide();
}
else
{
ui->lineEdit_ctrlValue->hide();
ui->comboBox_ctrlValue->show();
}
ui->comboBox_otherArgs->addItem(tr("占用设备"),true);
ui->comboBox_otherArgs->addItem(tr("不占用设备"),false);
ui->pushButton_exe->setEnabled(true);
@ -1150,8 +1185,16 @@ void CRealDataControl::slot_updateOtherArgs(int index)
ui->textBrowser_exeStatus->clear();
ui->comboBox_otherArgs->setEnabled(true);
ui->lineEdit_ctrlValue->setEnabled(true);
if("ANALOG" == m_strTableName)
{
ui->lineEdit_ctrlValue->show();
ui->comboBox_ctrlValue->hide();
}
else
{
ui->lineEdit_ctrlValue->hide();
ui->comboBox_ctrlValue->show();
}
ui->comboBox_otherArgs->addItem(tr("占用设备"),true);
ui->comboBox_otherArgs->addItem(tr("不占用设备"),false);
ui->pushButton_exe->setEnabled(true);

View File

@ -31,6 +31,11 @@ void CRealDataSelect::setSystemResources(CSystemResources *pSystemResources)
m_pSystemResources = pSystemResources;
}
void CRealDataSelect::setRealDataWatch(CRealDataWatch *pWatch)
{
m_pRealDataWatch = pWatch;
}
CRealDataSelect::~CRealDataSelect()
{
@ -362,9 +367,26 @@ void CRealDataSelect::solt_showPoint(QTreeWidgetItem* _item, int treeIndex)
tableNameList.append(constTableName);
pointType.append(tr("常量"));
//分页信息
QString keyword;
int nCurPage = 0;
int nPageSize = 0;
m_pRealDataWatch->getFilterAndPageInfo(keyword,nCurPage,nPageSize);
QString strSql1 = "SELECT DESCRIPTION,TAG_NAME FROM ";
QString strSql2 = QString(" WHERE DEVICE = ")+QString("'")+ devTage+"'";
if(nCurPage != 0 && nPageSize != 0)
{
if(!keyword.isEmpty())
{
strSql2 += QString(" and DESCRIPTION LIKE '%%1%'").arg(keyword);
}
strSql2 += QString(" LIMIT %1,%2").arg((nCurPage -1)*nPageSize).arg(nPageSize);
}
uint rowCount = 0;
int j = 0;
QTableWidgetItem *item;
@ -696,6 +718,11 @@ void CRealDataSelect::slot_selectTreeDevGroup(int)
}
void CRealDataSelect::slot_paging()
{
solt_showPoint(ui->treeWidget_devGroup->currentItem(),ui->treeWidget_devGroup->currentColumn());
}
void CRealDataSelect::slot_addAllCurrentPoint(QTreeWidgetItem *, int)
{
int rowCount = ui->tableWidget_MesurePoint->rowCount();

View File

@ -10,6 +10,7 @@
#include "db_api_ex/CDbApi.h"
#include "CSystemResources.h"
#include<QTreeWidget>
#include "CRealDataWatch.h"
namespace Ui {
@ -23,7 +24,9 @@ class CRealDataSelect : public QWidget
public:
explicit CRealDataSelect(QWidget *parent = 0);
void setSystemResources(CSystemResources *);
void setRealDataWatch(CRealDataWatch *pWatch);
void initSelect();
~CRealDataSelect();
signals:
@ -41,17 +44,14 @@ private slots:
//void slot_selectTreeDevGroup(int);
void slot_addAllCurrentPoint(QTreeWidgetItem*,int);
void slot_selectTreeDevGroup(int);
void slot_paging();
private:
Ui::CRealDataSelect *ui;
iot_dbms::CDbApi *m_pObjDbInterface;
CSystemResources *m_pSystemResources;
// bool m_isFristQuery;
CRealDataWatch *m_pRealDataWatch;
private:
void initView();

View File

@ -29,6 +29,11 @@ CRealDataWatch::CRealDataWatch(QWidget *parent) :
pSearchLayout->addWidget(m_pSearchButton);
ui->lineEdit->setLayout(pSearchLayout);
ui->checkBox_append->setChecked(false);
ui->checkBox_paging->setChecked(false); //todo:分页实现不完善,临时实现
ui->lineEdit_pageNum->setAlignment(Qt::AlignHCenter);
m_nCurPageNum = 0;
m_nPageSize = 0;
}
CRealDataWatch::~CRealDataWatch()
@ -275,7 +280,7 @@ void CRealDataWatch::slot_addPoint(QString locationName, uint locationId,
m_pDpcdaForApp->subscribe(tableName.toLower().toStdString(),
pointTagName.toStdString(),
QString("value").toStdString());
m_pDpcdaForApp->subscribe(tableName.toStdString(),
m_pDpcdaForApp->subscribe(tableName.toLower().toStdString(),
pointTagName.toStdString(),
QString("status").toStdString());
@ -550,6 +555,8 @@ void CRealDataWatch::slot_updateMi(QString tagName, int value, uint status)
void CRealDataWatch::slot_pointFilter()
{
emit signal_paging();
filter();
}
@ -736,3 +743,53 @@ void CRealDataWatch::slot_selectTextEdit(QString allStatus,QString m_allName, in
{
emit signal_selectTextEdit(allStatus,m_allName,m_value);
}
void CRealDataWatch::getFilterAndPageInfo(QString &keyword,int &nCurPage, int &nPageSize)
{
keyword = ui->lineEdit->text().trimmed();
nCurPage = m_nCurPageNum;
nPageSize = m_nPageSize;
}
void CRealDataWatch::on_checkBox_paging_stateChanged(int arg1)
{
if(arg1 == 2) //选中
{
m_nCurPageNum = 1;
m_nPageSize = 100;
ui->lineEdit_pageNum->setText(QString::number(m_nCurPageNum));
}
else if(arg1 == 0)
{
m_nCurPageNum = 0;
m_nPageSize = 0;
}
}
void CRealDataWatch::on_btn_pre_clicked()
{
m_nCurPageNum = m_nCurPageNum > 1 ? (m_nCurPageNum-1) : 1;
ui->lineEdit_pageNum->setText(QString::number(m_nCurPageNum));
emit signal_paging();
}
void CRealDataWatch::on_btn_next_clicked()
{
++m_nCurPageNum;
ui->lineEdit_pageNum->setText(QString::number(m_nCurPageNum));
emit signal_paging();
}
void CRealDataWatch::on_btn_status_search_clicked()
{
if(m_searchDialog != NULL)
m_searchDialog->show();
else
{
m_searchDialog = new CStatusDialog(m_pSystemResources,this);
m_searchDialog->show();
}
}

View File

@ -37,14 +37,25 @@ private slots:
void slot_pointsitemClicked(QTableWidgetItem *item);
void slot_selectTextEdit(QString allStatus,QString m_allName, int m_value);
void on_checkBox_paging_stateChanged(int arg1);
void on_btn_pre_clicked();
void on_btn_next_clicked();
void on_btn_status_search_clicked();
public:
explicit CRealDataWatch(QWidget *parent = 0);
~CRealDataWatch();
void initWatch();
void setSystemResources(CSystemResources *);
void deletePoint(int row);
void getFilterAndPageInfo(QString &keyword,int &nCurPage,int &nPageSize);
signals:
void signal_selectTextEdit(QString allStatus,QString m_allName, int m_value);
void signal_paging();
protected:
void contextMenuEvent(QContextMenuEvent *event);
void keyPressEvent(QKeyEvent *event);
@ -59,6 +70,8 @@ private:
QPushButton *m_pSearchButton;
CStatusDialog* m_searchDialog;
int m_nCurPageNum;//2个值同时为0时不启用分页
int m_nPageSize;
private:
void initVariable();

View File

@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>830</width>
<width>858</width>
<height>452</height>
</rect>
</property>
@ -79,6 +79,13 @@
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="btn_status_search">
<property name="text">
<string>状态查询</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
@ -150,6 +157,50 @@
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QCheckBox" name="checkBox_paging">
<property name="text">
<string>启用分页</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btn_pre">
<property name="text">
<string>上一页</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_pageNum">
<property name="maximumSize">
<size>
<width>30</width>
<height>16777215</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btn_next">
<property name="text">
<string>下一页</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_6">
<property name="orientation">

View File

@ -313,7 +313,7 @@ int CTcpClient::RxData(unsigned char *buff)
printf("TcpClient.cpp 5 Rx Select len<0, socket not exist! len=%d", len);
TcpClose();
}
if (FD_ISSET(m_Socket, &fdSet))
if (INVALID_SOCKET != m_Socket && FD_ISSET(m_Socket, &fdSet))
{
#ifdef WIN32
rtn = ::recv(m_Socket , (char *)buff , 1024 , 0);

View File

@ -545,7 +545,7 @@ typedef struct _SFesAcc {
char PointTagName[CN_FesMaxTagSize];
char PointDesc[CN_FesMaxDescSize];//2020-01-16 thxiao 增加点描述
float Base; //基值
float Coeff; //系数;
double Coeff; //系数;
int Param1; //规约参数,每种协议各不相同。 如modbus FunNo
int Param2; //规约参数,每种协议各不相同。 如modbus DataAddress
int Param3; //规约参数,每种协议各不相同。 如modbus InfoNo

View File

@ -400,7 +400,7 @@ typedef struct{
//整形量数值响应
typedef struct {
uint32 PointNo;
long Value;
double Value;
uint32 Status;
uint64 time; //1970-01-01 00:00 至今的毫秒数
}SFesSimAccData;
@ -607,9 +607,9 @@ typedef struct{
short Period; //变化周期,单位:秒
long SetValue; //设置值
uint32 Status; //设值点状态
int MinValue; //设置值最小值
int MaxValue; //设置值最大值
int StepValue; //设置值步长
float MinValue; //设置值最小值
float MaxValue; //设置值最大值
float StepValue; //设置值步长
int RtuNo; // RTU号 -1 所有RTU 其他对应RTU号
int PointNo; //点号, -1RTU所有点 其他:对应点号
}SFesSimAccStartReq;

View File

@ -146,7 +146,7 @@ void SingleApplicationPrivate::initializeMemoryBlock()
void SingleApplicationPrivate::startPrimary()
{
Q_Q(SingleApplication);
q;
//q;
// Successful creation means that no main process exists
// So we start a QLocalServer to listen for connections
QLocalServer::removeServer( blockServerName );

View File

@ -15,7 +15,7 @@
#include <QDir>
#include <QDirIterator>
#include <QTextEdit>
#include<QStyleFactory>
#include "pub_logger_api/logger.h"
#define FESSIM_K_LOG_FILE "FesSimLog.txt"
#define FESSIM_K_MAX_SHOW_LINES 50000
@ -47,7 +47,7 @@ ChanMonDlg::ChanMonDlg(int windowId, QWidget *parent) :
ui->SelectDisp2->setChecked(m_SelectDisp[1]);
ui->SelectDisp3->setChecked(m_SelectDisp[2]);
ui->SelectDisp4->setChecked(m_SelectDisp[3]);
// ui->ChanNo->setStyle(QStyleFactory::create("Windows"));
ui->ChanNo->setView(new QListView());
for(i=0;i<CN_ChanMonAnalyzeNum;i++)
{
m_Pos[i]=0;
@ -59,34 +59,12 @@ ChanMonDlg::ChanMonDlg(int windowId, QWidget *parent) :
m_ChanNo=0;
m_RefreshLine = 0;
//<< 获取通道信息
//==============================================================================
ui->ChanNo->clear();
m_pdbApi = new iot_dbms::CDbApi(DB_CONN_MODEL_READ);
if(m_pdbApi->open())
{
QSqlQuery ret;
QString strSql = "SELECT CHAN_NO,DESCRIPTION FROM FES_CHANNEL_PARA ORDER BY CHAN_NO";
m_pdbApi->execute(strSql,ret);
if(ret.isActive())
{
while(ret.next())
{
int nChanNo = ret.value("CHAN_NO").toInt();
QString sChanDesc = ret.value("DESCRIPTION").toString();
ui->ChanNo->addItem(QString::number(nChanNo) +":"+ sChanDesc);
}
}
}
else
{
for(i=0;i<2048;i++)
{
ui->ChanNo->addItem(QString::number(i)+":通道"+QString::number(i));
}
qDebug() << "数据库接口打开失败" <<endl;
ui->ChanNo->addItem(QString::number(i));
}
//m_ListModel = new QStringListModel(this);
//m_ListModel->setStringList(m_DataList);
//ui->DispListView->setModel(m_ListModel);
@ -128,7 +106,6 @@ ChanMonDlg::~ChanMonDlg()
{
//if(m_RefreshTimer != NULL)
// delete m_RefreshTimer;
m_pdbApi->close();
if (m_openFlag)
m_file.close();
@ -234,11 +211,7 @@ void ChanMonDlg::OnRefresh()
//if(!this->isActiveWindow())//只有激活的窗口才可发送数据,避免发送数据冲突。
// return;
QString strChannel = ui->ChanNo->currentText();
QString str = strChannel.split(":").at(0);
//QString str=ui->ChanNo->currentText();
QString str=ui->ChanNo->currentText();
bool ok;
m_ChanNo = str.toInt(&ok,10);
if(m_RefreshFlag == 0)

View File

@ -11,10 +11,11 @@
#include <QFile>
#include "FesSimProtocol.h"
#include "ComProtocolThread.h"
#include "CSystemResources.h"
const int CN_ChanMonAnalyzeNum = 4;
namespace Ui {
class ChanMonDlg;
}
@ -62,7 +63,6 @@ signals:
private:
Ui::ChanMonDlg *ui;
// QTimer *m_RefreshTimer;
iot_dbms::CDbApi *m_pdbApi;
int m_ConnectFlag; //连接成功标志
int m_RefreshFlag; //刷新标志 1正再刷新 0停止刷新
bool m_DispRecv;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -8,7 +8,7 @@ QT += core gui sql xml printsupport
QT += network
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = debug_tool
TARGET = debug_tool_v1
TEMPLATE = app
# The following define makes your compiler emit warnings if you use
@ -245,3 +245,5 @@ RESOURCES += \
contains(DEFINES, OS_WINDOWS) {
RC_ICONS = debug_tool.ico
}
TRANSLATIONS = $$PWD/en.ts

File diff suppressed because it is too large Load Diff

View File

@ -119,6 +119,8 @@ void FwAccMonDlg::OnRTURefresh()
}
//stop other windows data refresh
m_CurrentRtuRow = -1;
changeRefreshBtnToStop();
m_CmdCode = CN_SFesSimFwRTUInfoReq;
data[0] = m_CmdCode;
@ -666,10 +668,11 @@ void FwAccMonDlg::OnRecvPiDataResp(int CmdCode,QByteArray Data,int DataLen)
return;
int readx,count;
float fvalue;
double dvalue;
unsigned char* pTemp;
count = 0;
readx = 16;
pTemp = (unsigned char*)&fvalue;
pTemp = (unsigned char*)&dvalue;
while(readx<DataLen)
{
piData.PointNo = RecvData[readx++];
@ -677,14 +680,26 @@ void FwAccMonDlg::OnRecvPiDataResp(int CmdCode,QByteArray Data,int DataLen)
piData.PointNo |= RecvData[readx++]<<16;
piData.PointNo |= RecvData[readx++]<<24;
piData.Value = (long)RecvData[readx++];
piData.Value |= (long)RecvData[readx++]<<8;
piData.Value |= (long)RecvData[readx++]<<16;
piData.Value |= (long)RecvData[readx++]<<24;
piData.Value |= (long long)RecvData[readx++]<<32;
piData.Value |= (long long)RecvData[readx++]<<40;
piData.Value |= (long long)RecvData[readx++]<<48;
piData.Value |= (long long)RecvData[readx++]<<56;
// piData.Value = (long)RecvData[readx++];
// piData.Value |= (long)RecvData[readx++]<<8;
// piData.Value |= (long)RecvData[readx++]<<16;
// piData.Value |= (long)RecvData[readx++]<<24;
// piData.Value |= (long long)RecvData[readx++]<<32;
// piData.Value |= (long long)RecvData[readx++]<<40;
// piData.Value |= (long long)RecvData[readx++]<<48;
// piData.Value |= (long long)RecvData[readx++]<<56;
pTemp = (unsigned char*)&dvalue;
*pTemp = RecvData[readx++];
*(pTemp+1) = RecvData[readx++];
*(pTemp+2) = RecvData[readx++];
*(pTemp+3) = RecvData[readx++];
*(pTemp+4) = RecvData[readx++];
*(pTemp+5) = RecvData[readx++];
*(pTemp+6) = RecvData[readx++];
*(pTemp+7) = RecvData[readx++];
piData.Value = dvalue;
piData.Status = (uint32)RecvData[readx++];
piData.Status |= (uint32)RecvData[readx++]<<8;
piData.Status |= (uint32)RecvData[readx++]<<16;

View File

@ -119,6 +119,8 @@ void FwAiMonDlg::OnRTURefresh()
}
//stop other windows data refresh
m_CurrentRtuRow = -1;
changeRefreshBtnToStop();
m_CmdCode = CN_SFesSimFwRTUInfoReq;
data[0] = m_CmdCode;

View File

@ -121,6 +121,8 @@ void FwDDiMonDlg::OnRTURefresh()
}
//stop other windows data refresh
m_CurrentRtuRow = -1;
changeRefreshBtnToStop();
m_CmdCode = CN_SFesSimFwRTUInfoReq;
data[0] = m_CmdCode;

View File

@ -119,6 +119,8 @@ void FwDiMonDlg::OnRTURefresh()
}
//stop other windows data refresh
m_CurrentRtuRow = -1;
changeRefreshBtnToStop();
m_CmdCode = CN_SFesSimFwRTUInfoReq;
data[0] = m_CmdCode;

View File

@ -115,6 +115,8 @@ void FwMiMonDlg::OnRTURefresh()
}
//stop other windows data refresh
m_CurrentRtuRow = -1;
changeRefreshBtnToStop();
m_CmdCode = CN_SFesSimFwRTUInfoReq;
data[0] = m_CmdCode;

View File

@ -12,6 +12,7 @@
#include "SingleApplication.h"
#include "CDebugTool.h"
#include "CSystemResources.h"
#include "pub_utility_api/FileUtil.h"
int main(int argc, char *argv[])
{
@ -23,6 +24,17 @@ int main(int argc, char *argv[])
SingleApplication a(argc, argv);
a.setWindowIcon(QIcon(":/debug_tool.ico"));
iot_public::StartLogSystem("BASE", "debug_tool");
const std::string strLanguage = std::move( iot_public::getCurLanguage());
std::string strFilePath = std::move( iot_public::CFileUtil::getPathOfResFile( "debug_tool/translate/" + strLanguage + ".qm"));
if ( !strFilePath.empty())
{
auto *pTrans = new QTranslator;
pTrans->load( strFilePath.c_str());
QApplication::installTranslator( pTrans );
}
//暂时取消国际化
// std::string strRootPath ="";
// std::string strLanguage;

View File

@ -833,10 +833,11 @@ void PiMonDlg::OnRecvPiDataResp(int CmdCode,QByteArray Data,int DataLen)
}
int readx,count;
float fvalue;
double dvalue;
unsigned char* pTemp;
count = 0;
readx = 16;
pTemp = (unsigned char*)&fvalue;
pTemp = (unsigned char*)&dvalue;
while(readx<DataLen)
{
piData.PointNo = RecvData[readx++];
@ -844,14 +845,25 @@ void PiMonDlg::OnRecvPiDataResp(int CmdCode,QByteArray Data,int DataLen)
piData.PointNo |= RecvData[readx++]<<16;
piData.PointNo |= RecvData[readx++]<<24;
piData.Value = (long)RecvData[readx++];
piData.Value |= (long)RecvData[readx++]<<8;
piData.Value |= (long)RecvData[readx++]<<16;
piData.Value |= (long)RecvData[readx++]<<24;
piData.Value |= (long long)RecvData[readx++]<<32;
piData.Value |= (long long)RecvData[readx++]<<40;
piData.Value |= (long long)RecvData[readx++]<<48;
piData.Value |= (long long)RecvData[readx++]<<56;
// piData.Value = (long)RecvData[readx++];
// piData.Value |= (long)RecvData[readx++]<<8;
// piData.Value |= (long)RecvData[readx++]<<16;
// piData.Value |= (long)RecvData[readx++]<<24;
// piData.Value |= (long long)RecvData[readx++]<<32;
// piData.Value |= (long long)RecvData[readx++]<<40;
// piData.Value |= (long long)RecvData[readx++]<<48;
// piData.Value |= (long long)RecvData[readx++]<<56;
*pTemp = RecvData[readx++];
*(pTemp+1) = RecvData[readx++];
*(pTemp+2) = RecvData[readx++];
*(pTemp+3) = RecvData[readx++];
*(pTemp+4) = RecvData[readx++];
*(pTemp+5) = RecvData[readx++];
*(pTemp+6) = RecvData[readx++];
*(pTemp+7) = RecvData[readx++];
piData.Value = dvalue;
piData.Status = (uint32)RecvData[readx++];
piData.Status |= (uint32)RecvData[readx++]<<8;
piData.Status |= (uint32)RecvData[readx++]<<16;

View File

@ -231,7 +231,7 @@ void SimPiDlg::OnRecvRTUInfoResp(int CmdCode,QByteArray Data,int DataLen)
if(TotalNum!=m_RtuNum)
{
m_RtuNum = TotalNum;
if(m_pRtuInfo!=NULL)//清除原有的空间,新分配空间
if(m_pRtuInfo!=NULL)//清除原有的空间,新分配空间
{
m_pRtuInfo = (SAccMonRtu*)realloc(m_pRtuInfo,sizeof(SAccMonRtu)*m_RtuNum);
if(m_pRtuInfo!=NULL)
@ -409,7 +409,7 @@ void SimPiDlg::OnRecvPiParamResp(int CmdCode,QByteArray Data,int DataLen)
if(MaxPoints!=pRtu->MaxPoints)
{
pRtu->MaxPoints = MaxPoints;
if(pRtu->pAcc!=NULL)//清除原有的空间,新分配空间
if(pRtu->pAcc!=NULL)//清除原有的空间,新分配空间
{
pRtu->pAcc = (SFesSimAcc*)realloc(pRtu->pAcc,sizeof(SFesSimAcc)*pRtu->MaxPoints);
if(pRtu->pAcc!=NULL)
@ -821,10 +821,11 @@ void SimPiDlg::OnRecvPiDataResp(int CmdCode,QByteArray Data,int DataLen)
return;
int readx,count;
float fvalue;
double dvalue;
unsigned char* pTemp;
count = 0;
readx = 16;
pTemp = (unsigned char*)&fvalue;
pTemp = (unsigned char*)&dvalue;
while(readx<DataLen)
{
piData.PointNo = RecvData[readx++];
@ -832,14 +833,28 @@ void SimPiDlg::OnRecvPiDataResp(int CmdCode,QByteArray Data,int DataLen)
piData.PointNo |= RecvData[readx++]<<16;
piData.PointNo |= RecvData[readx++]<<24;
piData.Value = (long)RecvData[readx++];
piData.Value |= (long)RecvData[readx++]<<8;
piData.Value |= (long)RecvData[readx++]<<16;
piData.Value |= (long)RecvData[readx++]<<24;
piData.Value |= (long long)RecvData[readx++]<<32;
piData.Value |= (long long)RecvData[readx++]<<40;
piData.Value |= (long long)RecvData[readx++]<<48;
piData.Value |= (long long)RecvData[readx++]<<56;
// piData.Value = (long)RecvData[readx++];
// piData.Value |= (long)RecvData[readx++]<<8;
// piData.Value |= (long)RecvData[readx++]<<16;
// piData.Value |= (long)RecvData[readx++]<<24;
// piData.Value |= (long long)RecvData[readx++]<<32;
// piData.Value |= (long long)RecvData[readx++]<<40;
// piData.Value |= (long long)RecvData[readx++]<<48;
// piData.Value |= (long long)RecvData[readx++]<<56;
pTemp = (unsigned char*)&dvalue;
// LOGINFO("RecvData = %s",test.toStdString().c_str());
*pTemp = RecvData[readx++];
*(pTemp+1) = RecvData[readx++];
*(pTemp+2) = RecvData[readx++];
*(pTemp+3) = RecvData[readx++];
*(pTemp+4) = RecvData[readx++];
*(pTemp+5) = RecvData[readx++];
*(pTemp+6) = RecvData[readx++];
*(pTemp+7) = RecvData[readx++];
piData.Value = dvalue;
piData.Status = (uint32)RecvData[readx++];
piData.Status |= (uint32)RecvData[readx++]<<8;
piData.Status |= (uint32)RecvData[readx++]<<16;
@ -998,7 +1013,8 @@ void SimPiDlg::OnSetValue()
bool ok;
str = ui->ValueEdit->text();
m_PiValue = str.toLong(&ok,10);
//m_PiValue = str.toLong(&ok,10);
m_PiValue = str.toDouble(&ok);
str = ui->StatusEdit->text();
m_PiStatus = str.toInt(&ok,10);
@ -1024,14 +1040,23 @@ void SimPiDlg::OnSetValue()
data[writex++] = m_PiFlag;
data[writex++] = 0x00;
data[writex++] = 0x00;
data[writex++] = m_PiValue&0xff;
data[writex++] = (m_PiValue>>8)&0xff;
data[writex++] = (m_PiValue>>16)&0xff;
data[writex++] = (m_PiValue>>24)&0xff;
data[writex++] = ((long long)m_PiValue>>32)&0xff;
data[writex++] = ((long long)m_PiValue>>40)&0xff;
data[writex++] = ((long long)m_PiValue>>48)&0xff;
data[writex++] = ((long long)m_PiValue>>56)&0xff;
// data[writex++] = m_PiValue&0xff;
// data[writex++] = (m_PiValue>>8)&0xff;
// data[writex++] = (m_PiValue>>16)&0xff;
// data[writex++] = (m_PiValue>>24)&0xff;
// data[writex++] = ((long long)m_PiValue>>32)&0xff;
// data[writex++] = ((long long)m_PiValue>>40)&0xff;
// data[writex++] = ((long long)m_PiValue>>48)&0xff;
// data[writex++] = ((long long)m_PiValue>>56)&0xff;
pTemp = (unsigned char*)&m_PiValue;
data[writex++] = *pTemp;
data[writex++] = *(pTemp+1);
data[writex++] = *(pTemp+2);
data[writex++] = *(pTemp+3);
data[writex++] = *(pTemp+4);
data[writex++] = *(pTemp+5);
data[writex++] = *(pTemp+6);
data[writex++] = *(pTemp+7);
data[writex++] = m_PiStatus&0xff;
data[writex++] = (m_PiStatus>>8)&0xff;
data[writex++] = (m_PiStatus>>16)&0xff;
@ -1081,6 +1106,7 @@ void SimPiDlg::OnLineSet()
{
unsigned char data[50];
int SetMode,writex;
unsigned char *pTemp;
if(m_ConnectFlag==CN_CommDisconnect)
{
QMessageBox::warning(NULL,tr("告警"),tr("通信中断无法读取数据。请连接FES系统"));
@ -1124,11 +1150,14 @@ void SimPiDlg::OnLineSet()
*/
str = ui->MinValueEdit->text();
m_MinValue = str.toInt(&ok,10);
//m_MinValue = str.toInt(&ok,10);
m_MinValue = str.toFloat(&ok);
str = ui->MaxValueEdit->text();
m_MaxValue = str.toInt(&ok,10);
//m_MaxValue = str.toInt(&ok,10);
m_MaxValue = str.toFloat(&ok);
str = ui->StepValueEdit->text();
m_StepValue = str.toInt(&ok,10);
//m_StepValue = str.toInt(&ok,10);
m_StepValue = str.toFloat(&ok);
str = ui->ChangeTimeEdit->text();
m_ChangeTime = str.toInt(&ok,10);
@ -1152,18 +1181,34 @@ void SimPiDlg::OnLineSet()
data[writex++] = (m_ChangeTime>>8)&0xff;
memset(&data[writex],0,12);
writex+=12;
data[writex++] = m_MinValue&0xff;
data[writex++] = (m_MinValue>>8)&0xff;
data[writex++] = (m_MinValue>>16)&0xff;
data[writex++] = (m_MinValue>>24)&0xff;
data[writex++] = m_MaxValue&0xff;
data[writex++] = (m_MaxValue>>8)&0xff;
data[writex++] = (m_MaxValue>>16)&0xff;
data[writex++] = (m_MaxValue>>24)&0xff;
data[writex++] = m_StepValue&0xff;
data[writex++] = (m_StepValue>>8)&0xff;
data[writex++] = (m_StepValue>>16)&0xff;
data[writex++] = (m_StepValue>>24)&0xff;
// data[writex++] = m_MinValue&0xff;
// data[writex++] = (m_MinValue>>8)&0xff;
// data[writex++] = (m_MinValue>>16)&0xff;
// data[writex++] = (m_MinValue>>24)&0xff;
// data[writex++] = m_MaxValue&0xff;
// data[writex++] = (m_MaxValue>>8)&0xff;
// data[writex++] = (m_MaxValue>>16)&0xff;
// data[writex++] = (m_MaxValue>>24)&0xff;
// data[writex++] = m_StepValue&0xff;
// data[writex++] = (m_StepValue>>8)&0xff;
// data[writex++] = (m_StepValue>>16)&0xff;
// data[writex++] = (m_StepValue>>24)&0xff;
pTemp = (unsigned char*)&m_MinValue;
data[writex++] = *pTemp;
data[writex++] = *(pTemp+1);
data[writex++] = *(pTemp+2);
data[writex++] = *(pTemp+3);
pTemp = (unsigned char*)&m_MaxValue;
data[writex++] = *pTemp;
data[writex++] = *(pTemp+1);
data[writex++] = *(pTemp+2);
data[writex++] = *(pTemp+3);
pTemp = (unsigned char*)&m_StepValue;
data[writex++] = *pTemp;
data[writex++] = *(pTemp+1);
data[writex++] = *(pTemp+2);
data[writex++] = *(pTemp+3);
data[writex++] = m_CurrentRtuNo&0xff;
data[writex++] = (m_CurrentRtuNo>>8)&0xff;
data[writex++] = (m_CurrentRtuNo>>16)&0xff;

View File

@ -85,12 +85,12 @@ private:
bool m_AllPiFlag;
int m_PiFlag;
long m_MaxValue;
long m_MinValue;
long m_StepValue;
float m_MaxValue;
float m_MinValue;
float m_StepValue;
int m_ChangeTime; //unit:1s
long m_PiValue;
double m_PiValue;
int m_PiStatus;
RtuDevMap m_rtuDevMap;