diff --git a/CounterAcq/CounterDevice.cpp b/CounterAcq/CounterDevice.cpp index a2acd83..a794ab6 100644 --- a/CounterAcq/CounterDevice.cpp +++ b/CounterAcq/CounterDevice.cpp @@ -69,7 +69,7 @@ void CounterDevice::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); - std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; +// std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; CounterDataDto * counterData = new CounterDataDto(this); if (CounterProtocolXH::checkFrame(this->dataBuff) == true) @@ -113,6 +113,7 @@ QLogUtil::writeRawDataLogByDate(date, filename, content); QJsonArray messageArray; + QString msgLogFilename = "msg_" + devCode + ".log"; // 2. 各个通道的clock diff数据 for (int i = 1; i <= counterData->channelActiveArray.size(); i++) @@ -156,6 +157,8 @@ kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); } + QLogUtil::writeChannelDataLogByDate(date, msgLogFilename, QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); + // 4. 在界面上简单显示相差数据结果 emit this->sendDataToDraw(counterData); } diff --git a/CounterAcq/CounterDevice.cpp b/CounterAcq/CounterDevice.cpp index a2acd83..a794ab6 100644 --- a/CounterAcq/CounterDevice.cpp +++ b/CounterAcq/CounterDevice.cpp @@ -69,7 +69,7 @@ void CounterDevice::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); - std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; +// std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; CounterDataDto * counterData = new CounterDataDto(this); if (CounterProtocolXH::checkFrame(this->dataBuff) == true) @@ -113,6 +113,7 @@ QLogUtil::writeRawDataLogByDate(date, filename, content); QJsonArray messageArray; + QString msgLogFilename = "msg_" + devCode + ".log"; // 2. 各个通道的clock diff数据 for (int i = 1; i <= counterData->channelActiveArray.size(); i++) @@ -156,6 +157,8 @@ kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); } + QLogUtil::writeChannelDataLogByDate(date, msgLogFilename, QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); + // 4. 在界面上简单显示相差数据结果 emit this->sendDataToDraw(counterData); } diff --git a/CounterAcq/CounterWindow.cpp b/CounterAcq/CounterWindow.cpp index c4e78c4..9ffbaa8 100644 --- a/CounterAcq/CounterWindow.cpp +++ b/CounterAcq/CounterWindow.cpp @@ -41,7 +41,6 @@ if (retCode != 200) { QMessageBox::information(this, "错误", "获取http请求的token失败,程序即将退出"); - QTimer::singleShot(1000, qApp, SLOT(quit())); } // 2. 获取字典值:设备类型 diff --git a/CounterAcq/CounterDevice.cpp b/CounterAcq/CounterDevice.cpp index a2acd83..a794ab6 100644 --- a/CounterAcq/CounterDevice.cpp +++ b/CounterAcq/CounterDevice.cpp @@ -69,7 +69,7 @@ void CounterDevice::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); - std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; +// std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; CounterDataDto * counterData = new CounterDataDto(this); if (CounterProtocolXH::checkFrame(this->dataBuff) == true) @@ -113,6 +113,7 @@ QLogUtil::writeRawDataLogByDate(date, filename, content); QJsonArray messageArray; + QString msgLogFilename = "msg_" + devCode + ".log"; // 2. 各个通道的clock diff数据 for (int i = 1; i <= counterData->channelActiveArray.size(); i++) @@ -156,6 +157,8 @@ kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); } + QLogUtil::writeChannelDataLogByDate(date, msgLogFilename, QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); + // 4. 在界面上简单显示相差数据结果 emit this->sendDataToDraw(counterData); } diff --git a/CounterAcq/CounterWindow.cpp b/CounterAcq/CounterWindow.cpp index c4e78c4..9ffbaa8 100644 --- a/CounterAcq/CounterWindow.cpp +++ b/CounterAcq/CounterWindow.cpp @@ -41,7 +41,6 @@ if (retCode != 200) { QMessageBox::information(this, "错误", "获取http请求的token失败,程序即将退出"); - QTimer::singleShot(1000, qApp, SLOT(quit())); } // 2. 获取字典值:设备类型 diff --git a/CounterRealTime/ChannelChartForm.cpp b/CounterRealTime/ChannelChartForm.cpp index 0404c9d..9a68053 100644 --- a/CounterRealTime/ChannelChartForm.cpp +++ b/CounterRealTime/ChannelChartForm.cpp @@ -1,6 +1,5 @@ #include "ChannelChartForm.h" #include "ui_ChannelChartForm.h" -#include ChannelChartForm::ChannelChartForm(QWidget *parent) : QWidget(parent), @@ -138,8 +137,6 @@ timeVec[i] = onePoint.key; valueVec[i] = onePoint.value; -// std::cout << QString::number(timeVec[i], 'f', 0).toStdString() << " " << QString::number(valueVec[i], 'f', 12).toStdString() << std::endl; - vecPoints.append(onePoint); if (hisDataVect.at(i).at(1).toDouble() * 1E9 < minValue) @@ -194,8 +191,6 @@ ui->analysisPlot->legend->setVisible(false); ui->analysisPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom); // 设置曲线可以拖动 可以缩放 - - std::cout << hisDataVect.size() << " " << QString::number(lineReg.slope, 'f', 12).toStdString() << " " << QString::number(lineReg.intercept, 'f', 12).toStdString() << std::endl; } void ChannelChartForm::on_btnChartClose_clicked() diff --git a/CounterAcq/CounterDevice.cpp b/CounterAcq/CounterDevice.cpp index a2acd83..a794ab6 100644 --- a/CounterAcq/CounterDevice.cpp +++ b/CounterAcq/CounterDevice.cpp @@ -69,7 +69,7 @@ void CounterDevice::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); - std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; +// std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; CounterDataDto * counterData = new CounterDataDto(this); if (CounterProtocolXH::checkFrame(this->dataBuff) == true) @@ -113,6 +113,7 @@ QLogUtil::writeRawDataLogByDate(date, filename, content); QJsonArray messageArray; + QString msgLogFilename = "msg_" + devCode + ".log"; // 2. 各个通道的clock diff数据 for (int i = 1; i <= counterData->channelActiveArray.size(); i++) @@ -156,6 +157,8 @@ kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); } + QLogUtil::writeChannelDataLogByDate(date, msgLogFilename, QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); + // 4. 在界面上简单显示相差数据结果 emit this->sendDataToDraw(counterData); } diff --git a/CounterAcq/CounterWindow.cpp b/CounterAcq/CounterWindow.cpp index c4e78c4..9ffbaa8 100644 --- a/CounterAcq/CounterWindow.cpp +++ b/CounterAcq/CounterWindow.cpp @@ -41,7 +41,6 @@ if (retCode != 200) { QMessageBox::information(this, "错误", "获取http请求的token失败,程序即将退出"); - QTimer::singleShot(1000, qApp, SLOT(quit())); } // 2. 获取字典值:设备类型 diff --git a/CounterRealTime/ChannelChartForm.cpp b/CounterRealTime/ChannelChartForm.cpp index 0404c9d..9a68053 100644 --- a/CounterRealTime/ChannelChartForm.cpp +++ b/CounterRealTime/ChannelChartForm.cpp @@ -1,6 +1,5 @@ #include "ChannelChartForm.h" #include "ui_ChannelChartForm.h" -#include ChannelChartForm::ChannelChartForm(QWidget *parent) : QWidget(parent), @@ -138,8 +137,6 @@ timeVec[i] = onePoint.key; valueVec[i] = onePoint.value; -// std::cout << QString::number(timeVec[i], 'f', 0).toStdString() << " " << QString::number(valueVec[i], 'f', 12).toStdString() << std::endl; - vecPoints.append(onePoint); if (hisDataVect.at(i).at(1).toDouble() * 1E9 < minValue) @@ -194,8 +191,6 @@ ui->analysisPlot->legend->setVisible(false); ui->analysisPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom); // 设置曲线可以拖动 可以缩放 - - std::cout << hisDataVect.size() << " " << QString::number(lineReg.slope, 'f', 12).toStdString() << " " << QString::number(lineReg.intercept, 'f', 12).toStdString() << std::endl; } void ChannelChartForm::on_btnChartClose_clicked() diff --git a/CounterRealTime/CounterDevice.cpp b/CounterRealTime/CounterDevice.cpp index 1528373..bf3fa8c 100644 --- a/CounterRealTime/CounterDevice.cpp +++ b/CounterRealTime/CounterDevice.cpp @@ -2,6 +2,7 @@ #include #include +#include CounterDevice::CounterDevice(QObject *parent) : QObject(parent) { @@ -118,6 +119,7 @@ { qDebug() << QString("%1").arg(this->dataBuff.size()); this->dataBuff.clear(); + std::cout << "clear buffer" << std::endl; } // 在此处释放内存,不影响后续显示 @@ -138,6 +140,7 @@ QLogUtil::writeRawDataLogByDate(date, filename, content); QJsonArray messageArray; + QString msgLogFilename = "msg_" + devCode + ".log"; // 2. 各个通道的clock diff数据 for (int i = 1; i <= counterData->channelActiveArray.size(); i++) @@ -189,10 +192,10 @@ { kafkaUtil.produceMessage(QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); - } -// qDebug() << counterData->rawFrame; -// qDebug() << messageArray; + qDebug() << messageArray; + QLogUtil::writeChannelDataLogByDate(date, msgLogFilename, QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); + } // 4. 在界面上简单显示相差数据结果 emit this->sendDataToDraw(messageArray); diff --git a/CounterAcq/CounterDevice.cpp b/CounterAcq/CounterDevice.cpp index a2acd83..a794ab6 100644 --- a/CounterAcq/CounterDevice.cpp +++ b/CounterAcq/CounterDevice.cpp @@ -69,7 +69,7 @@ void CounterDevice::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); - std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; +// std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; CounterDataDto * counterData = new CounterDataDto(this); if (CounterProtocolXH::checkFrame(this->dataBuff) == true) @@ -113,6 +113,7 @@ QLogUtil::writeRawDataLogByDate(date, filename, content); QJsonArray messageArray; + QString msgLogFilename = "msg_" + devCode + ".log"; // 2. 各个通道的clock diff数据 for (int i = 1; i <= counterData->channelActiveArray.size(); i++) @@ -156,6 +157,8 @@ kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); } + QLogUtil::writeChannelDataLogByDate(date, msgLogFilename, QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); + // 4. 在界面上简单显示相差数据结果 emit this->sendDataToDraw(counterData); } diff --git a/CounterAcq/CounterWindow.cpp b/CounterAcq/CounterWindow.cpp index c4e78c4..9ffbaa8 100644 --- a/CounterAcq/CounterWindow.cpp +++ b/CounterAcq/CounterWindow.cpp @@ -41,7 +41,6 @@ if (retCode != 200) { QMessageBox::information(this, "错误", "获取http请求的token失败,程序即将退出"); - QTimer::singleShot(1000, qApp, SLOT(quit())); } // 2. 获取字典值:设备类型 diff --git a/CounterRealTime/ChannelChartForm.cpp b/CounterRealTime/ChannelChartForm.cpp index 0404c9d..9a68053 100644 --- a/CounterRealTime/ChannelChartForm.cpp +++ b/CounterRealTime/ChannelChartForm.cpp @@ -1,6 +1,5 @@ #include "ChannelChartForm.h" #include "ui_ChannelChartForm.h" -#include ChannelChartForm::ChannelChartForm(QWidget *parent) : QWidget(parent), @@ -138,8 +137,6 @@ timeVec[i] = onePoint.key; valueVec[i] = onePoint.value; -// std::cout << QString::number(timeVec[i], 'f', 0).toStdString() << " " << QString::number(valueVec[i], 'f', 12).toStdString() << std::endl; - vecPoints.append(onePoint); if (hisDataVect.at(i).at(1).toDouble() * 1E9 < minValue) @@ -194,8 +191,6 @@ ui->analysisPlot->legend->setVisible(false); ui->analysisPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom); // 设置曲线可以拖动 可以缩放 - - std::cout << hisDataVect.size() << " " << QString::number(lineReg.slope, 'f', 12).toStdString() << " " << QString::number(lineReg.intercept, 'f', 12).toStdString() << std::endl; } void ChannelChartForm::on_btnChartClose_clicked() diff --git a/CounterRealTime/CounterDevice.cpp b/CounterRealTime/CounterDevice.cpp index 1528373..bf3fa8c 100644 --- a/CounterRealTime/CounterDevice.cpp +++ b/CounterRealTime/CounterDevice.cpp @@ -2,6 +2,7 @@ #include #include +#include CounterDevice::CounterDevice(QObject *parent) : QObject(parent) { @@ -118,6 +119,7 @@ { qDebug() << QString("%1").arg(this->dataBuff.size()); this->dataBuff.clear(); + std::cout << "clear buffer" << std::endl; } // 在此处释放内存,不影响后续显示 @@ -138,6 +140,7 @@ QLogUtil::writeRawDataLogByDate(date, filename, content); QJsonArray messageArray; + QString msgLogFilename = "msg_" + devCode + ".log"; // 2. 各个通道的clock diff数据 for (int i = 1; i <= counterData->channelActiveArray.size(); i++) @@ -189,10 +192,10 @@ { kafkaUtil.produceMessage(QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); - } -// qDebug() << counterData->rawFrame; -// qDebug() << messageArray; + qDebug() << messageArray; + QLogUtil::writeChannelDataLogByDate(date, msgLogFilename, QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); + } // 4. 在界面上简单显示相差数据结果 emit this->sendDataToDraw(messageArray); diff --git a/CounterRealTime/CounterRealTime.pro b/CounterRealTime/CounterRealTime.pro index 0cf7c97..dd3d1eb 100644 --- a/CounterRealTime/CounterRealTime.pro +++ b/CounterRealTime/CounterRealTime.pro @@ -51,3 +51,5 @@ INCLUDEPATH += $$PWD/include/librdkafka DEPENDPATH += $$PWD/include/librdkafka + +DISTFILES += conf/config.ini diff --git a/CounterAcq/CounterDevice.cpp b/CounterAcq/CounterDevice.cpp index a2acd83..a794ab6 100644 --- a/CounterAcq/CounterDevice.cpp +++ b/CounterAcq/CounterDevice.cpp @@ -69,7 +69,7 @@ void CounterDevice::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); - std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; +// std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; CounterDataDto * counterData = new CounterDataDto(this); if (CounterProtocolXH::checkFrame(this->dataBuff) == true) @@ -113,6 +113,7 @@ QLogUtil::writeRawDataLogByDate(date, filename, content); QJsonArray messageArray; + QString msgLogFilename = "msg_" + devCode + ".log"; // 2. 各个通道的clock diff数据 for (int i = 1; i <= counterData->channelActiveArray.size(); i++) @@ -156,6 +157,8 @@ kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); } + QLogUtil::writeChannelDataLogByDate(date, msgLogFilename, QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); + // 4. 在界面上简单显示相差数据结果 emit this->sendDataToDraw(counterData); } diff --git a/CounterAcq/CounterWindow.cpp b/CounterAcq/CounterWindow.cpp index c4e78c4..9ffbaa8 100644 --- a/CounterAcq/CounterWindow.cpp +++ b/CounterAcq/CounterWindow.cpp @@ -41,7 +41,6 @@ if (retCode != 200) { QMessageBox::information(this, "错误", "获取http请求的token失败,程序即将退出"); - QTimer::singleShot(1000, qApp, SLOT(quit())); } // 2. 获取字典值:设备类型 diff --git a/CounterRealTime/ChannelChartForm.cpp b/CounterRealTime/ChannelChartForm.cpp index 0404c9d..9a68053 100644 --- a/CounterRealTime/ChannelChartForm.cpp +++ b/CounterRealTime/ChannelChartForm.cpp @@ -1,6 +1,5 @@ #include "ChannelChartForm.h" #include "ui_ChannelChartForm.h" -#include ChannelChartForm::ChannelChartForm(QWidget *parent) : QWidget(parent), @@ -138,8 +137,6 @@ timeVec[i] = onePoint.key; valueVec[i] = onePoint.value; -// std::cout << QString::number(timeVec[i], 'f', 0).toStdString() << " " << QString::number(valueVec[i], 'f', 12).toStdString() << std::endl; - vecPoints.append(onePoint); if (hisDataVect.at(i).at(1).toDouble() * 1E9 < minValue) @@ -194,8 +191,6 @@ ui->analysisPlot->legend->setVisible(false); ui->analysisPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom); // 设置曲线可以拖动 可以缩放 - - std::cout << hisDataVect.size() << " " << QString::number(lineReg.slope, 'f', 12).toStdString() << " " << QString::number(lineReg.intercept, 'f', 12).toStdString() << std::endl; } void ChannelChartForm::on_btnChartClose_clicked() diff --git a/CounterRealTime/CounterDevice.cpp b/CounterRealTime/CounterDevice.cpp index 1528373..bf3fa8c 100644 --- a/CounterRealTime/CounterDevice.cpp +++ b/CounterRealTime/CounterDevice.cpp @@ -2,6 +2,7 @@ #include #include +#include CounterDevice::CounterDevice(QObject *parent) : QObject(parent) { @@ -118,6 +119,7 @@ { qDebug() << QString("%1").arg(this->dataBuff.size()); this->dataBuff.clear(); + std::cout << "clear buffer" << std::endl; } // 在此处释放内存,不影响后续显示 @@ -138,6 +140,7 @@ QLogUtil::writeRawDataLogByDate(date, filename, content); QJsonArray messageArray; + QString msgLogFilename = "msg_" + devCode + ".log"; // 2. 各个通道的clock diff数据 for (int i = 1; i <= counterData->channelActiveArray.size(); i++) @@ -189,10 +192,10 @@ { kafkaUtil.produceMessage(QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); - } -// qDebug() << counterData->rawFrame; -// qDebug() << messageArray; + qDebug() << messageArray; + QLogUtil::writeChannelDataLogByDate(date, msgLogFilename, QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); + } // 4. 在界面上简单显示相差数据结果 emit this->sendDataToDraw(messageArray); diff --git a/CounterRealTime/CounterRealTime.pro b/CounterRealTime/CounterRealTime.pro index 0cf7c97..dd3d1eb 100644 --- a/CounterRealTime/CounterRealTime.pro +++ b/CounterRealTime/CounterRealTime.pro @@ -51,3 +51,5 @@ INCLUDEPATH += $$PWD/include/librdkafka DEPENDPATH += $$PWD/include/librdkafka + +DISTFILES += conf/config.ini diff --git a/CounterRealTime/CounterWindowRT.cpp b/CounterRealTime/CounterWindowRT.cpp index 86a7776..37b6cb6 100644 --- a/CounterRealTime/CounterWindowRT.cpp +++ b/CounterRealTime/CounterWindowRT.cpp @@ -23,6 +23,8 @@ file.close(); } + ui->labTitle->setText(QString("钟差测量数据采集软件——%1").arg(SettingConfig::getInstance().MASTER == 1 ? "主" : "备")); + // kafka consumer kafkaConsumer = new QKafkaConsumer(this); kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); @@ -66,6 +68,8 @@ CounterDevice * devicePtr = ConstCache::getInstance().deviceMap.value(ConstCache::getInstance().deviceIdLoopB.at(i)); devicePtr->initSerialPort(); } + + httpReq->getSysClockAlarmCount(); } CounterWindowRT::~CounterWindowRT() @@ -479,4 +483,27 @@ void CounterWindowRT::onKafkaMessageReceived(QJsonObject message) { qDebug() << message; + std::cout << QString(QJsonDocument(message).toJson(QJsonDocument::Compact)).toStdString() << std::endl; + + // 找不到deviceId deviceType operation三个必填项 直接返回 + if (message.contains("deviceId") == false || message.contains("operation") == false || message.contains("deviceType") == false) { + return; + } + + // deviceType不是计数器 直接返回 + if (message.value("deviceType").toString() != "01") { + return; + } + + QString deviceId = message.value("deviceId").toString(); + + if (message.contains("chanelId") == true) + { + this->getChannelList(deviceId); + } else + { + ConstCache::getInstance().channelMap.clear(); + ConstCache::getInstance().deviceMap.clear(); + this->getDeviceList(); + } } diff --git a/CounterAcq/CounterDevice.cpp b/CounterAcq/CounterDevice.cpp index a2acd83..a794ab6 100644 --- a/CounterAcq/CounterDevice.cpp +++ b/CounterAcq/CounterDevice.cpp @@ -69,7 +69,7 @@ void CounterDevice::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); - std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; +// std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; CounterDataDto * counterData = new CounterDataDto(this); if (CounterProtocolXH::checkFrame(this->dataBuff) == true) @@ -113,6 +113,7 @@ QLogUtil::writeRawDataLogByDate(date, filename, content); QJsonArray messageArray; + QString msgLogFilename = "msg_" + devCode + ".log"; // 2. 各个通道的clock diff数据 for (int i = 1; i <= counterData->channelActiveArray.size(); i++) @@ -156,6 +157,8 @@ kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); } + QLogUtil::writeChannelDataLogByDate(date, msgLogFilename, QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); + // 4. 在界面上简单显示相差数据结果 emit this->sendDataToDraw(counterData); } diff --git a/CounterAcq/CounterWindow.cpp b/CounterAcq/CounterWindow.cpp index c4e78c4..9ffbaa8 100644 --- a/CounterAcq/CounterWindow.cpp +++ b/CounterAcq/CounterWindow.cpp @@ -41,7 +41,6 @@ if (retCode != 200) { QMessageBox::information(this, "错误", "获取http请求的token失败,程序即将退出"); - QTimer::singleShot(1000, qApp, SLOT(quit())); } // 2. 获取字典值:设备类型 diff --git a/CounterRealTime/ChannelChartForm.cpp b/CounterRealTime/ChannelChartForm.cpp index 0404c9d..9a68053 100644 --- a/CounterRealTime/ChannelChartForm.cpp +++ b/CounterRealTime/ChannelChartForm.cpp @@ -1,6 +1,5 @@ #include "ChannelChartForm.h" #include "ui_ChannelChartForm.h" -#include ChannelChartForm::ChannelChartForm(QWidget *parent) : QWidget(parent), @@ -138,8 +137,6 @@ timeVec[i] = onePoint.key; valueVec[i] = onePoint.value; -// std::cout << QString::number(timeVec[i], 'f', 0).toStdString() << " " << QString::number(valueVec[i], 'f', 12).toStdString() << std::endl; - vecPoints.append(onePoint); if (hisDataVect.at(i).at(1).toDouble() * 1E9 < minValue) @@ -194,8 +191,6 @@ ui->analysisPlot->legend->setVisible(false); ui->analysisPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom); // 设置曲线可以拖动 可以缩放 - - std::cout << hisDataVect.size() << " " << QString::number(lineReg.slope, 'f', 12).toStdString() << " " << QString::number(lineReg.intercept, 'f', 12).toStdString() << std::endl; } void ChannelChartForm::on_btnChartClose_clicked() diff --git a/CounterRealTime/CounterDevice.cpp b/CounterRealTime/CounterDevice.cpp index 1528373..bf3fa8c 100644 --- a/CounterRealTime/CounterDevice.cpp +++ b/CounterRealTime/CounterDevice.cpp @@ -2,6 +2,7 @@ #include #include +#include CounterDevice::CounterDevice(QObject *parent) : QObject(parent) { @@ -118,6 +119,7 @@ { qDebug() << QString("%1").arg(this->dataBuff.size()); this->dataBuff.clear(); + std::cout << "clear buffer" << std::endl; } // 在此处释放内存,不影响后续显示 @@ -138,6 +140,7 @@ QLogUtil::writeRawDataLogByDate(date, filename, content); QJsonArray messageArray; + QString msgLogFilename = "msg_" + devCode + ".log"; // 2. 各个通道的clock diff数据 for (int i = 1; i <= counterData->channelActiveArray.size(); i++) @@ -189,10 +192,10 @@ { kafkaUtil.produceMessage(QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); - } -// qDebug() << counterData->rawFrame; -// qDebug() << messageArray; + qDebug() << messageArray; + QLogUtil::writeChannelDataLogByDate(date, msgLogFilename, QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); + } // 4. 在界面上简单显示相差数据结果 emit this->sendDataToDraw(messageArray); diff --git a/CounterRealTime/CounterRealTime.pro b/CounterRealTime/CounterRealTime.pro index 0cf7c97..dd3d1eb 100644 --- a/CounterRealTime/CounterRealTime.pro +++ b/CounterRealTime/CounterRealTime.pro @@ -51,3 +51,5 @@ INCLUDEPATH += $$PWD/include/librdkafka DEPENDPATH += $$PWD/include/librdkafka + +DISTFILES += conf/config.ini diff --git a/CounterRealTime/CounterWindowRT.cpp b/CounterRealTime/CounterWindowRT.cpp index 86a7776..37b6cb6 100644 --- a/CounterRealTime/CounterWindowRT.cpp +++ b/CounterRealTime/CounterWindowRT.cpp @@ -23,6 +23,8 @@ file.close(); } + ui->labTitle->setText(QString("钟差测量数据采集软件——%1").arg(SettingConfig::getInstance().MASTER == 1 ? "主" : "备")); + // kafka consumer kafkaConsumer = new QKafkaConsumer(this); kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); @@ -66,6 +68,8 @@ CounterDevice * devicePtr = ConstCache::getInstance().deviceMap.value(ConstCache::getInstance().deviceIdLoopB.at(i)); devicePtr->initSerialPort(); } + + httpReq->getSysClockAlarmCount(); } CounterWindowRT::~CounterWindowRT() @@ -479,4 +483,27 @@ void CounterWindowRT::onKafkaMessageReceived(QJsonObject message) { qDebug() << message; + std::cout << QString(QJsonDocument(message).toJson(QJsonDocument::Compact)).toStdString() << std::endl; + + // 找不到deviceId deviceType operation三个必填项 直接返回 + if (message.contains("deviceId") == false || message.contains("operation") == false || message.contains("deviceType") == false) { + return; + } + + // deviceType不是计数器 直接返回 + if (message.value("deviceType").toString() != "01") { + return; + } + + QString deviceId = message.value("deviceId").toString(); + + if (message.contains("chanelId") == true) + { + this->getChannelList(deviceId); + } else + { + ConstCache::getInstance().channelMap.clear(); + ConstCache::getInstance().deviceMap.clear(); + this->getDeviceList(); + } } diff --git a/CounterRealTime/common/HttpRequestController.cpp b/CounterRealTime/common/HttpRequestController.cpp index b287ed5..bfe6311 100644 --- a/CounterRealTime/common/HttpRequestController.cpp +++ b/CounterRealTime/common/HttpRequestController.cpp @@ -260,3 +260,34 @@ return resultObj; } + +QJsonObject HttpRequestController::getSysClockAlarmCount() +{ + QJsonObject resultObj; + + // 获取设备列表的接口地址 + QUrl url = baseUrl + "/alarm/alarmCount"; + + QNetworkRequest request; + request.setUrl(url); + request.setRawHeader("Content-type", "application/json"); + request.setRawHeader("token", token.toLocal8Bit()); + request.setRawHeader("system", SettingConfig::getInstance().SYSTEM.toLocal8Bit()); + + qDebug() << url; + + QNetworkReply * reply = httpUtil->sendGetRequest(request); + const QByteArray reply_data = reply->readAll(); + QJsonDocument jsonDocument = QJsonDocument::fromJson(reply_data); + if(jsonDocument.isNull() == false) + { + resultObj = jsonDocument.object(); + } else + { + resultObj.insert("code", -1); + } + + qDebug() << resultObj; + + return resultObj; +} diff --git a/CounterAcq/CounterDevice.cpp b/CounterAcq/CounterDevice.cpp index a2acd83..a794ab6 100644 --- a/CounterAcq/CounterDevice.cpp +++ b/CounterAcq/CounterDevice.cpp @@ -69,7 +69,7 @@ void CounterDevice::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); - std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; +// std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; CounterDataDto * counterData = new CounterDataDto(this); if (CounterProtocolXH::checkFrame(this->dataBuff) == true) @@ -113,6 +113,7 @@ QLogUtil::writeRawDataLogByDate(date, filename, content); QJsonArray messageArray; + QString msgLogFilename = "msg_" + devCode + ".log"; // 2. 各个通道的clock diff数据 for (int i = 1; i <= counterData->channelActiveArray.size(); i++) @@ -156,6 +157,8 @@ kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); } + QLogUtil::writeChannelDataLogByDate(date, msgLogFilename, QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); + // 4. 在界面上简单显示相差数据结果 emit this->sendDataToDraw(counterData); } diff --git a/CounterAcq/CounterWindow.cpp b/CounterAcq/CounterWindow.cpp index c4e78c4..9ffbaa8 100644 --- a/CounterAcq/CounterWindow.cpp +++ b/CounterAcq/CounterWindow.cpp @@ -41,7 +41,6 @@ if (retCode != 200) { QMessageBox::information(this, "错误", "获取http请求的token失败,程序即将退出"); - QTimer::singleShot(1000, qApp, SLOT(quit())); } // 2. 获取字典值:设备类型 diff --git a/CounterRealTime/ChannelChartForm.cpp b/CounterRealTime/ChannelChartForm.cpp index 0404c9d..9a68053 100644 --- a/CounterRealTime/ChannelChartForm.cpp +++ b/CounterRealTime/ChannelChartForm.cpp @@ -1,6 +1,5 @@ #include "ChannelChartForm.h" #include "ui_ChannelChartForm.h" -#include ChannelChartForm::ChannelChartForm(QWidget *parent) : QWidget(parent), @@ -138,8 +137,6 @@ timeVec[i] = onePoint.key; valueVec[i] = onePoint.value; -// std::cout << QString::number(timeVec[i], 'f', 0).toStdString() << " " << QString::number(valueVec[i], 'f', 12).toStdString() << std::endl; - vecPoints.append(onePoint); if (hisDataVect.at(i).at(1).toDouble() * 1E9 < minValue) @@ -194,8 +191,6 @@ ui->analysisPlot->legend->setVisible(false); ui->analysisPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom); // 设置曲线可以拖动 可以缩放 - - std::cout << hisDataVect.size() << " " << QString::number(lineReg.slope, 'f', 12).toStdString() << " " << QString::number(lineReg.intercept, 'f', 12).toStdString() << std::endl; } void ChannelChartForm::on_btnChartClose_clicked() diff --git a/CounterRealTime/CounterDevice.cpp b/CounterRealTime/CounterDevice.cpp index 1528373..bf3fa8c 100644 --- a/CounterRealTime/CounterDevice.cpp +++ b/CounterRealTime/CounterDevice.cpp @@ -2,6 +2,7 @@ #include #include +#include CounterDevice::CounterDevice(QObject *parent) : QObject(parent) { @@ -118,6 +119,7 @@ { qDebug() << QString("%1").arg(this->dataBuff.size()); this->dataBuff.clear(); + std::cout << "clear buffer" << std::endl; } // 在此处释放内存,不影响后续显示 @@ -138,6 +140,7 @@ QLogUtil::writeRawDataLogByDate(date, filename, content); QJsonArray messageArray; + QString msgLogFilename = "msg_" + devCode + ".log"; // 2. 各个通道的clock diff数据 for (int i = 1; i <= counterData->channelActiveArray.size(); i++) @@ -189,10 +192,10 @@ { kafkaUtil.produceMessage(QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); - } -// qDebug() << counterData->rawFrame; -// qDebug() << messageArray; + qDebug() << messageArray; + QLogUtil::writeChannelDataLogByDate(date, msgLogFilename, QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); + } // 4. 在界面上简单显示相差数据结果 emit this->sendDataToDraw(messageArray); diff --git a/CounterRealTime/CounterRealTime.pro b/CounterRealTime/CounterRealTime.pro index 0cf7c97..dd3d1eb 100644 --- a/CounterRealTime/CounterRealTime.pro +++ b/CounterRealTime/CounterRealTime.pro @@ -51,3 +51,5 @@ INCLUDEPATH += $$PWD/include/librdkafka DEPENDPATH += $$PWD/include/librdkafka + +DISTFILES += conf/config.ini diff --git a/CounterRealTime/CounterWindowRT.cpp b/CounterRealTime/CounterWindowRT.cpp index 86a7776..37b6cb6 100644 --- a/CounterRealTime/CounterWindowRT.cpp +++ b/CounterRealTime/CounterWindowRT.cpp @@ -23,6 +23,8 @@ file.close(); } + ui->labTitle->setText(QString("钟差测量数据采集软件——%1").arg(SettingConfig::getInstance().MASTER == 1 ? "主" : "备")); + // kafka consumer kafkaConsumer = new QKafkaConsumer(this); kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); @@ -66,6 +68,8 @@ CounterDevice * devicePtr = ConstCache::getInstance().deviceMap.value(ConstCache::getInstance().deviceIdLoopB.at(i)); devicePtr->initSerialPort(); } + + httpReq->getSysClockAlarmCount(); } CounterWindowRT::~CounterWindowRT() @@ -479,4 +483,27 @@ void CounterWindowRT::onKafkaMessageReceived(QJsonObject message) { qDebug() << message; + std::cout << QString(QJsonDocument(message).toJson(QJsonDocument::Compact)).toStdString() << std::endl; + + // 找不到deviceId deviceType operation三个必填项 直接返回 + if (message.contains("deviceId") == false || message.contains("operation") == false || message.contains("deviceType") == false) { + return; + } + + // deviceType不是计数器 直接返回 + if (message.value("deviceType").toString() != "01") { + return; + } + + QString deviceId = message.value("deviceId").toString(); + + if (message.contains("chanelId") == true) + { + this->getChannelList(deviceId); + } else + { + ConstCache::getInstance().channelMap.clear(); + ConstCache::getInstance().deviceMap.clear(); + this->getDeviceList(); + } } diff --git a/CounterRealTime/common/HttpRequestController.cpp b/CounterRealTime/common/HttpRequestController.cpp index b287ed5..bfe6311 100644 --- a/CounterRealTime/common/HttpRequestController.cpp +++ b/CounterRealTime/common/HttpRequestController.cpp @@ -260,3 +260,34 @@ return resultObj; } + +QJsonObject HttpRequestController::getSysClockAlarmCount() +{ + QJsonObject resultObj; + + // 获取设备列表的接口地址 + QUrl url = baseUrl + "/alarm/alarmCount"; + + QNetworkRequest request; + request.setUrl(url); + request.setRawHeader("Content-type", "application/json"); + request.setRawHeader("token", token.toLocal8Bit()); + request.setRawHeader("system", SettingConfig::getInstance().SYSTEM.toLocal8Bit()); + + qDebug() << url; + + QNetworkReply * reply = httpUtil->sendGetRequest(request); + const QByteArray reply_data = reply->readAll(); + QJsonDocument jsonDocument = QJsonDocument::fromJson(reply_data); + if(jsonDocument.isNull() == false) + { + resultObj = jsonDocument.object(); + } else + { + resultObj.insert("code", -1); + } + + qDebug() << resultObj; + + return resultObj; +} diff --git a/CounterRealTime/common/HttpRequestController.h b/CounterRealTime/common/HttpRequestController.h index 860aafa..a70e5aa 100644 --- a/CounterRealTime/common/HttpRequestController.h +++ b/CounterRealTime/common/HttpRequestController.h @@ -26,6 +26,8 @@ QJsonObject updateChannelInfo(QJsonArray channelInfos); + QJsonObject getSysClockAlarmCount(); + private: HttpRequestUtil * httpUtil; diff --git a/CounterAcq/CounterDevice.cpp b/CounterAcq/CounterDevice.cpp index a2acd83..a794ab6 100644 --- a/CounterAcq/CounterDevice.cpp +++ b/CounterAcq/CounterDevice.cpp @@ -69,7 +69,7 @@ void CounterDevice::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); - std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; +// std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; CounterDataDto * counterData = new CounterDataDto(this); if (CounterProtocolXH::checkFrame(this->dataBuff) == true) @@ -113,6 +113,7 @@ QLogUtil::writeRawDataLogByDate(date, filename, content); QJsonArray messageArray; + QString msgLogFilename = "msg_" + devCode + ".log"; // 2. 各个通道的clock diff数据 for (int i = 1; i <= counterData->channelActiveArray.size(); i++) @@ -156,6 +157,8 @@ kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); } + QLogUtil::writeChannelDataLogByDate(date, msgLogFilename, QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); + // 4. 在界面上简单显示相差数据结果 emit this->sendDataToDraw(counterData); } diff --git a/CounterAcq/CounterWindow.cpp b/CounterAcq/CounterWindow.cpp index c4e78c4..9ffbaa8 100644 --- a/CounterAcq/CounterWindow.cpp +++ b/CounterAcq/CounterWindow.cpp @@ -41,7 +41,6 @@ if (retCode != 200) { QMessageBox::information(this, "错误", "获取http请求的token失败,程序即将退出"); - QTimer::singleShot(1000, qApp, SLOT(quit())); } // 2. 获取字典值:设备类型 diff --git a/CounterRealTime/ChannelChartForm.cpp b/CounterRealTime/ChannelChartForm.cpp index 0404c9d..9a68053 100644 --- a/CounterRealTime/ChannelChartForm.cpp +++ b/CounterRealTime/ChannelChartForm.cpp @@ -1,6 +1,5 @@ #include "ChannelChartForm.h" #include "ui_ChannelChartForm.h" -#include ChannelChartForm::ChannelChartForm(QWidget *parent) : QWidget(parent), @@ -138,8 +137,6 @@ timeVec[i] = onePoint.key; valueVec[i] = onePoint.value; -// std::cout << QString::number(timeVec[i], 'f', 0).toStdString() << " " << QString::number(valueVec[i], 'f', 12).toStdString() << std::endl; - vecPoints.append(onePoint); if (hisDataVect.at(i).at(1).toDouble() * 1E9 < minValue) @@ -194,8 +191,6 @@ ui->analysisPlot->legend->setVisible(false); ui->analysisPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom); // 设置曲线可以拖动 可以缩放 - - std::cout << hisDataVect.size() << " " << QString::number(lineReg.slope, 'f', 12).toStdString() << " " << QString::number(lineReg.intercept, 'f', 12).toStdString() << std::endl; } void ChannelChartForm::on_btnChartClose_clicked() diff --git a/CounterRealTime/CounterDevice.cpp b/CounterRealTime/CounterDevice.cpp index 1528373..bf3fa8c 100644 --- a/CounterRealTime/CounterDevice.cpp +++ b/CounterRealTime/CounterDevice.cpp @@ -2,6 +2,7 @@ #include #include +#include CounterDevice::CounterDevice(QObject *parent) : QObject(parent) { @@ -118,6 +119,7 @@ { qDebug() << QString("%1").arg(this->dataBuff.size()); this->dataBuff.clear(); + std::cout << "clear buffer" << std::endl; } // 在此处释放内存,不影响后续显示 @@ -138,6 +140,7 @@ QLogUtil::writeRawDataLogByDate(date, filename, content); QJsonArray messageArray; + QString msgLogFilename = "msg_" + devCode + ".log"; // 2. 各个通道的clock diff数据 for (int i = 1; i <= counterData->channelActiveArray.size(); i++) @@ -189,10 +192,10 @@ { kafkaUtil.produceMessage(QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); - } -// qDebug() << counterData->rawFrame; -// qDebug() << messageArray; + qDebug() << messageArray; + QLogUtil::writeChannelDataLogByDate(date, msgLogFilename, QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); + } // 4. 在界面上简单显示相差数据结果 emit this->sendDataToDraw(messageArray); diff --git a/CounterRealTime/CounterRealTime.pro b/CounterRealTime/CounterRealTime.pro index 0cf7c97..dd3d1eb 100644 --- a/CounterRealTime/CounterRealTime.pro +++ b/CounterRealTime/CounterRealTime.pro @@ -51,3 +51,5 @@ INCLUDEPATH += $$PWD/include/librdkafka DEPENDPATH += $$PWD/include/librdkafka + +DISTFILES += conf/config.ini diff --git a/CounterRealTime/CounterWindowRT.cpp b/CounterRealTime/CounterWindowRT.cpp index 86a7776..37b6cb6 100644 --- a/CounterRealTime/CounterWindowRT.cpp +++ b/CounterRealTime/CounterWindowRT.cpp @@ -23,6 +23,8 @@ file.close(); } + ui->labTitle->setText(QString("钟差测量数据采集软件——%1").arg(SettingConfig::getInstance().MASTER == 1 ? "主" : "备")); + // kafka consumer kafkaConsumer = new QKafkaConsumer(this); kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); @@ -66,6 +68,8 @@ CounterDevice * devicePtr = ConstCache::getInstance().deviceMap.value(ConstCache::getInstance().deviceIdLoopB.at(i)); devicePtr->initSerialPort(); } + + httpReq->getSysClockAlarmCount(); } CounterWindowRT::~CounterWindowRT() @@ -479,4 +483,27 @@ void CounterWindowRT::onKafkaMessageReceived(QJsonObject message) { qDebug() << message; + std::cout << QString(QJsonDocument(message).toJson(QJsonDocument::Compact)).toStdString() << std::endl; + + // 找不到deviceId deviceType operation三个必填项 直接返回 + if (message.contains("deviceId") == false || message.contains("operation") == false || message.contains("deviceType") == false) { + return; + } + + // deviceType不是计数器 直接返回 + if (message.value("deviceType").toString() != "01") { + return; + } + + QString deviceId = message.value("deviceId").toString(); + + if (message.contains("chanelId") == true) + { + this->getChannelList(deviceId); + } else + { + ConstCache::getInstance().channelMap.clear(); + ConstCache::getInstance().deviceMap.clear(); + this->getDeviceList(); + } } diff --git a/CounterRealTime/common/HttpRequestController.cpp b/CounterRealTime/common/HttpRequestController.cpp index b287ed5..bfe6311 100644 --- a/CounterRealTime/common/HttpRequestController.cpp +++ b/CounterRealTime/common/HttpRequestController.cpp @@ -260,3 +260,34 @@ return resultObj; } + +QJsonObject HttpRequestController::getSysClockAlarmCount() +{ + QJsonObject resultObj; + + // 获取设备列表的接口地址 + QUrl url = baseUrl + "/alarm/alarmCount"; + + QNetworkRequest request; + request.setUrl(url); + request.setRawHeader("Content-type", "application/json"); + request.setRawHeader("token", token.toLocal8Bit()); + request.setRawHeader("system", SettingConfig::getInstance().SYSTEM.toLocal8Bit()); + + qDebug() << url; + + QNetworkReply * reply = httpUtil->sendGetRequest(request); + const QByteArray reply_data = reply->readAll(); + QJsonDocument jsonDocument = QJsonDocument::fromJson(reply_data); + if(jsonDocument.isNull() == false) + { + resultObj = jsonDocument.object(); + } else + { + resultObj.insert("code", -1); + } + + qDebug() << resultObj; + + return resultObj; +} diff --git a/CounterRealTime/common/HttpRequestController.h b/CounterRealTime/common/HttpRequestController.h index 860aafa..a70e5aa 100644 --- a/CounterRealTime/common/HttpRequestController.h +++ b/CounterRealTime/common/HttpRequestController.h @@ -26,6 +26,8 @@ QJsonObject updateChannelInfo(QJsonArray channelInfos); + QJsonObject getSysClockAlarmCount(); + private: HttpRequestUtil * httpUtil; diff --git a/CounterRealTime/common/LinearRegression.cpp b/CounterRealTime/common/LinearRegression.cpp index 4293e49..d3a211f 100644 --- a/CounterRealTime/common/LinearRegression.cpp +++ b/CounterRealTime/common/LinearRegression.cpp @@ -1,6 +1,6 @@ #include "LinearRegression.h" -#include #include +#include LinearRegression::LinearRegression() { @@ -33,10 +33,9 @@ slopeDown = slopeDown + temp1 * temp1; } - std::cout << QString::number(slopeUp, 'f', 20).toStdString() << " " << QString::number(slopeDown, 'f', 20).toStdString() << std::endl; - + qDebug() << QString::number(slopeUp, 'f', 20) << " " << QString::number(slopeDown, 'f', 20); slope = slopeUp / slopeDown; intercept = yAverage - xAverage * slope; - std::cout << QString::number(slope, 'f', 20).toStdString() << " == " << QString::number(intercept, 'f', 20).toStdString() << std::endl; + qDebug() << QString::number(slope, 'f', 20) << " == " << QString::number(intercept, 'f', 20); } diff --git a/CounterAcq/CounterDevice.cpp b/CounterAcq/CounterDevice.cpp index a2acd83..a794ab6 100644 --- a/CounterAcq/CounterDevice.cpp +++ b/CounterAcq/CounterDevice.cpp @@ -69,7 +69,7 @@ void CounterDevice::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); - std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; +// std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; CounterDataDto * counterData = new CounterDataDto(this); if (CounterProtocolXH::checkFrame(this->dataBuff) == true) @@ -113,6 +113,7 @@ QLogUtil::writeRawDataLogByDate(date, filename, content); QJsonArray messageArray; + QString msgLogFilename = "msg_" + devCode + ".log"; // 2. 各个通道的clock diff数据 for (int i = 1; i <= counterData->channelActiveArray.size(); i++) @@ -156,6 +157,8 @@ kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); } + QLogUtil::writeChannelDataLogByDate(date, msgLogFilename, QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); + // 4. 在界面上简单显示相差数据结果 emit this->sendDataToDraw(counterData); } diff --git a/CounterAcq/CounterWindow.cpp b/CounterAcq/CounterWindow.cpp index c4e78c4..9ffbaa8 100644 --- a/CounterAcq/CounterWindow.cpp +++ b/CounterAcq/CounterWindow.cpp @@ -41,7 +41,6 @@ if (retCode != 200) { QMessageBox::information(this, "错误", "获取http请求的token失败,程序即将退出"); - QTimer::singleShot(1000, qApp, SLOT(quit())); } // 2. 获取字典值:设备类型 diff --git a/CounterRealTime/ChannelChartForm.cpp b/CounterRealTime/ChannelChartForm.cpp index 0404c9d..9a68053 100644 --- a/CounterRealTime/ChannelChartForm.cpp +++ b/CounterRealTime/ChannelChartForm.cpp @@ -1,6 +1,5 @@ #include "ChannelChartForm.h" #include "ui_ChannelChartForm.h" -#include ChannelChartForm::ChannelChartForm(QWidget *parent) : QWidget(parent), @@ -138,8 +137,6 @@ timeVec[i] = onePoint.key; valueVec[i] = onePoint.value; -// std::cout << QString::number(timeVec[i], 'f', 0).toStdString() << " " << QString::number(valueVec[i], 'f', 12).toStdString() << std::endl; - vecPoints.append(onePoint); if (hisDataVect.at(i).at(1).toDouble() * 1E9 < minValue) @@ -194,8 +191,6 @@ ui->analysisPlot->legend->setVisible(false); ui->analysisPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom); // 设置曲线可以拖动 可以缩放 - - std::cout << hisDataVect.size() << " " << QString::number(lineReg.slope, 'f', 12).toStdString() << " " << QString::number(lineReg.intercept, 'f', 12).toStdString() << std::endl; } void ChannelChartForm::on_btnChartClose_clicked() diff --git a/CounterRealTime/CounterDevice.cpp b/CounterRealTime/CounterDevice.cpp index 1528373..bf3fa8c 100644 --- a/CounterRealTime/CounterDevice.cpp +++ b/CounterRealTime/CounterDevice.cpp @@ -2,6 +2,7 @@ #include #include +#include CounterDevice::CounterDevice(QObject *parent) : QObject(parent) { @@ -118,6 +119,7 @@ { qDebug() << QString("%1").arg(this->dataBuff.size()); this->dataBuff.clear(); + std::cout << "clear buffer" << std::endl; } // 在此处释放内存,不影响后续显示 @@ -138,6 +140,7 @@ QLogUtil::writeRawDataLogByDate(date, filename, content); QJsonArray messageArray; + QString msgLogFilename = "msg_" + devCode + ".log"; // 2. 各个通道的clock diff数据 for (int i = 1; i <= counterData->channelActiveArray.size(); i++) @@ -189,10 +192,10 @@ { kafkaUtil.produceMessage(QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); - } -// qDebug() << counterData->rawFrame; -// qDebug() << messageArray; + qDebug() << messageArray; + QLogUtil::writeChannelDataLogByDate(date, msgLogFilename, QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); + } // 4. 在界面上简单显示相差数据结果 emit this->sendDataToDraw(messageArray); diff --git a/CounterRealTime/CounterRealTime.pro b/CounterRealTime/CounterRealTime.pro index 0cf7c97..dd3d1eb 100644 --- a/CounterRealTime/CounterRealTime.pro +++ b/CounterRealTime/CounterRealTime.pro @@ -51,3 +51,5 @@ INCLUDEPATH += $$PWD/include/librdkafka DEPENDPATH += $$PWD/include/librdkafka + +DISTFILES += conf/config.ini diff --git a/CounterRealTime/CounterWindowRT.cpp b/CounterRealTime/CounterWindowRT.cpp index 86a7776..37b6cb6 100644 --- a/CounterRealTime/CounterWindowRT.cpp +++ b/CounterRealTime/CounterWindowRT.cpp @@ -23,6 +23,8 @@ file.close(); } + ui->labTitle->setText(QString("钟差测量数据采集软件——%1").arg(SettingConfig::getInstance().MASTER == 1 ? "主" : "备")); + // kafka consumer kafkaConsumer = new QKafkaConsumer(this); kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); @@ -66,6 +68,8 @@ CounterDevice * devicePtr = ConstCache::getInstance().deviceMap.value(ConstCache::getInstance().deviceIdLoopB.at(i)); devicePtr->initSerialPort(); } + + httpReq->getSysClockAlarmCount(); } CounterWindowRT::~CounterWindowRT() @@ -479,4 +483,27 @@ void CounterWindowRT::onKafkaMessageReceived(QJsonObject message) { qDebug() << message; + std::cout << QString(QJsonDocument(message).toJson(QJsonDocument::Compact)).toStdString() << std::endl; + + // 找不到deviceId deviceType operation三个必填项 直接返回 + if (message.contains("deviceId") == false || message.contains("operation") == false || message.contains("deviceType") == false) { + return; + } + + // deviceType不是计数器 直接返回 + if (message.value("deviceType").toString() != "01") { + return; + } + + QString deviceId = message.value("deviceId").toString(); + + if (message.contains("chanelId") == true) + { + this->getChannelList(deviceId); + } else + { + ConstCache::getInstance().channelMap.clear(); + ConstCache::getInstance().deviceMap.clear(); + this->getDeviceList(); + } } diff --git a/CounterRealTime/common/HttpRequestController.cpp b/CounterRealTime/common/HttpRequestController.cpp index b287ed5..bfe6311 100644 --- a/CounterRealTime/common/HttpRequestController.cpp +++ b/CounterRealTime/common/HttpRequestController.cpp @@ -260,3 +260,34 @@ return resultObj; } + +QJsonObject HttpRequestController::getSysClockAlarmCount() +{ + QJsonObject resultObj; + + // 获取设备列表的接口地址 + QUrl url = baseUrl + "/alarm/alarmCount"; + + QNetworkRequest request; + request.setUrl(url); + request.setRawHeader("Content-type", "application/json"); + request.setRawHeader("token", token.toLocal8Bit()); + request.setRawHeader("system", SettingConfig::getInstance().SYSTEM.toLocal8Bit()); + + qDebug() << url; + + QNetworkReply * reply = httpUtil->sendGetRequest(request); + const QByteArray reply_data = reply->readAll(); + QJsonDocument jsonDocument = QJsonDocument::fromJson(reply_data); + if(jsonDocument.isNull() == false) + { + resultObj = jsonDocument.object(); + } else + { + resultObj.insert("code", -1); + } + + qDebug() << resultObj; + + return resultObj; +} diff --git a/CounterRealTime/common/HttpRequestController.h b/CounterRealTime/common/HttpRequestController.h index 860aafa..a70e5aa 100644 --- a/CounterRealTime/common/HttpRequestController.h +++ b/CounterRealTime/common/HttpRequestController.h @@ -26,6 +26,8 @@ QJsonObject updateChannelInfo(QJsonArray channelInfos); + QJsonObject getSysClockAlarmCount(); + private: HttpRequestUtil * httpUtil; diff --git a/CounterRealTime/common/LinearRegression.cpp b/CounterRealTime/common/LinearRegression.cpp index 4293e49..d3a211f 100644 --- a/CounterRealTime/common/LinearRegression.cpp +++ b/CounterRealTime/common/LinearRegression.cpp @@ -1,6 +1,6 @@ #include "LinearRegression.h" -#include #include +#include LinearRegression::LinearRegression() { @@ -33,10 +33,9 @@ slopeDown = slopeDown + temp1 * temp1; } - std::cout << QString::number(slopeUp, 'f', 20).toStdString() << " " << QString::number(slopeDown, 'f', 20).toStdString() << std::endl; - + qDebug() << QString::number(slopeUp, 'f', 20) << " " << QString::number(slopeDown, 'f', 20); slope = slopeUp / slopeDown; intercept = yAverage - xAverage * slope; - std::cout << QString::number(slope, 'f', 20).toStdString() << " == " << QString::number(intercept, 'f', 20).toStdString() << std::endl; + qDebug() << QString::number(slope, 'f', 20) << " == " << QString::number(intercept, 'f', 20); } diff --git a/CounterRealTime/common/utils/QKafkaUtil.cpp b/CounterRealTime/common/utils/QKafkaUtil.cpp index 231c02b..d3ba348 100644 --- a/CounterRealTime/common/utils/QKafkaUtil.cpp +++ b/CounterRealTime/common/utils/QKafkaUtil.cpp @@ -64,8 +64,8 @@ RdKafka::err2str(retCode) << std::endl; } else { - std::cerr << "Enqueued message (" << message.size() << " bytes) " << - "for topic " << topic.toStdString() << "[" << message.toStdString() <<"]" << std::endl; +// std::cerr << "Enqueued message (" << message.size() << " bytes) " << +// "for topic " << topic.toStdString() << "[" << message.toStdString() <<"]" << std::endl; } return retCode; diff --git a/CounterAcq/CounterDevice.cpp b/CounterAcq/CounterDevice.cpp index a2acd83..a794ab6 100644 --- a/CounterAcq/CounterDevice.cpp +++ b/CounterAcq/CounterDevice.cpp @@ -69,7 +69,7 @@ void CounterDevice::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); - std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; +// std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; CounterDataDto * counterData = new CounterDataDto(this); if (CounterProtocolXH::checkFrame(this->dataBuff) == true) @@ -113,6 +113,7 @@ QLogUtil::writeRawDataLogByDate(date, filename, content); QJsonArray messageArray; + QString msgLogFilename = "msg_" + devCode + ".log"; // 2. 各个通道的clock diff数据 for (int i = 1; i <= counterData->channelActiveArray.size(); i++) @@ -156,6 +157,8 @@ kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); } + QLogUtil::writeChannelDataLogByDate(date, msgLogFilename, QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); + // 4. 在界面上简单显示相差数据结果 emit this->sendDataToDraw(counterData); } diff --git a/CounterAcq/CounterWindow.cpp b/CounterAcq/CounterWindow.cpp index c4e78c4..9ffbaa8 100644 --- a/CounterAcq/CounterWindow.cpp +++ b/CounterAcq/CounterWindow.cpp @@ -41,7 +41,6 @@ if (retCode != 200) { QMessageBox::information(this, "错误", "获取http请求的token失败,程序即将退出"); - QTimer::singleShot(1000, qApp, SLOT(quit())); } // 2. 获取字典值:设备类型 diff --git a/CounterRealTime/ChannelChartForm.cpp b/CounterRealTime/ChannelChartForm.cpp index 0404c9d..9a68053 100644 --- a/CounterRealTime/ChannelChartForm.cpp +++ b/CounterRealTime/ChannelChartForm.cpp @@ -1,6 +1,5 @@ #include "ChannelChartForm.h" #include "ui_ChannelChartForm.h" -#include ChannelChartForm::ChannelChartForm(QWidget *parent) : QWidget(parent), @@ -138,8 +137,6 @@ timeVec[i] = onePoint.key; valueVec[i] = onePoint.value; -// std::cout << QString::number(timeVec[i], 'f', 0).toStdString() << " " << QString::number(valueVec[i], 'f', 12).toStdString() << std::endl; - vecPoints.append(onePoint); if (hisDataVect.at(i).at(1).toDouble() * 1E9 < minValue) @@ -194,8 +191,6 @@ ui->analysisPlot->legend->setVisible(false); ui->analysisPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom); // 设置曲线可以拖动 可以缩放 - - std::cout << hisDataVect.size() << " " << QString::number(lineReg.slope, 'f', 12).toStdString() << " " << QString::number(lineReg.intercept, 'f', 12).toStdString() << std::endl; } void ChannelChartForm::on_btnChartClose_clicked() diff --git a/CounterRealTime/CounterDevice.cpp b/CounterRealTime/CounterDevice.cpp index 1528373..bf3fa8c 100644 --- a/CounterRealTime/CounterDevice.cpp +++ b/CounterRealTime/CounterDevice.cpp @@ -2,6 +2,7 @@ #include #include +#include CounterDevice::CounterDevice(QObject *parent) : QObject(parent) { @@ -118,6 +119,7 @@ { qDebug() << QString("%1").arg(this->dataBuff.size()); this->dataBuff.clear(); + std::cout << "clear buffer" << std::endl; } // 在此处释放内存,不影响后续显示 @@ -138,6 +140,7 @@ QLogUtil::writeRawDataLogByDate(date, filename, content); QJsonArray messageArray; + QString msgLogFilename = "msg_" + devCode + ".log"; // 2. 各个通道的clock diff数据 for (int i = 1; i <= counterData->channelActiveArray.size(); i++) @@ -189,10 +192,10 @@ { kafkaUtil.produceMessage(QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); - } -// qDebug() << counterData->rawFrame; -// qDebug() << messageArray; + qDebug() << messageArray; + QLogUtil::writeChannelDataLogByDate(date, msgLogFilename, QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); + } // 4. 在界面上简单显示相差数据结果 emit this->sendDataToDraw(messageArray); diff --git a/CounterRealTime/CounterRealTime.pro b/CounterRealTime/CounterRealTime.pro index 0cf7c97..dd3d1eb 100644 --- a/CounterRealTime/CounterRealTime.pro +++ b/CounterRealTime/CounterRealTime.pro @@ -51,3 +51,5 @@ INCLUDEPATH += $$PWD/include/librdkafka DEPENDPATH += $$PWD/include/librdkafka + +DISTFILES += conf/config.ini diff --git a/CounterRealTime/CounterWindowRT.cpp b/CounterRealTime/CounterWindowRT.cpp index 86a7776..37b6cb6 100644 --- a/CounterRealTime/CounterWindowRT.cpp +++ b/CounterRealTime/CounterWindowRT.cpp @@ -23,6 +23,8 @@ file.close(); } + ui->labTitle->setText(QString("钟差测量数据采集软件——%1").arg(SettingConfig::getInstance().MASTER == 1 ? "主" : "备")); + // kafka consumer kafkaConsumer = new QKafkaConsumer(this); kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); @@ -66,6 +68,8 @@ CounterDevice * devicePtr = ConstCache::getInstance().deviceMap.value(ConstCache::getInstance().deviceIdLoopB.at(i)); devicePtr->initSerialPort(); } + + httpReq->getSysClockAlarmCount(); } CounterWindowRT::~CounterWindowRT() @@ -479,4 +483,27 @@ void CounterWindowRT::onKafkaMessageReceived(QJsonObject message) { qDebug() << message; + std::cout << QString(QJsonDocument(message).toJson(QJsonDocument::Compact)).toStdString() << std::endl; + + // 找不到deviceId deviceType operation三个必填项 直接返回 + if (message.contains("deviceId") == false || message.contains("operation") == false || message.contains("deviceType") == false) { + return; + } + + // deviceType不是计数器 直接返回 + if (message.value("deviceType").toString() != "01") { + return; + } + + QString deviceId = message.value("deviceId").toString(); + + if (message.contains("chanelId") == true) + { + this->getChannelList(deviceId); + } else + { + ConstCache::getInstance().channelMap.clear(); + ConstCache::getInstance().deviceMap.clear(); + this->getDeviceList(); + } } diff --git a/CounterRealTime/common/HttpRequestController.cpp b/CounterRealTime/common/HttpRequestController.cpp index b287ed5..bfe6311 100644 --- a/CounterRealTime/common/HttpRequestController.cpp +++ b/CounterRealTime/common/HttpRequestController.cpp @@ -260,3 +260,34 @@ return resultObj; } + +QJsonObject HttpRequestController::getSysClockAlarmCount() +{ + QJsonObject resultObj; + + // 获取设备列表的接口地址 + QUrl url = baseUrl + "/alarm/alarmCount"; + + QNetworkRequest request; + request.setUrl(url); + request.setRawHeader("Content-type", "application/json"); + request.setRawHeader("token", token.toLocal8Bit()); + request.setRawHeader("system", SettingConfig::getInstance().SYSTEM.toLocal8Bit()); + + qDebug() << url; + + QNetworkReply * reply = httpUtil->sendGetRequest(request); + const QByteArray reply_data = reply->readAll(); + QJsonDocument jsonDocument = QJsonDocument::fromJson(reply_data); + if(jsonDocument.isNull() == false) + { + resultObj = jsonDocument.object(); + } else + { + resultObj.insert("code", -1); + } + + qDebug() << resultObj; + + return resultObj; +} diff --git a/CounterRealTime/common/HttpRequestController.h b/CounterRealTime/common/HttpRequestController.h index 860aafa..a70e5aa 100644 --- a/CounterRealTime/common/HttpRequestController.h +++ b/CounterRealTime/common/HttpRequestController.h @@ -26,6 +26,8 @@ QJsonObject updateChannelInfo(QJsonArray channelInfos); + QJsonObject getSysClockAlarmCount(); + private: HttpRequestUtil * httpUtil; diff --git a/CounterRealTime/common/LinearRegression.cpp b/CounterRealTime/common/LinearRegression.cpp index 4293e49..d3a211f 100644 --- a/CounterRealTime/common/LinearRegression.cpp +++ b/CounterRealTime/common/LinearRegression.cpp @@ -1,6 +1,6 @@ #include "LinearRegression.h" -#include #include +#include LinearRegression::LinearRegression() { @@ -33,10 +33,9 @@ slopeDown = slopeDown + temp1 * temp1; } - std::cout << QString::number(slopeUp, 'f', 20).toStdString() << " " << QString::number(slopeDown, 'f', 20).toStdString() << std::endl; - + qDebug() << QString::number(slopeUp, 'f', 20) << " " << QString::number(slopeDown, 'f', 20); slope = slopeUp / slopeDown; intercept = yAverage - xAverage * slope; - std::cout << QString::number(slope, 'f', 20).toStdString() << " == " << QString::number(intercept, 'f', 20).toStdString() << std::endl; + qDebug() << QString::number(slope, 'f', 20) << " == " << QString::number(intercept, 'f', 20); } diff --git a/CounterRealTime/common/utils/QKafkaUtil.cpp b/CounterRealTime/common/utils/QKafkaUtil.cpp index 231c02b..d3ba348 100644 --- a/CounterRealTime/common/utils/QKafkaUtil.cpp +++ b/CounterRealTime/common/utils/QKafkaUtil.cpp @@ -64,8 +64,8 @@ RdKafka::err2str(retCode) << std::endl; } else { - std::cerr << "Enqueued message (" << message.size() << " bytes) " << - "for topic " << topic.toStdString() << "[" << message.toStdString() <<"]" << std::endl; +// std::cerr << "Enqueued message (" << message.size() << " bytes) " << +// "for topic " << topic.toStdString() << "[" << message.toStdString() <<"]" << std::endl; } return retCode; diff --git a/CounterRealTime/common/utils/QSerialPortUtil.cpp b/CounterRealTime/common/utils/QSerialPortUtil.cpp index 7c7cf55..be27392 100644 --- a/CounterRealTime/common/utils/QSerialPortUtil.cpp +++ b/CounterRealTime/common/utils/QSerialPortUtil.cpp @@ -1,6 +1,6 @@ #include "QSerialPortUtil.h" -#include +#include #include #include #include "SettingConfig.h" @@ -23,7 +23,7 @@ if (SettingConfig::getInstance().WORK_TYPE == "mock") { - std::cout << portName.toStdString() << QString(" - %1 - mock").arg(baudRate).toStdString() << std::endl; + qDebug() << portName << QString(" - %1 - mock").arg(baudRate); // mock data received per second QTimer * timer = new QTimer(this); @@ -33,15 +33,12 @@ } else { open = serial.open(QIODevice::ReadWrite); - std::cout << portName.toStdString() << QString(" - %1").arg(baudRate).toStdString() << std::endl; if (open == true) { // 绑定信号与槽 connect(&serial, &QSerialPort::readyRead, this, &QSerialPortUtil::readData); } - - std::cout << " - " << open << std::endl; } } @@ -49,7 +46,7 @@ { if (this->open == true) { - std::cout << data.toStdString() << std::endl; + qDebug() << data; serial.write(data); } } diff --git a/CounterAcq/CounterDevice.cpp b/CounterAcq/CounterDevice.cpp index a2acd83..a794ab6 100644 --- a/CounterAcq/CounterDevice.cpp +++ b/CounterAcq/CounterDevice.cpp @@ -69,7 +69,7 @@ void CounterDevice::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); - std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; +// std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; CounterDataDto * counterData = new CounterDataDto(this); if (CounterProtocolXH::checkFrame(this->dataBuff) == true) @@ -113,6 +113,7 @@ QLogUtil::writeRawDataLogByDate(date, filename, content); QJsonArray messageArray; + QString msgLogFilename = "msg_" + devCode + ".log"; // 2. 各个通道的clock diff数据 for (int i = 1; i <= counterData->channelActiveArray.size(); i++) @@ -156,6 +157,8 @@ kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); } + QLogUtil::writeChannelDataLogByDate(date, msgLogFilename, QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); + // 4. 在界面上简单显示相差数据结果 emit this->sendDataToDraw(counterData); } diff --git a/CounterAcq/CounterWindow.cpp b/CounterAcq/CounterWindow.cpp index c4e78c4..9ffbaa8 100644 --- a/CounterAcq/CounterWindow.cpp +++ b/CounterAcq/CounterWindow.cpp @@ -41,7 +41,6 @@ if (retCode != 200) { QMessageBox::information(this, "错误", "获取http请求的token失败,程序即将退出"); - QTimer::singleShot(1000, qApp, SLOT(quit())); } // 2. 获取字典值:设备类型 diff --git a/CounterRealTime/ChannelChartForm.cpp b/CounterRealTime/ChannelChartForm.cpp index 0404c9d..9a68053 100644 --- a/CounterRealTime/ChannelChartForm.cpp +++ b/CounterRealTime/ChannelChartForm.cpp @@ -1,6 +1,5 @@ #include "ChannelChartForm.h" #include "ui_ChannelChartForm.h" -#include ChannelChartForm::ChannelChartForm(QWidget *parent) : QWidget(parent), @@ -138,8 +137,6 @@ timeVec[i] = onePoint.key; valueVec[i] = onePoint.value; -// std::cout << QString::number(timeVec[i], 'f', 0).toStdString() << " " << QString::number(valueVec[i], 'f', 12).toStdString() << std::endl; - vecPoints.append(onePoint); if (hisDataVect.at(i).at(1).toDouble() * 1E9 < minValue) @@ -194,8 +191,6 @@ ui->analysisPlot->legend->setVisible(false); ui->analysisPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom); // 设置曲线可以拖动 可以缩放 - - std::cout << hisDataVect.size() << " " << QString::number(lineReg.slope, 'f', 12).toStdString() << " " << QString::number(lineReg.intercept, 'f', 12).toStdString() << std::endl; } void ChannelChartForm::on_btnChartClose_clicked() diff --git a/CounterRealTime/CounterDevice.cpp b/CounterRealTime/CounterDevice.cpp index 1528373..bf3fa8c 100644 --- a/CounterRealTime/CounterDevice.cpp +++ b/CounterRealTime/CounterDevice.cpp @@ -2,6 +2,7 @@ #include #include +#include CounterDevice::CounterDevice(QObject *parent) : QObject(parent) { @@ -118,6 +119,7 @@ { qDebug() << QString("%1").arg(this->dataBuff.size()); this->dataBuff.clear(); + std::cout << "clear buffer" << std::endl; } // 在此处释放内存,不影响后续显示 @@ -138,6 +140,7 @@ QLogUtil::writeRawDataLogByDate(date, filename, content); QJsonArray messageArray; + QString msgLogFilename = "msg_" + devCode + ".log"; // 2. 各个通道的clock diff数据 for (int i = 1; i <= counterData->channelActiveArray.size(); i++) @@ -189,10 +192,10 @@ { kafkaUtil.produceMessage(QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); - } -// qDebug() << counterData->rawFrame; -// qDebug() << messageArray; + qDebug() << messageArray; + QLogUtil::writeChannelDataLogByDate(date, msgLogFilename, QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); + } // 4. 在界面上简单显示相差数据结果 emit this->sendDataToDraw(messageArray); diff --git a/CounterRealTime/CounterRealTime.pro b/CounterRealTime/CounterRealTime.pro index 0cf7c97..dd3d1eb 100644 --- a/CounterRealTime/CounterRealTime.pro +++ b/CounterRealTime/CounterRealTime.pro @@ -51,3 +51,5 @@ INCLUDEPATH += $$PWD/include/librdkafka DEPENDPATH += $$PWD/include/librdkafka + +DISTFILES += conf/config.ini diff --git a/CounterRealTime/CounterWindowRT.cpp b/CounterRealTime/CounterWindowRT.cpp index 86a7776..37b6cb6 100644 --- a/CounterRealTime/CounterWindowRT.cpp +++ b/CounterRealTime/CounterWindowRT.cpp @@ -23,6 +23,8 @@ file.close(); } + ui->labTitle->setText(QString("钟差测量数据采集软件——%1").arg(SettingConfig::getInstance().MASTER == 1 ? "主" : "备")); + // kafka consumer kafkaConsumer = new QKafkaConsumer(this); kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); @@ -66,6 +68,8 @@ CounterDevice * devicePtr = ConstCache::getInstance().deviceMap.value(ConstCache::getInstance().deviceIdLoopB.at(i)); devicePtr->initSerialPort(); } + + httpReq->getSysClockAlarmCount(); } CounterWindowRT::~CounterWindowRT() @@ -479,4 +483,27 @@ void CounterWindowRT::onKafkaMessageReceived(QJsonObject message) { qDebug() << message; + std::cout << QString(QJsonDocument(message).toJson(QJsonDocument::Compact)).toStdString() << std::endl; + + // 找不到deviceId deviceType operation三个必填项 直接返回 + if (message.contains("deviceId") == false || message.contains("operation") == false || message.contains("deviceType") == false) { + return; + } + + // deviceType不是计数器 直接返回 + if (message.value("deviceType").toString() != "01") { + return; + } + + QString deviceId = message.value("deviceId").toString(); + + if (message.contains("chanelId") == true) + { + this->getChannelList(deviceId); + } else + { + ConstCache::getInstance().channelMap.clear(); + ConstCache::getInstance().deviceMap.clear(); + this->getDeviceList(); + } } diff --git a/CounterRealTime/common/HttpRequestController.cpp b/CounterRealTime/common/HttpRequestController.cpp index b287ed5..bfe6311 100644 --- a/CounterRealTime/common/HttpRequestController.cpp +++ b/CounterRealTime/common/HttpRequestController.cpp @@ -260,3 +260,34 @@ return resultObj; } + +QJsonObject HttpRequestController::getSysClockAlarmCount() +{ + QJsonObject resultObj; + + // 获取设备列表的接口地址 + QUrl url = baseUrl + "/alarm/alarmCount"; + + QNetworkRequest request; + request.setUrl(url); + request.setRawHeader("Content-type", "application/json"); + request.setRawHeader("token", token.toLocal8Bit()); + request.setRawHeader("system", SettingConfig::getInstance().SYSTEM.toLocal8Bit()); + + qDebug() << url; + + QNetworkReply * reply = httpUtil->sendGetRequest(request); + const QByteArray reply_data = reply->readAll(); + QJsonDocument jsonDocument = QJsonDocument::fromJson(reply_data); + if(jsonDocument.isNull() == false) + { + resultObj = jsonDocument.object(); + } else + { + resultObj.insert("code", -1); + } + + qDebug() << resultObj; + + return resultObj; +} diff --git a/CounterRealTime/common/HttpRequestController.h b/CounterRealTime/common/HttpRequestController.h index 860aafa..a70e5aa 100644 --- a/CounterRealTime/common/HttpRequestController.h +++ b/CounterRealTime/common/HttpRequestController.h @@ -26,6 +26,8 @@ QJsonObject updateChannelInfo(QJsonArray channelInfos); + QJsonObject getSysClockAlarmCount(); + private: HttpRequestUtil * httpUtil; diff --git a/CounterRealTime/common/LinearRegression.cpp b/CounterRealTime/common/LinearRegression.cpp index 4293e49..d3a211f 100644 --- a/CounterRealTime/common/LinearRegression.cpp +++ b/CounterRealTime/common/LinearRegression.cpp @@ -1,6 +1,6 @@ #include "LinearRegression.h" -#include #include +#include LinearRegression::LinearRegression() { @@ -33,10 +33,9 @@ slopeDown = slopeDown + temp1 * temp1; } - std::cout << QString::number(slopeUp, 'f', 20).toStdString() << " " << QString::number(slopeDown, 'f', 20).toStdString() << std::endl; - + qDebug() << QString::number(slopeUp, 'f', 20) << " " << QString::number(slopeDown, 'f', 20); slope = slopeUp / slopeDown; intercept = yAverage - xAverage * slope; - std::cout << QString::number(slope, 'f', 20).toStdString() << " == " << QString::number(intercept, 'f', 20).toStdString() << std::endl; + qDebug() << QString::number(slope, 'f', 20) << " == " << QString::number(intercept, 'f', 20); } diff --git a/CounterRealTime/common/utils/QKafkaUtil.cpp b/CounterRealTime/common/utils/QKafkaUtil.cpp index 231c02b..d3ba348 100644 --- a/CounterRealTime/common/utils/QKafkaUtil.cpp +++ b/CounterRealTime/common/utils/QKafkaUtil.cpp @@ -64,8 +64,8 @@ RdKafka::err2str(retCode) << std::endl; } else { - std::cerr << "Enqueued message (" << message.size() << " bytes) " << - "for topic " << topic.toStdString() << "[" << message.toStdString() <<"]" << std::endl; +// std::cerr << "Enqueued message (" << message.size() << " bytes) " << +// "for topic " << topic.toStdString() << "[" << message.toStdString() <<"]" << std::endl; } return retCode; diff --git a/CounterRealTime/common/utils/QSerialPortUtil.cpp b/CounterRealTime/common/utils/QSerialPortUtil.cpp index 7c7cf55..be27392 100644 --- a/CounterRealTime/common/utils/QSerialPortUtil.cpp +++ b/CounterRealTime/common/utils/QSerialPortUtil.cpp @@ -1,6 +1,6 @@ #include "QSerialPortUtil.h" -#include +#include #include #include #include "SettingConfig.h" @@ -23,7 +23,7 @@ if (SettingConfig::getInstance().WORK_TYPE == "mock") { - std::cout << portName.toStdString() << QString(" - %1 - mock").arg(baudRate).toStdString() << std::endl; + qDebug() << portName << QString(" - %1 - mock").arg(baudRate); // mock data received per second QTimer * timer = new QTimer(this); @@ -33,15 +33,12 @@ } else { open = serial.open(QIODevice::ReadWrite); - std::cout << portName.toStdString() << QString(" - %1").arg(baudRate).toStdString() << std::endl; if (open == true) { // 绑定信号与槽 connect(&serial, &QSerialPort::readyRead, this, &QSerialPortUtil::readData); } - - std::cout << " - " << open << std::endl; } } @@ -49,7 +46,7 @@ { if (this->open == true) { - std::cout << data.toStdString() << std::endl; + qDebug() << data; serial.write(data); } } diff --git a/CounterRealTime/conf/config.ini b/CounterRealTime/conf/config.ini new file mode 100644 index 0000000..2ea0a01 --- /dev/null +++ b/CounterRealTime/conf/config.ini @@ -0,0 +1,32 @@ +[com] +baudRate=115200 + +[window] +width=1920 +height=1080 + +[kafka] +needKafka=0 +brokers="192.168.20.135:9092,192.168.20.131:9092,192.168.20.132:9092" +dataTopic="clock-data" +statusTopic="dev-status" +msgTopic="clock-message" +needSasl=1 +saslUsername="admin" +saslPassword="casicss" + +[client] +clientId="clock" +appKey="bd347bdd20943d2db8af558c3712a357" +devTypes="01" +system="clock" +workMode="mock" +master=1 +displayCount=4 +serverPort=5905 + +[http] +baseUrl="http://192.168.20.135:11410" + +[log] +basePath="/home/casic203tflab/Qt/ZXSSCJ/bin/logs/CounterAcq/" diff --git a/CounterAcq/CounterDevice.cpp b/CounterAcq/CounterDevice.cpp index a2acd83..a794ab6 100644 --- a/CounterAcq/CounterDevice.cpp +++ b/CounterAcq/CounterDevice.cpp @@ -69,7 +69,7 @@ void CounterDevice::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); - std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; +// std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; CounterDataDto * counterData = new CounterDataDto(this); if (CounterProtocolXH::checkFrame(this->dataBuff) == true) @@ -113,6 +113,7 @@ QLogUtil::writeRawDataLogByDate(date, filename, content); QJsonArray messageArray; + QString msgLogFilename = "msg_" + devCode + ".log"; // 2. 各个通道的clock diff数据 for (int i = 1; i <= counterData->channelActiveArray.size(); i++) @@ -156,6 +157,8 @@ kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); } + QLogUtil::writeChannelDataLogByDate(date, msgLogFilename, QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); + // 4. 在界面上简单显示相差数据结果 emit this->sendDataToDraw(counterData); } diff --git a/CounterAcq/CounterWindow.cpp b/CounterAcq/CounterWindow.cpp index c4e78c4..9ffbaa8 100644 --- a/CounterAcq/CounterWindow.cpp +++ b/CounterAcq/CounterWindow.cpp @@ -41,7 +41,6 @@ if (retCode != 200) { QMessageBox::information(this, "错误", "获取http请求的token失败,程序即将退出"); - QTimer::singleShot(1000, qApp, SLOT(quit())); } // 2. 获取字典值:设备类型 diff --git a/CounterRealTime/ChannelChartForm.cpp b/CounterRealTime/ChannelChartForm.cpp index 0404c9d..9a68053 100644 --- a/CounterRealTime/ChannelChartForm.cpp +++ b/CounterRealTime/ChannelChartForm.cpp @@ -1,6 +1,5 @@ #include "ChannelChartForm.h" #include "ui_ChannelChartForm.h" -#include ChannelChartForm::ChannelChartForm(QWidget *parent) : QWidget(parent), @@ -138,8 +137,6 @@ timeVec[i] = onePoint.key; valueVec[i] = onePoint.value; -// std::cout << QString::number(timeVec[i], 'f', 0).toStdString() << " " << QString::number(valueVec[i], 'f', 12).toStdString() << std::endl; - vecPoints.append(onePoint); if (hisDataVect.at(i).at(1).toDouble() * 1E9 < minValue) @@ -194,8 +191,6 @@ ui->analysisPlot->legend->setVisible(false); ui->analysisPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom); // 设置曲线可以拖动 可以缩放 - - std::cout << hisDataVect.size() << " " << QString::number(lineReg.slope, 'f', 12).toStdString() << " " << QString::number(lineReg.intercept, 'f', 12).toStdString() << std::endl; } void ChannelChartForm::on_btnChartClose_clicked() diff --git a/CounterRealTime/CounterDevice.cpp b/CounterRealTime/CounterDevice.cpp index 1528373..bf3fa8c 100644 --- a/CounterRealTime/CounterDevice.cpp +++ b/CounterRealTime/CounterDevice.cpp @@ -2,6 +2,7 @@ #include #include +#include CounterDevice::CounterDevice(QObject *parent) : QObject(parent) { @@ -118,6 +119,7 @@ { qDebug() << QString("%1").arg(this->dataBuff.size()); this->dataBuff.clear(); + std::cout << "clear buffer" << std::endl; } // 在此处释放内存,不影响后续显示 @@ -138,6 +140,7 @@ QLogUtil::writeRawDataLogByDate(date, filename, content); QJsonArray messageArray; + QString msgLogFilename = "msg_" + devCode + ".log"; // 2. 各个通道的clock diff数据 for (int i = 1; i <= counterData->channelActiveArray.size(); i++) @@ -189,10 +192,10 @@ { kafkaUtil.produceMessage(QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); - } -// qDebug() << counterData->rawFrame; -// qDebug() << messageArray; + qDebug() << messageArray; + QLogUtil::writeChannelDataLogByDate(date, msgLogFilename, QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); + } // 4. 在界面上简单显示相差数据结果 emit this->sendDataToDraw(messageArray); diff --git a/CounterRealTime/CounterRealTime.pro b/CounterRealTime/CounterRealTime.pro index 0cf7c97..dd3d1eb 100644 --- a/CounterRealTime/CounterRealTime.pro +++ b/CounterRealTime/CounterRealTime.pro @@ -51,3 +51,5 @@ INCLUDEPATH += $$PWD/include/librdkafka DEPENDPATH += $$PWD/include/librdkafka + +DISTFILES += conf/config.ini diff --git a/CounterRealTime/CounterWindowRT.cpp b/CounterRealTime/CounterWindowRT.cpp index 86a7776..37b6cb6 100644 --- a/CounterRealTime/CounterWindowRT.cpp +++ b/CounterRealTime/CounterWindowRT.cpp @@ -23,6 +23,8 @@ file.close(); } + ui->labTitle->setText(QString("钟差测量数据采集软件——%1").arg(SettingConfig::getInstance().MASTER == 1 ? "主" : "备")); + // kafka consumer kafkaConsumer = new QKafkaConsumer(this); kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); @@ -66,6 +68,8 @@ CounterDevice * devicePtr = ConstCache::getInstance().deviceMap.value(ConstCache::getInstance().deviceIdLoopB.at(i)); devicePtr->initSerialPort(); } + + httpReq->getSysClockAlarmCount(); } CounterWindowRT::~CounterWindowRT() @@ -479,4 +483,27 @@ void CounterWindowRT::onKafkaMessageReceived(QJsonObject message) { qDebug() << message; + std::cout << QString(QJsonDocument(message).toJson(QJsonDocument::Compact)).toStdString() << std::endl; + + // 找不到deviceId deviceType operation三个必填项 直接返回 + if (message.contains("deviceId") == false || message.contains("operation") == false || message.contains("deviceType") == false) { + return; + } + + // deviceType不是计数器 直接返回 + if (message.value("deviceType").toString() != "01") { + return; + } + + QString deviceId = message.value("deviceId").toString(); + + if (message.contains("chanelId") == true) + { + this->getChannelList(deviceId); + } else + { + ConstCache::getInstance().channelMap.clear(); + ConstCache::getInstance().deviceMap.clear(); + this->getDeviceList(); + } } diff --git a/CounterRealTime/common/HttpRequestController.cpp b/CounterRealTime/common/HttpRequestController.cpp index b287ed5..bfe6311 100644 --- a/CounterRealTime/common/HttpRequestController.cpp +++ b/CounterRealTime/common/HttpRequestController.cpp @@ -260,3 +260,34 @@ return resultObj; } + +QJsonObject HttpRequestController::getSysClockAlarmCount() +{ + QJsonObject resultObj; + + // 获取设备列表的接口地址 + QUrl url = baseUrl + "/alarm/alarmCount"; + + QNetworkRequest request; + request.setUrl(url); + request.setRawHeader("Content-type", "application/json"); + request.setRawHeader("token", token.toLocal8Bit()); + request.setRawHeader("system", SettingConfig::getInstance().SYSTEM.toLocal8Bit()); + + qDebug() << url; + + QNetworkReply * reply = httpUtil->sendGetRequest(request); + const QByteArray reply_data = reply->readAll(); + QJsonDocument jsonDocument = QJsonDocument::fromJson(reply_data); + if(jsonDocument.isNull() == false) + { + resultObj = jsonDocument.object(); + } else + { + resultObj.insert("code", -1); + } + + qDebug() << resultObj; + + return resultObj; +} diff --git a/CounterRealTime/common/HttpRequestController.h b/CounterRealTime/common/HttpRequestController.h index 860aafa..a70e5aa 100644 --- a/CounterRealTime/common/HttpRequestController.h +++ b/CounterRealTime/common/HttpRequestController.h @@ -26,6 +26,8 @@ QJsonObject updateChannelInfo(QJsonArray channelInfos); + QJsonObject getSysClockAlarmCount(); + private: HttpRequestUtil * httpUtil; diff --git a/CounterRealTime/common/LinearRegression.cpp b/CounterRealTime/common/LinearRegression.cpp index 4293e49..d3a211f 100644 --- a/CounterRealTime/common/LinearRegression.cpp +++ b/CounterRealTime/common/LinearRegression.cpp @@ -1,6 +1,6 @@ #include "LinearRegression.h" -#include #include +#include LinearRegression::LinearRegression() { @@ -33,10 +33,9 @@ slopeDown = slopeDown + temp1 * temp1; } - std::cout << QString::number(slopeUp, 'f', 20).toStdString() << " " << QString::number(slopeDown, 'f', 20).toStdString() << std::endl; - + qDebug() << QString::number(slopeUp, 'f', 20) << " " << QString::number(slopeDown, 'f', 20); slope = slopeUp / slopeDown; intercept = yAverage - xAverage * slope; - std::cout << QString::number(slope, 'f', 20).toStdString() << " == " << QString::number(intercept, 'f', 20).toStdString() << std::endl; + qDebug() << QString::number(slope, 'f', 20) << " == " << QString::number(intercept, 'f', 20); } diff --git a/CounterRealTime/common/utils/QKafkaUtil.cpp b/CounterRealTime/common/utils/QKafkaUtil.cpp index 231c02b..d3ba348 100644 --- a/CounterRealTime/common/utils/QKafkaUtil.cpp +++ b/CounterRealTime/common/utils/QKafkaUtil.cpp @@ -64,8 +64,8 @@ RdKafka::err2str(retCode) << std::endl; } else { - std::cerr << "Enqueued message (" << message.size() << " bytes) " << - "for topic " << topic.toStdString() << "[" << message.toStdString() <<"]" << std::endl; +// std::cerr << "Enqueued message (" << message.size() << " bytes) " << +// "for topic " << topic.toStdString() << "[" << message.toStdString() <<"]" << std::endl; } return retCode; diff --git a/CounterRealTime/common/utils/QSerialPortUtil.cpp b/CounterRealTime/common/utils/QSerialPortUtil.cpp index 7c7cf55..be27392 100644 --- a/CounterRealTime/common/utils/QSerialPortUtil.cpp +++ b/CounterRealTime/common/utils/QSerialPortUtil.cpp @@ -1,6 +1,6 @@ #include "QSerialPortUtil.h" -#include +#include #include #include #include "SettingConfig.h" @@ -23,7 +23,7 @@ if (SettingConfig::getInstance().WORK_TYPE == "mock") { - std::cout << portName.toStdString() << QString(" - %1 - mock").arg(baudRate).toStdString() << std::endl; + qDebug() << portName << QString(" - %1 - mock").arg(baudRate); // mock data received per second QTimer * timer = new QTimer(this); @@ -33,15 +33,12 @@ } else { open = serial.open(QIODevice::ReadWrite); - std::cout << portName.toStdString() << QString(" - %1").arg(baudRate).toStdString() << std::endl; if (open == true) { // 绑定信号与槽 connect(&serial, &QSerialPort::readyRead, this, &QSerialPortUtil::readData); } - - std::cout << " - " << open << std::endl; } } @@ -49,7 +46,7 @@ { if (this->open == true) { - std::cout << data.toStdString() << std::endl; + qDebug() << data; serial.write(data); } } diff --git a/CounterRealTime/conf/config.ini b/CounterRealTime/conf/config.ini new file mode 100644 index 0000000..2ea0a01 --- /dev/null +++ b/CounterRealTime/conf/config.ini @@ -0,0 +1,32 @@ +[com] +baudRate=115200 + +[window] +width=1920 +height=1080 + +[kafka] +needKafka=0 +brokers="192.168.20.135:9092,192.168.20.131:9092,192.168.20.132:9092" +dataTopic="clock-data" +statusTopic="dev-status" +msgTopic="clock-message" +needSasl=1 +saslUsername="admin" +saslPassword="casicss" + +[client] +clientId="clock" +appKey="bd347bdd20943d2db8af558c3712a357" +devTypes="01" +system="clock" +workMode="mock" +master=1 +displayCount=4 +serverPort=5905 + +[http] +baseUrl="http://192.168.20.135:11410" + +[log] +basePath="/home/casic203tflab/Qt/ZXSSCJ/bin/logs/CounterAcq/" diff --git a/DeviceHub/device/FreqSwitcher.cpp b/DeviceHub/device/FreqSwitcher.cpp index f31d628..411e6d1 100644 --- a/DeviceHub/device/FreqSwitcher.cpp +++ b/DeviceHub/device/FreqSwitcher.cpp @@ -47,6 +47,7 @@ void FreqSwitcher::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); + QList frameList = protocol->extractFrameList(this->dataBuff); if (frameList.size() > 0) { @@ -62,6 +63,7 @@ { this->dataBuffB.append(data); QList frameListB = protocol->extractFrameList(this->dataBuffB); + if (frameListB.size() > 0) { this->dataBuffB.clear(); diff --git a/CounterAcq/CounterDevice.cpp b/CounterAcq/CounterDevice.cpp index a2acd83..a794ab6 100644 --- a/CounterAcq/CounterDevice.cpp +++ b/CounterAcq/CounterDevice.cpp @@ -69,7 +69,7 @@ void CounterDevice::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); - std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; +// std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; CounterDataDto * counterData = new CounterDataDto(this); if (CounterProtocolXH::checkFrame(this->dataBuff) == true) @@ -113,6 +113,7 @@ QLogUtil::writeRawDataLogByDate(date, filename, content); QJsonArray messageArray; + QString msgLogFilename = "msg_" + devCode + ".log"; // 2. 各个通道的clock diff数据 for (int i = 1; i <= counterData->channelActiveArray.size(); i++) @@ -156,6 +157,8 @@ kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); } + QLogUtil::writeChannelDataLogByDate(date, msgLogFilename, QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); + // 4. 在界面上简单显示相差数据结果 emit this->sendDataToDraw(counterData); } diff --git a/CounterAcq/CounterWindow.cpp b/CounterAcq/CounterWindow.cpp index c4e78c4..9ffbaa8 100644 --- a/CounterAcq/CounterWindow.cpp +++ b/CounterAcq/CounterWindow.cpp @@ -41,7 +41,6 @@ if (retCode != 200) { QMessageBox::information(this, "错误", "获取http请求的token失败,程序即将退出"); - QTimer::singleShot(1000, qApp, SLOT(quit())); } // 2. 获取字典值:设备类型 diff --git a/CounterRealTime/ChannelChartForm.cpp b/CounterRealTime/ChannelChartForm.cpp index 0404c9d..9a68053 100644 --- a/CounterRealTime/ChannelChartForm.cpp +++ b/CounterRealTime/ChannelChartForm.cpp @@ -1,6 +1,5 @@ #include "ChannelChartForm.h" #include "ui_ChannelChartForm.h" -#include ChannelChartForm::ChannelChartForm(QWidget *parent) : QWidget(parent), @@ -138,8 +137,6 @@ timeVec[i] = onePoint.key; valueVec[i] = onePoint.value; -// std::cout << QString::number(timeVec[i], 'f', 0).toStdString() << " " << QString::number(valueVec[i], 'f', 12).toStdString() << std::endl; - vecPoints.append(onePoint); if (hisDataVect.at(i).at(1).toDouble() * 1E9 < minValue) @@ -194,8 +191,6 @@ ui->analysisPlot->legend->setVisible(false); ui->analysisPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom); // 设置曲线可以拖动 可以缩放 - - std::cout << hisDataVect.size() << " " << QString::number(lineReg.slope, 'f', 12).toStdString() << " " << QString::number(lineReg.intercept, 'f', 12).toStdString() << std::endl; } void ChannelChartForm::on_btnChartClose_clicked() diff --git a/CounterRealTime/CounterDevice.cpp b/CounterRealTime/CounterDevice.cpp index 1528373..bf3fa8c 100644 --- a/CounterRealTime/CounterDevice.cpp +++ b/CounterRealTime/CounterDevice.cpp @@ -2,6 +2,7 @@ #include #include +#include CounterDevice::CounterDevice(QObject *parent) : QObject(parent) { @@ -118,6 +119,7 @@ { qDebug() << QString("%1").arg(this->dataBuff.size()); this->dataBuff.clear(); + std::cout << "clear buffer" << std::endl; } // 在此处释放内存,不影响后续显示 @@ -138,6 +140,7 @@ QLogUtil::writeRawDataLogByDate(date, filename, content); QJsonArray messageArray; + QString msgLogFilename = "msg_" + devCode + ".log"; // 2. 各个通道的clock diff数据 for (int i = 1; i <= counterData->channelActiveArray.size(); i++) @@ -189,10 +192,10 @@ { kafkaUtil.produceMessage(QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); - } -// qDebug() << counterData->rawFrame; -// qDebug() << messageArray; + qDebug() << messageArray; + QLogUtil::writeChannelDataLogByDate(date, msgLogFilename, QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); + } // 4. 在界面上简单显示相差数据结果 emit this->sendDataToDraw(messageArray); diff --git a/CounterRealTime/CounterRealTime.pro b/CounterRealTime/CounterRealTime.pro index 0cf7c97..dd3d1eb 100644 --- a/CounterRealTime/CounterRealTime.pro +++ b/CounterRealTime/CounterRealTime.pro @@ -51,3 +51,5 @@ INCLUDEPATH += $$PWD/include/librdkafka DEPENDPATH += $$PWD/include/librdkafka + +DISTFILES += conf/config.ini diff --git a/CounterRealTime/CounterWindowRT.cpp b/CounterRealTime/CounterWindowRT.cpp index 86a7776..37b6cb6 100644 --- a/CounterRealTime/CounterWindowRT.cpp +++ b/CounterRealTime/CounterWindowRT.cpp @@ -23,6 +23,8 @@ file.close(); } + ui->labTitle->setText(QString("钟差测量数据采集软件——%1").arg(SettingConfig::getInstance().MASTER == 1 ? "主" : "备")); + // kafka consumer kafkaConsumer = new QKafkaConsumer(this); kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); @@ -66,6 +68,8 @@ CounterDevice * devicePtr = ConstCache::getInstance().deviceMap.value(ConstCache::getInstance().deviceIdLoopB.at(i)); devicePtr->initSerialPort(); } + + httpReq->getSysClockAlarmCount(); } CounterWindowRT::~CounterWindowRT() @@ -479,4 +483,27 @@ void CounterWindowRT::onKafkaMessageReceived(QJsonObject message) { qDebug() << message; + std::cout << QString(QJsonDocument(message).toJson(QJsonDocument::Compact)).toStdString() << std::endl; + + // 找不到deviceId deviceType operation三个必填项 直接返回 + if (message.contains("deviceId") == false || message.contains("operation") == false || message.contains("deviceType") == false) { + return; + } + + // deviceType不是计数器 直接返回 + if (message.value("deviceType").toString() != "01") { + return; + } + + QString deviceId = message.value("deviceId").toString(); + + if (message.contains("chanelId") == true) + { + this->getChannelList(deviceId); + } else + { + ConstCache::getInstance().channelMap.clear(); + ConstCache::getInstance().deviceMap.clear(); + this->getDeviceList(); + } } diff --git a/CounterRealTime/common/HttpRequestController.cpp b/CounterRealTime/common/HttpRequestController.cpp index b287ed5..bfe6311 100644 --- a/CounterRealTime/common/HttpRequestController.cpp +++ b/CounterRealTime/common/HttpRequestController.cpp @@ -260,3 +260,34 @@ return resultObj; } + +QJsonObject HttpRequestController::getSysClockAlarmCount() +{ + QJsonObject resultObj; + + // 获取设备列表的接口地址 + QUrl url = baseUrl + "/alarm/alarmCount"; + + QNetworkRequest request; + request.setUrl(url); + request.setRawHeader("Content-type", "application/json"); + request.setRawHeader("token", token.toLocal8Bit()); + request.setRawHeader("system", SettingConfig::getInstance().SYSTEM.toLocal8Bit()); + + qDebug() << url; + + QNetworkReply * reply = httpUtil->sendGetRequest(request); + const QByteArray reply_data = reply->readAll(); + QJsonDocument jsonDocument = QJsonDocument::fromJson(reply_data); + if(jsonDocument.isNull() == false) + { + resultObj = jsonDocument.object(); + } else + { + resultObj.insert("code", -1); + } + + qDebug() << resultObj; + + return resultObj; +} diff --git a/CounterRealTime/common/HttpRequestController.h b/CounterRealTime/common/HttpRequestController.h index 860aafa..a70e5aa 100644 --- a/CounterRealTime/common/HttpRequestController.h +++ b/CounterRealTime/common/HttpRequestController.h @@ -26,6 +26,8 @@ QJsonObject updateChannelInfo(QJsonArray channelInfos); + QJsonObject getSysClockAlarmCount(); + private: HttpRequestUtil * httpUtil; diff --git a/CounterRealTime/common/LinearRegression.cpp b/CounterRealTime/common/LinearRegression.cpp index 4293e49..d3a211f 100644 --- a/CounterRealTime/common/LinearRegression.cpp +++ b/CounterRealTime/common/LinearRegression.cpp @@ -1,6 +1,6 @@ #include "LinearRegression.h" -#include #include +#include LinearRegression::LinearRegression() { @@ -33,10 +33,9 @@ slopeDown = slopeDown + temp1 * temp1; } - std::cout << QString::number(slopeUp, 'f', 20).toStdString() << " " << QString::number(slopeDown, 'f', 20).toStdString() << std::endl; - + qDebug() << QString::number(slopeUp, 'f', 20) << " " << QString::number(slopeDown, 'f', 20); slope = slopeUp / slopeDown; intercept = yAverage - xAverage * slope; - std::cout << QString::number(slope, 'f', 20).toStdString() << " == " << QString::number(intercept, 'f', 20).toStdString() << std::endl; + qDebug() << QString::number(slope, 'f', 20) << " == " << QString::number(intercept, 'f', 20); } diff --git a/CounterRealTime/common/utils/QKafkaUtil.cpp b/CounterRealTime/common/utils/QKafkaUtil.cpp index 231c02b..d3ba348 100644 --- a/CounterRealTime/common/utils/QKafkaUtil.cpp +++ b/CounterRealTime/common/utils/QKafkaUtil.cpp @@ -64,8 +64,8 @@ RdKafka::err2str(retCode) << std::endl; } else { - std::cerr << "Enqueued message (" << message.size() << " bytes) " << - "for topic " << topic.toStdString() << "[" << message.toStdString() <<"]" << std::endl; +// std::cerr << "Enqueued message (" << message.size() << " bytes) " << +// "for topic " << topic.toStdString() << "[" << message.toStdString() <<"]" << std::endl; } return retCode; diff --git a/CounterRealTime/common/utils/QSerialPortUtil.cpp b/CounterRealTime/common/utils/QSerialPortUtil.cpp index 7c7cf55..be27392 100644 --- a/CounterRealTime/common/utils/QSerialPortUtil.cpp +++ b/CounterRealTime/common/utils/QSerialPortUtil.cpp @@ -1,6 +1,6 @@ #include "QSerialPortUtil.h" -#include +#include #include #include #include "SettingConfig.h" @@ -23,7 +23,7 @@ if (SettingConfig::getInstance().WORK_TYPE == "mock") { - std::cout << portName.toStdString() << QString(" - %1 - mock").arg(baudRate).toStdString() << std::endl; + qDebug() << portName << QString(" - %1 - mock").arg(baudRate); // mock data received per second QTimer * timer = new QTimer(this); @@ -33,15 +33,12 @@ } else { open = serial.open(QIODevice::ReadWrite); - std::cout << portName.toStdString() << QString(" - %1").arg(baudRate).toStdString() << std::endl; if (open == true) { // 绑定信号与槽 connect(&serial, &QSerialPort::readyRead, this, &QSerialPortUtil::readData); } - - std::cout << " - " << open << std::endl; } } @@ -49,7 +46,7 @@ { if (this->open == true) { - std::cout << data.toStdString() << std::endl; + qDebug() << data; serial.write(data); } } diff --git a/CounterRealTime/conf/config.ini b/CounterRealTime/conf/config.ini new file mode 100644 index 0000000..2ea0a01 --- /dev/null +++ b/CounterRealTime/conf/config.ini @@ -0,0 +1,32 @@ +[com] +baudRate=115200 + +[window] +width=1920 +height=1080 + +[kafka] +needKafka=0 +brokers="192.168.20.135:9092,192.168.20.131:9092,192.168.20.132:9092" +dataTopic="clock-data" +statusTopic="dev-status" +msgTopic="clock-message" +needSasl=1 +saslUsername="admin" +saslPassword="casicss" + +[client] +clientId="clock" +appKey="bd347bdd20943d2db8af558c3712a357" +devTypes="01" +system="clock" +workMode="mock" +master=1 +displayCount=4 +serverPort=5905 + +[http] +baseUrl="http://192.168.20.135:11410" + +[log] +basePath="/home/casic203tflab/Qt/ZXSSCJ/bin/logs/CounterAcq/" diff --git a/DeviceHub/device/FreqSwitcher.cpp b/DeviceHub/device/FreqSwitcher.cpp index f31d628..411e6d1 100644 --- a/DeviceHub/device/FreqSwitcher.cpp +++ b/DeviceHub/device/FreqSwitcher.cpp @@ -47,6 +47,7 @@ void FreqSwitcher::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); + QList frameList = protocol->extractFrameList(this->dataBuff); if (frameList.size() > 0) { @@ -62,6 +63,7 @@ { this->dataBuffB.append(data); QList frameListB = protocol->extractFrameList(this->dataBuffB); + if (frameListB.size() > 0) { this->dataBuffB.clear(); diff --git a/PhaseCompAcq/PhaseDevice.cpp b/PhaseCompAcq/PhaseDevice.cpp index 342b5b6..f8a6300 100644 --- a/PhaseCompAcq/PhaseDevice.cpp +++ b/PhaseCompAcq/PhaseDevice.cpp @@ -74,9 +74,9 @@ } // temp code: auto stop after started AUTO_STOP_TIME hour - QTimer::singleShot(SettingConfig::getInstance().AUTO_STOP_TIME * 3600 * 1000, [=](){ - stopWork(); - }); +// QTimer::singleShot(SettingConfig::getInstance().AUTO_STOP_TIME * 3600 * 1000, [=](){ +// stopWork(); +// }); } void PhaseDevice::stopWork() @@ -92,7 +92,7 @@ { this->dataBuff.append(data); - std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; +// std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; PhaseDataDto * phaseData = new PhaseDataDto(this); if (PhaseProtocolBM::checkFrame(this->dataBuff) == true) diff --git a/CounterAcq/CounterDevice.cpp b/CounterAcq/CounterDevice.cpp index a2acd83..a794ab6 100644 --- a/CounterAcq/CounterDevice.cpp +++ b/CounterAcq/CounterDevice.cpp @@ -69,7 +69,7 @@ void CounterDevice::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); - std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; +// std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; CounterDataDto * counterData = new CounterDataDto(this); if (CounterProtocolXH::checkFrame(this->dataBuff) == true) @@ -113,6 +113,7 @@ QLogUtil::writeRawDataLogByDate(date, filename, content); QJsonArray messageArray; + QString msgLogFilename = "msg_" + devCode + ".log"; // 2. 各个通道的clock diff数据 for (int i = 1; i <= counterData->channelActiveArray.size(); i++) @@ -156,6 +157,8 @@ kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); } + QLogUtil::writeChannelDataLogByDate(date, msgLogFilename, QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); + // 4. 在界面上简单显示相差数据结果 emit this->sendDataToDraw(counterData); } diff --git a/CounterAcq/CounterWindow.cpp b/CounterAcq/CounterWindow.cpp index c4e78c4..9ffbaa8 100644 --- a/CounterAcq/CounterWindow.cpp +++ b/CounterAcq/CounterWindow.cpp @@ -41,7 +41,6 @@ if (retCode != 200) { QMessageBox::information(this, "错误", "获取http请求的token失败,程序即将退出"); - QTimer::singleShot(1000, qApp, SLOT(quit())); } // 2. 获取字典值:设备类型 diff --git a/CounterRealTime/ChannelChartForm.cpp b/CounterRealTime/ChannelChartForm.cpp index 0404c9d..9a68053 100644 --- a/CounterRealTime/ChannelChartForm.cpp +++ b/CounterRealTime/ChannelChartForm.cpp @@ -1,6 +1,5 @@ #include "ChannelChartForm.h" #include "ui_ChannelChartForm.h" -#include ChannelChartForm::ChannelChartForm(QWidget *parent) : QWidget(parent), @@ -138,8 +137,6 @@ timeVec[i] = onePoint.key; valueVec[i] = onePoint.value; -// std::cout << QString::number(timeVec[i], 'f', 0).toStdString() << " " << QString::number(valueVec[i], 'f', 12).toStdString() << std::endl; - vecPoints.append(onePoint); if (hisDataVect.at(i).at(1).toDouble() * 1E9 < minValue) @@ -194,8 +191,6 @@ ui->analysisPlot->legend->setVisible(false); ui->analysisPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom); // 设置曲线可以拖动 可以缩放 - - std::cout << hisDataVect.size() << " " << QString::number(lineReg.slope, 'f', 12).toStdString() << " " << QString::number(lineReg.intercept, 'f', 12).toStdString() << std::endl; } void ChannelChartForm::on_btnChartClose_clicked() diff --git a/CounterRealTime/CounterDevice.cpp b/CounterRealTime/CounterDevice.cpp index 1528373..bf3fa8c 100644 --- a/CounterRealTime/CounterDevice.cpp +++ b/CounterRealTime/CounterDevice.cpp @@ -2,6 +2,7 @@ #include #include +#include CounterDevice::CounterDevice(QObject *parent) : QObject(parent) { @@ -118,6 +119,7 @@ { qDebug() << QString("%1").arg(this->dataBuff.size()); this->dataBuff.clear(); + std::cout << "clear buffer" << std::endl; } // 在此处释放内存,不影响后续显示 @@ -138,6 +140,7 @@ QLogUtil::writeRawDataLogByDate(date, filename, content); QJsonArray messageArray; + QString msgLogFilename = "msg_" + devCode + ".log"; // 2. 各个通道的clock diff数据 for (int i = 1; i <= counterData->channelActiveArray.size(); i++) @@ -189,10 +192,10 @@ { kafkaUtil.produceMessage(QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); - } -// qDebug() << counterData->rawFrame; -// qDebug() << messageArray; + qDebug() << messageArray; + QLogUtil::writeChannelDataLogByDate(date, msgLogFilename, QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); + } // 4. 在界面上简单显示相差数据结果 emit this->sendDataToDraw(messageArray); diff --git a/CounterRealTime/CounterRealTime.pro b/CounterRealTime/CounterRealTime.pro index 0cf7c97..dd3d1eb 100644 --- a/CounterRealTime/CounterRealTime.pro +++ b/CounterRealTime/CounterRealTime.pro @@ -51,3 +51,5 @@ INCLUDEPATH += $$PWD/include/librdkafka DEPENDPATH += $$PWD/include/librdkafka + +DISTFILES += conf/config.ini diff --git a/CounterRealTime/CounterWindowRT.cpp b/CounterRealTime/CounterWindowRT.cpp index 86a7776..37b6cb6 100644 --- a/CounterRealTime/CounterWindowRT.cpp +++ b/CounterRealTime/CounterWindowRT.cpp @@ -23,6 +23,8 @@ file.close(); } + ui->labTitle->setText(QString("钟差测量数据采集软件——%1").arg(SettingConfig::getInstance().MASTER == 1 ? "主" : "备")); + // kafka consumer kafkaConsumer = new QKafkaConsumer(this); kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); @@ -66,6 +68,8 @@ CounterDevice * devicePtr = ConstCache::getInstance().deviceMap.value(ConstCache::getInstance().deviceIdLoopB.at(i)); devicePtr->initSerialPort(); } + + httpReq->getSysClockAlarmCount(); } CounterWindowRT::~CounterWindowRT() @@ -479,4 +483,27 @@ void CounterWindowRT::onKafkaMessageReceived(QJsonObject message) { qDebug() << message; + std::cout << QString(QJsonDocument(message).toJson(QJsonDocument::Compact)).toStdString() << std::endl; + + // 找不到deviceId deviceType operation三个必填项 直接返回 + if (message.contains("deviceId") == false || message.contains("operation") == false || message.contains("deviceType") == false) { + return; + } + + // deviceType不是计数器 直接返回 + if (message.value("deviceType").toString() != "01") { + return; + } + + QString deviceId = message.value("deviceId").toString(); + + if (message.contains("chanelId") == true) + { + this->getChannelList(deviceId); + } else + { + ConstCache::getInstance().channelMap.clear(); + ConstCache::getInstance().deviceMap.clear(); + this->getDeviceList(); + } } diff --git a/CounterRealTime/common/HttpRequestController.cpp b/CounterRealTime/common/HttpRequestController.cpp index b287ed5..bfe6311 100644 --- a/CounterRealTime/common/HttpRequestController.cpp +++ b/CounterRealTime/common/HttpRequestController.cpp @@ -260,3 +260,34 @@ return resultObj; } + +QJsonObject HttpRequestController::getSysClockAlarmCount() +{ + QJsonObject resultObj; + + // 获取设备列表的接口地址 + QUrl url = baseUrl + "/alarm/alarmCount"; + + QNetworkRequest request; + request.setUrl(url); + request.setRawHeader("Content-type", "application/json"); + request.setRawHeader("token", token.toLocal8Bit()); + request.setRawHeader("system", SettingConfig::getInstance().SYSTEM.toLocal8Bit()); + + qDebug() << url; + + QNetworkReply * reply = httpUtil->sendGetRequest(request); + const QByteArray reply_data = reply->readAll(); + QJsonDocument jsonDocument = QJsonDocument::fromJson(reply_data); + if(jsonDocument.isNull() == false) + { + resultObj = jsonDocument.object(); + } else + { + resultObj.insert("code", -1); + } + + qDebug() << resultObj; + + return resultObj; +} diff --git a/CounterRealTime/common/HttpRequestController.h b/CounterRealTime/common/HttpRequestController.h index 860aafa..a70e5aa 100644 --- a/CounterRealTime/common/HttpRequestController.h +++ b/CounterRealTime/common/HttpRequestController.h @@ -26,6 +26,8 @@ QJsonObject updateChannelInfo(QJsonArray channelInfos); + QJsonObject getSysClockAlarmCount(); + private: HttpRequestUtil * httpUtil; diff --git a/CounterRealTime/common/LinearRegression.cpp b/CounterRealTime/common/LinearRegression.cpp index 4293e49..d3a211f 100644 --- a/CounterRealTime/common/LinearRegression.cpp +++ b/CounterRealTime/common/LinearRegression.cpp @@ -1,6 +1,6 @@ #include "LinearRegression.h" -#include #include +#include LinearRegression::LinearRegression() { @@ -33,10 +33,9 @@ slopeDown = slopeDown + temp1 * temp1; } - std::cout << QString::number(slopeUp, 'f', 20).toStdString() << " " << QString::number(slopeDown, 'f', 20).toStdString() << std::endl; - + qDebug() << QString::number(slopeUp, 'f', 20) << " " << QString::number(slopeDown, 'f', 20); slope = slopeUp / slopeDown; intercept = yAverage - xAverage * slope; - std::cout << QString::number(slope, 'f', 20).toStdString() << " == " << QString::number(intercept, 'f', 20).toStdString() << std::endl; + qDebug() << QString::number(slope, 'f', 20) << " == " << QString::number(intercept, 'f', 20); } diff --git a/CounterRealTime/common/utils/QKafkaUtil.cpp b/CounterRealTime/common/utils/QKafkaUtil.cpp index 231c02b..d3ba348 100644 --- a/CounterRealTime/common/utils/QKafkaUtil.cpp +++ b/CounterRealTime/common/utils/QKafkaUtil.cpp @@ -64,8 +64,8 @@ RdKafka::err2str(retCode) << std::endl; } else { - std::cerr << "Enqueued message (" << message.size() << " bytes) " << - "for topic " << topic.toStdString() << "[" << message.toStdString() <<"]" << std::endl; +// std::cerr << "Enqueued message (" << message.size() << " bytes) " << +// "for topic " << topic.toStdString() << "[" << message.toStdString() <<"]" << std::endl; } return retCode; diff --git a/CounterRealTime/common/utils/QSerialPortUtil.cpp b/CounterRealTime/common/utils/QSerialPortUtil.cpp index 7c7cf55..be27392 100644 --- a/CounterRealTime/common/utils/QSerialPortUtil.cpp +++ b/CounterRealTime/common/utils/QSerialPortUtil.cpp @@ -1,6 +1,6 @@ #include "QSerialPortUtil.h" -#include +#include #include #include #include "SettingConfig.h" @@ -23,7 +23,7 @@ if (SettingConfig::getInstance().WORK_TYPE == "mock") { - std::cout << portName.toStdString() << QString(" - %1 - mock").arg(baudRate).toStdString() << std::endl; + qDebug() << portName << QString(" - %1 - mock").arg(baudRate); // mock data received per second QTimer * timer = new QTimer(this); @@ -33,15 +33,12 @@ } else { open = serial.open(QIODevice::ReadWrite); - std::cout << portName.toStdString() << QString(" - %1").arg(baudRate).toStdString() << std::endl; if (open == true) { // 绑定信号与槽 connect(&serial, &QSerialPort::readyRead, this, &QSerialPortUtil::readData); } - - std::cout << " - " << open << std::endl; } } @@ -49,7 +46,7 @@ { if (this->open == true) { - std::cout << data.toStdString() << std::endl; + qDebug() << data; serial.write(data); } } diff --git a/CounterRealTime/conf/config.ini b/CounterRealTime/conf/config.ini new file mode 100644 index 0000000..2ea0a01 --- /dev/null +++ b/CounterRealTime/conf/config.ini @@ -0,0 +1,32 @@ +[com] +baudRate=115200 + +[window] +width=1920 +height=1080 + +[kafka] +needKafka=0 +brokers="192.168.20.135:9092,192.168.20.131:9092,192.168.20.132:9092" +dataTopic="clock-data" +statusTopic="dev-status" +msgTopic="clock-message" +needSasl=1 +saslUsername="admin" +saslPassword="casicss" + +[client] +clientId="clock" +appKey="bd347bdd20943d2db8af558c3712a357" +devTypes="01" +system="clock" +workMode="mock" +master=1 +displayCount=4 +serverPort=5905 + +[http] +baseUrl="http://192.168.20.135:11410" + +[log] +basePath="/home/casic203tflab/Qt/ZXSSCJ/bin/logs/CounterAcq/" diff --git a/DeviceHub/device/FreqSwitcher.cpp b/DeviceHub/device/FreqSwitcher.cpp index f31d628..411e6d1 100644 --- a/DeviceHub/device/FreqSwitcher.cpp +++ b/DeviceHub/device/FreqSwitcher.cpp @@ -47,6 +47,7 @@ void FreqSwitcher::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); + QList frameList = protocol->extractFrameList(this->dataBuff); if (frameList.size() > 0) { @@ -62,6 +63,7 @@ { this->dataBuffB.append(data); QList frameListB = protocol->extractFrameList(this->dataBuffB); + if (frameListB.size() > 0) { this->dataBuffB.clear(); diff --git a/PhaseCompAcq/PhaseDevice.cpp b/PhaseCompAcq/PhaseDevice.cpp index 342b5b6..f8a6300 100644 --- a/PhaseCompAcq/PhaseDevice.cpp +++ b/PhaseCompAcq/PhaseDevice.cpp @@ -74,9 +74,9 @@ } // temp code: auto stop after started AUTO_STOP_TIME hour - QTimer::singleShot(SettingConfig::getInstance().AUTO_STOP_TIME * 3600 * 1000, [=](){ - stopWork(); - }); +// QTimer::singleShot(SettingConfig::getInstance().AUTO_STOP_TIME * 3600 * 1000, [=](){ +// stopWork(); +// }); } void PhaseDevice::stopWork() @@ -92,7 +92,7 @@ { this->dataBuff.append(data); - std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; +// std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; PhaseDataDto * phaseData = new PhaseDataDto(this); if (PhaseProtocolBM::checkFrame(this->dataBuff) == true) diff --git a/PhaseCompAcq/common/utils/QSerialPortUtil.cpp b/PhaseCompAcq/common/utils/QSerialPortUtil.cpp index dbe949b..cca499f 100644 --- a/PhaseCompAcq/common/utils/QSerialPortUtil.cpp +++ b/PhaseCompAcq/common/utils/QSerialPortUtil.cpp @@ -22,6 +22,8 @@ open = serial.open(QIODevice::ReadWrite); + std::cout << portName.toStdString() << " " << baudRate << " - " << open << std::endl; + if (SettingConfig::getInstance().WORK_TYPE == "mock") { // mock data received per second diff --git a/CounterAcq/CounterDevice.cpp b/CounterAcq/CounterDevice.cpp index a2acd83..a794ab6 100644 --- a/CounterAcq/CounterDevice.cpp +++ b/CounterAcq/CounterDevice.cpp @@ -69,7 +69,7 @@ void CounterDevice::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); - std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; +// std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; CounterDataDto * counterData = new CounterDataDto(this); if (CounterProtocolXH::checkFrame(this->dataBuff) == true) @@ -113,6 +113,7 @@ QLogUtil::writeRawDataLogByDate(date, filename, content); QJsonArray messageArray; + QString msgLogFilename = "msg_" + devCode + ".log"; // 2. 各个通道的clock diff数据 for (int i = 1; i <= counterData->channelActiveArray.size(); i++) @@ -156,6 +157,8 @@ kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); } + QLogUtil::writeChannelDataLogByDate(date, msgLogFilename, QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); + // 4. 在界面上简单显示相差数据结果 emit this->sendDataToDraw(counterData); } diff --git a/CounterAcq/CounterWindow.cpp b/CounterAcq/CounterWindow.cpp index c4e78c4..9ffbaa8 100644 --- a/CounterAcq/CounterWindow.cpp +++ b/CounterAcq/CounterWindow.cpp @@ -41,7 +41,6 @@ if (retCode != 200) { QMessageBox::information(this, "错误", "获取http请求的token失败,程序即将退出"); - QTimer::singleShot(1000, qApp, SLOT(quit())); } // 2. 获取字典值:设备类型 diff --git a/CounterRealTime/ChannelChartForm.cpp b/CounterRealTime/ChannelChartForm.cpp index 0404c9d..9a68053 100644 --- a/CounterRealTime/ChannelChartForm.cpp +++ b/CounterRealTime/ChannelChartForm.cpp @@ -1,6 +1,5 @@ #include "ChannelChartForm.h" #include "ui_ChannelChartForm.h" -#include ChannelChartForm::ChannelChartForm(QWidget *parent) : QWidget(parent), @@ -138,8 +137,6 @@ timeVec[i] = onePoint.key; valueVec[i] = onePoint.value; -// std::cout << QString::number(timeVec[i], 'f', 0).toStdString() << " " << QString::number(valueVec[i], 'f', 12).toStdString() << std::endl; - vecPoints.append(onePoint); if (hisDataVect.at(i).at(1).toDouble() * 1E9 < minValue) @@ -194,8 +191,6 @@ ui->analysisPlot->legend->setVisible(false); ui->analysisPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom); // 设置曲线可以拖动 可以缩放 - - std::cout << hisDataVect.size() << " " << QString::number(lineReg.slope, 'f', 12).toStdString() << " " << QString::number(lineReg.intercept, 'f', 12).toStdString() << std::endl; } void ChannelChartForm::on_btnChartClose_clicked() diff --git a/CounterRealTime/CounterDevice.cpp b/CounterRealTime/CounterDevice.cpp index 1528373..bf3fa8c 100644 --- a/CounterRealTime/CounterDevice.cpp +++ b/CounterRealTime/CounterDevice.cpp @@ -2,6 +2,7 @@ #include #include +#include CounterDevice::CounterDevice(QObject *parent) : QObject(parent) { @@ -118,6 +119,7 @@ { qDebug() << QString("%1").arg(this->dataBuff.size()); this->dataBuff.clear(); + std::cout << "clear buffer" << std::endl; } // 在此处释放内存,不影响后续显示 @@ -138,6 +140,7 @@ QLogUtil::writeRawDataLogByDate(date, filename, content); QJsonArray messageArray; + QString msgLogFilename = "msg_" + devCode + ".log"; // 2. 各个通道的clock diff数据 for (int i = 1; i <= counterData->channelActiveArray.size(); i++) @@ -189,10 +192,10 @@ { kafkaUtil.produceMessage(QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); - } -// qDebug() << counterData->rawFrame; -// qDebug() << messageArray; + qDebug() << messageArray; + QLogUtil::writeChannelDataLogByDate(date, msgLogFilename, QString(QJsonDocument(messageArray).toJson(QJsonDocument::Compact))); + } // 4. 在界面上简单显示相差数据结果 emit this->sendDataToDraw(messageArray); diff --git a/CounterRealTime/CounterRealTime.pro b/CounterRealTime/CounterRealTime.pro index 0cf7c97..dd3d1eb 100644 --- a/CounterRealTime/CounterRealTime.pro +++ b/CounterRealTime/CounterRealTime.pro @@ -51,3 +51,5 @@ INCLUDEPATH += $$PWD/include/librdkafka DEPENDPATH += $$PWD/include/librdkafka + +DISTFILES += conf/config.ini diff --git a/CounterRealTime/CounterWindowRT.cpp b/CounterRealTime/CounterWindowRT.cpp index 86a7776..37b6cb6 100644 --- a/CounterRealTime/CounterWindowRT.cpp +++ b/CounterRealTime/CounterWindowRT.cpp @@ -23,6 +23,8 @@ file.close(); } + ui->labTitle->setText(QString("钟差测量数据采集软件——%1").arg(SettingConfig::getInstance().MASTER == 1 ? "主" : "备")); + // kafka consumer kafkaConsumer = new QKafkaConsumer(this); kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); @@ -66,6 +68,8 @@ CounterDevice * devicePtr = ConstCache::getInstance().deviceMap.value(ConstCache::getInstance().deviceIdLoopB.at(i)); devicePtr->initSerialPort(); } + + httpReq->getSysClockAlarmCount(); } CounterWindowRT::~CounterWindowRT() @@ -479,4 +483,27 @@ void CounterWindowRT::onKafkaMessageReceived(QJsonObject message) { qDebug() << message; + std::cout << QString(QJsonDocument(message).toJson(QJsonDocument::Compact)).toStdString() << std::endl; + + // 找不到deviceId deviceType operation三个必填项 直接返回 + if (message.contains("deviceId") == false || message.contains("operation") == false || message.contains("deviceType") == false) { + return; + } + + // deviceType不是计数器 直接返回 + if (message.value("deviceType").toString() != "01") { + return; + } + + QString deviceId = message.value("deviceId").toString(); + + if (message.contains("chanelId") == true) + { + this->getChannelList(deviceId); + } else + { + ConstCache::getInstance().channelMap.clear(); + ConstCache::getInstance().deviceMap.clear(); + this->getDeviceList(); + } } diff --git a/CounterRealTime/common/HttpRequestController.cpp b/CounterRealTime/common/HttpRequestController.cpp index b287ed5..bfe6311 100644 --- a/CounterRealTime/common/HttpRequestController.cpp +++ b/CounterRealTime/common/HttpRequestController.cpp @@ -260,3 +260,34 @@ return resultObj; } + +QJsonObject HttpRequestController::getSysClockAlarmCount() +{ + QJsonObject resultObj; + + // 获取设备列表的接口地址 + QUrl url = baseUrl + "/alarm/alarmCount"; + + QNetworkRequest request; + request.setUrl(url); + request.setRawHeader("Content-type", "application/json"); + request.setRawHeader("token", token.toLocal8Bit()); + request.setRawHeader("system", SettingConfig::getInstance().SYSTEM.toLocal8Bit()); + + qDebug() << url; + + QNetworkReply * reply = httpUtil->sendGetRequest(request); + const QByteArray reply_data = reply->readAll(); + QJsonDocument jsonDocument = QJsonDocument::fromJson(reply_data); + if(jsonDocument.isNull() == false) + { + resultObj = jsonDocument.object(); + } else + { + resultObj.insert("code", -1); + } + + qDebug() << resultObj; + + return resultObj; +} diff --git a/CounterRealTime/common/HttpRequestController.h b/CounterRealTime/common/HttpRequestController.h index 860aafa..a70e5aa 100644 --- a/CounterRealTime/common/HttpRequestController.h +++ b/CounterRealTime/common/HttpRequestController.h @@ -26,6 +26,8 @@ QJsonObject updateChannelInfo(QJsonArray channelInfos); + QJsonObject getSysClockAlarmCount(); + private: HttpRequestUtil * httpUtil; diff --git a/CounterRealTime/common/LinearRegression.cpp b/CounterRealTime/common/LinearRegression.cpp index 4293e49..d3a211f 100644 --- a/CounterRealTime/common/LinearRegression.cpp +++ b/CounterRealTime/common/LinearRegression.cpp @@ -1,6 +1,6 @@ #include "LinearRegression.h" -#include #include +#include LinearRegression::LinearRegression() { @@ -33,10 +33,9 @@ slopeDown = slopeDown + temp1 * temp1; } - std::cout << QString::number(slopeUp, 'f', 20).toStdString() << " " << QString::number(slopeDown, 'f', 20).toStdString() << std::endl; - + qDebug() << QString::number(slopeUp, 'f', 20) << " " << QString::number(slopeDown, 'f', 20); slope = slopeUp / slopeDown; intercept = yAverage - xAverage * slope; - std::cout << QString::number(slope, 'f', 20).toStdString() << " == " << QString::number(intercept, 'f', 20).toStdString() << std::endl; + qDebug() << QString::number(slope, 'f', 20) << " == " << QString::number(intercept, 'f', 20); } diff --git a/CounterRealTime/common/utils/QKafkaUtil.cpp b/CounterRealTime/common/utils/QKafkaUtil.cpp index 231c02b..d3ba348 100644 --- a/CounterRealTime/common/utils/QKafkaUtil.cpp +++ b/CounterRealTime/common/utils/QKafkaUtil.cpp @@ -64,8 +64,8 @@ RdKafka::err2str(retCode) << std::endl; } else { - std::cerr << "Enqueued message (" << message.size() << " bytes) " << - "for topic " << topic.toStdString() << "[" << message.toStdString() <<"]" << std::endl; +// std::cerr << "Enqueued message (" << message.size() << " bytes) " << +// "for topic " << topic.toStdString() << "[" << message.toStdString() <<"]" << std::endl; } return retCode; diff --git a/CounterRealTime/common/utils/QSerialPortUtil.cpp b/CounterRealTime/common/utils/QSerialPortUtil.cpp index 7c7cf55..be27392 100644 --- a/CounterRealTime/common/utils/QSerialPortUtil.cpp +++ b/CounterRealTime/common/utils/QSerialPortUtil.cpp @@ -1,6 +1,6 @@ #include "QSerialPortUtil.h" -#include +#include #include #include #include "SettingConfig.h" @@ -23,7 +23,7 @@ if (SettingConfig::getInstance().WORK_TYPE == "mock") { - std::cout << portName.toStdString() << QString(" - %1 - mock").arg(baudRate).toStdString() << std::endl; + qDebug() << portName << QString(" - %1 - mock").arg(baudRate); // mock data received per second QTimer * timer = new QTimer(this); @@ -33,15 +33,12 @@ } else { open = serial.open(QIODevice::ReadWrite); - std::cout << portName.toStdString() << QString(" - %1").arg(baudRate).toStdString() << std::endl; if (open == true) { // 绑定信号与槽 connect(&serial, &QSerialPort::readyRead, this, &QSerialPortUtil::readData); } - - std::cout << " - " << open << std::endl; } } @@ -49,7 +46,7 @@ { if (this->open == true) { - std::cout << data.toStdString() << std::endl; + qDebug() << data; serial.write(data); } } diff --git a/CounterRealTime/conf/config.ini b/CounterRealTime/conf/config.ini new file mode 100644 index 0000000..2ea0a01 --- /dev/null +++ b/CounterRealTime/conf/config.ini @@ -0,0 +1,32 @@ +[com] +baudRate=115200 + +[window] +width=1920 +height=1080 + +[kafka] +needKafka=0 +brokers="192.168.20.135:9092,192.168.20.131:9092,192.168.20.132:9092" +dataTopic="clock-data" +statusTopic="dev-status" +msgTopic="clock-message" +needSasl=1 +saslUsername="admin" +saslPassword="casicss" + +[client] +clientId="clock" +appKey="bd347bdd20943d2db8af558c3712a357" +devTypes="01" +system="clock" +workMode="mock" +master=1 +displayCount=4 +serverPort=5905 + +[http] +baseUrl="http://192.168.20.135:11410" + +[log] +basePath="/home/casic203tflab/Qt/ZXSSCJ/bin/logs/CounterAcq/" diff --git a/DeviceHub/device/FreqSwitcher.cpp b/DeviceHub/device/FreqSwitcher.cpp index f31d628..411e6d1 100644 --- a/DeviceHub/device/FreqSwitcher.cpp +++ b/DeviceHub/device/FreqSwitcher.cpp @@ -47,6 +47,7 @@ void FreqSwitcher::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); + QList frameList = protocol->extractFrameList(this->dataBuff); if (frameList.size() > 0) { @@ -62,6 +63,7 @@ { this->dataBuffB.append(data); QList frameListB = protocol->extractFrameList(this->dataBuffB); + if (frameListB.size() > 0) { this->dataBuffB.clear(); diff --git a/PhaseCompAcq/PhaseDevice.cpp b/PhaseCompAcq/PhaseDevice.cpp index 342b5b6..f8a6300 100644 --- a/PhaseCompAcq/PhaseDevice.cpp +++ b/PhaseCompAcq/PhaseDevice.cpp @@ -74,9 +74,9 @@ } // temp code: auto stop after started AUTO_STOP_TIME hour - QTimer::singleShot(SettingConfig::getInstance().AUTO_STOP_TIME * 3600 * 1000, [=](){ - stopWork(); - }); +// QTimer::singleShot(SettingConfig::getInstance().AUTO_STOP_TIME * 3600 * 1000, [=](){ +// stopWork(); +// }); } void PhaseDevice::stopWork() @@ -92,7 +92,7 @@ { this->dataBuff.append(data); - std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; +// std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; PhaseDataDto * phaseData = new PhaseDataDto(this); if (PhaseProtocolBM::checkFrame(this->dataBuff) == true) diff --git a/PhaseCompAcq/common/utils/QSerialPortUtil.cpp b/PhaseCompAcq/common/utils/QSerialPortUtil.cpp index dbe949b..cca499f 100644 --- a/PhaseCompAcq/common/utils/QSerialPortUtil.cpp +++ b/PhaseCompAcq/common/utils/QSerialPortUtil.cpp @@ -22,6 +22,8 @@ open = serial.open(QIODevice::ReadWrite); + std::cout << portName.toStdString() << " " << baudRate << " - " << open << std::endl; + if (SettingConfig::getInstance().WORK_TYPE == "mock") { // mock data received per second diff --git a/ZXSSCJ.pro b/ZXSSCJ.pro index df973ab..fec1141 100644 --- a/ZXSSCJ.pro +++ b/ZXSSCJ.pro @@ -3,10 +3,10 @@ #定义了ordered表示子项目按照添加的顺序来编译 #CONFIG += ordered -#SUBDIRS += CounterAcq #计数器数据采集 +SUBDIRS += CounterAcq #计数器数据采集 #SUBDIRS += CounterAcqBM #6906计数器数据采集 SUBDIRS += CounterRealTime -#SUBDIRS += PhaseCompAcq #比相仪数据采集 +SUBDIRS += PhaseCompAcq #比相仪数据采集 #SUBDIRS += DevStatusAcq #SUBDIRS += DeviceHub # #SUBDIRS += HClockAcq #氢钟状态数据采集