diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.h b/DeviceHub/DeviceHubWindow.h index 62b4055..cb5875a 100644 --- a/DeviceHub/DeviceHubWindow.h +++ b/DeviceHub/DeviceHubWindow.h @@ -5,7 +5,7 @@ #include #include "common/HttpRequestController.h" -//#include "common/utils/QKafkaConsumer.h" +#include "common/utils/QKafkaConsumer.h" #include "device/DeviceBase.h" #include "FrequencyTuningForm.h" #include "SignalGeneratorForm.h" @@ -32,7 +32,7 @@ int currentDevIndex; QMap> allTypeDevList; -// QKafkaConsumer * kafkaConsumer; + QKafkaConsumer * kafkaConsumer; QComboBox * getDevTypeSelect(); QComboBox * getDevSelect(); diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.h b/DeviceHub/DeviceHubWindow.h index 62b4055..cb5875a 100644 --- a/DeviceHub/DeviceHubWindow.h +++ b/DeviceHub/DeviceHubWindow.h @@ -5,7 +5,7 @@ #include #include "common/HttpRequestController.h" -//#include "common/utils/QKafkaConsumer.h" +#include "common/utils/QKafkaConsumer.h" #include "device/DeviceBase.h" #include "FrequencyTuningForm.h" #include "SignalGeneratorForm.h" @@ -32,7 +32,7 @@ int currentDevIndex; QMap> allTypeDevList; -// QKafkaConsumer * kafkaConsumer; + QKafkaConsumer * kafkaConsumer; QComboBox * getDevTypeSelect(); QComboBox * getDevSelect(); diff --git a/DeviceHub/FreqReplicatorForm.cpp b/DeviceHub/FreqReplicatorForm.cpp index e52ab24..bda0658 100644 --- a/DeviceHub/FreqReplicatorForm.cpp +++ b/DeviceHub/FreqReplicatorForm.cpp @@ -29,6 +29,12 @@ void FreqReplicatorForm::drawDeviceFrameOnForm(DeviceFrameBaseDto * frameData) { + QString currentDevCode = ((DeviceHubWindow *)this->parent()->parent())->getDevSelect()->currentData().toJsonObject().find("deviceNo")->toString(); + if (currentDevCode != frameData->devCode) + { + return; + } + // 当前显示的设备编号 if (frameData->frameType == "1001") { @@ -44,5 +50,17 @@ doc.setArray(dataObj.find("outValid")->toArray()); ui->frOutStatus->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + } else if (frameData->frameType == "1002") + { + FreqReplicatorStatusDto * statusFrameDto = (FreqReplicatorStatusDto *) frameData; + + QJsonObject dataObj = statusFrameDto->toJSON().find("data")->toObject(); + QJsonDocument doc; + + doc.setArray(dataObj.find("inValid")->toArray()); + ui->frInStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + + doc.setArray(dataObj.find("outValid")->toArray()); + ui->frOutStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); } } diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.h b/DeviceHub/DeviceHubWindow.h index 62b4055..cb5875a 100644 --- a/DeviceHub/DeviceHubWindow.h +++ b/DeviceHub/DeviceHubWindow.h @@ -5,7 +5,7 @@ #include #include "common/HttpRequestController.h" -//#include "common/utils/QKafkaConsumer.h" +#include "common/utils/QKafkaConsumer.h" #include "device/DeviceBase.h" #include "FrequencyTuningForm.h" #include "SignalGeneratorForm.h" @@ -32,7 +32,7 @@ int currentDevIndex; QMap> allTypeDevList; -// QKafkaConsumer * kafkaConsumer; + QKafkaConsumer * kafkaConsumer; QComboBox * getDevTypeSelect(); QComboBox * getDevSelect(); diff --git a/DeviceHub/FreqReplicatorForm.cpp b/DeviceHub/FreqReplicatorForm.cpp index e52ab24..bda0658 100644 --- a/DeviceHub/FreqReplicatorForm.cpp +++ b/DeviceHub/FreqReplicatorForm.cpp @@ -29,6 +29,12 @@ void FreqReplicatorForm::drawDeviceFrameOnForm(DeviceFrameBaseDto * frameData) { + QString currentDevCode = ((DeviceHubWindow *)this->parent()->parent())->getDevSelect()->currentData().toJsonObject().find("deviceNo")->toString(); + if (currentDevCode != frameData->devCode) + { + return; + } + // 当前显示的设备编号 if (frameData->frameType == "1001") { @@ -44,5 +50,17 @@ doc.setArray(dataObj.find("outValid")->toArray()); ui->frOutStatus->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + } else if (frameData->frameType == "1002") + { + FreqReplicatorStatusDto * statusFrameDto = (FreqReplicatorStatusDto *) frameData; + + QJsonObject dataObj = statusFrameDto->toJSON().find("data")->toObject(); + QJsonDocument doc; + + doc.setArray(dataObj.find("inValid")->toArray()); + ui->frInStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + + doc.setArray(dataObj.find("outValid")->toArray()); + ui->frOutStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); } } diff --git a/DeviceHub/FreqReplicatorForm.ui b/DeviceHub/FreqReplicatorForm.ui index cbc4ffb..2f6c15d 100644 --- a/DeviceHub/FreqReplicatorForm.ui +++ b/DeviceHub/FreqReplicatorForm.ui @@ -129,7 +129,7 @@ - 输出监测 + 输出监测AB @@ -148,7 +148,7 @@ - 输入状态 + 输入状态AB @@ -170,6 +170,64 @@ + + + + 540 + 130 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输入状态CD + + + + + + 620 + 130 + 200 + 30 + + + + + + + 100 + 230 + 400 + 30 + + + + + + + 20 + 230 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输出监测CD + + diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.h b/DeviceHub/DeviceHubWindow.h index 62b4055..cb5875a 100644 --- a/DeviceHub/DeviceHubWindow.h +++ b/DeviceHub/DeviceHubWindow.h @@ -5,7 +5,7 @@ #include #include "common/HttpRequestController.h" -//#include "common/utils/QKafkaConsumer.h" +#include "common/utils/QKafkaConsumer.h" #include "device/DeviceBase.h" #include "FrequencyTuningForm.h" #include "SignalGeneratorForm.h" @@ -32,7 +32,7 @@ int currentDevIndex; QMap> allTypeDevList; -// QKafkaConsumer * kafkaConsumer; + QKafkaConsumer * kafkaConsumer; QComboBox * getDevTypeSelect(); QComboBox * getDevSelect(); diff --git a/DeviceHub/FreqReplicatorForm.cpp b/DeviceHub/FreqReplicatorForm.cpp index e52ab24..bda0658 100644 --- a/DeviceHub/FreqReplicatorForm.cpp +++ b/DeviceHub/FreqReplicatorForm.cpp @@ -29,6 +29,12 @@ void FreqReplicatorForm::drawDeviceFrameOnForm(DeviceFrameBaseDto * frameData) { + QString currentDevCode = ((DeviceHubWindow *)this->parent()->parent())->getDevSelect()->currentData().toJsonObject().find("deviceNo")->toString(); + if (currentDevCode != frameData->devCode) + { + return; + } + // 当前显示的设备编号 if (frameData->frameType == "1001") { @@ -44,5 +50,17 @@ doc.setArray(dataObj.find("outValid")->toArray()); ui->frOutStatus->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + } else if (frameData->frameType == "1002") + { + FreqReplicatorStatusDto * statusFrameDto = (FreqReplicatorStatusDto *) frameData; + + QJsonObject dataObj = statusFrameDto->toJSON().find("data")->toObject(); + QJsonDocument doc; + + doc.setArray(dataObj.find("inValid")->toArray()); + ui->frInStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + + doc.setArray(dataObj.find("outValid")->toArray()); + ui->frOutStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); } } diff --git a/DeviceHub/FreqReplicatorForm.ui b/DeviceHub/FreqReplicatorForm.ui index cbc4ffb..2f6c15d 100644 --- a/DeviceHub/FreqReplicatorForm.ui +++ b/DeviceHub/FreqReplicatorForm.ui @@ -129,7 +129,7 @@ - 输出监测 + 输出监测AB @@ -148,7 +148,7 @@ - 输入状态 + 输入状态AB @@ -170,6 +170,64 @@ + + + + 540 + 130 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输入状态CD + + + + + + 620 + 130 + 200 + 30 + + + + + + + 100 + 230 + 400 + 30 + + + + + + + 20 + 230 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输出监测CD + + diff --git a/DeviceHub/common/common.pri b/DeviceHub/common/common.pri index feeba36..86259e8 100644 --- a/DeviceHub/common/common.pri +++ b/DeviceHub/common/common.pri @@ -3,8 +3,8 @@ SOURCES += $$PWD/utils/QByteUtil.cpp SOURCES += $$PWD/utils/QSerialPortUtil.cpp SOURCES += $$PWD/utils/QLogUtil.cpp -#SOURCES += $$PWD/utils/QKafkaConsumer.cpp -#SOURCES += $$PWD/utils/QKafkaProducer.cpp +SOURCES += $$PWD/utils/QKafkaConsumer.cpp +SOURCES += $$PWD/utils/QKafkaProducer.cpp SOURCES += $$PWD/utils/HttpRequestUtil.cpp SOURCES += $$PWD/utils/MD5.cpp SOURCES += $$PWD/HttpRequestController.cpp @@ -13,8 +13,8 @@ HEADERS += $$PWD/utils/QByteUtil.h HEADERS += $$PWD/utils/QSerialPortUtil.h HEADERS += $$PWD/utils/QLogUtil.h -#HEADERS += $$PWD/utils/QKafkaConsumer.h -#HEADERS += $$PWD/utils/QKafkaProducer.h +HEADERS += $$PWD/utils/QKafkaConsumer.h +HEADERS += $$PWD/utils/QKafkaProducer.h HEADERS += $$PWD/utils/HttpRequestUtil.h HEADERS += $$PWD/utils/DefHead.h HEADERS += $$PWD/utils/MD5.h diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.h b/DeviceHub/DeviceHubWindow.h index 62b4055..cb5875a 100644 --- a/DeviceHub/DeviceHubWindow.h +++ b/DeviceHub/DeviceHubWindow.h @@ -5,7 +5,7 @@ #include #include "common/HttpRequestController.h" -//#include "common/utils/QKafkaConsumer.h" +#include "common/utils/QKafkaConsumer.h" #include "device/DeviceBase.h" #include "FrequencyTuningForm.h" #include "SignalGeneratorForm.h" @@ -32,7 +32,7 @@ int currentDevIndex; QMap> allTypeDevList; -// QKafkaConsumer * kafkaConsumer; + QKafkaConsumer * kafkaConsumer; QComboBox * getDevTypeSelect(); QComboBox * getDevSelect(); diff --git a/DeviceHub/FreqReplicatorForm.cpp b/DeviceHub/FreqReplicatorForm.cpp index e52ab24..bda0658 100644 --- a/DeviceHub/FreqReplicatorForm.cpp +++ b/DeviceHub/FreqReplicatorForm.cpp @@ -29,6 +29,12 @@ void FreqReplicatorForm::drawDeviceFrameOnForm(DeviceFrameBaseDto * frameData) { + QString currentDevCode = ((DeviceHubWindow *)this->parent()->parent())->getDevSelect()->currentData().toJsonObject().find("deviceNo")->toString(); + if (currentDevCode != frameData->devCode) + { + return; + } + // 当前显示的设备编号 if (frameData->frameType == "1001") { @@ -44,5 +50,17 @@ doc.setArray(dataObj.find("outValid")->toArray()); ui->frOutStatus->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + } else if (frameData->frameType == "1002") + { + FreqReplicatorStatusDto * statusFrameDto = (FreqReplicatorStatusDto *) frameData; + + QJsonObject dataObj = statusFrameDto->toJSON().find("data")->toObject(); + QJsonDocument doc; + + doc.setArray(dataObj.find("inValid")->toArray()); + ui->frInStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + + doc.setArray(dataObj.find("outValid")->toArray()); + ui->frOutStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); } } diff --git a/DeviceHub/FreqReplicatorForm.ui b/DeviceHub/FreqReplicatorForm.ui index cbc4ffb..2f6c15d 100644 --- a/DeviceHub/FreqReplicatorForm.ui +++ b/DeviceHub/FreqReplicatorForm.ui @@ -129,7 +129,7 @@ - 输出监测 + 输出监测AB @@ -148,7 +148,7 @@ - 输入状态 + 输入状态AB @@ -170,6 +170,64 @@ + + + + 540 + 130 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输入状态CD + + + + + + 620 + 130 + 200 + 30 + + + + + + + 100 + 230 + 400 + 30 + + + + + + + 20 + 230 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输出监测CD + + diff --git a/DeviceHub/common/common.pri b/DeviceHub/common/common.pri index feeba36..86259e8 100644 --- a/DeviceHub/common/common.pri +++ b/DeviceHub/common/common.pri @@ -3,8 +3,8 @@ SOURCES += $$PWD/utils/QByteUtil.cpp SOURCES += $$PWD/utils/QSerialPortUtil.cpp SOURCES += $$PWD/utils/QLogUtil.cpp -#SOURCES += $$PWD/utils/QKafkaConsumer.cpp -#SOURCES += $$PWD/utils/QKafkaProducer.cpp +SOURCES += $$PWD/utils/QKafkaConsumer.cpp +SOURCES += $$PWD/utils/QKafkaProducer.cpp SOURCES += $$PWD/utils/HttpRequestUtil.cpp SOURCES += $$PWD/utils/MD5.cpp SOURCES += $$PWD/HttpRequestController.cpp @@ -13,8 +13,8 @@ HEADERS += $$PWD/utils/QByteUtil.h HEADERS += $$PWD/utils/QSerialPortUtil.h HEADERS += $$PWD/utils/QLogUtil.h -#HEADERS += $$PWD/utils/QKafkaConsumer.h -#HEADERS += $$PWD/utils/QKafkaProducer.h +HEADERS += $$PWD/utils/QKafkaConsumer.h +HEADERS += $$PWD/utils/QKafkaProducer.h HEADERS += $$PWD/utils/HttpRequestUtil.h HEADERS += $$PWD/utils/DefHead.h HEADERS += $$PWD/utils/MD5.h diff --git a/DeviceHub/common/utils/QKafkaConsumer.cpp b/DeviceHub/common/utils/QKafkaConsumer.cpp index b3cb9fd..c62f08e 100644 --- a/DeviceHub/common/utils/QKafkaConsumer.cpp +++ b/DeviceHub/common/utils/QKafkaConsumer.cpp @@ -1,4 +1,5 @@ #include "QKafkaConsumer.h" +#include "SettingConfig.h" #include #include @@ -25,6 +26,14 @@ int QKafkaConsumer::createConsumer() { int ret = conf->set("metadata.broker.list", brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } + if (ret != RdKafka::Conf::CONF_OK) { std::cerr << "RdKafka conf set brokerlist failed :" << errStr.c_str() << std::endl; diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.h b/DeviceHub/DeviceHubWindow.h index 62b4055..cb5875a 100644 --- a/DeviceHub/DeviceHubWindow.h +++ b/DeviceHub/DeviceHubWindow.h @@ -5,7 +5,7 @@ #include #include "common/HttpRequestController.h" -//#include "common/utils/QKafkaConsumer.h" +#include "common/utils/QKafkaConsumer.h" #include "device/DeviceBase.h" #include "FrequencyTuningForm.h" #include "SignalGeneratorForm.h" @@ -32,7 +32,7 @@ int currentDevIndex; QMap> allTypeDevList; -// QKafkaConsumer * kafkaConsumer; + QKafkaConsumer * kafkaConsumer; QComboBox * getDevTypeSelect(); QComboBox * getDevSelect(); diff --git a/DeviceHub/FreqReplicatorForm.cpp b/DeviceHub/FreqReplicatorForm.cpp index e52ab24..bda0658 100644 --- a/DeviceHub/FreqReplicatorForm.cpp +++ b/DeviceHub/FreqReplicatorForm.cpp @@ -29,6 +29,12 @@ void FreqReplicatorForm::drawDeviceFrameOnForm(DeviceFrameBaseDto * frameData) { + QString currentDevCode = ((DeviceHubWindow *)this->parent()->parent())->getDevSelect()->currentData().toJsonObject().find("deviceNo")->toString(); + if (currentDevCode != frameData->devCode) + { + return; + } + // 当前显示的设备编号 if (frameData->frameType == "1001") { @@ -44,5 +50,17 @@ doc.setArray(dataObj.find("outValid")->toArray()); ui->frOutStatus->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + } else if (frameData->frameType == "1002") + { + FreqReplicatorStatusDto * statusFrameDto = (FreqReplicatorStatusDto *) frameData; + + QJsonObject dataObj = statusFrameDto->toJSON().find("data")->toObject(); + QJsonDocument doc; + + doc.setArray(dataObj.find("inValid")->toArray()); + ui->frInStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + + doc.setArray(dataObj.find("outValid")->toArray()); + ui->frOutStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); } } diff --git a/DeviceHub/FreqReplicatorForm.ui b/DeviceHub/FreqReplicatorForm.ui index cbc4ffb..2f6c15d 100644 --- a/DeviceHub/FreqReplicatorForm.ui +++ b/DeviceHub/FreqReplicatorForm.ui @@ -129,7 +129,7 @@ - 输出监测 + 输出监测AB @@ -148,7 +148,7 @@ - 输入状态 + 输入状态AB @@ -170,6 +170,64 @@ + + + + 540 + 130 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输入状态CD + + + + + + 620 + 130 + 200 + 30 + + + + + + + 100 + 230 + 400 + 30 + + + + + + + 20 + 230 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输出监测CD + + diff --git a/DeviceHub/common/common.pri b/DeviceHub/common/common.pri index feeba36..86259e8 100644 --- a/DeviceHub/common/common.pri +++ b/DeviceHub/common/common.pri @@ -3,8 +3,8 @@ SOURCES += $$PWD/utils/QByteUtil.cpp SOURCES += $$PWD/utils/QSerialPortUtil.cpp SOURCES += $$PWD/utils/QLogUtil.cpp -#SOURCES += $$PWD/utils/QKafkaConsumer.cpp -#SOURCES += $$PWD/utils/QKafkaProducer.cpp +SOURCES += $$PWD/utils/QKafkaConsumer.cpp +SOURCES += $$PWD/utils/QKafkaProducer.cpp SOURCES += $$PWD/utils/HttpRequestUtil.cpp SOURCES += $$PWD/utils/MD5.cpp SOURCES += $$PWD/HttpRequestController.cpp @@ -13,8 +13,8 @@ HEADERS += $$PWD/utils/QByteUtil.h HEADERS += $$PWD/utils/QSerialPortUtil.h HEADERS += $$PWD/utils/QLogUtil.h -#HEADERS += $$PWD/utils/QKafkaConsumer.h -#HEADERS += $$PWD/utils/QKafkaProducer.h +HEADERS += $$PWD/utils/QKafkaConsumer.h +HEADERS += $$PWD/utils/QKafkaProducer.h HEADERS += $$PWD/utils/HttpRequestUtil.h HEADERS += $$PWD/utils/DefHead.h HEADERS += $$PWD/utils/MD5.h diff --git a/DeviceHub/common/utils/QKafkaConsumer.cpp b/DeviceHub/common/utils/QKafkaConsumer.cpp index b3cb9fd..c62f08e 100644 --- a/DeviceHub/common/utils/QKafkaConsumer.cpp +++ b/DeviceHub/common/utils/QKafkaConsumer.cpp @@ -1,4 +1,5 @@ #include "QKafkaConsumer.h" +#include "SettingConfig.h" #include #include @@ -25,6 +26,14 @@ int QKafkaConsumer::createConsumer() { int ret = conf->set("metadata.broker.list", brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } + if (ret != RdKafka::Conf::CONF_OK) { std::cerr << "RdKafka conf set brokerlist failed :" << errStr.c_str() << std::endl; diff --git a/DeviceHub/common/utils/QKafkaProducer.cpp b/DeviceHub/common/utils/QKafkaProducer.cpp index c0db128..109e581 100644 --- a/DeviceHub/common/utils/QKafkaProducer.cpp +++ b/DeviceHub/common/utils/QKafkaProducer.cpp @@ -1,4 +1,5 @@ #include "QKafkaProducer.h" +#include "SettingConfig.h" #include QKafkaProducer::QKafkaProducer(QObject *parent) : QObject(parent) @@ -20,6 +21,13 @@ { int result; result = this->conf->set("bootstrap.servers", this->brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } if (result != RdKafka::Conf::CONF_OK) { diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.h b/DeviceHub/DeviceHubWindow.h index 62b4055..cb5875a 100644 --- a/DeviceHub/DeviceHubWindow.h +++ b/DeviceHub/DeviceHubWindow.h @@ -5,7 +5,7 @@ #include #include "common/HttpRequestController.h" -//#include "common/utils/QKafkaConsumer.h" +#include "common/utils/QKafkaConsumer.h" #include "device/DeviceBase.h" #include "FrequencyTuningForm.h" #include "SignalGeneratorForm.h" @@ -32,7 +32,7 @@ int currentDevIndex; QMap> allTypeDevList; -// QKafkaConsumer * kafkaConsumer; + QKafkaConsumer * kafkaConsumer; QComboBox * getDevTypeSelect(); QComboBox * getDevSelect(); diff --git a/DeviceHub/FreqReplicatorForm.cpp b/DeviceHub/FreqReplicatorForm.cpp index e52ab24..bda0658 100644 --- a/DeviceHub/FreqReplicatorForm.cpp +++ b/DeviceHub/FreqReplicatorForm.cpp @@ -29,6 +29,12 @@ void FreqReplicatorForm::drawDeviceFrameOnForm(DeviceFrameBaseDto * frameData) { + QString currentDevCode = ((DeviceHubWindow *)this->parent()->parent())->getDevSelect()->currentData().toJsonObject().find("deviceNo")->toString(); + if (currentDevCode != frameData->devCode) + { + return; + } + // 当前显示的设备编号 if (frameData->frameType == "1001") { @@ -44,5 +50,17 @@ doc.setArray(dataObj.find("outValid")->toArray()); ui->frOutStatus->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + } else if (frameData->frameType == "1002") + { + FreqReplicatorStatusDto * statusFrameDto = (FreqReplicatorStatusDto *) frameData; + + QJsonObject dataObj = statusFrameDto->toJSON().find("data")->toObject(); + QJsonDocument doc; + + doc.setArray(dataObj.find("inValid")->toArray()); + ui->frInStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + + doc.setArray(dataObj.find("outValid")->toArray()); + ui->frOutStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); } } diff --git a/DeviceHub/FreqReplicatorForm.ui b/DeviceHub/FreqReplicatorForm.ui index cbc4ffb..2f6c15d 100644 --- a/DeviceHub/FreqReplicatorForm.ui +++ b/DeviceHub/FreqReplicatorForm.ui @@ -129,7 +129,7 @@ - 输出监测 + 输出监测AB @@ -148,7 +148,7 @@ - 输入状态 + 输入状态AB @@ -170,6 +170,64 @@ + + + + 540 + 130 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输入状态CD + + + + + + 620 + 130 + 200 + 30 + + + + + + + 100 + 230 + 400 + 30 + + + + + + + 20 + 230 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输出监测CD + + diff --git a/DeviceHub/common/common.pri b/DeviceHub/common/common.pri index feeba36..86259e8 100644 --- a/DeviceHub/common/common.pri +++ b/DeviceHub/common/common.pri @@ -3,8 +3,8 @@ SOURCES += $$PWD/utils/QByteUtil.cpp SOURCES += $$PWD/utils/QSerialPortUtil.cpp SOURCES += $$PWD/utils/QLogUtil.cpp -#SOURCES += $$PWD/utils/QKafkaConsumer.cpp -#SOURCES += $$PWD/utils/QKafkaProducer.cpp +SOURCES += $$PWD/utils/QKafkaConsumer.cpp +SOURCES += $$PWD/utils/QKafkaProducer.cpp SOURCES += $$PWD/utils/HttpRequestUtil.cpp SOURCES += $$PWD/utils/MD5.cpp SOURCES += $$PWD/HttpRequestController.cpp @@ -13,8 +13,8 @@ HEADERS += $$PWD/utils/QByteUtil.h HEADERS += $$PWD/utils/QSerialPortUtil.h HEADERS += $$PWD/utils/QLogUtil.h -#HEADERS += $$PWD/utils/QKafkaConsumer.h -#HEADERS += $$PWD/utils/QKafkaProducer.h +HEADERS += $$PWD/utils/QKafkaConsumer.h +HEADERS += $$PWD/utils/QKafkaProducer.h HEADERS += $$PWD/utils/HttpRequestUtil.h HEADERS += $$PWD/utils/DefHead.h HEADERS += $$PWD/utils/MD5.h diff --git a/DeviceHub/common/utils/QKafkaConsumer.cpp b/DeviceHub/common/utils/QKafkaConsumer.cpp index b3cb9fd..c62f08e 100644 --- a/DeviceHub/common/utils/QKafkaConsumer.cpp +++ b/DeviceHub/common/utils/QKafkaConsumer.cpp @@ -1,4 +1,5 @@ #include "QKafkaConsumer.h" +#include "SettingConfig.h" #include #include @@ -25,6 +26,14 @@ int QKafkaConsumer::createConsumer() { int ret = conf->set("metadata.broker.list", brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } + if (ret != RdKafka::Conf::CONF_OK) { std::cerr << "RdKafka conf set brokerlist failed :" << errStr.c_str() << std::endl; diff --git a/DeviceHub/common/utils/QKafkaProducer.cpp b/DeviceHub/common/utils/QKafkaProducer.cpp index c0db128..109e581 100644 --- a/DeviceHub/common/utils/QKafkaProducer.cpp +++ b/DeviceHub/common/utils/QKafkaProducer.cpp @@ -1,4 +1,5 @@ #include "QKafkaProducer.h" +#include "SettingConfig.h" #include QKafkaProducer::QKafkaProducer(QObject *parent) : QObject(parent) @@ -20,6 +21,13 @@ { int result; result = this->conf->set("bootstrap.servers", this->brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } if (result != RdKafka::Conf::CONF_OK) { diff --git a/DeviceHub/common/utils/QSerialPortUtil.cpp b/DeviceHub/common/utils/QSerialPortUtil.cpp index 9de0047..a5e07ac 100644 --- a/DeviceHub/common/utils/QSerialPortUtil.cpp +++ b/DeviceHub/common/utils/QSerialPortUtil.cpp @@ -25,6 +25,8 @@ open = serial.open(QIODevice::ReadWrite); + std::cout << portName.toStdString() << " " << QString::number(baudRate).toStdString() << " " << open << std::endl; + if (open == true) { // mock data received per second diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.h b/DeviceHub/DeviceHubWindow.h index 62b4055..cb5875a 100644 --- a/DeviceHub/DeviceHubWindow.h +++ b/DeviceHub/DeviceHubWindow.h @@ -5,7 +5,7 @@ #include #include "common/HttpRequestController.h" -//#include "common/utils/QKafkaConsumer.h" +#include "common/utils/QKafkaConsumer.h" #include "device/DeviceBase.h" #include "FrequencyTuningForm.h" #include "SignalGeneratorForm.h" @@ -32,7 +32,7 @@ int currentDevIndex; QMap> allTypeDevList; -// QKafkaConsumer * kafkaConsumer; + QKafkaConsumer * kafkaConsumer; QComboBox * getDevTypeSelect(); QComboBox * getDevSelect(); diff --git a/DeviceHub/FreqReplicatorForm.cpp b/DeviceHub/FreqReplicatorForm.cpp index e52ab24..bda0658 100644 --- a/DeviceHub/FreqReplicatorForm.cpp +++ b/DeviceHub/FreqReplicatorForm.cpp @@ -29,6 +29,12 @@ void FreqReplicatorForm::drawDeviceFrameOnForm(DeviceFrameBaseDto * frameData) { + QString currentDevCode = ((DeviceHubWindow *)this->parent()->parent())->getDevSelect()->currentData().toJsonObject().find("deviceNo")->toString(); + if (currentDevCode != frameData->devCode) + { + return; + } + // 当前显示的设备编号 if (frameData->frameType == "1001") { @@ -44,5 +50,17 @@ doc.setArray(dataObj.find("outValid")->toArray()); ui->frOutStatus->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + } else if (frameData->frameType == "1002") + { + FreqReplicatorStatusDto * statusFrameDto = (FreqReplicatorStatusDto *) frameData; + + QJsonObject dataObj = statusFrameDto->toJSON().find("data")->toObject(); + QJsonDocument doc; + + doc.setArray(dataObj.find("inValid")->toArray()); + ui->frInStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + + doc.setArray(dataObj.find("outValid")->toArray()); + ui->frOutStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); } } diff --git a/DeviceHub/FreqReplicatorForm.ui b/DeviceHub/FreqReplicatorForm.ui index cbc4ffb..2f6c15d 100644 --- a/DeviceHub/FreqReplicatorForm.ui +++ b/DeviceHub/FreqReplicatorForm.ui @@ -129,7 +129,7 @@ - 输出监测 + 输出监测AB @@ -148,7 +148,7 @@ - 输入状态 + 输入状态AB @@ -170,6 +170,64 @@ + + + + 540 + 130 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输入状态CD + + + + + + 620 + 130 + 200 + 30 + + + + + + + 100 + 230 + 400 + 30 + + + + + + + 20 + 230 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输出监测CD + + diff --git a/DeviceHub/common/common.pri b/DeviceHub/common/common.pri index feeba36..86259e8 100644 --- a/DeviceHub/common/common.pri +++ b/DeviceHub/common/common.pri @@ -3,8 +3,8 @@ SOURCES += $$PWD/utils/QByteUtil.cpp SOURCES += $$PWD/utils/QSerialPortUtil.cpp SOURCES += $$PWD/utils/QLogUtil.cpp -#SOURCES += $$PWD/utils/QKafkaConsumer.cpp -#SOURCES += $$PWD/utils/QKafkaProducer.cpp +SOURCES += $$PWD/utils/QKafkaConsumer.cpp +SOURCES += $$PWD/utils/QKafkaProducer.cpp SOURCES += $$PWD/utils/HttpRequestUtil.cpp SOURCES += $$PWD/utils/MD5.cpp SOURCES += $$PWD/HttpRequestController.cpp @@ -13,8 +13,8 @@ HEADERS += $$PWD/utils/QByteUtil.h HEADERS += $$PWD/utils/QSerialPortUtil.h HEADERS += $$PWD/utils/QLogUtil.h -#HEADERS += $$PWD/utils/QKafkaConsumer.h -#HEADERS += $$PWD/utils/QKafkaProducer.h +HEADERS += $$PWD/utils/QKafkaConsumer.h +HEADERS += $$PWD/utils/QKafkaProducer.h HEADERS += $$PWD/utils/HttpRequestUtil.h HEADERS += $$PWD/utils/DefHead.h HEADERS += $$PWD/utils/MD5.h diff --git a/DeviceHub/common/utils/QKafkaConsumer.cpp b/DeviceHub/common/utils/QKafkaConsumer.cpp index b3cb9fd..c62f08e 100644 --- a/DeviceHub/common/utils/QKafkaConsumer.cpp +++ b/DeviceHub/common/utils/QKafkaConsumer.cpp @@ -1,4 +1,5 @@ #include "QKafkaConsumer.h" +#include "SettingConfig.h" #include #include @@ -25,6 +26,14 @@ int QKafkaConsumer::createConsumer() { int ret = conf->set("metadata.broker.list", brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } + if (ret != RdKafka::Conf::CONF_OK) { std::cerr << "RdKafka conf set brokerlist failed :" << errStr.c_str() << std::endl; diff --git a/DeviceHub/common/utils/QKafkaProducer.cpp b/DeviceHub/common/utils/QKafkaProducer.cpp index c0db128..109e581 100644 --- a/DeviceHub/common/utils/QKafkaProducer.cpp +++ b/DeviceHub/common/utils/QKafkaProducer.cpp @@ -1,4 +1,5 @@ #include "QKafkaProducer.h" +#include "SettingConfig.h" #include QKafkaProducer::QKafkaProducer(QObject *parent) : QObject(parent) @@ -20,6 +21,13 @@ { int result; result = this->conf->set("bootstrap.servers", this->brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } if (result != RdKafka::Conf::CONF_OK) { diff --git a/DeviceHub/common/utils/QSerialPortUtil.cpp b/DeviceHub/common/utils/QSerialPortUtil.cpp index 9de0047..a5e07ac 100644 --- a/DeviceHub/common/utils/QSerialPortUtil.cpp +++ b/DeviceHub/common/utils/QSerialPortUtil.cpp @@ -25,6 +25,8 @@ open = serial.open(QIODevice::ReadWrite); + std::cout << portName.toStdString() << " " << QString::number(baudRate).toStdString() << " " << open << std::endl; + if (open == true) { // mock data received per second diff --git a/DeviceHub/common/utils/SettingConfig.cpp b/DeviceHub/common/utils/SettingConfig.cpp index 6f17295..ea27d43 100644 --- a/DeviceHub/common/utils/SettingConfig.cpp +++ b/DeviceHub/common/utils/SettingConfig.cpp @@ -14,6 +14,9 @@ KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); KAFKA_CMD_TOPIC = getProperty("kafka", "cmdTopic").toString(); KAFKA_CMDCB_TOPIC = getProperty("kafka", "cmdcbTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "saslUsername").toString(); + SASL_PASSWORD = getProperty("kafka", "saslPassword").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.h b/DeviceHub/DeviceHubWindow.h index 62b4055..cb5875a 100644 --- a/DeviceHub/DeviceHubWindow.h +++ b/DeviceHub/DeviceHubWindow.h @@ -5,7 +5,7 @@ #include #include "common/HttpRequestController.h" -//#include "common/utils/QKafkaConsumer.h" +#include "common/utils/QKafkaConsumer.h" #include "device/DeviceBase.h" #include "FrequencyTuningForm.h" #include "SignalGeneratorForm.h" @@ -32,7 +32,7 @@ int currentDevIndex; QMap> allTypeDevList; -// QKafkaConsumer * kafkaConsumer; + QKafkaConsumer * kafkaConsumer; QComboBox * getDevTypeSelect(); QComboBox * getDevSelect(); diff --git a/DeviceHub/FreqReplicatorForm.cpp b/DeviceHub/FreqReplicatorForm.cpp index e52ab24..bda0658 100644 --- a/DeviceHub/FreqReplicatorForm.cpp +++ b/DeviceHub/FreqReplicatorForm.cpp @@ -29,6 +29,12 @@ void FreqReplicatorForm::drawDeviceFrameOnForm(DeviceFrameBaseDto * frameData) { + QString currentDevCode = ((DeviceHubWindow *)this->parent()->parent())->getDevSelect()->currentData().toJsonObject().find("deviceNo")->toString(); + if (currentDevCode != frameData->devCode) + { + return; + } + // 当前显示的设备编号 if (frameData->frameType == "1001") { @@ -44,5 +50,17 @@ doc.setArray(dataObj.find("outValid")->toArray()); ui->frOutStatus->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + } else if (frameData->frameType == "1002") + { + FreqReplicatorStatusDto * statusFrameDto = (FreqReplicatorStatusDto *) frameData; + + QJsonObject dataObj = statusFrameDto->toJSON().find("data")->toObject(); + QJsonDocument doc; + + doc.setArray(dataObj.find("inValid")->toArray()); + ui->frInStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + + doc.setArray(dataObj.find("outValid")->toArray()); + ui->frOutStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); } } diff --git a/DeviceHub/FreqReplicatorForm.ui b/DeviceHub/FreqReplicatorForm.ui index cbc4ffb..2f6c15d 100644 --- a/DeviceHub/FreqReplicatorForm.ui +++ b/DeviceHub/FreqReplicatorForm.ui @@ -129,7 +129,7 @@ - 输出监测 + 输出监测AB @@ -148,7 +148,7 @@ - 输入状态 + 输入状态AB @@ -170,6 +170,64 @@ + + + + 540 + 130 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输入状态CD + + + + + + 620 + 130 + 200 + 30 + + + + + + + 100 + 230 + 400 + 30 + + + + + + + 20 + 230 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输出监测CD + + diff --git a/DeviceHub/common/common.pri b/DeviceHub/common/common.pri index feeba36..86259e8 100644 --- a/DeviceHub/common/common.pri +++ b/DeviceHub/common/common.pri @@ -3,8 +3,8 @@ SOURCES += $$PWD/utils/QByteUtil.cpp SOURCES += $$PWD/utils/QSerialPortUtil.cpp SOURCES += $$PWD/utils/QLogUtil.cpp -#SOURCES += $$PWD/utils/QKafkaConsumer.cpp -#SOURCES += $$PWD/utils/QKafkaProducer.cpp +SOURCES += $$PWD/utils/QKafkaConsumer.cpp +SOURCES += $$PWD/utils/QKafkaProducer.cpp SOURCES += $$PWD/utils/HttpRequestUtil.cpp SOURCES += $$PWD/utils/MD5.cpp SOURCES += $$PWD/HttpRequestController.cpp @@ -13,8 +13,8 @@ HEADERS += $$PWD/utils/QByteUtil.h HEADERS += $$PWD/utils/QSerialPortUtil.h HEADERS += $$PWD/utils/QLogUtil.h -#HEADERS += $$PWD/utils/QKafkaConsumer.h -#HEADERS += $$PWD/utils/QKafkaProducer.h +HEADERS += $$PWD/utils/QKafkaConsumer.h +HEADERS += $$PWD/utils/QKafkaProducer.h HEADERS += $$PWD/utils/HttpRequestUtil.h HEADERS += $$PWD/utils/DefHead.h HEADERS += $$PWD/utils/MD5.h diff --git a/DeviceHub/common/utils/QKafkaConsumer.cpp b/DeviceHub/common/utils/QKafkaConsumer.cpp index b3cb9fd..c62f08e 100644 --- a/DeviceHub/common/utils/QKafkaConsumer.cpp +++ b/DeviceHub/common/utils/QKafkaConsumer.cpp @@ -1,4 +1,5 @@ #include "QKafkaConsumer.h" +#include "SettingConfig.h" #include #include @@ -25,6 +26,14 @@ int QKafkaConsumer::createConsumer() { int ret = conf->set("metadata.broker.list", brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } + if (ret != RdKafka::Conf::CONF_OK) { std::cerr << "RdKafka conf set brokerlist failed :" << errStr.c_str() << std::endl; diff --git a/DeviceHub/common/utils/QKafkaProducer.cpp b/DeviceHub/common/utils/QKafkaProducer.cpp index c0db128..109e581 100644 --- a/DeviceHub/common/utils/QKafkaProducer.cpp +++ b/DeviceHub/common/utils/QKafkaProducer.cpp @@ -1,4 +1,5 @@ #include "QKafkaProducer.h" +#include "SettingConfig.h" #include QKafkaProducer::QKafkaProducer(QObject *parent) : QObject(parent) @@ -20,6 +21,13 @@ { int result; result = this->conf->set("bootstrap.servers", this->brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } if (result != RdKafka::Conf::CONF_OK) { diff --git a/DeviceHub/common/utils/QSerialPortUtil.cpp b/DeviceHub/common/utils/QSerialPortUtil.cpp index 9de0047..a5e07ac 100644 --- a/DeviceHub/common/utils/QSerialPortUtil.cpp +++ b/DeviceHub/common/utils/QSerialPortUtil.cpp @@ -25,6 +25,8 @@ open = serial.open(QIODevice::ReadWrite); + std::cout << portName.toStdString() << " " << QString::number(baudRate).toStdString() << " " << open << std::endl; + if (open == true) { // mock data received per second diff --git a/DeviceHub/common/utils/SettingConfig.cpp b/DeviceHub/common/utils/SettingConfig.cpp index 6f17295..ea27d43 100644 --- a/DeviceHub/common/utils/SettingConfig.cpp +++ b/DeviceHub/common/utils/SettingConfig.cpp @@ -14,6 +14,9 @@ KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); KAFKA_CMD_TOPIC = getProperty("kafka", "cmdTopic").toString(); KAFKA_CMDCB_TOPIC = getProperty("kafka", "cmdcbTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "saslUsername").toString(); + SASL_PASSWORD = getProperty("kafka", "saslPassword").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/DeviceHub/common/utils/SettingConfig.h b/DeviceHub/common/utils/SettingConfig.h index c50bcc0..f6cc2af 100644 --- a/DeviceHub/common/utils/SettingConfig.h +++ b/DeviceHub/common/utils/SettingConfig.h @@ -36,6 +36,9 @@ QString KAFKA_DATA_TOPIC; QString KAFKA_CMD_TOPIC; QString KAFKA_CMDCB_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.h b/DeviceHub/DeviceHubWindow.h index 62b4055..cb5875a 100644 --- a/DeviceHub/DeviceHubWindow.h +++ b/DeviceHub/DeviceHubWindow.h @@ -5,7 +5,7 @@ #include #include "common/HttpRequestController.h" -//#include "common/utils/QKafkaConsumer.h" +#include "common/utils/QKafkaConsumer.h" #include "device/DeviceBase.h" #include "FrequencyTuningForm.h" #include "SignalGeneratorForm.h" @@ -32,7 +32,7 @@ int currentDevIndex; QMap> allTypeDevList; -// QKafkaConsumer * kafkaConsumer; + QKafkaConsumer * kafkaConsumer; QComboBox * getDevTypeSelect(); QComboBox * getDevSelect(); diff --git a/DeviceHub/FreqReplicatorForm.cpp b/DeviceHub/FreqReplicatorForm.cpp index e52ab24..bda0658 100644 --- a/DeviceHub/FreqReplicatorForm.cpp +++ b/DeviceHub/FreqReplicatorForm.cpp @@ -29,6 +29,12 @@ void FreqReplicatorForm::drawDeviceFrameOnForm(DeviceFrameBaseDto * frameData) { + QString currentDevCode = ((DeviceHubWindow *)this->parent()->parent())->getDevSelect()->currentData().toJsonObject().find("deviceNo")->toString(); + if (currentDevCode != frameData->devCode) + { + return; + } + // 当前显示的设备编号 if (frameData->frameType == "1001") { @@ -44,5 +50,17 @@ doc.setArray(dataObj.find("outValid")->toArray()); ui->frOutStatus->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + } else if (frameData->frameType == "1002") + { + FreqReplicatorStatusDto * statusFrameDto = (FreqReplicatorStatusDto *) frameData; + + QJsonObject dataObj = statusFrameDto->toJSON().find("data")->toObject(); + QJsonDocument doc; + + doc.setArray(dataObj.find("inValid")->toArray()); + ui->frInStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + + doc.setArray(dataObj.find("outValid")->toArray()); + ui->frOutStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); } } diff --git a/DeviceHub/FreqReplicatorForm.ui b/DeviceHub/FreqReplicatorForm.ui index cbc4ffb..2f6c15d 100644 --- a/DeviceHub/FreqReplicatorForm.ui +++ b/DeviceHub/FreqReplicatorForm.ui @@ -129,7 +129,7 @@ - 输出监测 + 输出监测AB @@ -148,7 +148,7 @@ - 输入状态 + 输入状态AB @@ -170,6 +170,64 @@ + + + + 540 + 130 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输入状态CD + + + + + + 620 + 130 + 200 + 30 + + + + + + + 100 + 230 + 400 + 30 + + + + + + + 20 + 230 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输出监测CD + + diff --git a/DeviceHub/common/common.pri b/DeviceHub/common/common.pri index feeba36..86259e8 100644 --- a/DeviceHub/common/common.pri +++ b/DeviceHub/common/common.pri @@ -3,8 +3,8 @@ SOURCES += $$PWD/utils/QByteUtil.cpp SOURCES += $$PWD/utils/QSerialPortUtil.cpp SOURCES += $$PWD/utils/QLogUtil.cpp -#SOURCES += $$PWD/utils/QKafkaConsumer.cpp -#SOURCES += $$PWD/utils/QKafkaProducer.cpp +SOURCES += $$PWD/utils/QKafkaConsumer.cpp +SOURCES += $$PWD/utils/QKafkaProducer.cpp SOURCES += $$PWD/utils/HttpRequestUtil.cpp SOURCES += $$PWD/utils/MD5.cpp SOURCES += $$PWD/HttpRequestController.cpp @@ -13,8 +13,8 @@ HEADERS += $$PWD/utils/QByteUtil.h HEADERS += $$PWD/utils/QSerialPortUtil.h HEADERS += $$PWD/utils/QLogUtil.h -#HEADERS += $$PWD/utils/QKafkaConsumer.h -#HEADERS += $$PWD/utils/QKafkaProducer.h +HEADERS += $$PWD/utils/QKafkaConsumer.h +HEADERS += $$PWD/utils/QKafkaProducer.h HEADERS += $$PWD/utils/HttpRequestUtil.h HEADERS += $$PWD/utils/DefHead.h HEADERS += $$PWD/utils/MD5.h diff --git a/DeviceHub/common/utils/QKafkaConsumer.cpp b/DeviceHub/common/utils/QKafkaConsumer.cpp index b3cb9fd..c62f08e 100644 --- a/DeviceHub/common/utils/QKafkaConsumer.cpp +++ b/DeviceHub/common/utils/QKafkaConsumer.cpp @@ -1,4 +1,5 @@ #include "QKafkaConsumer.h" +#include "SettingConfig.h" #include #include @@ -25,6 +26,14 @@ int QKafkaConsumer::createConsumer() { int ret = conf->set("metadata.broker.list", brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } + if (ret != RdKafka::Conf::CONF_OK) { std::cerr << "RdKafka conf set brokerlist failed :" << errStr.c_str() << std::endl; diff --git a/DeviceHub/common/utils/QKafkaProducer.cpp b/DeviceHub/common/utils/QKafkaProducer.cpp index c0db128..109e581 100644 --- a/DeviceHub/common/utils/QKafkaProducer.cpp +++ b/DeviceHub/common/utils/QKafkaProducer.cpp @@ -1,4 +1,5 @@ #include "QKafkaProducer.h" +#include "SettingConfig.h" #include QKafkaProducer::QKafkaProducer(QObject *parent) : QObject(parent) @@ -20,6 +21,13 @@ { int result; result = this->conf->set("bootstrap.servers", this->brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } if (result != RdKafka::Conf::CONF_OK) { diff --git a/DeviceHub/common/utils/QSerialPortUtil.cpp b/DeviceHub/common/utils/QSerialPortUtil.cpp index 9de0047..a5e07ac 100644 --- a/DeviceHub/common/utils/QSerialPortUtil.cpp +++ b/DeviceHub/common/utils/QSerialPortUtil.cpp @@ -25,6 +25,8 @@ open = serial.open(QIODevice::ReadWrite); + std::cout << portName.toStdString() << " " << QString::number(baudRate).toStdString() << " " << open << std::endl; + if (open == true) { // mock data received per second diff --git a/DeviceHub/common/utils/SettingConfig.cpp b/DeviceHub/common/utils/SettingConfig.cpp index 6f17295..ea27d43 100644 --- a/DeviceHub/common/utils/SettingConfig.cpp +++ b/DeviceHub/common/utils/SettingConfig.cpp @@ -14,6 +14,9 @@ KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); KAFKA_CMD_TOPIC = getProperty("kafka", "cmdTopic").toString(); KAFKA_CMDCB_TOPIC = getProperty("kafka", "cmdcbTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "saslUsername").toString(); + SASL_PASSWORD = getProperty("kafka", "saslPassword").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/DeviceHub/common/utils/SettingConfig.h b/DeviceHub/common/utils/SettingConfig.h index c50bcc0..f6cc2af 100644 --- a/DeviceHub/common/utils/SettingConfig.h +++ b/DeviceHub/common/utils/SettingConfig.h @@ -36,6 +36,9 @@ QString KAFKA_DATA_TOPIC; QString KAFKA_CMD_TOPIC; QString KAFKA_CMDCB_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/DeviceHub/conf/config.ini b/DeviceHub/conf/config.ini index 64e57ba..ad7cb35 100644 --- a/DeviceHub/conf/config.ini +++ b/DeviceHub/conf/config.ini @@ -21,4 +21,4 @@ baseUrl="http://111.198.10.15:11410" [log] -basePath="/home/admin/Qt/ZXSSCJ-Release/DevStatus/logs/" +basePath="/home/admin/Qt/ZXSSCJ-Release/DeviceHub/logs/" diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.h b/DeviceHub/DeviceHubWindow.h index 62b4055..cb5875a 100644 --- a/DeviceHub/DeviceHubWindow.h +++ b/DeviceHub/DeviceHubWindow.h @@ -5,7 +5,7 @@ #include #include "common/HttpRequestController.h" -//#include "common/utils/QKafkaConsumer.h" +#include "common/utils/QKafkaConsumer.h" #include "device/DeviceBase.h" #include "FrequencyTuningForm.h" #include "SignalGeneratorForm.h" @@ -32,7 +32,7 @@ int currentDevIndex; QMap> allTypeDevList; -// QKafkaConsumer * kafkaConsumer; + QKafkaConsumer * kafkaConsumer; QComboBox * getDevTypeSelect(); QComboBox * getDevSelect(); diff --git a/DeviceHub/FreqReplicatorForm.cpp b/DeviceHub/FreqReplicatorForm.cpp index e52ab24..bda0658 100644 --- a/DeviceHub/FreqReplicatorForm.cpp +++ b/DeviceHub/FreqReplicatorForm.cpp @@ -29,6 +29,12 @@ void FreqReplicatorForm::drawDeviceFrameOnForm(DeviceFrameBaseDto * frameData) { + QString currentDevCode = ((DeviceHubWindow *)this->parent()->parent())->getDevSelect()->currentData().toJsonObject().find("deviceNo")->toString(); + if (currentDevCode != frameData->devCode) + { + return; + } + // 当前显示的设备编号 if (frameData->frameType == "1001") { @@ -44,5 +50,17 @@ doc.setArray(dataObj.find("outValid")->toArray()); ui->frOutStatus->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + } else if (frameData->frameType == "1002") + { + FreqReplicatorStatusDto * statusFrameDto = (FreqReplicatorStatusDto *) frameData; + + QJsonObject dataObj = statusFrameDto->toJSON().find("data")->toObject(); + QJsonDocument doc; + + doc.setArray(dataObj.find("inValid")->toArray()); + ui->frInStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + + doc.setArray(dataObj.find("outValid")->toArray()); + ui->frOutStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); } } diff --git a/DeviceHub/FreqReplicatorForm.ui b/DeviceHub/FreqReplicatorForm.ui index cbc4ffb..2f6c15d 100644 --- a/DeviceHub/FreqReplicatorForm.ui +++ b/DeviceHub/FreqReplicatorForm.ui @@ -129,7 +129,7 @@ - 输出监测 + 输出监测AB @@ -148,7 +148,7 @@ - 输入状态 + 输入状态AB @@ -170,6 +170,64 @@ + + + + 540 + 130 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输入状态CD + + + + + + 620 + 130 + 200 + 30 + + + + + + + 100 + 230 + 400 + 30 + + + + + + + 20 + 230 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输出监测CD + + diff --git a/DeviceHub/common/common.pri b/DeviceHub/common/common.pri index feeba36..86259e8 100644 --- a/DeviceHub/common/common.pri +++ b/DeviceHub/common/common.pri @@ -3,8 +3,8 @@ SOURCES += $$PWD/utils/QByteUtil.cpp SOURCES += $$PWD/utils/QSerialPortUtil.cpp SOURCES += $$PWD/utils/QLogUtil.cpp -#SOURCES += $$PWD/utils/QKafkaConsumer.cpp -#SOURCES += $$PWD/utils/QKafkaProducer.cpp +SOURCES += $$PWD/utils/QKafkaConsumer.cpp +SOURCES += $$PWD/utils/QKafkaProducer.cpp SOURCES += $$PWD/utils/HttpRequestUtil.cpp SOURCES += $$PWD/utils/MD5.cpp SOURCES += $$PWD/HttpRequestController.cpp @@ -13,8 +13,8 @@ HEADERS += $$PWD/utils/QByteUtil.h HEADERS += $$PWD/utils/QSerialPortUtil.h HEADERS += $$PWD/utils/QLogUtil.h -#HEADERS += $$PWD/utils/QKafkaConsumer.h -#HEADERS += $$PWD/utils/QKafkaProducer.h +HEADERS += $$PWD/utils/QKafkaConsumer.h +HEADERS += $$PWD/utils/QKafkaProducer.h HEADERS += $$PWD/utils/HttpRequestUtil.h HEADERS += $$PWD/utils/DefHead.h HEADERS += $$PWD/utils/MD5.h diff --git a/DeviceHub/common/utils/QKafkaConsumer.cpp b/DeviceHub/common/utils/QKafkaConsumer.cpp index b3cb9fd..c62f08e 100644 --- a/DeviceHub/common/utils/QKafkaConsumer.cpp +++ b/DeviceHub/common/utils/QKafkaConsumer.cpp @@ -1,4 +1,5 @@ #include "QKafkaConsumer.h" +#include "SettingConfig.h" #include #include @@ -25,6 +26,14 @@ int QKafkaConsumer::createConsumer() { int ret = conf->set("metadata.broker.list", brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } + if (ret != RdKafka::Conf::CONF_OK) { std::cerr << "RdKafka conf set brokerlist failed :" << errStr.c_str() << std::endl; diff --git a/DeviceHub/common/utils/QKafkaProducer.cpp b/DeviceHub/common/utils/QKafkaProducer.cpp index c0db128..109e581 100644 --- a/DeviceHub/common/utils/QKafkaProducer.cpp +++ b/DeviceHub/common/utils/QKafkaProducer.cpp @@ -1,4 +1,5 @@ #include "QKafkaProducer.h" +#include "SettingConfig.h" #include QKafkaProducer::QKafkaProducer(QObject *parent) : QObject(parent) @@ -20,6 +21,13 @@ { int result; result = this->conf->set("bootstrap.servers", this->brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } if (result != RdKafka::Conf::CONF_OK) { diff --git a/DeviceHub/common/utils/QSerialPortUtil.cpp b/DeviceHub/common/utils/QSerialPortUtil.cpp index 9de0047..a5e07ac 100644 --- a/DeviceHub/common/utils/QSerialPortUtil.cpp +++ b/DeviceHub/common/utils/QSerialPortUtil.cpp @@ -25,6 +25,8 @@ open = serial.open(QIODevice::ReadWrite); + std::cout << portName.toStdString() << " " << QString::number(baudRate).toStdString() << " " << open << std::endl; + if (open == true) { // mock data received per second diff --git a/DeviceHub/common/utils/SettingConfig.cpp b/DeviceHub/common/utils/SettingConfig.cpp index 6f17295..ea27d43 100644 --- a/DeviceHub/common/utils/SettingConfig.cpp +++ b/DeviceHub/common/utils/SettingConfig.cpp @@ -14,6 +14,9 @@ KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); KAFKA_CMD_TOPIC = getProperty("kafka", "cmdTopic").toString(); KAFKA_CMDCB_TOPIC = getProperty("kafka", "cmdcbTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "saslUsername").toString(); + SASL_PASSWORD = getProperty("kafka", "saslPassword").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/DeviceHub/common/utils/SettingConfig.h b/DeviceHub/common/utils/SettingConfig.h index c50bcc0..f6cc2af 100644 --- a/DeviceHub/common/utils/SettingConfig.h +++ b/DeviceHub/common/utils/SettingConfig.h @@ -36,6 +36,9 @@ QString KAFKA_DATA_TOPIC; QString KAFKA_CMD_TOPIC; QString KAFKA_CMDCB_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/DeviceHub/conf/config.ini b/DeviceHub/conf/config.ini index 64e57ba..ad7cb35 100644 --- a/DeviceHub/conf/config.ini +++ b/DeviceHub/conf/config.ini @@ -21,4 +21,4 @@ baseUrl="http://111.198.10.15:11410" [log] -basePath="/home/admin/Qt/ZXSSCJ-Release/DevStatus/logs/" +basePath="/home/admin/Qt/ZXSSCJ-Release/DeviceHub/logs/" diff --git a/DeviceHub/device/BCodeTerminal.cpp b/DeviceHub/device/BCodeTerminal.cpp index 1e852a9..5d8ec7f 100644 --- a/DeviceHub/device/BCodeTerminal.cpp +++ b/DeviceHub/device/BCodeTerminal.cpp @@ -72,7 +72,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -84,7 +84,7 @@ } } -void BCodeTerminal::afterFramePhase(DeviceFrameBaseDto * frameDto) +void BCodeTerminal::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.h b/DeviceHub/DeviceHubWindow.h index 62b4055..cb5875a 100644 --- a/DeviceHub/DeviceHubWindow.h +++ b/DeviceHub/DeviceHubWindow.h @@ -5,7 +5,7 @@ #include #include "common/HttpRequestController.h" -//#include "common/utils/QKafkaConsumer.h" +#include "common/utils/QKafkaConsumer.h" #include "device/DeviceBase.h" #include "FrequencyTuningForm.h" #include "SignalGeneratorForm.h" @@ -32,7 +32,7 @@ int currentDevIndex; QMap> allTypeDevList; -// QKafkaConsumer * kafkaConsumer; + QKafkaConsumer * kafkaConsumer; QComboBox * getDevTypeSelect(); QComboBox * getDevSelect(); diff --git a/DeviceHub/FreqReplicatorForm.cpp b/DeviceHub/FreqReplicatorForm.cpp index e52ab24..bda0658 100644 --- a/DeviceHub/FreqReplicatorForm.cpp +++ b/DeviceHub/FreqReplicatorForm.cpp @@ -29,6 +29,12 @@ void FreqReplicatorForm::drawDeviceFrameOnForm(DeviceFrameBaseDto * frameData) { + QString currentDevCode = ((DeviceHubWindow *)this->parent()->parent())->getDevSelect()->currentData().toJsonObject().find("deviceNo")->toString(); + if (currentDevCode != frameData->devCode) + { + return; + } + // 当前显示的设备编号 if (frameData->frameType == "1001") { @@ -44,5 +50,17 @@ doc.setArray(dataObj.find("outValid")->toArray()); ui->frOutStatus->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + } else if (frameData->frameType == "1002") + { + FreqReplicatorStatusDto * statusFrameDto = (FreqReplicatorStatusDto *) frameData; + + QJsonObject dataObj = statusFrameDto->toJSON().find("data")->toObject(); + QJsonDocument doc; + + doc.setArray(dataObj.find("inValid")->toArray()); + ui->frInStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + + doc.setArray(dataObj.find("outValid")->toArray()); + ui->frOutStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); } } diff --git a/DeviceHub/FreqReplicatorForm.ui b/DeviceHub/FreqReplicatorForm.ui index cbc4ffb..2f6c15d 100644 --- a/DeviceHub/FreqReplicatorForm.ui +++ b/DeviceHub/FreqReplicatorForm.ui @@ -129,7 +129,7 @@ - 输出监测 + 输出监测AB @@ -148,7 +148,7 @@ - 输入状态 + 输入状态AB @@ -170,6 +170,64 @@ + + + + 540 + 130 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输入状态CD + + + + + + 620 + 130 + 200 + 30 + + + + + + + 100 + 230 + 400 + 30 + + + + + + + 20 + 230 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输出监测CD + + diff --git a/DeviceHub/common/common.pri b/DeviceHub/common/common.pri index feeba36..86259e8 100644 --- a/DeviceHub/common/common.pri +++ b/DeviceHub/common/common.pri @@ -3,8 +3,8 @@ SOURCES += $$PWD/utils/QByteUtil.cpp SOURCES += $$PWD/utils/QSerialPortUtil.cpp SOURCES += $$PWD/utils/QLogUtil.cpp -#SOURCES += $$PWD/utils/QKafkaConsumer.cpp -#SOURCES += $$PWD/utils/QKafkaProducer.cpp +SOURCES += $$PWD/utils/QKafkaConsumer.cpp +SOURCES += $$PWD/utils/QKafkaProducer.cpp SOURCES += $$PWD/utils/HttpRequestUtil.cpp SOURCES += $$PWD/utils/MD5.cpp SOURCES += $$PWD/HttpRequestController.cpp @@ -13,8 +13,8 @@ HEADERS += $$PWD/utils/QByteUtil.h HEADERS += $$PWD/utils/QSerialPortUtil.h HEADERS += $$PWD/utils/QLogUtil.h -#HEADERS += $$PWD/utils/QKafkaConsumer.h -#HEADERS += $$PWD/utils/QKafkaProducer.h +HEADERS += $$PWD/utils/QKafkaConsumer.h +HEADERS += $$PWD/utils/QKafkaProducer.h HEADERS += $$PWD/utils/HttpRequestUtil.h HEADERS += $$PWD/utils/DefHead.h HEADERS += $$PWD/utils/MD5.h diff --git a/DeviceHub/common/utils/QKafkaConsumer.cpp b/DeviceHub/common/utils/QKafkaConsumer.cpp index b3cb9fd..c62f08e 100644 --- a/DeviceHub/common/utils/QKafkaConsumer.cpp +++ b/DeviceHub/common/utils/QKafkaConsumer.cpp @@ -1,4 +1,5 @@ #include "QKafkaConsumer.h" +#include "SettingConfig.h" #include #include @@ -25,6 +26,14 @@ int QKafkaConsumer::createConsumer() { int ret = conf->set("metadata.broker.list", brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } + if (ret != RdKafka::Conf::CONF_OK) { std::cerr << "RdKafka conf set brokerlist failed :" << errStr.c_str() << std::endl; diff --git a/DeviceHub/common/utils/QKafkaProducer.cpp b/DeviceHub/common/utils/QKafkaProducer.cpp index c0db128..109e581 100644 --- a/DeviceHub/common/utils/QKafkaProducer.cpp +++ b/DeviceHub/common/utils/QKafkaProducer.cpp @@ -1,4 +1,5 @@ #include "QKafkaProducer.h" +#include "SettingConfig.h" #include QKafkaProducer::QKafkaProducer(QObject *parent) : QObject(parent) @@ -20,6 +21,13 @@ { int result; result = this->conf->set("bootstrap.servers", this->brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } if (result != RdKafka::Conf::CONF_OK) { diff --git a/DeviceHub/common/utils/QSerialPortUtil.cpp b/DeviceHub/common/utils/QSerialPortUtil.cpp index 9de0047..a5e07ac 100644 --- a/DeviceHub/common/utils/QSerialPortUtil.cpp +++ b/DeviceHub/common/utils/QSerialPortUtil.cpp @@ -25,6 +25,8 @@ open = serial.open(QIODevice::ReadWrite); + std::cout << portName.toStdString() << " " << QString::number(baudRate).toStdString() << " " << open << std::endl; + if (open == true) { // mock data received per second diff --git a/DeviceHub/common/utils/SettingConfig.cpp b/DeviceHub/common/utils/SettingConfig.cpp index 6f17295..ea27d43 100644 --- a/DeviceHub/common/utils/SettingConfig.cpp +++ b/DeviceHub/common/utils/SettingConfig.cpp @@ -14,6 +14,9 @@ KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); KAFKA_CMD_TOPIC = getProperty("kafka", "cmdTopic").toString(); KAFKA_CMDCB_TOPIC = getProperty("kafka", "cmdcbTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "saslUsername").toString(); + SASL_PASSWORD = getProperty("kafka", "saslPassword").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/DeviceHub/common/utils/SettingConfig.h b/DeviceHub/common/utils/SettingConfig.h index c50bcc0..f6cc2af 100644 --- a/DeviceHub/common/utils/SettingConfig.h +++ b/DeviceHub/common/utils/SettingConfig.h @@ -36,6 +36,9 @@ QString KAFKA_DATA_TOPIC; QString KAFKA_CMD_TOPIC; QString KAFKA_CMDCB_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/DeviceHub/conf/config.ini b/DeviceHub/conf/config.ini index 64e57ba..ad7cb35 100644 --- a/DeviceHub/conf/config.ini +++ b/DeviceHub/conf/config.ini @@ -21,4 +21,4 @@ baseUrl="http://111.198.10.15:11410" [log] -basePath="/home/admin/Qt/ZXSSCJ-Release/DevStatus/logs/" +basePath="/home/admin/Qt/ZXSSCJ-Release/DeviceHub/logs/" diff --git a/DeviceHub/device/BCodeTerminal.cpp b/DeviceHub/device/BCodeTerminal.cpp index 1e852a9..5d8ec7f 100644 --- a/DeviceHub/device/BCodeTerminal.cpp +++ b/DeviceHub/device/BCodeTerminal.cpp @@ -72,7 +72,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -84,7 +84,7 @@ } } -void BCodeTerminal::afterFramePhase(DeviceFrameBaseDto * frameDto) +void BCodeTerminal::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/BCodeTerminal.h b/DeviceHub/device/BCodeTerminal.h index f39ab6e..d823431 100644 --- a/DeviceHub/device/BCodeTerminal.h +++ b/DeviceHub/device/BCodeTerminal.h @@ -15,7 +15,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void afterFrameParse(DeviceFrameBaseDto * frameDto); void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.h b/DeviceHub/DeviceHubWindow.h index 62b4055..cb5875a 100644 --- a/DeviceHub/DeviceHubWindow.h +++ b/DeviceHub/DeviceHubWindow.h @@ -5,7 +5,7 @@ #include #include "common/HttpRequestController.h" -//#include "common/utils/QKafkaConsumer.h" +#include "common/utils/QKafkaConsumer.h" #include "device/DeviceBase.h" #include "FrequencyTuningForm.h" #include "SignalGeneratorForm.h" @@ -32,7 +32,7 @@ int currentDevIndex; QMap> allTypeDevList; -// QKafkaConsumer * kafkaConsumer; + QKafkaConsumer * kafkaConsumer; QComboBox * getDevTypeSelect(); QComboBox * getDevSelect(); diff --git a/DeviceHub/FreqReplicatorForm.cpp b/DeviceHub/FreqReplicatorForm.cpp index e52ab24..bda0658 100644 --- a/DeviceHub/FreqReplicatorForm.cpp +++ b/DeviceHub/FreqReplicatorForm.cpp @@ -29,6 +29,12 @@ void FreqReplicatorForm::drawDeviceFrameOnForm(DeviceFrameBaseDto * frameData) { + QString currentDevCode = ((DeviceHubWindow *)this->parent()->parent())->getDevSelect()->currentData().toJsonObject().find("deviceNo")->toString(); + if (currentDevCode != frameData->devCode) + { + return; + } + // 当前显示的设备编号 if (frameData->frameType == "1001") { @@ -44,5 +50,17 @@ doc.setArray(dataObj.find("outValid")->toArray()); ui->frOutStatus->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + } else if (frameData->frameType == "1002") + { + FreqReplicatorStatusDto * statusFrameDto = (FreqReplicatorStatusDto *) frameData; + + QJsonObject dataObj = statusFrameDto->toJSON().find("data")->toObject(); + QJsonDocument doc; + + doc.setArray(dataObj.find("inValid")->toArray()); + ui->frInStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + + doc.setArray(dataObj.find("outValid")->toArray()); + ui->frOutStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); } } diff --git a/DeviceHub/FreqReplicatorForm.ui b/DeviceHub/FreqReplicatorForm.ui index cbc4ffb..2f6c15d 100644 --- a/DeviceHub/FreqReplicatorForm.ui +++ b/DeviceHub/FreqReplicatorForm.ui @@ -129,7 +129,7 @@ - 输出监测 + 输出监测AB @@ -148,7 +148,7 @@ - 输入状态 + 输入状态AB @@ -170,6 +170,64 @@ + + + + 540 + 130 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输入状态CD + + + + + + 620 + 130 + 200 + 30 + + + + + + + 100 + 230 + 400 + 30 + + + + + + + 20 + 230 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输出监测CD + + diff --git a/DeviceHub/common/common.pri b/DeviceHub/common/common.pri index feeba36..86259e8 100644 --- a/DeviceHub/common/common.pri +++ b/DeviceHub/common/common.pri @@ -3,8 +3,8 @@ SOURCES += $$PWD/utils/QByteUtil.cpp SOURCES += $$PWD/utils/QSerialPortUtil.cpp SOURCES += $$PWD/utils/QLogUtil.cpp -#SOURCES += $$PWD/utils/QKafkaConsumer.cpp -#SOURCES += $$PWD/utils/QKafkaProducer.cpp +SOURCES += $$PWD/utils/QKafkaConsumer.cpp +SOURCES += $$PWD/utils/QKafkaProducer.cpp SOURCES += $$PWD/utils/HttpRequestUtil.cpp SOURCES += $$PWD/utils/MD5.cpp SOURCES += $$PWD/HttpRequestController.cpp @@ -13,8 +13,8 @@ HEADERS += $$PWD/utils/QByteUtil.h HEADERS += $$PWD/utils/QSerialPortUtil.h HEADERS += $$PWD/utils/QLogUtil.h -#HEADERS += $$PWD/utils/QKafkaConsumer.h -#HEADERS += $$PWD/utils/QKafkaProducer.h +HEADERS += $$PWD/utils/QKafkaConsumer.h +HEADERS += $$PWD/utils/QKafkaProducer.h HEADERS += $$PWD/utils/HttpRequestUtil.h HEADERS += $$PWD/utils/DefHead.h HEADERS += $$PWD/utils/MD5.h diff --git a/DeviceHub/common/utils/QKafkaConsumer.cpp b/DeviceHub/common/utils/QKafkaConsumer.cpp index b3cb9fd..c62f08e 100644 --- a/DeviceHub/common/utils/QKafkaConsumer.cpp +++ b/DeviceHub/common/utils/QKafkaConsumer.cpp @@ -1,4 +1,5 @@ #include "QKafkaConsumer.h" +#include "SettingConfig.h" #include #include @@ -25,6 +26,14 @@ int QKafkaConsumer::createConsumer() { int ret = conf->set("metadata.broker.list", brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } + if (ret != RdKafka::Conf::CONF_OK) { std::cerr << "RdKafka conf set brokerlist failed :" << errStr.c_str() << std::endl; diff --git a/DeviceHub/common/utils/QKafkaProducer.cpp b/DeviceHub/common/utils/QKafkaProducer.cpp index c0db128..109e581 100644 --- a/DeviceHub/common/utils/QKafkaProducer.cpp +++ b/DeviceHub/common/utils/QKafkaProducer.cpp @@ -1,4 +1,5 @@ #include "QKafkaProducer.h" +#include "SettingConfig.h" #include QKafkaProducer::QKafkaProducer(QObject *parent) : QObject(parent) @@ -20,6 +21,13 @@ { int result; result = this->conf->set("bootstrap.servers", this->brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } if (result != RdKafka::Conf::CONF_OK) { diff --git a/DeviceHub/common/utils/QSerialPortUtil.cpp b/DeviceHub/common/utils/QSerialPortUtil.cpp index 9de0047..a5e07ac 100644 --- a/DeviceHub/common/utils/QSerialPortUtil.cpp +++ b/DeviceHub/common/utils/QSerialPortUtil.cpp @@ -25,6 +25,8 @@ open = serial.open(QIODevice::ReadWrite); + std::cout << portName.toStdString() << " " << QString::number(baudRate).toStdString() << " " << open << std::endl; + if (open == true) { // mock data received per second diff --git a/DeviceHub/common/utils/SettingConfig.cpp b/DeviceHub/common/utils/SettingConfig.cpp index 6f17295..ea27d43 100644 --- a/DeviceHub/common/utils/SettingConfig.cpp +++ b/DeviceHub/common/utils/SettingConfig.cpp @@ -14,6 +14,9 @@ KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); KAFKA_CMD_TOPIC = getProperty("kafka", "cmdTopic").toString(); KAFKA_CMDCB_TOPIC = getProperty("kafka", "cmdcbTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "saslUsername").toString(); + SASL_PASSWORD = getProperty("kafka", "saslPassword").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/DeviceHub/common/utils/SettingConfig.h b/DeviceHub/common/utils/SettingConfig.h index c50bcc0..f6cc2af 100644 --- a/DeviceHub/common/utils/SettingConfig.h +++ b/DeviceHub/common/utils/SettingConfig.h @@ -36,6 +36,9 @@ QString KAFKA_DATA_TOPIC; QString KAFKA_CMD_TOPIC; QString KAFKA_CMDCB_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/DeviceHub/conf/config.ini b/DeviceHub/conf/config.ini index 64e57ba..ad7cb35 100644 --- a/DeviceHub/conf/config.ini +++ b/DeviceHub/conf/config.ini @@ -21,4 +21,4 @@ baseUrl="http://111.198.10.15:11410" [log] -basePath="/home/admin/Qt/ZXSSCJ-Release/DevStatus/logs/" +basePath="/home/admin/Qt/ZXSSCJ-Release/DeviceHub/logs/" diff --git a/DeviceHub/device/BCodeTerminal.cpp b/DeviceHub/device/BCodeTerminal.cpp index 1e852a9..5d8ec7f 100644 --- a/DeviceHub/device/BCodeTerminal.cpp +++ b/DeviceHub/device/BCodeTerminal.cpp @@ -72,7 +72,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -84,7 +84,7 @@ } } -void BCodeTerminal::afterFramePhase(DeviceFrameBaseDto * frameDto) +void BCodeTerminal::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/BCodeTerminal.h b/DeviceHub/device/BCodeTerminal.h index f39ab6e..d823431 100644 --- a/DeviceHub/device/BCodeTerminal.h +++ b/DeviceHub/device/BCodeTerminal.h @@ -15,7 +15,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void afterFrameParse(DeviceFrameBaseDto * frameDto); void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/DeviceBase.cpp b/DeviceHub/device/DeviceBase.cpp index 06cfddd..dc8d791 100644 --- a/DeviceHub/device/DeviceBase.cpp +++ b/DeviceHub/device/DeviceBase.cpp @@ -1,10 +1,10 @@ #include "DeviceBase.h" -//#include "FrequencyTuning.h" -//#include "SignalGenerator.h" -//#include "TimeSwitcher.h" -//#include "FreqSwitcher.h" -//#include "BCodeTerminal.h" -//#include "TimeReplicator.h" +#include "FrequencyTuning.h" +#include "SignalGenerator.h" +#include "TimeSwitcher.h" +#include "FreqSwitcher.h" +#include "BCodeTerminal.h" +#include "TimeReplicator.h" #include "FreqReplicator.h" #include @@ -42,25 +42,25 @@ DeviceBase * DeviceBase::deviceFactory(QString deviceType, QObject * parent) { DeviceBase * base = 0; -// if (deviceType == "03") -// { -// base = new FrequencyTuning(parent); -// } else if (deviceType == "04") -// { -// base = new SignalGenerator(parent); -// } else if (deviceType == "05") -// { -// base = new TimeSwitcher(parent); -// } else if (deviceType == "06") -// { -// base = new FreqSwitcher(parent); -// } else if (deviceType == "07") -// { -// base = new BCodeTerminal(parent); -// } else if (deviceType == "09") -// { -// base = new TimeReplicator(parent); -// } else + if (deviceType == "03") + { + base = new FrequencyTuning(parent); + } else if (deviceType == "04") + { + base = new SignalGenerator(parent); + } else if (deviceType == "05") + { + base = new TimeSwitcher(parent); + } else if (deviceType == "06") + { + base = new FreqSwitcher(parent); + } else if (deviceType == "07") + { + base = new BCodeTerminal(parent); + } else if (deviceType == "09") + { + base = new TimeReplicator(parent); + } else if (deviceType == "10") { base = new FreqReplicator(parent); @@ -76,7 +76,12 @@ void DeviceBase::initSerialPort() { - this->serialUtil.openSerialPort(this->comName, this->baudRate); + QStringList comNameList = this->comName.split(","); + this->serialUtil.openSerialPort(comNameList.at(0), this->baudRate); + if (comNameList.size() == 2) + { + this->serialUtilB.openSerialPort(comNameList.at(1), this->baudRate); + } } void DeviceBase::sendDataToSerial(QByteArray data) diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.h b/DeviceHub/DeviceHubWindow.h index 62b4055..cb5875a 100644 --- a/DeviceHub/DeviceHubWindow.h +++ b/DeviceHub/DeviceHubWindow.h @@ -5,7 +5,7 @@ #include #include "common/HttpRequestController.h" -//#include "common/utils/QKafkaConsumer.h" +#include "common/utils/QKafkaConsumer.h" #include "device/DeviceBase.h" #include "FrequencyTuningForm.h" #include "SignalGeneratorForm.h" @@ -32,7 +32,7 @@ int currentDevIndex; QMap> allTypeDevList; -// QKafkaConsumer * kafkaConsumer; + QKafkaConsumer * kafkaConsumer; QComboBox * getDevTypeSelect(); QComboBox * getDevSelect(); diff --git a/DeviceHub/FreqReplicatorForm.cpp b/DeviceHub/FreqReplicatorForm.cpp index e52ab24..bda0658 100644 --- a/DeviceHub/FreqReplicatorForm.cpp +++ b/DeviceHub/FreqReplicatorForm.cpp @@ -29,6 +29,12 @@ void FreqReplicatorForm::drawDeviceFrameOnForm(DeviceFrameBaseDto * frameData) { + QString currentDevCode = ((DeviceHubWindow *)this->parent()->parent())->getDevSelect()->currentData().toJsonObject().find("deviceNo")->toString(); + if (currentDevCode != frameData->devCode) + { + return; + } + // 当前显示的设备编号 if (frameData->frameType == "1001") { @@ -44,5 +50,17 @@ doc.setArray(dataObj.find("outValid")->toArray()); ui->frOutStatus->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + } else if (frameData->frameType == "1002") + { + FreqReplicatorStatusDto * statusFrameDto = (FreqReplicatorStatusDto *) frameData; + + QJsonObject dataObj = statusFrameDto->toJSON().find("data")->toObject(); + QJsonDocument doc; + + doc.setArray(dataObj.find("inValid")->toArray()); + ui->frInStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + + doc.setArray(dataObj.find("outValid")->toArray()); + ui->frOutStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); } } diff --git a/DeviceHub/FreqReplicatorForm.ui b/DeviceHub/FreqReplicatorForm.ui index cbc4ffb..2f6c15d 100644 --- a/DeviceHub/FreqReplicatorForm.ui +++ b/DeviceHub/FreqReplicatorForm.ui @@ -129,7 +129,7 @@ - 输出监测 + 输出监测AB @@ -148,7 +148,7 @@ - 输入状态 + 输入状态AB @@ -170,6 +170,64 @@ + + + + 540 + 130 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输入状态CD + + + + + + 620 + 130 + 200 + 30 + + + + + + + 100 + 230 + 400 + 30 + + + + + + + 20 + 230 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输出监测CD + + diff --git a/DeviceHub/common/common.pri b/DeviceHub/common/common.pri index feeba36..86259e8 100644 --- a/DeviceHub/common/common.pri +++ b/DeviceHub/common/common.pri @@ -3,8 +3,8 @@ SOURCES += $$PWD/utils/QByteUtil.cpp SOURCES += $$PWD/utils/QSerialPortUtil.cpp SOURCES += $$PWD/utils/QLogUtil.cpp -#SOURCES += $$PWD/utils/QKafkaConsumer.cpp -#SOURCES += $$PWD/utils/QKafkaProducer.cpp +SOURCES += $$PWD/utils/QKafkaConsumer.cpp +SOURCES += $$PWD/utils/QKafkaProducer.cpp SOURCES += $$PWD/utils/HttpRequestUtil.cpp SOURCES += $$PWD/utils/MD5.cpp SOURCES += $$PWD/HttpRequestController.cpp @@ -13,8 +13,8 @@ HEADERS += $$PWD/utils/QByteUtil.h HEADERS += $$PWD/utils/QSerialPortUtil.h HEADERS += $$PWD/utils/QLogUtil.h -#HEADERS += $$PWD/utils/QKafkaConsumer.h -#HEADERS += $$PWD/utils/QKafkaProducer.h +HEADERS += $$PWD/utils/QKafkaConsumer.h +HEADERS += $$PWD/utils/QKafkaProducer.h HEADERS += $$PWD/utils/HttpRequestUtil.h HEADERS += $$PWD/utils/DefHead.h HEADERS += $$PWD/utils/MD5.h diff --git a/DeviceHub/common/utils/QKafkaConsumer.cpp b/DeviceHub/common/utils/QKafkaConsumer.cpp index b3cb9fd..c62f08e 100644 --- a/DeviceHub/common/utils/QKafkaConsumer.cpp +++ b/DeviceHub/common/utils/QKafkaConsumer.cpp @@ -1,4 +1,5 @@ #include "QKafkaConsumer.h" +#include "SettingConfig.h" #include #include @@ -25,6 +26,14 @@ int QKafkaConsumer::createConsumer() { int ret = conf->set("metadata.broker.list", brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } + if (ret != RdKafka::Conf::CONF_OK) { std::cerr << "RdKafka conf set brokerlist failed :" << errStr.c_str() << std::endl; diff --git a/DeviceHub/common/utils/QKafkaProducer.cpp b/DeviceHub/common/utils/QKafkaProducer.cpp index c0db128..109e581 100644 --- a/DeviceHub/common/utils/QKafkaProducer.cpp +++ b/DeviceHub/common/utils/QKafkaProducer.cpp @@ -1,4 +1,5 @@ #include "QKafkaProducer.h" +#include "SettingConfig.h" #include QKafkaProducer::QKafkaProducer(QObject *parent) : QObject(parent) @@ -20,6 +21,13 @@ { int result; result = this->conf->set("bootstrap.servers", this->brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } if (result != RdKafka::Conf::CONF_OK) { diff --git a/DeviceHub/common/utils/QSerialPortUtil.cpp b/DeviceHub/common/utils/QSerialPortUtil.cpp index 9de0047..a5e07ac 100644 --- a/DeviceHub/common/utils/QSerialPortUtil.cpp +++ b/DeviceHub/common/utils/QSerialPortUtil.cpp @@ -25,6 +25,8 @@ open = serial.open(QIODevice::ReadWrite); + std::cout << portName.toStdString() << " " << QString::number(baudRate).toStdString() << " " << open << std::endl; + if (open == true) { // mock data received per second diff --git a/DeviceHub/common/utils/SettingConfig.cpp b/DeviceHub/common/utils/SettingConfig.cpp index 6f17295..ea27d43 100644 --- a/DeviceHub/common/utils/SettingConfig.cpp +++ b/DeviceHub/common/utils/SettingConfig.cpp @@ -14,6 +14,9 @@ KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); KAFKA_CMD_TOPIC = getProperty("kafka", "cmdTopic").toString(); KAFKA_CMDCB_TOPIC = getProperty("kafka", "cmdcbTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "saslUsername").toString(); + SASL_PASSWORD = getProperty("kafka", "saslPassword").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/DeviceHub/common/utils/SettingConfig.h b/DeviceHub/common/utils/SettingConfig.h index c50bcc0..f6cc2af 100644 --- a/DeviceHub/common/utils/SettingConfig.h +++ b/DeviceHub/common/utils/SettingConfig.h @@ -36,6 +36,9 @@ QString KAFKA_DATA_TOPIC; QString KAFKA_CMD_TOPIC; QString KAFKA_CMDCB_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/DeviceHub/conf/config.ini b/DeviceHub/conf/config.ini index 64e57ba..ad7cb35 100644 --- a/DeviceHub/conf/config.ini +++ b/DeviceHub/conf/config.ini @@ -21,4 +21,4 @@ baseUrl="http://111.198.10.15:11410" [log] -basePath="/home/admin/Qt/ZXSSCJ-Release/DevStatus/logs/" +basePath="/home/admin/Qt/ZXSSCJ-Release/DeviceHub/logs/" diff --git a/DeviceHub/device/BCodeTerminal.cpp b/DeviceHub/device/BCodeTerminal.cpp index 1e852a9..5d8ec7f 100644 --- a/DeviceHub/device/BCodeTerminal.cpp +++ b/DeviceHub/device/BCodeTerminal.cpp @@ -72,7 +72,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -84,7 +84,7 @@ } } -void BCodeTerminal::afterFramePhase(DeviceFrameBaseDto * frameDto) +void BCodeTerminal::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/BCodeTerminal.h b/DeviceHub/device/BCodeTerminal.h index f39ab6e..d823431 100644 --- a/DeviceHub/device/BCodeTerminal.h +++ b/DeviceHub/device/BCodeTerminal.h @@ -15,7 +15,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void afterFrameParse(DeviceFrameBaseDto * frameDto); void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/DeviceBase.cpp b/DeviceHub/device/DeviceBase.cpp index 06cfddd..dc8d791 100644 --- a/DeviceHub/device/DeviceBase.cpp +++ b/DeviceHub/device/DeviceBase.cpp @@ -1,10 +1,10 @@ #include "DeviceBase.h" -//#include "FrequencyTuning.h" -//#include "SignalGenerator.h" -//#include "TimeSwitcher.h" -//#include "FreqSwitcher.h" -//#include "BCodeTerminal.h" -//#include "TimeReplicator.h" +#include "FrequencyTuning.h" +#include "SignalGenerator.h" +#include "TimeSwitcher.h" +#include "FreqSwitcher.h" +#include "BCodeTerminal.h" +#include "TimeReplicator.h" #include "FreqReplicator.h" #include @@ -42,25 +42,25 @@ DeviceBase * DeviceBase::deviceFactory(QString deviceType, QObject * parent) { DeviceBase * base = 0; -// if (deviceType == "03") -// { -// base = new FrequencyTuning(parent); -// } else if (deviceType == "04") -// { -// base = new SignalGenerator(parent); -// } else if (deviceType == "05") -// { -// base = new TimeSwitcher(parent); -// } else if (deviceType == "06") -// { -// base = new FreqSwitcher(parent); -// } else if (deviceType == "07") -// { -// base = new BCodeTerminal(parent); -// } else if (deviceType == "09") -// { -// base = new TimeReplicator(parent); -// } else + if (deviceType == "03") + { + base = new FrequencyTuning(parent); + } else if (deviceType == "04") + { + base = new SignalGenerator(parent); + } else if (deviceType == "05") + { + base = new TimeSwitcher(parent); + } else if (deviceType == "06") + { + base = new FreqSwitcher(parent); + } else if (deviceType == "07") + { + base = new BCodeTerminal(parent); + } else if (deviceType == "09") + { + base = new TimeReplicator(parent); + } else if (deviceType == "10") { base = new FreqReplicator(parent); @@ -76,7 +76,12 @@ void DeviceBase::initSerialPort() { - this->serialUtil.openSerialPort(this->comName, this->baudRate); + QStringList comNameList = this->comName.split(","); + this->serialUtil.openSerialPort(comNameList.at(0), this->baudRate); + if (comNameList.size() == 2) + { + this->serialUtilB.openSerialPort(comNameList.at(1), this->baudRate); + } } void DeviceBase::sendDataToSerial(QByteArray data) diff --git a/DeviceHub/device/DeviceBase.h b/DeviceHub/device/DeviceBase.h index e06bee3..77955aa 100644 --- a/DeviceHub/device/DeviceBase.h +++ b/DeviceHub/device/DeviceBase.h @@ -3,7 +3,7 @@ #include #include "common/utils/QSerialPortUtil.h" -//#include "common/utils/QKafkaProducer.h" +#include "common/utils/QKafkaProducer.h" #include "common/utils/QByteUtil.h" #include "common/utils/QLogUtil.h" #include "common/utils/SettingConfig.h" @@ -29,7 +29,7 @@ void initSerialPort(); bool isSerialOpen(); virtual void sendDataToSerial(QByteArray data); - virtual void afterFramePhase(DeviceFrameBaseDto * frameDto) = 0; + virtual void afterFrameParse(DeviceFrameBaseDto * frameDto) = 0; virtual void mockReceivData() = 0; @@ -43,8 +43,10 @@ QString devType; QSerialPortUtil serialUtil; -// QKafkaProducer kafkaProducer; + QSerialPortUtil serialUtilB; // serial port 2 + QKafkaProducer kafkaProducer; QByteArray dataBuff; + QByteArray dataBuffB; }; #endif // DEVICEBASE_H diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.h b/DeviceHub/DeviceHubWindow.h index 62b4055..cb5875a 100644 --- a/DeviceHub/DeviceHubWindow.h +++ b/DeviceHub/DeviceHubWindow.h @@ -5,7 +5,7 @@ #include #include "common/HttpRequestController.h" -//#include "common/utils/QKafkaConsumer.h" +#include "common/utils/QKafkaConsumer.h" #include "device/DeviceBase.h" #include "FrequencyTuningForm.h" #include "SignalGeneratorForm.h" @@ -32,7 +32,7 @@ int currentDevIndex; QMap> allTypeDevList; -// QKafkaConsumer * kafkaConsumer; + QKafkaConsumer * kafkaConsumer; QComboBox * getDevTypeSelect(); QComboBox * getDevSelect(); diff --git a/DeviceHub/FreqReplicatorForm.cpp b/DeviceHub/FreqReplicatorForm.cpp index e52ab24..bda0658 100644 --- a/DeviceHub/FreqReplicatorForm.cpp +++ b/DeviceHub/FreqReplicatorForm.cpp @@ -29,6 +29,12 @@ void FreqReplicatorForm::drawDeviceFrameOnForm(DeviceFrameBaseDto * frameData) { + QString currentDevCode = ((DeviceHubWindow *)this->parent()->parent())->getDevSelect()->currentData().toJsonObject().find("deviceNo")->toString(); + if (currentDevCode != frameData->devCode) + { + return; + } + // 当前显示的设备编号 if (frameData->frameType == "1001") { @@ -44,5 +50,17 @@ doc.setArray(dataObj.find("outValid")->toArray()); ui->frOutStatus->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + } else if (frameData->frameType == "1002") + { + FreqReplicatorStatusDto * statusFrameDto = (FreqReplicatorStatusDto *) frameData; + + QJsonObject dataObj = statusFrameDto->toJSON().find("data")->toObject(); + QJsonDocument doc; + + doc.setArray(dataObj.find("inValid")->toArray()); + ui->frInStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + + doc.setArray(dataObj.find("outValid")->toArray()); + ui->frOutStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); } } diff --git a/DeviceHub/FreqReplicatorForm.ui b/DeviceHub/FreqReplicatorForm.ui index cbc4ffb..2f6c15d 100644 --- a/DeviceHub/FreqReplicatorForm.ui +++ b/DeviceHub/FreqReplicatorForm.ui @@ -129,7 +129,7 @@ - 输出监测 + 输出监测AB @@ -148,7 +148,7 @@ - 输入状态 + 输入状态AB @@ -170,6 +170,64 @@ + + + + 540 + 130 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输入状态CD + + + + + + 620 + 130 + 200 + 30 + + + + + + + 100 + 230 + 400 + 30 + + + + + + + 20 + 230 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输出监测CD + + diff --git a/DeviceHub/common/common.pri b/DeviceHub/common/common.pri index feeba36..86259e8 100644 --- a/DeviceHub/common/common.pri +++ b/DeviceHub/common/common.pri @@ -3,8 +3,8 @@ SOURCES += $$PWD/utils/QByteUtil.cpp SOURCES += $$PWD/utils/QSerialPortUtil.cpp SOURCES += $$PWD/utils/QLogUtil.cpp -#SOURCES += $$PWD/utils/QKafkaConsumer.cpp -#SOURCES += $$PWD/utils/QKafkaProducer.cpp +SOURCES += $$PWD/utils/QKafkaConsumer.cpp +SOURCES += $$PWD/utils/QKafkaProducer.cpp SOURCES += $$PWD/utils/HttpRequestUtil.cpp SOURCES += $$PWD/utils/MD5.cpp SOURCES += $$PWD/HttpRequestController.cpp @@ -13,8 +13,8 @@ HEADERS += $$PWD/utils/QByteUtil.h HEADERS += $$PWD/utils/QSerialPortUtil.h HEADERS += $$PWD/utils/QLogUtil.h -#HEADERS += $$PWD/utils/QKafkaConsumer.h -#HEADERS += $$PWD/utils/QKafkaProducer.h +HEADERS += $$PWD/utils/QKafkaConsumer.h +HEADERS += $$PWD/utils/QKafkaProducer.h HEADERS += $$PWD/utils/HttpRequestUtil.h HEADERS += $$PWD/utils/DefHead.h HEADERS += $$PWD/utils/MD5.h diff --git a/DeviceHub/common/utils/QKafkaConsumer.cpp b/DeviceHub/common/utils/QKafkaConsumer.cpp index b3cb9fd..c62f08e 100644 --- a/DeviceHub/common/utils/QKafkaConsumer.cpp +++ b/DeviceHub/common/utils/QKafkaConsumer.cpp @@ -1,4 +1,5 @@ #include "QKafkaConsumer.h" +#include "SettingConfig.h" #include #include @@ -25,6 +26,14 @@ int QKafkaConsumer::createConsumer() { int ret = conf->set("metadata.broker.list", brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } + if (ret != RdKafka::Conf::CONF_OK) { std::cerr << "RdKafka conf set brokerlist failed :" << errStr.c_str() << std::endl; diff --git a/DeviceHub/common/utils/QKafkaProducer.cpp b/DeviceHub/common/utils/QKafkaProducer.cpp index c0db128..109e581 100644 --- a/DeviceHub/common/utils/QKafkaProducer.cpp +++ b/DeviceHub/common/utils/QKafkaProducer.cpp @@ -1,4 +1,5 @@ #include "QKafkaProducer.h" +#include "SettingConfig.h" #include QKafkaProducer::QKafkaProducer(QObject *parent) : QObject(parent) @@ -20,6 +21,13 @@ { int result; result = this->conf->set("bootstrap.servers", this->brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } if (result != RdKafka::Conf::CONF_OK) { diff --git a/DeviceHub/common/utils/QSerialPortUtil.cpp b/DeviceHub/common/utils/QSerialPortUtil.cpp index 9de0047..a5e07ac 100644 --- a/DeviceHub/common/utils/QSerialPortUtil.cpp +++ b/DeviceHub/common/utils/QSerialPortUtil.cpp @@ -25,6 +25,8 @@ open = serial.open(QIODevice::ReadWrite); + std::cout << portName.toStdString() << " " << QString::number(baudRate).toStdString() << " " << open << std::endl; + if (open == true) { // mock data received per second diff --git a/DeviceHub/common/utils/SettingConfig.cpp b/DeviceHub/common/utils/SettingConfig.cpp index 6f17295..ea27d43 100644 --- a/DeviceHub/common/utils/SettingConfig.cpp +++ b/DeviceHub/common/utils/SettingConfig.cpp @@ -14,6 +14,9 @@ KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); KAFKA_CMD_TOPIC = getProperty("kafka", "cmdTopic").toString(); KAFKA_CMDCB_TOPIC = getProperty("kafka", "cmdcbTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "saslUsername").toString(); + SASL_PASSWORD = getProperty("kafka", "saslPassword").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/DeviceHub/common/utils/SettingConfig.h b/DeviceHub/common/utils/SettingConfig.h index c50bcc0..f6cc2af 100644 --- a/DeviceHub/common/utils/SettingConfig.h +++ b/DeviceHub/common/utils/SettingConfig.h @@ -36,6 +36,9 @@ QString KAFKA_DATA_TOPIC; QString KAFKA_CMD_TOPIC; QString KAFKA_CMDCB_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/DeviceHub/conf/config.ini b/DeviceHub/conf/config.ini index 64e57ba..ad7cb35 100644 --- a/DeviceHub/conf/config.ini +++ b/DeviceHub/conf/config.ini @@ -21,4 +21,4 @@ baseUrl="http://111.198.10.15:11410" [log] -basePath="/home/admin/Qt/ZXSSCJ-Release/DevStatus/logs/" +basePath="/home/admin/Qt/ZXSSCJ-Release/DeviceHub/logs/" diff --git a/DeviceHub/device/BCodeTerminal.cpp b/DeviceHub/device/BCodeTerminal.cpp index 1e852a9..5d8ec7f 100644 --- a/DeviceHub/device/BCodeTerminal.cpp +++ b/DeviceHub/device/BCodeTerminal.cpp @@ -72,7 +72,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -84,7 +84,7 @@ } } -void BCodeTerminal::afterFramePhase(DeviceFrameBaseDto * frameDto) +void BCodeTerminal::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/BCodeTerminal.h b/DeviceHub/device/BCodeTerminal.h index f39ab6e..d823431 100644 --- a/DeviceHub/device/BCodeTerminal.h +++ b/DeviceHub/device/BCodeTerminal.h @@ -15,7 +15,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void afterFrameParse(DeviceFrameBaseDto * frameDto); void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/DeviceBase.cpp b/DeviceHub/device/DeviceBase.cpp index 06cfddd..dc8d791 100644 --- a/DeviceHub/device/DeviceBase.cpp +++ b/DeviceHub/device/DeviceBase.cpp @@ -1,10 +1,10 @@ #include "DeviceBase.h" -//#include "FrequencyTuning.h" -//#include "SignalGenerator.h" -//#include "TimeSwitcher.h" -//#include "FreqSwitcher.h" -//#include "BCodeTerminal.h" -//#include "TimeReplicator.h" +#include "FrequencyTuning.h" +#include "SignalGenerator.h" +#include "TimeSwitcher.h" +#include "FreqSwitcher.h" +#include "BCodeTerminal.h" +#include "TimeReplicator.h" #include "FreqReplicator.h" #include @@ -42,25 +42,25 @@ DeviceBase * DeviceBase::deviceFactory(QString deviceType, QObject * parent) { DeviceBase * base = 0; -// if (deviceType == "03") -// { -// base = new FrequencyTuning(parent); -// } else if (deviceType == "04") -// { -// base = new SignalGenerator(parent); -// } else if (deviceType == "05") -// { -// base = new TimeSwitcher(parent); -// } else if (deviceType == "06") -// { -// base = new FreqSwitcher(parent); -// } else if (deviceType == "07") -// { -// base = new BCodeTerminal(parent); -// } else if (deviceType == "09") -// { -// base = new TimeReplicator(parent); -// } else + if (deviceType == "03") + { + base = new FrequencyTuning(parent); + } else if (deviceType == "04") + { + base = new SignalGenerator(parent); + } else if (deviceType == "05") + { + base = new TimeSwitcher(parent); + } else if (deviceType == "06") + { + base = new FreqSwitcher(parent); + } else if (deviceType == "07") + { + base = new BCodeTerminal(parent); + } else if (deviceType == "09") + { + base = new TimeReplicator(parent); + } else if (deviceType == "10") { base = new FreqReplicator(parent); @@ -76,7 +76,12 @@ void DeviceBase::initSerialPort() { - this->serialUtil.openSerialPort(this->comName, this->baudRate); + QStringList comNameList = this->comName.split(","); + this->serialUtil.openSerialPort(comNameList.at(0), this->baudRate); + if (comNameList.size() == 2) + { + this->serialUtilB.openSerialPort(comNameList.at(1), this->baudRate); + } } void DeviceBase::sendDataToSerial(QByteArray data) diff --git a/DeviceHub/device/DeviceBase.h b/DeviceHub/device/DeviceBase.h index e06bee3..77955aa 100644 --- a/DeviceHub/device/DeviceBase.h +++ b/DeviceHub/device/DeviceBase.h @@ -3,7 +3,7 @@ #include #include "common/utils/QSerialPortUtil.h" -//#include "common/utils/QKafkaProducer.h" +#include "common/utils/QKafkaProducer.h" #include "common/utils/QByteUtil.h" #include "common/utils/QLogUtil.h" #include "common/utils/SettingConfig.h" @@ -29,7 +29,7 @@ void initSerialPort(); bool isSerialOpen(); virtual void sendDataToSerial(QByteArray data); - virtual void afterFramePhase(DeviceFrameBaseDto * frameDto) = 0; + virtual void afterFrameParse(DeviceFrameBaseDto * frameDto) = 0; virtual void mockReceivData() = 0; @@ -43,8 +43,10 @@ QString devType; QSerialPortUtil serialUtil; -// QKafkaProducer kafkaProducer; + QSerialPortUtil serialUtilB; // serial port 2 + QKafkaProducer kafkaProducer; QByteArray dataBuff; + QByteArray dataBuffB; }; #endif // DEVICEBASE_H diff --git a/DeviceHub/device/FreqReplicator.cpp b/DeviceHub/device/FreqReplicator.cpp index ea50664..a8d033b 100644 --- a/DeviceHub/device/FreqReplicator.cpp +++ b/DeviceHub/device/FreqReplicator.cpp @@ -8,13 +8,15 @@ this->devType = "10"; connect(&this->serialUtil, &QSerialPortUtil::dataRecieved, this, &FreqReplicator::dataReceivedHandler); + connect(&this->serialUtilB, &QSerialPortUtil::dataRecieved, + this, &FreqReplicator::dataBReceivedHandler); connect(this, &FreqReplicator::sendDataToDraw, ((DeviceHubWindow *)this->parent())->freqRepForm, &FreqReplicatorForm::drawDeviceFrameOnForm); -// kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); -// kafkaProducer.createProducer(); + kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); + kafkaProducer.createProducer(); this->protocol = DeviceProtocolBase::deviceProtocolFactory(devType); } @@ -30,7 +32,7 @@ QByteArray buffer; // 频率信号放大器 - buffer = QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB"); + buffer.append(QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB")); buffer.append(QByteUtil::hexStringToBytes("AA550015020001000101010101010101010101010101010101E8")); this->dataReceivedHandler(buffer); @@ -45,40 +47,55 @@ if (frameList.size() > 0) { this->dataBuff.clear(); - for (int i = 0; i < frameList.size(); i++) - { - QByteArray frameByte = frameList.at(i); - - int frameType = protocol->checkFrame(frameByte); - DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); - if (frameDto != nullptr) - { - // ★解析成数据对象 - bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); - - // 解析成功 - if (parse == true) - { - QDateTime now = QDateTime::currentDateTime(); - frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); - frameDto->milisecond = now.toMSecsSinceEpoch(); - frameDto->rawFrame = frameByte; - - frameDto->devCode = devCode; - - this->afterFramePhase(frameDto); - } - - // 在此处释放内存,不影响后续显示 - // 不在此处释放内存则会导致内存持续增加 - // 具体原因不明 - delete frameDto; - } - } + frameParse(frameList); } } -void FreqReplicator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FreqReplicator::dataBReceivedHandler(QByteArray data) +{ + this->dataBuffB.append(data); + QList frameListB = protocol->extractFrameList(this->dataBuffB); + if (frameListB.size() > 0) + { + this->dataBuffB.clear(); + frameParse(frameListB); + } +} + +void FreqReplicator::frameParse(QList frameList) +{ + for (int i = 0; i < frameList.size(); i++) + { + QByteArray frameByte = frameList.at(i); + + int frameType = protocol->checkFrame(frameByte); + DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); + if (frameDto != nullptr) + { + // ★解析成数据对象 + bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); + + // 解析成功 + if (parse == true) + { + QDateTime now = QDateTime::currentDateTime(); + frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); + frameDto->milisecond = now.toMSecsSinceEpoch(); + frameDto->rawFrame = frameByte; + + frameDto->devCode = devCode; + + this->afterFrameParse(frameDto); + } + + // 在此处释放内存,不影响后续显示 + // 不在此处释放内存则会导致内存持续增加 + // 具体原因不明 + delete frameDto; + } + } +} +void FreqReplicator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << QByteUtil::binToHexString(frameDto->rawFrame).toStdString() << std::endl; @@ -101,7 +118,7 @@ QJsonObject jsonObj = frameDto->toJSON(); jsonObj.insert("clientId", SettingConfig::getInstance().CLIENT_ID); jsonObj.insert("deviceId", deviceId); -// kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); + kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); } // 4. 在界面上简单显示相差数据结果 diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.h b/DeviceHub/DeviceHubWindow.h index 62b4055..cb5875a 100644 --- a/DeviceHub/DeviceHubWindow.h +++ b/DeviceHub/DeviceHubWindow.h @@ -5,7 +5,7 @@ #include #include "common/HttpRequestController.h" -//#include "common/utils/QKafkaConsumer.h" +#include "common/utils/QKafkaConsumer.h" #include "device/DeviceBase.h" #include "FrequencyTuningForm.h" #include "SignalGeneratorForm.h" @@ -32,7 +32,7 @@ int currentDevIndex; QMap> allTypeDevList; -// QKafkaConsumer * kafkaConsumer; + QKafkaConsumer * kafkaConsumer; QComboBox * getDevTypeSelect(); QComboBox * getDevSelect(); diff --git a/DeviceHub/FreqReplicatorForm.cpp b/DeviceHub/FreqReplicatorForm.cpp index e52ab24..bda0658 100644 --- a/DeviceHub/FreqReplicatorForm.cpp +++ b/DeviceHub/FreqReplicatorForm.cpp @@ -29,6 +29,12 @@ void FreqReplicatorForm::drawDeviceFrameOnForm(DeviceFrameBaseDto * frameData) { + QString currentDevCode = ((DeviceHubWindow *)this->parent()->parent())->getDevSelect()->currentData().toJsonObject().find("deviceNo")->toString(); + if (currentDevCode != frameData->devCode) + { + return; + } + // 当前显示的设备编号 if (frameData->frameType == "1001") { @@ -44,5 +50,17 @@ doc.setArray(dataObj.find("outValid")->toArray()); ui->frOutStatus->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + } else if (frameData->frameType == "1002") + { + FreqReplicatorStatusDto * statusFrameDto = (FreqReplicatorStatusDto *) frameData; + + QJsonObject dataObj = statusFrameDto->toJSON().find("data")->toObject(); + QJsonDocument doc; + + doc.setArray(dataObj.find("inValid")->toArray()); + ui->frInStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + + doc.setArray(dataObj.find("outValid")->toArray()); + ui->frOutStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); } } diff --git a/DeviceHub/FreqReplicatorForm.ui b/DeviceHub/FreqReplicatorForm.ui index cbc4ffb..2f6c15d 100644 --- a/DeviceHub/FreqReplicatorForm.ui +++ b/DeviceHub/FreqReplicatorForm.ui @@ -129,7 +129,7 @@ - 输出监测 + 输出监测AB @@ -148,7 +148,7 @@ - 输入状态 + 输入状态AB @@ -170,6 +170,64 @@ + + + + 540 + 130 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输入状态CD + + + + + + 620 + 130 + 200 + 30 + + + + + + + 100 + 230 + 400 + 30 + + + + + + + 20 + 230 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输出监测CD + + diff --git a/DeviceHub/common/common.pri b/DeviceHub/common/common.pri index feeba36..86259e8 100644 --- a/DeviceHub/common/common.pri +++ b/DeviceHub/common/common.pri @@ -3,8 +3,8 @@ SOURCES += $$PWD/utils/QByteUtil.cpp SOURCES += $$PWD/utils/QSerialPortUtil.cpp SOURCES += $$PWD/utils/QLogUtil.cpp -#SOURCES += $$PWD/utils/QKafkaConsumer.cpp -#SOURCES += $$PWD/utils/QKafkaProducer.cpp +SOURCES += $$PWD/utils/QKafkaConsumer.cpp +SOURCES += $$PWD/utils/QKafkaProducer.cpp SOURCES += $$PWD/utils/HttpRequestUtil.cpp SOURCES += $$PWD/utils/MD5.cpp SOURCES += $$PWD/HttpRequestController.cpp @@ -13,8 +13,8 @@ HEADERS += $$PWD/utils/QByteUtil.h HEADERS += $$PWD/utils/QSerialPortUtil.h HEADERS += $$PWD/utils/QLogUtil.h -#HEADERS += $$PWD/utils/QKafkaConsumer.h -#HEADERS += $$PWD/utils/QKafkaProducer.h +HEADERS += $$PWD/utils/QKafkaConsumer.h +HEADERS += $$PWD/utils/QKafkaProducer.h HEADERS += $$PWD/utils/HttpRequestUtil.h HEADERS += $$PWD/utils/DefHead.h HEADERS += $$PWD/utils/MD5.h diff --git a/DeviceHub/common/utils/QKafkaConsumer.cpp b/DeviceHub/common/utils/QKafkaConsumer.cpp index b3cb9fd..c62f08e 100644 --- a/DeviceHub/common/utils/QKafkaConsumer.cpp +++ b/DeviceHub/common/utils/QKafkaConsumer.cpp @@ -1,4 +1,5 @@ #include "QKafkaConsumer.h" +#include "SettingConfig.h" #include #include @@ -25,6 +26,14 @@ int QKafkaConsumer::createConsumer() { int ret = conf->set("metadata.broker.list", brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } + if (ret != RdKafka::Conf::CONF_OK) { std::cerr << "RdKafka conf set brokerlist failed :" << errStr.c_str() << std::endl; diff --git a/DeviceHub/common/utils/QKafkaProducer.cpp b/DeviceHub/common/utils/QKafkaProducer.cpp index c0db128..109e581 100644 --- a/DeviceHub/common/utils/QKafkaProducer.cpp +++ b/DeviceHub/common/utils/QKafkaProducer.cpp @@ -1,4 +1,5 @@ #include "QKafkaProducer.h" +#include "SettingConfig.h" #include QKafkaProducer::QKafkaProducer(QObject *parent) : QObject(parent) @@ -20,6 +21,13 @@ { int result; result = this->conf->set("bootstrap.servers", this->brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } if (result != RdKafka::Conf::CONF_OK) { diff --git a/DeviceHub/common/utils/QSerialPortUtil.cpp b/DeviceHub/common/utils/QSerialPortUtil.cpp index 9de0047..a5e07ac 100644 --- a/DeviceHub/common/utils/QSerialPortUtil.cpp +++ b/DeviceHub/common/utils/QSerialPortUtil.cpp @@ -25,6 +25,8 @@ open = serial.open(QIODevice::ReadWrite); + std::cout << portName.toStdString() << " " << QString::number(baudRate).toStdString() << " " << open << std::endl; + if (open == true) { // mock data received per second diff --git a/DeviceHub/common/utils/SettingConfig.cpp b/DeviceHub/common/utils/SettingConfig.cpp index 6f17295..ea27d43 100644 --- a/DeviceHub/common/utils/SettingConfig.cpp +++ b/DeviceHub/common/utils/SettingConfig.cpp @@ -14,6 +14,9 @@ KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); KAFKA_CMD_TOPIC = getProperty("kafka", "cmdTopic").toString(); KAFKA_CMDCB_TOPIC = getProperty("kafka", "cmdcbTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "saslUsername").toString(); + SASL_PASSWORD = getProperty("kafka", "saslPassword").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/DeviceHub/common/utils/SettingConfig.h b/DeviceHub/common/utils/SettingConfig.h index c50bcc0..f6cc2af 100644 --- a/DeviceHub/common/utils/SettingConfig.h +++ b/DeviceHub/common/utils/SettingConfig.h @@ -36,6 +36,9 @@ QString KAFKA_DATA_TOPIC; QString KAFKA_CMD_TOPIC; QString KAFKA_CMDCB_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/DeviceHub/conf/config.ini b/DeviceHub/conf/config.ini index 64e57ba..ad7cb35 100644 --- a/DeviceHub/conf/config.ini +++ b/DeviceHub/conf/config.ini @@ -21,4 +21,4 @@ baseUrl="http://111.198.10.15:11410" [log] -basePath="/home/admin/Qt/ZXSSCJ-Release/DevStatus/logs/" +basePath="/home/admin/Qt/ZXSSCJ-Release/DeviceHub/logs/" diff --git a/DeviceHub/device/BCodeTerminal.cpp b/DeviceHub/device/BCodeTerminal.cpp index 1e852a9..5d8ec7f 100644 --- a/DeviceHub/device/BCodeTerminal.cpp +++ b/DeviceHub/device/BCodeTerminal.cpp @@ -72,7 +72,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -84,7 +84,7 @@ } } -void BCodeTerminal::afterFramePhase(DeviceFrameBaseDto * frameDto) +void BCodeTerminal::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/BCodeTerminal.h b/DeviceHub/device/BCodeTerminal.h index f39ab6e..d823431 100644 --- a/DeviceHub/device/BCodeTerminal.h +++ b/DeviceHub/device/BCodeTerminal.h @@ -15,7 +15,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void afterFrameParse(DeviceFrameBaseDto * frameDto); void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/DeviceBase.cpp b/DeviceHub/device/DeviceBase.cpp index 06cfddd..dc8d791 100644 --- a/DeviceHub/device/DeviceBase.cpp +++ b/DeviceHub/device/DeviceBase.cpp @@ -1,10 +1,10 @@ #include "DeviceBase.h" -//#include "FrequencyTuning.h" -//#include "SignalGenerator.h" -//#include "TimeSwitcher.h" -//#include "FreqSwitcher.h" -//#include "BCodeTerminal.h" -//#include "TimeReplicator.h" +#include "FrequencyTuning.h" +#include "SignalGenerator.h" +#include "TimeSwitcher.h" +#include "FreqSwitcher.h" +#include "BCodeTerminal.h" +#include "TimeReplicator.h" #include "FreqReplicator.h" #include @@ -42,25 +42,25 @@ DeviceBase * DeviceBase::deviceFactory(QString deviceType, QObject * parent) { DeviceBase * base = 0; -// if (deviceType == "03") -// { -// base = new FrequencyTuning(parent); -// } else if (deviceType == "04") -// { -// base = new SignalGenerator(parent); -// } else if (deviceType == "05") -// { -// base = new TimeSwitcher(parent); -// } else if (deviceType == "06") -// { -// base = new FreqSwitcher(parent); -// } else if (deviceType == "07") -// { -// base = new BCodeTerminal(parent); -// } else if (deviceType == "09") -// { -// base = new TimeReplicator(parent); -// } else + if (deviceType == "03") + { + base = new FrequencyTuning(parent); + } else if (deviceType == "04") + { + base = new SignalGenerator(parent); + } else if (deviceType == "05") + { + base = new TimeSwitcher(parent); + } else if (deviceType == "06") + { + base = new FreqSwitcher(parent); + } else if (deviceType == "07") + { + base = new BCodeTerminal(parent); + } else if (deviceType == "09") + { + base = new TimeReplicator(parent); + } else if (deviceType == "10") { base = new FreqReplicator(parent); @@ -76,7 +76,12 @@ void DeviceBase::initSerialPort() { - this->serialUtil.openSerialPort(this->comName, this->baudRate); + QStringList comNameList = this->comName.split(","); + this->serialUtil.openSerialPort(comNameList.at(0), this->baudRate); + if (comNameList.size() == 2) + { + this->serialUtilB.openSerialPort(comNameList.at(1), this->baudRate); + } } void DeviceBase::sendDataToSerial(QByteArray data) diff --git a/DeviceHub/device/DeviceBase.h b/DeviceHub/device/DeviceBase.h index e06bee3..77955aa 100644 --- a/DeviceHub/device/DeviceBase.h +++ b/DeviceHub/device/DeviceBase.h @@ -3,7 +3,7 @@ #include #include "common/utils/QSerialPortUtil.h" -//#include "common/utils/QKafkaProducer.h" +#include "common/utils/QKafkaProducer.h" #include "common/utils/QByteUtil.h" #include "common/utils/QLogUtil.h" #include "common/utils/SettingConfig.h" @@ -29,7 +29,7 @@ void initSerialPort(); bool isSerialOpen(); virtual void sendDataToSerial(QByteArray data); - virtual void afterFramePhase(DeviceFrameBaseDto * frameDto) = 0; + virtual void afterFrameParse(DeviceFrameBaseDto * frameDto) = 0; virtual void mockReceivData() = 0; @@ -43,8 +43,10 @@ QString devType; QSerialPortUtil serialUtil; -// QKafkaProducer kafkaProducer; + QSerialPortUtil serialUtilB; // serial port 2 + QKafkaProducer kafkaProducer; QByteArray dataBuff; + QByteArray dataBuffB; }; #endif // DEVICEBASE_H diff --git a/DeviceHub/device/FreqReplicator.cpp b/DeviceHub/device/FreqReplicator.cpp index ea50664..a8d033b 100644 --- a/DeviceHub/device/FreqReplicator.cpp +++ b/DeviceHub/device/FreqReplicator.cpp @@ -8,13 +8,15 @@ this->devType = "10"; connect(&this->serialUtil, &QSerialPortUtil::dataRecieved, this, &FreqReplicator::dataReceivedHandler); + connect(&this->serialUtilB, &QSerialPortUtil::dataRecieved, + this, &FreqReplicator::dataBReceivedHandler); connect(this, &FreqReplicator::sendDataToDraw, ((DeviceHubWindow *)this->parent())->freqRepForm, &FreqReplicatorForm::drawDeviceFrameOnForm); -// kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); -// kafkaProducer.createProducer(); + kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); + kafkaProducer.createProducer(); this->protocol = DeviceProtocolBase::deviceProtocolFactory(devType); } @@ -30,7 +32,7 @@ QByteArray buffer; // 频率信号放大器 - buffer = QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB"); + buffer.append(QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB")); buffer.append(QByteUtil::hexStringToBytes("AA550015020001000101010101010101010101010101010101E8")); this->dataReceivedHandler(buffer); @@ -45,40 +47,55 @@ if (frameList.size() > 0) { this->dataBuff.clear(); - for (int i = 0; i < frameList.size(); i++) - { - QByteArray frameByte = frameList.at(i); - - int frameType = protocol->checkFrame(frameByte); - DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); - if (frameDto != nullptr) - { - // ★解析成数据对象 - bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); - - // 解析成功 - if (parse == true) - { - QDateTime now = QDateTime::currentDateTime(); - frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); - frameDto->milisecond = now.toMSecsSinceEpoch(); - frameDto->rawFrame = frameByte; - - frameDto->devCode = devCode; - - this->afterFramePhase(frameDto); - } - - // 在此处释放内存,不影响后续显示 - // 不在此处释放内存则会导致内存持续增加 - // 具体原因不明 - delete frameDto; - } - } + frameParse(frameList); } } -void FreqReplicator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FreqReplicator::dataBReceivedHandler(QByteArray data) +{ + this->dataBuffB.append(data); + QList frameListB = protocol->extractFrameList(this->dataBuffB); + if (frameListB.size() > 0) + { + this->dataBuffB.clear(); + frameParse(frameListB); + } +} + +void FreqReplicator::frameParse(QList frameList) +{ + for (int i = 0; i < frameList.size(); i++) + { + QByteArray frameByte = frameList.at(i); + + int frameType = protocol->checkFrame(frameByte); + DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); + if (frameDto != nullptr) + { + // ★解析成数据对象 + bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); + + // 解析成功 + if (parse == true) + { + QDateTime now = QDateTime::currentDateTime(); + frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); + frameDto->milisecond = now.toMSecsSinceEpoch(); + frameDto->rawFrame = frameByte; + + frameDto->devCode = devCode; + + this->afterFrameParse(frameDto); + } + + // 在此处释放内存,不影响后续显示 + // 不在此处释放内存则会导致内存持续增加 + // 具体原因不明 + delete frameDto; + } + } +} +void FreqReplicator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << QByteUtil::binToHexString(frameDto->rawFrame).toStdString() << std::endl; @@ -101,7 +118,7 @@ QJsonObject jsonObj = frameDto->toJSON(); jsonObj.insert("clientId", SettingConfig::getInstance().CLIENT_ID); jsonObj.insert("deviceId", deviceId); -// kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); + kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); } // 4. 在界面上简单显示相差数据结果 diff --git a/DeviceHub/device/FreqReplicator.h b/DeviceHub/device/FreqReplicator.h index 5702c28..716f800 100644 --- a/DeviceHub/device/FreqReplicator.h +++ b/DeviceHub/device/FreqReplicator.h @@ -15,13 +15,15 @@ void mockReceivData(); - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void frameParse(QList frameList); + void afterFrameParse(DeviceFrameBaseDto * frameDto); signals: void sendDataToDraw(DeviceFrameBaseDto * frameData); public slots: void dataReceivedHandler(QByteArray data); + void dataBReceivedHandler(QByteArray data); }; #endif // FREQREPLICATOR_H diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.h b/DeviceHub/DeviceHubWindow.h index 62b4055..cb5875a 100644 --- a/DeviceHub/DeviceHubWindow.h +++ b/DeviceHub/DeviceHubWindow.h @@ -5,7 +5,7 @@ #include #include "common/HttpRequestController.h" -//#include "common/utils/QKafkaConsumer.h" +#include "common/utils/QKafkaConsumer.h" #include "device/DeviceBase.h" #include "FrequencyTuningForm.h" #include "SignalGeneratorForm.h" @@ -32,7 +32,7 @@ int currentDevIndex; QMap> allTypeDevList; -// QKafkaConsumer * kafkaConsumer; + QKafkaConsumer * kafkaConsumer; QComboBox * getDevTypeSelect(); QComboBox * getDevSelect(); diff --git a/DeviceHub/FreqReplicatorForm.cpp b/DeviceHub/FreqReplicatorForm.cpp index e52ab24..bda0658 100644 --- a/DeviceHub/FreqReplicatorForm.cpp +++ b/DeviceHub/FreqReplicatorForm.cpp @@ -29,6 +29,12 @@ void FreqReplicatorForm::drawDeviceFrameOnForm(DeviceFrameBaseDto * frameData) { + QString currentDevCode = ((DeviceHubWindow *)this->parent()->parent())->getDevSelect()->currentData().toJsonObject().find("deviceNo")->toString(); + if (currentDevCode != frameData->devCode) + { + return; + } + // 当前显示的设备编号 if (frameData->frameType == "1001") { @@ -44,5 +50,17 @@ doc.setArray(dataObj.find("outValid")->toArray()); ui->frOutStatus->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + } else if (frameData->frameType == "1002") + { + FreqReplicatorStatusDto * statusFrameDto = (FreqReplicatorStatusDto *) frameData; + + QJsonObject dataObj = statusFrameDto->toJSON().find("data")->toObject(); + QJsonDocument doc; + + doc.setArray(dataObj.find("inValid")->toArray()); + ui->frInStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + + doc.setArray(dataObj.find("outValid")->toArray()); + ui->frOutStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); } } diff --git a/DeviceHub/FreqReplicatorForm.ui b/DeviceHub/FreqReplicatorForm.ui index cbc4ffb..2f6c15d 100644 --- a/DeviceHub/FreqReplicatorForm.ui +++ b/DeviceHub/FreqReplicatorForm.ui @@ -129,7 +129,7 @@ - 输出监测 + 输出监测AB @@ -148,7 +148,7 @@ - 输入状态 + 输入状态AB @@ -170,6 +170,64 @@ + + + + 540 + 130 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输入状态CD + + + + + + 620 + 130 + 200 + 30 + + + + + + + 100 + 230 + 400 + 30 + + + + + + + 20 + 230 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输出监测CD + + diff --git a/DeviceHub/common/common.pri b/DeviceHub/common/common.pri index feeba36..86259e8 100644 --- a/DeviceHub/common/common.pri +++ b/DeviceHub/common/common.pri @@ -3,8 +3,8 @@ SOURCES += $$PWD/utils/QByteUtil.cpp SOURCES += $$PWD/utils/QSerialPortUtil.cpp SOURCES += $$PWD/utils/QLogUtil.cpp -#SOURCES += $$PWD/utils/QKafkaConsumer.cpp -#SOURCES += $$PWD/utils/QKafkaProducer.cpp +SOURCES += $$PWD/utils/QKafkaConsumer.cpp +SOURCES += $$PWD/utils/QKafkaProducer.cpp SOURCES += $$PWD/utils/HttpRequestUtil.cpp SOURCES += $$PWD/utils/MD5.cpp SOURCES += $$PWD/HttpRequestController.cpp @@ -13,8 +13,8 @@ HEADERS += $$PWD/utils/QByteUtil.h HEADERS += $$PWD/utils/QSerialPortUtil.h HEADERS += $$PWD/utils/QLogUtil.h -#HEADERS += $$PWD/utils/QKafkaConsumer.h -#HEADERS += $$PWD/utils/QKafkaProducer.h +HEADERS += $$PWD/utils/QKafkaConsumer.h +HEADERS += $$PWD/utils/QKafkaProducer.h HEADERS += $$PWD/utils/HttpRequestUtil.h HEADERS += $$PWD/utils/DefHead.h HEADERS += $$PWD/utils/MD5.h diff --git a/DeviceHub/common/utils/QKafkaConsumer.cpp b/DeviceHub/common/utils/QKafkaConsumer.cpp index b3cb9fd..c62f08e 100644 --- a/DeviceHub/common/utils/QKafkaConsumer.cpp +++ b/DeviceHub/common/utils/QKafkaConsumer.cpp @@ -1,4 +1,5 @@ #include "QKafkaConsumer.h" +#include "SettingConfig.h" #include #include @@ -25,6 +26,14 @@ int QKafkaConsumer::createConsumer() { int ret = conf->set("metadata.broker.list", brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } + if (ret != RdKafka::Conf::CONF_OK) { std::cerr << "RdKafka conf set brokerlist failed :" << errStr.c_str() << std::endl; diff --git a/DeviceHub/common/utils/QKafkaProducer.cpp b/DeviceHub/common/utils/QKafkaProducer.cpp index c0db128..109e581 100644 --- a/DeviceHub/common/utils/QKafkaProducer.cpp +++ b/DeviceHub/common/utils/QKafkaProducer.cpp @@ -1,4 +1,5 @@ #include "QKafkaProducer.h" +#include "SettingConfig.h" #include QKafkaProducer::QKafkaProducer(QObject *parent) : QObject(parent) @@ -20,6 +21,13 @@ { int result; result = this->conf->set("bootstrap.servers", this->brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } if (result != RdKafka::Conf::CONF_OK) { diff --git a/DeviceHub/common/utils/QSerialPortUtil.cpp b/DeviceHub/common/utils/QSerialPortUtil.cpp index 9de0047..a5e07ac 100644 --- a/DeviceHub/common/utils/QSerialPortUtil.cpp +++ b/DeviceHub/common/utils/QSerialPortUtil.cpp @@ -25,6 +25,8 @@ open = serial.open(QIODevice::ReadWrite); + std::cout << portName.toStdString() << " " << QString::number(baudRate).toStdString() << " " << open << std::endl; + if (open == true) { // mock data received per second diff --git a/DeviceHub/common/utils/SettingConfig.cpp b/DeviceHub/common/utils/SettingConfig.cpp index 6f17295..ea27d43 100644 --- a/DeviceHub/common/utils/SettingConfig.cpp +++ b/DeviceHub/common/utils/SettingConfig.cpp @@ -14,6 +14,9 @@ KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); KAFKA_CMD_TOPIC = getProperty("kafka", "cmdTopic").toString(); KAFKA_CMDCB_TOPIC = getProperty("kafka", "cmdcbTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "saslUsername").toString(); + SASL_PASSWORD = getProperty("kafka", "saslPassword").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/DeviceHub/common/utils/SettingConfig.h b/DeviceHub/common/utils/SettingConfig.h index c50bcc0..f6cc2af 100644 --- a/DeviceHub/common/utils/SettingConfig.h +++ b/DeviceHub/common/utils/SettingConfig.h @@ -36,6 +36,9 @@ QString KAFKA_DATA_TOPIC; QString KAFKA_CMD_TOPIC; QString KAFKA_CMDCB_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/DeviceHub/conf/config.ini b/DeviceHub/conf/config.ini index 64e57ba..ad7cb35 100644 --- a/DeviceHub/conf/config.ini +++ b/DeviceHub/conf/config.ini @@ -21,4 +21,4 @@ baseUrl="http://111.198.10.15:11410" [log] -basePath="/home/admin/Qt/ZXSSCJ-Release/DevStatus/logs/" +basePath="/home/admin/Qt/ZXSSCJ-Release/DeviceHub/logs/" diff --git a/DeviceHub/device/BCodeTerminal.cpp b/DeviceHub/device/BCodeTerminal.cpp index 1e852a9..5d8ec7f 100644 --- a/DeviceHub/device/BCodeTerminal.cpp +++ b/DeviceHub/device/BCodeTerminal.cpp @@ -72,7 +72,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -84,7 +84,7 @@ } } -void BCodeTerminal::afterFramePhase(DeviceFrameBaseDto * frameDto) +void BCodeTerminal::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/BCodeTerminal.h b/DeviceHub/device/BCodeTerminal.h index f39ab6e..d823431 100644 --- a/DeviceHub/device/BCodeTerminal.h +++ b/DeviceHub/device/BCodeTerminal.h @@ -15,7 +15,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void afterFrameParse(DeviceFrameBaseDto * frameDto); void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/DeviceBase.cpp b/DeviceHub/device/DeviceBase.cpp index 06cfddd..dc8d791 100644 --- a/DeviceHub/device/DeviceBase.cpp +++ b/DeviceHub/device/DeviceBase.cpp @@ -1,10 +1,10 @@ #include "DeviceBase.h" -//#include "FrequencyTuning.h" -//#include "SignalGenerator.h" -//#include "TimeSwitcher.h" -//#include "FreqSwitcher.h" -//#include "BCodeTerminal.h" -//#include "TimeReplicator.h" +#include "FrequencyTuning.h" +#include "SignalGenerator.h" +#include "TimeSwitcher.h" +#include "FreqSwitcher.h" +#include "BCodeTerminal.h" +#include "TimeReplicator.h" #include "FreqReplicator.h" #include @@ -42,25 +42,25 @@ DeviceBase * DeviceBase::deviceFactory(QString deviceType, QObject * parent) { DeviceBase * base = 0; -// if (deviceType == "03") -// { -// base = new FrequencyTuning(parent); -// } else if (deviceType == "04") -// { -// base = new SignalGenerator(parent); -// } else if (deviceType == "05") -// { -// base = new TimeSwitcher(parent); -// } else if (deviceType == "06") -// { -// base = new FreqSwitcher(parent); -// } else if (deviceType == "07") -// { -// base = new BCodeTerminal(parent); -// } else if (deviceType == "09") -// { -// base = new TimeReplicator(parent); -// } else + if (deviceType == "03") + { + base = new FrequencyTuning(parent); + } else if (deviceType == "04") + { + base = new SignalGenerator(parent); + } else if (deviceType == "05") + { + base = new TimeSwitcher(parent); + } else if (deviceType == "06") + { + base = new FreqSwitcher(parent); + } else if (deviceType == "07") + { + base = new BCodeTerminal(parent); + } else if (deviceType == "09") + { + base = new TimeReplicator(parent); + } else if (deviceType == "10") { base = new FreqReplicator(parent); @@ -76,7 +76,12 @@ void DeviceBase::initSerialPort() { - this->serialUtil.openSerialPort(this->comName, this->baudRate); + QStringList comNameList = this->comName.split(","); + this->serialUtil.openSerialPort(comNameList.at(0), this->baudRate); + if (comNameList.size() == 2) + { + this->serialUtilB.openSerialPort(comNameList.at(1), this->baudRate); + } } void DeviceBase::sendDataToSerial(QByteArray data) diff --git a/DeviceHub/device/DeviceBase.h b/DeviceHub/device/DeviceBase.h index e06bee3..77955aa 100644 --- a/DeviceHub/device/DeviceBase.h +++ b/DeviceHub/device/DeviceBase.h @@ -3,7 +3,7 @@ #include #include "common/utils/QSerialPortUtil.h" -//#include "common/utils/QKafkaProducer.h" +#include "common/utils/QKafkaProducer.h" #include "common/utils/QByteUtil.h" #include "common/utils/QLogUtil.h" #include "common/utils/SettingConfig.h" @@ -29,7 +29,7 @@ void initSerialPort(); bool isSerialOpen(); virtual void sendDataToSerial(QByteArray data); - virtual void afterFramePhase(DeviceFrameBaseDto * frameDto) = 0; + virtual void afterFrameParse(DeviceFrameBaseDto * frameDto) = 0; virtual void mockReceivData() = 0; @@ -43,8 +43,10 @@ QString devType; QSerialPortUtil serialUtil; -// QKafkaProducer kafkaProducer; + QSerialPortUtil serialUtilB; // serial port 2 + QKafkaProducer kafkaProducer; QByteArray dataBuff; + QByteArray dataBuffB; }; #endif // DEVICEBASE_H diff --git a/DeviceHub/device/FreqReplicator.cpp b/DeviceHub/device/FreqReplicator.cpp index ea50664..a8d033b 100644 --- a/DeviceHub/device/FreqReplicator.cpp +++ b/DeviceHub/device/FreqReplicator.cpp @@ -8,13 +8,15 @@ this->devType = "10"; connect(&this->serialUtil, &QSerialPortUtil::dataRecieved, this, &FreqReplicator::dataReceivedHandler); + connect(&this->serialUtilB, &QSerialPortUtil::dataRecieved, + this, &FreqReplicator::dataBReceivedHandler); connect(this, &FreqReplicator::sendDataToDraw, ((DeviceHubWindow *)this->parent())->freqRepForm, &FreqReplicatorForm::drawDeviceFrameOnForm); -// kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); -// kafkaProducer.createProducer(); + kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); + kafkaProducer.createProducer(); this->protocol = DeviceProtocolBase::deviceProtocolFactory(devType); } @@ -30,7 +32,7 @@ QByteArray buffer; // 频率信号放大器 - buffer = QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB"); + buffer.append(QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB")); buffer.append(QByteUtil::hexStringToBytes("AA550015020001000101010101010101010101010101010101E8")); this->dataReceivedHandler(buffer); @@ -45,40 +47,55 @@ if (frameList.size() > 0) { this->dataBuff.clear(); - for (int i = 0; i < frameList.size(); i++) - { - QByteArray frameByte = frameList.at(i); - - int frameType = protocol->checkFrame(frameByte); - DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); - if (frameDto != nullptr) - { - // ★解析成数据对象 - bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); - - // 解析成功 - if (parse == true) - { - QDateTime now = QDateTime::currentDateTime(); - frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); - frameDto->milisecond = now.toMSecsSinceEpoch(); - frameDto->rawFrame = frameByte; - - frameDto->devCode = devCode; - - this->afterFramePhase(frameDto); - } - - // 在此处释放内存,不影响后续显示 - // 不在此处释放内存则会导致内存持续增加 - // 具体原因不明 - delete frameDto; - } - } + frameParse(frameList); } } -void FreqReplicator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FreqReplicator::dataBReceivedHandler(QByteArray data) +{ + this->dataBuffB.append(data); + QList frameListB = protocol->extractFrameList(this->dataBuffB); + if (frameListB.size() > 0) + { + this->dataBuffB.clear(); + frameParse(frameListB); + } +} + +void FreqReplicator::frameParse(QList frameList) +{ + for (int i = 0; i < frameList.size(); i++) + { + QByteArray frameByte = frameList.at(i); + + int frameType = protocol->checkFrame(frameByte); + DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); + if (frameDto != nullptr) + { + // ★解析成数据对象 + bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); + + // 解析成功 + if (parse == true) + { + QDateTime now = QDateTime::currentDateTime(); + frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); + frameDto->milisecond = now.toMSecsSinceEpoch(); + frameDto->rawFrame = frameByte; + + frameDto->devCode = devCode; + + this->afterFrameParse(frameDto); + } + + // 在此处释放内存,不影响后续显示 + // 不在此处释放内存则会导致内存持续增加 + // 具体原因不明 + delete frameDto; + } + } +} +void FreqReplicator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << QByteUtil::binToHexString(frameDto->rawFrame).toStdString() << std::endl; @@ -101,7 +118,7 @@ QJsonObject jsonObj = frameDto->toJSON(); jsonObj.insert("clientId", SettingConfig::getInstance().CLIENT_ID); jsonObj.insert("deviceId", deviceId); -// kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); + kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); } // 4. 在界面上简单显示相差数据结果 diff --git a/DeviceHub/device/FreqReplicator.h b/DeviceHub/device/FreqReplicator.h index 5702c28..716f800 100644 --- a/DeviceHub/device/FreqReplicator.h +++ b/DeviceHub/device/FreqReplicator.h @@ -15,13 +15,15 @@ void mockReceivData(); - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void frameParse(QList frameList); + void afterFrameParse(DeviceFrameBaseDto * frameDto); signals: void sendDataToDraw(DeviceFrameBaseDto * frameData); public slots: void dataReceivedHandler(QByteArray data); + void dataBReceivedHandler(QByteArray data); }; #endif // FREQREPLICATOR_H diff --git a/DeviceHub/device/FreqSwitcher.cpp b/DeviceHub/device/FreqSwitcher.cpp index 3873c13..5587395 100644 --- a/DeviceHub/device/FreqSwitcher.cpp +++ b/DeviceHub/device/FreqSwitcher.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void FreqSwitcher::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FreqSwitcher::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.h b/DeviceHub/DeviceHubWindow.h index 62b4055..cb5875a 100644 --- a/DeviceHub/DeviceHubWindow.h +++ b/DeviceHub/DeviceHubWindow.h @@ -5,7 +5,7 @@ #include #include "common/HttpRequestController.h" -//#include "common/utils/QKafkaConsumer.h" +#include "common/utils/QKafkaConsumer.h" #include "device/DeviceBase.h" #include "FrequencyTuningForm.h" #include "SignalGeneratorForm.h" @@ -32,7 +32,7 @@ int currentDevIndex; QMap> allTypeDevList; -// QKafkaConsumer * kafkaConsumer; + QKafkaConsumer * kafkaConsumer; QComboBox * getDevTypeSelect(); QComboBox * getDevSelect(); diff --git a/DeviceHub/FreqReplicatorForm.cpp b/DeviceHub/FreqReplicatorForm.cpp index e52ab24..bda0658 100644 --- a/DeviceHub/FreqReplicatorForm.cpp +++ b/DeviceHub/FreqReplicatorForm.cpp @@ -29,6 +29,12 @@ void FreqReplicatorForm::drawDeviceFrameOnForm(DeviceFrameBaseDto * frameData) { + QString currentDevCode = ((DeviceHubWindow *)this->parent()->parent())->getDevSelect()->currentData().toJsonObject().find("deviceNo")->toString(); + if (currentDevCode != frameData->devCode) + { + return; + } + // 当前显示的设备编号 if (frameData->frameType == "1001") { @@ -44,5 +50,17 @@ doc.setArray(dataObj.find("outValid")->toArray()); ui->frOutStatus->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + } else if (frameData->frameType == "1002") + { + FreqReplicatorStatusDto * statusFrameDto = (FreqReplicatorStatusDto *) frameData; + + QJsonObject dataObj = statusFrameDto->toJSON().find("data")->toObject(); + QJsonDocument doc; + + doc.setArray(dataObj.find("inValid")->toArray()); + ui->frInStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + + doc.setArray(dataObj.find("outValid")->toArray()); + ui->frOutStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); } } diff --git a/DeviceHub/FreqReplicatorForm.ui b/DeviceHub/FreqReplicatorForm.ui index cbc4ffb..2f6c15d 100644 --- a/DeviceHub/FreqReplicatorForm.ui +++ b/DeviceHub/FreqReplicatorForm.ui @@ -129,7 +129,7 @@ - 输出监测 + 输出监测AB @@ -148,7 +148,7 @@ - 输入状态 + 输入状态AB @@ -170,6 +170,64 @@ + + + + 540 + 130 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输入状态CD + + + + + + 620 + 130 + 200 + 30 + + + + + + + 100 + 230 + 400 + 30 + + + + + + + 20 + 230 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输出监测CD + + diff --git a/DeviceHub/common/common.pri b/DeviceHub/common/common.pri index feeba36..86259e8 100644 --- a/DeviceHub/common/common.pri +++ b/DeviceHub/common/common.pri @@ -3,8 +3,8 @@ SOURCES += $$PWD/utils/QByteUtil.cpp SOURCES += $$PWD/utils/QSerialPortUtil.cpp SOURCES += $$PWD/utils/QLogUtil.cpp -#SOURCES += $$PWD/utils/QKafkaConsumer.cpp -#SOURCES += $$PWD/utils/QKafkaProducer.cpp +SOURCES += $$PWD/utils/QKafkaConsumer.cpp +SOURCES += $$PWD/utils/QKafkaProducer.cpp SOURCES += $$PWD/utils/HttpRequestUtil.cpp SOURCES += $$PWD/utils/MD5.cpp SOURCES += $$PWD/HttpRequestController.cpp @@ -13,8 +13,8 @@ HEADERS += $$PWD/utils/QByteUtil.h HEADERS += $$PWD/utils/QSerialPortUtil.h HEADERS += $$PWD/utils/QLogUtil.h -#HEADERS += $$PWD/utils/QKafkaConsumer.h -#HEADERS += $$PWD/utils/QKafkaProducer.h +HEADERS += $$PWD/utils/QKafkaConsumer.h +HEADERS += $$PWD/utils/QKafkaProducer.h HEADERS += $$PWD/utils/HttpRequestUtil.h HEADERS += $$PWD/utils/DefHead.h HEADERS += $$PWD/utils/MD5.h diff --git a/DeviceHub/common/utils/QKafkaConsumer.cpp b/DeviceHub/common/utils/QKafkaConsumer.cpp index b3cb9fd..c62f08e 100644 --- a/DeviceHub/common/utils/QKafkaConsumer.cpp +++ b/DeviceHub/common/utils/QKafkaConsumer.cpp @@ -1,4 +1,5 @@ #include "QKafkaConsumer.h" +#include "SettingConfig.h" #include #include @@ -25,6 +26,14 @@ int QKafkaConsumer::createConsumer() { int ret = conf->set("metadata.broker.list", brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } + if (ret != RdKafka::Conf::CONF_OK) { std::cerr << "RdKafka conf set brokerlist failed :" << errStr.c_str() << std::endl; diff --git a/DeviceHub/common/utils/QKafkaProducer.cpp b/DeviceHub/common/utils/QKafkaProducer.cpp index c0db128..109e581 100644 --- a/DeviceHub/common/utils/QKafkaProducer.cpp +++ b/DeviceHub/common/utils/QKafkaProducer.cpp @@ -1,4 +1,5 @@ #include "QKafkaProducer.h" +#include "SettingConfig.h" #include QKafkaProducer::QKafkaProducer(QObject *parent) : QObject(parent) @@ -20,6 +21,13 @@ { int result; result = this->conf->set("bootstrap.servers", this->brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } if (result != RdKafka::Conf::CONF_OK) { diff --git a/DeviceHub/common/utils/QSerialPortUtil.cpp b/DeviceHub/common/utils/QSerialPortUtil.cpp index 9de0047..a5e07ac 100644 --- a/DeviceHub/common/utils/QSerialPortUtil.cpp +++ b/DeviceHub/common/utils/QSerialPortUtil.cpp @@ -25,6 +25,8 @@ open = serial.open(QIODevice::ReadWrite); + std::cout << portName.toStdString() << " " << QString::number(baudRate).toStdString() << " " << open << std::endl; + if (open == true) { // mock data received per second diff --git a/DeviceHub/common/utils/SettingConfig.cpp b/DeviceHub/common/utils/SettingConfig.cpp index 6f17295..ea27d43 100644 --- a/DeviceHub/common/utils/SettingConfig.cpp +++ b/DeviceHub/common/utils/SettingConfig.cpp @@ -14,6 +14,9 @@ KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); KAFKA_CMD_TOPIC = getProperty("kafka", "cmdTopic").toString(); KAFKA_CMDCB_TOPIC = getProperty("kafka", "cmdcbTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "saslUsername").toString(); + SASL_PASSWORD = getProperty("kafka", "saslPassword").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/DeviceHub/common/utils/SettingConfig.h b/DeviceHub/common/utils/SettingConfig.h index c50bcc0..f6cc2af 100644 --- a/DeviceHub/common/utils/SettingConfig.h +++ b/DeviceHub/common/utils/SettingConfig.h @@ -36,6 +36,9 @@ QString KAFKA_DATA_TOPIC; QString KAFKA_CMD_TOPIC; QString KAFKA_CMDCB_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/DeviceHub/conf/config.ini b/DeviceHub/conf/config.ini index 64e57ba..ad7cb35 100644 --- a/DeviceHub/conf/config.ini +++ b/DeviceHub/conf/config.ini @@ -21,4 +21,4 @@ baseUrl="http://111.198.10.15:11410" [log] -basePath="/home/admin/Qt/ZXSSCJ-Release/DevStatus/logs/" +basePath="/home/admin/Qt/ZXSSCJ-Release/DeviceHub/logs/" diff --git a/DeviceHub/device/BCodeTerminal.cpp b/DeviceHub/device/BCodeTerminal.cpp index 1e852a9..5d8ec7f 100644 --- a/DeviceHub/device/BCodeTerminal.cpp +++ b/DeviceHub/device/BCodeTerminal.cpp @@ -72,7 +72,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -84,7 +84,7 @@ } } -void BCodeTerminal::afterFramePhase(DeviceFrameBaseDto * frameDto) +void BCodeTerminal::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/BCodeTerminal.h b/DeviceHub/device/BCodeTerminal.h index f39ab6e..d823431 100644 --- a/DeviceHub/device/BCodeTerminal.h +++ b/DeviceHub/device/BCodeTerminal.h @@ -15,7 +15,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void afterFrameParse(DeviceFrameBaseDto * frameDto); void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/DeviceBase.cpp b/DeviceHub/device/DeviceBase.cpp index 06cfddd..dc8d791 100644 --- a/DeviceHub/device/DeviceBase.cpp +++ b/DeviceHub/device/DeviceBase.cpp @@ -1,10 +1,10 @@ #include "DeviceBase.h" -//#include "FrequencyTuning.h" -//#include "SignalGenerator.h" -//#include "TimeSwitcher.h" -//#include "FreqSwitcher.h" -//#include "BCodeTerminal.h" -//#include "TimeReplicator.h" +#include "FrequencyTuning.h" +#include "SignalGenerator.h" +#include "TimeSwitcher.h" +#include "FreqSwitcher.h" +#include "BCodeTerminal.h" +#include "TimeReplicator.h" #include "FreqReplicator.h" #include @@ -42,25 +42,25 @@ DeviceBase * DeviceBase::deviceFactory(QString deviceType, QObject * parent) { DeviceBase * base = 0; -// if (deviceType == "03") -// { -// base = new FrequencyTuning(parent); -// } else if (deviceType == "04") -// { -// base = new SignalGenerator(parent); -// } else if (deviceType == "05") -// { -// base = new TimeSwitcher(parent); -// } else if (deviceType == "06") -// { -// base = new FreqSwitcher(parent); -// } else if (deviceType == "07") -// { -// base = new BCodeTerminal(parent); -// } else if (deviceType == "09") -// { -// base = new TimeReplicator(parent); -// } else + if (deviceType == "03") + { + base = new FrequencyTuning(parent); + } else if (deviceType == "04") + { + base = new SignalGenerator(parent); + } else if (deviceType == "05") + { + base = new TimeSwitcher(parent); + } else if (deviceType == "06") + { + base = new FreqSwitcher(parent); + } else if (deviceType == "07") + { + base = new BCodeTerminal(parent); + } else if (deviceType == "09") + { + base = new TimeReplicator(parent); + } else if (deviceType == "10") { base = new FreqReplicator(parent); @@ -76,7 +76,12 @@ void DeviceBase::initSerialPort() { - this->serialUtil.openSerialPort(this->comName, this->baudRate); + QStringList comNameList = this->comName.split(","); + this->serialUtil.openSerialPort(comNameList.at(0), this->baudRate); + if (comNameList.size() == 2) + { + this->serialUtilB.openSerialPort(comNameList.at(1), this->baudRate); + } } void DeviceBase::sendDataToSerial(QByteArray data) diff --git a/DeviceHub/device/DeviceBase.h b/DeviceHub/device/DeviceBase.h index e06bee3..77955aa 100644 --- a/DeviceHub/device/DeviceBase.h +++ b/DeviceHub/device/DeviceBase.h @@ -3,7 +3,7 @@ #include #include "common/utils/QSerialPortUtil.h" -//#include "common/utils/QKafkaProducer.h" +#include "common/utils/QKafkaProducer.h" #include "common/utils/QByteUtil.h" #include "common/utils/QLogUtil.h" #include "common/utils/SettingConfig.h" @@ -29,7 +29,7 @@ void initSerialPort(); bool isSerialOpen(); virtual void sendDataToSerial(QByteArray data); - virtual void afterFramePhase(DeviceFrameBaseDto * frameDto) = 0; + virtual void afterFrameParse(DeviceFrameBaseDto * frameDto) = 0; virtual void mockReceivData() = 0; @@ -43,8 +43,10 @@ QString devType; QSerialPortUtil serialUtil; -// QKafkaProducer kafkaProducer; + QSerialPortUtil serialUtilB; // serial port 2 + QKafkaProducer kafkaProducer; QByteArray dataBuff; + QByteArray dataBuffB; }; #endif // DEVICEBASE_H diff --git a/DeviceHub/device/FreqReplicator.cpp b/DeviceHub/device/FreqReplicator.cpp index ea50664..a8d033b 100644 --- a/DeviceHub/device/FreqReplicator.cpp +++ b/DeviceHub/device/FreqReplicator.cpp @@ -8,13 +8,15 @@ this->devType = "10"; connect(&this->serialUtil, &QSerialPortUtil::dataRecieved, this, &FreqReplicator::dataReceivedHandler); + connect(&this->serialUtilB, &QSerialPortUtil::dataRecieved, + this, &FreqReplicator::dataBReceivedHandler); connect(this, &FreqReplicator::sendDataToDraw, ((DeviceHubWindow *)this->parent())->freqRepForm, &FreqReplicatorForm::drawDeviceFrameOnForm); -// kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); -// kafkaProducer.createProducer(); + kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); + kafkaProducer.createProducer(); this->protocol = DeviceProtocolBase::deviceProtocolFactory(devType); } @@ -30,7 +32,7 @@ QByteArray buffer; // 频率信号放大器 - buffer = QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB"); + buffer.append(QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB")); buffer.append(QByteUtil::hexStringToBytes("AA550015020001000101010101010101010101010101010101E8")); this->dataReceivedHandler(buffer); @@ -45,40 +47,55 @@ if (frameList.size() > 0) { this->dataBuff.clear(); - for (int i = 0; i < frameList.size(); i++) - { - QByteArray frameByte = frameList.at(i); - - int frameType = protocol->checkFrame(frameByte); - DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); - if (frameDto != nullptr) - { - // ★解析成数据对象 - bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); - - // 解析成功 - if (parse == true) - { - QDateTime now = QDateTime::currentDateTime(); - frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); - frameDto->milisecond = now.toMSecsSinceEpoch(); - frameDto->rawFrame = frameByte; - - frameDto->devCode = devCode; - - this->afterFramePhase(frameDto); - } - - // 在此处释放内存,不影响后续显示 - // 不在此处释放内存则会导致内存持续增加 - // 具体原因不明 - delete frameDto; - } - } + frameParse(frameList); } } -void FreqReplicator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FreqReplicator::dataBReceivedHandler(QByteArray data) +{ + this->dataBuffB.append(data); + QList frameListB = protocol->extractFrameList(this->dataBuffB); + if (frameListB.size() > 0) + { + this->dataBuffB.clear(); + frameParse(frameListB); + } +} + +void FreqReplicator::frameParse(QList frameList) +{ + for (int i = 0; i < frameList.size(); i++) + { + QByteArray frameByte = frameList.at(i); + + int frameType = protocol->checkFrame(frameByte); + DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); + if (frameDto != nullptr) + { + // ★解析成数据对象 + bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); + + // 解析成功 + if (parse == true) + { + QDateTime now = QDateTime::currentDateTime(); + frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); + frameDto->milisecond = now.toMSecsSinceEpoch(); + frameDto->rawFrame = frameByte; + + frameDto->devCode = devCode; + + this->afterFrameParse(frameDto); + } + + // 在此处释放内存,不影响后续显示 + // 不在此处释放内存则会导致内存持续增加 + // 具体原因不明 + delete frameDto; + } + } +} +void FreqReplicator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << QByteUtil::binToHexString(frameDto->rawFrame).toStdString() << std::endl; @@ -101,7 +118,7 @@ QJsonObject jsonObj = frameDto->toJSON(); jsonObj.insert("clientId", SettingConfig::getInstance().CLIENT_ID); jsonObj.insert("deviceId", deviceId); -// kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); + kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); } // 4. 在界面上简单显示相差数据结果 diff --git a/DeviceHub/device/FreqReplicator.h b/DeviceHub/device/FreqReplicator.h index 5702c28..716f800 100644 --- a/DeviceHub/device/FreqReplicator.h +++ b/DeviceHub/device/FreqReplicator.h @@ -15,13 +15,15 @@ void mockReceivData(); - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void frameParse(QList frameList); + void afterFrameParse(DeviceFrameBaseDto * frameDto); signals: void sendDataToDraw(DeviceFrameBaseDto * frameData); public slots: void dataReceivedHandler(QByteArray data); + void dataBReceivedHandler(QByteArray data); }; #endif // FREQREPLICATOR_H diff --git a/DeviceHub/device/FreqSwitcher.cpp b/DeviceHub/device/FreqSwitcher.cpp index 3873c13..5587395 100644 --- a/DeviceHub/device/FreqSwitcher.cpp +++ b/DeviceHub/device/FreqSwitcher.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void FreqSwitcher::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FreqSwitcher::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/FreqSwitcher.h b/DeviceHub/device/FreqSwitcher.h index fd19204..9c17824 100644 --- a/DeviceHub/device/FreqSwitcher.h +++ b/DeviceHub/device/FreqSwitcher.h @@ -16,7 +16,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.h b/DeviceHub/DeviceHubWindow.h index 62b4055..cb5875a 100644 --- a/DeviceHub/DeviceHubWindow.h +++ b/DeviceHub/DeviceHubWindow.h @@ -5,7 +5,7 @@ #include #include "common/HttpRequestController.h" -//#include "common/utils/QKafkaConsumer.h" +#include "common/utils/QKafkaConsumer.h" #include "device/DeviceBase.h" #include "FrequencyTuningForm.h" #include "SignalGeneratorForm.h" @@ -32,7 +32,7 @@ int currentDevIndex; QMap> allTypeDevList; -// QKafkaConsumer * kafkaConsumer; + QKafkaConsumer * kafkaConsumer; QComboBox * getDevTypeSelect(); QComboBox * getDevSelect(); diff --git a/DeviceHub/FreqReplicatorForm.cpp b/DeviceHub/FreqReplicatorForm.cpp index e52ab24..bda0658 100644 --- a/DeviceHub/FreqReplicatorForm.cpp +++ b/DeviceHub/FreqReplicatorForm.cpp @@ -29,6 +29,12 @@ void FreqReplicatorForm::drawDeviceFrameOnForm(DeviceFrameBaseDto * frameData) { + QString currentDevCode = ((DeviceHubWindow *)this->parent()->parent())->getDevSelect()->currentData().toJsonObject().find("deviceNo")->toString(); + if (currentDevCode != frameData->devCode) + { + return; + } + // 当前显示的设备编号 if (frameData->frameType == "1001") { @@ -44,5 +50,17 @@ doc.setArray(dataObj.find("outValid")->toArray()); ui->frOutStatus->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + } else if (frameData->frameType == "1002") + { + FreqReplicatorStatusDto * statusFrameDto = (FreqReplicatorStatusDto *) frameData; + + QJsonObject dataObj = statusFrameDto->toJSON().find("data")->toObject(); + QJsonDocument doc; + + doc.setArray(dataObj.find("inValid")->toArray()); + ui->frInStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + + doc.setArray(dataObj.find("outValid")->toArray()); + ui->frOutStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); } } diff --git a/DeviceHub/FreqReplicatorForm.ui b/DeviceHub/FreqReplicatorForm.ui index cbc4ffb..2f6c15d 100644 --- a/DeviceHub/FreqReplicatorForm.ui +++ b/DeviceHub/FreqReplicatorForm.ui @@ -129,7 +129,7 @@ - 输出监测 + 输出监测AB @@ -148,7 +148,7 @@ - 输入状态 + 输入状态AB @@ -170,6 +170,64 @@ + + + + 540 + 130 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输入状态CD + + + + + + 620 + 130 + 200 + 30 + + + + + + + 100 + 230 + 400 + 30 + + + + + + + 20 + 230 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输出监测CD + + diff --git a/DeviceHub/common/common.pri b/DeviceHub/common/common.pri index feeba36..86259e8 100644 --- a/DeviceHub/common/common.pri +++ b/DeviceHub/common/common.pri @@ -3,8 +3,8 @@ SOURCES += $$PWD/utils/QByteUtil.cpp SOURCES += $$PWD/utils/QSerialPortUtil.cpp SOURCES += $$PWD/utils/QLogUtil.cpp -#SOURCES += $$PWD/utils/QKafkaConsumer.cpp -#SOURCES += $$PWD/utils/QKafkaProducer.cpp +SOURCES += $$PWD/utils/QKafkaConsumer.cpp +SOURCES += $$PWD/utils/QKafkaProducer.cpp SOURCES += $$PWD/utils/HttpRequestUtil.cpp SOURCES += $$PWD/utils/MD5.cpp SOURCES += $$PWD/HttpRequestController.cpp @@ -13,8 +13,8 @@ HEADERS += $$PWD/utils/QByteUtil.h HEADERS += $$PWD/utils/QSerialPortUtil.h HEADERS += $$PWD/utils/QLogUtil.h -#HEADERS += $$PWD/utils/QKafkaConsumer.h -#HEADERS += $$PWD/utils/QKafkaProducer.h +HEADERS += $$PWD/utils/QKafkaConsumer.h +HEADERS += $$PWD/utils/QKafkaProducer.h HEADERS += $$PWD/utils/HttpRequestUtil.h HEADERS += $$PWD/utils/DefHead.h HEADERS += $$PWD/utils/MD5.h diff --git a/DeviceHub/common/utils/QKafkaConsumer.cpp b/DeviceHub/common/utils/QKafkaConsumer.cpp index b3cb9fd..c62f08e 100644 --- a/DeviceHub/common/utils/QKafkaConsumer.cpp +++ b/DeviceHub/common/utils/QKafkaConsumer.cpp @@ -1,4 +1,5 @@ #include "QKafkaConsumer.h" +#include "SettingConfig.h" #include #include @@ -25,6 +26,14 @@ int QKafkaConsumer::createConsumer() { int ret = conf->set("metadata.broker.list", brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } + if (ret != RdKafka::Conf::CONF_OK) { std::cerr << "RdKafka conf set brokerlist failed :" << errStr.c_str() << std::endl; diff --git a/DeviceHub/common/utils/QKafkaProducer.cpp b/DeviceHub/common/utils/QKafkaProducer.cpp index c0db128..109e581 100644 --- a/DeviceHub/common/utils/QKafkaProducer.cpp +++ b/DeviceHub/common/utils/QKafkaProducer.cpp @@ -1,4 +1,5 @@ #include "QKafkaProducer.h" +#include "SettingConfig.h" #include QKafkaProducer::QKafkaProducer(QObject *parent) : QObject(parent) @@ -20,6 +21,13 @@ { int result; result = this->conf->set("bootstrap.servers", this->brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } if (result != RdKafka::Conf::CONF_OK) { diff --git a/DeviceHub/common/utils/QSerialPortUtil.cpp b/DeviceHub/common/utils/QSerialPortUtil.cpp index 9de0047..a5e07ac 100644 --- a/DeviceHub/common/utils/QSerialPortUtil.cpp +++ b/DeviceHub/common/utils/QSerialPortUtil.cpp @@ -25,6 +25,8 @@ open = serial.open(QIODevice::ReadWrite); + std::cout << portName.toStdString() << " " << QString::number(baudRate).toStdString() << " " << open << std::endl; + if (open == true) { // mock data received per second diff --git a/DeviceHub/common/utils/SettingConfig.cpp b/DeviceHub/common/utils/SettingConfig.cpp index 6f17295..ea27d43 100644 --- a/DeviceHub/common/utils/SettingConfig.cpp +++ b/DeviceHub/common/utils/SettingConfig.cpp @@ -14,6 +14,9 @@ KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); KAFKA_CMD_TOPIC = getProperty("kafka", "cmdTopic").toString(); KAFKA_CMDCB_TOPIC = getProperty("kafka", "cmdcbTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "saslUsername").toString(); + SASL_PASSWORD = getProperty("kafka", "saslPassword").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/DeviceHub/common/utils/SettingConfig.h b/DeviceHub/common/utils/SettingConfig.h index c50bcc0..f6cc2af 100644 --- a/DeviceHub/common/utils/SettingConfig.h +++ b/DeviceHub/common/utils/SettingConfig.h @@ -36,6 +36,9 @@ QString KAFKA_DATA_TOPIC; QString KAFKA_CMD_TOPIC; QString KAFKA_CMDCB_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/DeviceHub/conf/config.ini b/DeviceHub/conf/config.ini index 64e57ba..ad7cb35 100644 --- a/DeviceHub/conf/config.ini +++ b/DeviceHub/conf/config.ini @@ -21,4 +21,4 @@ baseUrl="http://111.198.10.15:11410" [log] -basePath="/home/admin/Qt/ZXSSCJ-Release/DevStatus/logs/" +basePath="/home/admin/Qt/ZXSSCJ-Release/DeviceHub/logs/" diff --git a/DeviceHub/device/BCodeTerminal.cpp b/DeviceHub/device/BCodeTerminal.cpp index 1e852a9..5d8ec7f 100644 --- a/DeviceHub/device/BCodeTerminal.cpp +++ b/DeviceHub/device/BCodeTerminal.cpp @@ -72,7 +72,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -84,7 +84,7 @@ } } -void BCodeTerminal::afterFramePhase(DeviceFrameBaseDto * frameDto) +void BCodeTerminal::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/BCodeTerminal.h b/DeviceHub/device/BCodeTerminal.h index f39ab6e..d823431 100644 --- a/DeviceHub/device/BCodeTerminal.h +++ b/DeviceHub/device/BCodeTerminal.h @@ -15,7 +15,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void afterFrameParse(DeviceFrameBaseDto * frameDto); void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/DeviceBase.cpp b/DeviceHub/device/DeviceBase.cpp index 06cfddd..dc8d791 100644 --- a/DeviceHub/device/DeviceBase.cpp +++ b/DeviceHub/device/DeviceBase.cpp @@ -1,10 +1,10 @@ #include "DeviceBase.h" -//#include "FrequencyTuning.h" -//#include "SignalGenerator.h" -//#include "TimeSwitcher.h" -//#include "FreqSwitcher.h" -//#include "BCodeTerminal.h" -//#include "TimeReplicator.h" +#include "FrequencyTuning.h" +#include "SignalGenerator.h" +#include "TimeSwitcher.h" +#include "FreqSwitcher.h" +#include "BCodeTerminal.h" +#include "TimeReplicator.h" #include "FreqReplicator.h" #include @@ -42,25 +42,25 @@ DeviceBase * DeviceBase::deviceFactory(QString deviceType, QObject * parent) { DeviceBase * base = 0; -// if (deviceType == "03") -// { -// base = new FrequencyTuning(parent); -// } else if (deviceType == "04") -// { -// base = new SignalGenerator(parent); -// } else if (deviceType == "05") -// { -// base = new TimeSwitcher(parent); -// } else if (deviceType == "06") -// { -// base = new FreqSwitcher(parent); -// } else if (deviceType == "07") -// { -// base = new BCodeTerminal(parent); -// } else if (deviceType == "09") -// { -// base = new TimeReplicator(parent); -// } else + if (deviceType == "03") + { + base = new FrequencyTuning(parent); + } else if (deviceType == "04") + { + base = new SignalGenerator(parent); + } else if (deviceType == "05") + { + base = new TimeSwitcher(parent); + } else if (deviceType == "06") + { + base = new FreqSwitcher(parent); + } else if (deviceType == "07") + { + base = new BCodeTerminal(parent); + } else if (deviceType == "09") + { + base = new TimeReplicator(parent); + } else if (deviceType == "10") { base = new FreqReplicator(parent); @@ -76,7 +76,12 @@ void DeviceBase::initSerialPort() { - this->serialUtil.openSerialPort(this->comName, this->baudRate); + QStringList comNameList = this->comName.split(","); + this->serialUtil.openSerialPort(comNameList.at(0), this->baudRate); + if (comNameList.size() == 2) + { + this->serialUtilB.openSerialPort(comNameList.at(1), this->baudRate); + } } void DeviceBase::sendDataToSerial(QByteArray data) diff --git a/DeviceHub/device/DeviceBase.h b/DeviceHub/device/DeviceBase.h index e06bee3..77955aa 100644 --- a/DeviceHub/device/DeviceBase.h +++ b/DeviceHub/device/DeviceBase.h @@ -3,7 +3,7 @@ #include #include "common/utils/QSerialPortUtil.h" -//#include "common/utils/QKafkaProducer.h" +#include "common/utils/QKafkaProducer.h" #include "common/utils/QByteUtil.h" #include "common/utils/QLogUtil.h" #include "common/utils/SettingConfig.h" @@ -29,7 +29,7 @@ void initSerialPort(); bool isSerialOpen(); virtual void sendDataToSerial(QByteArray data); - virtual void afterFramePhase(DeviceFrameBaseDto * frameDto) = 0; + virtual void afterFrameParse(DeviceFrameBaseDto * frameDto) = 0; virtual void mockReceivData() = 0; @@ -43,8 +43,10 @@ QString devType; QSerialPortUtil serialUtil; -// QKafkaProducer kafkaProducer; + QSerialPortUtil serialUtilB; // serial port 2 + QKafkaProducer kafkaProducer; QByteArray dataBuff; + QByteArray dataBuffB; }; #endif // DEVICEBASE_H diff --git a/DeviceHub/device/FreqReplicator.cpp b/DeviceHub/device/FreqReplicator.cpp index ea50664..a8d033b 100644 --- a/DeviceHub/device/FreqReplicator.cpp +++ b/DeviceHub/device/FreqReplicator.cpp @@ -8,13 +8,15 @@ this->devType = "10"; connect(&this->serialUtil, &QSerialPortUtil::dataRecieved, this, &FreqReplicator::dataReceivedHandler); + connect(&this->serialUtilB, &QSerialPortUtil::dataRecieved, + this, &FreqReplicator::dataBReceivedHandler); connect(this, &FreqReplicator::sendDataToDraw, ((DeviceHubWindow *)this->parent())->freqRepForm, &FreqReplicatorForm::drawDeviceFrameOnForm); -// kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); -// kafkaProducer.createProducer(); + kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); + kafkaProducer.createProducer(); this->protocol = DeviceProtocolBase::deviceProtocolFactory(devType); } @@ -30,7 +32,7 @@ QByteArray buffer; // 频率信号放大器 - buffer = QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB"); + buffer.append(QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB")); buffer.append(QByteUtil::hexStringToBytes("AA550015020001000101010101010101010101010101010101E8")); this->dataReceivedHandler(buffer); @@ -45,40 +47,55 @@ if (frameList.size() > 0) { this->dataBuff.clear(); - for (int i = 0; i < frameList.size(); i++) - { - QByteArray frameByte = frameList.at(i); - - int frameType = protocol->checkFrame(frameByte); - DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); - if (frameDto != nullptr) - { - // ★解析成数据对象 - bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); - - // 解析成功 - if (parse == true) - { - QDateTime now = QDateTime::currentDateTime(); - frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); - frameDto->milisecond = now.toMSecsSinceEpoch(); - frameDto->rawFrame = frameByte; - - frameDto->devCode = devCode; - - this->afterFramePhase(frameDto); - } - - // 在此处释放内存,不影响后续显示 - // 不在此处释放内存则会导致内存持续增加 - // 具体原因不明 - delete frameDto; - } - } + frameParse(frameList); } } -void FreqReplicator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FreqReplicator::dataBReceivedHandler(QByteArray data) +{ + this->dataBuffB.append(data); + QList frameListB = protocol->extractFrameList(this->dataBuffB); + if (frameListB.size() > 0) + { + this->dataBuffB.clear(); + frameParse(frameListB); + } +} + +void FreqReplicator::frameParse(QList frameList) +{ + for (int i = 0; i < frameList.size(); i++) + { + QByteArray frameByte = frameList.at(i); + + int frameType = protocol->checkFrame(frameByte); + DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); + if (frameDto != nullptr) + { + // ★解析成数据对象 + bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); + + // 解析成功 + if (parse == true) + { + QDateTime now = QDateTime::currentDateTime(); + frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); + frameDto->milisecond = now.toMSecsSinceEpoch(); + frameDto->rawFrame = frameByte; + + frameDto->devCode = devCode; + + this->afterFrameParse(frameDto); + } + + // 在此处释放内存,不影响后续显示 + // 不在此处释放内存则会导致内存持续增加 + // 具体原因不明 + delete frameDto; + } + } +} +void FreqReplicator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << QByteUtil::binToHexString(frameDto->rawFrame).toStdString() << std::endl; @@ -101,7 +118,7 @@ QJsonObject jsonObj = frameDto->toJSON(); jsonObj.insert("clientId", SettingConfig::getInstance().CLIENT_ID); jsonObj.insert("deviceId", deviceId); -// kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); + kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); } // 4. 在界面上简单显示相差数据结果 diff --git a/DeviceHub/device/FreqReplicator.h b/DeviceHub/device/FreqReplicator.h index 5702c28..716f800 100644 --- a/DeviceHub/device/FreqReplicator.h +++ b/DeviceHub/device/FreqReplicator.h @@ -15,13 +15,15 @@ void mockReceivData(); - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void frameParse(QList frameList); + void afterFrameParse(DeviceFrameBaseDto * frameDto); signals: void sendDataToDraw(DeviceFrameBaseDto * frameData); public slots: void dataReceivedHandler(QByteArray data); + void dataBReceivedHandler(QByteArray data); }; #endif // FREQREPLICATOR_H diff --git a/DeviceHub/device/FreqSwitcher.cpp b/DeviceHub/device/FreqSwitcher.cpp index 3873c13..5587395 100644 --- a/DeviceHub/device/FreqSwitcher.cpp +++ b/DeviceHub/device/FreqSwitcher.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void FreqSwitcher::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FreqSwitcher::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/FreqSwitcher.h b/DeviceHub/device/FreqSwitcher.h index fd19204..9c17824 100644 --- a/DeviceHub/device/FreqSwitcher.h +++ b/DeviceHub/device/FreqSwitcher.h @@ -16,7 +16,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/FrequencyTuning.cpp b/DeviceHub/device/FrequencyTuning.cpp index e2038c2..0a19747 100644 --- a/DeviceHub/device/FrequencyTuning.cpp +++ b/DeviceHub/device/FrequencyTuning.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void FrequencyTuning::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FrequencyTuning::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.h b/DeviceHub/DeviceHubWindow.h index 62b4055..cb5875a 100644 --- a/DeviceHub/DeviceHubWindow.h +++ b/DeviceHub/DeviceHubWindow.h @@ -5,7 +5,7 @@ #include #include "common/HttpRequestController.h" -//#include "common/utils/QKafkaConsumer.h" +#include "common/utils/QKafkaConsumer.h" #include "device/DeviceBase.h" #include "FrequencyTuningForm.h" #include "SignalGeneratorForm.h" @@ -32,7 +32,7 @@ int currentDevIndex; QMap> allTypeDevList; -// QKafkaConsumer * kafkaConsumer; + QKafkaConsumer * kafkaConsumer; QComboBox * getDevTypeSelect(); QComboBox * getDevSelect(); diff --git a/DeviceHub/FreqReplicatorForm.cpp b/DeviceHub/FreqReplicatorForm.cpp index e52ab24..bda0658 100644 --- a/DeviceHub/FreqReplicatorForm.cpp +++ b/DeviceHub/FreqReplicatorForm.cpp @@ -29,6 +29,12 @@ void FreqReplicatorForm::drawDeviceFrameOnForm(DeviceFrameBaseDto * frameData) { + QString currentDevCode = ((DeviceHubWindow *)this->parent()->parent())->getDevSelect()->currentData().toJsonObject().find("deviceNo")->toString(); + if (currentDevCode != frameData->devCode) + { + return; + } + // 当前显示的设备编号 if (frameData->frameType == "1001") { @@ -44,5 +50,17 @@ doc.setArray(dataObj.find("outValid")->toArray()); ui->frOutStatus->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + } else if (frameData->frameType == "1002") + { + FreqReplicatorStatusDto * statusFrameDto = (FreqReplicatorStatusDto *) frameData; + + QJsonObject dataObj = statusFrameDto->toJSON().find("data")->toObject(); + QJsonDocument doc; + + doc.setArray(dataObj.find("inValid")->toArray()); + ui->frInStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + + doc.setArray(dataObj.find("outValid")->toArray()); + ui->frOutStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); } } diff --git a/DeviceHub/FreqReplicatorForm.ui b/DeviceHub/FreqReplicatorForm.ui index cbc4ffb..2f6c15d 100644 --- a/DeviceHub/FreqReplicatorForm.ui +++ b/DeviceHub/FreqReplicatorForm.ui @@ -129,7 +129,7 @@ - 输出监测 + 输出监测AB @@ -148,7 +148,7 @@ - 输入状态 + 输入状态AB @@ -170,6 +170,64 @@ + + + + 540 + 130 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输入状态CD + + + + + + 620 + 130 + 200 + 30 + + + + + + + 100 + 230 + 400 + 30 + + + + + + + 20 + 230 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输出监测CD + + diff --git a/DeviceHub/common/common.pri b/DeviceHub/common/common.pri index feeba36..86259e8 100644 --- a/DeviceHub/common/common.pri +++ b/DeviceHub/common/common.pri @@ -3,8 +3,8 @@ SOURCES += $$PWD/utils/QByteUtil.cpp SOURCES += $$PWD/utils/QSerialPortUtil.cpp SOURCES += $$PWD/utils/QLogUtil.cpp -#SOURCES += $$PWD/utils/QKafkaConsumer.cpp -#SOURCES += $$PWD/utils/QKafkaProducer.cpp +SOURCES += $$PWD/utils/QKafkaConsumer.cpp +SOURCES += $$PWD/utils/QKafkaProducer.cpp SOURCES += $$PWD/utils/HttpRequestUtil.cpp SOURCES += $$PWD/utils/MD5.cpp SOURCES += $$PWD/HttpRequestController.cpp @@ -13,8 +13,8 @@ HEADERS += $$PWD/utils/QByteUtil.h HEADERS += $$PWD/utils/QSerialPortUtil.h HEADERS += $$PWD/utils/QLogUtil.h -#HEADERS += $$PWD/utils/QKafkaConsumer.h -#HEADERS += $$PWD/utils/QKafkaProducer.h +HEADERS += $$PWD/utils/QKafkaConsumer.h +HEADERS += $$PWD/utils/QKafkaProducer.h HEADERS += $$PWD/utils/HttpRequestUtil.h HEADERS += $$PWD/utils/DefHead.h HEADERS += $$PWD/utils/MD5.h diff --git a/DeviceHub/common/utils/QKafkaConsumer.cpp b/DeviceHub/common/utils/QKafkaConsumer.cpp index b3cb9fd..c62f08e 100644 --- a/DeviceHub/common/utils/QKafkaConsumer.cpp +++ b/DeviceHub/common/utils/QKafkaConsumer.cpp @@ -1,4 +1,5 @@ #include "QKafkaConsumer.h" +#include "SettingConfig.h" #include #include @@ -25,6 +26,14 @@ int QKafkaConsumer::createConsumer() { int ret = conf->set("metadata.broker.list", brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } + if (ret != RdKafka::Conf::CONF_OK) { std::cerr << "RdKafka conf set brokerlist failed :" << errStr.c_str() << std::endl; diff --git a/DeviceHub/common/utils/QKafkaProducer.cpp b/DeviceHub/common/utils/QKafkaProducer.cpp index c0db128..109e581 100644 --- a/DeviceHub/common/utils/QKafkaProducer.cpp +++ b/DeviceHub/common/utils/QKafkaProducer.cpp @@ -1,4 +1,5 @@ #include "QKafkaProducer.h" +#include "SettingConfig.h" #include QKafkaProducer::QKafkaProducer(QObject *parent) : QObject(parent) @@ -20,6 +21,13 @@ { int result; result = this->conf->set("bootstrap.servers", this->brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } if (result != RdKafka::Conf::CONF_OK) { diff --git a/DeviceHub/common/utils/QSerialPortUtil.cpp b/DeviceHub/common/utils/QSerialPortUtil.cpp index 9de0047..a5e07ac 100644 --- a/DeviceHub/common/utils/QSerialPortUtil.cpp +++ b/DeviceHub/common/utils/QSerialPortUtil.cpp @@ -25,6 +25,8 @@ open = serial.open(QIODevice::ReadWrite); + std::cout << portName.toStdString() << " " << QString::number(baudRate).toStdString() << " " << open << std::endl; + if (open == true) { // mock data received per second diff --git a/DeviceHub/common/utils/SettingConfig.cpp b/DeviceHub/common/utils/SettingConfig.cpp index 6f17295..ea27d43 100644 --- a/DeviceHub/common/utils/SettingConfig.cpp +++ b/DeviceHub/common/utils/SettingConfig.cpp @@ -14,6 +14,9 @@ KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); KAFKA_CMD_TOPIC = getProperty("kafka", "cmdTopic").toString(); KAFKA_CMDCB_TOPIC = getProperty("kafka", "cmdcbTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "saslUsername").toString(); + SASL_PASSWORD = getProperty("kafka", "saslPassword").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/DeviceHub/common/utils/SettingConfig.h b/DeviceHub/common/utils/SettingConfig.h index c50bcc0..f6cc2af 100644 --- a/DeviceHub/common/utils/SettingConfig.h +++ b/DeviceHub/common/utils/SettingConfig.h @@ -36,6 +36,9 @@ QString KAFKA_DATA_TOPIC; QString KAFKA_CMD_TOPIC; QString KAFKA_CMDCB_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/DeviceHub/conf/config.ini b/DeviceHub/conf/config.ini index 64e57ba..ad7cb35 100644 --- a/DeviceHub/conf/config.ini +++ b/DeviceHub/conf/config.ini @@ -21,4 +21,4 @@ baseUrl="http://111.198.10.15:11410" [log] -basePath="/home/admin/Qt/ZXSSCJ-Release/DevStatus/logs/" +basePath="/home/admin/Qt/ZXSSCJ-Release/DeviceHub/logs/" diff --git a/DeviceHub/device/BCodeTerminal.cpp b/DeviceHub/device/BCodeTerminal.cpp index 1e852a9..5d8ec7f 100644 --- a/DeviceHub/device/BCodeTerminal.cpp +++ b/DeviceHub/device/BCodeTerminal.cpp @@ -72,7 +72,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -84,7 +84,7 @@ } } -void BCodeTerminal::afterFramePhase(DeviceFrameBaseDto * frameDto) +void BCodeTerminal::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/BCodeTerminal.h b/DeviceHub/device/BCodeTerminal.h index f39ab6e..d823431 100644 --- a/DeviceHub/device/BCodeTerminal.h +++ b/DeviceHub/device/BCodeTerminal.h @@ -15,7 +15,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void afterFrameParse(DeviceFrameBaseDto * frameDto); void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/DeviceBase.cpp b/DeviceHub/device/DeviceBase.cpp index 06cfddd..dc8d791 100644 --- a/DeviceHub/device/DeviceBase.cpp +++ b/DeviceHub/device/DeviceBase.cpp @@ -1,10 +1,10 @@ #include "DeviceBase.h" -//#include "FrequencyTuning.h" -//#include "SignalGenerator.h" -//#include "TimeSwitcher.h" -//#include "FreqSwitcher.h" -//#include "BCodeTerminal.h" -//#include "TimeReplicator.h" +#include "FrequencyTuning.h" +#include "SignalGenerator.h" +#include "TimeSwitcher.h" +#include "FreqSwitcher.h" +#include "BCodeTerminal.h" +#include "TimeReplicator.h" #include "FreqReplicator.h" #include @@ -42,25 +42,25 @@ DeviceBase * DeviceBase::deviceFactory(QString deviceType, QObject * parent) { DeviceBase * base = 0; -// if (deviceType == "03") -// { -// base = new FrequencyTuning(parent); -// } else if (deviceType == "04") -// { -// base = new SignalGenerator(parent); -// } else if (deviceType == "05") -// { -// base = new TimeSwitcher(parent); -// } else if (deviceType == "06") -// { -// base = new FreqSwitcher(parent); -// } else if (deviceType == "07") -// { -// base = new BCodeTerminal(parent); -// } else if (deviceType == "09") -// { -// base = new TimeReplicator(parent); -// } else + if (deviceType == "03") + { + base = new FrequencyTuning(parent); + } else if (deviceType == "04") + { + base = new SignalGenerator(parent); + } else if (deviceType == "05") + { + base = new TimeSwitcher(parent); + } else if (deviceType == "06") + { + base = new FreqSwitcher(parent); + } else if (deviceType == "07") + { + base = new BCodeTerminal(parent); + } else if (deviceType == "09") + { + base = new TimeReplicator(parent); + } else if (deviceType == "10") { base = new FreqReplicator(parent); @@ -76,7 +76,12 @@ void DeviceBase::initSerialPort() { - this->serialUtil.openSerialPort(this->comName, this->baudRate); + QStringList comNameList = this->comName.split(","); + this->serialUtil.openSerialPort(comNameList.at(0), this->baudRate); + if (comNameList.size() == 2) + { + this->serialUtilB.openSerialPort(comNameList.at(1), this->baudRate); + } } void DeviceBase::sendDataToSerial(QByteArray data) diff --git a/DeviceHub/device/DeviceBase.h b/DeviceHub/device/DeviceBase.h index e06bee3..77955aa 100644 --- a/DeviceHub/device/DeviceBase.h +++ b/DeviceHub/device/DeviceBase.h @@ -3,7 +3,7 @@ #include #include "common/utils/QSerialPortUtil.h" -//#include "common/utils/QKafkaProducer.h" +#include "common/utils/QKafkaProducer.h" #include "common/utils/QByteUtil.h" #include "common/utils/QLogUtil.h" #include "common/utils/SettingConfig.h" @@ -29,7 +29,7 @@ void initSerialPort(); bool isSerialOpen(); virtual void sendDataToSerial(QByteArray data); - virtual void afterFramePhase(DeviceFrameBaseDto * frameDto) = 0; + virtual void afterFrameParse(DeviceFrameBaseDto * frameDto) = 0; virtual void mockReceivData() = 0; @@ -43,8 +43,10 @@ QString devType; QSerialPortUtil serialUtil; -// QKafkaProducer kafkaProducer; + QSerialPortUtil serialUtilB; // serial port 2 + QKafkaProducer kafkaProducer; QByteArray dataBuff; + QByteArray dataBuffB; }; #endif // DEVICEBASE_H diff --git a/DeviceHub/device/FreqReplicator.cpp b/DeviceHub/device/FreqReplicator.cpp index ea50664..a8d033b 100644 --- a/DeviceHub/device/FreqReplicator.cpp +++ b/DeviceHub/device/FreqReplicator.cpp @@ -8,13 +8,15 @@ this->devType = "10"; connect(&this->serialUtil, &QSerialPortUtil::dataRecieved, this, &FreqReplicator::dataReceivedHandler); + connect(&this->serialUtilB, &QSerialPortUtil::dataRecieved, + this, &FreqReplicator::dataBReceivedHandler); connect(this, &FreqReplicator::sendDataToDraw, ((DeviceHubWindow *)this->parent())->freqRepForm, &FreqReplicatorForm::drawDeviceFrameOnForm); -// kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); -// kafkaProducer.createProducer(); + kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); + kafkaProducer.createProducer(); this->protocol = DeviceProtocolBase::deviceProtocolFactory(devType); } @@ -30,7 +32,7 @@ QByteArray buffer; // 频率信号放大器 - buffer = QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB"); + buffer.append(QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB")); buffer.append(QByteUtil::hexStringToBytes("AA550015020001000101010101010101010101010101010101E8")); this->dataReceivedHandler(buffer); @@ -45,40 +47,55 @@ if (frameList.size() > 0) { this->dataBuff.clear(); - for (int i = 0; i < frameList.size(); i++) - { - QByteArray frameByte = frameList.at(i); - - int frameType = protocol->checkFrame(frameByte); - DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); - if (frameDto != nullptr) - { - // ★解析成数据对象 - bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); - - // 解析成功 - if (parse == true) - { - QDateTime now = QDateTime::currentDateTime(); - frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); - frameDto->milisecond = now.toMSecsSinceEpoch(); - frameDto->rawFrame = frameByte; - - frameDto->devCode = devCode; - - this->afterFramePhase(frameDto); - } - - // 在此处释放内存,不影响后续显示 - // 不在此处释放内存则会导致内存持续增加 - // 具体原因不明 - delete frameDto; - } - } + frameParse(frameList); } } -void FreqReplicator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FreqReplicator::dataBReceivedHandler(QByteArray data) +{ + this->dataBuffB.append(data); + QList frameListB = protocol->extractFrameList(this->dataBuffB); + if (frameListB.size() > 0) + { + this->dataBuffB.clear(); + frameParse(frameListB); + } +} + +void FreqReplicator::frameParse(QList frameList) +{ + for (int i = 0; i < frameList.size(); i++) + { + QByteArray frameByte = frameList.at(i); + + int frameType = protocol->checkFrame(frameByte); + DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); + if (frameDto != nullptr) + { + // ★解析成数据对象 + bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); + + // 解析成功 + if (parse == true) + { + QDateTime now = QDateTime::currentDateTime(); + frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); + frameDto->milisecond = now.toMSecsSinceEpoch(); + frameDto->rawFrame = frameByte; + + frameDto->devCode = devCode; + + this->afterFrameParse(frameDto); + } + + // 在此处释放内存,不影响后续显示 + // 不在此处释放内存则会导致内存持续增加 + // 具体原因不明 + delete frameDto; + } + } +} +void FreqReplicator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << QByteUtil::binToHexString(frameDto->rawFrame).toStdString() << std::endl; @@ -101,7 +118,7 @@ QJsonObject jsonObj = frameDto->toJSON(); jsonObj.insert("clientId", SettingConfig::getInstance().CLIENT_ID); jsonObj.insert("deviceId", deviceId); -// kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); + kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); } // 4. 在界面上简单显示相差数据结果 diff --git a/DeviceHub/device/FreqReplicator.h b/DeviceHub/device/FreqReplicator.h index 5702c28..716f800 100644 --- a/DeviceHub/device/FreqReplicator.h +++ b/DeviceHub/device/FreqReplicator.h @@ -15,13 +15,15 @@ void mockReceivData(); - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void frameParse(QList frameList); + void afterFrameParse(DeviceFrameBaseDto * frameDto); signals: void sendDataToDraw(DeviceFrameBaseDto * frameData); public slots: void dataReceivedHandler(QByteArray data); + void dataBReceivedHandler(QByteArray data); }; #endif // FREQREPLICATOR_H diff --git a/DeviceHub/device/FreqSwitcher.cpp b/DeviceHub/device/FreqSwitcher.cpp index 3873c13..5587395 100644 --- a/DeviceHub/device/FreqSwitcher.cpp +++ b/DeviceHub/device/FreqSwitcher.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void FreqSwitcher::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FreqSwitcher::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/FreqSwitcher.h b/DeviceHub/device/FreqSwitcher.h index fd19204..9c17824 100644 --- a/DeviceHub/device/FreqSwitcher.h +++ b/DeviceHub/device/FreqSwitcher.h @@ -16,7 +16,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/FrequencyTuning.cpp b/DeviceHub/device/FrequencyTuning.cpp index e2038c2..0a19747 100644 --- a/DeviceHub/device/FrequencyTuning.cpp +++ b/DeviceHub/device/FrequencyTuning.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void FrequencyTuning::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FrequencyTuning::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/FrequencyTuning.h b/DeviceHub/device/FrequencyTuning.h index af49041..f8d2b91 100644 --- a/DeviceHub/device/FrequencyTuning.h +++ b/DeviceHub/device/FrequencyTuning.h @@ -16,7 +16,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.h b/DeviceHub/DeviceHubWindow.h index 62b4055..cb5875a 100644 --- a/DeviceHub/DeviceHubWindow.h +++ b/DeviceHub/DeviceHubWindow.h @@ -5,7 +5,7 @@ #include #include "common/HttpRequestController.h" -//#include "common/utils/QKafkaConsumer.h" +#include "common/utils/QKafkaConsumer.h" #include "device/DeviceBase.h" #include "FrequencyTuningForm.h" #include "SignalGeneratorForm.h" @@ -32,7 +32,7 @@ int currentDevIndex; QMap> allTypeDevList; -// QKafkaConsumer * kafkaConsumer; + QKafkaConsumer * kafkaConsumer; QComboBox * getDevTypeSelect(); QComboBox * getDevSelect(); diff --git a/DeviceHub/FreqReplicatorForm.cpp b/DeviceHub/FreqReplicatorForm.cpp index e52ab24..bda0658 100644 --- a/DeviceHub/FreqReplicatorForm.cpp +++ b/DeviceHub/FreqReplicatorForm.cpp @@ -29,6 +29,12 @@ void FreqReplicatorForm::drawDeviceFrameOnForm(DeviceFrameBaseDto * frameData) { + QString currentDevCode = ((DeviceHubWindow *)this->parent()->parent())->getDevSelect()->currentData().toJsonObject().find("deviceNo")->toString(); + if (currentDevCode != frameData->devCode) + { + return; + } + // 当前显示的设备编号 if (frameData->frameType == "1001") { @@ -44,5 +50,17 @@ doc.setArray(dataObj.find("outValid")->toArray()); ui->frOutStatus->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + } else if (frameData->frameType == "1002") + { + FreqReplicatorStatusDto * statusFrameDto = (FreqReplicatorStatusDto *) frameData; + + QJsonObject dataObj = statusFrameDto->toJSON().find("data")->toObject(); + QJsonDocument doc; + + doc.setArray(dataObj.find("inValid")->toArray()); + ui->frInStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + + doc.setArray(dataObj.find("outValid")->toArray()); + ui->frOutStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); } } diff --git a/DeviceHub/FreqReplicatorForm.ui b/DeviceHub/FreqReplicatorForm.ui index cbc4ffb..2f6c15d 100644 --- a/DeviceHub/FreqReplicatorForm.ui +++ b/DeviceHub/FreqReplicatorForm.ui @@ -129,7 +129,7 @@ - 输出监测 + 输出监测AB @@ -148,7 +148,7 @@ - 输入状态 + 输入状态AB @@ -170,6 +170,64 @@ + + + + 540 + 130 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输入状态CD + + + + + + 620 + 130 + 200 + 30 + + + + + + + 100 + 230 + 400 + 30 + + + + + + + 20 + 230 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输出监测CD + + diff --git a/DeviceHub/common/common.pri b/DeviceHub/common/common.pri index feeba36..86259e8 100644 --- a/DeviceHub/common/common.pri +++ b/DeviceHub/common/common.pri @@ -3,8 +3,8 @@ SOURCES += $$PWD/utils/QByteUtil.cpp SOURCES += $$PWD/utils/QSerialPortUtil.cpp SOURCES += $$PWD/utils/QLogUtil.cpp -#SOURCES += $$PWD/utils/QKafkaConsumer.cpp -#SOURCES += $$PWD/utils/QKafkaProducer.cpp +SOURCES += $$PWD/utils/QKafkaConsumer.cpp +SOURCES += $$PWD/utils/QKafkaProducer.cpp SOURCES += $$PWD/utils/HttpRequestUtil.cpp SOURCES += $$PWD/utils/MD5.cpp SOURCES += $$PWD/HttpRequestController.cpp @@ -13,8 +13,8 @@ HEADERS += $$PWD/utils/QByteUtil.h HEADERS += $$PWD/utils/QSerialPortUtil.h HEADERS += $$PWD/utils/QLogUtil.h -#HEADERS += $$PWD/utils/QKafkaConsumer.h -#HEADERS += $$PWD/utils/QKafkaProducer.h +HEADERS += $$PWD/utils/QKafkaConsumer.h +HEADERS += $$PWD/utils/QKafkaProducer.h HEADERS += $$PWD/utils/HttpRequestUtil.h HEADERS += $$PWD/utils/DefHead.h HEADERS += $$PWD/utils/MD5.h diff --git a/DeviceHub/common/utils/QKafkaConsumer.cpp b/DeviceHub/common/utils/QKafkaConsumer.cpp index b3cb9fd..c62f08e 100644 --- a/DeviceHub/common/utils/QKafkaConsumer.cpp +++ b/DeviceHub/common/utils/QKafkaConsumer.cpp @@ -1,4 +1,5 @@ #include "QKafkaConsumer.h" +#include "SettingConfig.h" #include #include @@ -25,6 +26,14 @@ int QKafkaConsumer::createConsumer() { int ret = conf->set("metadata.broker.list", brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } + if (ret != RdKafka::Conf::CONF_OK) { std::cerr << "RdKafka conf set brokerlist failed :" << errStr.c_str() << std::endl; diff --git a/DeviceHub/common/utils/QKafkaProducer.cpp b/DeviceHub/common/utils/QKafkaProducer.cpp index c0db128..109e581 100644 --- a/DeviceHub/common/utils/QKafkaProducer.cpp +++ b/DeviceHub/common/utils/QKafkaProducer.cpp @@ -1,4 +1,5 @@ #include "QKafkaProducer.h" +#include "SettingConfig.h" #include QKafkaProducer::QKafkaProducer(QObject *parent) : QObject(parent) @@ -20,6 +21,13 @@ { int result; result = this->conf->set("bootstrap.servers", this->brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } if (result != RdKafka::Conf::CONF_OK) { diff --git a/DeviceHub/common/utils/QSerialPortUtil.cpp b/DeviceHub/common/utils/QSerialPortUtil.cpp index 9de0047..a5e07ac 100644 --- a/DeviceHub/common/utils/QSerialPortUtil.cpp +++ b/DeviceHub/common/utils/QSerialPortUtil.cpp @@ -25,6 +25,8 @@ open = serial.open(QIODevice::ReadWrite); + std::cout << portName.toStdString() << " " << QString::number(baudRate).toStdString() << " " << open << std::endl; + if (open == true) { // mock data received per second diff --git a/DeviceHub/common/utils/SettingConfig.cpp b/DeviceHub/common/utils/SettingConfig.cpp index 6f17295..ea27d43 100644 --- a/DeviceHub/common/utils/SettingConfig.cpp +++ b/DeviceHub/common/utils/SettingConfig.cpp @@ -14,6 +14,9 @@ KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); KAFKA_CMD_TOPIC = getProperty("kafka", "cmdTopic").toString(); KAFKA_CMDCB_TOPIC = getProperty("kafka", "cmdcbTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "saslUsername").toString(); + SASL_PASSWORD = getProperty("kafka", "saslPassword").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/DeviceHub/common/utils/SettingConfig.h b/DeviceHub/common/utils/SettingConfig.h index c50bcc0..f6cc2af 100644 --- a/DeviceHub/common/utils/SettingConfig.h +++ b/DeviceHub/common/utils/SettingConfig.h @@ -36,6 +36,9 @@ QString KAFKA_DATA_TOPIC; QString KAFKA_CMD_TOPIC; QString KAFKA_CMDCB_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/DeviceHub/conf/config.ini b/DeviceHub/conf/config.ini index 64e57ba..ad7cb35 100644 --- a/DeviceHub/conf/config.ini +++ b/DeviceHub/conf/config.ini @@ -21,4 +21,4 @@ baseUrl="http://111.198.10.15:11410" [log] -basePath="/home/admin/Qt/ZXSSCJ-Release/DevStatus/logs/" +basePath="/home/admin/Qt/ZXSSCJ-Release/DeviceHub/logs/" diff --git a/DeviceHub/device/BCodeTerminal.cpp b/DeviceHub/device/BCodeTerminal.cpp index 1e852a9..5d8ec7f 100644 --- a/DeviceHub/device/BCodeTerminal.cpp +++ b/DeviceHub/device/BCodeTerminal.cpp @@ -72,7 +72,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -84,7 +84,7 @@ } } -void BCodeTerminal::afterFramePhase(DeviceFrameBaseDto * frameDto) +void BCodeTerminal::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/BCodeTerminal.h b/DeviceHub/device/BCodeTerminal.h index f39ab6e..d823431 100644 --- a/DeviceHub/device/BCodeTerminal.h +++ b/DeviceHub/device/BCodeTerminal.h @@ -15,7 +15,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void afterFrameParse(DeviceFrameBaseDto * frameDto); void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/DeviceBase.cpp b/DeviceHub/device/DeviceBase.cpp index 06cfddd..dc8d791 100644 --- a/DeviceHub/device/DeviceBase.cpp +++ b/DeviceHub/device/DeviceBase.cpp @@ -1,10 +1,10 @@ #include "DeviceBase.h" -//#include "FrequencyTuning.h" -//#include "SignalGenerator.h" -//#include "TimeSwitcher.h" -//#include "FreqSwitcher.h" -//#include "BCodeTerminal.h" -//#include "TimeReplicator.h" +#include "FrequencyTuning.h" +#include "SignalGenerator.h" +#include "TimeSwitcher.h" +#include "FreqSwitcher.h" +#include "BCodeTerminal.h" +#include "TimeReplicator.h" #include "FreqReplicator.h" #include @@ -42,25 +42,25 @@ DeviceBase * DeviceBase::deviceFactory(QString deviceType, QObject * parent) { DeviceBase * base = 0; -// if (deviceType == "03") -// { -// base = new FrequencyTuning(parent); -// } else if (deviceType == "04") -// { -// base = new SignalGenerator(parent); -// } else if (deviceType == "05") -// { -// base = new TimeSwitcher(parent); -// } else if (deviceType == "06") -// { -// base = new FreqSwitcher(parent); -// } else if (deviceType == "07") -// { -// base = new BCodeTerminal(parent); -// } else if (deviceType == "09") -// { -// base = new TimeReplicator(parent); -// } else + if (deviceType == "03") + { + base = new FrequencyTuning(parent); + } else if (deviceType == "04") + { + base = new SignalGenerator(parent); + } else if (deviceType == "05") + { + base = new TimeSwitcher(parent); + } else if (deviceType == "06") + { + base = new FreqSwitcher(parent); + } else if (deviceType == "07") + { + base = new BCodeTerminal(parent); + } else if (deviceType == "09") + { + base = new TimeReplicator(parent); + } else if (deviceType == "10") { base = new FreqReplicator(parent); @@ -76,7 +76,12 @@ void DeviceBase::initSerialPort() { - this->serialUtil.openSerialPort(this->comName, this->baudRate); + QStringList comNameList = this->comName.split(","); + this->serialUtil.openSerialPort(comNameList.at(0), this->baudRate); + if (comNameList.size() == 2) + { + this->serialUtilB.openSerialPort(comNameList.at(1), this->baudRate); + } } void DeviceBase::sendDataToSerial(QByteArray data) diff --git a/DeviceHub/device/DeviceBase.h b/DeviceHub/device/DeviceBase.h index e06bee3..77955aa 100644 --- a/DeviceHub/device/DeviceBase.h +++ b/DeviceHub/device/DeviceBase.h @@ -3,7 +3,7 @@ #include #include "common/utils/QSerialPortUtil.h" -//#include "common/utils/QKafkaProducer.h" +#include "common/utils/QKafkaProducer.h" #include "common/utils/QByteUtil.h" #include "common/utils/QLogUtil.h" #include "common/utils/SettingConfig.h" @@ -29,7 +29,7 @@ void initSerialPort(); bool isSerialOpen(); virtual void sendDataToSerial(QByteArray data); - virtual void afterFramePhase(DeviceFrameBaseDto * frameDto) = 0; + virtual void afterFrameParse(DeviceFrameBaseDto * frameDto) = 0; virtual void mockReceivData() = 0; @@ -43,8 +43,10 @@ QString devType; QSerialPortUtil serialUtil; -// QKafkaProducer kafkaProducer; + QSerialPortUtil serialUtilB; // serial port 2 + QKafkaProducer kafkaProducer; QByteArray dataBuff; + QByteArray dataBuffB; }; #endif // DEVICEBASE_H diff --git a/DeviceHub/device/FreqReplicator.cpp b/DeviceHub/device/FreqReplicator.cpp index ea50664..a8d033b 100644 --- a/DeviceHub/device/FreqReplicator.cpp +++ b/DeviceHub/device/FreqReplicator.cpp @@ -8,13 +8,15 @@ this->devType = "10"; connect(&this->serialUtil, &QSerialPortUtil::dataRecieved, this, &FreqReplicator::dataReceivedHandler); + connect(&this->serialUtilB, &QSerialPortUtil::dataRecieved, + this, &FreqReplicator::dataBReceivedHandler); connect(this, &FreqReplicator::sendDataToDraw, ((DeviceHubWindow *)this->parent())->freqRepForm, &FreqReplicatorForm::drawDeviceFrameOnForm); -// kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); -// kafkaProducer.createProducer(); + kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); + kafkaProducer.createProducer(); this->protocol = DeviceProtocolBase::deviceProtocolFactory(devType); } @@ -30,7 +32,7 @@ QByteArray buffer; // 频率信号放大器 - buffer = QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB"); + buffer.append(QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB")); buffer.append(QByteUtil::hexStringToBytes("AA550015020001000101010101010101010101010101010101E8")); this->dataReceivedHandler(buffer); @@ -45,40 +47,55 @@ if (frameList.size() > 0) { this->dataBuff.clear(); - for (int i = 0; i < frameList.size(); i++) - { - QByteArray frameByte = frameList.at(i); - - int frameType = protocol->checkFrame(frameByte); - DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); - if (frameDto != nullptr) - { - // ★解析成数据对象 - bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); - - // 解析成功 - if (parse == true) - { - QDateTime now = QDateTime::currentDateTime(); - frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); - frameDto->milisecond = now.toMSecsSinceEpoch(); - frameDto->rawFrame = frameByte; - - frameDto->devCode = devCode; - - this->afterFramePhase(frameDto); - } - - // 在此处释放内存,不影响后续显示 - // 不在此处释放内存则会导致内存持续增加 - // 具体原因不明 - delete frameDto; - } - } + frameParse(frameList); } } -void FreqReplicator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FreqReplicator::dataBReceivedHandler(QByteArray data) +{ + this->dataBuffB.append(data); + QList frameListB = protocol->extractFrameList(this->dataBuffB); + if (frameListB.size() > 0) + { + this->dataBuffB.clear(); + frameParse(frameListB); + } +} + +void FreqReplicator::frameParse(QList frameList) +{ + for (int i = 0; i < frameList.size(); i++) + { + QByteArray frameByte = frameList.at(i); + + int frameType = protocol->checkFrame(frameByte); + DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); + if (frameDto != nullptr) + { + // ★解析成数据对象 + bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); + + // 解析成功 + if (parse == true) + { + QDateTime now = QDateTime::currentDateTime(); + frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); + frameDto->milisecond = now.toMSecsSinceEpoch(); + frameDto->rawFrame = frameByte; + + frameDto->devCode = devCode; + + this->afterFrameParse(frameDto); + } + + // 在此处释放内存,不影响后续显示 + // 不在此处释放内存则会导致内存持续增加 + // 具体原因不明 + delete frameDto; + } + } +} +void FreqReplicator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << QByteUtil::binToHexString(frameDto->rawFrame).toStdString() << std::endl; @@ -101,7 +118,7 @@ QJsonObject jsonObj = frameDto->toJSON(); jsonObj.insert("clientId", SettingConfig::getInstance().CLIENT_ID); jsonObj.insert("deviceId", deviceId); -// kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); + kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); } // 4. 在界面上简单显示相差数据结果 diff --git a/DeviceHub/device/FreqReplicator.h b/DeviceHub/device/FreqReplicator.h index 5702c28..716f800 100644 --- a/DeviceHub/device/FreqReplicator.h +++ b/DeviceHub/device/FreqReplicator.h @@ -15,13 +15,15 @@ void mockReceivData(); - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void frameParse(QList frameList); + void afterFrameParse(DeviceFrameBaseDto * frameDto); signals: void sendDataToDraw(DeviceFrameBaseDto * frameData); public slots: void dataReceivedHandler(QByteArray data); + void dataBReceivedHandler(QByteArray data); }; #endif // FREQREPLICATOR_H diff --git a/DeviceHub/device/FreqSwitcher.cpp b/DeviceHub/device/FreqSwitcher.cpp index 3873c13..5587395 100644 --- a/DeviceHub/device/FreqSwitcher.cpp +++ b/DeviceHub/device/FreqSwitcher.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void FreqSwitcher::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FreqSwitcher::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/FreqSwitcher.h b/DeviceHub/device/FreqSwitcher.h index fd19204..9c17824 100644 --- a/DeviceHub/device/FreqSwitcher.h +++ b/DeviceHub/device/FreqSwitcher.h @@ -16,7 +16,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/FrequencyTuning.cpp b/DeviceHub/device/FrequencyTuning.cpp index e2038c2..0a19747 100644 --- a/DeviceHub/device/FrequencyTuning.cpp +++ b/DeviceHub/device/FrequencyTuning.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void FrequencyTuning::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FrequencyTuning::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/FrequencyTuning.h b/DeviceHub/device/FrequencyTuning.h index af49041..f8d2b91 100644 --- a/DeviceHub/device/FrequencyTuning.h +++ b/DeviceHub/device/FrequencyTuning.h @@ -16,7 +16,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/SignalGenerator.cpp b/DeviceHub/device/SignalGenerator.cpp index e99ddc1..0d2d909 100644 --- a/DeviceHub/device/SignalGenerator.cpp +++ b/DeviceHub/device/SignalGenerator.cpp @@ -78,7 +78,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -90,7 +90,7 @@ } } -void SignalGenerator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void SignalGenerator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.h b/DeviceHub/DeviceHubWindow.h index 62b4055..cb5875a 100644 --- a/DeviceHub/DeviceHubWindow.h +++ b/DeviceHub/DeviceHubWindow.h @@ -5,7 +5,7 @@ #include #include "common/HttpRequestController.h" -//#include "common/utils/QKafkaConsumer.h" +#include "common/utils/QKafkaConsumer.h" #include "device/DeviceBase.h" #include "FrequencyTuningForm.h" #include "SignalGeneratorForm.h" @@ -32,7 +32,7 @@ int currentDevIndex; QMap> allTypeDevList; -// QKafkaConsumer * kafkaConsumer; + QKafkaConsumer * kafkaConsumer; QComboBox * getDevTypeSelect(); QComboBox * getDevSelect(); diff --git a/DeviceHub/FreqReplicatorForm.cpp b/DeviceHub/FreqReplicatorForm.cpp index e52ab24..bda0658 100644 --- a/DeviceHub/FreqReplicatorForm.cpp +++ b/DeviceHub/FreqReplicatorForm.cpp @@ -29,6 +29,12 @@ void FreqReplicatorForm::drawDeviceFrameOnForm(DeviceFrameBaseDto * frameData) { + QString currentDevCode = ((DeviceHubWindow *)this->parent()->parent())->getDevSelect()->currentData().toJsonObject().find("deviceNo")->toString(); + if (currentDevCode != frameData->devCode) + { + return; + } + // 当前显示的设备编号 if (frameData->frameType == "1001") { @@ -44,5 +50,17 @@ doc.setArray(dataObj.find("outValid")->toArray()); ui->frOutStatus->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + } else if (frameData->frameType == "1002") + { + FreqReplicatorStatusDto * statusFrameDto = (FreqReplicatorStatusDto *) frameData; + + QJsonObject dataObj = statusFrameDto->toJSON().find("data")->toObject(); + QJsonDocument doc; + + doc.setArray(dataObj.find("inValid")->toArray()); + ui->frInStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + + doc.setArray(dataObj.find("outValid")->toArray()); + ui->frOutStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); } } diff --git a/DeviceHub/FreqReplicatorForm.ui b/DeviceHub/FreqReplicatorForm.ui index cbc4ffb..2f6c15d 100644 --- a/DeviceHub/FreqReplicatorForm.ui +++ b/DeviceHub/FreqReplicatorForm.ui @@ -129,7 +129,7 @@ - 输出监测 + 输出监测AB @@ -148,7 +148,7 @@ - 输入状态 + 输入状态AB @@ -170,6 +170,64 @@ + + + + 540 + 130 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输入状态CD + + + + + + 620 + 130 + 200 + 30 + + + + + + + 100 + 230 + 400 + 30 + + + + + + + 20 + 230 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输出监测CD + + diff --git a/DeviceHub/common/common.pri b/DeviceHub/common/common.pri index feeba36..86259e8 100644 --- a/DeviceHub/common/common.pri +++ b/DeviceHub/common/common.pri @@ -3,8 +3,8 @@ SOURCES += $$PWD/utils/QByteUtil.cpp SOURCES += $$PWD/utils/QSerialPortUtil.cpp SOURCES += $$PWD/utils/QLogUtil.cpp -#SOURCES += $$PWD/utils/QKafkaConsumer.cpp -#SOURCES += $$PWD/utils/QKafkaProducer.cpp +SOURCES += $$PWD/utils/QKafkaConsumer.cpp +SOURCES += $$PWD/utils/QKafkaProducer.cpp SOURCES += $$PWD/utils/HttpRequestUtil.cpp SOURCES += $$PWD/utils/MD5.cpp SOURCES += $$PWD/HttpRequestController.cpp @@ -13,8 +13,8 @@ HEADERS += $$PWD/utils/QByteUtil.h HEADERS += $$PWD/utils/QSerialPortUtil.h HEADERS += $$PWD/utils/QLogUtil.h -#HEADERS += $$PWD/utils/QKafkaConsumer.h -#HEADERS += $$PWD/utils/QKafkaProducer.h +HEADERS += $$PWD/utils/QKafkaConsumer.h +HEADERS += $$PWD/utils/QKafkaProducer.h HEADERS += $$PWD/utils/HttpRequestUtil.h HEADERS += $$PWD/utils/DefHead.h HEADERS += $$PWD/utils/MD5.h diff --git a/DeviceHub/common/utils/QKafkaConsumer.cpp b/DeviceHub/common/utils/QKafkaConsumer.cpp index b3cb9fd..c62f08e 100644 --- a/DeviceHub/common/utils/QKafkaConsumer.cpp +++ b/DeviceHub/common/utils/QKafkaConsumer.cpp @@ -1,4 +1,5 @@ #include "QKafkaConsumer.h" +#include "SettingConfig.h" #include #include @@ -25,6 +26,14 @@ int QKafkaConsumer::createConsumer() { int ret = conf->set("metadata.broker.list", brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } + if (ret != RdKafka::Conf::CONF_OK) { std::cerr << "RdKafka conf set brokerlist failed :" << errStr.c_str() << std::endl; diff --git a/DeviceHub/common/utils/QKafkaProducer.cpp b/DeviceHub/common/utils/QKafkaProducer.cpp index c0db128..109e581 100644 --- a/DeviceHub/common/utils/QKafkaProducer.cpp +++ b/DeviceHub/common/utils/QKafkaProducer.cpp @@ -1,4 +1,5 @@ #include "QKafkaProducer.h" +#include "SettingConfig.h" #include QKafkaProducer::QKafkaProducer(QObject *parent) : QObject(parent) @@ -20,6 +21,13 @@ { int result; result = this->conf->set("bootstrap.servers", this->brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } if (result != RdKafka::Conf::CONF_OK) { diff --git a/DeviceHub/common/utils/QSerialPortUtil.cpp b/DeviceHub/common/utils/QSerialPortUtil.cpp index 9de0047..a5e07ac 100644 --- a/DeviceHub/common/utils/QSerialPortUtil.cpp +++ b/DeviceHub/common/utils/QSerialPortUtil.cpp @@ -25,6 +25,8 @@ open = serial.open(QIODevice::ReadWrite); + std::cout << portName.toStdString() << " " << QString::number(baudRate).toStdString() << " " << open << std::endl; + if (open == true) { // mock data received per second diff --git a/DeviceHub/common/utils/SettingConfig.cpp b/DeviceHub/common/utils/SettingConfig.cpp index 6f17295..ea27d43 100644 --- a/DeviceHub/common/utils/SettingConfig.cpp +++ b/DeviceHub/common/utils/SettingConfig.cpp @@ -14,6 +14,9 @@ KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); KAFKA_CMD_TOPIC = getProperty("kafka", "cmdTopic").toString(); KAFKA_CMDCB_TOPIC = getProperty("kafka", "cmdcbTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "saslUsername").toString(); + SASL_PASSWORD = getProperty("kafka", "saslPassword").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/DeviceHub/common/utils/SettingConfig.h b/DeviceHub/common/utils/SettingConfig.h index c50bcc0..f6cc2af 100644 --- a/DeviceHub/common/utils/SettingConfig.h +++ b/DeviceHub/common/utils/SettingConfig.h @@ -36,6 +36,9 @@ QString KAFKA_DATA_TOPIC; QString KAFKA_CMD_TOPIC; QString KAFKA_CMDCB_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/DeviceHub/conf/config.ini b/DeviceHub/conf/config.ini index 64e57ba..ad7cb35 100644 --- a/DeviceHub/conf/config.ini +++ b/DeviceHub/conf/config.ini @@ -21,4 +21,4 @@ baseUrl="http://111.198.10.15:11410" [log] -basePath="/home/admin/Qt/ZXSSCJ-Release/DevStatus/logs/" +basePath="/home/admin/Qt/ZXSSCJ-Release/DeviceHub/logs/" diff --git a/DeviceHub/device/BCodeTerminal.cpp b/DeviceHub/device/BCodeTerminal.cpp index 1e852a9..5d8ec7f 100644 --- a/DeviceHub/device/BCodeTerminal.cpp +++ b/DeviceHub/device/BCodeTerminal.cpp @@ -72,7 +72,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -84,7 +84,7 @@ } } -void BCodeTerminal::afterFramePhase(DeviceFrameBaseDto * frameDto) +void BCodeTerminal::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/BCodeTerminal.h b/DeviceHub/device/BCodeTerminal.h index f39ab6e..d823431 100644 --- a/DeviceHub/device/BCodeTerminal.h +++ b/DeviceHub/device/BCodeTerminal.h @@ -15,7 +15,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void afterFrameParse(DeviceFrameBaseDto * frameDto); void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/DeviceBase.cpp b/DeviceHub/device/DeviceBase.cpp index 06cfddd..dc8d791 100644 --- a/DeviceHub/device/DeviceBase.cpp +++ b/DeviceHub/device/DeviceBase.cpp @@ -1,10 +1,10 @@ #include "DeviceBase.h" -//#include "FrequencyTuning.h" -//#include "SignalGenerator.h" -//#include "TimeSwitcher.h" -//#include "FreqSwitcher.h" -//#include "BCodeTerminal.h" -//#include "TimeReplicator.h" +#include "FrequencyTuning.h" +#include "SignalGenerator.h" +#include "TimeSwitcher.h" +#include "FreqSwitcher.h" +#include "BCodeTerminal.h" +#include "TimeReplicator.h" #include "FreqReplicator.h" #include @@ -42,25 +42,25 @@ DeviceBase * DeviceBase::deviceFactory(QString deviceType, QObject * parent) { DeviceBase * base = 0; -// if (deviceType == "03") -// { -// base = new FrequencyTuning(parent); -// } else if (deviceType == "04") -// { -// base = new SignalGenerator(parent); -// } else if (deviceType == "05") -// { -// base = new TimeSwitcher(parent); -// } else if (deviceType == "06") -// { -// base = new FreqSwitcher(parent); -// } else if (deviceType == "07") -// { -// base = new BCodeTerminal(parent); -// } else if (deviceType == "09") -// { -// base = new TimeReplicator(parent); -// } else + if (deviceType == "03") + { + base = new FrequencyTuning(parent); + } else if (deviceType == "04") + { + base = new SignalGenerator(parent); + } else if (deviceType == "05") + { + base = new TimeSwitcher(parent); + } else if (deviceType == "06") + { + base = new FreqSwitcher(parent); + } else if (deviceType == "07") + { + base = new BCodeTerminal(parent); + } else if (deviceType == "09") + { + base = new TimeReplicator(parent); + } else if (deviceType == "10") { base = new FreqReplicator(parent); @@ -76,7 +76,12 @@ void DeviceBase::initSerialPort() { - this->serialUtil.openSerialPort(this->comName, this->baudRate); + QStringList comNameList = this->comName.split(","); + this->serialUtil.openSerialPort(comNameList.at(0), this->baudRate); + if (comNameList.size() == 2) + { + this->serialUtilB.openSerialPort(comNameList.at(1), this->baudRate); + } } void DeviceBase::sendDataToSerial(QByteArray data) diff --git a/DeviceHub/device/DeviceBase.h b/DeviceHub/device/DeviceBase.h index e06bee3..77955aa 100644 --- a/DeviceHub/device/DeviceBase.h +++ b/DeviceHub/device/DeviceBase.h @@ -3,7 +3,7 @@ #include #include "common/utils/QSerialPortUtil.h" -//#include "common/utils/QKafkaProducer.h" +#include "common/utils/QKafkaProducer.h" #include "common/utils/QByteUtil.h" #include "common/utils/QLogUtil.h" #include "common/utils/SettingConfig.h" @@ -29,7 +29,7 @@ void initSerialPort(); bool isSerialOpen(); virtual void sendDataToSerial(QByteArray data); - virtual void afterFramePhase(DeviceFrameBaseDto * frameDto) = 0; + virtual void afterFrameParse(DeviceFrameBaseDto * frameDto) = 0; virtual void mockReceivData() = 0; @@ -43,8 +43,10 @@ QString devType; QSerialPortUtil serialUtil; -// QKafkaProducer kafkaProducer; + QSerialPortUtil serialUtilB; // serial port 2 + QKafkaProducer kafkaProducer; QByteArray dataBuff; + QByteArray dataBuffB; }; #endif // DEVICEBASE_H diff --git a/DeviceHub/device/FreqReplicator.cpp b/DeviceHub/device/FreqReplicator.cpp index ea50664..a8d033b 100644 --- a/DeviceHub/device/FreqReplicator.cpp +++ b/DeviceHub/device/FreqReplicator.cpp @@ -8,13 +8,15 @@ this->devType = "10"; connect(&this->serialUtil, &QSerialPortUtil::dataRecieved, this, &FreqReplicator::dataReceivedHandler); + connect(&this->serialUtilB, &QSerialPortUtil::dataRecieved, + this, &FreqReplicator::dataBReceivedHandler); connect(this, &FreqReplicator::sendDataToDraw, ((DeviceHubWindow *)this->parent())->freqRepForm, &FreqReplicatorForm::drawDeviceFrameOnForm); -// kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); -// kafkaProducer.createProducer(); + kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); + kafkaProducer.createProducer(); this->protocol = DeviceProtocolBase::deviceProtocolFactory(devType); } @@ -30,7 +32,7 @@ QByteArray buffer; // 频率信号放大器 - buffer = QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB"); + buffer.append(QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB")); buffer.append(QByteUtil::hexStringToBytes("AA550015020001000101010101010101010101010101010101E8")); this->dataReceivedHandler(buffer); @@ -45,40 +47,55 @@ if (frameList.size() > 0) { this->dataBuff.clear(); - for (int i = 0; i < frameList.size(); i++) - { - QByteArray frameByte = frameList.at(i); - - int frameType = protocol->checkFrame(frameByte); - DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); - if (frameDto != nullptr) - { - // ★解析成数据对象 - bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); - - // 解析成功 - if (parse == true) - { - QDateTime now = QDateTime::currentDateTime(); - frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); - frameDto->milisecond = now.toMSecsSinceEpoch(); - frameDto->rawFrame = frameByte; - - frameDto->devCode = devCode; - - this->afterFramePhase(frameDto); - } - - // 在此处释放内存,不影响后续显示 - // 不在此处释放内存则会导致内存持续增加 - // 具体原因不明 - delete frameDto; - } - } + frameParse(frameList); } } -void FreqReplicator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FreqReplicator::dataBReceivedHandler(QByteArray data) +{ + this->dataBuffB.append(data); + QList frameListB = protocol->extractFrameList(this->dataBuffB); + if (frameListB.size() > 0) + { + this->dataBuffB.clear(); + frameParse(frameListB); + } +} + +void FreqReplicator::frameParse(QList frameList) +{ + for (int i = 0; i < frameList.size(); i++) + { + QByteArray frameByte = frameList.at(i); + + int frameType = protocol->checkFrame(frameByte); + DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); + if (frameDto != nullptr) + { + // ★解析成数据对象 + bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); + + // 解析成功 + if (parse == true) + { + QDateTime now = QDateTime::currentDateTime(); + frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); + frameDto->milisecond = now.toMSecsSinceEpoch(); + frameDto->rawFrame = frameByte; + + frameDto->devCode = devCode; + + this->afterFrameParse(frameDto); + } + + // 在此处释放内存,不影响后续显示 + // 不在此处释放内存则会导致内存持续增加 + // 具体原因不明 + delete frameDto; + } + } +} +void FreqReplicator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << QByteUtil::binToHexString(frameDto->rawFrame).toStdString() << std::endl; @@ -101,7 +118,7 @@ QJsonObject jsonObj = frameDto->toJSON(); jsonObj.insert("clientId", SettingConfig::getInstance().CLIENT_ID); jsonObj.insert("deviceId", deviceId); -// kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); + kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); } // 4. 在界面上简单显示相差数据结果 diff --git a/DeviceHub/device/FreqReplicator.h b/DeviceHub/device/FreqReplicator.h index 5702c28..716f800 100644 --- a/DeviceHub/device/FreqReplicator.h +++ b/DeviceHub/device/FreqReplicator.h @@ -15,13 +15,15 @@ void mockReceivData(); - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void frameParse(QList frameList); + void afterFrameParse(DeviceFrameBaseDto * frameDto); signals: void sendDataToDraw(DeviceFrameBaseDto * frameData); public slots: void dataReceivedHandler(QByteArray data); + void dataBReceivedHandler(QByteArray data); }; #endif // FREQREPLICATOR_H diff --git a/DeviceHub/device/FreqSwitcher.cpp b/DeviceHub/device/FreqSwitcher.cpp index 3873c13..5587395 100644 --- a/DeviceHub/device/FreqSwitcher.cpp +++ b/DeviceHub/device/FreqSwitcher.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void FreqSwitcher::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FreqSwitcher::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/FreqSwitcher.h b/DeviceHub/device/FreqSwitcher.h index fd19204..9c17824 100644 --- a/DeviceHub/device/FreqSwitcher.h +++ b/DeviceHub/device/FreqSwitcher.h @@ -16,7 +16,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/FrequencyTuning.cpp b/DeviceHub/device/FrequencyTuning.cpp index e2038c2..0a19747 100644 --- a/DeviceHub/device/FrequencyTuning.cpp +++ b/DeviceHub/device/FrequencyTuning.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void FrequencyTuning::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FrequencyTuning::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/FrequencyTuning.h b/DeviceHub/device/FrequencyTuning.h index af49041..f8d2b91 100644 --- a/DeviceHub/device/FrequencyTuning.h +++ b/DeviceHub/device/FrequencyTuning.h @@ -16,7 +16,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/SignalGenerator.cpp b/DeviceHub/device/SignalGenerator.cpp index e99ddc1..0d2d909 100644 --- a/DeviceHub/device/SignalGenerator.cpp +++ b/DeviceHub/device/SignalGenerator.cpp @@ -78,7 +78,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -90,7 +90,7 @@ } } -void SignalGenerator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void SignalGenerator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/SignalGenerator.h b/DeviceHub/device/SignalGenerator.h index b000e8c..2c6ffb8 100644 --- a/DeviceHub/device/SignalGenerator.h +++ b/DeviceHub/device/SignalGenerator.h @@ -18,7 +18,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.h b/DeviceHub/DeviceHubWindow.h index 62b4055..cb5875a 100644 --- a/DeviceHub/DeviceHubWindow.h +++ b/DeviceHub/DeviceHubWindow.h @@ -5,7 +5,7 @@ #include #include "common/HttpRequestController.h" -//#include "common/utils/QKafkaConsumer.h" +#include "common/utils/QKafkaConsumer.h" #include "device/DeviceBase.h" #include "FrequencyTuningForm.h" #include "SignalGeneratorForm.h" @@ -32,7 +32,7 @@ int currentDevIndex; QMap> allTypeDevList; -// QKafkaConsumer * kafkaConsumer; + QKafkaConsumer * kafkaConsumer; QComboBox * getDevTypeSelect(); QComboBox * getDevSelect(); diff --git a/DeviceHub/FreqReplicatorForm.cpp b/DeviceHub/FreqReplicatorForm.cpp index e52ab24..bda0658 100644 --- a/DeviceHub/FreqReplicatorForm.cpp +++ b/DeviceHub/FreqReplicatorForm.cpp @@ -29,6 +29,12 @@ void FreqReplicatorForm::drawDeviceFrameOnForm(DeviceFrameBaseDto * frameData) { + QString currentDevCode = ((DeviceHubWindow *)this->parent()->parent())->getDevSelect()->currentData().toJsonObject().find("deviceNo")->toString(); + if (currentDevCode != frameData->devCode) + { + return; + } + // 当前显示的设备编号 if (frameData->frameType == "1001") { @@ -44,5 +50,17 @@ doc.setArray(dataObj.find("outValid")->toArray()); ui->frOutStatus->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + } else if (frameData->frameType == "1002") + { + FreqReplicatorStatusDto * statusFrameDto = (FreqReplicatorStatusDto *) frameData; + + QJsonObject dataObj = statusFrameDto->toJSON().find("data")->toObject(); + QJsonDocument doc; + + doc.setArray(dataObj.find("inValid")->toArray()); + ui->frInStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + + doc.setArray(dataObj.find("outValid")->toArray()); + ui->frOutStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); } } diff --git a/DeviceHub/FreqReplicatorForm.ui b/DeviceHub/FreqReplicatorForm.ui index cbc4ffb..2f6c15d 100644 --- a/DeviceHub/FreqReplicatorForm.ui +++ b/DeviceHub/FreqReplicatorForm.ui @@ -129,7 +129,7 @@ - 输出监测 + 输出监测AB @@ -148,7 +148,7 @@ - 输入状态 + 输入状态AB @@ -170,6 +170,64 @@ + + + + 540 + 130 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输入状态CD + + + + + + 620 + 130 + 200 + 30 + + + + + + + 100 + 230 + 400 + 30 + + + + + + + 20 + 230 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输出监测CD + + diff --git a/DeviceHub/common/common.pri b/DeviceHub/common/common.pri index feeba36..86259e8 100644 --- a/DeviceHub/common/common.pri +++ b/DeviceHub/common/common.pri @@ -3,8 +3,8 @@ SOURCES += $$PWD/utils/QByteUtil.cpp SOURCES += $$PWD/utils/QSerialPortUtil.cpp SOURCES += $$PWD/utils/QLogUtil.cpp -#SOURCES += $$PWD/utils/QKafkaConsumer.cpp -#SOURCES += $$PWD/utils/QKafkaProducer.cpp +SOURCES += $$PWD/utils/QKafkaConsumer.cpp +SOURCES += $$PWD/utils/QKafkaProducer.cpp SOURCES += $$PWD/utils/HttpRequestUtil.cpp SOURCES += $$PWD/utils/MD5.cpp SOURCES += $$PWD/HttpRequestController.cpp @@ -13,8 +13,8 @@ HEADERS += $$PWD/utils/QByteUtil.h HEADERS += $$PWD/utils/QSerialPortUtil.h HEADERS += $$PWD/utils/QLogUtil.h -#HEADERS += $$PWD/utils/QKafkaConsumer.h -#HEADERS += $$PWD/utils/QKafkaProducer.h +HEADERS += $$PWD/utils/QKafkaConsumer.h +HEADERS += $$PWD/utils/QKafkaProducer.h HEADERS += $$PWD/utils/HttpRequestUtil.h HEADERS += $$PWD/utils/DefHead.h HEADERS += $$PWD/utils/MD5.h diff --git a/DeviceHub/common/utils/QKafkaConsumer.cpp b/DeviceHub/common/utils/QKafkaConsumer.cpp index b3cb9fd..c62f08e 100644 --- a/DeviceHub/common/utils/QKafkaConsumer.cpp +++ b/DeviceHub/common/utils/QKafkaConsumer.cpp @@ -1,4 +1,5 @@ #include "QKafkaConsumer.h" +#include "SettingConfig.h" #include #include @@ -25,6 +26,14 @@ int QKafkaConsumer::createConsumer() { int ret = conf->set("metadata.broker.list", brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } + if (ret != RdKafka::Conf::CONF_OK) { std::cerr << "RdKafka conf set brokerlist failed :" << errStr.c_str() << std::endl; diff --git a/DeviceHub/common/utils/QKafkaProducer.cpp b/DeviceHub/common/utils/QKafkaProducer.cpp index c0db128..109e581 100644 --- a/DeviceHub/common/utils/QKafkaProducer.cpp +++ b/DeviceHub/common/utils/QKafkaProducer.cpp @@ -1,4 +1,5 @@ #include "QKafkaProducer.h" +#include "SettingConfig.h" #include QKafkaProducer::QKafkaProducer(QObject *parent) : QObject(parent) @@ -20,6 +21,13 @@ { int result; result = this->conf->set("bootstrap.servers", this->brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } if (result != RdKafka::Conf::CONF_OK) { diff --git a/DeviceHub/common/utils/QSerialPortUtil.cpp b/DeviceHub/common/utils/QSerialPortUtil.cpp index 9de0047..a5e07ac 100644 --- a/DeviceHub/common/utils/QSerialPortUtil.cpp +++ b/DeviceHub/common/utils/QSerialPortUtil.cpp @@ -25,6 +25,8 @@ open = serial.open(QIODevice::ReadWrite); + std::cout << portName.toStdString() << " " << QString::number(baudRate).toStdString() << " " << open << std::endl; + if (open == true) { // mock data received per second diff --git a/DeviceHub/common/utils/SettingConfig.cpp b/DeviceHub/common/utils/SettingConfig.cpp index 6f17295..ea27d43 100644 --- a/DeviceHub/common/utils/SettingConfig.cpp +++ b/DeviceHub/common/utils/SettingConfig.cpp @@ -14,6 +14,9 @@ KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); KAFKA_CMD_TOPIC = getProperty("kafka", "cmdTopic").toString(); KAFKA_CMDCB_TOPIC = getProperty("kafka", "cmdcbTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "saslUsername").toString(); + SASL_PASSWORD = getProperty("kafka", "saslPassword").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/DeviceHub/common/utils/SettingConfig.h b/DeviceHub/common/utils/SettingConfig.h index c50bcc0..f6cc2af 100644 --- a/DeviceHub/common/utils/SettingConfig.h +++ b/DeviceHub/common/utils/SettingConfig.h @@ -36,6 +36,9 @@ QString KAFKA_DATA_TOPIC; QString KAFKA_CMD_TOPIC; QString KAFKA_CMDCB_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/DeviceHub/conf/config.ini b/DeviceHub/conf/config.ini index 64e57ba..ad7cb35 100644 --- a/DeviceHub/conf/config.ini +++ b/DeviceHub/conf/config.ini @@ -21,4 +21,4 @@ baseUrl="http://111.198.10.15:11410" [log] -basePath="/home/admin/Qt/ZXSSCJ-Release/DevStatus/logs/" +basePath="/home/admin/Qt/ZXSSCJ-Release/DeviceHub/logs/" diff --git a/DeviceHub/device/BCodeTerminal.cpp b/DeviceHub/device/BCodeTerminal.cpp index 1e852a9..5d8ec7f 100644 --- a/DeviceHub/device/BCodeTerminal.cpp +++ b/DeviceHub/device/BCodeTerminal.cpp @@ -72,7 +72,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -84,7 +84,7 @@ } } -void BCodeTerminal::afterFramePhase(DeviceFrameBaseDto * frameDto) +void BCodeTerminal::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/BCodeTerminal.h b/DeviceHub/device/BCodeTerminal.h index f39ab6e..d823431 100644 --- a/DeviceHub/device/BCodeTerminal.h +++ b/DeviceHub/device/BCodeTerminal.h @@ -15,7 +15,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void afterFrameParse(DeviceFrameBaseDto * frameDto); void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/DeviceBase.cpp b/DeviceHub/device/DeviceBase.cpp index 06cfddd..dc8d791 100644 --- a/DeviceHub/device/DeviceBase.cpp +++ b/DeviceHub/device/DeviceBase.cpp @@ -1,10 +1,10 @@ #include "DeviceBase.h" -//#include "FrequencyTuning.h" -//#include "SignalGenerator.h" -//#include "TimeSwitcher.h" -//#include "FreqSwitcher.h" -//#include "BCodeTerminal.h" -//#include "TimeReplicator.h" +#include "FrequencyTuning.h" +#include "SignalGenerator.h" +#include "TimeSwitcher.h" +#include "FreqSwitcher.h" +#include "BCodeTerminal.h" +#include "TimeReplicator.h" #include "FreqReplicator.h" #include @@ -42,25 +42,25 @@ DeviceBase * DeviceBase::deviceFactory(QString deviceType, QObject * parent) { DeviceBase * base = 0; -// if (deviceType == "03") -// { -// base = new FrequencyTuning(parent); -// } else if (deviceType == "04") -// { -// base = new SignalGenerator(parent); -// } else if (deviceType == "05") -// { -// base = new TimeSwitcher(parent); -// } else if (deviceType == "06") -// { -// base = new FreqSwitcher(parent); -// } else if (deviceType == "07") -// { -// base = new BCodeTerminal(parent); -// } else if (deviceType == "09") -// { -// base = new TimeReplicator(parent); -// } else + if (deviceType == "03") + { + base = new FrequencyTuning(parent); + } else if (deviceType == "04") + { + base = new SignalGenerator(parent); + } else if (deviceType == "05") + { + base = new TimeSwitcher(parent); + } else if (deviceType == "06") + { + base = new FreqSwitcher(parent); + } else if (deviceType == "07") + { + base = new BCodeTerminal(parent); + } else if (deviceType == "09") + { + base = new TimeReplicator(parent); + } else if (deviceType == "10") { base = new FreqReplicator(parent); @@ -76,7 +76,12 @@ void DeviceBase::initSerialPort() { - this->serialUtil.openSerialPort(this->comName, this->baudRate); + QStringList comNameList = this->comName.split(","); + this->serialUtil.openSerialPort(comNameList.at(0), this->baudRate); + if (comNameList.size() == 2) + { + this->serialUtilB.openSerialPort(comNameList.at(1), this->baudRate); + } } void DeviceBase::sendDataToSerial(QByteArray data) diff --git a/DeviceHub/device/DeviceBase.h b/DeviceHub/device/DeviceBase.h index e06bee3..77955aa 100644 --- a/DeviceHub/device/DeviceBase.h +++ b/DeviceHub/device/DeviceBase.h @@ -3,7 +3,7 @@ #include #include "common/utils/QSerialPortUtil.h" -//#include "common/utils/QKafkaProducer.h" +#include "common/utils/QKafkaProducer.h" #include "common/utils/QByteUtil.h" #include "common/utils/QLogUtil.h" #include "common/utils/SettingConfig.h" @@ -29,7 +29,7 @@ void initSerialPort(); bool isSerialOpen(); virtual void sendDataToSerial(QByteArray data); - virtual void afterFramePhase(DeviceFrameBaseDto * frameDto) = 0; + virtual void afterFrameParse(DeviceFrameBaseDto * frameDto) = 0; virtual void mockReceivData() = 0; @@ -43,8 +43,10 @@ QString devType; QSerialPortUtil serialUtil; -// QKafkaProducer kafkaProducer; + QSerialPortUtil serialUtilB; // serial port 2 + QKafkaProducer kafkaProducer; QByteArray dataBuff; + QByteArray dataBuffB; }; #endif // DEVICEBASE_H diff --git a/DeviceHub/device/FreqReplicator.cpp b/DeviceHub/device/FreqReplicator.cpp index ea50664..a8d033b 100644 --- a/DeviceHub/device/FreqReplicator.cpp +++ b/DeviceHub/device/FreqReplicator.cpp @@ -8,13 +8,15 @@ this->devType = "10"; connect(&this->serialUtil, &QSerialPortUtil::dataRecieved, this, &FreqReplicator::dataReceivedHandler); + connect(&this->serialUtilB, &QSerialPortUtil::dataRecieved, + this, &FreqReplicator::dataBReceivedHandler); connect(this, &FreqReplicator::sendDataToDraw, ((DeviceHubWindow *)this->parent())->freqRepForm, &FreqReplicatorForm::drawDeviceFrameOnForm); -// kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); -// kafkaProducer.createProducer(); + kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); + kafkaProducer.createProducer(); this->protocol = DeviceProtocolBase::deviceProtocolFactory(devType); } @@ -30,7 +32,7 @@ QByteArray buffer; // 频率信号放大器 - buffer = QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB"); + buffer.append(QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB")); buffer.append(QByteUtil::hexStringToBytes("AA550015020001000101010101010101010101010101010101E8")); this->dataReceivedHandler(buffer); @@ -45,40 +47,55 @@ if (frameList.size() > 0) { this->dataBuff.clear(); - for (int i = 0; i < frameList.size(); i++) - { - QByteArray frameByte = frameList.at(i); - - int frameType = protocol->checkFrame(frameByte); - DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); - if (frameDto != nullptr) - { - // ★解析成数据对象 - bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); - - // 解析成功 - if (parse == true) - { - QDateTime now = QDateTime::currentDateTime(); - frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); - frameDto->milisecond = now.toMSecsSinceEpoch(); - frameDto->rawFrame = frameByte; - - frameDto->devCode = devCode; - - this->afterFramePhase(frameDto); - } - - // 在此处释放内存,不影响后续显示 - // 不在此处释放内存则会导致内存持续增加 - // 具体原因不明 - delete frameDto; - } - } + frameParse(frameList); } } -void FreqReplicator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FreqReplicator::dataBReceivedHandler(QByteArray data) +{ + this->dataBuffB.append(data); + QList frameListB = protocol->extractFrameList(this->dataBuffB); + if (frameListB.size() > 0) + { + this->dataBuffB.clear(); + frameParse(frameListB); + } +} + +void FreqReplicator::frameParse(QList frameList) +{ + for (int i = 0; i < frameList.size(); i++) + { + QByteArray frameByte = frameList.at(i); + + int frameType = protocol->checkFrame(frameByte); + DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); + if (frameDto != nullptr) + { + // ★解析成数据对象 + bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); + + // 解析成功 + if (parse == true) + { + QDateTime now = QDateTime::currentDateTime(); + frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); + frameDto->milisecond = now.toMSecsSinceEpoch(); + frameDto->rawFrame = frameByte; + + frameDto->devCode = devCode; + + this->afterFrameParse(frameDto); + } + + // 在此处释放内存,不影响后续显示 + // 不在此处释放内存则会导致内存持续增加 + // 具体原因不明 + delete frameDto; + } + } +} +void FreqReplicator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << QByteUtil::binToHexString(frameDto->rawFrame).toStdString() << std::endl; @@ -101,7 +118,7 @@ QJsonObject jsonObj = frameDto->toJSON(); jsonObj.insert("clientId", SettingConfig::getInstance().CLIENT_ID); jsonObj.insert("deviceId", deviceId); -// kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); + kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); } // 4. 在界面上简单显示相差数据结果 diff --git a/DeviceHub/device/FreqReplicator.h b/DeviceHub/device/FreqReplicator.h index 5702c28..716f800 100644 --- a/DeviceHub/device/FreqReplicator.h +++ b/DeviceHub/device/FreqReplicator.h @@ -15,13 +15,15 @@ void mockReceivData(); - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void frameParse(QList frameList); + void afterFrameParse(DeviceFrameBaseDto * frameDto); signals: void sendDataToDraw(DeviceFrameBaseDto * frameData); public slots: void dataReceivedHandler(QByteArray data); + void dataBReceivedHandler(QByteArray data); }; #endif // FREQREPLICATOR_H diff --git a/DeviceHub/device/FreqSwitcher.cpp b/DeviceHub/device/FreqSwitcher.cpp index 3873c13..5587395 100644 --- a/DeviceHub/device/FreqSwitcher.cpp +++ b/DeviceHub/device/FreqSwitcher.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void FreqSwitcher::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FreqSwitcher::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/FreqSwitcher.h b/DeviceHub/device/FreqSwitcher.h index fd19204..9c17824 100644 --- a/DeviceHub/device/FreqSwitcher.h +++ b/DeviceHub/device/FreqSwitcher.h @@ -16,7 +16,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/FrequencyTuning.cpp b/DeviceHub/device/FrequencyTuning.cpp index e2038c2..0a19747 100644 --- a/DeviceHub/device/FrequencyTuning.cpp +++ b/DeviceHub/device/FrequencyTuning.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void FrequencyTuning::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FrequencyTuning::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/FrequencyTuning.h b/DeviceHub/device/FrequencyTuning.h index af49041..f8d2b91 100644 --- a/DeviceHub/device/FrequencyTuning.h +++ b/DeviceHub/device/FrequencyTuning.h @@ -16,7 +16,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/SignalGenerator.cpp b/DeviceHub/device/SignalGenerator.cpp index e99ddc1..0d2d909 100644 --- a/DeviceHub/device/SignalGenerator.cpp +++ b/DeviceHub/device/SignalGenerator.cpp @@ -78,7 +78,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -90,7 +90,7 @@ } } -void SignalGenerator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void SignalGenerator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/SignalGenerator.h b/DeviceHub/device/SignalGenerator.h index b000e8c..2c6ffb8 100644 --- a/DeviceHub/device/SignalGenerator.h +++ b/DeviceHub/device/SignalGenerator.h @@ -18,7 +18,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/TimeReplicator.cpp b/DeviceHub/device/TimeReplicator.cpp index 4ca4547..0a96722 100644 --- a/DeviceHub/device/TimeReplicator.cpp +++ b/DeviceHub/device/TimeReplicator.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void TimeReplicator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void TimeReplicator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.h b/DeviceHub/DeviceHubWindow.h index 62b4055..cb5875a 100644 --- a/DeviceHub/DeviceHubWindow.h +++ b/DeviceHub/DeviceHubWindow.h @@ -5,7 +5,7 @@ #include #include "common/HttpRequestController.h" -//#include "common/utils/QKafkaConsumer.h" +#include "common/utils/QKafkaConsumer.h" #include "device/DeviceBase.h" #include "FrequencyTuningForm.h" #include "SignalGeneratorForm.h" @@ -32,7 +32,7 @@ int currentDevIndex; QMap> allTypeDevList; -// QKafkaConsumer * kafkaConsumer; + QKafkaConsumer * kafkaConsumer; QComboBox * getDevTypeSelect(); QComboBox * getDevSelect(); diff --git a/DeviceHub/FreqReplicatorForm.cpp b/DeviceHub/FreqReplicatorForm.cpp index e52ab24..bda0658 100644 --- a/DeviceHub/FreqReplicatorForm.cpp +++ b/DeviceHub/FreqReplicatorForm.cpp @@ -29,6 +29,12 @@ void FreqReplicatorForm::drawDeviceFrameOnForm(DeviceFrameBaseDto * frameData) { + QString currentDevCode = ((DeviceHubWindow *)this->parent()->parent())->getDevSelect()->currentData().toJsonObject().find("deviceNo")->toString(); + if (currentDevCode != frameData->devCode) + { + return; + } + // 当前显示的设备编号 if (frameData->frameType == "1001") { @@ -44,5 +50,17 @@ doc.setArray(dataObj.find("outValid")->toArray()); ui->frOutStatus->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + } else if (frameData->frameType == "1002") + { + FreqReplicatorStatusDto * statusFrameDto = (FreqReplicatorStatusDto *) frameData; + + QJsonObject dataObj = statusFrameDto->toJSON().find("data")->toObject(); + QJsonDocument doc; + + doc.setArray(dataObj.find("inValid")->toArray()); + ui->frInStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + + doc.setArray(dataObj.find("outValid")->toArray()); + ui->frOutStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); } } diff --git a/DeviceHub/FreqReplicatorForm.ui b/DeviceHub/FreqReplicatorForm.ui index cbc4ffb..2f6c15d 100644 --- a/DeviceHub/FreqReplicatorForm.ui +++ b/DeviceHub/FreqReplicatorForm.ui @@ -129,7 +129,7 @@ - 输出监测 + 输出监测AB @@ -148,7 +148,7 @@ - 输入状态 + 输入状态AB @@ -170,6 +170,64 @@ + + + + 540 + 130 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输入状态CD + + + + + + 620 + 130 + 200 + 30 + + + + + + + 100 + 230 + 400 + 30 + + + + + + + 20 + 230 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输出监测CD + + diff --git a/DeviceHub/common/common.pri b/DeviceHub/common/common.pri index feeba36..86259e8 100644 --- a/DeviceHub/common/common.pri +++ b/DeviceHub/common/common.pri @@ -3,8 +3,8 @@ SOURCES += $$PWD/utils/QByteUtil.cpp SOURCES += $$PWD/utils/QSerialPortUtil.cpp SOURCES += $$PWD/utils/QLogUtil.cpp -#SOURCES += $$PWD/utils/QKafkaConsumer.cpp -#SOURCES += $$PWD/utils/QKafkaProducer.cpp +SOURCES += $$PWD/utils/QKafkaConsumer.cpp +SOURCES += $$PWD/utils/QKafkaProducer.cpp SOURCES += $$PWD/utils/HttpRequestUtil.cpp SOURCES += $$PWD/utils/MD5.cpp SOURCES += $$PWD/HttpRequestController.cpp @@ -13,8 +13,8 @@ HEADERS += $$PWD/utils/QByteUtil.h HEADERS += $$PWD/utils/QSerialPortUtil.h HEADERS += $$PWD/utils/QLogUtil.h -#HEADERS += $$PWD/utils/QKafkaConsumer.h -#HEADERS += $$PWD/utils/QKafkaProducer.h +HEADERS += $$PWD/utils/QKafkaConsumer.h +HEADERS += $$PWD/utils/QKafkaProducer.h HEADERS += $$PWD/utils/HttpRequestUtil.h HEADERS += $$PWD/utils/DefHead.h HEADERS += $$PWD/utils/MD5.h diff --git a/DeviceHub/common/utils/QKafkaConsumer.cpp b/DeviceHub/common/utils/QKafkaConsumer.cpp index b3cb9fd..c62f08e 100644 --- a/DeviceHub/common/utils/QKafkaConsumer.cpp +++ b/DeviceHub/common/utils/QKafkaConsumer.cpp @@ -1,4 +1,5 @@ #include "QKafkaConsumer.h" +#include "SettingConfig.h" #include #include @@ -25,6 +26,14 @@ int QKafkaConsumer::createConsumer() { int ret = conf->set("metadata.broker.list", brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } + if (ret != RdKafka::Conf::CONF_OK) { std::cerr << "RdKafka conf set brokerlist failed :" << errStr.c_str() << std::endl; diff --git a/DeviceHub/common/utils/QKafkaProducer.cpp b/DeviceHub/common/utils/QKafkaProducer.cpp index c0db128..109e581 100644 --- a/DeviceHub/common/utils/QKafkaProducer.cpp +++ b/DeviceHub/common/utils/QKafkaProducer.cpp @@ -1,4 +1,5 @@ #include "QKafkaProducer.h" +#include "SettingConfig.h" #include QKafkaProducer::QKafkaProducer(QObject *parent) : QObject(parent) @@ -20,6 +21,13 @@ { int result; result = this->conf->set("bootstrap.servers", this->brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } if (result != RdKafka::Conf::CONF_OK) { diff --git a/DeviceHub/common/utils/QSerialPortUtil.cpp b/DeviceHub/common/utils/QSerialPortUtil.cpp index 9de0047..a5e07ac 100644 --- a/DeviceHub/common/utils/QSerialPortUtil.cpp +++ b/DeviceHub/common/utils/QSerialPortUtil.cpp @@ -25,6 +25,8 @@ open = serial.open(QIODevice::ReadWrite); + std::cout << portName.toStdString() << " " << QString::number(baudRate).toStdString() << " " << open << std::endl; + if (open == true) { // mock data received per second diff --git a/DeviceHub/common/utils/SettingConfig.cpp b/DeviceHub/common/utils/SettingConfig.cpp index 6f17295..ea27d43 100644 --- a/DeviceHub/common/utils/SettingConfig.cpp +++ b/DeviceHub/common/utils/SettingConfig.cpp @@ -14,6 +14,9 @@ KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); KAFKA_CMD_TOPIC = getProperty("kafka", "cmdTopic").toString(); KAFKA_CMDCB_TOPIC = getProperty("kafka", "cmdcbTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "saslUsername").toString(); + SASL_PASSWORD = getProperty("kafka", "saslPassword").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/DeviceHub/common/utils/SettingConfig.h b/DeviceHub/common/utils/SettingConfig.h index c50bcc0..f6cc2af 100644 --- a/DeviceHub/common/utils/SettingConfig.h +++ b/DeviceHub/common/utils/SettingConfig.h @@ -36,6 +36,9 @@ QString KAFKA_DATA_TOPIC; QString KAFKA_CMD_TOPIC; QString KAFKA_CMDCB_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/DeviceHub/conf/config.ini b/DeviceHub/conf/config.ini index 64e57ba..ad7cb35 100644 --- a/DeviceHub/conf/config.ini +++ b/DeviceHub/conf/config.ini @@ -21,4 +21,4 @@ baseUrl="http://111.198.10.15:11410" [log] -basePath="/home/admin/Qt/ZXSSCJ-Release/DevStatus/logs/" +basePath="/home/admin/Qt/ZXSSCJ-Release/DeviceHub/logs/" diff --git a/DeviceHub/device/BCodeTerminal.cpp b/DeviceHub/device/BCodeTerminal.cpp index 1e852a9..5d8ec7f 100644 --- a/DeviceHub/device/BCodeTerminal.cpp +++ b/DeviceHub/device/BCodeTerminal.cpp @@ -72,7 +72,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -84,7 +84,7 @@ } } -void BCodeTerminal::afterFramePhase(DeviceFrameBaseDto * frameDto) +void BCodeTerminal::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/BCodeTerminal.h b/DeviceHub/device/BCodeTerminal.h index f39ab6e..d823431 100644 --- a/DeviceHub/device/BCodeTerminal.h +++ b/DeviceHub/device/BCodeTerminal.h @@ -15,7 +15,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void afterFrameParse(DeviceFrameBaseDto * frameDto); void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/DeviceBase.cpp b/DeviceHub/device/DeviceBase.cpp index 06cfddd..dc8d791 100644 --- a/DeviceHub/device/DeviceBase.cpp +++ b/DeviceHub/device/DeviceBase.cpp @@ -1,10 +1,10 @@ #include "DeviceBase.h" -//#include "FrequencyTuning.h" -//#include "SignalGenerator.h" -//#include "TimeSwitcher.h" -//#include "FreqSwitcher.h" -//#include "BCodeTerminal.h" -//#include "TimeReplicator.h" +#include "FrequencyTuning.h" +#include "SignalGenerator.h" +#include "TimeSwitcher.h" +#include "FreqSwitcher.h" +#include "BCodeTerminal.h" +#include "TimeReplicator.h" #include "FreqReplicator.h" #include @@ -42,25 +42,25 @@ DeviceBase * DeviceBase::deviceFactory(QString deviceType, QObject * parent) { DeviceBase * base = 0; -// if (deviceType == "03") -// { -// base = new FrequencyTuning(parent); -// } else if (deviceType == "04") -// { -// base = new SignalGenerator(parent); -// } else if (deviceType == "05") -// { -// base = new TimeSwitcher(parent); -// } else if (deviceType == "06") -// { -// base = new FreqSwitcher(parent); -// } else if (deviceType == "07") -// { -// base = new BCodeTerminal(parent); -// } else if (deviceType == "09") -// { -// base = new TimeReplicator(parent); -// } else + if (deviceType == "03") + { + base = new FrequencyTuning(parent); + } else if (deviceType == "04") + { + base = new SignalGenerator(parent); + } else if (deviceType == "05") + { + base = new TimeSwitcher(parent); + } else if (deviceType == "06") + { + base = new FreqSwitcher(parent); + } else if (deviceType == "07") + { + base = new BCodeTerminal(parent); + } else if (deviceType == "09") + { + base = new TimeReplicator(parent); + } else if (deviceType == "10") { base = new FreqReplicator(parent); @@ -76,7 +76,12 @@ void DeviceBase::initSerialPort() { - this->serialUtil.openSerialPort(this->comName, this->baudRate); + QStringList comNameList = this->comName.split(","); + this->serialUtil.openSerialPort(comNameList.at(0), this->baudRate); + if (comNameList.size() == 2) + { + this->serialUtilB.openSerialPort(comNameList.at(1), this->baudRate); + } } void DeviceBase::sendDataToSerial(QByteArray data) diff --git a/DeviceHub/device/DeviceBase.h b/DeviceHub/device/DeviceBase.h index e06bee3..77955aa 100644 --- a/DeviceHub/device/DeviceBase.h +++ b/DeviceHub/device/DeviceBase.h @@ -3,7 +3,7 @@ #include #include "common/utils/QSerialPortUtil.h" -//#include "common/utils/QKafkaProducer.h" +#include "common/utils/QKafkaProducer.h" #include "common/utils/QByteUtil.h" #include "common/utils/QLogUtil.h" #include "common/utils/SettingConfig.h" @@ -29,7 +29,7 @@ void initSerialPort(); bool isSerialOpen(); virtual void sendDataToSerial(QByteArray data); - virtual void afterFramePhase(DeviceFrameBaseDto * frameDto) = 0; + virtual void afterFrameParse(DeviceFrameBaseDto * frameDto) = 0; virtual void mockReceivData() = 0; @@ -43,8 +43,10 @@ QString devType; QSerialPortUtil serialUtil; -// QKafkaProducer kafkaProducer; + QSerialPortUtil serialUtilB; // serial port 2 + QKafkaProducer kafkaProducer; QByteArray dataBuff; + QByteArray dataBuffB; }; #endif // DEVICEBASE_H diff --git a/DeviceHub/device/FreqReplicator.cpp b/DeviceHub/device/FreqReplicator.cpp index ea50664..a8d033b 100644 --- a/DeviceHub/device/FreqReplicator.cpp +++ b/DeviceHub/device/FreqReplicator.cpp @@ -8,13 +8,15 @@ this->devType = "10"; connect(&this->serialUtil, &QSerialPortUtil::dataRecieved, this, &FreqReplicator::dataReceivedHandler); + connect(&this->serialUtilB, &QSerialPortUtil::dataRecieved, + this, &FreqReplicator::dataBReceivedHandler); connect(this, &FreqReplicator::sendDataToDraw, ((DeviceHubWindow *)this->parent())->freqRepForm, &FreqReplicatorForm::drawDeviceFrameOnForm); -// kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); -// kafkaProducer.createProducer(); + kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); + kafkaProducer.createProducer(); this->protocol = DeviceProtocolBase::deviceProtocolFactory(devType); } @@ -30,7 +32,7 @@ QByteArray buffer; // 频率信号放大器 - buffer = QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB"); + buffer.append(QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB")); buffer.append(QByteUtil::hexStringToBytes("AA550015020001000101010101010101010101010101010101E8")); this->dataReceivedHandler(buffer); @@ -45,40 +47,55 @@ if (frameList.size() > 0) { this->dataBuff.clear(); - for (int i = 0; i < frameList.size(); i++) - { - QByteArray frameByte = frameList.at(i); - - int frameType = protocol->checkFrame(frameByte); - DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); - if (frameDto != nullptr) - { - // ★解析成数据对象 - bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); - - // 解析成功 - if (parse == true) - { - QDateTime now = QDateTime::currentDateTime(); - frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); - frameDto->milisecond = now.toMSecsSinceEpoch(); - frameDto->rawFrame = frameByte; - - frameDto->devCode = devCode; - - this->afterFramePhase(frameDto); - } - - // 在此处释放内存,不影响后续显示 - // 不在此处释放内存则会导致内存持续增加 - // 具体原因不明 - delete frameDto; - } - } + frameParse(frameList); } } -void FreqReplicator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FreqReplicator::dataBReceivedHandler(QByteArray data) +{ + this->dataBuffB.append(data); + QList frameListB = protocol->extractFrameList(this->dataBuffB); + if (frameListB.size() > 0) + { + this->dataBuffB.clear(); + frameParse(frameListB); + } +} + +void FreqReplicator::frameParse(QList frameList) +{ + for (int i = 0; i < frameList.size(); i++) + { + QByteArray frameByte = frameList.at(i); + + int frameType = protocol->checkFrame(frameByte); + DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); + if (frameDto != nullptr) + { + // ★解析成数据对象 + bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); + + // 解析成功 + if (parse == true) + { + QDateTime now = QDateTime::currentDateTime(); + frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); + frameDto->milisecond = now.toMSecsSinceEpoch(); + frameDto->rawFrame = frameByte; + + frameDto->devCode = devCode; + + this->afterFrameParse(frameDto); + } + + // 在此处释放内存,不影响后续显示 + // 不在此处释放内存则会导致内存持续增加 + // 具体原因不明 + delete frameDto; + } + } +} +void FreqReplicator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << QByteUtil::binToHexString(frameDto->rawFrame).toStdString() << std::endl; @@ -101,7 +118,7 @@ QJsonObject jsonObj = frameDto->toJSON(); jsonObj.insert("clientId", SettingConfig::getInstance().CLIENT_ID); jsonObj.insert("deviceId", deviceId); -// kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); + kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); } // 4. 在界面上简单显示相差数据结果 diff --git a/DeviceHub/device/FreqReplicator.h b/DeviceHub/device/FreqReplicator.h index 5702c28..716f800 100644 --- a/DeviceHub/device/FreqReplicator.h +++ b/DeviceHub/device/FreqReplicator.h @@ -15,13 +15,15 @@ void mockReceivData(); - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void frameParse(QList frameList); + void afterFrameParse(DeviceFrameBaseDto * frameDto); signals: void sendDataToDraw(DeviceFrameBaseDto * frameData); public slots: void dataReceivedHandler(QByteArray data); + void dataBReceivedHandler(QByteArray data); }; #endif // FREQREPLICATOR_H diff --git a/DeviceHub/device/FreqSwitcher.cpp b/DeviceHub/device/FreqSwitcher.cpp index 3873c13..5587395 100644 --- a/DeviceHub/device/FreqSwitcher.cpp +++ b/DeviceHub/device/FreqSwitcher.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void FreqSwitcher::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FreqSwitcher::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/FreqSwitcher.h b/DeviceHub/device/FreqSwitcher.h index fd19204..9c17824 100644 --- a/DeviceHub/device/FreqSwitcher.h +++ b/DeviceHub/device/FreqSwitcher.h @@ -16,7 +16,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/FrequencyTuning.cpp b/DeviceHub/device/FrequencyTuning.cpp index e2038c2..0a19747 100644 --- a/DeviceHub/device/FrequencyTuning.cpp +++ b/DeviceHub/device/FrequencyTuning.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void FrequencyTuning::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FrequencyTuning::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/FrequencyTuning.h b/DeviceHub/device/FrequencyTuning.h index af49041..f8d2b91 100644 --- a/DeviceHub/device/FrequencyTuning.h +++ b/DeviceHub/device/FrequencyTuning.h @@ -16,7 +16,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/SignalGenerator.cpp b/DeviceHub/device/SignalGenerator.cpp index e99ddc1..0d2d909 100644 --- a/DeviceHub/device/SignalGenerator.cpp +++ b/DeviceHub/device/SignalGenerator.cpp @@ -78,7 +78,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -90,7 +90,7 @@ } } -void SignalGenerator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void SignalGenerator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/SignalGenerator.h b/DeviceHub/device/SignalGenerator.h index b000e8c..2c6ffb8 100644 --- a/DeviceHub/device/SignalGenerator.h +++ b/DeviceHub/device/SignalGenerator.h @@ -18,7 +18,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/TimeReplicator.cpp b/DeviceHub/device/TimeReplicator.cpp index 4ca4547..0a96722 100644 --- a/DeviceHub/device/TimeReplicator.cpp +++ b/DeviceHub/device/TimeReplicator.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void TimeReplicator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void TimeReplicator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/TimeReplicator.h b/DeviceHub/device/TimeReplicator.h index 12b5ff4..f871c64 100644 --- a/DeviceHub/device/TimeReplicator.h +++ b/DeviceHub/device/TimeReplicator.h @@ -15,7 +15,7 @@ void mockReceivData(); - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void afterFrameParse(DeviceFrameBaseDto * frameDto); void sendDataToSerial(QByteArray data); signals: diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.h b/DeviceHub/DeviceHubWindow.h index 62b4055..cb5875a 100644 --- a/DeviceHub/DeviceHubWindow.h +++ b/DeviceHub/DeviceHubWindow.h @@ -5,7 +5,7 @@ #include #include "common/HttpRequestController.h" -//#include "common/utils/QKafkaConsumer.h" +#include "common/utils/QKafkaConsumer.h" #include "device/DeviceBase.h" #include "FrequencyTuningForm.h" #include "SignalGeneratorForm.h" @@ -32,7 +32,7 @@ int currentDevIndex; QMap> allTypeDevList; -// QKafkaConsumer * kafkaConsumer; + QKafkaConsumer * kafkaConsumer; QComboBox * getDevTypeSelect(); QComboBox * getDevSelect(); diff --git a/DeviceHub/FreqReplicatorForm.cpp b/DeviceHub/FreqReplicatorForm.cpp index e52ab24..bda0658 100644 --- a/DeviceHub/FreqReplicatorForm.cpp +++ b/DeviceHub/FreqReplicatorForm.cpp @@ -29,6 +29,12 @@ void FreqReplicatorForm::drawDeviceFrameOnForm(DeviceFrameBaseDto * frameData) { + QString currentDevCode = ((DeviceHubWindow *)this->parent()->parent())->getDevSelect()->currentData().toJsonObject().find("deviceNo")->toString(); + if (currentDevCode != frameData->devCode) + { + return; + } + // 当前显示的设备编号 if (frameData->frameType == "1001") { @@ -44,5 +50,17 @@ doc.setArray(dataObj.find("outValid")->toArray()); ui->frOutStatus->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + } else if (frameData->frameType == "1002") + { + FreqReplicatorStatusDto * statusFrameDto = (FreqReplicatorStatusDto *) frameData; + + QJsonObject dataObj = statusFrameDto->toJSON().find("data")->toObject(); + QJsonDocument doc; + + doc.setArray(dataObj.find("inValid")->toArray()); + ui->frInStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + + doc.setArray(dataObj.find("outValid")->toArray()); + ui->frOutStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); } } diff --git a/DeviceHub/FreqReplicatorForm.ui b/DeviceHub/FreqReplicatorForm.ui index cbc4ffb..2f6c15d 100644 --- a/DeviceHub/FreqReplicatorForm.ui +++ b/DeviceHub/FreqReplicatorForm.ui @@ -129,7 +129,7 @@ - 输出监测 + 输出监测AB @@ -148,7 +148,7 @@ - 输入状态 + 输入状态AB @@ -170,6 +170,64 @@ + + + + 540 + 130 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输入状态CD + + + + + + 620 + 130 + 200 + 30 + + + + + + + 100 + 230 + 400 + 30 + + + + + + + 20 + 230 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输出监测CD + + diff --git a/DeviceHub/common/common.pri b/DeviceHub/common/common.pri index feeba36..86259e8 100644 --- a/DeviceHub/common/common.pri +++ b/DeviceHub/common/common.pri @@ -3,8 +3,8 @@ SOURCES += $$PWD/utils/QByteUtil.cpp SOURCES += $$PWD/utils/QSerialPortUtil.cpp SOURCES += $$PWD/utils/QLogUtil.cpp -#SOURCES += $$PWD/utils/QKafkaConsumer.cpp -#SOURCES += $$PWD/utils/QKafkaProducer.cpp +SOURCES += $$PWD/utils/QKafkaConsumer.cpp +SOURCES += $$PWD/utils/QKafkaProducer.cpp SOURCES += $$PWD/utils/HttpRequestUtil.cpp SOURCES += $$PWD/utils/MD5.cpp SOURCES += $$PWD/HttpRequestController.cpp @@ -13,8 +13,8 @@ HEADERS += $$PWD/utils/QByteUtil.h HEADERS += $$PWD/utils/QSerialPortUtil.h HEADERS += $$PWD/utils/QLogUtil.h -#HEADERS += $$PWD/utils/QKafkaConsumer.h -#HEADERS += $$PWD/utils/QKafkaProducer.h +HEADERS += $$PWD/utils/QKafkaConsumer.h +HEADERS += $$PWD/utils/QKafkaProducer.h HEADERS += $$PWD/utils/HttpRequestUtil.h HEADERS += $$PWD/utils/DefHead.h HEADERS += $$PWD/utils/MD5.h diff --git a/DeviceHub/common/utils/QKafkaConsumer.cpp b/DeviceHub/common/utils/QKafkaConsumer.cpp index b3cb9fd..c62f08e 100644 --- a/DeviceHub/common/utils/QKafkaConsumer.cpp +++ b/DeviceHub/common/utils/QKafkaConsumer.cpp @@ -1,4 +1,5 @@ #include "QKafkaConsumer.h" +#include "SettingConfig.h" #include #include @@ -25,6 +26,14 @@ int QKafkaConsumer::createConsumer() { int ret = conf->set("metadata.broker.list", brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } + if (ret != RdKafka::Conf::CONF_OK) { std::cerr << "RdKafka conf set brokerlist failed :" << errStr.c_str() << std::endl; diff --git a/DeviceHub/common/utils/QKafkaProducer.cpp b/DeviceHub/common/utils/QKafkaProducer.cpp index c0db128..109e581 100644 --- a/DeviceHub/common/utils/QKafkaProducer.cpp +++ b/DeviceHub/common/utils/QKafkaProducer.cpp @@ -1,4 +1,5 @@ #include "QKafkaProducer.h" +#include "SettingConfig.h" #include QKafkaProducer::QKafkaProducer(QObject *parent) : QObject(parent) @@ -20,6 +21,13 @@ { int result; result = this->conf->set("bootstrap.servers", this->brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } if (result != RdKafka::Conf::CONF_OK) { diff --git a/DeviceHub/common/utils/QSerialPortUtil.cpp b/DeviceHub/common/utils/QSerialPortUtil.cpp index 9de0047..a5e07ac 100644 --- a/DeviceHub/common/utils/QSerialPortUtil.cpp +++ b/DeviceHub/common/utils/QSerialPortUtil.cpp @@ -25,6 +25,8 @@ open = serial.open(QIODevice::ReadWrite); + std::cout << portName.toStdString() << " " << QString::number(baudRate).toStdString() << " " << open << std::endl; + if (open == true) { // mock data received per second diff --git a/DeviceHub/common/utils/SettingConfig.cpp b/DeviceHub/common/utils/SettingConfig.cpp index 6f17295..ea27d43 100644 --- a/DeviceHub/common/utils/SettingConfig.cpp +++ b/DeviceHub/common/utils/SettingConfig.cpp @@ -14,6 +14,9 @@ KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); KAFKA_CMD_TOPIC = getProperty("kafka", "cmdTopic").toString(); KAFKA_CMDCB_TOPIC = getProperty("kafka", "cmdcbTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "saslUsername").toString(); + SASL_PASSWORD = getProperty("kafka", "saslPassword").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/DeviceHub/common/utils/SettingConfig.h b/DeviceHub/common/utils/SettingConfig.h index c50bcc0..f6cc2af 100644 --- a/DeviceHub/common/utils/SettingConfig.h +++ b/DeviceHub/common/utils/SettingConfig.h @@ -36,6 +36,9 @@ QString KAFKA_DATA_TOPIC; QString KAFKA_CMD_TOPIC; QString KAFKA_CMDCB_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/DeviceHub/conf/config.ini b/DeviceHub/conf/config.ini index 64e57ba..ad7cb35 100644 --- a/DeviceHub/conf/config.ini +++ b/DeviceHub/conf/config.ini @@ -21,4 +21,4 @@ baseUrl="http://111.198.10.15:11410" [log] -basePath="/home/admin/Qt/ZXSSCJ-Release/DevStatus/logs/" +basePath="/home/admin/Qt/ZXSSCJ-Release/DeviceHub/logs/" diff --git a/DeviceHub/device/BCodeTerminal.cpp b/DeviceHub/device/BCodeTerminal.cpp index 1e852a9..5d8ec7f 100644 --- a/DeviceHub/device/BCodeTerminal.cpp +++ b/DeviceHub/device/BCodeTerminal.cpp @@ -72,7 +72,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -84,7 +84,7 @@ } } -void BCodeTerminal::afterFramePhase(DeviceFrameBaseDto * frameDto) +void BCodeTerminal::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/BCodeTerminal.h b/DeviceHub/device/BCodeTerminal.h index f39ab6e..d823431 100644 --- a/DeviceHub/device/BCodeTerminal.h +++ b/DeviceHub/device/BCodeTerminal.h @@ -15,7 +15,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void afterFrameParse(DeviceFrameBaseDto * frameDto); void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/DeviceBase.cpp b/DeviceHub/device/DeviceBase.cpp index 06cfddd..dc8d791 100644 --- a/DeviceHub/device/DeviceBase.cpp +++ b/DeviceHub/device/DeviceBase.cpp @@ -1,10 +1,10 @@ #include "DeviceBase.h" -//#include "FrequencyTuning.h" -//#include "SignalGenerator.h" -//#include "TimeSwitcher.h" -//#include "FreqSwitcher.h" -//#include "BCodeTerminal.h" -//#include "TimeReplicator.h" +#include "FrequencyTuning.h" +#include "SignalGenerator.h" +#include "TimeSwitcher.h" +#include "FreqSwitcher.h" +#include "BCodeTerminal.h" +#include "TimeReplicator.h" #include "FreqReplicator.h" #include @@ -42,25 +42,25 @@ DeviceBase * DeviceBase::deviceFactory(QString deviceType, QObject * parent) { DeviceBase * base = 0; -// if (deviceType == "03") -// { -// base = new FrequencyTuning(parent); -// } else if (deviceType == "04") -// { -// base = new SignalGenerator(parent); -// } else if (deviceType == "05") -// { -// base = new TimeSwitcher(parent); -// } else if (deviceType == "06") -// { -// base = new FreqSwitcher(parent); -// } else if (deviceType == "07") -// { -// base = new BCodeTerminal(parent); -// } else if (deviceType == "09") -// { -// base = new TimeReplicator(parent); -// } else + if (deviceType == "03") + { + base = new FrequencyTuning(parent); + } else if (deviceType == "04") + { + base = new SignalGenerator(parent); + } else if (deviceType == "05") + { + base = new TimeSwitcher(parent); + } else if (deviceType == "06") + { + base = new FreqSwitcher(parent); + } else if (deviceType == "07") + { + base = new BCodeTerminal(parent); + } else if (deviceType == "09") + { + base = new TimeReplicator(parent); + } else if (deviceType == "10") { base = new FreqReplicator(parent); @@ -76,7 +76,12 @@ void DeviceBase::initSerialPort() { - this->serialUtil.openSerialPort(this->comName, this->baudRate); + QStringList comNameList = this->comName.split(","); + this->serialUtil.openSerialPort(comNameList.at(0), this->baudRate); + if (comNameList.size() == 2) + { + this->serialUtilB.openSerialPort(comNameList.at(1), this->baudRate); + } } void DeviceBase::sendDataToSerial(QByteArray data) diff --git a/DeviceHub/device/DeviceBase.h b/DeviceHub/device/DeviceBase.h index e06bee3..77955aa 100644 --- a/DeviceHub/device/DeviceBase.h +++ b/DeviceHub/device/DeviceBase.h @@ -3,7 +3,7 @@ #include #include "common/utils/QSerialPortUtil.h" -//#include "common/utils/QKafkaProducer.h" +#include "common/utils/QKafkaProducer.h" #include "common/utils/QByteUtil.h" #include "common/utils/QLogUtil.h" #include "common/utils/SettingConfig.h" @@ -29,7 +29,7 @@ void initSerialPort(); bool isSerialOpen(); virtual void sendDataToSerial(QByteArray data); - virtual void afterFramePhase(DeviceFrameBaseDto * frameDto) = 0; + virtual void afterFrameParse(DeviceFrameBaseDto * frameDto) = 0; virtual void mockReceivData() = 0; @@ -43,8 +43,10 @@ QString devType; QSerialPortUtil serialUtil; -// QKafkaProducer kafkaProducer; + QSerialPortUtil serialUtilB; // serial port 2 + QKafkaProducer kafkaProducer; QByteArray dataBuff; + QByteArray dataBuffB; }; #endif // DEVICEBASE_H diff --git a/DeviceHub/device/FreqReplicator.cpp b/DeviceHub/device/FreqReplicator.cpp index ea50664..a8d033b 100644 --- a/DeviceHub/device/FreqReplicator.cpp +++ b/DeviceHub/device/FreqReplicator.cpp @@ -8,13 +8,15 @@ this->devType = "10"; connect(&this->serialUtil, &QSerialPortUtil::dataRecieved, this, &FreqReplicator::dataReceivedHandler); + connect(&this->serialUtilB, &QSerialPortUtil::dataRecieved, + this, &FreqReplicator::dataBReceivedHandler); connect(this, &FreqReplicator::sendDataToDraw, ((DeviceHubWindow *)this->parent())->freqRepForm, &FreqReplicatorForm::drawDeviceFrameOnForm); -// kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); -// kafkaProducer.createProducer(); + kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); + kafkaProducer.createProducer(); this->protocol = DeviceProtocolBase::deviceProtocolFactory(devType); } @@ -30,7 +32,7 @@ QByteArray buffer; // 频率信号放大器 - buffer = QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB"); + buffer.append(QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB")); buffer.append(QByteUtil::hexStringToBytes("AA550015020001000101010101010101010101010101010101E8")); this->dataReceivedHandler(buffer); @@ -45,40 +47,55 @@ if (frameList.size() > 0) { this->dataBuff.clear(); - for (int i = 0; i < frameList.size(); i++) - { - QByteArray frameByte = frameList.at(i); - - int frameType = protocol->checkFrame(frameByte); - DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); - if (frameDto != nullptr) - { - // ★解析成数据对象 - bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); - - // 解析成功 - if (parse == true) - { - QDateTime now = QDateTime::currentDateTime(); - frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); - frameDto->milisecond = now.toMSecsSinceEpoch(); - frameDto->rawFrame = frameByte; - - frameDto->devCode = devCode; - - this->afterFramePhase(frameDto); - } - - // 在此处释放内存,不影响后续显示 - // 不在此处释放内存则会导致内存持续增加 - // 具体原因不明 - delete frameDto; - } - } + frameParse(frameList); } } -void FreqReplicator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FreqReplicator::dataBReceivedHandler(QByteArray data) +{ + this->dataBuffB.append(data); + QList frameListB = protocol->extractFrameList(this->dataBuffB); + if (frameListB.size() > 0) + { + this->dataBuffB.clear(); + frameParse(frameListB); + } +} + +void FreqReplicator::frameParse(QList frameList) +{ + for (int i = 0; i < frameList.size(); i++) + { + QByteArray frameByte = frameList.at(i); + + int frameType = protocol->checkFrame(frameByte); + DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); + if (frameDto != nullptr) + { + // ★解析成数据对象 + bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); + + // 解析成功 + if (parse == true) + { + QDateTime now = QDateTime::currentDateTime(); + frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); + frameDto->milisecond = now.toMSecsSinceEpoch(); + frameDto->rawFrame = frameByte; + + frameDto->devCode = devCode; + + this->afterFrameParse(frameDto); + } + + // 在此处释放内存,不影响后续显示 + // 不在此处释放内存则会导致内存持续增加 + // 具体原因不明 + delete frameDto; + } + } +} +void FreqReplicator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << QByteUtil::binToHexString(frameDto->rawFrame).toStdString() << std::endl; @@ -101,7 +118,7 @@ QJsonObject jsonObj = frameDto->toJSON(); jsonObj.insert("clientId", SettingConfig::getInstance().CLIENT_ID); jsonObj.insert("deviceId", deviceId); -// kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); + kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); } // 4. 在界面上简单显示相差数据结果 diff --git a/DeviceHub/device/FreqReplicator.h b/DeviceHub/device/FreqReplicator.h index 5702c28..716f800 100644 --- a/DeviceHub/device/FreqReplicator.h +++ b/DeviceHub/device/FreqReplicator.h @@ -15,13 +15,15 @@ void mockReceivData(); - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void frameParse(QList frameList); + void afterFrameParse(DeviceFrameBaseDto * frameDto); signals: void sendDataToDraw(DeviceFrameBaseDto * frameData); public slots: void dataReceivedHandler(QByteArray data); + void dataBReceivedHandler(QByteArray data); }; #endif // FREQREPLICATOR_H diff --git a/DeviceHub/device/FreqSwitcher.cpp b/DeviceHub/device/FreqSwitcher.cpp index 3873c13..5587395 100644 --- a/DeviceHub/device/FreqSwitcher.cpp +++ b/DeviceHub/device/FreqSwitcher.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void FreqSwitcher::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FreqSwitcher::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/FreqSwitcher.h b/DeviceHub/device/FreqSwitcher.h index fd19204..9c17824 100644 --- a/DeviceHub/device/FreqSwitcher.h +++ b/DeviceHub/device/FreqSwitcher.h @@ -16,7 +16,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/FrequencyTuning.cpp b/DeviceHub/device/FrequencyTuning.cpp index e2038c2..0a19747 100644 --- a/DeviceHub/device/FrequencyTuning.cpp +++ b/DeviceHub/device/FrequencyTuning.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void FrequencyTuning::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FrequencyTuning::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/FrequencyTuning.h b/DeviceHub/device/FrequencyTuning.h index af49041..f8d2b91 100644 --- a/DeviceHub/device/FrequencyTuning.h +++ b/DeviceHub/device/FrequencyTuning.h @@ -16,7 +16,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/SignalGenerator.cpp b/DeviceHub/device/SignalGenerator.cpp index e99ddc1..0d2d909 100644 --- a/DeviceHub/device/SignalGenerator.cpp +++ b/DeviceHub/device/SignalGenerator.cpp @@ -78,7 +78,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -90,7 +90,7 @@ } } -void SignalGenerator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void SignalGenerator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/SignalGenerator.h b/DeviceHub/device/SignalGenerator.h index b000e8c..2c6ffb8 100644 --- a/DeviceHub/device/SignalGenerator.h +++ b/DeviceHub/device/SignalGenerator.h @@ -18,7 +18,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/TimeReplicator.cpp b/DeviceHub/device/TimeReplicator.cpp index 4ca4547..0a96722 100644 --- a/DeviceHub/device/TimeReplicator.cpp +++ b/DeviceHub/device/TimeReplicator.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void TimeReplicator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void TimeReplicator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/TimeReplicator.h b/DeviceHub/device/TimeReplicator.h index 12b5ff4..f871c64 100644 --- a/DeviceHub/device/TimeReplicator.h +++ b/DeviceHub/device/TimeReplicator.h @@ -15,7 +15,7 @@ void mockReceivData(); - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void afterFrameParse(DeviceFrameBaseDto * frameDto); void sendDataToSerial(QByteArray data); signals: diff --git a/DeviceHub/device/TimeSwitcher.cpp b/DeviceHub/device/TimeSwitcher.cpp index aa43822..b53b501 100644 --- a/DeviceHub/device/TimeSwitcher.cpp +++ b/DeviceHub/device/TimeSwitcher.cpp @@ -76,7 +76,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -88,7 +88,7 @@ } } -void TimeSwitcher::afterFramePhase(DeviceFrameBaseDto * frameDto) +void TimeSwitcher::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.h b/DeviceHub/DeviceHubWindow.h index 62b4055..cb5875a 100644 --- a/DeviceHub/DeviceHubWindow.h +++ b/DeviceHub/DeviceHubWindow.h @@ -5,7 +5,7 @@ #include #include "common/HttpRequestController.h" -//#include "common/utils/QKafkaConsumer.h" +#include "common/utils/QKafkaConsumer.h" #include "device/DeviceBase.h" #include "FrequencyTuningForm.h" #include "SignalGeneratorForm.h" @@ -32,7 +32,7 @@ int currentDevIndex; QMap> allTypeDevList; -// QKafkaConsumer * kafkaConsumer; + QKafkaConsumer * kafkaConsumer; QComboBox * getDevTypeSelect(); QComboBox * getDevSelect(); diff --git a/DeviceHub/FreqReplicatorForm.cpp b/DeviceHub/FreqReplicatorForm.cpp index e52ab24..bda0658 100644 --- a/DeviceHub/FreqReplicatorForm.cpp +++ b/DeviceHub/FreqReplicatorForm.cpp @@ -29,6 +29,12 @@ void FreqReplicatorForm::drawDeviceFrameOnForm(DeviceFrameBaseDto * frameData) { + QString currentDevCode = ((DeviceHubWindow *)this->parent()->parent())->getDevSelect()->currentData().toJsonObject().find("deviceNo")->toString(); + if (currentDevCode != frameData->devCode) + { + return; + } + // 当前显示的设备编号 if (frameData->frameType == "1001") { @@ -44,5 +50,17 @@ doc.setArray(dataObj.find("outValid")->toArray()); ui->frOutStatus->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + } else if (frameData->frameType == "1002") + { + FreqReplicatorStatusDto * statusFrameDto = (FreqReplicatorStatusDto *) frameData; + + QJsonObject dataObj = statusFrameDto->toJSON().find("data")->toObject(); + QJsonDocument doc; + + doc.setArray(dataObj.find("inValid")->toArray()); + ui->frInStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + + doc.setArray(dataObj.find("outValid")->toArray()); + ui->frOutStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); } } diff --git a/DeviceHub/FreqReplicatorForm.ui b/DeviceHub/FreqReplicatorForm.ui index cbc4ffb..2f6c15d 100644 --- a/DeviceHub/FreqReplicatorForm.ui +++ b/DeviceHub/FreqReplicatorForm.ui @@ -129,7 +129,7 @@ - 输出监测 + 输出监测AB @@ -148,7 +148,7 @@ - 输入状态 + 输入状态AB @@ -170,6 +170,64 @@ + + + + 540 + 130 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输入状态CD + + + + + + 620 + 130 + 200 + 30 + + + + + + + 100 + 230 + 400 + 30 + + + + + + + 20 + 230 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输出监测CD + + diff --git a/DeviceHub/common/common.pri b/DeviceHub/common/common.pri index feeba36..86259e8 100644 --- a/DeviceHub/common/common.pri +++ b/DeviceHub/common/common.pri @@ -3,8 +3,8 @@ SOURCES += $$PWD/utils/QByteUtil.cpp SOURCES += $$PWD/utils/QSerialPortUtil.cpp SOURCES += $$PWD/utils/QLogUtil.cpp -#SOURCES += $$PWD/utils/QKafkaConsumer.cpp -#SOURCES += $$PWD/utils/QKafkaProducer.cpp +SOURCES += $$PWD/utils/QKafkaConsumer.cpp +SOURCES += $$PWD/utils/QKafkaProducer.cpp SOURCES += $$PWD/utils/HttpRequestUtil.cpp SOURCES += $$PWD/utils/MD5.cpp SOURCES += $$PWD/HttpRequestController.cpp @@ -13,8 +13,8 @@ HEADERS += $$PWD/utils/QByteUtil.h HEADERS += $$PWD/utils/QSerialPortUtil.h HEADERS += $$PWD/utils/QLogUtil.h -#HEADERS += $$PWD/utils/QKafkaConsumer.h -#HEADERS += $$PWD/utils/QKafkaProducer.h +HEADERS += $$PWD/utils/QKafkaConsumer.h +HEADERS += $$PWD/utils/QKafkaProducer.h HEADERS += $$PWD/utils/HttpRequestUtil.h HEADERS += $$PWD/utils/DefHead.h HEADERS += $$PWD/utils/MD5.h diff --git a/DeviceHub/common/utils/QKafkaConsumer.cpp b/DeviceHub/common/utils/QKafkaConsumer.cpp index b3cb9fd..c62f08e 100644 --- a/DeviceHub/common/utils/QKafkaConsumer.cpp +++ b/DeviceHub/common/utils/QKafkaConsumer.cpp @@ -1,4 +1,5 @@ #include "QKafkaConsumer.h" +#include "SettingConfig.h" #include #include @@ -25,6 +26,14 @@ int QKafkaConsumer::createConsumer() { int ret = conf->set("metadata.broker.list", brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } + if (ret != RdKafka::Conf::CONF_OK) { std::cerr << "RdKafka conf set brokerlist failed :" << errStr.c_str() << std::endl; diff --git a/DeviceHub/common/utils/QKafkaProducer.cpp b/DeviceHub/common/utils/QKafkaProducer.cpp index c0db128..109e581 100644 --- a/DeviceHub/common/utils/QKafkaProducer.cpp +++ b/DeviceHub/common/utils/QKafkaProducer.cpp @@ -1,4 +1,5 @@ #include "QKafkaProducer.h" +#include "SettingConfig.h" #include QKafkaProducer::QKafkaProducer(QObject *parent) : QObject(parent) @@ -20,6 +21,13 @@ { int result; result = this->conf->set("bootstrap.servers", this->brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } if (result != RdKafka::Conf::CONF_OK) { diff --git a/DeviceHub/common/utils/QSerialPortUtil.cpp b/DeviceHub/common/utils/QSerialPortUtil.cpp index 9de0047..a5e07ac 100644 --- a/DeviceHub/common/utils/QSerialPortUtil.cpp +++ b/DeviceHub/common/utils/QSerialPortUtil.cpp @@ -25,6 +25,8 @@ open = serial.open(QIODevice::ReadWrite); + std::cout << portName.toStdString() << " " << QString::number(baudRate).toStdString() << " " << open << std::endl; + if (open == true) { // mock data received per second diff --git a/DeviceHub/common/utils/SettingConfig.cpp b/DeviceHub/common/utils/SettingConfig.cpp index 6f17295..ea27d43 100644 --- a/DeviceHub/common/utils/SettingConfig.cpp +++ b/DeviceHub/common/utils/SettingConfig.cpp @@ -14,6 +14,9 @@ KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); KAFKA_CMD_TOPIC = getProperty("kafka", "cmdTopic").toString(); KAFKA_CMDCB_TOPIC = getProperty("kafka", "cmdcbTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "saslUsername").toString(); + SASL_PASSWORD = getProperty("kafka", "saslPassword").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/DeviceHub/common/utils/SettingConfig.h b/DeviceHub/common/utils/SettingConfig.h index c50bcc0..f6cc2af 100644 --- a/DeviceHub/common/utils/SettingConfig.h +++ b/DeviceHub/common/utils/SettingConfig.h @@ -36,6 +36,9 @@ QString KAFKA_DATA_TOPIC; QString KAFKA_CMD_TOPIC; QString KAFKA_CMDCB_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/DeviceHub/conf/config.ini b/DeviceHub/conf/config.ini index 64e57ba..ad7cb35 100644 --- a/DeviceHub/conf/config.ini +++ b/DeviceHub/conf/config.ini @@ -21,4 +21,4 @@ baseUrl="http://111.198.10.15:11410" [log] -basePath="/home/admin/Qt/ZXSSCJ-Release/DevStatus/logs/" +basePath="/home/admin/Qt/ZXSSCJ-Release/DeviceHub/logs/" diff --git a/DeviceHub/device/BCodeTerminal.cpp b/DeviceHub/device/BCodeTerminal.cpp index 1e852a9..5d8ec7f 100644 --- a/DeviceHub/device/BCodeTerminal.cpp +++ b/DeviceHub/device/BCodeTerminal.cpp @@ -72,7 +72,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -84,7 +84,7 @@ } } -void BCodeTerminal::afterFramePhase(DeviceFrameBaseDto * frameDto) +void BCodeTerminal::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/BCodeTerminal.h b/DeviceHub/device/BCodeTerminal.h index f39ab6e..d823431 100644 --- a/DeviceHub/device/BCodeTerminal.h +++ b/DeviceHub/device/BCodeTerminal.h @@ -15,7 +15,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void afterFrameParse(DeviceFrameBaseDto * frameDto); void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/DeviceBase.cpp b/DeviceHub/device/DeviceBase.cpp index 06cfddd..dc8d791 100644 --- a/DeviceHub/device/DeviceBase.cpp +++ b/DeviceHub/device/DeviceBase.cpp @@ -1,10 +1,10 @@ #include "DeviceBase.h" -//#include "FrequencyTuning.h" -//#include "SignalGenerator.h" -//#include "TimeSwitcher.h" -//#include "FreqSwitcher.h" -//#include "BCodeTerminal.h" -//#include "TimeReplicator.h" +#include "FrequencyTuning.h" +#include "SignalGenerator.h" +#include "TimeSwitcher.h" +#include "FreqSwitcher.h" +#include "BCodeTerminal.h" +#include "TimeReplicator.h" #include "FreqReplicator.h" #include @@ -42,25 +42,25 @@ DeviceBase * DeviceBase::deviceFactory(QString deviceType, QObject * parent) { DeviceBase * base = 0; -// if (deviceType == "03") -// { -// base = new FrequencyTuning(parent); -// } else if (deviceType == "04") -// { -// base = new SignalGenerator(parent); -// } else if (deviceType == "05") -// { -// base = new TimeSwitcher(parent); -// } else if (deviceType == "06") -// { -// base = new FreqSwitcher(parent); -// } else if (deviceType == "07") -// { -// base = new BCodeTerminal(parent); -// } else if (deviceType == "09") -// { -// base = new TimeReplicator(parent); -// } else + if (deviceType == "03") + { + base = new FrequencyTuning(parent); + } else if (deviceType == "04") + { + base = new SignalGenerator(parent); + } else if (deviceType == "05") + { + base = new TimeSwitcher(parent); + } else if (deviceType == "06") + { + base = new FreqSwitcher(parent); + } else if (deviceType == "07") + { + base = new BCodeTerminal(parent); + } else if (deviceType == "09") + { + base = new TimeReplicator(parent); + } else if (deviceType == "10") { base = new FreqReplicator(parent); @@ -76,7 +76,12 @@ void DeviceBase::initSerialPort() { - this->serialUtil.openSerialPort(this->comName, this->baudRate); + QStringList comNameList = this->comName.split(","); + this->serialUtil.openSerialPort(comNameList.at(0), this->baudRate); + if (comNameList.size() == 2) + { + this->serialUtilB.openSerialPort(comNameList.at(1), this->baudRate); + } } void DeviceBase::sendDataToSerial(QByteArray data) diff --git a/DeviceHub/device/DeviceBase.h b/DeviceHub/device/DeviceBase.h index e06bee3..77955aa 100644 --- a/DeviceHub/device/DeviceBase.h +++ b/DeviceHub/device/DeviceBase.h @@ -3,7 +3,7 @@ #include #include "common/utils/QSerialPortUtil.h" -//#include "common/utils/QKafkaProducer.h" +#include "common/utils/QKafkaProducer.h" #include "common/utils/QByteUtil.h" #include "common/utils/QLogUtil.h" #include "common/utils/SettingConfig.h" @@ -29,7 +29,7 @@ void initSerialPort(); bool isSerialOpen(); virtual void sendDataToSerial(QByteArray data); - virtual void afterFramePhase(DeviceFrameBaseDto * frameDto) = 0; + virtual void afterFrameParse(DeviceFrameBaseDto * frameDto) = 0; virtual void mockReceivData() = 0; @@ -43,8 +43,10 @@ QString devType; QSerialPortUtil serialUtil; -// QKafkaProducer kafkaProducer; + QSerialPortUtil serialUtilB; // serial port 2 + QKafkaProducer kafkaProducer; QByteArray dataBuff; + QByteArray dataBuffB; }; #endif // DEVICEBASE_H diff --git a/DeviceHub/device/FreqReplicator.cpp b/DeviceHub/device/FreqReplicator.cpp index ea50664..a8d033b 100644 --- a/DeviceHub/device/FreqReplicator.cpp +++ b/DeviceHub/device/FreqReplicator.cpp @@ -8,13 +8,15 @@ this->devType = "10"; connect(&this->serialUtil, &QSerialPortUtil::dataRecieved, this, &FreqReplicator::dataReceivedHandler); + connect(&this->serialUtilB, &QSerialPortUtil::dataRecieved, + this, &FreqReplicator::dataBReceivedHandler); connect(this, &FreqReplicator::sendDataToDraw, ((DeviceHubWindow *)this->parent())->freqRepForm, &FreqReplicatorForm::drawDeviceFrameOnForm); -// kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); -// kafkaProducer.createProducer(); + kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); + kafkaProducer.createProducer(); this->protocol = DeviceProtocolBase::deviceProtocolFactory(devType); } @@ -30,7 +32,7 @@ QByteArray buffer; // 频率信号放大器 - buffer = QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB"); + buffer.append(QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB")); buffer.append(QByteUtil::hexStringToBytes("AA550015020001000101010101010101010101010101010101E8")); this->dataReceivedHandler(buffer); @@ -45,40 +47,55 @@ if (frameList.size() > 0) { this->dataBuff.clear(); - for (int i = 0; i < frameList.size(); i++) - { - QByteArray frameByte = frameList.at(i); - - int frameType = protocol->checkFrame(frameByte); - DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); - if (frameDto != nullptr) - { - // ★解析成数据对象 - bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); - - // 解析成功 - if (parse == true) - { - QDateTime now = QDateTime::currentDateTime(); - frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); - frameDto->milisecond = now.toMSecsSinceEpoch(); - frameDto->rawFrame = frameByte; - - frameDto->devCode = devCode; - - this->afterFramePhase(frameDto); - } - - // 在此处释放内存,不影响后续显示 - // 不在此处释放内存则会导致内存持续增加 - // 具体原因不明 - delete frameDto; - } - } + frameParse(frameList); } } -void FreqReplicator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FreqReplicator::dataBReceivedHandler(QByteArray data) +{ + this->dataBuffB.append(data); + QList frameListB = protocol->extractFrameList(this->dataBuffB); + if (frameListB.size() > 0) + { + this->dataBuffB.clear(); + frameParse(frameListB); + } +} + +void FreqReplicator::frameParse(QList frameList) +{ + for (int i = 0; i < frameList.size(); i++) + { + QByteArray frameByte = frameList.at(i); + + int frameType = protocol->checkFrame(frameByte); + DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); + if (frameDto != nullptr) + { + // ★解析成数据对象 + bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); + + // 解析成功 + if (parse == true) + { + QDateTime now = QDateTime::currentDateTime(); + frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); + frameDto->milisecond = now.toMSecsSinceEpoch(); + frameDto->rawFrame = frameByte; + + frameDto->devCode = devCode; + + this->afterFrameParse(frameDto); + } + + // 在此处释放内存,不影响后续显示 + // 不在此处释放内存则会导致内存持续增加 + // 具体原因不明 + delete frameDto; + } + } +} +void FreqReplicator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << QByteUtil::binToHexString(frameDto->rawFrame).toStdString() << std::endl; @@ -101,7 +118,7 @@ QJsonObject jsonObj = frameDto->toJSON(); jsonObj.insert("clientId", SettingConfig::getInstance().CLIENT_ID); jsonObj.insert("deviceId", deviceId); -// kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); + kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); } // 4. 在界面上简单显示相差数据结果 diff --git a/DeviceHub/device/FreqReplicator.h b/DeviceHub/device/FreqReplicator.h index 5702c28..716f800 100644 --- a/DeviceHub/device/FreqReplicator.h +++ b/DeviceHub/device/FreqReplicator.h @@ -15,13 +15,15 @@ void mockReceivData(); - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void frameParse(QList frameList); + void afterFrameParse(DeviceFrameBaseDto * frameDto); signals: void sendDataToDraw(DeviceFrameBaseDto * frameData); public slots: void dataReceivedHandler(QByteArray data); + void dataBReceivedHandler(QByteArray data); }; #endif // FREQREPLICATOR_H diff --git a/DeviceHub/device/FreqSwitcher.cpp b/DeviceHub/device/FreqSwitcher.cpp index 3873c13..5587395 100644 --- a/DeviceHub/device/FreqSwitcher.cpp +++ b/DeviceHub/device/FreqSwitcher.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void FreqSwitcher::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FreqSwitcher::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/FreqSwitcher.h b/DeviceHub/device/FreqSwitcher.h index fd19204..9c17824 100644 --- a/DeviceHub/device/FreqSwitcher.h +++ b/DeviceHub/device/FreqSwitcher.h @@ -16,7 +16,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/FrequencyTuning.cpp b/DeviceHub/device/FrequencyTuning.cpp index e2038c2..0a19747 100644 --- a/DeviceHub/device/FrequencyTuning.cpp +++ b/DeviceHub/device/FrequencyTuning.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void FrequencyTuning::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FrequencyTuning::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/FrequencyTuning.h b/DeviceHub/device/FrequencyTuning.h index af49041..f8d2b91 100644 --- a/DeviceHub/device/FrequencyTuning.h +++ b/DeviceHub/device/FrequencyTuning.h @@ -16,7 +16,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/SignalGenerator.cpp b/DeviceHub/device/SignalGenerator.cpp index e99ddc1..0d2d909 100644 --- a/DeviceHub/device/SignalGenerator.cpp +++ b/DeviceHub/device/SignalGenerator.cpp @@ -78,7 +78,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -90,7 +90,7 @@ } } -void SignalGenerator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void SignalGenerator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/SignalGenerator.h b/DeviceHub/device/SignalGenerator.h index b000e8c..2c6ffb8 100644 --- a/DeviceHub/device/SignalGenerator.h +++ b/DeviceHub/device/SignalGenerator.h @@ -18,7 +18,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/TimeReplicator.cpp b/DeviceHub/device/TimeReplicator.cpp index 4ca4547..0a96722 100644 --- a/DeviceHub/device/TimeReplicator.cpp +++ b/DeviceHub/device/TimeReplicator.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void TimeReplicator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void TimeReplicator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/TimeReplicator.h b/DeviceHub/device/TimeReplicator.h index 12b5ff4..f871c64 100644 --- a/DeviceHub/device/TimeReplicator.h +++ b/DeviceHub/device/TimeReplicator.h @@ -15,7 +15,7 @@ void mockReceivData(); - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void afterFrameParse(DeviceFrameBaseDto * frameDto); void sendDataToSerial(QByteArray data); signals: diff --git a/DeviceHub/device/TimeSwitcher.cpp b/DeviceHub/device/TimeSwitcher.cpp index aa43822..b53b501 100644 --- a/DeviceHub/device/TimeSwitcher.cpp +++ b/DeviceHub/device/TimeSwitcher.cpp @@ -76,7 +76,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -88,7 +88,7 @@ } } -void TimeSwitcher::afterFramePhase(DeviceFrameBaseDto * frameDto) +void TimeSwitcher::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/TimeSwitcher.h b/DeviceHub/device/TimeSwitcher.h index ad8eda7..e091d94 100644 --- a/DeviceHub/device/TimeSwitcher.h +++ b/DeviceHub/device/TimeSwitcher.h @@ -16,7 +16,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.h b/DeviceHub/DeviceHubWindow.h index 62b4055..cb5875a 100644 --- a/DeviceHub/DeviceHubWindow.h +++ b/DeviceHub/DeviceHubWindow.h @@ -5,7 +5,7 @@ #include #include "common/HttpRequestController.h" -//#include "common/utils/QKafkaConsumer.h" +#include "common/utils/QKafkaConsumer.h" #include "device/DeviceBase.h" #include "FrequencyTuningForm.h" #include "SignalGeneratorForm.h" @@ -32,7 +32,7 @@ int currentDevIndex; QMap> allTypeDevList; -// QKafkaConsumer * kafkaConsumer; + QKafkaConsumer * kafkaConsumer; QComboBox * getDevTypeSelect(); QComboBox * getDevSelect(); diff --git a/DeviceHub/FreqReplicatorForm.cpp b/DeviceHub/FreqReplicatorForm.cpp index e52ab24..bda0658 100644 --- a/DeviceHub/FreqReplicatorForm.cpp +++ b/DeviceHub/FreqReplicatorForm.cpp @@ -29,6 +29,12 @@ void FreqReplicatorForm::drawDeviceFrameOnForm(DeviceFrameBaseDto * frameData) { + QString currentDevCode = ((DeviceHubWindow *)this->parent()->parent())->getDevSelect()->currentData().toJsonObject().find("deviceNo")->toString(); + if (currentDevCode != frameData->devCode) + { + return; + } + // 当前显示的设备编号 if (frameData->frameType == "1001") { @@ -44,5 +50,17 @@ doc.setArray(dataObj.find("outValid")->toArray()); ui->frOutStatus->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + } else if (frameData->frameType == "1002") + { + FreqReplicatorStatusDto * statusFrameDto = (FreqReplicatorStatusDto *) frameData; + + QJsonObject dataObj = statusFrameDto->toJSON().find("data")->toObject(); + QJsonDocument doc; + + doc.setArray(dataObj.find("inValid")->toArray()); + ui->frInStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + + doc.setArray(dataObj.find("outValid")->toArray()); + ui->frOutStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); } } diff --git a/DeviceHub/FreqReplicatorForm.ui b/DeviceHub/FreqReplicatorForm.ui index cbc4ffb..2f6c15d 100644 --- a/DeviceHub/FreqReplicatorForm.ui +++ b/DeviceHub/FreqReplicatorForm.ui @@ -129,7 +129,7 @@ - 输出监测 + 输出监测AB @@ -148,7 +148,7 @@ - 输入状态 + 输入状态AB @@ -170,6 +170,64 @@ + + + + 540 + 130 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输入状态CD + + + + + + 620 + 130 + 200 + 30 + + + + + + + 100 + 230 + 400 + 30 + + + + + + + 20 + 230 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输出监测CD + + diff --git a/DeviceHub/common/common.pri b/DeviceHub/common/common.pri index feeba36..86259e8 100644 --- a/DeviceHub/common/common.pri +++ b/DeviceHub/common/common.pri @@ -3,8 +3,8 @@ SOURCES += $$PWD/utils/QByteUtil.cpp SOURCES += $$PWD/utils/QSerialPortUtil.cpp SOURCES += $$PWD/utils/QLogUtil.cpp -#SOURCES += $$PWD/utils/QKafkaConsumer.cpp -#SOURCES += $$PWD/utils/QKafkaProducer.cpp +SOURCES += $$PWD/utils/QKafkaConsumer.cpp +SOURCES += $$PWD/utils/QKafkaProducer.cpp SOURCES += $$PWD/utils/HttpRequestUtil.cpp SOURCES += $$PWD/utils/MD5.cpp SOURCES += $$PWD/HttpRequestController.cpp @@ -13,8 +13,8 @@ HEADERS += $$PWD/utils/QByteUtil.h HEADERS += $$PWD/utils/QSerialPortUtil.h HEADERS += $$PWD/utils/QLogUtil.h -#HEADERS += $$PWD/utils/QKafkaConsumer.h -#HEADERS += $$PWD/utils/QKafkaProducer.h +HEADERS += $$PWD/utils/QKafkaConsumer.h +HEADERS += $$PWD/utils/QKafkaProducer.h HEADERS += $$PWD/utils/HttpRequestUtil.h HEADERS += $$PWD/utils/DefHead.h HEADERS += $$PWD/utils/MD5.h diff --git a/DeviceHub/common/utils/QKafkaConsumer.cpp b/DeviceHub/common/utils/QKafkaConsumer.cpp index b3cb9fd..c62f08e 100644 --- a/DeviceHub/common/utils/QKafkaConsumer.cpp +++ b/DeviceHub/common/utils/QKafkaConsumer.cpp @@ -1,4 +1,5 @@ #include "QKafkaConsumer.h" +#include "SettingConfig.h" #include #include @@ -25,6 +26,14 @@ int QKafkaConsumer::createConsumer() { int ret = conf->set("metadata.broker.list", brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } + if (ret != RdKafka::Conf::CONF_OK) { std::cerr << "RdKafka conf set brokerlist failed :" << errStr.c_str() << std::endl; diff --git a/DeviceHub/common/utils/QKafkaProducer.cpp b/DeviceHub/common/utils/QKafkaProducer.cpp index c0db128..109e581 100644 --- a/DeviceHub/common/utils/QKafkaProducer.cpp +++ b/DeviceHub/common/utils/QKafkaProducer.cpp @@ -1,4 +1,5 @@ #include "QKafkaProducer.h" +#include "SettingConfig.h" #include QKafkaProducer::QKafkaProducer(QObject *parent) : QObject(parent) @@ -20,6 +21,13 @@ { int result; result = this->conf->set("bootstrap.servers", this->brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } if (result != RdKafka::Conf::CONF_OK) { diff --git a/DeviceHub/common/utils/QSerialPortUtil.cpp b/DeviceHub/common/utils/QSerialPortUtil.cpp index 9de0047..a5e07ac 100644 --- a/DeviceHub/common/utils/QSerialPortUtil.cpp +++ b/DeviceHub/common/utils/QSerialPortUtil.cpp @@ -25,6 +25,8 @@ open = serial.open(QIODevice::ReadWrite); + std::cout << portName.toStdString() << " " << QString::number(baudRate).toStdString() << " " << open << std::endl; + if (open == true) { // mock data received per second diff --git a/DeviceHub/common/utils/SettingConfig.cpp b/DeviceHub/common/utils/SettingConfig.cpp index 6f17295..ea27d43 100644 --- a/DeviceHub/common/utils/SettingConfig.cpp +++ b/DeviceHub/common/utils/SettingConfig.cpp @@ -14,6 +14,9 @@ KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); KAFKA_CMD_TOPIC = getProperty("kafka", "cmdTopic").toString(); KAFKA_CMDCB_TOPIC = getProperty("kafka", "cmdcbTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "saslUsername").toString(); + SASL_PASSWORD = getProperty("kafka", "saslPassword").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/DeviceHub/common/utils/SettingConfig.h b/DeviceHub/common/utils/SettingConfig.h index c50bcc0..f6cc2af 100644 --- a/DeviceHub/common/utils/SettingConfig.h +++ b/DeviceHub/common/utils/SettingConfig.h @@ -36,6 +36,9 @@ QString KAFKA_DATA_TOPIC; QString KAFKA_CMD_TOPIC; QString KAFKA_CMDCB_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/DeviceHub/conf/config.ini b/DeviceHub/conf/config.ini index 64e57ba..ad7cb35 100644 --- a/DeviceHub/conf/config.ini +++ b/DeviceHub/conf/config.ini @@ -21,4 +21,4 @@ baseUrl="http://111.198.10.15:11410" [log] -basePath="/home/admin/Qt/ZXSSCJ-Release/DevStatus/logs/" +basePath="/home/admin/Qt/ZXSSCJ-Release/DeviceHub/logs/" diff --git a/DeviceHub/device/BCodeTerminal.cpp b/DeviceHub/device/BCodeTerminal.cpp index 1e852a9..5d8ec7f 100644 --- a/DeviceHub/device/BCodeTerminal.cpp +++ b/DeviceHub/device/BCodeTerminal.cpp @@ -72,7 +72,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -84,7 +84,7 @@ } } -void BCodeTerminal::afterFramePhase(DeviceFrameBaseDto * frameDto) +void BCodeTerminal::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/BCodeTerminal.h b/DeviceHub/device/BCodeTerminal.h index f39ab6e..d823431 100644 --- a/DeviceHub/device/BCodeTerminal.h +++ b/DeviceHub/device/BCodeTerminal.h @@ -15,7 +15,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void afterFrameParse(DeviceFrameBaseDto * frameDto); void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/DeviceBase.cpp b/DeviceHub/device/DeviceBase.cpp index 06cfddd..dc8d791 100644 --- a/DeviceHub/device/DeviceBase.cpp +++ b/DeviceHub/device/DeviceBase.cpp @@ -1,10 +1,10 @@ #include "DeviceBase.h" -//#include "FrequencyTuning.h" -//#include "SignalGenerator.h" -//#include "TimeSwitcher.h" -//#include "FreqSwitcher.h" -//#include "BCodeTerminal.h" -//#include "TimeReplicator.h" +#include "FrequencyTuning.h" +#include "SignalGenerator.h" +#include "TimeSwitcher.h" +#include "FreqSwitcher.h" +#include "BCodeTerminal.h" +#include "TimeReplicator.h" #include "FreqReplicator.h" #include @@ -42,25 +42,25 @@ DeviceBase * DeviceBase::deviceFactory(QString deviceType, QObject * parent) { DeviceBase * base = 0; -// if (deviceType == "03") -// { -// base = new FrequencyTuning(parent); -// } else if (deviceType == "04") -// { -// base = new SignalGenerator(parent); -// } else if (deviceType == "05") -// { -// base = new TimeSwitcher(parent); -// } else if (deviceType == "06") -// { -// base = new FreqSwitcher(parent); -// } else if (deviceType == "07") -// { -// base = new BCodeTerminal(parent); -// } else if (deviceType == "09") -// { -// base = new TimeReplicator(parent); -// } else + if (deviceType == "03") + { + base = new FrequencyTuning(parent); + } else if (deviceType == "04") + { + base = new SignalGenerator(parent); + } else if (deviceType == "05") + { + base = new TimeSwitcher(parent); + } else if (deviceType == "06") + { + base = new FreqSwitcher(parent); + } else if (deviceType == "07") + { + base = new BCodeTerminal(parent); + } else if (deviceType == "09") + { + base = new TimeReplicator(parent); + } else if (deviceType == "10") { base = new FreqReplicator(parent); @@ -76,7 +76,12 @@ void DeviceBase::initSerialPort() { - this->serialUtil.openSerialPort(this->comName, this->baudRate); + QStringList comNameList = this->comName.split(","); + this->serialUtil.openSerialPort(comNameList.at(0), this->baudRate); + if (comNameList.size() == 2) + { + this->serialUtilB.openSerialPort(comNameList.at(1), this->baudRate); + } } void DeviceBase::sendDataToSerial(QByteArray data) diff --git a/DeviceHub/device/DeviceBase.h b/DeviceHub/device/DeviceBase.h index e06bee3..77955aa 100644 --- a/DeviceHub/device/DeviceBase.h +++ b/DeviceHub/device/DeviceBase.h @@ -3,7 +3,7 @@ #include #include "common/utils/QSerialPortUtil.h" -//#include "common/utils/QKafkaProducer.h" +#include "common/utils/QKafkaProducer.h" #include "common/utils/QByteUtil.h" #include "common/utils/QLogUtil.h" #include "common/utils/SettingConfig.h" @@ -29,7 +29,7 @@ void initSerialPort(); bool isSerialOpen(); virtual void sendDataToSerial(QByteArray data); - virtual void afterFramePhase(DeviceFrameBaseDto * frameDto) = 0; + virtual void afterFrameParse(DeviceFrameBaseDto * frameDto) = 0; virtual void mockReceivData() = 0; @@ -43,8 +43,10 @@ QString devType; QSerialPortUtil serialUtil; -// QKafkaProducer kafkaProducer; + QSerialPortUtil serialUtilB; // serial port 2 + QKafkaProducer kafkaProducer; QByteArray dataBuff; + QByteArray dataBuffB; }; #endif // DEVICEBASE_H diff --git a/DeviceHub/device/FreqReplicator.cpp b/DeviceHub/device/FreqReplicator.cpp index ea50664..a8d033b 100644 --- a/DeviceHub/device/FreqReplicator.cpp +++ b/DeviceHub/device/FreqReplicator.cpp @@ -8,13 +8,15 @@ this->devType = "10"; connect(&this->serialUtil, &QSerialPortUtil::dataRecieved, this, &FreqReplicator::dataReceivedHandler); + connect(&this->serialUtilB, &QSerialPortUtil::dataRecieved, + this, &FreqReplicator::dataBReceivedHandler); connect(this, &FreqReplicator::sendDataToDraw, ((DeviceHubWindow *)this->parent())->freqRepForm, &FreqReplicatorForm::drawDeviceFrameOnForm); -// kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); -// kafkaProducer.createProducer(); + kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); + kafkaProducer.createProducer(); this->protocol = DeviceProtocolBase::deviceProtocolFactory(devType); } @@ -30,7 +32,7 @@ QByteArray buffer; // 频率信号放大器 - buffer = QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB"); + buffer.append(QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB")); buffer.append(QByteUtil::hexStringToBytes("AA550015020001000101010101010101010101010101010101E8")); this->dataReceivedHandler(buffer); @@ -45,40 +47,55 @@ if (frameList.size() > 0) { this->dataBuff.clear(); - for (int i = 0; i < frameList.size(); i++) - { - QByteArray frameByte = frameList.at(i); - - int frameType = protocol->checkFrame(frameByte); - DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); - if (frameDto != nullptr) - { - // ★解析成数据对象 - bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); - - // 解析成功 - if (parse == true) - { - QDateTime now = QDateTime::currentDateTime(); - frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); - frameDto->milisecond = now.toMSecsSinceEpoch(); - frameDto->rawFrame = frameByte; - - frameDto->devCode = devCode; - - this->afterFramePhase(frameDto); - } - - // 在此处释放内存,不影响后续显示 - // 不在此处释放内存则会导致内存持续增加 - // 具体原因不明 - delete frameDto; - } - } + frameParse(frameList); } } -void FreqReplicator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FreqReplicator::dataBReceivedHandler(QByteArray data) +{ + this->dataBuffB.append(data); + QList frameListB = protocol->extractFrameList(this->dataBuffB); + if (frameListB.size() > 0) + { + this->dataBuffB.clear(); + frameParse(frameListB); + } +} + +void FreqReplicator::frameParse(QList frameList) +{ + for (int i = 0; i < frameList.size(); i++) + { + QByteArray frameByte = frameList.at(i); + + int frameType = protocol->checkFrame(frameByte); + DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); + if (frameDto != nullptr) + { + // ★解析成数据对象 + bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); + + // 解析成功 + if (parse == true) + { + QDateTime now = QDateTime::currentDateTime(); + frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); + frameDto->milisecond = now.toMSecsSinceEpoch(); + frameDto->rawFrame = frameByte; + + frameDto->devCode = devCode; + + this->afterFrameParse(frameDto); + } + + // 在此处释放内存,不影响后续显示 + // 不在此处释放内存则会导致内存持续增加 + // 具体原因不明 + delete frameDto; + } + } +} +void FreqReplicator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << QByteUtil::binToHexString(frameDto->rawFrame).toStdString() << std::endl; @@ -101,7 +118,7 @@ QJsonObject jsonObj = frameDto->toJSON(); jsonObj.insert("clientId", SettingConfig::getInstance().CLIENT_ID); jsonObj.insert("deviceId", deviceId); -// kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); + kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); } // 4. 在界面上简单显示相差数据结果 diff --git a/DeviceHub/device/FreqReplicator.h b/DeviceHub/device/FreqReplicator.h index 5702c28..716f800 100644 --- a/DeviceHub/device/FreqReplicator.h +++ b/DeviceHub/device/FreqReplicator.h @@ -15,13 +15,15 @@ void mockReceivData(); - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void frameParse(QList frameList); + void afterFrameParse(DeviceFrameBaseDto * frameDto); signals: void sendDataToDraw(DeviceFrameBaseDto * frameData); public slots: void dataReceivedHandler(QByteArray data); + void dataBReceivedHandler(QByteArray data); }; #endif // FREQREPLICATOR_H diff --git a/DeviceHub/device/FreqSwitcher.cpp b/DeviceHub/device/FreqSwitcher.cpp index 3873c13..5587395 100644 --- a/DeviceHub/device/FreqSwitcher.cpp +++ b/DeviceHub/device/FreqSwitcher.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void FreqSwitcher::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FreqSwitcher::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/FreqSwitcher.h b/DeviceHub/device/FreqSwitcher.h index fd19204..9c17824 100644 --- a/DeviceHub/device/FreqSwitcher.h +++ b/DeviceHub/device/FreqSwitcher.h @@ -16,7 +16,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/FrequencyTuning.cpp b/DeviceHub/device/FrequencyTuning.cpp index e2038c2..0a19747 100644 --- a/DeviceHub/device/FrequencyTuning.cpp +++ b/DeviceHub/device/FrequencyTuning.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void FrequencyTuning::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FrequencyTuning::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/FrequencyTuning.h b/DeviceHub/device/FrequencyTuning.h index af49041..f8d2b91 100644 --- a/DeviceHub/device/FrequencyTuning.h +++ b/DeviceHub/device/FrequencyTuning.h @@ -16,7 +16,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/SignalGenerator.cpp b/DeviceHub/device/SignalGenerator.cpp index e99ddc1..0d2d909 100644 --- a/DeviceHub/device/SignalGenerator.cpp +++ b/DeviceHub/device/SignalGenerator.cpp @@ -78,7 +78,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -90,7 +90,7 @@ } } -void SignalGenerator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void SignalGenerator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/SignalGenerator.h b/DeviceHub/device/SignalGenerator.h index b000e8c..2c6ffb8 100644 --- a/DeviceHub/device/SignalGenerator.h +++ b/DeviceHub/device/SignalGenerator.h @@ -18,7 +18,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/TimeReplicator.cpp b/DeviceHub/device/TimeReplicator.cpp index 4ca4547..0a96722 100644 --- a/DeviceHub/device/TimeReplicator.cpp +++ b/DeviceHub/device/TimeReplicator.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void TimeReplicator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void TimeReplicator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/TimeReplicator.h b/DeviceHub/device/TimeReplicator.h index 12b5ff4..f871c64 100644 --- a/DeviceHub/device/TimeReplicator.h +++ b/DeviceHub/device/TimeReplicator.h @@ -15,7 +15,7 @@ void mockReceivData(); - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void afterFrameParse(DeviceFrameBaseDto * frameDto); void sendDataToSerial(QByteArray data); signals: diff --git a/DeviceHub/device/TimeSwitcher.cpp b/DeviceHub/device/TimeSwitcher.cpp index aa43822..b53b501 100644 --- a/DeviceHub/device/TimeSwitcher.cpp +++ b/DeviceHub/device/TimeSwitcher.cpp @@ -76,7 +76,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -88,7 +88,7 @@ } } -void TimeSwitcher::afterFramePhase(DeviceFrameBaseDto * frameDto) +void TimeSwitcher::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/TimeSwitcher.h b/DeviceHub/device/TimeSwitcher.h index ad8eda7..e091d94 100644 --- a/DeviceHub/device/TimeSwitcher.h +++ b/DeviceHub/device/TimeSwitcher.h @@ -16,7 +16,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/device.pri b/DeviceHub/device/device.pri index 06e82c0..fedab85 100644 --- a/DeviceHub/device/device.pri +++ b/DeviceHub/device/device.pri @@ -1,18 +1,18 @@ HEADERS += $$PWD/DeviceBase.h -#HEADERS += $$PWD/FrequencyTuning.h -#HEADERS += $$PWD/SignalGenerator.h -#HEADERS += $$PWD/TimeSwitcher.h -#HEADERS += $$PWD/FreqSwitcher.h -#HEADERS += $$PWD/TimeReplicator.h +HEADERS += $$PWD/FrequencyTuning.h +HEADERS += $$PWD/SignalGenerator.h +HEADERS += $$PWD/TimeSwitcher.h +HEADERS += $$PWD/FreqSwitcher.h +HEADERS += $$PWD/TimeReplicator.h HEADERS += $$PWD/FreqReplicator.h -#HEADERS += $$PWD/BCodeTerminal.h +HEADERS += $$PWD/BCodeTerminal.h SOURCES += $$PWD/DeviceBase.cpp -#SOURCES += $$PWD/FrequencyTuning.cpp -#SOURCES += $$PWD/SignalGenerator.cpp -#SOURCES += $$PWD/TimeSwitcher.cpp -#SOURCES += $$PWD/FreqSwitcher.cpp -#SOURCES += $$PWD/TimeReplicator.cpp +SOURCES += $$PWD/FrequencyTuning.cpp +SOURCES += $$PWD/SignalGenerator.cpp +SOURCES += $$PWD/TimeSwitcher.cpp +SOURCES += $$PWD/FreqSwitcher.cpp +SOURCES += $$PWD/TimeReplicator.cpp SOURCES += $$PWD/FreqReplicator.cpp -#SOURCES += $$PWD/BCodeTerminal.cpp +SOURCES += $$PWD/BCodeTerminal.cpp diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.h b/DeviceHub/DeviceHubWindow.h index 62b4055..cb5875a 100644 --- a/DeviceHub/DeviceHubWindow.h +++ b/DeviceHub/DeviceHubWindow.h @@ -5,7 +5,7 @@ #include #include "common/HttpRequestController.h" -//#include "common/utils/QKafkaConsumer.h" +#include "common/utils/QKafkaConsumer.h" #include "device/DeviceBase.h" #include "FrequencyTuningForm.h" #include "SignalGeneratorForm.h" @@ -32,7 +32,7 @@ int currentDevIndex; QMap> allTypeDevList; -// QKafkaConsumer * kafkaConsumer; + QKafkaConsumer * kafkaConsumer; QComboBox * getDevTypeSelect(); QComboBox * getDevSelect(); diff --git a/DeviceHub/FreqReplicatorForm.cpp b/DeviceHub/FreqReplicatorForm.cpp index e52ab24..bda0658 100644 --- a/DeviceHub/FreqReplicatorForm.cpp +++ b/DeviceHub/FreqReplicatorForm.cpp @@ -29,6 +29,12 @@ void FreqReplicatorForm::drawDeviceFrameOnForm(DeviceFrameBaseDto * frameData) { + QString currentDevCode = ((DeviceHubWindow *)this->parent()->parent())->getDevSelect()->currentData().toJsonObject().find("deviceNo")->toString(); + if (currentDevCode != frameData->devCode) + { + return; + } + // 当前显示的设备编号 if (frameData->frameType == "1001") { @@ -44,5 +50,17 @@ doc.setArray(dataObj.find("outValid")->toArray()); ui->frOutStatus->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + } else if (frameData->frameType == "1002") + { + FreqReplicatorStatusDto * statusFrameDto = (FreqReplicatorStatusDto *) frameData; + + QJsonObject dataObj = statusFrameDto->toJSON().find("data")->toObject(); + QJsonDocument doc; + + doc.setArray(dataObj.find("inValid")->toArray()); + ui->frInStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + + doc.setArray(dataObj.find("outValid")->toArray()); + ui->frOutStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); } } diff --git a/DeviceHub/FreqReplicatorForm.ui b/DeviceHub/FreqReplicatorForm.ui index cbc4ffb..2f6c15d 100644 --- a/DeviceHub/FreqReplicatorForm.ui +++ b/DeviceHub/FreqReplicatorForm.ui @@ -129,7 +129,7 @@ - 输出监测 + 输出监测AB @@ -148,7 +148,7 @@ - 输入状态 + 输入状态AB @@ -170,6 +170,64 @@ + + + + 540 + 130 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输入状态CD + + + + + + 620 + 130 + 200 + 30 + + + + + + + 100 + 230 + 400 + 30 + + + + + + + 20 + 230 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输出监测CD + + diff --git a/DeviceHub/common/common.pri b/DeviceHub/common/common.pri index feeba36..86259e8 100644 --- a/DeviceHub/common/common.pri +++ b/DeviceHub/common/common.pri @@ -3,8 +3,8 @@ SOURCES += $$PWD/utils/QByteUtil.cpp SOURCES += $$PWD/utils/QSerialPortUtil.cpp SOURCES += $$PWD/utils/QLogUtil.cpp -#SOURCES += $$PWD/utils/QKafkaConsumer.cpp -#SOURCES += $$PWD/utils/QKafkaProducer.cpp +SOURCES += $$PWD/utils/QKafkaConsumer.cpp +SOURCES += $$PWD/utils/QKafkaProducer.cpp SOURCES += $$PWD/utils/HttpRequestUtil.cpp SOURCES += $$PWD/utils/MD5.cpp SOURCES += $$PWD/HttpRequestController.cpp @@ -13,8 +13,8 @@ HEADERS += $$PWD/utils/QByteUtil.h HEADERS += $$PWD/utils/QSerialPortUtil.h HEADERS += $$PWD/utils/QLogUtil.h -#HEADERS += $$PWD/utils/QKafkaConsumer.h -#HEADERS += $$PWD/utils/QKafkaProducer.h +HEADERS += $$PWD/utils/QKafkaConsumer.h +HEADERS += $$PWD/utils/QKafkaProducer.h HEADERS += $$PWD/utils/HttpRequestUtil.h HEADERS += $$PWD/utils/DefHead.h HEADERS += $$PWD/utils/MD5.h diff --git a/DeviceHub/common/utils/QKafkaConsumer.cpp b/DeviceHub/common/utils/QKafkaConsumer.cpp index b3cb9fd..c62f08e 100644 --- a/DeviceHub/common/utils/QKafkaConsumer.cpp +++ b/DeviceHub/common/utils/QKafkaConsumer.cpp @@ -1,4 +1,5 @@ #include "QKafkaConsumer.h" +#include "SettingConfig.h" #include #include @@ -25,6 +26,14 @@ int QKafkaConsumer::createConsumer() { int ret = conf->set("metadata.broker.list", brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } + if (ret != RdKafka::Conf::CONF_OK) { std::cerr << "RdKafka conf set brokerlist failed :" << errStr.c_str() << std::endl; diff --git a/DeviceHub/common/utils/QKafkaProducer.cpp b/DeviceHub/common/utils/QKafkaProducer.cpp index c0db128..109e581 100644 --- a/DeviceHub/common/utils/QKafkaProducer.cpp +++ b/DeviceHub/common/utils/QKafkaProducer.cpp @@ -1,4 +1,5 @@ #include "QKafkaProducer.h" +#include "SettingConfig.h" #include QKafkaProducer::QKafkaProducer(QObject *parent) : QObject(parent) @@ -20,6 +21,13 @@ { int result; result = this->conf->set("bootstrap.servers", this->brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } if (result != RdKafka::Conf::CONF_OK) { diff --git a/DeviceHub/common/utils/QSerialPortUtil.cpp b/DeviceHub/common/utils/QSerialPortUtil.cpp index 9de0047..a5e07ac 100644 --- a/DeviceHub/common/utils/QSerialPortUtil.cpp +++ b/DeviceHub/common/utils/QSerialPortUtil.cpp @@ -25,6 +25,8 @@ open = serial.open(QIODevice::ReadWrite); + std::cout << portName.toStdString() << " " << QString::number(baudRate).toStdString() << " " << open << std::endl; + if (open == true) { // mock data received per second diff --git a/DeviceHub/common/utils/SettingConfig.cpp b/DeviceHub/common/utils/SettingConfig.cpp index 6f17295..ea27d43 100644 --- a/DeviceHub/common/utils/SettingConfig.cpp +++ b/DeviceHub/common/utils/SettingConfig.cpp @@ -14,6 +14,9 @@ KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); KAFKA_CMD_TOPIC = getProperty("kafka", "cmdTopic").toString(); KAFKA_CMDCB_TOPIC = getProperty("kafka", "cmdcbTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "saslUsername").toString(); + SASL_PASSWORD = getProperty("kafka", "saslPassword").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/DeviceHub/common/utils/SettingConfig.h b/DeviceHub/common/utils/SettingConfig.h index c50bcc0..f6cc2af 100644 --- a/DeviceHub/common/utils/SettingConfig.h +++ b/DeviceHub/common/utils/SettingConfig.h @@ -36,6 +36,9 @@ QString KAFKA_DATA_TOPIC; QString KAFKA_CMD_TOPIC; QString KAFKA_CMDCB_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/DeviceHub/conf/config.ini b/DeviceHub/conf/config.ini index 64e57ba..ad7cb35 100644 --- a/DeviceHub/conf/config.ini +++ b/DeviceHub/conf/config.ini @@ -21,4 +21,4 @@ baseUrl="http://111.198.10.15:11410" [log] -basePath="/home/admin/Qt/ZXSSCJ-Release/DevStatus/logs/" +basePath="/home/admin/Qt/ZXSSCJ-Release/DeviceHub/logs/" diff --git a/DeviceHub/device/BCodeTerminal.cpp b/DeviceHub/device/BCodeTerminal.cpp index 1e852a9..5d8ec7f 100644 --- a/DeviceHub/device/BCodeTerminal.cpp +++ b/DeviceHub/device/BCodeTerminal.cpp @@ -72,7 +72,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -84,7 +84,7 @@ } } -void BCodeTerminal::afterFramePhase(DeviceFrameBaseDto * frameDto) +void BCodeTerminal::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/BCodeTerminal.h b/DeviceHub/device/BCodeTerminal.h index f39ab6e..d823431 100644 --- a/DeviceHub/device/BCodeTerminal.h +++ b/DeviceHub/device/BCodeTerminal.h @@ -15,7 +15,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void afterFrameParse(DeviceFrameBaseDto * frameDto); void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/DeviceBase.cpp b/DeviceHub/device/DeviceBase.cpp index 06cfddd..dc8d791 100644 --- a/DeviceHub/device/DeviceBase.cpp +++ b/DeviceHub/device/DeviceBase.cpp @@ -1,10 +1,10 @@ #include "DeviceBase.h" -//#include "FrequencyTuning.h" -//#include "SignalGenerator.h" -//#include "TimeSwitcher.h" -//#include "FreqSwitcher.h" -//#include "BCodeTerminal.h" -//#include "TimeReplicator.h" +#include "FrequencyTuning.h" +#include "SignalGenerator.h" +#include "TimeSwitcher.h" +#include "FreqSwitcher.h" +#include "BCodeTerminal.h" +#include "TimeReplicator.h" #include "FreqReplicator.h" #include @@ -42,25 +42,25 @@ DeviceBase * DeviceBase::deviceFactory(QString deviceType, QObject * parent) { DeviceBase * base = 0; -// if (deviceType == "03") -// { -// base = new FrequencyTuning(parent); -// } else if (deviceType == "04") -// { -// base = new SignalGenerator(parent); -// } else if (deviceType == "05") -// { -// base = new TimeSwitcher(parent); -// } else if (deviceType == "06") -// { -// base = new FreqSwitcher(parent); -// } else if (deviceType == "07") -// { -// base = new BCodeTerminal(parent); -// } else if (deviceType == "09") -// { -// base = new TimeReplicator(parent); -// } else + if (deviceType == "03") + { + base = new FrequencyTuning(parent); + } else if (deviceType == "04") + { + base = new SignalGenerator(parent); + } else if (deviceType == "05") + { + base = new TimeSwitcher(parent); + } else if (deviceType == "06") + { + base = new FreqSwitcher(parent); + } else if (deviceType == "07") + { + base = new BCodeTerminal(parent); + } else if (deviceType == "09") + { + base = new TimeReplicator(parent); + } else if (deviceType == "10") { base = new FreqReplicator(parent); @@ -76,7 +76,12 @@ void DeviceBase::initSerialPort() { - this->serialUtil.openSerialPort(this->comName, this->baudRate); + QStringList comNameList = this->comName.split(","); + this->serialUtil.openSerialPort(comNameList.at(0), this->baudRate); + if (comNameList.size() == 2) + { + this->serialUtilB.openSerialPort(comNameList.at(1), this->baudRate); + } } void DeviceBase::sendDataToSerial(QByteArray data) diff --git a/DeviceHub/device/DeviceBase.h b/DeviceHub/device/DeviceBase.h index e06bee3..77955aa 100644 --- a/DeviceHub/device/DeviceBase.h +++ b/DeviceHub/device/DeviceBase.h @@ -3,7 +3,7 @@ #include #include "common/utils/QSerialPortUtil.h" -//#include "common/utils/QKafkaProducer.h" +#include "common/utils/QKafkaProducer.h" #include "common/utils/QByteUtil.h" #include "common/utils/QLogUtil.h" #include "common/utils/SettingConfig.h" @@ -29,7 +29,7 @@ void initSerialPort(); bool isSerialOpen(); virtual void sendDataToSerial(QByteArray data); - virtual void afterFramePhase(DeviceFrameBaseDto * frameDto) = 0; + virtual void afterFrameParse(DeviceFrameBaseDto * frameDto) = 0; virtual void mockReceivData() = 0; @@ -43,8 +43,10 @@ QString devType; QSerialPortUtil serialUtil; -// QKafkaProducer kafkaProducer; + QSerialPortUtil serialUtilB; // serial port 2 + QKafkaProducer kafkaProducer; QByteArray dataBuff; + QByteArray dataBuffB; }; #endif // DEVICEBASE_H diff --git a/DeviceHub/device/FreqReplicator.cpp b/DeviceHub/device/FreqReplicator.cpp index ea50664..a8d033b 100644 --- a/DeviceHub/device/FreqReplicator.cpp +++ b/DeviceHub/device/FreqReplicator.cpp @@ -8,13 +8,15 @@ this->devType = "10"; connect(&this->serialUtil, &QSerialPortUtil::dataRecieved, this, &FreqReplicator::dataReceivedHandler); + connect(&this->serialUtilB, &QSerialPortUtil::dataRecieved, + this, &FreqReplicator::dataBReceivedHandler); connect(this, &FreqReplicator::sendDataToDraw, ((DeviceHubWindow *)this->parent())->freqRepForm, &FreqReplicatorForm::drawDeviceFrameOnForm); -// kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); -// kafkaProducer.createProducer(); + kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); + kafkaProducer.createProducer(); this->protocol = DeviceProtocolBase::deviceProtocolFactory(devType); } @@ -30,7 +32,7 @@ QByteArray buffer; // 频率信号放大器 - buffer = QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB"); + buffer.append(QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB")); buffer.append(QByteUtil::hexStringToBytes("AA550015020001000101010101010101010101010101010101E8")); this->dataReceivedHandler(buffer); @@ -45,40 +47,55 @@ if (frameList.size() > 0) { this->dataBuff.clear(); - for (int i = 0; i < frameList.size(); i++) - { - QByteArray frameByte = frameList.at(i); - - int frameType = protocol->checkFrame(frameByte); - DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); - if (frameDto != nullptr) - { - // ★解析成数据对象 - bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); - - // 解析成功 - if (parse == true) - { - QDateTime now = QDateTime::currentDateTime(); - frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); - frameDto->milisecond = now.toMSecsSinceEpoch(); - frameDto->rawFrame = frameByte; - - frameDto->devCode = devCode; - - this->afterFramePhase(frameDto); - } - - // 在此处释放内存,不影响后续显示 - // 不在此处释放内存则会导致内存持续增加 - // 具体原因不明 - delete frameDto; - } - } + frameParse(frameList); } } -void FreqReplicator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FreqReplicator::dataBReceivedHandler(QByteArray data) +{ + this->dataBuffB.append(data); + QList frameListB = protocol->extractFrameList(this->dataBuffB); + if (frameListB.size() > 0) + { + this->dataBuffB.clear(); + frameParse(frameListB); + } +} + +void FreqReplicator::frameParse(QList frameList) +{ + for (int i = 0; i < frameList.size(); i++) + { + QByteArray frameByte = frameList.at(i); + + int frameType = protocol->checkFrame(frameByte); + DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); + if (frameDto != nullptr) + { + // ★解析成数据对象 + bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); + + // 解析成功 + if (parse == true) + { + QDateTime now = QDateTime::currentDateTime(); + frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); + frameDto->milisecond = now.toMSecsSinceEpoch(); + frameDto->rawFrame = frameByte; + + frameDto->devCode = devCode; + + this->afterFrameParse(frameDto); + } + + // 在此处释放内存,不影响后续显示 + // 不在此处释放内存则会导致内存持续增加 + // 具体原因不明 + delete frameDto; + } + } +} +void FreqReplicator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << QByteUtil::binToHexString(frameDto->rawFrame).toStdString() << std::endl; @@ -101,7 +118,7 @@ QJsonObject jsonObj = frameDto->toJSON(); jsonObj.insert("clientId", SettingConfig::getInstance().CLIENT_ID); jsonObj.insert("deviceId", deviceId); -// kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); + kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); } // 4. 在界面上简单显示相差数据结果 diff --git a/DeviceHub/device/FreqReplicator.h b/DeviceHub/device/FreqReplicator.h index 5702c28..716f800 100644 --- a/DeviceHub/device/FreqReplicator.h +++ b/DeviceHub/device/FreqReplicator.h @@ -15,13 +15,15 @@ void mockReceivData(); - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void frameParse(QList frameList); + void afterFrameParse(DeviceFrameBaseDto * frameDto); signals: void sendDataToDraw(DeviceFrameBaseDto * frameData); public slots: void dataReceivedHandler(QByteArray data); + void dataBReceivedHandler(QByteArray data); }; #endif // FREQREPLICATOR_H diff --git a/DeviceHub/device/FreqSwitcher.cpp b/DeviceHub/device/FreqSwitcher.cpp index 3873c13..5587395 100644 --- a/DeviceHub/device/FreqSwitcher.cpp +++ b/DeviceHub/device/FreqSwitcher.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void FreqSwitcher::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FreqSwitcher::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/FreqSwitcher.h b/DeviceHub/device/FreqSwitcher.h index fd19204..9c17824 100644 --- a/DeviceHub/device/FreqSwitcher.h +++ b/DeviceHub/device/FreqSwitcher.h @@ -16,7 +16,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/FrequencyTuning.cpp b/DeviceHub/device/FrequencyTuning.cpp index e2038c2..0a19747 100644 --- a/DeviceHub/device/FrequencyTuning.cpp +++ b/DeviceHub/device/FrequencyTuning.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void FrequencyTuning::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FrequencyTuning::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/FrequencyTuning.h b/DeviceHub/device/FrequencyTuning.h index af49041..f8d2b91 100644 --- a/DeviceHub/device/FrequencyTuning.h +++ b/DeviceHub/device/FrequencyTuning.h @@ -16,7 +16,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/SignalGenerator.cpp b/DeviceHub/device/SignalGenerator.cpp index e99ddc1..0d2d909 100644 --- a/DeviceHub/device/SignalGenerator.cpp +++ b/DeviceHub/device/SignalGenerator.cpp @@ -78,7 +78,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -90,7 +90,7 @@ } } -void SignalGenerator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void SignalGenerator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/SignalGenerator.h b/DeviceHub/device/SignalGenerator.h index b000e8c..2c6ffb8 100644 --- a/DeviceHub/device/SignalGenerator.h +++ b/DeviceHub/device/SignalGenerator.h @@ -18,7 +18,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/TimeReplicator.cpp b/DeviceHub/device/TimeReplicator.cpp index 4ca4547..0a96722 100644 --- a/DeviceHub/device/TimeReplicator.cpp +++ b/DeviceHub/device/TimeReplicator.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void TimeReplicator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void TimeReplicator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/TimeReplicator.h b/DeviceHub/device/TimeReplicator.h index 12b5ff4..f871c64 100644 --- a/DeviceHub/device/TimeReplicator.h +++ b/DeviceHub/device/TimeReplicator.h @@ -15,7 +15,7 @@ void mockReceivData(); - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void afterFrameParse(DeviceFrameBaseDto * frameDto); void sendDataToSerial(QByteArray data); signals: diff --git a/DeviceHub/device/TimeSwitcher.cpp b/DeviceHub/device/TimeSwitcher.cpp index aa43822..b53b501 100644 --- a/DeviceHub/device/TimeSwitcher.cpp +++ b/DeviceHub/device/TimeSwitcher.cpp @@ -76,7 +76,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -88,7 +88,7 @@ } } -void TimeSwitcher::afterFramePhase(DeviceFrameBaseDto * frameDto) +void TimeSwitcher::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/TimeSwitcher.h b/DeviceHub/device/TimeSwitcher.h index ad8eda7..e091d94 100644 --- a/DeviceHub/device/TimeSwitcher.h +++ b/DeviceHub/device/TimeSwitcher.h @@ -16,7 +16,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/device.pri b/DeviceHub/device/device.pri index 06e82c0..fedab85 100644 --- a/DeviceHub/device/device.pri +++ b/DeviceHub/device/device.pri @@ -1,18 +1,18 @@ HEADERS += $$PWD/DeviceBase.h -#HEADERS += $$PWD/FrequencyTuning.h -#HEADERS += $$PWD/SignalGenerator.h -#HEADERS += $$PWD/TimeSwitcher.h -#HEADERS += $$PWD/FreqSwitcher.h -#HEADERS += $$PWD/TimeReplicator.h +HEADERS += $$PWD/FrequencyTuning.h +HEADERS += $$PWD/SignalGenerator.h +HEADERS += $$PWD/TimeSwitcher.h +HEADERS += $$PWD/FreqSwitcher.h +HEADERS += $$PWD/TimeReplicator.h HEADERS += $$PWD/FreqReplicator.h -#HEADERS += $$PWD/BCodeTerminal.h +HEADERS += $$PWD/BCodeTerminal.h SOURCES += $$PWD/DeviceBase.cpp -#SOURCES += $$PWD/FrequencyTuning.cpp -#SOURCES += $$PWD/SignalGenerator.cpp -#SOURCES += $$PWD/TimeSwitcher.cpp -#SOURCES += $$PWD/FreqSwitcher.cpp -#SOURCES += $$PWD/TimeReplicator.cpp +SOURCES += $$PWD/FrequencyTuning.cpp +SOURCES += $$PWD/SignalGenerator.cpp +SOURCES += $$PWD/TimeSwitcher.cpp +SOURCES += $$PWD/FreqSwitcher.cpp +SOURCES += $$PWD/TimeReplicator.cpp SOURCES += $$PWD/FreqReplicator.cpp -#SOURCES += $$PWD/BCodeTerminal.cpp +SOURCES += $$PWD/BCodeTerminal.cpp diff --git a/DeviceHub/protocol/DeviceProtocolBase.h b/DeviceHub/protocol/DeviceProtocolBase.h index 396bda6..0b65687 100644 --- a/DeviceHub/protocol/DeviceProtocolBase.h +++ b/DeviceHub/protocol/DeviceProtocolBase.h @@ -98,7 +98,8 @@ static const QString TIME_REPLICATOR_STATUS_FRAME_TYPE = "0901"; -static const QString FREQ_REPLICATOR_STATUS_FRAME_TYPE = "1001"; +static const QString FREQ_REPLICATOR_STATUS_AB_FRAME_TYPE = "1001"; +static const QString FREQ_REPLICATOR_STATUS_CD_FRAME_TYPE = "1002"; class DeviceProtocolBase : public QObject diff --git a/DeviceHub/DeviceHubWindow.cpp b/DeviceHub/DeviceHubWindow.cpp index 14292ec..65ba2f0 100644 --- a/DeviceHub/DeviceHubWindow.cpp +++ b/DeviceHub/DeviceHubWindow.cpp @@ -36,11 +36,11 @@ } // kafka consumer -// kafkaConsumer = new QKafkaConsumer(this); -// kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); -// kafkaConsumer->createConsumer(); -// kafkaConsumer->start(); + kafkaConsumer = new QKafkaConsumer(this); + kafkaConsumer->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaConsumer->setTopic(SettingConfig::getInstance().KAFKA_CMD_TOPIC); + kafkaConsumer->createConsumer(); + kafkaConsumer->start(); // init device type and device list httpReq = new HttpRequestController(this); diff --git a/DeviceHub/DeviceHubWindow.h b/DeviceHub/DeviceHubWindow.h index 62b4055..cb5875a 100644 --- a/DeviceHub/DeviceHubWindow.h +++ b/DeviceHub/DeviceHubWindow.h @@ -5,7 +5,7 @@ #include #include "common/HttpRequestController.h" -//#include "common/utils/QKafkaConsumer.h" +#include "common/utils/QKafkaConsumer.h" #include "device/DeviceBase.h" #include "FrequencyTuningForm.h" #include "SignalGeneratorForm.h" @@ -32,7 +32,7 @@ int currentDevIndex; QMap> allTypeDevList; -// QKafkaConsumer * kafkaConsumer; + QKafkaConsumer * kafkaConsumer; QComboBox * getDevTypeSelect(); QComboBox * getDevSelect(); diff --git a/DeviceHub/FreqReplicatorForm.cpp b/DeviceHub/FreqReplicatorForm.cpp index e52ab24..bda0658 100644 --- a/DeviceHub/FreqReplicatorForm.cpp +++ b/DeviceHub/FreqReplicatorForm.cpp @@ -29,6 +29,12 @@ void FreqReplicatorForm::drawDeviceFrameOnForm(DeviceFrameBaseDto * frameData) { + QString currentDevCode = ((DeviceHubWindow *)this->parent()->parent())->getDevSelect()->currentData().toJsonObject().find("deviceNo")->toString(); + if (currentDevCode != frameData->devCode) + { + return; + } + // 当前显示的设备编号 if (frameData->frameType == "1001") { @@ -44,5 +50,17 @@ doc.setArray(dataObj.find("outValid")->toArray()); ui->frOutStatus->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + } else if (frameData->frameType == "1002") + { + FreqReplicatorStatusDto * statusFrameDto = (FreqReplicatorStatusDto *) frameData; + + QJsonObject dataObj = statusFrameDto->toJSON().find("data")->toObject(); + QJsonDocument doc; + + doc.setArray(dataObj.find("inValid")->toArray()); + ui->frInStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); + + doc.setArray(dataObj.find("outValid")->toArray()); + ui->frOutStatusCD->setText(QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData())); } } diff --git a/DeviceHub/FreqReplicatorForm.ui b/DeviceHub/FreqReplicatorForm.ui index cbc4ffb..2f6c15d 100644 --- a/DeviceHub/FreqReplicatorForm.ui +++ b/DeviceHub/FreqReplicatorForm.ui @@ -129,7 +129,7 @@ - 输出监测 + 输出监测AB @@ -148,7 +148,7 @@ - 输入状态 + 输入状态AB @@ -170,6 +170,64 @@ + + + + 540 + 130 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输入状态CD + + + + + + 620 + 130 + 200 + 30 + + + + + + + 100 + 230 + 400 + 30 + + + + + + + 20 + 230 + 80 + 30 + + + + + 微软雅黑 + 10 + + + + 输出监测CD + + diff --git a/DeviceHub/common/common.pri b/DeviceHub/common/common.pri index feeba36..86259e8 100644 --- a/DeviceHub/common/common.pri +++ b/DeviceHub/common/common.pri @@ -3,8 +3,8 @@ SOURCES += $$PWD/utils/QByteUtil.cpp SOURCES += $$PWD/utils/QSerialPortUtil.cpp SOURCES += $$PWD/utils/QLogUtil.cpp -#SOURCES += $$PWD/utils/QKafkaConsumer.cpp -#SOURCES += $$PWD/utils/QKafkaProducer.cpp +SOURCES += $$PWD/utils/QKafkaConsumer.cpp +SOURCES += $$PWD/utils/QKafkaProducer.cpp SOURCES += $$PWD/utils/HttpRequestUtil.cpp SOURCES += $$PWD/utils/MD5.cpp SOURCES += $$PWD/HttpRequestController.cpp @@ -13,8 +13,8 @@ HEADERS += $$PWD/utils/QByteUtil.h HEADERS += $$PWD/utils/QSerialPortUtil.h HEADERS += $$PWD/utils/QLogUtil.h -#HEADERS += $$PWD/utils/QKafkaConsumer.h -#HEADERS += $$PWD/utils/QKafkaProducer.h +HEADERS += $$PWD/utils/QKafkaConsumer.h +HEADERS += $$PWD/utils/QKafkaProducer.h HEADERS += $$PWD/utils/HttpRequestUtil.h HEADERS += $$PWD/utils/DefHead.h HEADERS += $$PWD/utils/MD5.h diff --git a/DeviceHub/common/utils/QKafkaConsumer.cpp b/DeviceHub/common/utils/QKafkaConsumer.cpp index b3cb9fd..c62f08e 100644 --- a/DeviceHub/common/utils/QKafkaConsumer.cpp +++ b/DeviceHub/common/utils/QKafkaConsumer.cpp @@ -1,4 +1,5 @@ #include "QKafkaConsumer.h" +#include "SettingConfig.h" #include #include @@ -25,6 +26,14 @@ int QKafkaConsumer::createConsumer() { int ret = conf->set("metadata.broker.list", brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } + if (ret != RdKafka::Conf::CONF_OK) { std::cerr << "RdKafka conf set brokerlist failed :" << errStr.c_str() << std::endl; diff --git a/DeviceHub/common/utils/QKafkaProducer.cpp b/DeviceHub/common/utils/QKafkaProducer.cpp index c0db128..109e581 100644 --- a/DeviceHub/common/utils/QKafkaProducer.cpp +++ b/DeviceHub/common/utils/QKafkaProducer.cpp @@ -1,4 +1,5 @@ #include "QKafkaProducer.h" +#include "SettingConfig.h" #include QKafkaProducer::QKafkaProducer(QObject *parent) : QObject(parent) @@ -20,6 +21,13 @@ { int result; result = this->conf->set("bootstrap.servers", this->brokers.toStdString(), errStr); + if (SettingConfig::getInstance().NEED_SASL == 1) + { + conf->set("sasl.username", SettingConfig::getInstance().SASL_USERNAME.toStdString(), errStr); + conf->set("sasl.password", SettingConfig::getInstance().SASL_PASSWORD.toStdString(), errStr); + conf->set("security.protocol", "sasl_plaintext", errStr); + conf->set("sasl.mechanisms", "PLAIN", errStr); + } if (result != RdKafka::Conf::CONF_OK) { diff --git a/DeviceHub/common/utils/QSerialPortUtil.cpp b/DeviceHub/common/utils/QSerialPortUtil.cpp index 9de0047..a5e07ac 100644 --- a/DeviceHub/common/utils/QSerialPortUtil.cpp +++ b/DeviceHub/common/utils/QSerialPortUtil.cpp @@ -25,6 +25,8 @@ open = serial.open(QIODevice::ReadWrite); + std::cout << portName.toStdString() << " " << QString::number(baudRate).toStdString() << " " << open << std::endl; + if (open == true) { // mock data received per second diff --git a/DeviceHub/common/utils/SettingConfig.cpp b/DeviceHub/common/utils/SettingConfig.cpp index 6f17295..ea27d43 100644 --- a/DeviceHub/common/utils/SettingConfig.cpp +++ b/DeviceHub/common/utils/SettingConfig.cpp @@ -14,6 +14,9 @@ KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); KAFKA_CMD_TOPIC = getProperty("kafka", "cmdTopic").toString(); KAFKA_CMDCB_TOPIC = getProperty("kafka", "cmdcbTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "saslUsername").toString(); + SASL_PASSWORD = getProperty("kafka", "saslPassword").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/DeviceHub/common/utils/SettingConfig.h b/DeviceHub/common/utils/SettingConfig.h index c50bcc0..f6cc2af 100644 --- a/DeviceHub/common/utils/SettingConfig.h +++ b/DeviceHub/common/utils/SettingConfig.h @@ -36,6 +36,9 @@ QString KAFKA_DATA_TOPIC; QString KAFKA_CMD_TOPIC; QString KAFKA_CMDCB_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/DeviceHub/conf/config.ini b/DeviceHub/conf/config.ini index 64e57ba..ad7cb35 100644 --- a/DeviceHub/conf/config.ini +++ b/DeviceHub/conf/config.ini @@ -21,4 +21,4 @@ baseUrl="http://111.198.10.15:11410" [log] -basePath="/home/admin/Qt/ZXSSCJ-Release/DevStatus/logs/" +basePath="/home/admin/Qt/ZXSSCJ-Release/DeviceHub/logs/" diff --git a/DeviceHub/device/BCodeTerminal.cpp b/DeviceHub/device/BCodeTerminal.cpp index 1e852a9..5d8ec7f 100644 --- a/DeviceHub/device/BCodeTerminal.cpp +++ b/DeviceHub/device/BCodeTerminal.cpp @@ -72,7 +72,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -84,7 +84,7 @@ } } -void BCodeTerminal::afterFramePhase(DeviceFrameBaseDto * frameDto) +void BCodeTerminal::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/BCodeTerminal.h b/DeviceHub/device/BCodeTerminal.h index f39ab6e..d823431 100644 --- a/DeviceHub/device/BCodeTerminal.h +++ b/DeviceHub/device/BCodeTerminal.h @@ -15,7 +15,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void afterFrameParse(DeviceFrameBaseDto * frameDto); void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/DeviceBase.cpp b/DeviceHub/device/DeviceBase.cpp index 06cfddd..dc8d791 100644 --- a/DeviceHub/device/DeviceBase.cpp +++ b/DeviceHub/device/DeviceBase.cpp @@ -1,10 +1,10 @@ #include "DeviceBase.h" -//#include "FrequencyTuning.h" -//#include "SignalGenerator.h" -//#include "TimeSwitcher.h" -//#include "FreqSwitcher.h" -//#include "BCodeTerminal.h" -//#include "TimeReplicator.h" +#include "FrequencyTuning.h" +#include "SignalGenerator.h" +#include "TimeSwitcher.h" +#include "FreqSwitcher.h" +#include "BCodeTerminal.h" +#include "TimeReplicator.h" #include "FreqReplicator.h" #include @@ -42,25 +42,25 @@ DeviceBase * DeviceBase::deviceFactory(QString deviceType, QObject * parent) { DeviceBase * base = 0; -// if (deviceType == "03") -// { -// base = new FrequencyTuning(parent); -// } else if (deviceType == "04") -// { -// base = new SignalGenerator(parent); -// } else if (deviceType == "05") -// { -// base = new TimeSwitcher(parent); -// } else if (deviceType == "06") -// { -// base = new FreqSwitcher(parent); -// } else if (deviceType == "07") -// { -// base = new BCodeTerminal(parent); -// } else if (deviceType == "09") -// { -// base = new TimeReplicator(parent); -// } else + if (deviceType == "03") + { + base = new FrequencyTuning(parent); + } else if (deviceType == "04") + { + base = new SignalGenerator(parent); + } else if (deviceType == "05") + { + base = new TimeSwitcher(parent); + } else if (deviceType == "06") + { + base = new FreqSwitcher(parent); + } else if (deviceType == "07") + { + base = new BCodeTerminal(parent); + } else if (deviceType == "09") + { + base = new TimeReplicator(parent); + } else if (deviceType == "10") { base = new FreqReplicator(parent); @@ -76,7 +76,12 @@ void DeviceBase::initSerialPort() { - this->serialUtil.openSerialPort(this->comName, this->baudRate); + QStringList comNameList = this->comName.split(","); + this->serialUtil.openSerialPort(comNameList.at(0), this->baudRate); + if (comNameList.size() == 2) + { + this->serialUtilB.openSerialPort(comNameList.at(1), this->baudRate); + } } void DeviceBase::sendDataToSerial(QByteArray data) diff --git a/DeviceHub/device/DeviceBase.h b/DeviceHub/device/DeviceBase.h index e06bee3..77955aa 100644 --- a/DeviceHub/device/DeviceBase.h +++ b/DeviceHub/device/DeviceBase.h @@ -3,7 +3,7 @@ #include #include "common/utils/QSerialPortUtil.h" -//#include "common/utils/QKafkaProducer.h" +#include "common/utils/QKafkaProducer.h" #include "common/utils/QByteUtil.h" #include "common/utils/QLogUtil.h" #include "common/utils/SettingConfig.h" @@ -29,7 +29,7 @@ void initSerialPort(); bool isSerialOpen(); virtual void sendDataToSerial(QByteArray data); - virtual void afterFramePhase(DeviceFrameBaseDto * frameDto) = 0; + virtual void afterFrameParse(DeviceFrameBaseDto * frameDto) = 0; virtual void mockReceivData() = 0; @@ -43,8 +43,10 @@ QString devType; QSerialPortUtil serialUtil; -// QKafkaProducer kafkaProducer; + QSerialPortUtil serialUtilB; // serial port 2 + QKafkaProducer kafkaProducer; QByteArray dataBuff; + QByteArray dataBuffB; }; #endif // DEVICEBASE_H diff --git a/DeviceHub/device/FreqReplicator.cpp b/DeviceHub/device/FreqReplicator.cpp index ea50664..a8d033b 100644 --- a/DeviceHub/device/FreqReplicator.cpp +++ b/DeviceHub/device/FreqReplicator.cpp @@ -8,13 +8,15 @@ this->devType = "10"; connect(&this->serialUtil, &QSerialPortUtil::dataRecieved, this, &FreqReplicator::dataReceivedHandler); + connect(&this->serialUtilB, &QSerialPortUtil::dataRecieved, + this, &FreqReplicator::dataBReceivedHandler); connect(this, &FreqReplicator::sendDataToDraw, ((DeviceHubWindow *)this->parent())->freqRepForm, &FreqReplicatorForm::drawDeviceFrameOnForm); -// kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); -// kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); -// kafkaProducer.createProducer(); + kafkaProducer.setBrokers(SettingConfig::getInstance().KAFKA_BROKERS); + kafkaProducer.setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC); + kafkaProducer.createProducer(); this->protocol = DeviceProtocolBase::deviceProtocolFactory(devType); } @@ -30,7 +32,7 @@ QByteArray buffer; // 频率信号放大器 - buffer = QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB"); + buffer.append(QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB")); buffer.append(QByteUtil::hexStringToBytes("AA550015020001000101010101010101010101010101010101E8")); this->dataReceivedHandler(buffer); @@ -45,40 +47,55 @@ if (frameList.size() > 0) { this->dataBuff.clear(); - for (int i = 0; i < frameList.size(); i++) - { - QByteArray frameByte = frameList.at(i); - - int frameType = protocol->checkFrame(frameByte); - DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); - if (frameDto != nullptr) - { - // ★解析成数据对象 - bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); - - // 解析成功 - if (parse == true) - { - QDateTime now = QDateTime::currentDateTime(); - frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); - frameDto->milisecond = now.toMSecsSinceEpoch(); - frameDto->rawFrame = frameByte; - - frameDto->devCode = devCode; - - this->afterFramePhase(frameDto); - } - - // 在此处释放内存,不影响后续显示 - // 不在此处释放内存则会导致内存持续增加 - // 具体原因不明 - delete frameDto; - } - } + frameParse(frameList); } } -void FreqReplicator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FreqReplicator::dataBReceivedHandler(QByteArray data) +{ + this->dataBuffB.append(data); + QList frameListB = protocol->extractFrameList(this->dataBuffB); + if (frameListB.size() > 0) + { + this->dataBuffB.clear(); + frameParse(frameListB); + } +} + +void FreqReplicator::frameParse(QList frameList) +{ + for (int i = 0; i < frameList.size(); i++) + { + QByteArray frameByte = frameList.at(i); + + int frameType = protocol->checkFrame(frameByte); + DeviceFrameBaseDto * frameDto = protocol->frameFactory(frameType); + if (frameDto != nullptr) + { + // ★解析成数据对象 + bool parse = protocol->parseDeviceFrameData(frameByte, frameDto, frameType); + + // 解析成功 + if (parse == true) + { + QDateTime now = QDateTime::currentDateTime(); + frameDto->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); + frameDto->milisecond = now.toMSecsSinceEpoch(); + frameDto->rawFrame = frameByte; + + frameDto->devCode = devCode; + + this->afterFrameParse(frameDto); + } + + // 在此处释放内存,不影响后续显示 + // 不在此处释放内存则会导致内存持续增加 + // 具体原因不明 + delete frameDto; + } + } +} +void FreqReplicator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << QByteUtil::binToHexString(frameDto->rawFrame).toStdString() << std::endl; @@ -101,7 +118,7 @@ QJsonObject jsonObj = frameDto->toJSON(); jsonObj.insert("clientId", SettingConfig::getInstance().CLIENT_ID); jsonObj.insert("deviceId", deviceId); -// kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); + kafkaProducer.produceMessage(QString(QJsonDocument(jsonObj).toJson(QJsonDocument::Compact))); } // 4. 在界面上简单显示相差数据结果 diff --git a/DeviceHub/device/FreqReplicator.h b/DeviceHub/device/FreqReplicator.h index 5702c28..716f800 100644 --- a/DeviceHub/device/FreqReplicator.h +++ b/DeviceHub/device/FreqReplicator.h @@ -15,13 +15,15 @@ void mockReceivData(); - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void frameParse(QList frameList); + void afterFrameParse(DeviceFrameBaseDto * frameDto); signals: void sendDataToDraw(DeviceFrameBaseDto * frameData); public slots: void dataReceivedHandler(QByteArray data); + void dataBReceivedHandler(QByteArray data); }; #endif // FREQREPLICATOR_H diff --git a/DeviceHub/device/FreqSwitcher.cpp b/DeviceHub/device/FreqSwitcher.cpp index 3873c13..5587395 100644 --- a/DeviceHub/device/FreqSwitcher.cpp +++ b/DeviceHub/device/FreqSwitcher.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void FreqSwitcher::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FreqSwitcher::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/FreqSwitcher.h b/DeviceHub/device/FreqSwitcher.h index fd19204..9c17824 100644 --- a/DeviceHub/device/FreqSwitcher.h +++ b/DeviceHub/device/FreqSwitcher.h @@ -16,7 +16,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/FrequencyTuning.cpp b/DeviceHub/device/FrequencyTuning.cpp index e2038c2..0a19747 100644 --- a/DeviceHub/device/FrequencyTuning.cpp +++ b/DeviceHub/device/FrequencyTuning.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void FrequencyTuning::afterFramePhase(DeviceFrameBaseDto * frameDto) +void FrequencyTuning::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/FrequencyTuning.h b/DeviceHub/device/FrequencyTuning.h index af49041..f8d2b91 100644 --- a/DeviceHub/device/FrequencyTuning.h +++ b/DeviceHub/device/FrequencyTuning.h @@ -16,7 +16,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/SignalGenerator.cpp b/DeviceHub/device/SignalGenerator.cpp index e99ddc1..0d2d909 100644 --- a/DeviceHub/device/SignalGenerator.cpp +++ b/DeviceHub/device/SignalGenerator.cpp @@ -78,7 +78,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -90,7 +90,7 @@ } } -void SignalGenerator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void SignalGenerator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/SignalGenerator.h b/DeviceHub/device/SignalGenerator.h index b000e8c..2c6ffb8 100644 --- a/DeviceHub/device/SignalGenerator.h +++ b/DeviceHub/device/SignalGenerator.h @@ -18,7 +18,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/TimeReplicator.cpp b/DeviceHub/device/TimeReplicator.cpp index 4ca4547..0a96722 100644 --- a/DeviceHub/device/TimeReplicator.cpp +++ b/DeviceHub/device/TimeReplicator.cpp @@ -75,7 +75,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -87,7 +87,7 @@ } } -void TimeReplicator::afterFramePhase(DeviceFrameBaseDto * frameDto) +void TimeReplicator::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/TimeReplicator.h b/DeviceHub/device/TimeReplicator.h index 12b5ff4..f871c64 100644 --- a/DeviceHub/device/TimeReplicator.h +++ b/DeviceHub/device/TimeReplicator.h @@ -15,7 +15,7 @@ void mockReceivData(); - void afterFramePhase(DeviceFrameBaseDto * frameDto); + void afterFrameParse(DeviceFrameBaseDto * frameDto); void sendDataToSerial(QByteArray data); signals: diff --git a/DeviceHub/device/TimeSwitcher.cpp b/DeviceHub/device/TimeSwitcher.cpp index aa43822..b53b501 100644 --- a/DeviceHub/device/TimeSwitcher.cpp +++ b/DeviceHub/device/TimeSwitcher.cpp @@ -76,7 +76,7 @@ frameDto->devCode = devCode; - this->afterFramePhase(frameDto); + this->afterFrameParse(frameDto); } // 在此处释放内存,不影响后续显示 @@ -88,7 +88,7 @@ } } -void TimeSwitcher::afterFramePhase(DeviceFrameBaseDto * frameDto) +void TimeSwitcher::afterFrameParse(DeviceFrameBaseDto * frameDto) { std::cout << "frame type: " << typeid(* frameDto).name() << std::endl; std::cout << frameDto->rawFrame.toStdString() << std::endl; diff --git a/DeviceHub/device/TimeSwitcher.h b/DeviceHub/device/TimeSwitcher.h index ad8eda7..e091d94 100644 --- a/DeviceHub/device/TimeSwitcher.h +++ b/DeviceHub/device/TimeSwitcher.h @@ -16,7 +16,7 @@ void mockReceivData() override; - void afterFramePhase(DeviceFrameBaseDto * frameDto) override; + void afterFrameParse(DeviceFrameBaseDto * frameDto) override; void sendDataToSerial(QByteArray data) override; signals: diff --git a/DeviceHub/device/device.pri b/DeviceHub/device/device.pri index 06e82c0..fedab85 100644 --- a/DeviceHub/device/device.pri +++ b/DeviceHub/device/device.pri @@ -1,18 +1,18 @@ HEADERS += $$PWD/DeviceBase.h -#HEADERS += $$PWD/FrequencyTuning.h -#HEADERS += $$PWD/SignalGenerator.h -#HEADERS += $$PWD/TimeSwitcher.h -#HEADERS += $$PWD/FreqSwitcher.h -#HEADERS += $$PWD/TimeReplicator.h +HEADERS += $$PWD/FrequencyTuning.h +HEADERS += $$PWD/SignalGenerator.h +HEADERS += $$PWD/TimeSwitcher.h +HEADERS += $$PWD/FreqSwitcher.h +HEADERS += $$PWD/TimeReplicator.h HEADERS += $$PWD/FreqReplicator.h -#HEADERS += $$PWD/BCodeTerminal.h +HEADERS += $$PWD/BCodeTerminal.h SOURCES += $$PWD/DeviceBase.cpp -#SOURCES += $$PWD/FrequencyTuning.cpp -#SOURCES += $$PWD/SignalGenerator.cpp -#SOURCES += $$PWD/TimeSwitcher.cpp -#SOURCES += $$PWD/FreqSwitcher.cpp -#SOURCES += $$PWD/TimeReplicator.cpp +SOURCES += $$PWD/FrequencyTuning.cpp +SOURCES += $$PWD/SignalGenerator.cpp +SOURCES += $$PWD/TimeSwitcher.cpp +SOURCES += $$PWD/FreqSwitcher.cpp +SOURCES += $$PWD/TimeReplicator.cpp SOURCES += $$PWD/FreqReplicator.cpp -#SOURCES += $$PWD/BCodeTerminal.cpp +SOURCES += $$PWD/BCodeTerminal.cpp diff --git a/DeviceHub/protocol/DeviceProtocolBase.h b/DeviceHub/protocol/DeviceProtocolBase.h index 396bda6..0b65687 100644 --- a/DeviceHub/protocol/DeviceProtocolBase.h +++ b/DeviceHub/protocol/DeviceProtocolBase.h @@ -98,7 +98,8 @@ static const QString TIME_REPLICATOR_STATUS_FRAME_TYPE = "0901"; -static const QString FREQ_REPLICATOR_STATUS_FRAME_TYPE = "1001"; +static const QString FREQ_REPLICATOR_STATUS_AB_FRAME_TYPE = "1001"; +static const QString FREQ_REPLICATOR_STATUS_CD_FRAME_TYPE = "1002"; class DeviceProtocolBase : public QObject diff --git a/DeviceHub/protocol/FreqReplicatorProtocolTX.cpp b/DeviceHub/protocol/FreqReplicatorProtocolTX.cpp index f6fd3e9..b99d5ed 100644 --- a/DeviceHub/protocol/FreqReplicatorProtocolTX.cpp +++ b/DeviceHub/protocol/FreqReplicatorProtocolTX.cpp @@ -55,6 +55,8 @@ ((FreqReplicatorStatusDto *) frameData)->outValid.append(outputBD.mid(0, outputBD.size() - 1)); ((FreqReplicatorStatusDto *) frameData)->outValid.append(""); ((FreqReplicatorStatusDto *) frameData)->outValid.append(""); + + ((FreqReplicatorStatusDto *)frameData)->frameType = FREQ_REPLICATOR_STATUS_AB_FRAME_TYPE; } else { ((FreqReplicatorStatusDto *) frameData)->abOrCd = "CD"; @@ -77,9 +79,9 @@ ((FreqReplicatorStatusDto *) frameData)->outValid.append(""); ((FreqReplicatorStatusDto *) frameData)->outValid.append(outputAC.mid(0, outputAC.size() - 1)); ((FreqReplicatorStatusDto *) frameData)->outValid.append(outputBD.mid(0, outputBD.size() - 1)); - } - ((FreqReplicatorStatusDto *)frameData)->frameType = FREQ_REPLICATOR_STATUS_FRAME_TYPE; + ((FreqReplicatorStatusDto *)frameData)->frameType = FREQ_REPLICATOR_STATUS_CD_FRAME_TYPE; + } return true; }