diff --git a/CounterAcqBM/CounterDevice.cpp b/CounterAcqBM/CounterDevice.cpp index 8c43fc3..6ba2a5d 100644 --- a/CounterAcqBM/CounterDevice.cpp +++ b/CounterAcqBM/CounterDevice.cpp @@ -140,7 +140,7 @@ if (counterData->channelId == counterData->channelRefId) { // 自身是参考通道 - bench.insert(currentFrameId, counterData->channelData); + counterData->clone(&bench); counterData->channelClockValue = 0; emit successDataCalculate(counterData); @@ -152,9 +152,9 @@ for (int i = 0; i < hisList.size(); i++) { CounterDataDto * hisItem = hisList.at(i); - if (hisItem->frameId == currentFrameId) + if (qAbs(hisItem->milisecond - bench.milisecond) < 500) { - hisItem->channelClockValue = (hisItem->channelData - thisBench) * 10; + hisItem->channelClockValue = (hisItem->channelData - thisBench) * 10 * 0.001; // ns emit successDataCalculate(hisItem); delete hisItem; @@ -166,11 +166,11 @@ } else { // 自身不是参考通道,减去相同frameId的参考通道值 - if (bench.contains(currentFrameId) == true) + if (qAbs(bench.milisecond - counterData->milisecond) < 500) { // 在参考基准中能找到 - qlonglong currentBench = bench.find(currentFrameId).value(); - counterData->channelClockValue = (counterData->channelData - currentBench) * 10; // 10ps + qlonglong currentBench = bench.channelData; + counterData->channelClockValue = (counterData->channelData - currentBench) * 10 * 0.001; // 10ps - ns emit successDataCalculate(counterData); } else diff --git a/CounterAcqBM/CounterDevice.cpp b/CounterAcqBM/CounterDevice.cpp index 8c43fc3..6ba2a5d 100644 --- a/CounterAcqBM/CounterDevice.cpp +++ b/CounterAcqBM/CounterDevice.cpp @@ -140,7 +140,7 @@ if (counterData->channelId == counterData->channelRefId) { // 自身是参考通道 - bench.insert(currentFrameId, counterData->channelData); + counterData->clone(&bench); counterData->channelClockValue = 0; emit successDataCalculate(counterData); @@ -152,9 +152,9 @@ for (int i = 0; i < hisList.size(); i++) { CounterDataDto * hisItem = hisList.at(i); - if (hisItem->frameId == currentFrameId) + if (qAbs(hisItem->milisecond - bench.milisecond) < 500) { - hisItem->channelClockValue = (hisItem->channelData - thisBench) * 10; + hisItem->channelClockValue = (hisItem->channelData - thisBench) * 10 * 0.001; // ns emit successDataCalculate(hisItem); delete hisItem; @@ -166,11 +166,11 @@ } else { // 自身不是参考通道,减去相同frameId的参考通道值 - if (bench.contains(currentFrameId) == true) + if (qAbs(bench.milisecond - counterData->milisecond) < 500) { // 在参考基准中能找到 - qlonglong currentBench = bench.find(currentFrameId).value(); - counterData->channelClockValue = (counterData->channelData - currentBench) * 10; // 10ps + qlonglong currentBench = bench.channelData; + counterData->channelClockValue = (counterData->channelData - currentBench) * 10 * 0.001; // 10ps - ns emit successDataCalculate(counterData); } else diff --git a/CounterAcqBM/CounterDevice.h b/CounterAcqBM/CounterDevice.h index 654a96d..80cc85f 100644 --- a/CounterAcqBM/CounterDevice.h +++ b/CounterAcqBM/CounterDevice.h @@ -37,7 +37,7 @@ QKafkaUtil kafkaUtil; QByteArray dataBuff; - QMap bench; + CounterDataDto bench; QList hisList; void pushChannelRawFrame(CounterDataDto * counterData); diff --git a/CounterAcqBM/CounterDevice.cpp b/CounterAcqBM/CounterDevice.cpp index 8c43fc3..6ba2a5d 100644 --- a/CounterAcqBM/CounterDevice.cpp +++ b/CounterAcqBM/CounterDevice.cpp @@ -140,7 +140,7 @@ if (counterData->channelId == counterData->channelRefId) { // 自身是参考通道 - bench.insert(currentFrameId, counterData->channelData); + counterData->clone(&bench); counterData->channelClockValue = 0; emit successDataCalculate(counterData); @@ -152,9 +152,9 @@ for (int i = 0; i < hisList.size(); i++) { CounterDataDto * hisItem = hisList.at(i); - if (hisItem->frameId == currentFrameId) + if (qAbs(hisItem->milisecond - bench.milisecond) < 500) { - hisItem->channelClockValue = (hisItem->channelData - thisBench) * 10; + hisItem->channelClockValue = (hisItem->channelData - thisBench) * 10 * 0.001; // ns emit successDataCalculate(hisItem); delete hisItem; @@ -166,11 +166,11 @@ } else { // 自身不是参考通道,减去相同frameId的参考通道值 - if (bench.contains(currentFrameId) == true) + if (qAbs(bench.milisecond - counterData->milisecond) < 500) { // 在参考基准中能找到 - qlonglong currentBench = bench.find(currentFrameId).value(); - counterData->channelClockValue = (counterData->channelData - currentBench) * 10; // 10ps + qlonglong currentBench = bench.channelData; + counterData->channelClockValue = (counterData->channelData - currentBench) * 10 * 0.001; // 10ps - ns emit successDataCalculate(counterData); } else diff --git a/CounterAcqBM/CounterDevice.h b/CounterAcqBM/CounterDevice.h index 654a96d..80cc85f 100644 --- a/CounterAcqBM/CounterDevice.h +++ b/CounterAcqBM/CounterDevice.h @@ -37,7 +37,7 @@ QKafkaUtil kafkaUtil; QByteArray dataBuff; - QMap bench; + CounterDataDto bench; QList hisList; void pushChannelRawFrame(CounterDataDto * counterData); diff --git a/CounterAcqBM/CounterWindow.cpp b/CounterAcqBM/CounterWindow.cpp index 1dc37bf..8166d47 100644 --- a/CounterAcqBM/CounterWindow.cpp +++ b/CounterAcqBM/CounterWindow.cpp @@ -55,7 +55,7 @@ // 4. 将获取到的设备添加到下拉列表框中 QJsonArray devArray = devListRes.find("data")->toArray(); - for (int i =0; i < 1; i++) + for (int i =0; i < devArray.size(); i++) { QJsonObject devItem = devArray.at(i).toObject(); ui->devSelect->addItem(devItem.find("deviceName")->toString(), devItem.find("deviceNo")->toString()); @@ -71,7 +71,7 @@ connect(device, &CounterDevice::sendDataToDraw, this, &CounterWindow::drawCounterDataOnPage); -// device->initSerialPort(); + device->initSerialPort(); QThread::msleep(200); } @@ -204,32 +204,18 @@ // 1. 判断数据属于哪个设备,显示在不同的widget上 // qDebug() << counterData->toJSON() << counterData->devCode << "---" << counterData->frameId; - // 更新所有通道BOX的值 - for (int i = 0; i < counterData->channelDataArray.size(); i++) - { - // 获取对应的通道BOX - QGroupBox * channelBox = (QGroupBox *)ui->scrollContents->children().at(i + 1); - - // 赋值,对应的lineEdit/label - ((QLineEdit *)channelBox->children().at(2))->setText(counterData->timestamp); - ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 s").arg(counterData->channelDataArray.at(i))); - ((QLineEdit *)channelBox->children().at(6))->setText(counterData->frameId); - ((QLineEdit *)channelBox->children().at(8))->setText(QString("%1").arg(counterData->channelRefId)); - ((QLabel *)channelBox->children().at(13))->setText(counterData->channelActiveArray.at(i) == "1" ? "有效" : "无效"); - } - /* // 获取对应的通道BOX QGroupBox * channelBox = (QGroupBox *)ui->scrollContents->children().at(counterData->channelId); // 赋值,对应的lineEdit/label ((QLineEdit *)channelBox->children().at(2))->setText(counterData->timestamp); - ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 ps").arg(counterData->channelClockValue)); + ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 ns").arg(counterData->channelClockValue)); ((QLineEdit *)channelBox->children().at(6))->setText(counterData->frameId); ((QLineEdit *)channelBox->children().at(8))->setText(QString("%1").arg(counterData->channelRefId)); ((QLineEdit *)channelBox->children().at(10))->setText(QString("%1 Ω").arg(counterData->load == 1 ? "1M" : "50")); ((QLineEdit *)channelBox->children().at(12))->setText(QString("%1 V").arg(counterData->level)); ((QLabel *)channelBox->children().at(13))->setText(counterData->channelActive == 1 ? "有效" : "无效"); - */ + } int CounterWindow::initHttpToken() diff --git a/CounterAcqBM/CounterDevice.cpp b/CounterAcqBM/CounterDevice.cpp index 8c43fc3..6ba2a5d 100644 --- a/CounterAcqBM/CounterDevice.cpp +++ b/CounterAcqBM/CounterDevice.cpp @@ -140,7 +140,7 @@ if (counterData->channelId == counterData->channelRefId) { // 自身是参考通道 - bench.insert(currentFrameId, counterData->channelData); + counterData->clone(&bench); counterData->channelClockValue = 0; emit successDataCalculate(counterData); @@ -152,9 +152,9 @@ for (int i = 0; i < hisList.size(); i++) { CounterDataDto * hisItem = hisList.at(i); - if (hisItem->frameId == currentFrameId) + if (qAbs(hisItem->milisecond - bench.milisecond) < 500) { - hisItem->channelClockValue = (hisItem->channelData - thisBench) * 10; + hisItem->channelClockValue = (hisItem->channelData - thisBench) * 10 * 0.001; // ns emit successDataCalculate(hisItem); delete hisItem; @@ -166,11 +166,11 @@ } else { // 自身不是参考通道,减去相同frameId的参考通道值 - if (bench.contains(currentFrameId) == true) + if (qAbs(bench.milisecond - counterData->milisecond) < 500) { // 在参考基准中能找到 - qlonglong currentBench = bench.find(currentFrameId).value(); - counterData->channelClockValue = (counterData->channelData - currentBench) * 10; // 10ps + qlonglong currentBench = bench.channelData; + counterData->channelClockValue = (counterData->channelData - currentBench) * 10 * 0.001; // 10ps - ns emit successDataCalculate(counterData); } else diff --git a/CounterAcqBM/CounterDevice.h b/CounterAcqBM/CounterDevice.h index 654a96d..80cc85f 100644 --- a/CounterAcqBM/CounterDevice.h +++ b/CounterAcqBM/CounterDevice.h @@ -37,7 +37,7 @@ QKafkaUtil kafkaUtil; QByteArray dataBuff; - QMap bench; + CounterDataDto bench; QList hisList; void pushChannelRawFrame(CounterDataDto * counterData); diff --git a/CounterAcqBM/CounterWindow.cpp b/CounterAcqBM/CounterWindow.cpp index 1dc37bf..8166d47 100644 --- a/CounterAcqBM/CounterWindow.cpp +++ b/CounterAcqBM/CounterWindow.cpp @@ -55,7 +55,7 @@ // 4. 将获取到的设备添加到下拉列表框中 QJsonArray devArray = devListRes.find("data")->toArray(); - for (int i =0; i < 1; i++) + for (int i =0; i < devArray.size(); i++) { QJsonObject devItem = devArray.at(i).toObject(); ui->devSelect->addItem(devItem.find("deviceName")->toString(), devItem.find("deviceNo")->toString()); @@ -71,7 +71,7 @@ connect(device, &CounterDevice::sendDataToDraw, this, &CounterWindow::drawCounterDataOnPage); -// device->initSerialPort(); + device->initSerialPort(); QThread::msleep(200); } @@ -204,32 +204,18 @@ // 1. 判断数据属于哪个设备,显示在不同的widget上 // qDebug() << counterData->toJSON() << counterData->devCode << "---" << counterData->frameId; - // 更新所有通道BOX的值 - for (int i = 0; i < counterData->channelDataArray.size(); i++) - { - // 获取对应的通道BOX - QGroupBox * channelBox = (QGroupBox *)ui->scrollContents->children().at(i + 1); - - // 赋值,对应的lineEdit/label - ((QLineEdit *)channelBox->children().at(2))->setText(counterData->timestamp); - ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 s").arg(counterData->channelDataArray.at(i))); - ((QLineEdit *)channelBox->children().at(6))->setText(counterData->frameId); - ((QLineEdit *)channelBox->children().at(8))->setText(QString("%1").arg(counterData->channelRefId)); - ((QLabel *)channelBox->children().at(13))->setText(counterData->channelActiveArray.at(i) == "1" ? "有效" : "无效"); - } - /* // 获取对应的通道BOX QGroupBox * channelBox = (QGroupBox *)ui->scrollContents->children().at(counterData->channelId); // 赋值,对应的lineEdit/label ((QLineEdit *)channelBox->children().at(2))->setText(counterData->timestamp); - ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 ps").arg(counterData->channelClockValue)); + ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 ns").arg(counterData->channelClockValue)); ((QLineEdit *)channelBox->children().at(6))->setText(counterData->frameId); ((QLineEdit *)channelBox->children().at(8))->setText(QString("%1").arg(counterData->channelRefId)); ((QLineEdit *)channelBox->children().at(10))->setText(QString("%1 Ω").arg(counterData->load == 1 ? "1M" : "50")); ((QLineEdit *)channelBox->children().at(12))->setText(QString("%1 V").arg(counterData->level)); ((QLabel *)channelBox->children().at(13))->setText(counterData->channelActive == 1 ? "有效" : "无效"); - */ + } int CounterWindow::initHttpToken() diff --git a/CounterAcqBM/common/utils/QKafkaUtil.cpp b/CounterAcqBM/common/utils/QKafkaUtil.cpp index 3f00452..b30cf45 100644 --- a/CounterAcqBM/common/utils/QKafkaUtil.cpp +++ b/CounterAcqBM/common/utils/QKafkaUtil.cpp @@ -1,4 +1,5 @@ #include "QKafkaUtil.h" +#include "SettingConfig.h" #include QKafkaUtil::QKafkaUtil(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/CounterAcqBM/CounterDevice.cpp b/CounterAcqBM/CounterDevice.cpp index 8c43fc3..6ba2a5d 100644 --- a/CounterAcqBM/CounterDevice.cpp +++ b/CounterAcqBM/CounterDevice.cpp @@ -140,7 +140,7 @@ if (counterData->channelId == counterData->channelRefId) { // 自身是参考通道 - bench.insert(currentFrameId, counterData->channelData); + counterData->clone(&bench); counterData->channelClockValue = 0; emit successDataCalculate(counterData); @@ -152,9 +152,9 @@ for (int i = 0; i < hisList.size(); i++) { CounterDataDto * hisItem = hisList.at(i); - if (hisItem->frameId == currentFrameId) + if (qAbs(hisItem->milisecond - bench.milisecond) < 500) { - hisItem->channelClockValue = (hisItem->channelData - thisBench) * 10; + hisItem->channelClockValue = (hisItem->channelData - thisBench) * 10 * 0.001; // ns emit successDataCalculate(hisItem); delete hisItem; @@ -166,11 +166,11 @@ } else { // 自身不是参考通道,减去相同frameId的参考通道值 - if (bench.contains(currentFrameId) == true) + if (qAbs(bench.milisecond - counterData->milisecond) < 500) { // 在参考基准中能找到 - qlonglong currentBench = bench.find(currentFrameId).value(); - counterData->channelClockValue = (counterData->channelData - currentBench) * 10; // 10ps + qlonglong currentBench = bench.channelData; + counterData->channelClockValue = (counterData->channelData - currentBench) * 10 * 0.001; // 10ps - ns emit successDataCalculate(counterData); } else diff --git a/CounterAcqBM/CounterDevice.h b/CounterAcqBM/CounterDevice.h index 654a96d..80cc85f 100644 --- a/CounterAcqBM/CounterDevice.h +++ b/CounterAcqBM/CounterDevice.h @@ -37,7 +37,7 @@ QKafkaUtil kafkaUtil; QByteArray dataBuff; - QMap bench; + CounterDataDto bench; QList hisList; void pushChannelRawFrame(CounterDataDto * counterData); diff --git a/CounterAcqBM/CounterWindow.cpp b/CounterAcqBM/CounterWindow.cpp index 1dc37bf..8166d47 100644 --- a/CounterAcqBM/CounterWindow.cpp +++ b/CounterAcqBM/CounterWindow.cpp @@ -55,7 +55,7 @@ // 4. 将获取到的设备添加到下拉列表框中 QJsonArray devArray = devListRes.find("data")->toArray(); - for (int i =0; i < 1; i++) + for (int i =0; i < devArray.size(); i++) { QJsonObject devItem = devArray.at(i).toObject(); ui->devSelect->addItem(devItem.find("deviceName")->toString(), devItem.find("deviceNo")->toString()); @@ -71,7 +71,7 @@ connect(device, &CounterDevice::sendDataToDraw, this, &CounterWindow::drawCounterDataOnPage); -// device->initSerialPort(); + device->initSerialPort(); QThread::msleep(200); } @@ -204,32 +204,18 @@ // 1. 判断数据属于哪个设备,显示在不同的widget上 // qDebug() << counterData->toJSON() << counterData->devCode << "---" << counterData->frameId; - // 更新所有通道BOX的值 - for (int i = 0; i < counterData->channelDataArray.size(); i++) - { - // 获取对应的通道BOX - QGroupBox * channelBox = (QGroupBox *)ui->scrollContents->children().at(i + 1); - - // 赋值,对应的lineEdit/label - ((QLineEdit *)channelBox->children().at(2))->setText(counterData->timestamp); - ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 s").arg(counterData->channelDataArray.at(i))); - ((QLineEdit *)channelBox->children().at(6))->setText(counterData->frameId); - ((QLineEdit *)channelBox->children().at(8))->setText(QString("%1").arg(counterData->channelRefId)); - ((QLabel *)channelBox->children().at(13))->setText(counterData->channelActiveArray.at(i) == "1" ? "有效" : "无效"); - } - /* // 获取对应的通道BOX QGroupBox * channelBox = (QGroupBox *)ui->scrollContents->children().at(counterData->channelId); // 赋值,对应的lineEdit/label ((QLineEdit *)channelBox->children().at(2))->setText(counterData->timestamp); - ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 ps").arg(counterData->channelClockValue)); + ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 ns").arg(counterData->channelClockValue)); ((QLineEdit *)channelBox->children().at(6))->setText(counterData->frameId); ((QLineEdit *)channelBox->children().at(8))->setText(QString("%1").arg(counterData->channelRefId)); ((QLineEdit *)channelBox->children().at(10))->setText(QString("%1 Ω").arg(counterData->load == 1 ? "1M" : "50")); ((QLineEdit *)channelBox->children().at(12))->setText(QString("%1 V").arg(counterData->level)); ((QLabel *)channelBox->children().at(13))->setText(counterData->channelActive == 1 ? "有效" : "无效"); - */ + } int CounterWindow::initHttpToken() diff --git a/CounterAcqBM/common/utils/QKafkaUtil.cpp b/CounterAcqBM/common/utils/QKafkaUtil.cpp index 3f00452..b30cf45 100644 --- a/CounterAcqBM/common/utils/QKafkaUtil.cpp +++ b/CounterAcqBM/common/utils/QKafkaUtil.cpp @@ -1,4 +1,5 @@ #include "QKafkaUtil.h" +#include "SettingConfig.h" #include QKafkaUtil::QKafkaUtil(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/CounterAcqBM/common/utils/QSerialPortUtil.cpp b/CounterAcqBM/common/utils/QSerialPortUtil.cpp index 1710f93..051aeb0 100644 --- a/CounterAcqBM/common/utils/QSerialPortUtil.cpp +++ b/CounterAcqBM/common/utils/QSerialPortUtil.cpp @@ -58,7 +58,7 @@ void QSerialPortUtil::mockReceivData() { QDateTime now = QDateTime::currentDateTime(); - +/* QByteArray buffer; buffer.append("$XHTS"); buffer.append("03100010"); @@ -95,21 +95,23 @@ buffer.append(statusBuff).append(dataBuff).append("0"); emit dataRecieved(buffer); -// for (int i = 1; i <= 8; i++) -// { -// QByteArray buffer; + */ -// QString channel = QString("%1").arg(i); -// QString channelRef = "1"; -// QString dataValue = QString("%1").arg(qrand() % 400); -// QString level = QString("%1").arg(qrand() % 4 / (double) 10); -// QString frameId = QString("%1").arg(now.toSecsSinceEpoch() % 10000); + for (int i = 1; i <= 8; i++) + { + QByteArray buffer; -// buffer.append("$GL,") -// .append("0,").append(channel + ",").append("1,").append(channelRef + ",") -// .append(dataValue + ",").append("1,").append(level + ",").append(frameId + "*") -// .append("00").append("\r\n"); + QString channel = QString("%1").arg(i); + QString channelRef = "1"; + QString dataValue = QString("%1").arg(qrand() % 400); + QString level = QString("%1").arg(qrand() % 4 / (double) 10); + QString frameId = QString("%1").arg(now.toSecsSinceEpoch() % 10000); -// emit dataRecieved(buffer); -// } + buffer.append("$GL,") + .append("0,").append(channel + ",").append("1,").append(channelRef + ",") + .append(dataValue + ",").append("1,").append(level + ",").append(frameId + "*") + .append("00").append("\r\n"); + + emit dataRecieved(buffer); + } } diff --git a/CounterAcqBM/CounterDevice.cpp b/CounterAcqBM/CounterDevice.cpp index 8c43fc3..6ba2a5d 100644 --- a/CounterAcqBM/CounterDevice.cpp +++ b/CounterAcqBM/CounterDevice.cpp @@ -140,7 +140,7 @@ if (counterData->channelId == counterData->channelRefId) { // 自身是参考通道 - bench.insert(currentFrameId, counterData->channelData); + counterData->clone(&bench); counterData->channelClockValue = 0; emit successDataCalculate(counterData); @@ -152,9 +152,9 @@ for (int i = 0; i < hisList.size(); i++) { CounterDataDto * hisItem = hisList.at(i); - if (hisItem->frameId == currentFrameId) + if (qAbs(hisItem->milisecond - bench.milisecond) < 500) { - hisItem->channelClockValue = (hisItem->channelData - thisBench) * 10; + hisItem->channelClockValue = (hisItem->channelData - thisBench) * 10 * 0.001; // ns emit successDataCalculate(hisItem); delete hisItem; @@ -166,11 +166,11 @@ } else { // 自身不是参考通道,减去相同frameId的参考通道值 - if (bench.contains(currentFrameId) == true) + if (qAbs(bench.milisecond - counterData->milisecond) < 500) { // 在参考基准中能找到 - qlonglong currentBench = bench.find(currentFrameId).value(); - counterData->channelClockValue = (counterData->channelData - currentBench) * 10; // 10ps + qlonglong currentBench = bench.channelData; + counterData->channelClockValue = (counterData->channelData - currentBench) * 10 * 0.001; // 10ps - ns emit successDataCalculate(counterData); } else diff --git a/CounterAcqBM/CounterDevice.h b/CounterAcqBM/CounterDevice.h index 654a96d..80cc85f 100644 --- a/CounterAcqBM/CounterDevice.h +++ b/CounterAcqBM/CounterDevice.h @@ -37,7 +37,7 @@ QKafkaUtil kafkaUtil; QByteArray dataBuff; - QMap bench; + CounterDataDto bench; QList hisList; void pushChannelRawFrame(CounterDataDto * counterData); diff --git a/CounterAcqBM/CounterWindow.cpp b/CounterAcqBM/CounterWindow.cpp index 1dc37bf..8166d47 100644 --- a/CounterAcqBM/CounterWindow.cpp +++ b/CounterAcqBM/CounterWindow.cpp @@ -55,7 +55,7 @@ // 4. 将获取到的设备添加到下拉列表框中 QJsonArray devArray = devListRes.find("data")->toArray(); - for (int i =0; i < 1; i++) + for (int i =0; i < devArray.size(); i++) { QJsonObject devItem = devArray.at(i).toObject(); ui->devSelect->addItem(devItem.find("deviceName")->toString(), devItem.find("deviceNo")->toString()); @@ -71,7 +71,7 @@ connect(device, &CounterDevice::sendDataToDraw, this, &CounterWindow::drawCounterDataOnPage); -// device->initSerialPort(); + device->initSerialPort(); QThread::msleep(200); } @@ -204,32 +204,18 @@ // 1. 判断数据属于哪个设备,显示在不同的widget上 // qDebug() << counterData->toJSON() << counterData->devCode << "---" << counterData->frameId; - // 更新所有通道BOX的值 - for (int i = 0; i < counterData->channelDataArray.size(); i++) - { - // 获取对应的通道BOX - QGroupBox * channelBox = (QGroupBox *)ui->scrollContents->children().at(i + 1); - - // 赋值,对应的lineEdit/label - ((QLineEdit *)channelBox->children().at(2))->setText(counterData->timestamp); - ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 s").arg(counterData->channelDataArray.at(i))); - ((QLineEdit *)channelBox->children().at(6))->setText(counterData->frameId); - ((QLineEdit *)channelBox->children().at(8))->setText(QString("%1").arg(counterData->channelRefId)); - ((QLabel *)channelBox->children().at(13))->setText(counterData->channelActiveArray.at(i) == "1" ? "有效" : "无效"); - } - /* // 获取对应的通道BOX QGroupBox * channelBox = (QGroupBox *)ui->scrollContents->children().at(counterData->channelId); // 赋值,对应的lineEdit/label ((QLineEdit *)channelBox->children().at(2))->setText(counterData->timestamp); - ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 ps").arg(counterData->channelClockValue)); + ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 ns").arg(counterData->channelClockValue)); ((QLineEdit *)channelBox->children().at(6))->setText(counterData->frameId); ((QLineEdit *)channelBox->children().at(8))->setText(QString("%1").arg(counterData->channelRefId)); ((QLineEdit *)channelBox->children().at(10))->setText(QString("%1 Ω").arg(counterData->load == 1 ? "1M" : "50")); ((QLineEdit *)channelBox->children().at(12))->setText(QString("%1 V").arg(counterData->level)); ((QLabel *)channelBox->children().at(13))->setText(counterData->channelActive == 1 ? "有效" : "无效"); - */ + } int CounterWindow::initHttpToken() diff --git a/CounterAcqBM/common/utils/QKafkaUtil.cpp b/CounterAcqBM/common/utils/QKafkaUtil.cpp index 3f00452..b30cf45 100644 --- a/CounterAcqBM/common/utils/QKafkaUtil.cpp +++ b/CounterAcqBM/common/utils/QKafkaUtil.cpp @@ -1,4 +1,5 @@ #include "QKafkaUtil.h" +#include "SettingConfig.h" #include QKafkaUtil::QKafkaUtil(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/CounterAcqBM/common/utils/QSerialPortUtil.cpp b/CounterAcqBM/common/utils/QSerialPortUtil.cpp index 1710f93..051aeb0 100644 --- a/CounterAcqBM/common/utils/QSerialPortUtil.cpp +++ b/CounterAcqBM/common/utils/QSerialPortUtil.cpp @@ -58,7 +58,7 @@ void QSerialPortUtil::mockReceivData() { QDateTime now = QDateTime::currentDateTime(); - +/* QByteArray buffer; buffer.append("$XHTS"); buffer.append("03100010"); @@ -95,21 +95,23 @@ buffer.append(statusBuff).append(dataBuff).append("0"); emit dataRecieved(buffer); -// for (int i = 1; i <= 8; i++) -// { -// QByteArray buffer; + */ -// QString channel = QString("%1").arg(i); -// QString channelRef = "1"; -// QString dataValue = QString("%1").arg(qrand() % 400); -// QString level = QString("%1").arg(qrand() % 4 / (double) 10); -// QString frameId = QString("%1").arg(now.toSecsSinceEpoch() % 10000); + for (int i = 1; i <= 8; i++) + { + QByteArray buffer; -// buffer.append("$GL,") -// .append("0,").append(channel + ",").append("1,").append(channelRef + ",") -// .append(dataValue + ",").append("1,").append(level + ",").append(frameId + "*") -// .append("00").append("\r\n"); + QString channel = QString("%1").arg(i); + QString channelRef = "1"; + QString dataValue = QString("%1").arg(qrand() % 400); + QString level = QString("%1").arg(qrand() % 4 / (double) 10); + QString frameId = QString("%1").arg(now.toSecsSinceEpoch() % 10000); -// emit dataRecieved(buffer); -// } + buffer.append("$GL,") + .append("0,").append(channel + ",").append("1,").append(channelRef + ",") + .append(dataValue + ",").append("1,").append(level + ",").append(frameId + "*") + .append("00").append("\r\n"); + + emit dataRecieved(buffer); + } } diff --git a/CounterAcqBM/common/utils/SettingConfig.cpp b/CounterAcqBM/common/utils/SettingConfig.cpp index 1f2ebb2..c95ff2a 100644 --- a/CounterAcqBM/common/utils/SettingConfig.cpp +++ b/CounterAcqBM/common/utils/SettingConfig.cpp @@ -5,11 +5,14 @@ filename = QApplication::applicationDirPath() + "/conf/config.ini"; setting = new QSettings(this->filename, QSettings::IniFormat); - BAUD_RATE = getProperty("com", "baudRate").toUInt(); + BAUD_RATE = getProperty("com", "baudRate").toInt(); - NEED_KAFKA = getProperty("kafka", "needKafka").toUInt(); + NEED_KAFKA = getProperty("kafka", "needKafka").toInt(); KAFKA_BROKERS = getProperty("kafka", "brokers").toString(); KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "sasl_username").toString(); + SASL_PASSWORD = getProperty("kafka", "sasl_password").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/CounterAcqBM/CounterDevice.cpp b/CounterAcqBM/CounterDevice.cpp index 8c43fc3..6ba2a5d 100644 --- a/CounterAcqBM/CounterDevice.cpp +++ b/CounterAcqBM/CounterDevice.cpp @@ -140,7 +140,7 @@ if (counterData->channelId == counterData->channelRefId) { // 自身是参考通道 - bench.insert(currentFrameId, counterData->channelData); + counterData->clone(&bench); counterData->channelClockValue = 0; emit successDataCalculate(counterData); @@ -152,9 +152,9 @@ for (int i = 0; i < hisList.size(); i++) { CounterDataDto * hisItem = hisList.at(i); - if (hisItem->frameId == currentFrameId) + if (qAbs(hisItem->milisecond - bench.milisecond) < 500) { - hisItem->channelClockValue = (hisItem->channelData - thisBench) * 10; + hisItem->channelClockValue = (hisItem->channelData - thisBench) * 10 * 0.001; // ns emit successDataCalculate(hisItem); delete hisItem; @@ -166,11 +166,11 @@ } else { // 自身不是参考通道,减去相同frameId的参考通道值 - if (bench.contains(currentFrameId) == true) + if (qAbs(bench.milisecond - counterData->milisecond) < 500) { // 在参考基准中能找到 - qlonglong currentBench = bench.find(currentFrameId).value(); - counterData->channelClockValue = (counterData->channelData - currentBench) * 10; // 10ps + qlonglong currentBench = bench.channelData; + counterData->channelClockValue = (counterData->channelData - currentBench) * 10 * 0.001; // 10ps - ns emit successDataCalculate(counterData); } else diff --git a/CounterAcqBM/CounterDevice.h b/CounterAcqBM/CounterDevice.h index 654a96d..80cc85f 100644 --- a/CounterAcqBM/CounterDevice.h +++ b/CounterAcqBM/CounterDevice.h @@ -37,7 +37,7 @@ QKafkaUtil kafkaUtil; QByteArray dataBuff; - QMap bench; + CounterDataDto bench; QList hisList; void pushChannelRawFrame(CounterDataDto * counterData); diff --git a/CounterAcqBM/CounterWindow.cpp b/CounterAcqBM/CounterWindow.cpp index 1dc37bf..8166d47 100644 --- a/CounterAcqBM/CounterWindow.cpp +++ b/CounterAcqBM/CounterWindow.cpp @@ -55,7 +55,7 @@ // 4. 将获取到的设备添加到下拉列表框中 QJsonArray devArray = devListRes.find("data")->toArray(); - for (int i =0; i < 1; i++) + for (int i =0; i < devArray.size(); i++) { QJsonObject devItem = devArray.at(i).toObject(); ui->devSelect->addItem(devItem.find("deviceName")->toString(), devItem.find("deviceNo")->toString()); @@ -71,7 +71,7 @@ connect(device, &CounterDevice::sendDataToDraw, this, &CounterWindow::drawCounterDataOnPage); -// device->initSerialPort(); + device->initSerialPort(); QThread::msleep(200); } @@ -204,32 +204,18 @@ // 1. 判断数据属于哪个设备,显示在不同的widget上 // qDebug() << counterData->toJSON() << counterData->devCode << "---" << counterData->frameId; - // 更新所有通道BOX的值 - for (int i = 0; i < counterData->channelDataArray.size(); i++) - { - // 获取对应的通道BOX - QGroupBox * channelBox = (QGroupBox *)ui->scrollContents->children().at(i + 1); - - // 赋值,对应的lineEdit/label - ((QLineEdit *)channelBox->children().at(2))->setText(counterData->timestamp); - ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 s").arg(counterData->channelDataArray.at(i))); - ((QLineEdit *)channelBox->children().at(6))->setText(counterData->frameId); - ((QLineEdit *)channelBox->children().at(8))->setText(QString("%1").arg(counterData->channelRefId)); - ((QLabel *)channelBox->children().at(13))->setText(counterData->channelActiveArray.at(i) == "1" ? "有效" : "无效"); - } - /* // 获取对应的通道BOX QGroupBox * channelBox = (QGroupBox *)ui->scrollContents->children().at(counterData->channelId); // 赋值,对应的lineEdit/label ((QLineEdit *)channelBox->children().at(2))->setText(counterData->timestamp); - ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 ps").arg(counterData->channelClockValue)); + ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 ns").arg(counterData->channelClockValue)); ((QLineEdit *)channelBox->children().at(6))->setText(counterData->frameId); ((QLineEdit *)channelBox->children().at(8))->setText(QString("%1").arg(counterData->channelRefId)); ((QLineEdit *)channelBox->children().at(10))->setText(QString("%1 Ω").arg(counterData->load == 1 ? "1M" : "50")); ((QLineEdit *)channelBox->children().at(12))->setText(QString("%1 V").arg(counterData->level)); ((QLabel *)channelBox->children().at(13))->setText(counterData->channelActive == 1 ? "有效" : "无效"); - */ + } int CounterWindow::initHttpToken() diff --git a/CounterAcqBM/common/utils/QKafkaUtil.cpp b/CounterAcqBM/common/utils/QKafkaUtil.cpp index 3f00452..b30cf45 100644 --- a/CounterAcqBM/common/utils/QKafkaUtil.cpp +++ b/CounterAcqBM/common/utils/QKafkaUtil.cpp @@ -1,4 +1,5 @@ #include "QKafkaUtil.h" +#include "SettingConfig.h" #include QKafkaUtil::QKafkaUtil(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/CounterAcqBM/common/utils/QSerialPortUtil.cpp b/CounterAcqBM/common/utils/QSerialPortUtil.cpp index 1710f93..051aeb0 100644 --- a/CounterAcqBM/common/utils/QSerialPortUtil.cpp +++ b/CounterAcqBM/common/utils/QSerialPortUtil.cpp @@ -58,7 +58,7 @@ void QSerialPortUtil::mockReceivData() { QDateTime now = QDateTime::currentDateTime(); - +/* QByteArray buffer; buffer.append("$XHTS"); buffer.append("03100010"); @@ -95,21 +95,23 @@ buffer.append(statusBuff).append(dataBuff).append("0"); emit dataRecieved(buffer); -// for (int i = 1; i <= 8; i++) -// { -// QByteArray buffer; + */ -// QString channel = QString("%1").arg(i); -// QString channelRef = "1"; -// QString dataValue = QString("%1").arg(qrand() % 400); -// QString level = QString("%1").arg(qrand() % 4 / (double) 10); -// QString frameId = QString("%1").arg(now.toSecsSinceEpoch() % 10000); + for (int i = 1; i <= 8; i++) + { + QByteArray buffer; -// buffer.append("$GL,") -// .append("0,").append(channel + ",").append("1,").append(channelRef + ",") -// .append(dataValue + ",").append("1,").append(level + ",").append(frameId + "*") -// .append("00").append("\r\n"); + QString channel = QString("%1").arg(i); + QString channelRef = "1"; + QString dataValue = QString("%1").arg(qrand() % 400); + QString level = QString("%1").arg(qrand() % 4 / (double) 10); + QString frameId = QString("%1").arg(now.toSecsSinceEpoch() % 10000); -// emit dataRecieved(buffer); -// } + buffer.append("$GL,") + .append("0,").append(channel + ",").append("1,").append(channelRef + ",") + .append(dataValue + ",").append("1,").append(level + ",").append(frameId + "*") + .append("00").append("\r\n"); + + emit dataRecieved(buffer); + } } diff --git a/CounterAcqBM/common/utils/SettingConfig.cpp b/CounterAcqBM/common/utils/SettingConfig.cpp index 1f2ebb2..c95ff2a 100644 --- a/CounterAcqBM/common/utils/SettingConfig.cpp +++ b/CounterAcqBM/common/utils/SettingConfig.cpp @@ -5,11 +5,14 @@ filename = QApplication::applicationDirPath() + "/conf/config.ini"; setting = new QSettings(this->filename, QSettings::IniFormat); - BAUD_RATE = getProperty("com", "baudRate").toUInt(); + BAUD_RATE = getProperty("com", "baudRate").toInt(); - NEED_KAFKA = getProperty("kafka", "needKafka").toUInt(); + NEED_KAFKA = getProperty("kafka", "needKafka").toInt(); KAFKA_BROKERS = getProperty("kafka", "brokers").toString(); KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "sasl_username").toString(); + SASL_PASSWORD = getProperty("kafka", "sasl_password").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/CounterAcqBM/common/utils/SettingConfig.h b/CounterAcqBM/common/utils/SettingConfig.h index ce1e933..0038ecc 100644 --- a/CounterAcqBM/common/utils/SettingConfig.h +++ b/CounterAcqBM/common/utils/SettingConfig.h @@ -32,6 +32,9 @@ int NEED_KAFKA; QString KAFKA_BROKERS; QString KAFKA_DATA_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/CounterAcqBM/CounterDevice.cpp b/CounterAcqBM/CounterDevice.cpp index 8c43fc3..6ba2a5d 100644 --- a/CounterAcqBM/CounterDevice.cpp +++ b/CounterAcqBM/CounterDevice.cpp @@ -140,7 +140,7 @@ if (counterData->channelId == counterData->channelRefId) { // 自身是参考通道 - bench.insert(currentFrameId, counterData->channelData); + counterData->clone(&bench); counterData->channelClockValue = 0; emit successDataCalculate(counterData); @@ -152,9 +152,9 @@ for (int i = 0; i < hisList.size(); i++) { CounterDataDto * hisItem = hisList.at(i); - if (hisItem->frameId == currentFrameId) + if (qAbs(hisItem->milisecond - bench.milisecond) < 500) { - hisItem->channelClockValue = (hisItem->channelData - thisBench) * 10; + hisItem->channelClockValue = (hisItem->channelData - thisBench) * 10 * 0.001; // ns emit successDataCalculate(hisItem); delete hisItem; @@ -166,11 +166,11 @@ } else { // 自身不是参考通道,减去相同frameId的参考通道值 - if (bench.contains(currentFrameId) == true) + if (qAbs(bench.milisecond - counterData->milisecond) < 500) { // 在参考基准中能找到 - qlonglong currentBench = bench.find(currentFrameId).value(); - counterData->channelClockValue = (counterData->channelData - currentBench) * 10; // 10ps + qlonglong currentBench = bench.channelData; + counterData->channelClockValue = (counterData->channelData - currentBench) * 10 * 0.001; // 10ps - ns emit successDataCalculate(counterData); } else diff --git a/CounterAcqBM/CounterDevice.h b/CounterAcqBM/CounterDevice.h index 654a96d..80cc85f 100644 --- a/CounterAcqBM/CounterDevice.h +++ b/CounterAcqBM/CounterDevice.h @@ -37,7 +37,7 @@ QKafkaUtil kafkaUtil; QByteArray dataBuff; - QMap bench; + CounterDataDto bench; QList hisList; void pushChannelRawFrame(CounterDataDto * counterData); diff --git a/CounterAcqBM/CounterWindow.cpp b/CounterAcqBM/CounterWindow.cpp index 1dc37bf..8166d47 100644 --- a/CounterAcqBM/CounterWindow.cpp +++ b/CounterAcqBM/CounterWindow.cpp @@ -55,7 +55,7 @@ // 4. 将获取到的设备添加到下拉列表框中 QJsonArray devArray = devListRes.find("data")->toArray(); - for (int i =0; i < 1; i++) + for (int i =0; i < devArray.size(); i++) { QJsonObject devItem = devArray.at(i).toObject(); ui->devSelect->addItem(devItem.find("deviceName")->toString(), devItem.find("deviceNo")->toString()); @@ -71,7 +71,7 @@ connect(device, &CounterDevice::sendDataToDraw, this, &CounterWindow::drawCounterDataOnPage); -// device->initSerialPort(); + device->initSerialPort(); QThread::msleep(200); } @@ -204,32 +204,18 @@ // 1. 判断数据属于哪个设备,显示在不同的widget上 // qDebug() << counterData->toJSON() << counterData->devCode << "---" << counterData->frameId; - // 更新所有通道BOX的值 - for (int i = 0; i < counterData->channelDataArray.size(); i++) - { - // 获取对应的通道BOX - QGroupBox * channelBox = (QGroupBox *)ui->scrollContents->children().at(i + 1); - - // 赋值,对应的lineEdit/label - ((QLineEdit *)channelBox->children().at(2))->setText(counterData->timestamp); - ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 s").arg(counterData->channelDataArray.at(i))); - ((QLineEdit *)channelBox->children().at(6))->setText(counterData->frameId); - ((QLineEdit *)channelBox->children().at(8))->setText(QString("%1").arg(counterData->channelRefId)); - ((QLabel *)channelBox->children().at(13))->setText(counterData->channelActiveArray.at(i) == "1" ? "有效" : "无效"); - } - /* // 获取对应的通道BOX QGroupBox * channelBox = (QGroupBox *)ui->scrollContents->children().at(counterData->channelId); // 赋值,对应的lineEdit/label ((QLineEdit *)channelBox->children().at(2))->setText(counterData->timestamp); - ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 ps").arg(counterData->channelClockValue)); + ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 ns").arg(counterData->channelClockValue)); ((QLineEdit *)channelBox->children().at(6))->setText(counterData->frameId); ((QLineEdit *)channelBox->children().at(8))->setText(QString("%1").arg(counterData->channelRefId)); ((QLineEdit *)channelBox->children().at(10))->setText(QString("%1 Ω").arg(counterData->load == 1 ? "1M" : "50")); ((QLineEdit *)channelBox->children().at(12))->setText(QString("%1 V").arg(counterData->level)); ((QLabel *)channelBox->children().at(13))->setText(counterData->channelActive == 1 ? "有效" : "无效"); - */ + } int CounterWindow::initHttpToken() diff --git a/CounterAcqBM/common/utils/QKafkaUtil.cpp b/CounterAcqBM/common/utils/QKafkaUtil.cpp index 3f00452..b30cf45 100644 --- a/CounterAcqBM/common/utils/QKafkaUtil.cpp +++ b/CounterAcqBM/common/utils/QKafkaUtil.cpp @@ -1,4 +1,5 @@ #include "QKafkaUtil.h" +#include "SettingConfig.h" #include QKafkaUtil::QKafkaUtil(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/CounterAcqBM/common/utils/QSerialPortUtil.cpp b/CounterAcqBM/common/utils/QSerialPortUtil.cpp index 1710f93..051aeb0 100644 --- a/CounterAcqBM/common/utils/QSerialPortUtil.cpp +++ b/CounterAcqBM/common/utils/QSerialPortUtil.cpp @@ -58,7 +58,7 @@ void QSerialPortUtil::mockReceivData() { QDateTime now = QDateTime::currentDateTime(); - +/* QByteArray buffer; buffer.append("$XHTS"); buffer.append("03100010"); @@ -95,21 +95,23 @@ buffer.append(statusBuff).append(dataBuff).append("0"); emit dataRecieved(buffer); -// for (int i = 1; i <= 8; i++) -// { -// QByteArray buffer; + */ -// QString channel = QString("%1").arg(i); -// QString channelRef = "1"; -// QString dataValue = QString("%1").arg(qrand() % 400); -// QString level = QString("%1").arg(qrand() % 4 / (double) 10); -// QString frameId = QString("%1").arg(now.toSecsSinceEpoch() % 10000); + for (int i = 1; i <= 8; i++) + { + QByteArray buffer; -// buffer.append("$GL,") -// .append("0,").append(channel + ",").append("1,").append(channelRef + ",") -// .append(dataValue + ",").append("1,").append(level + ",").append(frameId + "*") -// .append("00").append("\r\n"); + QString channel = QString("%1").arg(i); + QString channelRef = "1"; + QString dataValue = QString("%1").arg(qrand() % 400); + QString level = QString("%1").arg(qrand() % 4 / (double) 10); + QString frameId = QString("%1").arg(now.toSecsSinceEpoch() % 10000); -// emit dataRecieved(buffer); -// } + buffer.append("$GL,") + .append("0,").append(channel + ",").append("1,").append(channelRef + ",") + .append(dataValue + ",").append("1,").append(level + ",").append(frameId + "*") + .append("00").append("\r\n"); + + emit dataRecieved(buffer); + } } diff --git a/CounterAcqBM/common/utils/SettingConfig.cpp b/CounterAcqBM/common/utils/SettingConfig.cpp index 1f2ebb2..c95ff2a 100644 --- a/CounterAcqBM/common/utils/SettingConfig.cpp +++ b/CounterAcqBM/common/utils/SettingConfig.cpp @@ -5,11 +5,14 @@ filename = QApplication::applicationDirPath() + "/conf/config.ini"; setting = new QSettings(this->filename, QSettings::IniFormat); - BAUD_RATE = getProperty("com", "baudRate").toUInt(); + BAUD_RATE = getProperty("com", "baudRate").toInt(); - NEED_KAFKA = getProperty("kafka", "needKafka").toUInt(); + NEED_KAFKA = getProperty("kafka", "needKafka").toInt(); KAFKA_BROKERS = getProperty("kafka", "brokers").toString(); KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "sasl_username").toString(); + SASL_PASSWORD = getProperty("kafka", "sasl_password").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/CounterAcqBM/common/utils/SettingConfig.h b/CounterAcqBM/common/utils/SettingConfig.h index ce1e933..0038ecc 100644 --- a/CounterAcqBM/common/utils/SettingConfig.h +++ b/CounterAcqBM/common/utils/SettingConfig.h @@ -32,6 +32,9 @@ int NEED_KAFKA; QString KAFKA_BROKERS; QString KAFKA_DATA_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/CounterAcqBM/conf/config.ini b/CounterAcqBM/conf/config.ini index da0eacf..3eedbc6 100644 --- a/CounterAcqBM/conf/config.ini +++ b/CounterAcqBM/conf/config.ini @@ -5,14 +5,16 @@ needKafka=0 brokers="111.198.10.15:12502" dataTopic="cppTest" +needSasl=0 +sasl.username="admin" +sasl.password="casicss" [client] clientId="clock" appKey="bd347bdd20943d2db8af558c3712a357" -devType="BM" [http] baseUrl="http://111.198.10.15:11410" [log] -basePath="D://Workspace Qt//ZXSSCJ-Release//Counter//logs//" +basePath="/home/admin/Qt/ZXSSCJ-Release/CounterAcqBM/logs/" diff --git a/CounterAcqBM/CounterDevice.cpp b/CounterAcqBM/CounterDevice.cpp index 8c43fc3..6ba2a5d 100644 --- a/CounterAcqBM/CounterDevice.cpp +++ b/CounterAcqBM/CounterDevice.cpp @@ -140,7 +140,7 @@ if (counterData->channelId == counterData->channelRefId) { // 自身是参考通道 - bench.insert(currentFrameId, counterData->channelData); + counterData->clone(&bench); counterData->channelClockValue = 0; emit successDataCalculate(counterData); @@ -152,9 +152,9 @@ for (int i = 0; i < hisList.size(); i++) { CounterDataDto * hisItem = hisList.at(i); - if (hisItem->frameId == currentFrameId) + if (qAbs(hisItem->milisecond - bench.milisecond) < 500) { - hisItem->channelClockValue = (hisItem->channelData - thisBench) * 10; + hisItem->channelClockValue = (hisItem->channelData - thisBench) * 10 * 0.001; // ns emit successDataCalculate(hisItem); delete hisItem; @@ -166,11 +166,11 @@ } else { // 自身不是参考通道,减去相同frameId的参考通道值 - if (bench.contains(currentFrameId) == true) + if (qAbs(bench.milisecond - counterData->milisecond) < 500) { // 在参考基准中能找到 - qlonglong currentBench = bench.find(currentFrameId).value(); - counterData->channelClockValue = (counterData->channelData - currentBench) * 10; // 10ps + qlonglong currentBench = bench.channelData; + counterData->channelClockValue = (counterData->channelData - currentBench) * 10 * 0.001; // 10ps - ns emit successDataCalculate(counterData); } else diff --git a/CounterAcqBM/CounterDevice.h b/CounterAcqBM/CounterDevice.h index 654a96d..80cc85f 100644 --- a/CounterAcqBM/CounterDevice.h +++ b/CounterAcqBM/CounterDevice.h @@ -37,7 +37,7 @@ QKafkaUtil kafkaUtil; QByteArray dataBuff; - QMap bench; + CounterDataDto bench; QList hisList; void pushChannelRawFrame(CounterDataDto * counterData); diff --git a/CounterAcqBM/CounterWindow.cpp b/CounterAcqBM/CounterWindow.cpp index 1dc37bf..8166d47 100644 --- a/CounterAcqBM/CounterWindow.cpp +++ b/CounterAcqBM/CounterWindow.cpp @@ -55,7 +55,7 @@ // 4. 将获取到的设备添加到下拉列表框中 QJsonArray devArray = devListRes.find("data")->toArray(); - for (int i =0; i < 1; i++) + for (int i =0; i < devArray.size(); i++) { QJsonObject devItem = devArray.at(i).toObject(); ui->devSelect->addItem(devItem.find("deviceName")->toString(), devItem.find("deviceNo")->toString()); @@ -71,7 +71,7 @@ connect(device, &CounterDevice::sendDataToDraw, this, &CounterWindow::drawCounterDataOnPage); -// device->initSerialPort(); + device->initSerialPort(); QThread::msleep(200); } @@ -204,32 +204,18 @@ // 1. 判断数据属于哪个设备,显示在不同的widget上 // qDebug() << counterData->toJSON() << counterData->devCode << "---" << counterData->frameId; - // 更新所有通道BOX的值 - for (int i = 0; i < counterData->channelDataArray.size(); i++) - { - // 获取对应的通道BOX - QGroupBox * channelBox = (QGroupBox *)ui->scrollContents->children().at(i + 1); - - // 赋值,对应的lineEdit/label - ((QLineEdit *)channelBox->children().at(2))->setText(counterData->timestamp); - ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 s").arg(counterData->channelDataArray.at(i))); - ((QLineEdit *)channelBox->children().at(6))->setText(counterData->frameId); - ((QLineEdit *)channelBox->children().at(8))->setText(QString("%1").arg(counterData->channelRefId)); - ((QLabel *)channelBox->children().at(13))->setText(counterData->channelActiveArray.at(i) == "1" ? "有效" : "无效"); - } - /* // 获取对应的通道BOX QGroupBox * channelBox = (QGroupBox *)ui->scrollContents->children().at(counterData->channelId); // 赋值,对应的lineEdit/label ((QLineEdit *)channelBox->children().at(2))->setText(counterData->timestamp); - ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 ps").arg(counterData->channelClockValue)); + ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 ns").arg(counterData->channelClockValue)); ((QLineEdit *)channelBox->children().at(6))->setText(counterData->frameId); ((QLineEdit *)channelBox->children().at(8))->setText(QString("%1").arg(counterData->channelRefId)); ((QLineEdit *)channelBox->children().at(10))->setText(QString("%1 Ω").arg(counterData->load == 1 ? "1M" : "50")); ((QLineEdit *)channelBox->children().at(12))->setText(QString("%1 V").arg(counterData->level)); ((QLabel *)channelBox->children().at(13))->setText(counterData->channelActive == 1 ? "有效" : "无效"); - */ + } int CounterWindow::initHttpToken() diff --git a/CounterAcqBM/common/utils/QKafkaUtil.cpp b/CounterAcqBM/common/utils/QKafkaUtil.cpp index 3f00452..b30cf45 100644 --- a/CounterAcqBM/common/utils/QKafkaUtil.cpp +++ b/CounterAcqBM/common/utils/QKafkaUtil.cpp @@ -1,4 +1,5 @@ #include "QKafkaUtil.h" +#include "SettingConfig.h" #include QKafkaUtil::QKafkaUtil(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/CounterAcqBM/common/utils/QSerialPortUtil.cpp b/CounterAcqBM/common/utils/QSerialPortUtil.cpp index 1710f93..051aeb0 100644 --- a/CounterAcqBM/common/utils/QSerialPortUtil.cpp +++ b/CounterAcqBM/common/utils/QSerialPortUtil.cpp @@ -58,7 +58,7 @@ void QSerialPortUtil::mockReceivData() { QDateTime now = QDateTime::currentDateTime(); - +/* QByteArray buffer; buffer.append("$XHTS"); buffer.append("03100010"); @@ -95,21 +95,23 @@ buffer.append(statusBuff).append(dataBuff).append("0"); emit dataRecieved(buffer); -// for (int i = 1; i <= 8; i++) -// { -// QByteArray buffer; + */ -// QString channel = QString("%1").arg(i); -// QString channelRef = "1"; -// QString dataValue = QString("%1").arg(qrand() % 400); -// QString level = QString("%1").arg(qrand() % 4 / (double) 10); -// QString frameId = QString("%1").arg(now.toSecsSinceEpoch() % 10000); + for (int i = 1; i <= 8; i++) + { + QByteArray buffer; -// buffer.append("$GL,") -// .append("0,").append(channel + ",").append("1,").append(channelRef + ",") -// .append(dataValue + ",").append("1,").append(level + ",").append(frameId + "*") -// .append("00").append("\r\n"); + QString channel = QString("%1").arg(i); + QString channelRef = "1"; + QString dataValue = QString("%1").arg(qrand() % 400); + QString level = QString("%1").arg(qrand() % 4 / (double) 10); + QString frameId = QString("%1").arg(now.toSecsSinceEpoch() % 10000); -// emit dataRecieved(buffer); -// } + buffer.append("$GL,") + .append("0,").append(channel + ",").append("1,").append(channelRef + ",") + .append(dataValue + ",").append("1,").append(level + ",").append(frameId + "*") + .append("00").append("\r\n"); + + emit dataRecieved(buffer); + } } diff --git a/CounterAcqBM/common/utils/SettingConfig.cpp b/CounterAcqBM/common/utils/SettingConfig.cpp index 1f2ebb2..c95ff2a 100644 --- a/CounterAcqBM/common/utils/SettingConfig.cpp +++ b/CounterAcqBM/common/utils/SettingConfig.cpp @@ -5,11 +5,14 @@ filename = QApplication::applicationDirPath() + "/conf/config.ini"; setting = new QSettings(this->filename, QSettings::IniFormat); - BAUD_RATE = getProperty("com", "baudRate").toUInt(); + BAUD_RATE = getProperty("com", "baudRate").toInt(); - NEED_KAFKA = getProperty("kafka", "needKafka").toUInt(); + NEED_KAFKA = getProperty("kafka", "needKafka").toInt(); KAFKA_BROKERS = getProperty("kafka", "brokers").toString(); KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "sasl_username").toString(); + SASL_PASSWORD = getProperty("kafka", "sasl_password").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/CounterAcqBM/common/utils/SettingConfig.h b/CounterAcqBM/common/utils/SettingConfig.h index ce1e933..0038ecc 100644 --- a/CounterAcqBM/common/utils/SettingConfig.h +++ b/CounterAcqBM/common/utils/SettingConfig.h @@ -32,6 +32,9 @@ int NEED_KAFKA; QString KAFKA_BROKERS; QString KAFKA_DATA_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/CounterAcqBM/conf/config.ini b/CounterAcqBM/conf/config.ini index da0eacf..3eedbc6 100644 --- a/CounterAcqBM/conf/config.ini +++ b/CounterAcqBM/conf/config.ini @@ -5,14 +5,16 @@ needKafka=0 brokers="111.198.10.15:12502" dataTopic="cppTest" +needSasl=0 +sasl.username="admin" +sasl.password="casicss" [client] clientId="clock" appKey="bd347bdd20943d2db8af558c3712a357" -devType="BM" [http] baseUrl="http://111.198.10.15:11410" [log] -basePath="D://Workspace Qt//ZXSSCJ-Release//Counter//logs//" +basePath="/home/admin/Qt/ZXSSCJ-Release/CounterAcqBM/logs/" diff --git a/PhaseCompAcq/common/utils/QKafkaUtil.cpp b/PhaseCompAcq/common/utils/QKafkaUtil.cpp index 3f00452..0cd1639 100644 --- a/PhaseCompAcq/common/utils/QKafkaUtil.cpp +++ b/PhaseCompAcq/common/utils/QKafkaUtil.cpp @@ -1,4 +1,5 @@ #include "QKafkaUtil.h" +#include "SettingConfig.h" #include QKafkaUtil::QKafkaUtil(QObject *parent) : QObject(parent) @@ -20,6 +21,14 @@ { 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/CounterAcqBM/CounterDevice.cpp b/CounterAcqBM/CounterDevice.cpp index 8c43fc3..6ba2a5d 100644 --- a/CounterAcqBM/CounterDevice.cpp +++ b/CounterAcqBM/CounterDevice.cpp @@ -140,7 +140,7 @@ if (counterData->channelId == counterData->channelRefId) { // 自身是参考通道 - bench.insert(currentFrameId, counterData->channelData); + counterData->clone(&bench); counterData->channelClockValue = 0; emit successDataCalculate(counterData); @@ -152,9 +152,9 @@ for (int i = 0; i < hisList.size(); i++) { CounterDataDto * hisItem = hisList.at(i); - if (hisItem->frameId == currentFrameId) + if (qAbs(hisItem->milisecond - bench.milisecond) < 500) { - hisItem->channelClockValue = (hisItem->channelData - thisBench) * 10; + hisItem->channelClockValue = (hisItem->channelData - thisBench) * 10 * 0.001; // ns emit successDataCalculate(hisItem); delete hisItem; @@ -166,11 +166,11 @@ } else { // 自身不是参考通道,减去相同frameId的参考通道值 - if (bench.contains(currentFrameId) == true) + if (qAbs(bench.milisecond - counterData->milisecond) < 500) { // 在参考基准中能找到 - qlonglong currentBench = bench.find(currentFrameId).value(); - counterData->channelClockValue = (counterData->channelData - currentBench) * 10; // 10ps + qlonglong currentBench = bench.channelData; + counterData->channelClockValue = (counterData->channelData - currentBench) * 10 * 0.001; // 10ps - ns emit successDataCalculate(counterData); } else diff --git a/CounterAcqBM/CounterDevice.h b/CounterAcqBM/CounterDevice.h index 654a96d..80cc85f 100644 --- a/CounterAcqBM/CounterDevice.h +++ b/CounterAcqBM/CounterDevice.h @@ -37,7 +37,7 @@ QKafkaUtil kafkaUtil; QByteArray dataBuff; - QMap bench; + CounterDataDto bench; QList hisList; void pushChannelRawFrame(CounterDataDto * counterData); diff --git a/CounterAcqBM/CounterWindow.cpp b/CounterAcqBM/CounterWindow.cpp index 1dc37bf..8166d47 100644 --- a/CounterAcqBM/CounterWindow.cpp +++ b/CounterAcqBM/CounterWindow.cpp @@ -55,7 +55,7 @@ // 4. 将获取到的设备添加到下拉列表框中 QJsonArray devArray = devListRes.find("data")->toArray(); - for (int i =0; i < 1; i++) + for (int i =0; i < devArray.size(); i++) { QJsonObject devItem = devArray.at(i).toObject(); ui->devSelect->addItem(devItem.find("deviceName")->toString(), devItem.find("deviceNo")->toString()); @@ -71,7 +71,7 @@ connect(device, &CounterDevice::sendDataToDraw, this, &CounterWindow::drawCounterDataOnPage); -// device->initSerialPort(); + device->initSerialPort(); QThread::msleep(200); } @@ -204,32 +204,18 @@ // 1. 判断数据属于哪个设备,显示在不同的widget上 // qDebug() << counterData->toJSON() << counterData->devCode << "---" << counterData->frameId; - // 更新所有通道BOX的值 - for (int i = 0; i < counterData->channelDataArray.size(); i++) - { - // 获取对应的通道BOX - QGroupBox * channelBox = (QGroupBox *)ui->scrollContents->children().at(i + 1); - - // 赋值,对应的lineEdit/label - ((QLineEdit *)channelBox->children().at(2))->setText(counterData->timestamp); - ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 s").arg(counterData->channelDataArray.at(i))); - ((QLineEdit *)channelBox->children().at(6))->setText(counterData->frameId); - ((QLineEdit *)channelBox->children().at(8))->setText(QString("%1").arg(counterData->channelRefId)); - ((QLabel *)channelBox->children().at(13))->setText(counterData->channelActiveArray.at(i) == "1" ? "有效" : "无效"); - } - /* // 获取对应的通道BOX QGroupBox * channelBox = (QGroupBox *)ui->scrollContents->children().at(counterData->channelId); // 赋值,对应的lineEdit/label ((QLineEdit *)channelBox->children().at(2))->setText(counterData->timestamp); - ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 ps").arg(counterData->channelClockValue)); + ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 ns").arg(counterData->channelClockValue)); ((QLineEdit *)channelBox->children().at(6))->setText(counterData->frameId); ((QLineEdit *)channelBox->children().at(8))->setText(QString("%1").arg(counterData->channelRefId)); ((QLineEdit *)channelBox->children().at(10))->setText(QString("%1 Ω").arg(counterData->load == 1 ? "1M" : "50")); ((QLineEdit *)channelBox->children().at(12))->setText(QString("%1 V").arg(counterData->level)); ((QLabel *)channelBox->children().at(13))->setText(counterData->channelActive == 1 ? "有效" : "无效"); - */ + } int CounterWindow::initHttpToken() diff --git a/CounterAcqBM/common/utils/QKafkaUtil.cpp b/CounterAcqBM/common/utils/QKafkaUtil.cpp index 3f00452..b30cf45 100644 --- a/CounterAcqBM/common/utils/QKafkaUtil.cpp +++ b/CounterAcqBM/common/utils/QKafkaUtil.cpp @@ -1,4 +1,5 @@ #include "QKafkaUtil.h" +#include "SettingConfig.h" #include QKafkaUtil::QKafkaUtil(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/CounterAcqBM/common/utils/QSerialPortUtil.cpp b/CounterAcqBM/common/utils/QSerialPortUtil.cpp index 1710f93..051aeb0 100644 --- a/CounterAcqBM/common/utils/QSerialPortUtil.cpp +++ b/CounterAcqBM/common/utils/QSerialPortUtil.cpp @@ -58,7 +58,7 @@ void QSerialPortUtil::mockReceivData() { QDateTime now = QDateTime::currentDateTime(); - +/* QByteArray buffer; buffer.append("$XHTS"); buffer.append("03100010"); @@ -95,21 +95,23 @@ buffer.append(statusBuff).append(dataBuff).append("0"); emit dataRecieved(buffer); -// for (int i = 1; i <= 8; i++) -// { -// QByteArray buffer; + */ -// QString channel = QString("%1").arg(i); -// QString channelRef = "1"; -// QString dataValue = QString("%1").arg(qrand() % 400); -// QString level = QString("%1").arg(qrand() % 4 / (double) 10); -// QString frameId = QString("%1").arg(now.toSecsSinceEpoch() % 10000); + for (int i = 1; i <= 8; i++) + { + QByteArray buffer; -// buffer.append("$GL,") -// .append("0,").append(channel + ",").append("1,").append(channelRef + ",") -// .append(dataValue + ",").append("1,").append(level + ",").append(frameId + "*") -// .append("00").append("\r\n"); + QString channel = QString("%1").arg(i); + QString channelRef = "1"; + QString dataValue = QString("%1").arg(qrand() % 400); + QString level = QString("%1").arg(qrand() % 4 / (double) 10); + QString frameId = QString("%1").arg(now.toSecsSinceEpoch() % 10000); -// emit dataRecieved(buffer); -// } + buffer.append("$GL,") + .append("0,").append(channel + ",").append("1,").append(channelRef + ",") + .append(dataValue + ",").append("1,").append(level + ",").append(frameId + "*") + .append("00").append("\r\n"); + + emit dataRecieved(buffer); + } } diff --git a/CounterAcqBM/common/utils/SettingConfig.cpp b/CounterAcqBM/common/utils/SettingConfig.cpp index 1f2ebb2..c95ff2a 100644 --- a/CounterAcqBM/common/utils/SettingConfig.cpp +++ b/CounterAcqBM/common/utils/SettingConfig.cpp @@ -5,11 +5,14 @@ filename = QApplication::applicationDirPath() + "/conf/config.ini"; setting = new QSettings(this->filename, QSettings::IniFormat); - BAUD_RATE = getProperty("com", "baudRate").toUInt(); + BAUD_RATE = getProperty("com", "baudRate").toInt(); - NEED_KAFKA = getProperty("kafka", "needKafka").toUInt(); + NEED_KAFKA = getProperty("kafka", "needKafka").toInt(); KAFKA_BROKERS = getProperty("kafka", "brokers").toString(); KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "sasl_username").toString(); + SASL_PASSWORD = getProperty("kafka", "sasl_password").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/CounterAcqBM/common/utils/SettingConfig.h b/CounterAcqBM/common/utils/SettingConfig.h index ce1e933..0038ecc 100644 --- a/CounterAcqBM/common/utils/SettingConfig.h +++ b/CounterAcqBM/common/utils/SettingConfig.h @@ -32,6 +32,9 @@ int NEED_KAFKA; QString KAFKA_BROKERS; QString KAFKA_DATA_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/CounterAcqBM/conf/config.ini b/CounterAcqBM/conf/config.ini index da0eacf..3eedbc6 100644 --- a/CounterAcqBM/conf/config.ini +++ b/CounterAcqBM/conf/config.ini @@ -5,14 +5,16 @@ needKafka=0 brokers="111.198.10.15:12502" dataTopic="cppTest" +needSasl=0 +sasl.username="admin" +sasl.password="casicss" [client] clientId="clock" appKey="bd347bdd20943d2db8af558c3712a357" -devType="BM" [http] baseUrl="http://111.198.10.15:11410" [log] -basePath="D://Workspace Qt//ZXSSCJ-Release//Counter//logs//" +basePath="/home/admin/Qt/ZXSSCJ-Release/CounterAcqBM/logs/" diff --git a/PhaseCompAcq/common/utils/QKafkaUtil.cpp b/PhaseCompAcq/common/utils/QKafkaUtil.cpp index 3f00452..0cd1639 100644 --- a/PhaseCompAcq/common/utils/QKafkaUtil.cpp +++ b/PhaseCompAcq/common/utils/QKafkaUtil.cpp @@ -1,4 +1,5 @@ #include "QKafkaUtil.h" +#include "SettingConfig.h" #include QKafkaUtil::QKafkaUtil(QObject *parent) : QObject(parent) @@ -20,6 +21,14 @@ { 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/PhaseCompAcq/common/utils/SettingConfig.cpp b/PhaseCompAcq/common/utils/SettingConfig.cpp index 1f2ebb2..c95ff2a 100644 --- a/PhaseCompAcq/common/utils/SettingConfig.cpp +++ b/PhaseCompAcq/common/utils/SettingConfig.cpp @@ -5,11 +5,14 @@ filename = QApplication::applicationDirPath() + "/conf/config.ini"; setting = new QSettings(this->filename, QSettings::IniFormat); - BAUD_RATE = getProperty("com", "baudRate").toUInt(); + BAUD_RATE = getProperty("com", "baudRate").toInt(); - NEED_KAFKA = getProperty("kafka", "needKafka").toUInt(); + NEED_KAFKA = getProperty("kafka", "needKafka").toInt(); KAFKA_BROKERS = getProperty("kafka", "brokers").toString(); KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "sasl_username").toString(); + SASL_PASSWORD = getProperty("kafka", "sasl_password").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/CounterAcqBM/CounterDevice.cpp b/CounterAcqBM/CounterDevice.cpp index 8c43fc3..6ba2a5d 100644 --- a/CounterAcqBM/CounterDevice.cpp +++ b/CounterAcqBM/CounterDevice.cpp @@ -140,7 +140,7 @@ if (counterData->channelId == counterData->channelRefId) { // 自身是参考通道 - bench.insert(currentFrameId, counterData->channelData); + counterData->clone(&bench); counterData->channelClockValue = 0; emit successDataCalculate(counterData); @@ -152,9 +152,9 @@ for (int i = 0; i < hisList.size(); i++) { CounterDataDto * hisItem = hisList.at(i); - if (hisItem->frameId == currentFrameId) + if (qAbs(hisItem->milisecond - bench.milisecond) < 500) { - hisItem->channelClockValue = (hisItem->channelData - thisBench) * 10; + hisItem->channelClockValue = (hisItem->channelData - thisBench) * 10 * 0.001; // ns emit successDataCalculate(hisItem); delete hisItem; @@ -166,11 +166,11 @@ } else { // 自身不是参考通道,减去相同frameId的参考通道值 - if (bench.contains(currentFrameId) == true) + if (qAbs(bench.milisecond - counterData->milisecond) < 500) { // 在参考基准中能找到 - qlonglong currentBench = bench.find(currentFrameId).value(); - counterData->channelClockValue = (counterData->channelData - currentBench) * 10; // 10ps + qlonglong currentBench = bench.channelData; + counterData->channelClockValue = (counterData->channelData - currentBench) * 10 * 0.001; // 10ps - ns emit successDataCalculate(counterData); } else diff --git a/CounterAcqBM/CounterDevice.h b/CounterAcqBM/CounterDevice.h index 654a96d..80cc85f 100644 --- a/CounterAcqBM/CounterDevice.h +++ b/CounterAcqBM/CounterDevice.h @@ -37,7 +37,7 @@ QKafkaUtil kafkaUtil; QByteArray dataBuff; - QMap bench; + CounterDataDto bench; QList hisList; void pushChannelRawFrame(CounterDataDto * counterData); diff --git a/CounterAcqBM/CounterWindow.cpp b/CounterAcqBM/CounterWindow.cpp index 1dc37bf..8166d47 100644 --- a/CounterAcqBM/CounterWindow.cpp +++ b/CounterAcqBM/CounterWindow.cpp @@ -55,7 +55,7 @@ // 4. 将获取到的设备添加到下拉列表框中 QJsonArray devArray = devListRes.find("data")->toArray(); - for (int i =0; i < 1; i++) + for (int i =0; i < devArray.size(); i++) { QJsonObject devItem = devArray.at(i).toObject(); ui->devSelect->addItem(devItem.find("deviceName")->toString(), devItem.find("deviceNo")->toString()); @@ -71,7 +71,7 @@ connect(device, &CounterDevice::sendDataToDraw, this, &CounterWindow::drawCounterDataOnPage); -// device->initSerialPort(); + device->initSerialPort(); QThread::msleep(200); } @@ -204,32 +204,18 @@ // 1. 判断数据属于哪个设备,显示在不同的widget上 // qDebug() << counterData->toJSON() << counterData->devCode << "---" << counterData->frameId; - // 更新所有通道BOX的值 - for (int i = 0; i < counterData->channelDataArray.size(); i++) - { - // 获取对应的通道BOX - QGroupBox * channelBox = (QGroupBox *)ui->scrollContents->children().at(i + 1); - - // 赋值,对应的lineEdit/label - ((QLineEdit *)channelBox->children().at(2))->setText(counterData->timestamp); - ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 s").arg(counterData->channelDataArray.at(i))); - ((QLineEdit *)channelBox->children().at(6))->setText(counterData->frameId); - ((QLineEdit *)channelBox->children().at(8))->setText(QString("%1").arg(counterData->channelRefId)); - ((QLabel *)channelBox->children().at(13))->setText(counterData->channelActiveArray.at(i) == "1" ? "有效" : "无效"); - } - /* // 获取对应的通道BOX QGroupBox * channelBox = (QGroupBox *)ui->scrollContents->children().at(counterData->channelId); // 赋值,对应的lineEdit/label ((QLineEdit *)channelBox->children().at(2))->setText(counterData->timestamp); - ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 ps").arg(counterData->channelClockValue)); + ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 ns").arg(counterData->channelClockValue)); ((QLineEdit *)channelBox->children().at(6))->setText(counterData->frameId); ((QLineEdit *)channelBox->children().at(8))->setText(QString("%1").arg(counterData->channelRefId)); ((QLineEdit *)channelBox->children().at(10))->setText(QString("%1 Ω").arg(counterData->load == 1 ? "1M" : "50")); ((QLineEdit *)channelBox->children().at(12))->setText(QString("%1 V").arg(counterData->level)); ((QLabel *)channelBox->children().at(13))->setText(counterData->channelActive == 1 ? "有效" : "无效"); - */ + } int CounterWindow::initHttpToken() diff --git a/CounterAcqBM/common/utils/QKafkaUtil.cpp b/CounterAcqBM/common/utils/QKafkaUtil.cpp index 3f00452..b30cf45 100644 --- a/CounterAcqBM/common/utils/QKafkaUtil.cpp +++ b/CounterAcqBM/common/utils/QKafkaUtil.cpp @@ -1,4 +1,5 @@ #include "QKafkaUtil.h" +#include "SettingConfig.h" #include QKafkaUtil::QKafkaUtil(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/CounterAcqBM/common/utils/QSerialPortUtil.cpp b/CounterAcqBM/common/utils/QSerialPortUtil.cpp index 1710f93..051aeb0 100644 --- a/CounterAcqBM/common/utils/QSerialPortUtil.cpp +++ b/CounterAcqBM/common/utils/QSerialPortUtil.cpp @@ -58,7 +58,7 @@ void QSerialPortUtil::mockReceivData() { QDateTime now = QDateTime::currentDateTime(); - +/* QByteArray buffer; buffer.append("$XHTS"); buffer.append("03100010"); @@ -95,21 +95,23 @@ buffer.append(statusBuff).append(dataBuff).append("0"); emit dataRecieved(buffer); -// for (int i = 1; i <= 8; i++) -// { -// QByteArray buffer; + */ -// QString channel = QString("%1").arg(i); -// QString channelRef = "1"; -// QString dataValue = QString("%1").arg(qrand() % 400); -// QString level = QString("%1").arg(qrand() % 4 / (double) 10); -// QString frameId = QString("%1").arg(now.toSecsSinceEpoch() % 10000); + for (int i = 1; i <= 8; i++) + { + QByteArray buffer; -// buffer.append("$GL,") -// .append("0,").append(channel + ",").append("1,").append(channelRef + ",") -// .append(dataValue + ",").append("1,").append(level + ",").append(frameId + "*") -// .append("00").append("\r\n"); + QString channel = QString("%1").arg(i); + QString channelRef = "1"; + QString dataValue = QString("%1").arg(qrand() % 400); + QString level = QString("%1").arg(qrand() % 4 / (double) 10); + QString frameId = QString("%1").arg(now.toSecsSinceEpoch() % 10000); -// emit dataRecieved(buffer); -// } + buffer.append("$GL,") + .append("0,").append(channel + ",").append("1,").append(channelRef + ",") + .append(dataValue + ",").append("1,").append(level + ",").append(frameId + "*") + .append("00").append("\r\n"); + + emit dataRecieved(buffer); + } } diff --git a/CounterAcqBM/common/utils/SettingConfig.cpp b/CounterAcqBM/common/utils/SettingConfig.cpp index 1f2ebb2..c95ff2a 100644 --- a/CounterAcqBM/common/utils/SettingConfig.cpp +++ b/CounterAcqBM/common/utils/SettingConfig.cpp @@ -5,11 +5,14 @@ filename = QApplication::applicationDirPath() + "/conf/config.ini"; setting = new QSettings(this->filename, QSettings::IniFormat); - BAUD_RATE = getProperty("com", "baudRate").toUInt(); + BAUD_RATE = getProperty("com", "baudRate").toInt(); - NEED_KAFKA = getProperty("kafka", "needKafka").toUInt(); + NEED_KAFKA = getProperty("kafka", "needKafka").toInt(); KAFKA_BROKERS = getProperty("kafka", "brokers").toString(); KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "sasl_username").toString(); + SASL_PASSWORD = getProperty("kafka", "sasl_password").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/CounterAcqBM/common/utils/SettingConfig.h b/CounterAcqBM/common/utils/SettingConfig.h index ce1e933..0038ecc 100644 --- a/CounterAcqBM/common/utils/SettingConfig.h +++ b/CounterAcqBM/common/utils/SettingConfig.h @@ -32,6 +32,9 @@ int NEED_KAFKA; QString KAFKA_BROKERS; QString KAFKA_DATA_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/CounterAcqBM/conf/config.ini b/CounterAcqBM/conf/config.ini index da0eacf..3eedbc6 100644 --- a/CounterAcqBM/conf/config.ini +++ b/CounterAcqBM/conf/config.ini @@ -5,14 +5,16 @@ needKafka=0 brokers="111.198.10.15:12502" dataTopic="cppTest" +needSasl=0 +sasl.username="admin" +sasl.password="casicss" [client] clientId="clock" appKey="bd347bdd20943d2db8af558c3712a357" -devType="BM" [http] baseUrl="http://111.198.10.15:11410" [log] -basePath="D://Workspace Qt//ZXSSCJ-Release//Counter//logs//" +basePath="/home/admin/Qt/ZXSSCJ-Release/CounterAcqBM/logs/" diff --git a/PhaseCompAcq/common/utils/QKafkaUtil.cpp b/PhaseCompAcq/common/utils/QKafkaUtil.cpp index 3f00452..0cd1639 100644 --- a/PhaseCompAcq/common/utils/QKafkaUtil.cpp +++ b/PhaseCompAcq/common/utils/QKafkaUtil.cpp @@ -1,4 +1,5 @@ #include "QKafkaUtil.h" +#include "SettingConfig.h" #include QKafkaUtil::QKafkaUtil(QObject *parent) : QObject(parent) @@ -20,6 +21,14 @@ { 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/PhaseCompAcq/common/utils/SettingConfig.cpp b/PhaseCompAcq/common/utils/SettingConfig.cpp index 1f2ebb2..c95ff2a 100644 --- a/PhaseCompAcq/common/utils/SettingConfig.cpp +++ b/PhaseCompAcq/common/utils/SettingConfig.cpp @@ -5,11 +5,14 @@ filename = QApplication::applicationDirPath() + "/conf/config.ini"; setting = new QSettings(this->filename, QSettings::IniFormat); - BAUD_RATE = getProperty("com", "baudRate").toUInt(); + BAUD_RATE = getProperty("com", "baudRate").toInt(); - NEED_KAFKA = getProperty("kafka", "needKafka").toUInt(); + NEED_KAFKA = getProperty("kafka", "needKafka").toInt(); KAFKA_BROKERS = getProperty("kafka", "brokers").toString(); KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "sasl_username").toString(); + SASL_PASSWORD = getProperty("kafka", "sasl_password").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/PhaseCompAcq/common/utils/SettingConfig.h b/PhaseCompAcq/common/utils/SettingConfig.h index ce1e933..0038ecc 100644 --- a/PhaseCompAcq/common/utils/SettingConfig.h +++ b/PhaseCompAcq/common/utils/SettingConfig.h @@ -32,6 +32,9 @@ int NEED_KAFKA; QString KAFKA_BROKERS; QString KAFKA_DATA_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/CounterAcqBM/CounterDevice.cpp b/CounterAcqBM/CounterDevice.cpp index 8c43fc3..6ba2a5d 100644 --- a/CounterAcqBM/CounterDevice.cpp +++ b/CounterAcqBM/CounterDevice.cpp @@ -140,7 +140,7 @@ if (counterData->channelId == counterData->channelRefId) { // 自身是参考通道 - bench.insert(currentFrameId, counterData->channelData); + counterData->clone(&bench); counterData->channelClockValue = 0; emit successDataCalculate(counterData); @@ -152,9 +152,9 @@ for (int i = 0; i < hisList.size(); i++) { CounterDataDto * hisItem = hisList.at(i); - if (hisItem->frameId == currentFrameId) + if (qAbs(hisItem->milisecond - bench.milisecond) < 500) { - hisItem->channelClockValue = (hisItem->channelData - thisBench) * 10; + hisItem->channelClockValue = (hisItem->channelData - thisBench) * 10 * 0.001; // ns emit successDataCalculate(hisItem); delete hisItem; @@ -166,11 +166,11 @@ } else { // 自身不是参考通道,减去相同frameId的参考通道值 - if (bench.contains(currentFrameId) == true) + if (qAbs(bench.milisecond - counterData->milisecond) < 500) { // 在参考基准中能找到 - qlonglong currentBench = bench.find(currentFrameId).value(); - counterData->channelClockValue = (counterData->channelData - currentBench) * 10; // 10ps + qlonglong currentBench = bench.channelData; + counterData->channelClockValue = (counterData->channelData - currentBench) * 10 * 0.001; // 10ps - ns emit successDataCalculate(counterData); } else diff --git a/CounterAcqBM/CounterDevice.h b/CounterAcqBM/CounterDevice.h index 654a96d..80cc85f 100644 --- a/CounterAcqBM/CounterDevice.h +++ b/CounterAcqBM/CounterDevice.h @@ -37,7 +37,7 @@ QKafkaUtil kafkaUtil; QByteArray dataBuff; - QMap bench; + CounterDataDto bench; QList hisList; void pushChannelRawFrame(CounterDataDto * counterData); diff --git a/CounterAcqBM/CounterWindow.cpp b/CounterAcqBM/CounterWindow.cpp index 1dc37bf..8166d47 100644 --- a/CounterAcqBM/CounterWindow.cpp +++ b/CounterAcqBM/CounterWindow.cpp @@ -55,7 +55,7 @@ // 4. 将获取到的设备添加到下拉列表框中 QJsonArray devArray = devListRes.find("data")->toArray(); - for (int i =0; i < 1; i++) + for (int i =0; i < devArray.size(); i++) { QJsonObject devItem = devArray.at(i).toObject(); ui->devSelect->addItem(devItem.find("deviceName")->toString(), devItem.find("deviceNo")->toString()); @@ -71,7 +71,7 @@ connect(device, &CounterDevice::sendDataToDraw, this, &CounterWindow::drawCounterDataOnPage); -// device->initSerialPort(); + device->initSerialPort(); QThread::msleep(200); } @@ -204,32 +204,18 @@ // 1. 判断数据属于哪个设备,显示在不同的widget上 // qDebug() << counterData->toJSON() << counterData->devCode << "---" << counterData->frameId; - // 更新所有通道BOX的值 - for (int i = 0; i < counterData->channelDataArray.size(); i++) - { - // 获取对应的通道BOX - QGroupBox * channelBox = (QGroupBox *)ui->scrollContents->children().at(i + 1); - - // 赋值,对应的lineEdit/label - ((QLineEdit *)channelBox->children().at(2))->setText(counterData->timestamp); - ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 s").arg(counterData->channelDataArray.at(i))); - ((QLineEdit *)channelBox->children().at(6))->setText(counterData->frameId); - ((QLineEdit *)channelBox->children().at(8))->setText(QString("%1").arg(counterData->channelRefId)); - ((QLabel *)channelBox->children().at(13))->setText(counterData->channelActiveArray.at(i) == "1" ? "有效" : "无效"); - } - /* // 获取对应的通道BOX QGroupBox * channelBox = (QGroupBox *)ui->scrollContents->children().at(counterData->channelId); // 赋值,对应的lineEdit/label ((QLineEdit *)channelBox->children().at(2))->setText(counterData->timestamp); - ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 ps").arg(counterData->channelClockValue)); + ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 ns").arg(counterData->channelClockValue)); ((QLineEdit *)channelBox->children().at(6))->setText(counterData->frameId); ((QLineEdit *)channelBox->children().at(8))->setText(QString("%1").arg(counterData->channelRefId)); ((QLineEdit *)channelBox->children().at(10))->setText(QString("%1 Ω").arg(counterData->load == 1 ? "1M" : "50")); ((QLineEdit *)channelBox->children().at(12))->setText(QString("%1 V").arg(counterData->level)); ((QLabel *)channelBox->children().at(13))->setText(counterData->channelActive == 1 ? "有效" : "无效"); - */ + } int CounterWindow::initHttpToken() diff --git a/CounterAcqBM/common/utils/QKafkaUtil.cpp b/CounterAcqBM/common/utils/QKafkaUtil.cpp index 3f00452..b30cf45 100644 --- a/CounterAcqBM/common/utils/QKafkaUtil.cpp +++ b/CounterAcqBM/common/utils/QKafkaUtil.cpp @@ -1,4 +1,5 @@ #include "QKafkaUtil.h" +#include "SettingConfig.h" #include QKafkaUtil::QKafkaUtil(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/CounterAcqBM/common/utils/QSerialPortUtil.cpp b/CounterAcqBM/common/utils/QSerialPortUtil.cpp index 1710f93..051aeb0 100644 --- a/CounterAcqBM/common/utils/QSerialPortUtil.cpp +++ b/CounterAcqBM/common/utils/QSerialPortUtil.cpp @@ -58,7 +58,7 @@ void QSerialPortUtil::mockReceivData() { QDateTime now = QDateTime::currentDateTime(); - +/* QByteArray buffer; buffer.append("$XHTS"); buffer.append("03100010"); @@ -95,21 +95,23 @@ buffer.append(statusBuff).append(dataBuff).append("0"); emit dataRecieved(buffer); -// for (int i = 1; i <= 8; i++) -// { -// QByteArray buffer; + */ -// QString channel = QString("%1").arg(i); -// QString channelRef = "1"; -// QString dataValue = QString("%1").arg(qrand() % 400); -// QString level = QString("%1").arg(qrand() % 4 / (double) 10); -// QString frameId = QString("%1").arg(now.toSecsSinceEpoch() % 10000); + for (int i = 1; i <= 8; i++) + { + QByteArray buffer; -// buffer.append("$GL,") -// .append("0,").append(channel + ",").append("1,").append(channelRef + ",") -// .append(dataValue + ",").append("1,").append(level + ",").append(frameId + "*") -// .append("00").append("\r\n"); + QString channel = QString("%1").arg(i); + QString channelRef = "1"; + QString dataValue = QString("%1").arg(qrand() % 400); + QString level = QString("%1").arg(qrand() % 4 / (double) 10); + QString frameId = QString("%1").arg(now.toSecsSinceEpoch() % 10000); -// emit dataRecieved(buffer); -// } + buffer.append("$GL,") + .append("0,").append(channel + ",").append("1,").append(channelRef + ",") + .append(dataValue + ",").append("1,").append(level + ",").append(frameId + "*") + .append("00").append("\r\n"); + + emit dataRecieved(buffer); + } } diff --git a/CounterAcqBM/common/utils/SettingConfig.cpp b/CounterAcqBM/common/utils/SettingConfig.cpp index 1f2ebb2..c95ff2a 100644 --- a/CounterAcqBM/common/utils/SettingConfig.cpp +++ b/CounterAcqBM/common/utils/SettingConfig.cpp @@ -5,11 +5,14 @@ filename = QApplication::applicationDirPath() + "/conf/config.ini"; setting = new QSettings(this->filename, QSettings::IniFormat); - BAUD_RATE = getProperty("com", "baudRate").toUInt(); + BAUD_RATE = getProperty("com", "baudRate").toInt(); - NEED_KAFKA = getProperty("kafka", "needKafka").toUInt(); + NEED_KAFKA = getProperty("kafka", "needKafka").toInt(); KAFKA_BROKERS = getProperty("kafka", "brokers").toString(); KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "sasl_username").toString(); + SASL_PASSWORD = getProperty("kafka", "sasl_password").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/CounterAcqBM/common/utils/SettingConfig.h b/CounterAcqBM/common/utils/SettingConfig.h index ce1e933..0038ecc 100644 --- a/CounterAcqBM/common/utils/SettingConfig.h +++ b/CounterAcqBM/common/utils/SettingConfig.h @@ -32,6 +32,9 @@ int NEED_KAFKA; QString KAFKA_BROKERS; QString KAFKA_DATA_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/CounterAcqBM/conf/config.ini b/CounterAcqBM/conf/config.ini index da0eacf..3eedbc6 100644 --- a/CounterAcqBM/conf/config.ini +++ b/CounterAcqBM/conf/config.ini @@ -5,14 +5,16 @@ needKafka=0 brokers="111.198.10.15:12502" dataTopic="cppTest" +needSasl=0 +sasl.username="admin" +sasl.password="casicss" [client] clientId="clock" appKey="bd347bdd20943d2db8af558c3712a357" -devType="BM" [http] baseUrl="http://111.198.10.15:11410" [log] -basePath="D://Workspace Qt//ZXSSCJ-Release//Counter//logs//" +basePath="/home/admin/Qt/ZXSSCJ-Release/CounterAcqBM/logs/" diff --git a/PhaseCompAcq/common/utils/QKafkaUtil.cpp b/PhaseCompAcq/common/utils/QKafkaUtil.cpp index 3f00452..0cd1639 100644 --- a/PhaseCompAcq/common/utils/QKafkaUtil.cpp +++ b/PhaseCompAcq/common/utils/QKafkaUtil.cpp @@ -1,4 +1,5 @@ #include "QKafkaUtil.h" +#include "SettingConfig.h" #include QKafkaUtil::QKafkaUtil(QObject *parent) : QObject(parent) @@ -20,6 +21,14 @@ { 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/PhaseCompAcq/common/utils/SettingConfig.cpp b/PhaseCompAcq/common/utils/SettingConfig.cpp index 1f2ebb2..c95ff2a 100644 --- a/PhaseCompAcq/common/utils/SettingConfig.cpp +++ b/PhaseCompAcq/common/utils/SettingConfig.cpp @@ -5,11 +5,14 @@ filename = QApplication::applicationDirPath() + "/conf/config.ini"; setting = new QSettings(this->filename, QSettings::IniFormat); - BAUD_RATE = getProperty("com", "baudRate").toUInt(); + BAUD_RATE = getProperty("com", "baudRate").toInt(); - NEED_KAFKA = getProperty("kafka", "needKafka").toUInt(); + NEED_KAFKA = getProperty("kafka", "needKafka").toInt(); KAFKA_BROKERS = getProperty("kafka", "brokers").toString(); KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "sasl_username").toString(); + SASL_PASSWORD = getProperty("kafka", "sasl_password").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/PhaseCompAcq/common/utils/SettingConfig.h b/PhaseCompAcq/common/utils/SettingConfig.h index ce1e933..0038ecc 100644 --- a/PhaseCompAcq/common/utils/SettingConfig.h +++ b/PhaseCompAcq/common/utils/SettingConfig.h @@ -32,6 +32,9 @@ int NEED_KAFKA; QString KAFKA_BROKERS; QString KAFKA_DATA_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/PhaseCompAcq/conf/config.ini b/PhaseCompAcq/conf/config.ini index 016416e..46d97d7 100644 --- a/PhaseCompAcq/conf/config.ini +++ b/PhaseCompAcq/conf/config.ini @@ -5,6 +5,9 @@ needKafka=1 brokers="111.198.10.15:12502" dataTopic="cppTest" +needSasl=0 +sasl.username="admin" +sasl.password="casicss" [client] clientId="phase" diff --git a/CounterAcqBM/CounterDevice.cpp b/CounterAcqBM/CounterDevice.cpp index 8c43fc3..6ba2a5d 100644 --- a/CounterAcqBM/CounterDevice.cpp +++ b/CounterAcqBM/CounterDevice.cpp @@ -140,7 +140,7 @@ if (counterData->channelId == counterData->channelRefId) { // 自身是参考通道 - bench.insert(currentFrameId, counterData->channelData); + counterData->clone(&bench); counterData->channelClockValue = 0; emit successDataCalculate(counterData); @@ -152,9 +152,9 @@ for (int i = 0; i < hisList.size(); i++) { CounterDataDto * hisItem = hisList.at(i); - if (hisItem->frameId == currentFrameId) + if (qAbs(hisItem->milisecond - bench.milisecond) < 500) { - hisItem->channelClockValue = (hisItem->channelData - thisBench) * 10; + hisItem->channelClockValue = (hisItem->channelData - thisBench) * 10 * 0.001; // ns emit successDataCalculate(hisItem); delete hisItem; @@ -166,11 +166,11 @@ } else { // 自身不是参考通道,减去相同frameId的参考通道值 - if (bench.contains(currentFrameId) == true) + if (qAbs(bench.milisecond - counterData->milisecond) < 500) { // 在参考基准中能找到 - qlonglong currentBench = bench.find(currentFrameId).value(); - counterData->channelClockValue = (counterData->channelData - currentBench) * 10; // 10ps + qlonglong currentBench = bench.channelData; + counterData->channelClockValue = (counterData->channelData - currentBench) * 10 * 0.001; // 10ps - ns emit successDataCalculate(counterData); } else diff --git a/CounterAcqBM/CounterDevice.h b/CounterAcqBM/CounterDevice.h index 654a96d..80cc85f 100644 --- a/CounterAcqBM/CounterDevice.h +++ b/CounterAcqBM/CounterDevice.h @@ -37,7 +37,7 @@ QKafkaUtil kafkaUtil; QByteArray dataBuff; - QMap bench; + CounterDataDto bench; QList hisList; void pushChannelRawFrame(CounterDataDto * counterData); diff --git a/CounterAcqBM/CounterWindow.cpp b/CounterAcqBM/CounterWindow.cpp index 1dc37bf..8166d47 100644 --- a/CounterAcqBM/CounterWindow.cpp +++ b/CounterAcqBM/CounterWindow.cpp @@ -55,7 +55,7 @@ // 4. 将获取到的设备添加到下拉列表框中 QJsonArray devArray = devListRes.find("data")->toArray(); - for (int i =0; i < 1; i++) + for (int i =0; i < devArray.size(); i++) { QJsonObject devItem = devArray.at(i).toObject(); ui->devSelect->addItem(devItem.find("deviceName")->toString(), devItem.find("deviceNo")->toString()); @@ -71,7 +71,7 @@ connect(device, &CounterDevice::sendDataToDraw, this, &CounterWindow::drawCounterDataOnPage); -// device->initSerialPort(); + device->initSerialPort(); QThread::msleep(200); } @@ -204,32 +204,18 @@ // 1. 判断数据属于哪个设备,显示在不同的widget上 // qDebug() << counterData->toJSON() << counterData->devCode << "---" << counterData->frameId; - // 更新所有通道BOX的值 - for (int i = 0; i < counterData->channelDataArray.size(); i++) - { - // 获取对应的通道BOX - QGroupBox * channelBox = (QGroupBox *)ui->scrollContents->children().at(i + 1); - - // 赋值,对应的lineEdit/label - ((QLineEdit *)channelBox->children().at(2))->setText(counterData->timestamp); - ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 s").arg(counterData->channelDataArray.at(i))); - ((QLineEdit *)channelBox->children().at(6))->setText(counterData->frameId); - ((QLineEdit *)channelBox->children().at(8))->setText(QString("%1").arg(counterData->channelRefId)); - ((QLabel *)channelBox->children().at(13))->setText(counterData->channelActiveArray.at(i) == "1" ? "有效" : "无效"); - } - /* // 获取对应的通道BOX QGroupBox * channelBox = (QGroupBox *)ui->scrollContents->children().at(counterData->channelId); // 赋值,对应的lineEdit/label ((QLineEdit *)channelBox->children().at(2))->setText(counterData->timestamp); - ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 ps").arg(counterData->channelClockValue)); + ((QLineEdit *)channelBox->children().at(4))->setText(QString("%1 ns").arg(counterData->channelClockValue)); ((QLineEdit *)channelBox->children().at(6))->setText(counterData->frameId); ((QLineEdit *)channelBox->children().at(8))->setText(QString("%1").arg(counterData->channelRefId)); ((QLineEdit *)channelBox->children().at(10))->setText(QString("%1 Ω").arg(counterData->load == 1 ? "1M" : "50")); ((QLineEdit *)channelBox->children().at(12))->setText(QString("%1 V").arg(counterData->level)); ((QLabel *)channelBox->children().at(13))->setText(counterData->channelActive == 1 ? "有效" : "无效"); - */ + } int CounterWindow::initHttpToken() diff --git a/CounterAcqBM/common/utils/QKafkaUtil.cpp b/CounterAcqBM/common/utils/QKafkaUtil.cpp index 3f00452..b30cf45 100644 --- a/CounterAcqBM/common/utils/QKafkaUtil.cpp +++ b/CounterAcqBM/common/utils/QKafkaUtil.cpp @@ -1,4 +1,5 @@ #include "QKafkaUtil.h" +#include "SettingConfig.h" #include QKafkaUtil::QKafkaUtil(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/CounterAcqBM/common/utils/QSerialPortUtil.cpp b/CounterAcqBM/common/utils/QSerialPortUtil.cpp index 1710f93..051aeb0 100644 --- a/CounterAcqBM/common/utils/QSerialPortUtil.cpp +++ b/CounterAcqBM/common/utils/QSerialPortUtil.cpp @@ -58,7 +58,7 @@ void QSerialPortUtil::mockReceivData() { QDateTime now = QDateTime::currentDateTime(); - +/* QByteArray buffer; buffer.append("$XHTS"); buffer.append("03100010"); @@ -95,21 +95,23 @@ buffer.append(statusBuff).append(dataBuff).append("0"); emit dataRecieved(buffer); -// for (int i = 1; i <= 8; i++) -// { -// QByteArray buffer; + */ -// QString channel = QString("%1").arg(i); -// QString channelRef = "1"; -// QString dataValue = QString("%1").arg(qrand() % 400); -// QString level = QString("%1").arg(qrand() % 4 / (double) 10); -// QString frameId = QString("%1").arg(now.toSecsSinceEpoch() % 10000); + for (int i = 1; i <= 8; i++) + { + QByteArray buffer; -// buffer.append("$GL,") -// .append("0,").append(channel + ",").append("1,").append(channelRef + ",") -// .append(dataValue + ",").append("1,").append(level + ",").append(frameId + "*") -// .append("00").append("\r\n"); + QString channel = QString("%1").arg(i); + QString channelRef = "1"; + QString dataValue = QString("%1").arg(qrand() % 400); + QString level = QString("%1").arg(qrand() % 4 / (double) 10); + QString frameId = QString("%1").arg(now.toSecsSinceEpoch() % 10000); -// emit dataRecieved(buffer); -// } + buffer.append("$GL,") + .append("0,").append(channel + ",").append("1,").append(channelRef + ",") + .append(dataValue + ",").append("1,").append(level + ",").append(frameId + "*") + .append("00").append("\r\n"); + + emit dataRecieved(buffer); + } } diff --git a/CounterAcqBM/common/utils/SettingConfig.cpp b/CounterAcqBM/common/utils/SettingConfig.cpp index 1f2ebb2..c95ff2a 100644 --- a/CounterAcqBM/common/utils/SettingConfig.cpp +++ b/CounterAcqBM/common/utils/SettingConfig.cpp @@ -5,11 +5,14 @@ filename = QApplication::applicationDirPath() + "/conf/config.ini"; setting = new QSettings(this->filename, QSettings::IniFormat); - BAUD_RATE = getProperty("com", "baudRate").toUInt(); + BAUD_RATE = getProperty("com", "baudRate").toInt(); - NEED_KAFKA = getProperty("kafka", "needKafka").toUInt(); + NEED_KAFKA = getProperty("kafka", "needKafka").toInt(); KAFKA_BROKERS = getProperty("kafka", "brokers").toString(); KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "sasl_username").toString(); + SASL_PASSWORD = getProperty("kafka", "sasl_password").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/CounterAcqBM/common/utils/SettingConfig.h b/CounterAcqBM/common/utils/SettingConfig.h index ce1e933..0038ecc 100644 --- a/CounterAcqBM/common/utils/SettingConfig.h +++ b/CounterAcqBM/common/utils/SettingConfig.h @@ -32,6 +32,9 @@ int NEED_KAFKA; QString KAFKA_BROKERS; QString KAFKA_DATA_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/CounterAcqBM/conf/config.ini b/CounterAcqBM/conf/config.ini index da0eacf..3eedbc6 100644 --- a/CounterAcqBM/conf/config.ini +++ b/CounterAcqBM/conf/config.ini @@ -5,14 +5,16 @@ needKafka=0 brokers="111.198.10.15:12502" dataTopic="cppTest" +needSasl=0 +sasl.username="admin" +sasl.password="casicss" [client] clientId="clock" appKey="bd347bdd20943d2db8af558c3712a357" -devType="BM" [http] baseUrl="http://111.198.10.15:11410" [log] -basePath="D://Workspace Qt//ZXSSCJ-Release//Counter//logs//" +basePath="/home/admin/Qt/ZXSSCJ-Release/CounterAcqBM/logs/" diff --git a/PhaseCompAcq/common/utils/QKafkaUtil.cpp b/PhaseCompAcq/common/utils/QKafkaUtil.cpp index 3f00452..0cd1639 100644 --- a/PhaseCompAcq/common/utils/QKafkaUtil.cpp +++ b/PhaseCompAcq/common/utils/QKafkaUtil.cpp @@ -1,4 +1,5 @@ #include "QKafkaUtil.h" +#include "SettingConfig.h" #include QKafkaUtil::QKafkaUtil(QObject *parent) : QObject(parent) @@ -20,6 +21,14 @@ { 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/PhaseCompAcq/common/utils/SettingConfig.cpp b/PhaseCompAcq/common/utils/SettingConfig.cpp index 1f2ebb2..c95ff2a 100644 --- a/PhaseCompAcq/common/utils/SettingConfig.cpp +++ b/PhaseCompAcq/common/utils/SettingConfig.cpp @@ -5,11 +5,14 @@ filename = QApplication::applicationDirPath() + "/conf/config.ini"; setting = new QSettings(this->filename, QSettings::IniFormat); - BAUD_RATE = getProperty("com", "baudRate").toUInt(); + BAUD_RATE = getProperty("com", "baudRate").toInt(); - NEED_KAFKA = getProperty("kafka", "needKafka").toUInt(); + NEED_KAFKA = getProperty("kafka", "needKafka").toInt(); KAFKA_BROKERS = getProperty("kafka", "brokers").toString(); KAFKA_DATA_TOPIC = getProperty("kafka", "dataTopic").toString(); + NEED_SASL = getProperty("kafka", "needSasl").toInt(); + SASL_USERNAME = getProperty("kafka", "sasl_username").toString(); + SASL_PASSWORD = getProperty("kafka", "sasl_password").toString(); CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); diff --git a/PhaseCompAcq/common/utils/SettingConfig.h b/PhaseCompAcq/common/utils/SettingConfig.h index ce1e933..0038ecc 100644 --- a/PhaseCompAcq/common/utils/SettingConfig.h +++ b/PhaseCompAcq/common/utils/SettingConfig.h @@ -32,6 +32,9 @@ int NEED_KAFKA; QString KAFKA_BROKERS; QString KAFKA_DATA_TOPIC; + int NEED_SASL; + QString SASL_USERNAME; + QString SASL_PASSWORD; QString CLIENT_ID; QString APP_KEY; diff --git a/PhaseCompAcq/conf/config.ini b/PhaseCompAcq/conf/config.ini index 016416e..46d97d7 100644 --- a/PhaseCompAcq/conf/config.ini +++ b/PhaseCompAcq/conf/config.ini @@ -5,6 +5,9 @@ needKafka=1 brokers="111.198.10.15:12502" dataTopic="cppTest" +needSasl=0 +sasl.username="admin" +sasl.password="casicss" [client] clientId="phase" diff --git a/ZXSSCJ.pro b/ZXSSCJ.pro index bda58e2..0810c68 100644 --- a/ZXSSCJ.pro +++ b/ZXSSCJ.pro @@ -3,9 +3,9 @@ #定义了ordered表示子项目按照添加的顺序来编译 #CONFIG += ordered -SUBDIRS += CounterAcq #计数器数据采集 +#SUBDIRS += CounterAcq #计数器数据采集 SUBDIRS += CounterAcqBM #6906计数器数据采集 -SUBDIRS += PhaseCompAcq #比相仪数据采集 +#SUBDIRS += PhaseCompAcq #比相仪数据采集 #SUBDIRS += DevStatusAcq -SUBDIRS += DeviceHub # +#SUBDIRS += DeviceHub # #SUBDIRS += HClockAcq #氢钟状态数据采集