diff --git a/CounterAcq/CounterDevice.cpp b/CounterAcq/CounterDevice.cpp index 6e54474..d170054 100644 --- a/CounterAcq/CounterDevice.cpp +++ b/CounterAcq/CounterDevice.cpp @@ -55,45 +55,36 @@ void CounterDevice::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); - std::cout << dataBuff.toStdString() << std::endl; + std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; - QList frameList = CounterProtocolXH::extractFrameList(data); - if (frameList.size() > 0) + CounterDataDto * counterData = new CounterDataDto(this); + if (CounterProtocolXH::checkFrame(this->dataBuff) == true) { - this->dataBuff.clear(); - for (int i = 0; i < frameList.size(); i++) + counterData->rawFrame = this->dataBuff; + + // ★解析成数据对象 + bool parse = CounterProtocolXH::parseMessureData(this->dataBuff, counterData); + + // 解析成功 + if (parse == true) { - QByteArray frameByte = frameList.at(i); - if (CounterProtocolXH::checkFrame(frameByte) == true) - { - CounterDataDto * counterData = new CounterDataDto(this); - - counterData->rawFrame = frameByte; - - // ★解析成数据对象 - bool parse = CounterProtocolXH::parseMessureData(frameByte, counterData); - - // 解析成功 - if (parse == true) - { - // 1. 清空dataBuff,等待下一帧的数据 -// this->dataBuff.clear(); - - // 2. 补充其他字段 - QDateTime now = QDateTime::currentDateTime(); - counterData->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); - counterData->milisecond = now.toMSecsSinceEpoch(); - counterData->devCode = devCode; - - this->afterFramePhase(counterData); - } - - // 在此处释放内存,不影响后续显示 - // 不在此处释放内存则会导致内存持续增加 - delete counterData; - } + this->dataBuff.clear(); + QDateTime now = QDateTime::currentDateTime(); + counterData->devCode = this->devCode; + counterData->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); + counterData->milisecond = now.toMSecsSinceEpoch(); + this->afterFramePhase(counterData); } + } else if (this->dataBuff.size() > COUNTER_FRAME_MIN_LENGTH) + { + std::cout << QString("%1").arg(this->dataBuff.size()).toStdString() << std::endl; + this->dataBuff.clear(); } + + // 在此处释放内存,不影响后续显示 + // 不在此处释放内存则会导致内存持续增加 + // 具体原因不明 + delete counterData; } @@ -143,4 +134,4 @@ statusObj.insert("clientId", SettingConfig::getInstance().CLIENT_ID); statusObj.insert("deviceId", deviceId); kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); - } +} diff --git a/CounterAcq/CounterDevice.cpp b/CounterAcq/CounterDevice.cpp index 6e54474..d170054 100644 --- a/CounterAcq/CounterDevice.cpp +++ b/CounterAcq/CounterDevice.cpp @@ -55,45 +55,36 @@ void CounterDevice::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); - std::cout << dataBuff.toStdString() << std::endl; + std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; - QList frameList = CounterProtocolXH::extractFrameList(data); - if (frameList.size() > 0) + CounterDataDto * counterData = new CounterDataDto(this); + if (CounterProtocolXH::checkFrame(this->dataBuff) == true) { - this->dataBuff.clear(); - for (int i = 0; i < frameList.size(); i++) + counterData->rawFrame = this->dataBuff; + + // ★解析成数据对象 + bool parse = CounterProtocolXH::parseMessureData(this->dataBuff, counterData); + + // 解析成功 + if (parse == true) { - QByteArray frameByte = frameList.at(i); - if (CounterProtocolXH::checkFrame(frameByte) == true) - { - CounterDataDto * counterData = new CounterDataDto(this); - - counterData->rawFrame = frameByte; - - // ★解析成数据对象 - bool parse = CounterProtocolXH::parseMessureData(frameByte, counterData); - - // 解析成功 - if (parse == true) - { - // 1. 清空dataBuff,等待下一帧的数据 -// this->dataBuff.clear(); - - // 2. 补充其他字段 - QDateTime now = QDateTime::currentDateTime(); - counterData->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); - counterData->milisecond = now.toMSecsSinceEpoch(); - counterData->devCode = devCode; - - this->afterFramePhase(counterData); - } - - // 在此处释放内存,不影响后续显示 - // 不在此处释放内存则会导致内存持续增加 - delete counterData; - } + this->dataBuff.clear(); + QDateTime now = QDateTime::currentDateTime(); + counterData->devCode = this->devCode; + counterData->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); + counterData->milisecond = now.toMSecsSinceEpoch(); + this->afterFramePhase(counterData); } + } else if (this->dataBuff.size() > COUNTER_FRAME_MIN_LENGTH) + { + std::cout << QString("%1").arg(this->dataBuff.size()).toStdString() << std::endl; + this->dataBuff.clear(); } + + // 在此处释放内存,不影响后续显示 + // 不在此处释放内存则会导致内存持续增加 + // 具体原因不明 + delete counterData; } @@ -143,4 +134,4 @@ statusObj.insert("clientId", SettingConfig::getInstance().CLIENT_ID); statusObj.insert("deviceId", deviceId); kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); - } +} diff --git a/CounterAcq/CounterWindow.cpp b/CounterAcq/CounterWindow.cpp index f760c3e..6cb124c 100644 --- a/CounterAcq/CounterWindow.cpp +++ b/CounterAcq/CounterWindow.cpp @@ -55,7 +55,7 @@ // 4. 将获取到的设备添加到下拉列表框中 QJsonArray devArray = devListRes.find("data")->toArray(); - for (int i =0; i < devArray.size(); 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()); @@ -181,8 +181,6 @@ return; } - // 1. 判断数据属于哪个设备,显示在不同的widget上 - // 更新所有通道BOX的值 for (int i = 0; i < counterData->channelDataArray.size(); i++) { @@ -211,7 +209,7 @@ } QJsonObject CounterWindow::initDeviceList() { - QJsonObject response = httpReq->initDeviceList("计数器"); + QJsonObject response = httpReq->initDeviceList(SettingConfig::getInstance().DEV_TYPES, SettingConfig::getInstance().SYSTEM); return response; } diff --git a/CounterAcq/CounterDevice.cpp b/CounterAcq/CounterDevice.cpp index 6e54474..d170054 100644 --- a/CounterAcq/CounterDevice.cpp +++ b/CounterAcq/CounterDevice.cpp @@ -55,45 +55,36 @@ void CounterDevice::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); - std::cout << dataBuff.toStdString() << std::endl; + std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; - QList frameList = CounterProtocolXH::extractFrameList(data); - if (frameList.size() > 0) + CounterDataDto * counterData = new CounterDataDto(this); + if (CounterProtocolXH::checkFrame(this->dataBuff) == true) { - this->dataBuff.clear(); - for (int i = 0; i < frameList.size(); i++) + counterData->rawFrame = this->dataBuff; + + // ★解析成数据对象 + bool parse = CounterProtocolXH::parseMessureData(this->dataBuff, counterData); + + // 解析成功 + if (parse == true) { - QByteArray frameByte = frameList.at(i); - if (CounterProtocolXH::checkFrame(frameByte) == true) - { - CounterDataDto * counterData = new CounterDataDto(this); - - counterData->rawFrame = frameByte; - - // ★解析成数据对象 - bool parse = CounterProtocolXH::parseMessureData(frameByte, counterData); - - // 解析成功 - if (parse == true) - { - // 1. 清空dataBuff,等待下一帧的数据 -// this->dataBuff.clear(); - - // 2. 补充其他字段 - QDateTime now = QDateTime::currentDateTime(); - counterData->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); - counterData->milisecond = now.toMSecsSinceEpoch(); - counterData->devCode = devCode; - - this->afterFramePhase(counterData); - } - - // 在此处释放内存,不影响后续显示 - // 不在此处释放内存则会导致内存持续增加 - delete counterData; - } + this->dataBuff.clear(); + QDateTime now = QDateTime::currentDateTime(); + counterData->devCode = this->devCode; + counterData->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); + counterData->milisecond = now.toMSecsSinceEpoch(); + this->afterFramePhase(counterData); } + } else if (this->dataBuff.size() > COUNTER_FRAME_MIN_LENGTH) + { + std::cout << QString("%1").arg(this->dataBuff.size()).toStdString() << std::endl; + this->dataBuff.clear(); } + + // 在此处释放内存,不影响后续显示 + // 不在此处释放内存则会导致内存持续增加 + // 具体原因不明 + delete counterData; } @@ -143,4 +134,4 @@ statusObj.insert("clientId", SettingConfig::getInstance().CLIENT_ID); statusObj.insert("deviceId", deviceId); kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); - } +} diff --git a/CounterAcq/CounterWindow.cpp b/CounterAcq/CounterWindow.cpp index f760c3e..6cb124c 100644 --- a/CounterAcq/CounterWindow.cpp +++ b/CounterAcq/CounterWindow.cpp @@ -55,7 +55,7 @@ // 4. 将获取到的设备添加到下拉列表框中 QJsonArray devArray = devListRes.find("data")->toArray(); - for (int i =0; i < devArray.size(); 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()); @@ -181,8 +181,6 @@ return; } - // 1. 判断数据属于哪个设备,显示在不同的widget上 - // 更新所有通道BOX的值 for (int i = 0; i < counterData->channelDataArray.size(); i++) { @@ -211,7 +209,7 @@ } QJsonObject CounterWindow::initDeviceList() { - QJsonObject response = httpReq->initDeviceList("计数器"); + QJsonObject response = httpReq->initDeviceList(SettingConfig::getInstance().DEV_TYPES, SettingConfig::getInstance().SYSTEM); return response; } diff --git a/CounterAcq/common/HttpRequestController.cpp b/CounterAcq/common/HttpRequestController.cpp index d4912b8..0a9f3b5 100644 --- a/CounterAcq/common/HttpRequestController.cpp +++ b/CounterAcq/common/HttpRequestController.cpp @@ -126,8 +126,6 @@ request.setRawHeader("token", token.toLocal8Bit()); request.setRawHeader("system", system.toLocal8Bit()); - qDebug() << url; - QNetworkReply * reply = httpUtil->sendGetRequest(request); const QByteArray reply_data = reply->readAll(); QJsonDocument jsonDocument = QJsonDocument::fromJson(reply_data); @@ -155,3 +153,37 @@ return resultObj; } + +QJsonObject HttpRequestController::initDeviceList(QString devType, QString system) +{ + QJsonObject resultObj; + + // 获取设备列表的接口地址 + QUrl url = baseUrl + "/device/list"; + QUrlQuery query; + query.addQueryItem("type", devType); + url.setQuery(query); + + QNetworkRequest request; + request.setUrl(url); + request.setRawHeader("Content-type", "application/json"); + request.setRawHeader("token", token.toLocal8Bit()); + request.setRawHeader("system", system.toLocal8Bit()); + + qDebug() << url; + + QNetworkReply * reply = httpUtil->sendGetRequest(request); + const QByteArray reply_data = reply->readAll(); + QJsonDocument jsonDocument = QJsonDocument::fromJson(reply_data); + if(jsonDocument.isNull() == false) + { + resultObj = jsonDocument.object(); + } else + { + resultObj.insert("code", -1); + } + + qDebug() << resultObj; + + return resultObj; +} diff --git a/CounterAcq/CounterDevice.cpp b/CounterAcq/CounterDevice.cpp index 6e54474..d170054 100644 --- a/CounterAcq/CounterDevice.cpp +++ b/CounterAcq/CounterDevice.cpp @@ -55,45 +55,36 @@ void CounterDevice::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); - std::cout << dataBuff.toStdString() << std::endl; + std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; - QList frameList = CounterProtocolXH::extractFrameList(data); - if (frameList.size() > 0) + CounterDataDto * counterData = new CounterDataDto(this); + if (CounterProtocolXH::checkFrame(this->dataBuff) == true) { - this->dataBuff.clear(); - for (int i = 0; i < frameList.size(); i++) + counterData->rawFrame = this->dataBuff; + + // ★解析成数据对象 + bool parse = CounterProtocolXH::parseMessureData(this->dataBuff, counterData); + + // 解析成功 + if (parse == true) { - QByteArray frameByte = frameList.at(i); - if (CounterProtocolXH::checkFrame(frameByte) == true) - { - CounterDataDto * counterData = new CounterDataDto(this); - - counterData->rawFrame = frameByte; - - // ★解析成数据对象 - bool parse = CounterProtocolXH::parseMessureData(frameByte, counterData); - - // 解析成功 - if (parse == true) - { - // 1. 清空dataBuff,等待下一帧的数据 -// this->dataBuff.clear(); - - // 2. 补充其他字段 - QDateTime now = QDateTime::currentDateTime(); - counterData->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); - counterData->milisecond = now.toMSecsSinceEpoch(); - counterData->devCode = devCode; - - this->afterFramePhase(counterData); - } - - // 在此处释放内存,不影响后续显示 - // 不在此处释放内存则会导致内存持续增加 - delete counterData; - } + this->dataBuff.clear(); + QDateTime now = QDateTime::currentDateTime(); + counterData->devCode = this->devCode; + counterData->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); + counterData->milisecond = now.toMSecsSinceEpoch(); + this->afterFramePhase(counterData); } + } else if (this->dataBuff.size() > COUNTER_FRAME_MIN_LENGTH) + { + std::cout << QString("%1").arg(this->dataBuff.size()).toStdString() << std::endl; + this->dataBuff.clear(); } + + // 在此处释放内存,不影响后续显示 + // 不在此处释放内存则会导致内存持续增加 + // 具体原因不明 + delete counterData; } @@ -143,4 +134,4 @@ statusObj.insert("clientId", SettingConfig::getInstance().CLIENT_ID); statusObj.insert("deviceId", deviceId); kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); - } +} diff --git a/CounterAcq/CounterWindow.cpp b/CounterAcq/CounterWindow.cpp index f760c3e..6cb124c 100644 --- a/CounterAcq/CounterWindow.cpp +++ b/CounterAcq/CounterWindow.cpp @@ -55,7 +55,7 @@ // 4. 将获取到的设备添加到下拉列表框中 QJsonArray devArray = devListRes.find("data")->toArray(); - for (int i =0; i < devArray.size(); 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()); @@ -181,8 +181,6 @@ return; } - // 1. 判断数据属于哪个设备,显示在不同的widget上 - // 更新所有通道BOX的值 for (int i = 0; i < counterData->channelDataArray.size(); i++) { @@ -211,7 +209,7 @@ } QJsonObject CounterWindow::initDeviceList() { - QJsonObject response = httpReq->initDeviceList("计数器"); + QJsonObject response = httpReq->initDeviceList(SettingConfig::getInstance().DEV_TYPES, SettingConfig::getInstance().SYSTEM); return response; } diff --git a/CounterAcq/common/HttpRequestController.cpp b/CounterAcq/common/HttpRequestController.cpp index d4912b8..0a9f3b5 100644 --- a/CounterAcq/common/HttpRequestController.cpp +++ b/CounterAcq/common/HttpRequestController.cpp @@ -126,8 +126,6 @@ request.setRawHeader("token", token.toLocal8Bit()); request.setRawHeader("system", system.toLocal8Bit()); - qDebug() << url; - QNetworkReply * reply = httpUtil->sendGetRequest(request); const QByteArray reply_data = reply->readAll(); QJsonDocument jsonDocument = QJsonDocument::fromJson(reply_data); @@ -155,3 +153,37 @@ return resultObj; } + +QJsonObject HttpRequestController::initDeviceList(QString devType, QString system) +{ + QJsonObject resultObj; + + // 获取设备列表的接口地址 + QUrl url = baseUrl + "/device/list"; + QUrlQuery query; + query.addQueryItem("type", devType); + url.setQuery(query); + + QNetworkRequest request; + request.setUrl(url); + request.setRawHeader("Content-type", "application/json"); + request.setRawHeader("token", token.toLocal8Bit()); + request.setRawHeader("system", system.toLocal8Bit()); + + qDebug() << url; + + QNetworkReply * reply = httpUtil->sendGetRequest(request); + const QByteArray reply_data = reply->readAll(); + QJsonDocument jsonDocument = QJsonDocument::fromJson(reply_data); + if(jsonDocument.isNull() == false) + { + resultObj = jsonDocument.object(); + } else + { + resultObj.insert("code", -1); + } + + qDebug() << resultObj; + + return resultObj; +} diff --git a/CounterAcq/common/HttpRequestController.h b/CounterAcq/common/HttpRequestController.h index 77fc3db..2610548 100644 --- a/CounterAcq/common/HttpRequestController.h +++ b/CounterAcq/common/HttpRequestController.h @@ -19,6 +19,7 @@ QJsonObject getTokenByClientId(QString clientId, QString key); QJsonObject initDictDeviceType(); QJsonObject initDeviceList(QString devType); + QJsonObject initDeviceList(QString devType, QString system); private: HttpRequestUtil * httpUtil; diff --git a/CounterAcq/CounterDevice.cpp b/CounterAcq/CounterDevice.cpp index 6e54474..d170054 100644 --- a/CounterAcq/CounterDevice.cpp +++ b/CounterAcq/CounterDevice.cpp @@ -55,45 +55,36 @@ void CounterDevice::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); - std::cout << dataBuff.toStdString() << std::endl; + std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; - QList frameList = CounterProtocolXH::extractFrameList(data); - if (frameList.size() > 0) + CounterDataDto * counterData = new CounterDataDto(this); + if (CounterProtocolXH::checkFrame(this->dataBuff) == true) { - this->dataBuff.clear(); - for (int i = 0; i < frameList.size(); i++) + counterData->rawFrame = this->dataBuff; + + // ★解析成数据对象 + bool parse = CounterProtocolXH::parseMessureData(this->dataBuff, counterData); + + // 解析成功 + if (parse == true) { - QByteArray frameByte = frameList.at(i); - if (CounterProtocolXH::checkFrame(frameByte) == true) - { - CounterDataDto * counterData = new CounterDataDto(this); - - counterData->rawFrame = frameByte; - - // ★解析成数据对象 - bool parse = CounterProtocolXH::parseMessureData(frameByte, counterData); - - // 解析成功 - if (parse == true) - { - // 1. 清空dataBuff,等待下一帧的数据 -// this->dataBuff.clear(); - - // 2. 补充其他字段 - QDateTime now = QDateTime::currentDateTime(); - counterData->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); - counterData->milisecond = now.toMSecsSinceEpoch(); - counterData->devCode = devCode; - - this->afterFramePhase(counterData); - } - - // 在此处释放内存,不影响后续显示 - // 不在此处释放内存则会导致内存持续增加 - delete counterData; - } + this->dataBuff.clear(); + QDateTime now = QDateTime::currentDateTime(); + counterData->devCode = this->devCode; + counterData->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); + counterData->milisecond = now.toMSecsSinceEpoch(); + this->afterFramePhase(counterData); } + } else if (this->dataBuff.size() > COUNTER_FRAME_MIN_LENGTH) + { + std::cout << QString("%1").arg(this->dataBuff.size()).toStdString() << std::endl; + this->dataBuff.clear(); } + + // 在此处释放内存,不影响后续显示 + // 不在此处释放内存则会导致内存持续增加 + // 具体原因不明 + delete counterData; } @@ -143,4 +134,4 @@ statusObj.insert("clientId", SettingConfig::getInstance().CLIENT_ID); statusObj.insert("deviceId", deviceId); kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); - } +} diff --git a/CounterAcq/CounterWindow.cpp b/CounterAcq/CounterWindow.cpp index f760c3e..6cb124c 100644 --- a/CounterAcq/CounterWindow.cpp +++ b/CounterAcq/CounterWindow.cpp @@ -55,7 +55,7 @@ // 4. 将获取到的设备添加到下拉列表框中 QJsonArray devArray = devListRes.find("data")->toArray(); - for (int i =0; i < devArray.size(); 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()); @@ -181,8 +181,6 @@ return; } - // 1. 判断数据属于哪个设备,显示在不同的widget上 - // 更新所有通道BOX的值 for (int i = 0; i < counterData->channelDataArray.size(); i++) { @@ -211,7 +209,7 @@ } QJsonObject CounterWindow::initDeviceList() { - QJsonObject response = httpReq->initDeviceList("计数器"); + QJsonObject response = httpReq->initDeviceList(SettingConfig::getInstance().DEV_TYPES, SettingConfig::getInstance().SYSTEM); return response; } diff --git a/CounterAcq/common/HttpRequestController.cpp b/CounterAcq/common/HttpRequestController.cpp index d4912b8..0a9f3b5 100644 --- a/CounterAcq/common/HttpRequestController.cpp +++ b/CounterAcq/common/HttpRequestController.cpp @@ -126,8 +126,6 @@ request.setRawHeader("token", token.toLocal8Bit()); request.setRawHeader("system", system.toLocal8Bit()); - qDebug() << url; - QNetworkReply * reply = httpUtil->sendGetRequest(request); const QByteArray reply_data = reply->readAll(); QJsonDocument jsonDocument = QJsonDocument::fromJson(reply_data); @@ -155,3 +153,37 @@ return resultObj; } + +QJsonObject HttpRequestController::initDeviceList(QString devType, QString system) +{ + QJsonObject resultObj; + + // 获取设备列表的接口地址 + QUrl url = baseUrl + "/device/list"; + QUrlQuery query; + query.addQueryItem("type", devType); + url.setQuery(query); + + QNetworkRequest request; + request.setUrl(url); + request.setRawHeader("Content-type", "application/json"); + request.setRawHeader("token", token.toLocal8Bit()); + request.setRawHeader("system", system.toLocal8Bit()); + + qDebug() << url; + + QNetworkReply * reply = httpUtil->sendGetRequest(request); + const QByteArray reply_data = reply->readAll(); + QJsonDocument jsonDocument = QJsonDocument::fromJson(reply_data); + if(jsonDocument.isNull() == false) + { + resultObj = jsonDocument.object(); + } else + { + resultObj.insert("code", -1); + } + + qDebug() << resultObj; + + return resultObj; +} diff --git a/CounterAcq/common/HttpRequestController.h b/CounterAcq/common/HttpRequestController.h index 77fc3db..2610548 100644 --- a/CounterAcq/common/HttpRequestController.h +++ b/CounterAcq/common/HttpRequestController.h @@ -19,6 +19,7 @@ QJsonObject getTokenByClientId(QString clientId, QString key); QJsonObject initDictDeviceType(); QJsonObject initDeviceList(QString devType); + QJsonObject initDeviceList(QString devType, QString system); private: HttpRequestUtil * httpUtil; diff --git a/CounterAcq/common/utils/QSerialPortUtil.cpp b/CounterAcq/common/utils/QSerialPortUtil.cpp index 491b8fa..0834ac7 100644 --- a/CounterAcq/common/utils/QSerialPortUtil.cpp +++ b/CounterAcq/common/utils/QSerialPortUtil.cpp @@ -30,25 +30,15 @@ timer->start(1000); } else { + std::cout << portName.toStdString() << QString(" - %1").arg(baudRate).toStdString(); if (open == true) { // 绑定信号与槽 connect(&serial, &QSerialPort::readyRead, this, &QSerialPortUtil::readData); } - } - if (open == true) - { - // 绑定信号与槽 - connect(&serial, &QSerialPort::readyRead, - this, &QSerialPortUtil::readData); - - // mock data received per second -// QTimer * timer = new QTimer(this); -// connect(timer, &QTimer::timeout, -// this, &QSerialPortUtil::mockReceivData); -// timer->start(1000); + std::cout << " - " << open << std::endl; } } @@ -79,8 +69,7 @@ QByteArray buffer; - buffer.append("$XHTSXHPT0001160101002451276|1000000000000001101|+0.000000000000|+0.033835598632|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000Q").append("\r\n") - .append("$XHTDB114|1|+00000|-00296|-00362|+00115|-01472|-01109|-00908|-01427|+00125|+00202|-00228|-00861|-00958|-00957|-00657|-00959").append("\r\n"); + buffer.append("$XHTSXHPT0001220101031329276|1000000001111111101|+0.000000000000|-0.331044361095|+0.313295936193|+0.435712449844|+0.497012420153|+0.465550566276|+0.499386223873|-0.331044316306|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000Z").append("\r\n"); emit dataRecieved(buffer); } diff --git a/CounterAcq/CounterDevice.cpp b/CounterAcq/CounterDevice.cpp index 6e54474..d170054 100644 --- a/CounterAcq/CounterDevice.cpp +++ b/CounterAcq/CounterDevice.cpp @@ -55,45 +55,36 @@ void CounterDevice::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); - std::cout << dataBuff.toStdString() << std::endl; + std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; - QList frameList = CounterProtocolXH::extractFrameList(data); - if (frameList.size() > 0) + CounterDataDto * counterData = new CounterDataDto(this); + if (CounterProtocolXH::checkFrame(this->dataBuff) == true) { - this->dataBuff.clear(); - for (int i = 0; i < frameList.size(); i++) + counterData->rawFrame = this->dataBuff; + + // ★解析成数据对象 + bool parse = CounterProtocolXH::parseMessureData(this->dataBuff, counterData); + + // 解析成功 + if (parse == true) { - QByteArray frameByte = frameList.at(i); - if (CounterProtocolXH::checkFrame(frameByte) == true) - { - CounterDataDto * counterData = new CounterDataDto(this); - - counterData->rawFrame = frameByte; - - // ★解析成数据对象 - bool parse = CounterProtocolXH::parseMessureData(frameByte, counterData); - - // 解析成功 - if (parse == true) - { - // 1. 清空dataBuff,等待下一帧的数据 -// this->dataBuff.clear(); - - // 2. 补充其他字段 - QDateTime now = QDateTime::currentDateTime(); - counterData->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); - counterData->milisecond = now.toMSecsSinceEpoch(); - counterData->devCode = devCode; - - this->afterFramePhase(counterData); - } - - // 在此处释放内存,不影响后续显示 - // 不在此处释放内存则会导致内存持续增加 - delete counterData; - } + this->dataBuff.clear(); + QDateTime now = QDateTime::currentDateTime(); + counterData->devCode = this->devCode; + counterData->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); + counterData->milisecond = now.toMSecsSinceEpoch(); + this->afterFramePhase(counterData); } + } else if (this->dataBuff.size() > COUNTER_FRAME_MIN_LENGTH) + { + std::cout << QString("%1").arg(this->dataBuff.size()).toStdString() << std::endl; + this->dataBuff.clear(); } + + // 在此处释放内存,不影响后续显示 + // 不在此处释放内存则会导致内存持续增加 + // 具体原因不明 + delete counterData; } @@ -143,4 +134,4 @@ statusObj.insert("clientId", SettingConfig::getInstance().CLIENT_ID); statusObj.insert("deviceId", deviceId); kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); - } +} diff --git a/CounterAcq/CounterWindow.cpp b/CounterAcq/CounterWindow.cpp index f760c3e..6cb124c 100644 --- a/CounterAcq/CounterWindow.cpp +++ b/CounterAcq/CounterWindow.cpp @@ -55,7 +55,7 @@ // 4. 将获取到的设备添加到下拉列表框中 QJsonArray devArray = devListRes.find("data")->toArray(); - for (int i =0; i < devArray.size(); 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()); @@ -181,8 +181,6 @@ return; } - // 1. 判断数据属于哪个设备,显示在不同的widget上 - // 更新所有通道BOX的值 for (int i = 0; i < counterData->channelDataArray.size(); i++) { @@ -211,7 +209,7 @@ } QJsonObject CounterWindow::initDeviceList() { - QJsonObject response = httpReq->initDeviceList("计数器"); + QJsonObject response = httpReq->initDeviceList(SettingConfig::getInstance().DEV_TYPES, SettingConfig::getInstance().SYSTEM); return response; } diff --git a/CounterAcq/common/HttpRequestController.cpp b/CounterAcq/common/HttpRequestController.cpp index d4912b8..0a9f3b5 100644 --- a/CounterAcq/common/HttpRequestController.cpp +++ b/CounterAcq/common/HttpRequestController.cpp @@ -126,8 +126,6 @@ request.setRawHeader("token", token.toLocal8Bit()); request.setRawHeader("system", system.toLocal8Bit()); - qDebug() << url; - QNetworkReply * reply = httpUtil->sendGetRequest(request); const QByteArray reply_data = reply->readAll(); QJsonDocument jsonDocument = QJsonDocument::fromJson(reply_data); @@ -155,3 +153,37 @@ return resultObj; } + +QJsonObject HttpRequestController::initDeviceList(QString devType, QString system) +{ + QJsonObject resultObj; + + // 获取设备列表的接口地址 + QUrl url = baseUrl + "/device/list"; + QUrlQuery query; + query.addQueryItem("type", devType); + url.setQuery(query); + + QNetworkRequest request; + request.setUrl(url); + request.setRawHeader("Content-type", "application/json"); + request.setRawHeader("token", token.toLocal8Bit()); + request.setRawHeader("system", system.toLocal8Bit()); + + qDebug() << url; + + QNetworkReply * reply = httpUtil->sendGetRequest(request); + const QByteArray reply_data = reply->readAll(); + QJsonDocument jsonDocument = QJsonDocument::fromJson(reply_data); + if(jsonDocument.isNull() == false) + { + resultObj = jsonDocument.object(); + } else + { + resultObj.insert("code", -1); + } + + qDebug() << resultObj; + + return resultObj; +} diff --git a/CounterAcq/common/HttpRequestController.h b/CounterAcq/common/HttpRequestController.h index 77fc3db..2610548 100644 --- a/CounterAcq/common/HttpRequestController.h +++ b/CounterAcq/common/HttpRequestController.h @@ -19,6 +19,7 @@ QJsonObject getTokenByClientId(QString clientId, QString key); QJsonObject initDictDeviceType(); QJsonObject initDeviceList(QString devType); + QJsonObject initDeviceList(QString devType, QString system); private: HttpRequestUtil * httpUtil; diff --git a/CounterAcq/common/utils/QSerialPortUtil.cpp b/CounterAcq/common/utils/QSerialPortUtil.cpp index 491b8fa..0834ac7 100644 --- a/CounterAcq/common/utils/QSerialPortUtil.cpp +++ b/CounterAcq/common/utils/QSerialPortUtil.cpp @@ -30,25 +30,15 @@ timer->start(1000); } else { + std::cout << portName.toStdString() << QString(" - %1").arg(baudRate).toStdString(); if (open == true) { // 绑定信号与槽 connect(&serial, &QSerialPort::readyRead, this, &QSerialPortUtil::readData); } - } - if (open == true) - { - // 绑定信号与槽 - connect(&serial, &QSerialPort::readyRead, - this, &QSerialPortUtil::readData); - - // mock data received per second -// QTimer * timer = new QTimer(this); -// connect(timer, &QTimer::timeout, -// this, &QSerialPortUtil::mockReceivData); -// timer->start(1000); + std::cout << " - " << open << std::endl; } } @@ -79,8 +69,7 @@ QByteArray buffer; - buffer.append("$XHTSXHPT0001160101002451276|1000000000000001101|+0.000000000000|+0.033835598632|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000Q").append("\r\n") - .append("$XHTDB114|1|+00000|-00296|-00362|+00115|-01472|-01109|-00908|-01427|+00125|+00202|-00228|-00861|-00958|-00957|-00657|-00959").append("\r\n"); + buffer.append("$XHTSXHPT0001220101031329276|1000000001111111101|+0.000000000000|-0.331044361095|+0.313295936193|+0.435712449844|+0.497012420153|+0.465550566276|+0.499386223873|-0.331044316306|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000Z").append("\r\n"); emit dataRecieved(buffer); } diff --git a/CounterAcq/common/utils/SettingConfig.cpp b/CounterAcq/common/utils/SettingConfig.cpp index da8a3df..6273b6d 100644 --- a/CounterAcq/common/utils/SettingConfig.cpp +++ b/CounterAcq/common/utils/SettingConfig.cpp @@ -17,6 +17,8 @@ CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); + DEV_TYPES = getProperty("client", "devTypes").toString(); + SYSTEM = getProperty("client", "system").toString(); WORK_TYPE = getProperty("client", "workMode").toString(); BASE_URL = getProperty("http", "baseUrl").toString(); diff --git a/CounterAcq/CounterDevice.cpp b/CounterAcq/CounterDevice.cpp index 6e54474..d170054 100644 --- a/CounterAcq/CounterDevice.cpp +++ b/CounterAcq/CounterDevice.cpp @@ -55,45 +55,36 @@ void CounterDevice::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); - std::cout << dataBuff.toStdString() << std::endl; + std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; - QList frameList = CounterProtocolXH::extractFrameList(data); - if (frameList.size() > 0) + CounterDataDto * counterData = new CounterDataDto(this); + if (CounterProtocolXH::checkFrame(this->dataBuff) == true) { - this->dataBuff.clear(); - for (int i = 0; i < frameList.size(); i++) + counterData->rawFrame = this->dataBuff; + + // ★解析成数据对象 + bool parse = CounterProtocolXH::parseMessureData(this->dataBuff, counterData); + + // 解析成功 + if (parse == true) { - QByteArray frameByte = frameList.at(i); - if (CounterProtocolXH::checkFrame(frameByte) == true) - { - CounterDataDto * counterData = new CounterDataDto(this); - - counterData->rawFrame = frameByte; - - // ★解析成数据对象 - bool parse = CounterProtocolXH::parseMessureData(frameByte, counterData); - - // 解析成功 - if (parse == true) - { - // 1. 清空dataBuff,等待下一帧的数据 -// this->dataBuff.clear(); - - // 2. 补充其他字段 - QDateTime now = QDateTime::currentDateTime(); - counterData->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); - counterData->milisecond = now.toMSecsSinceEpoch(); - counterData->devCode = devCode; - - this->afterFramePhase(counterData); - } - - // 在此处释放内存,不影响后续显示 - // 不在此处释放内存则会导致内存持续增加 - delete counterData; - } + this->dataBuff.clear(); + QDateTime now = QDateTime::currentDateTime(); + counterData->devCode = this->devCode; + counterData->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); + counterData->milisecond = now.toMSecsSinceEpoch(); + this->afterFramePhase(counterData); } + } else if (this->dataBuff.size() > COUNTER_FRAME_MIN_LENGTH) + { + std::cout << QString("%1").arg(this->dataBuff.size()).toStdString() << std::endl; + this->dataBuff.clear(); } + + // 在此处释放内存,不影响后续显示 + // 不在此处释放内存则会导致内存持续增加 + // 具体原因不明 + delete counterData; } @@ -143,4 +134,4 @@ statusObj.insert("clientId", SettingConfig::getInstance().CLIENT_ID); statusObj.insert("deviceId", deviceId); kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); - } +} diff --git a/CounterAcq/CounterWindow.cpp b/CounterAcq/CounterWindow.cpp index f760c3e..6cb124c 100644 --- a/CounterAcq/CounterWindow.cpp +++ b/CounterAcq/CounterWindow.cpp @@ -55,7 +55,7 @@ // 4. 将获取到的设备添加到下拉列表框中 QJsonArray devArray = devListRes.find("data")->toArray(); - for (int i =0; i < devArray.size(); 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()); @@ -181,8 +181,6 @@ return; } - // 1. 判断数据属于哪个设备,显示在不同的widget上 - // 更新所有通道BOX的值 for (int i = 0; i < counterData->channelDataArray.size(); i++) { @@ -211,7 +209,7 @@ } QJsonObject CounterWindow::initDeviceList() { - QJsonObject response = httpReq->initDeviceList("计数器"); + QJsonObject response = httpReq->initDeviceList(SettingConfig::getInstance().DEV_TYPES, SettingConfig::getInstance().SYSTEM); return response; } diff --git a/CounterAcq/common/HttpRequestController.cpp b/CounterAcq/common/HttpRequestController.cpp index d4912b8..0a9f3b5 100644 --- a/CounterAcq/common/HttpRequestController.cpp +++ b/CounterAcq/common/HttpRequestController.cpp @@ -126,8 +126,6 @@ request.setRawHeader("token", token.toLocal8Bit()); request.setRawHeader("system", system.toLocal8Bit()); - qDebug() << url; - QNetworkReply * reply = httpUtil->sendGetRequest(request); const QByteArray reply_data = reply->readAll(); QJsonDocument jsonDocument = QJsonDocument::fromJson(reply_data); @@ -155,3 +153,37 @@ return resultObj; } + +QJsonObject HttpRequestController::initDeviceList(QString devType, QString system) +{ + QJsonObject resultObj; + + // 获取设备列表的接口地址 + QUrl url = baseUrl + "/device/list"; + QUrlQuery query; + query.addQueryItem("type", devType); + url.setQuery(query); + + QNetworkRequest request; + request.setUrl(url); + request.setRawHeader("Content-type", "application/json"); + request.setRawHeader("token", token.toLocal8Bit()); + request.setRawHeader("system", system.toLocal8Bit()); + + qDebug() << url; + + QNetworkReply * reply = httpUtil->sendGetRequest(request); + const QByteArray reply_data = reply->readAll(); + QJsonDocument jsonDocument = QJsonDocument::fromJson(reply_data); + if(jsonDocument.isNull() == false) + { + resultObj = jsonDocument.object(); + } else + { + resultObj.insert("code", -1); + } + + qDebug() << resultObj; + + return resultObj; +} diff --git a/CounterAcq/common/HttpRequestController.h b/CounterAcq/common/HttpRequestController.h index 77fc3db..2610548 100644 --- a/CounterAcq/common/HttpRequestController.h +++ b/CounterAcq/common/HttpRequestController.h @@ -19,6 +19,7 @@ QJsonObject getTokenByClientId(QString clientId, QString key); QJsonObject initDictDeviceType(); QJsonObject initDeviceList(QString devType); + QJsonObject initDeviceList(QString devType, QString system); private: HttpRequestUtil * httpUtil; diff --git a/CounterAcq/common/utils/QSerialPortUtil.cpp b/CounterAcq/common/utils/QSerialPortUtil.cpp index 491b8fa..0834ac7 100644 --- a/CounterAcq/common/utils/QSerialPortUtil.cpp +++ b/CounterAcq/common/utils/QSerialPortUtil.cpp @@ -30,25 +30,15 @@ timer->start(1000); } else { + std::cout << portName.toStdString() << QString(" - %1").arg(baudRate).toStdString(); if (open == true) { // 绑定信号与槽 connect(&serial, &QSerialPort::readyRead, this, &QSerialPortUtil::readData); } - } - if (open == true) - { - // 绑定信号与槽 - connect(&serial, &QSerialPort::readyRead, - this, &QSerialPortUtil::readData); - - // mock data received per second -// QTimer * timer = new QTimer(this); -// connect(timer, &QTimer::timeout, -// this, &QSerialPortUtil::mockReceivData); -// timer->start(1000); + std::cout << " - " << open << std::endl; } } @@ -79,8 +69,7 @@ QByteArray buffer; - buffer.append("$XHTSXHPT0001160101002451276|1000000000000001101|+0.000000000000|+0.033835598632|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000Q").append("\r\n") - .append("$XHTDB114|1|+00000|-00296|-00362|+00115|-01472|-01109|-00908|-01427|+00125|+00202|-00228|-00861|-00958|-00957|-00657|-00959").append("\r\n"); + buffer.append("$XHTSXHPT0001220101031329276|1000000001111111101|+0.000000000000|-0.331044361095|+0.313295936193|+0.435712449844|+0.497012420153|+0.465550566276|+0.499386223873|-0.331044316306|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000Z").append("\r\n"); emit dataRecieved(buffer); } diff --git a/CounterAcq/common/utils/SettingConfig.cpp b/CounterAcq/common/utils/SettingConfig.cpp index da8a3df..6273b6d 100644 --- a/CounterAcq/common/utils/SettingConfig.cpp +++ b/CounterAcq/common/utils/SettingConfig.cpp @@ -17,6 +17,8 @@ CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); + DEV_TYPES = getProperty("client", "devTypes").toString(); + SYSTEM = getProperty("client", "system").toString(); WORK_TYPE = getProperty("client", "workMode").toString(); BASE_URL = getProperty("http", "baseUrl").toString(); diff --git a/CounterAcq/common/utils/SettingConfig.h b/CounterAcq/common/utils/SettingConfig.h index fe8d070..6add4de 100644 --- a/CounterAcq/common/utils/SettingConfig.h +++ b/CounterAcq/common/utils/SettingConfig.h @@ -39,6 +39,8 @@ QString CLIENT_ID; QString APP_KEY; + QString DEV_TYPES; + QString SYSTEM; QString WORK_TYPE; QString BASE_URL; diff --git a/CounterAcq/CounterDevice.cpp b/CounterAcq/CounterDevice.cpp index 6e54474..d170054 100644 --- a/CounterAcq/CounterDevice.cpp +++ b/CounterAcq/CounterDevice.cpp @@ -55,45 +55,36 @@ void CounterDevice::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); - std::cout << dataBuff.toStdString() << std::endl; + std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; - QList frameList = CounterProtocolXH::extractFrameList(data); - if (frameList.size() > 0) + CounterDataDto * counterData = new CounterDataDto(this); + if (CounterProtocolXH::checkFrame(this->dataBuff) == true) { - this->dataBuff.clear(); - for (int i = 0; i < frameList.size(); i++) + counterData->rawFrame = this->dataBuff; + + // ★解析成数据对象 + bool parse = CounterProtocolXH::parseMessureData(this->dataBuff, counterData); + + // 解析成功 + if (parse == true) { - QByteArray frameByte = frameList.at(i); - if (CounterProtocolXH::checkFrame(frameByte) == true) - { - CounterDataDto * counterData = new CounterDataDto(this); - - counterData->rawFrame = frameByte; - - // ★解析成数据对象 - bool parse = CounterProtocolXH::parseMessureData(frameByte, counterData); - - // 解析成功 - if (parse == true) - { - // 1. 清空dataBuff,等待下一帧的数据 -// this->dataBuff.clear(); - - // 2. 补充其他字段 - QDateTime now = QDateTime::currentDateTime(); - counterData->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); - counterData->milisecond = now.toMSecsSinceEpoch(); - counterData->devCode = devCode; - - this->afterFramePhase(counterData); - } - - // 在此处释放内存,不影响后续显示 - // 不在此处释放内存则会导致内存持续增加 - delete counterData; - } + this->dataBuff.clear(); + QDateTime now = QDateTime::currentDateTime(); + counterData->devCode = this->devCode; + counterData->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); + counterData->milisecond = now.toMSecsSinceEpoch(); + this->afterFramePhase(counterData); } + } else if (this->dataBuff.size() > COUNTER_FRAME_MIN_LENGTH) + { + std::cout << QString("%1").arg(this->dataBuff.size()).toStdString() << std::endl; + this->dataBuff.clear(); } + + // 在此处释放内存,不影响后续显示 + // 不在此处释放内存则会导致内存持续增加 + // 具体原因不明 + delete counterData; } @@ -143,4 +134,4 @@ statusObj.insert("clientId", SettingConfig::getInstance().CLIENT_ID); statusObj.insert("deviceId", deviceId); kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); - } +} diff --git a/CounterAcq/CounterWindow.cpp b/CounterAcq/CounterWindow.cpp index f760c3e..6cb124c 100644 --- a/CounterAcq/CounterWindow.cpp +++ b/CounterAcq/CounterWindow.cpp @@ -55,7 +55,7 @@ // 4. 将获取到的设备添加到下拉列表框中 QJsonArray devArray = devListRes.find("data")->toArray(); - for (int i =0; i < devArray.size(); 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()); @@ -181,8 +181,6 @@ return; } - // 1. 判断数据属于哪个设备,显示在不同的widget上 - // 更新所有通道BOX的值 for (int i = 0; i < counterData->channelDataArray.size(); i++) { @@ -211,7 +209,7 @@ } QJsonObject CounterWindow::initDeviceList() { - QJsonObject response = httpReq->initDeviceList("计数器"); + QJsonObject response = httpReq->initDeviceList(SettingConfig::getInstance().DEV_TYPES, SettingConfig::getInstance().SYSTEM); return response; } diff --git a/CounterAcq/common/HttpRequestController.cpp b/CounterAcq/common/HttpRequestController.cpp index d4912b8..0a9f3b5 100644 --- a/CounterAcq/common/HttpRequestController.cpp +++ b/CounterAcq/common/HttpRequestController.cpp @@ -126,8 +126,6 @@ request.setRawHeader("token", token.toLocal8Bit()); request.setRawHeader("system", system.toLocal8Bit()); - qDebug() << url; - QNetworkReply * reply = httpUtil->sendGetRequest(request); const QByteArray reply_data = reply->readAll(); QJsonDocument jsonDocument = QJsonDocument::fromJson(reply_data); @@ -155,3 +153,37 @@ return resultObj; } + +QJsonObject HttpRequestController::initDeviceList(QString devType, QString system) +{ + QJsonObject resultObj; + + // 获取设备列表的接口地址 + QUrl url = baseUrl + "/device/list"; + QUrlQuery query; + query.addQueryItem("type", devType); + url.setQuery(query); + + QNetworkRequest request; + request.setUrl(url); + request.setRawHeader("Content-type", "application/json"); + request.setRawHeader("token", token.toLocal8Bit()); + request.setRawHeader("system", system.toLocal8Bit()); + + qDebug() << url; + + QNetworkReply * reply = httpUtil->sendGetRequest(request); + const QByteArray reply_data = reply->readAll(); + QJsonDocument jsonDocument = QJsonDocument::fromJson(reply_data); + if(jsonDocument.isNull() == false) + { + resultObj = jsonDocument.object(); + } else + { + resultObj.insert("code", -1); + } + + qDebug() << resultObj; + + return resultObj; +} diff --git a/CounterAcq/common/HttpRequestController.h b/CounterAcq/common/HttpRequestController.h index 77fc3db..2610548 100644 --- a/CounterAcq/common/HttpRequestController.h +++ b/CounterAcq/common/HttpRequestController.h @@ -19,6 +19,7 @@ QJsonObject getTokenByClientId(QString clientId, QString key); QJsonObject initDictDeviceType(); QJsonObject initDeviceList(QString devType); + QJsonObject initDeviceList(QString devType, QString system); private: HttpRequestUtil * httpUtil; diff --git a/CounterAcq/common/utils/QSerialPortUtil.cpp b/CounterAcq/common/utils/QSerialPortUtil.cpp index 491b8fa..0834ac7 100644 --- a/CounterAcq/common/utils/QSerialPortUtil.cpp +++ b/CounterAcq/common/utils/QSerialPortUtil.cpp @@ -30,25 +30,15 @@ timer->start(1000); } else { + std::cout << portName.toStdString() << QString(" - %1").arg(baudRate).toStdString(); if (open == true) { // 绑定信号与槽 connect(&serial, &QSerialPort::readyRead, this, &QSerialPortUtil::readData); } - } - if (open == true) - { - // 绑定信号与槽 - connect(&serial, &QSerialPort::readyRead, - this, &QSerialPortUtil::readData); - - // mock data received per second -// QTimer * timer = new QTimer(this); -// connect(timer, &QTimer::timeout, -// this, &QSerialPortUtil::mockReceivData); -// timer->start(1000); + std::cout << " - " << open << std::endl; } } @@ -79,8 +69,7 @@ QByteArray buffer; - buffer.append("$XHTSXHPT0001160101002451276|1000000000000001101|+0.000000000000|+0.033835598632|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000Q").append("\r\n") - .append("$XHTDB114|1|+00000|-00296|-00362|+00115|-01472|-01109|-00908|-01427|+00125|+00202|-00228|-00861|-00958|-00957|-00657|-00959").append("\r\n"); + buffer.append("$XHTSXHPT0001220101031329276|1000000001111111101|+0.000000000000|-0.331044361095|+0.313295936193|+0.435712449844|+0.497012420153|+0.465550566276|+0.499386223873|-0.331044316306|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000Z").append("\r\n"); emit dataRecieved(buffer); } diff --git a/CounterAcq/common/utils/SettingConfig.cpp b/CounterAcq/common/utils/SettingConfig.cpp index da8a3df..6273b6d 100644 --- a/CounterAcq/common/utils/SettingConfig.cpp +++ b/CounterAcq/common/utils/SettingConfig.cpp @@ -17,6 +17,8 @@ CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); + DEV_TYPES = getProperty("client", "devTypes").toString(); + SYSTEM = getProperty("client", "system").toString(); WORK_TYPE = getProperty("client", "workMode").toString(); BASE_URL = getProperty("http", "baseUrl").toString(); diff --git a/CounterAcq/common/utils/SettingConfig.h b/CounterAcq/common/utils/SettingConfig.h index fe8d070..6add4de 100644 --- a/CounterAcq/common/utils/SettingConfig.h +++ b/CounterAcq/common/utils/SettingConfig.h @@ -39,6 +39,8 @@ QString CLIENT_ID; QString APP_KEY; + QString DEV_TYPES; + QString SYSTEM; QString WORK_TYPE; QString BASE_URL; diff --git a/CounterAcq/conf/config.ini b/CounterAcq/conf/config.ini index bded175..5758931 100644 --- a/CounterAcq/conf/config.ini +++ b/CounterAcq/conf/config.ini @@ -13,6 +13,8 @@ [client] clientId="clock" appKey="bd347bdd20943d2db8af558c3712a357" +devTypes="01" +system="clock" workMode="mock" [http] diff --git a/CounterAcq/CounterDevice.cpp b/CounterAcq/CounterDevice.cpp index 6e54474..d170054 100644 --- a/CounterAcq/CounterDevice.cpp +++ b/CounterAcq/CounterDevice.cpp @@ -55,45 +55,36 @@ void CounterDevice::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); - std::cout << dataBuff.toStdString() << std::endl; + std::cout << QByteUtil::binToHexString(this->dataBuff).toStdString() << std::endl; - QList frameList = CounterProtocolXH::extractFrameList(data); - if (frameList.size() > 0) + CounterDataDto * counterData = new CounterDataDto(this); + if (CounterProtocolXH::checkFrame(this->dataBuff) == true) { - this->dataBuff.clear(); - for (int i = 0; i < frameList.size(); i++) + counterData->rawFrame = this->dataBuff; + + // ★解析成数据对象 + bool parse = CounterProtocolXH::parseMessureData(this->dataBuff, counterData); + + // 解析成功 + if (parse == true) { - QByteArray frameByte = frameList.at(i); - if (CounterProtocolXH::checkFrame(frameByte) == true) - { - CounterDataDto * counterData = new CounterDataDto(this); - - counterData->rawFrame = frameByte; - - // ★解析成数据对象 - bool parse = CounterProtocolXH::parseMessureData(frameByte, counterData); - - // 解析成功 - if (parse == true) - { - // 1. 清空dataBuff,等待下一帧的数据 -// this->dataBuff.clear(); - - // 2. 补充其他字段 - QDateTime now = QDateTime::currentDateTime(); - counterData->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); - counterData->milisecond = now.toMSecsSinceEpoch(); - counterData->devCode = devCode; - - this->afterFramePhase(counterData); - } - - // 在此处释放内存,不影响后续显示 - // 不在此处释放内存则会导致内存持续增加 - delete counterData; - } + this->dataBuff.clear(); + QDateTime now = QDateTime::currentDateTime(); + counterData->devCode = this->devCode; + counterData->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); + counterData->milisecond = now.toMSecsSinceEpoch(); + this->afterFramePhase(counterData); } + } else if (this->dataBuff.size() > COUNTER_FRAME_MIN_LENGTH) + { + std::cout << QString("%1").arg(this->dataBuff.size()).toStdString() << std::endl; + this->dataBuff.clear(); } + + // 在此处释放内存,不影响后续显示 + // 不在此处释放内存则会导致内存持续增加 + // 具体原因不明 + delete counterData; } @@ -143,4 +134,4 @@ statusObj.insert("clientId", SettingConfig::getInstance().CLIENT_ID); statusObj.insert("deviceId", deviceId); kafkaUtil.produceMessage(SettingConfig::getInstance().KAFKA_STATUS_TOPIC, QString(QJsonDocument(statusObj).toJson(QJsonDocument::Compact))); - } +} diff --git a/CounterAcq/CounterWindow.cpp b/CounterAcq/CounterWindow.cpp index f760c3e..6cb124c 100644 --- a/CounterAcq/CounterWindow.cpp +++ b/CounterAcq/CounterWindow.cpp @@ -55,7 +55,7 @@ // 4. 将获取到的设备添加到下拉列表框中 QJsonArray devArray = devListRes.find("data")->toArray(); - for (int i =0; i < devArray.size(); 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()); @@ -181,8 +181,6 @@ return; } - // 1. 判断数据属于哪个设备,显示在不同的widget上 - // 更新所有通道BOX的值 for (int i = 0; i < counterData->channelDataArray.size(); i++) { @@ -211,7 +209,7 @@ } QJsonObject CounterWindow::initDeviceList() { - QJsonObject response = httpReq->initDeviceList("计数器"); + QJsonObject response = httpReq->initDeviceList(SettingConfig::getInstance().DEV_TYPES, SettingConfig::getInstance().SYSTEM); return response; } diff --git a/CounterAcq/common/HttpRequestController.cpp b/CounterAcq/common/HttpRequestController.cpp index d4912b8..0a9f3b5 100644 --- a/CounterAcq/common/HttpRequestController.cpp +++ b/CounterAcq/common/HttpRequestController.cpp @@ -126,8 +126,6 @@ request.setRawHeader("token", token.toLocal8Bit()); request.setRawHeader("system", system.toLocal8Bit()); - qDebug() << url; - QNetworkReply * reply = httpUtil->sendGetRequest(request); const QByteArray reply_data = reply->readAll(); QJsonDocument jsonDocument = QJsonDocument::fromJson(reply_data); @@ -155,3 +153,37 @@ return resultObj; } + +QJsonObject HttpRequestController::initDeviceList(QString devType, QString system) +{ + QJsonObject resultObj; + + // 获取设备列表的接口地址 + QUrl url = baseUrl + "/device/list"; + QUrlQuery query; + query.addQueryItem("type", devType); + url.setQuery(query); + + QNetworkRequest request; + request.setUrl(url); + request.setRawHeader("Content-type", "application/json"); + request.setRawHeader("token", token.toLocal8Bit()); + request.setRawHeader("system", system.toLocal8Bit()); + + qDebug() << url; + + QNetworkReply * reply = httpUtil->sendGetRequest(request); + const QByteArray reply_data = reply->readAll(); + QJsonDocument jsonDocument = QJsonDocument::fromJson(reply_data); + if(jsonDocument.isNull() == false) + { + resultObj = jsonDocument.object(); + } else + { + resultObj.insert("code", -1); + } + + qDebug() << resultObj; + + return resultObj; +} diff --git a/CounterAcq/common/HttpRequestController.h b/CounterAcq/common/HttpRequestController.h index 77fc3db..2610548 100644 --- a/CounterAcq/common/HttpRequestController.h +++ b/CounterAcq/common/HttpRequestController.h @@ -19,6 +19,7 @@ QJsonObject getTokenByClientId(QString clientId, QString key); QJsonObject initDictDeviceType(); QJsonObject initDeviceList(QString devType); + QJsonObject initDeviceList(QString devType, QString system); private: HttpRequestUtil * httpUtil; diff --git a/CounterAcq/common/utils/QSerialPortUtil.cpp b/CounterAcq/common/utils/QSerialPortUtil.cpp index 491b8fa..0834ac7 100644 --- a/CounterAcq/common/utils/QSerialPortUtil.cpp +++ b/CounterAcq/common/utils/QSerialPortUtil.cpp @@ -30,25 +30,15 @@ timer->start(1000); } else { + std::cout << portName.toStdString() << QString(" - %1").arg(baudRate).toStdString(); if (open == true) { // 绑定信号与槽 connect(&serial, &QSerialPort::readyRead, this, &QSerialPortUtil::readData); } - } - if (open == true) - { - // 绑定信号与槽 - connect(&serial, &QSerialPort::readyRead, - this, &QSerialPortUtil::readData); - - // mock data received per second -// QTimer * timer = new QTimer(this); -// connect(timer, &QTimer::timeout, -// this, &QSerialPortUtil::mockReceivData); -// timer->start(1000); + std::cout << " - " << open << std::endl; } } @@ -79,8 +69,7 @@ QByteArray buffer; - buffer.append("$XHTSXHPT0001160101002451276|1000000000000001101|+0.000000000000|+0.033835598632|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000Q").append("\r\n") - .append("$XHTDB114|1|+00000|-00296|-00362|+00115|-01472|-01109|-00908|-01427|+00125|+00202|-00228|-00861|-00958|-00957|-00657|-00959").append("\r\n"); + buffer.append("$XHTSXHPT0001220101031329276|1000000001111111101|+0.000000000000|-0.331044361095|+0.313295936193|+0.435712449844|+0.497012420153|+0.465550566276|+0.499386223873|-0.331044316306|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000Z").append("\r\n"); emit dataRecieved(buffer); } diff --git a/CounterAcq/common/utils/SettingConfig.cpp b/CounterAcq/common/utils/SettingConfig.cpp index da8a3df..6273b6d 100644 --- a/CounterAcq/common/utils/SettingConfig.cpp +++ b/CounterAcq/common/utils/SettingConfig.cpp @@ -17,6 +17,8 @@ CLIENT_ID = getProperty("client", "clientId").toString(); APP_KEY = getProperty("client", "appKey").toString(); + DEV_TYPES = getProperty("client", "devTypes").toString(); + SYSTEM = getProperty("client", "system").toString(); WORK_TYPE = getProperty("client", "workMode").toString(); BASE_URL = getProperty("http", "baseUrl").toString(); diff --git a/CounterAcq/common/utils/SettingConfig.h b/CounterAcq/common/utils/SettingConfig.h index fe8d070..6add4de 100644 --- a/CounterAcq/common/utils/SettingConfig.h +++ b/CounterAcq/common/utils/SettingConfig.h @@ -39,6 +39,8 @@ QString CLIENT_ID; QString APP_KEY; + QString DEV_TYPES; + QString SYSTEM; QString WORK_TYPE; QString BASE_URL; diff --git a/CounterAcq/conf/config.ini b/CounterAcq/conf/config.ini index bded175..5758931 100644 --- a/CounterAcq/conf/config.ini +++ b/CounterAcq/conf/config.ini @@ -13,6 +13,8 @@ [client] clientId="clock" appKey="bd347bdd20943d2db8af558c3712a357" +devTypes="01" +system="clock" workMode="mock" [http] diff --git a/CounterAcq/protocol/CounterProtocolXH.h b/CounterAcq/protocol/CounterProtocolXH.h index 7c9ccd4..3ae6883 100644 --- a/CounterAcq/protocol/CounterProtocolXH.h +++ b/CounterAcq/protocol/CounterProtocolXH.h @@ -6,6 +6,7 @@ #include "dto/CounterDataDto.h" static const QString COUNTER_FRAME_HEAD = "$XHTS"; // 帧头 +static const QString COUNTER_FRAME_TAIL = "\r\n"; static const QString COUNTER_FRAME_CONTENT_SEP = "|"; // 帧内分隔符 static const int COUNTER_FRAME_DEVCODE_LENGTH = 8; @@ -13,12 +14,14 @@ static const int COUNTER_FRAME_DTLEN_LENGTH = 3; static const int COUNTER_FRAME_SUM_LENGTH = 1; static const int COUNTER_MESSURE_CHANNEL = 16; +static const int COUNTER_FRAME_DATA_LENGTH = 16 * 16 + 20; static const int COUNTER_FRAME_MIN_LENGTH = COUNTER_FRAME_HEAD.length() + COUNTER_FRAME_DEVCODE_LENGTH + COUNTER_FRAME_TIME_LENGTH + COUNTER_FRAME_DTLEN_LENGTH + - COUNTER_FRAME_SUM_LENGTH; + COUNTER_FRAME_SUM_LENGTH + + COUNTER_FRAME_DATA_LENGTH; class CounterProtocolXH : public QObject {