diff --git a/PhaseDevice.cpp b/PhaseDevice.cpp index 76678f0..7e48b9c 100644 --- a/PhaseDevice.cpp +++ b/PhaseDevice.cpp @@ -18,12 +18,14 @@ connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler); + casicDev = new casic::birmm::tflab::CasicDevPhase(); + base = (qrand() % 100000) * 1000; -// QTimer * timer = new QTimer(this); -// connect(timer, &QTimer::timeout, -// this, &PhaseDevice::mockPhaseData); -// timer->start(1000); + QTimer * timer = new QTimer(this); + connect(timer, &QTimer::timeout, + this, &PhaseDevice::mockPhaseData); + timer->start(1000); } PhaseDevice::~PhaseDevice() @@ -36,71 +38,44 @@ { QString startCmd = PhaseProtocolBM::startMessure(); clientUtil->sendData(startCmd.toLocal8Bit()); - - // 2. 输出到日志文件中 - QDateTime now = QDateTime::currentDateTime(); - QString date = now.toString("yyyy-MM-dd"); - - // 2.1 原始字节数组数据 - QString filename = "netBytes.log"; - QString content = now.toString("yyyy-MM-dd HH:mm:ss.zzz") + " [send] " + startCmd; - QLogUtil::writeRawDataLogByDate(date, filename, content); } void PhaseDevice::stopWork() { QString stopCmd = PhaseProtocolBM::stopMessure(); clientUtil->sendData(stopCmd.toLocal8Bit()); - - // 2. 输出到日志文件中 - QDateTime now = QDateTime::currentDateTime(); - QString date = now.toString("yyyy-MM-dd"); - - // 2.1 原始字节数组数据 - QString filename = "netBytes.log"; - QString content = now.toString("yyyy-MM-dd HH:mm:ss.zzz") + " [send] " + stopCmd; - QLogUtil::writeRawDataLogByDate(date, filename, content); } void PhaseDevice::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); - // 2. 输出到日志文件中 - QDateTime now = QDateTime::currentDateTime(); - QString date = now.toString("yyyy-MM-dd"); + qulonglong* frameSN; + QList * channelValue = new QList(); + QList * channelAllen = new QList(); - // 2.1 原始字节数组数据 - QString filename = "netBytes.log"; - QString content = now.toString("yyyy-MM-dd HH:mm:ss.zzz") + " [recv] " + QByteUtil::binToHexString(data); - QLogUtil::writeRawDataLogByDate(date, filename, content); - - PhaseDataDto * phaseData = new PhaseDataDto(this); - if (PhaseProtocolBM::checkFrame(this->dataBuff) == true) + int recCode = casicDev->frameParse(dataBuff, &frameSN, channelValue, channelAllen); + if (recCode != casic::birmm::tflab::RETURN_STATUS::FAIL) { - phaseData->rawFrame = this->dataBuff; + dataBuff.clear(); - // ★解析成数据对象 - bool parse = PhaseProtocolBM::parseMessureData(this->dataBuff, phaseData); - - // 解析成功 - if (parse == true) + std::cout << "[value]: "; + for (int i = 0; i < 16; i++) { - QDateTime now = QDateTime::currentDateTime(); - phaseData->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); - phaseData->milisecond = now.toMSecsSinceEpoch(); - this->afterFramePhase(phaseData); + std::cout << QString::number(channelValue->at(i), 'e', 6).toStdString() << " "; } - } else if (this->dataBuff.size() > PHASE_FRAM_LENGTH) - { - std::cout << QString("%1").arg(this->dataBuff.size()).toStdString() << std::endl; - this->dataBuff.clear(); - } + std::cout << std::endl; - // 在此处释放内存,不影响后续显示 - // 不在此处释放内存则会导致内存持续增加 - // 具体原因不明 - delete phaseData; + if (recCode == casic::birmm::tflab::RETURN_STATUS::SUCCESS) + { + std::cout << "[allen]: "; + for (int i = 0; i < 16; i++) + { + std::cout << QString::number(channelAllen->at(i), 'e', 6).toStdString() << " "; + } + std::cout << std::endl; + } + } } void PhaseDevice::afterFramePhase(PhaseDataDto * phaseData) @@ -113,7 +88,7 @@ // 2.1 原始字节数组数据 QString filename = "rawBytes.log"; - QString content = phaseData->timestamp + " " + QByteUtil::binToHexString(phaseData->rawFrame); + QString content = phaseData->timestamp + " " + ByteUtil::binToHexString(phaseData->rawFrame); QLogUtil::writeRawDataLogByDate(date, filename, content); QVector vectorZero(5); @@ -131,13 +106,6 @@ // 3.2 将通道数据写日志 QString chFilename = QString("CH_%1.log").arg(i + 1, 2, 10, QLatin1Char('0')); -// QString channelDataStr = QString("%1 [%2] %3 %4 %5") -// .arg(phaseData->timestamp) -// .arg(phaseData->frameId) -// .arg(phaseData->channelDataStr.at(i)) -// .arg(QString::number(channelDelay)) -// .arg(QString::number(phaseData->rawPhaseDiffData.at(i), 'f', 0)); -// std::cout << channelDataStr.toStdString() << std::endl; QString channelDataStr = QString("%1 %2") .arg(phaseData->timestamp) @@ -155,11 +123,11 @@ // 3.4 分别计算不同时间维度的稳定度 int size = phaseVector[i].size() - SettingConfig::getInstance().SKIP_HEADER; - if(size>=5) vector[0] = DataProcessAlgorithm::allan(i, 1, size, SettingConfig::getInstance().SKIP_HEADER); else vector[0] = 0; - if(size>=50) vector[1] = DataProcessAlgorithm::allan(i, 10, size, SettingConfig::getInstance().SKIP_HEADER); else vector[1] = 0; - if(size>=500) vector[2] = DataProcessAlgorithm::allan(i, 100, size, SettingConfig::getInstance().SKIP_HEADER); else vector[2] = 0; - if(size>=5000) vector[3] = DataProcessAlgorithm::allan(i, 1000, size, SettingConfig::getInstance().SKIP_HEADER); else vector[3] = 0; - if(size>=50000) vector[4] = DataProcessAlgorithm::allan(i, 10000, size, SettingConfig::getInstance().SKIP_HEADER); else vector[4] = 0; +// if(size>=5) vector[0] = DataProcessAlgorithm::allan(i, 1, size, SettingConfig::getInstance().SKIP_HEADER); else vector[0] = 0; +// if(size>=50) vector[1] = DataProcessAlgorithm::allan(i, 10, size, SettingConfig::getInstance().SKIP_HEADER); else vector[1] = 0; +// if(size>=500) vector[2] = DataProcessAlgorithm::allan(i, 100, size, SettingConfig::getInstance().SKIP_HEADER); else vector[2] = 0; +// if(size>=5000) vector[3] = DataProcessAlgorithm::allan(i, 1000, size, SettingConfig::getInstance().SKIP_HEADER); else vector[3] = 0; +// if(size>=50000) vector[4] = DataProcessAlgorithm::allan(i, 10000, size, SettingConfig::getInstance().SKIP_HEADER); else vector[4] = 0; // 3.5 将稳定度计算结果存入 channelAllan[i] = vector; @@ -180,16 +148,16 @@ QString frameId = now.toString("HHmmsszzz"); QByteArray buffer; - buffer.append(QByteUtil::hexStringToBytes(frameId.mid(0, 8))); + buffer.append(ByteUtil::hexStringToBytes(frameId.mid(0, 8))); for (int i = 1; i <= 16; i++) { int value = base + qrand() % 40; base = value; - buffer.append(QByteUtil::hexStringToBytes("00800000")).append(QByteUtil::ULongToBytes(value, 4)); + buffer.append(ByteUtil::hexStringToBytes("00800000")).append(ByteUtil::ULongToBytes(value, 4)); } - buffer.append(QByteUtil::hexStringToBytes("EEEEEEEE")); + buffer.append(ByteUtil::hexStringToBytes("EEEEEEEE")); this->dataReceivedHandler(buffer); } diff --git a/PhaseDevice.cpp b/PhaseDevice.cpp index 76678f0..7e48b9c 100644 --- a/PhaseDevice.cpp +++ b/PhaseDevice.cpp @@ -18,12 +18,14 @@ connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler); + casicDev = new casic::birmm::tflab::CasicDevPhase(); + base = (qrand() % 100000) * 1000; -// QTimer * timer = new QTimer(this); -// connect(timer, &QTimer::timeout, -// this, &PhaseDevice::mockPhaseData); -// timer->start(1000); + QTimer * timer = new QTimer(this); + connect(timer, &QTimer::timeout, + this, &PhaseDevice::mockPhaseData); + timer->start(1000); } PhaseDevice::~PhaseDevice() @@ -36,71 +38,44 @@ { QString startCmd = PhaseProtocolBM::startMessure(); clientUtil->sendData(startCmd.toLocal8Bit()); - - // 2. 输出到日志文件中 - QDateTime now = QDateTime::currentDateTime(); - QString date = now.toString("yyyy-MM-dd"); - - // 2.1 原始字节数组数据 - QString filename = "netBytes.log"; - QString content = now.toString("yyyy-MM-dd HH:mm:ss.zzz") + " [send] " + startCmd; - QLogUtil::writeRawDataLogByDate(date, filename, content); } void PhaseDevice::stopWork() { QString stopCmd = PhaseProtocolBM::stopMessure(); clientUtil->sendData(stopCmd.toLocal8Bit()); - - // 2. 输出到日志文件中 - QDateTime now = QDateTime::currentDateTime(); - QString date = now.toString("yyyy-MM-dd"); - - // 2.1 原始字节数组数据 - QString filename = "netBytes.log"; - QString content = now.toString("yyyy-MM-dd HH:mm:ss.zzz") + " [send] " + stopCmd; - QLogUtil::writeRawDataLogByDate(date, filename, content); } void PhaseDevice::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); - // 2. 输出到日志文件中 - QDateTime now = QDateTime::currentDateTime(); - QString date = now.toString("yyyy-MM-dd"); + qulonglong* frameSN; + QList * channelValue = new QList(); + QList * channelAllen = new QList(); - // 2.1 原始字节数组数据 - QString filename = "netBytes.log"; - QString content = now.toString("yyyy-MM-dd HH:mm:ss.zzz") + " [recv] " + QByteUtil::binToHexString(data); - QLogUtil::writeRawDataLogByDate(date, filename, content); - - PhaseDataDto * phaseData = new PhaseDataDto(this); - if (PhaseProtocolBM::checkFrame(this->dataBuff) == true) + int recCode = casicDev->frameParse(dataBuff, &frameSN, channelValue, channelAllen); + if (recCode != casic::birmm::tflab::RETURN_STATUS::FAIL) { - phaseData->rawFrame = this->dataBuff; + dataBuff.clear(); - // ★解析成数据对象 - bool parse = PhaseProtocolBM::parseMessureData(this->dataBuff, phaseData); - - // 解析成功 - if (parse == true) + std::cout << "[value]: "; + for (int i = 0; i < 16; i++) { - QDateTime now = QDateTime::currentDateTime(); - phaseData->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); - phaseData->milisecond = now.toMSecsSinceEpoch(); - this->afterFramePhase(phaseData); + std::cout << QString::number(channelValue->at(i), 'e', 6).toStdString() << " "; } - } else if (this->dataBuff.size() > PHASE_FRAM_LENGTH) - { - std::cout << QString("%1").arg(this->dataBuff.size()).toStdString() << std::endl; - this->dataBuff.clear(); - } + std::cout << std::endl; - // 在此处释放内存,不影响后续显示 - // 不在此处释放内存则会导致内存持续增加 - // 具体原因不明 - delete phaseData; + if (recCode == casic::birmm::tflab::RETURN_STATUS::SUCCESS) + { + std::cout << "[allen]: "; + for (int i = 0; i < 16; i++) + { + std::cout << QString::number(channelAllen->at(i), 'e', 6).toStdString() << " "; + } + std::cout << std::endl; + } + } } void PhaseDevice::afterFramePhase(PhaseDataDto * phaseData) @@ -113,7 +88,7 @@ // 2.1 原始字节数组数据 QString filename = "rawBytes.log"; - QString content = phaseData->timestamp + " " + QByteUtil::binToHexString(phaseData->rawFrame); + QString content = phaseData->timestamp + " " + ByteUtil::binToHexString(phaseData->rawFrame); QLogUtil::writeRawDataLogByDate(date, filename, content); QVector vectorZero(5); @@ -131,13 +106,6 @@ // 3.2 将通道数据写日志 QString chFilename = QString("CH_%1.log").arg(i + 1, 2, 10, QLatin1Char('0')); -// QString channelDataStr = QString("%1 [%2] %3 %4 %5") -// .arg(phaseData->timestamp) -// .arg(phaseData->frameId) -// .arg(phaseData->channelDataStr.at(i)) -// .arg(QString::number(channelDelay)) -// .arg(QString::number(phaseData->rawPhaseDiffData.at(i), 'f', 0)); -// std::cout << channelDataStr.toStdString() << std::endl; QString channelDataStr = QString("%1 %2") .arg(phaseData->timestamp) @@ -155,11 +123,11 @@ // 3.4 分别计算不同时间维度的稳定度 int size = phaseVector[i].size() - SettingConfig::getInstance().SKIP_HEADER; - if(size>=5) vector[0] = DataProcessAlgorithm::allan(i, 1, size, SettingConfig::getInstance().SKIP_HEADER); else vector[0] = 0; - if(size>=50) vector[1] = DataProcessAlgorithm::allan(i, 10, size, SettingConfig::getInstance().SKIP_HEADER); else vector[1] = 0; - if(size>=500) vector[2] = DataProcessAlgorithm::allan(i, 100, size, SettingConfig::getInstance().SKIP_HEADER); else vector[2] = 0; - if(size>=5000) vector[3] = DataProcessAlgorithm::allan(i, 1000, size, SettingConfig::getInstance().SKIP_HEADER); else vector[3] = 0; - if(size>=50000) vector[4] = DataProcessAlgorithm::allan(i, 10000, size, SettingConfig::getInstance().SKIP_HEADER); else vector[4] = 0; +// if(size>=5) vector[0] = DataProcessAlgorithm::allan(i, 1, size, SettingConfig::getInstance().SKIP_HEADER); else vector[0] = 0; +// if(size>=50) vector[1] = DataProcessAlgorithm::allan(i, 10, size, SettingConfig::getInstance().SKIP_HEADER); else vector[1] = 0; +// if(size>=500) vector[2] = DataProcessAlgorithm::allan(i, 100, size, SettingConfig::getInstance().SKIP_HEADER); else vector[2] = 0; +// if(size>=5000) vector[3] = DataProcessAlgorithm::allan(i, 1000, size, SettingConfig::getInstance().SKIP_HEADER); else vector[3] = 0; +// if(size>=50000) vector[4] = DataProcessAlgorithm::allan(i, 10000, size, SettingConfig::getInstance().SKIP_HEADER); else vector[4] = 0; // 3.5 将稳定度计算结果存入 channelAllan[i] = vector; @@ -180,16 +148,16 @@ QString frameId = now.toString("HHmmsszzz"); QByteArray buffer; - buffer.append(QByteUtil::hexStringToBytes(frameId.mid(0, 8))); + buffer.append(ByteUtil::hexStringToBytes(frameId.mid(0, 8))); for (int i = 1; i <= 16; i++) { int value = base + qrand() % 40; base = value; - buffer.append(QByteUtil::hexStringToBytes("00800000")).append(QByteUtil::ULongToBytes(value, 4)); + buffer.append(ByteUtil::hexStringToBytes("00800000")).append(ByteUtil::ULongToBytes(value, 4)); } - buffer.append(QByteUtil::hexStringToBytes("EEEEEEEE")); + buffer.append(ByteUtil::hexStringToBytes("EEEEEEEE")); this->dataReceivedHandler(buffer); } diff --git a/PhaseDevice.h b/PhaseDevice.h index 683077d..8c702f4 100644 --- a/PhaseDevice.h +++ b/PhaseDevice.h @@ -4,8 +4,7 @@ #include #include "common/utils/SettingConfig.h" #include "common/utils/UDPClientUtil.h" -#include "protocol/PhaseProtocolBM.h" -#include "DataProcessAlgorithm.h" +#include "3rdlibs/include/CasicDevPhase.h" class PhaseDevice : public QObject { @@ -21,6 +20,8 @@ private: UDPClientUtil * clientUtil; + casic::birmm::tflab::CasicDevPhase * casicDev; + QByteArray dataBuff; void mockPhaseData(); diff --git a/PhaseDevice.cpp b/PhaseDevice.cpp index 76678f0..7e48b9c 100644 --- a/PhaseDevice.cpp +++ b/PhaseDevice.cpp @@ -18,12 +18,14 @@ connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler); + casicDev = new casic::birmm::tflab::CasicDevPhase(); + base = (qrand() % 100000) * 1000; -// QTimer * timer = new QTimer(this); -// connect(timer, &QTimer::timeout, -// this, &PhaseDevice::mockPhaseData); -// timer->start(1000); + QTimer * timer = new QTimer(this); + connect(timer, &QTimer::timeout, + this, &PhaseDevice::mockPhaseData); + timer->start(1000); } PhaseDevice::~PhaseDevice() @@ -36,71 +38,44 @@ { QString startCmd = PhaseProtocolBM::startMessure(); clientUtil->sendData(startCmd.toLocal8Bit()); - - // 2. 输出到日志文件中 - QDateTime now = QDateTime::currentDateTime(); - QString date = now.toString("yyyy-MM-dd"); - - // 2.1 原始字节数组数据 - QString filename = "netBytes.log"; - QString content = now.toString("yyyy-MM-dd HH:mm:ss.zzz") + " [send] " + startCmd; - QLogUtil::writeRawDataLogByDate(date, filename, content); } void PhaseDevice::stopWork() { QString stopCmd = PhaseProtocolBM::stopMessure(); clientUtil->sendData(stopCmd.toLocal8Bit()); - - // 2. 输出到日志文件中 - QDateTime now = QDateTime::currentDateTime(); - QString date = now.toString("yyyy-MM-dd"); - - // 2.1 原始字节数组数据 - QString filename = "netBytes.log"; - QString content = now.toString("yyyy-MM-dd HH:mm:ss.zzz") + " [send] " + stopCmd; - QLogUtil::writeRawDataLogByDate(date, filename, content); } void PhaseDevice::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); - // 2. 输出到日志文件中 - QDateTime now = QDateTime::currentDateTime(); - QString date = now.toString("yyyy-MM-dd"); + qulonglong* frameSN; + QList * channelValue = new QList(); + QList * channelAllen = new QList(); - // 2.1 原始字节数组数据 - QString filename = "netBytes.log"; - QString content = now.toString("yyyy-MM-dd HH:mm:ss.zzz") + " [recv] " + QByteUtil::binToHexString(data); - QLogUtil::writeRawDataLogByDate(date, filename, content); - - PhaseDataDto * phaseData = new PhaseDataDto(this); - if (PhaseProtocolBM::checkFrame(this->dataBuff) == true) + int recCode = casicDev->frameParse(dataBuff, &frameSN, channelValue, channelAllen); + if (recCode != casic::birmm::tflab::RETURN_STATUS::FAIL) { - phaseData->rawFrame = this->dataBuff; + dataBuff.clear(); - // ★解析成数据对象 - bool parse = PhaseProtocolBM::parseMessureData(this->dataBuff, phaseData); - - // 解析成功 - if (parse == true) + std::cout << "[value]: "; + for (int i = 0; i < 16; i++) { - QDateTime now = QDateTime::currentDateTime(); - phaseData->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); - phaseData->milisecond = now.toMSecsSinceEpoch(); - this->afterFramePhase(phaseData); + std::cout << QString::number(channelValue->at(i), 'e', 6).toStdString() << " "; } - } else if (this->dataBuff.size() > PHASE_FRAM_LENGTH) - { - std::cout << QString("%1").arg(this->dataBuff.size()).toStdString() << std::endl; - this->dataBuff.clear(); - } + std::cout << std::endl; - // 在此处释放内存,不影响后续显示 - // 不在此处释放内存则会导致内存持续增加 - // 具体原因不明 - delete phaseData; + if (recCode == casic::birmm::tflab::RETURN_STATUS::SUCCESS) + { + std::cout << "[allen]: "; + for (int i = 0; i < 16; i++) + { + std::cout << QString::number(channelAllen->at(i), 'e', 6).toStdString() << " "; + } + std::cout << std::endl; + } + } } void PhaseDevice::afterFramePhase(PhaseDataDto * phaseData) @@ -113,7 +88,7 @@ // 2.1 原始字节数组数据 QString filename = "rawBytes.log"; - QString content = phaseData->timestamp + " " + QByteUtil::binToHexString(phaseData->rawFrame); + QString content = phaseData->timestamp + " " + ByteUtil::binToHexString(phaseData->rawFrame); QLogUtil::writeRawDataLogByDate(date, filename, content); QVector vectorZero(5); @@ -131,13 +106,6 @@ // 3.2 将通道数据写日志 QString chFilename = QString("CH_%1.log").arg(i + 1, 2, 10, QLatin1Char('0')); -// QString channelDataStr = QString("%1 [%2] %3 %4 %5") -// .arg(phaseData->timestamp) -// .arg(phaseData->frameId) -// .arg(phaseData->channelDataStr.at(i)) -// .arg(QString::number(channelDelay)) -// .arg(QString::number(phaseData->rawPhaseDiffData.at(i), 'f', 0)); -// std::cout << channelDataStr.toStdString() << std::endl; QString channelDataStr = QString("%1 %2") .arg(phaseData->timestamp) @@ -155,11 +123,11 @@ // 3.4 分别计算不同时间维度的稳定度 int size = phaseVector[i].size() - SettingConfig::getInstance().SKIP_HEADER; - if(size>=5) vector[0] = DataProcessAlgorithm::allan(i, 1, size, SettingConfig::getInstance().SKIP_HEADER); else vector[0] = 0; - if(size>=50) vector[1] = DataProcessAlgorithm::allan(i, 10, size, SettingConfig::getInstance().SKIP_HEADER); else vector[1] = 0; - if(size>=500) vector[2] = DataProcessAlgorithm::allan(i, 100, size, SettingConfig::getInstance().SKIP_HEADER); else vector[2] = 0; - if(size>=5000) vector[3] = DataProcessAlgorithm::allan(i, 1000, size, SettingConfig::getInstance().SKIP_HEADER); else vector[3] = 0; - if(size>=50000) vector[4] = DataProcessAlgorithm::allan(i, 10000, size, SettingConfig::getInstance().SKIP_HEADER); else vector[4] = 0; +// if(size>=5) vector[0] = DataProcessAlgorithm::allan(i, 1, size, SettingConfig::getInstance().SKIP_HEADER); else vector[0] = 0; +// if(size>=50) vector[1] = DataProcessAlgorithm::allan(i, 10, size, SettingConfig::getInstance().SKIP_HEADER); else vector[1] = 0; +// if(size>=500) vector[2] = DataProcessAlgorithm::allan(i, 100, size, SettingConfig::getInstance().SKIP_HEADER); else vector[2] = 0; +// if(size>=5000) vector[3] = DataProcessAlgorithm::allan(i, 1000, size, SettingConfig::getInstance().SKIP_HEADER); else vector[3] = 0; +// if(size>=50000) vector[4] = DataProcessAlgorithm::allan(i, 10000, size, SettingConfig::getInstance().SKIP_HEADER); else vector[4] = 0; // 3.5 将稳定度计算结果存入 channelAllan[i] = vector; @@ -180,16 +148,16 @@ QString frameId = now.toString("HHmmsszzz"); QByteArray buffer; - buffer.append(QByteUtil::hexStringToBytes(frameId.mid(0, 8))); + buffer.append(ByteUtil::hexStringToBytes(frameId.mid(0, 8))); for (int i = 1; i <= 16; i++) { int value = base + qrand() % 40; base = value; - buffer.append(QByteUtil::hexStringToBytes("00800000")).append(QByteUtil::ULongToBytes(value, 4)); + buffer.append(ByteUtil::hexStringToBytes("00800000")).append(ByteUtil::ULongToBytes(value, 4)); } - buffer.append(QByteUtil::hexStringToBytes("EEEEEEEE")); + buffer.append(ByteUtil::hexStringToBytes("EEEEEEEE")); this->dataReceivedHandler(buffer); } diff --git a/PhaseDevice.h b/PhaseDevice.h index 683077d..8c702f4 100644 --- a/PhaseDevice.h +++ b/PhaseDevice.h @@ -4,8 +4,7 @@ #include #include "common/utils/SettingConfig.h" #include "common/utils/UDPClientUtil.h" -#include "protocol/PhaseProtocolBM.h" -#include "DataProcessAlgorithm.h" +#include "3rdlibs/include/CasicDevPhase.h" class PhaseDevice : public QObject { @@ -21,6 +20,8 @@ private: UDPClientUtil * clientUtil; + casic::birmm::tflab::CasicDevPhase * casicDev; + QByteArray dataBuff; void mockPhaseData(); diff --git a/PhaseMeasure.pro b/PhaseMeasure.pro index d247f1b..ced8cc8 100644 --- a/PhaseMeasure.pro +++ b/PhaseMeasure.pro @@ -10,7 +10,7 @@ FORMS += SetConfig.ui include(common/common.pri) -include(protocol/protocol.pri) +#include(protocol/protocol.pri) include(QCustomPlot/QCustomPlot.pri) HEADERS += AppInit.h @@ -20,7 +20,7 @@ HEADERS += ChannelItem.h HEADERS += PhaseWindow.h HEADERS += SetConfig.h -HEADERS += DataProcessAlgorithm.h +#HEADERS += DataProcessAlgorithm.h SOURCES += AppInit.cpp SOURCES += IconHelper.cpp @@ -29,7 +29,7 @@ SOURCES += ChannelItem.cpp SOURCES += PhaseWindow.cpp SOURCES += SetConfig.cpp -SOURCES += DataProcessAlgorithm.cpp +#SOURCES += DataProcessAlgorithm.cpp SOURCES += main.cpp # Default rules for deployment. @@ -43,3 +43,11 @@ RESOURCES += images.qrc RC_ICONS = PhaseMeasure.ico + +unix:!macx|win32: LIBS += -L$$PWD/3rdlibs/ -lDevPhaseLib + +INCLUDEPATH += $$PWD/3rdlibs/include +DEPENDPATH += $$PWD/3rdlibs/include + +win32:!win32-g++: PRE_TARGETDEPS += $$PWD/3rdlibs/DevPhaseLib.lib +else:unix:!macx|win32-g++: PRE_TARGETDEPS += $$PWD/3rdlibs/libDevPhaseLib.a diff --git a/PhaseDevice.cpp b/PhaseDevice.cpp index 76678f0..7e48b9c 100644 --- a/PhaseDevice.cpp +++ b/PhaseDevice.cpp @@ -18,12 +18,14 @@ connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler); + casicDev = new casic::birmm::tflab::CasicDevPhase(); + base = (qrand() % 100000) * 1000; -// QTimer * timer = new QTimer(this); -// connect(timer, &QTimer::timeout, -// this, &PhaseDevice::mockPhaseData); -// timer->start(1000); + QTimer * timer = new QTimer(this); + connect(timer, &QTimer::timeout, + this, &PhaseDevice::mockPhaseData); + timer->start(1000); } PhaseDevice::~PhaseDevice() @@ -36,71 +38,44 @@ { QString startCmd = PhaseProtocolBM::startMessure(); clientUtil->sendData(startCmd.toLocal8Bit()); - - // 2. 输出到日志文件中 - QDateTime now = QDateTime::currentDateTime(); - QString date = now.toString("yyyy-MM-dd"); - - // 2.1 原始字节数组数据 - QString filename = "netBytes.log"; - QString content = now.toString("yyyy-MM-dd HH:mm:ss.zzz") + " [send] " + startCmd; - QLogUtil::writeRawDataLogByDate(date, filename, content); } void PhaseDevice::stopWork() { QString stopCmd = PhaseProtocolBM::stopMessure(); clientUtil->sendData(stopCmd.toLocal8Bit()); - - // 2. 输出到日志文件中 - QDateTime now = QDateTime::currentDateTime(); - QString date = now.toString("yyyy-MM-dd"); - - // 2.1 原始字节数组数据 - QString filename = "netBytes.log"; - QString content = now.toString("yyyy-MM-dd HH:mm:ss.zzz") + " [send] " + stopCmd; - QLogUtil::writeRawDataLogByDate(date, filename, content); } void PhaseDevice::dataReceivedHandler(QByteArray data) { this->dataBuff.append(data); - // 2. 输出到日志文件中 - QDateTime now = QDateTime::currentDateTime(); - QString date = now.toString("yyyy-MM-dd"); + qulonglong* frameSN; + QList * channelValue = new QList(); + QList * channelAllen = new QList(); - // 2.1 原始字节数组数据 - QString filename = "netBytes.log"; - QString content = now.toString("yyyy-MM-dd HH:mm:ss.zzz") + " [recv] " + QByteUtil::binToHexString(data); - QLogUtil::writeRawDataLogByDate(date, filename, content); - - PhaseDataDto * phaseData = new PhaseDataDto(this); - if (PhaseProtocolBM::checkFrame(this->dataBuff) == true) + int recCode = casicDev->frameParse(dataBuff, &frameSN, channelValue, channelAllen); + if (recCode != casic::birmm::tflab::RETURN_STATUS::FAIL) { - phaseData->rawFrame = this->dataBuff; + dataBuff.clear(); - // ★解析成数据对象 - bool parse = PhaseProtocolBM::parseMessureData(this->dataBuff, phaseData); - - // 解析成功 - if (parse == true) + std::cout << "[value]: "; + for (int i = 0; i < 16; i++) { - QDateTime now = QDateTime::currentDateTime(); - phaseData->timestamp = now.toString("yyyy-MM-dd HH:mm:ss.zzz"); - phaseData->milisecond = now.toMSecsSinceEpoch(); - this->afterFramePhase(phaseData); + std::cout << QString::number(channelValue->at(i), 'e', 6).toStdString() << " "; } - } else if (this->dataBuff.size() > PHASE_FRAM_LENGTH) - { - std::cout << QString("%1").arg(this->dataBuff.size()).toStdString() << std::endl; - this->dataBuff.clear(); - } + std::cout << std::endl; - // 在此处释放内存,不影响后续显示 - // 不在此处释放内存则会导致内存持续增加 - // 具体原因不明 - delete phaseData; + if (recCode == casic::birmm::tflab::RETURN_STATUS::SUCCESS) + { + std::cout << "[allen]: "; + for (int i = 0; i < 16; i++) + { + std::cout << QString::number(channelAllen->at(i), 'e', 6).toStdString() << " "; + } + std::cout << std::endl; + } + } } void PhaseDevice::afterFramePhase(PhaseDataDto * phaseData) @@ -113,7 +88,7 @@ // 2.1 原始字节数组数据 QString filename = "rawBytes.log"; - QString content = phaseData->timestamp + " " + QByteUtil::binToHexString(phaseData->rawFrame); + QString content = phaseData->timestamp + " " + ByteUtil::binToHexString(phaseData->rawFrame); QLogUtil::writeRawDataLogByDate(date, filename, content); QVector vectorZero(5); @@ -131,13 +106,6 @@ // 3.2 将通道数据写日志 QString chFilename = QString("CH_%1.log").arg(i + 1, 2, 10, QLatin1Char('0')); -// QString channelDataStr = QString("%1 [%2] %3 %4 %5") -// .arg(phaseData->timestamp) -// .arg(phaseData->frameId) -// .arg(phaseData->channelDataStr.at(i)) -// .arg(QString::number(channelDelay)) -// .arg(QString::number(phaseData->rawPhaseDiffData.at(i), 'f', 0)); -// std::cout << channelDataStr.toStdString() << std::endl; QString channelDataStr = QString("%1 %2") .arg(phaseData->timestamp) @@ -155,11 +123,11 @@ // 3.4 分别计算不同时间维度的稳定度 int size = phaseVector[i].size() - SettingConfig::getInstance().SKIP_HEADER; - if(size>=5) vector[0] = DataProcessAlgorithm::allan(i, 1, size, SettingConfig::getInstance().SKIP_HEADER); else vector[0] = 0; - if(size>=50) vector[1] = DataProcessAlgorithm::allan(i, 10, size, SettingConfig::getInstance().SKIP_HEADER); else vector[1] = 0; - if(size>=500) vector[2] = DataProcessAlgorithm::allan(i, 100, size, SettingConfig::getInstance().SKIP_HEADER); else vector[2] = 0; - if(size>=5000) vector[3] = DataProcessAlgorithm::allan(i, 1000, size, SettingConfig::getInstance().SKIP_HEADER); else vector[3] = 0; - if(size>=50000) vector[4] = DataProcessAlgorithm::allan(i, 10000, size, SettingConfig::getInstance().SKIP_HEADER); else vector[4] = 0; +// if(size>=5) vector[0] = DataProcessAlgorithm::allan(i, 1, size, SettingConfig::getInstance().SKIP_HEADER); else vector[0] = 0; +// if(size>=50) vector[1] = DataProcessAlgorithm::allan(i, 10, size, SettingConfig::getInstance().SKIP_HEADER); else vector[1] = 0; +// if(size>=500) vector[2] = DataProcessAlgorithm::allan(i, 100, size, SettingConfig::getInstance().SKIP_HEADER); else vector[2] = 0; +// if(size>=5000) vector[3] = DataProcessAlgorithm::allan(i, 1000, size, SettingConfig::getInstance().SKIP_HEADER); else vector[3] = 0; +// if(size>=50000) vector[4] = DataProcessAlgorithm::allan(i, 10000, size, SettingConfig::getInstance().SKIP_HEADER); else vector[4] = 0; // 3.5 将稳定度计算结果存入 channelAllan[i] = vector; @@ -180,16 +148,16 @@ QString frameId = now.toString("HHmmsszzz"); QByteArray buffer; - buffer.append(QByteUtil::hexStringToBytes(frameId.mid(0, 8))); + buffer.append(ByteUtil::hexStringToBytes(frameId.mid(0, 8))); for (int i = 1; i <= 16; i++) { int value = base + qrand() % 40; base = value; - buffer.append(QByteUtil::hexStringToBytes("00800000")).append(QByteUtil::ULongToBytes(value, 4)); + buffer.append(ByteUtil::hexStringToBytes("00800000")).append(ByteUtil::ULongToBytes(value, 4)); } - buffer.append(QByteUtil::hexStringToBytes("EEEEEEEE")); + buffer.append(ByteUtil::hexStringToBytes("EEEEEEEE")); this->dataReceivedHandler(buffer); } diff --git a/PhaseDevice.h b/PhaseDevice.h index 683077d..8c702f4 100644 --- a/PhaseDevice.h +++ b/PhaseDevice.h @@ -4,8 +4,7 @@ #include #include "common/utils/SettingConfig.h" #include "common/utils/UDPClientUtil.h" -#include "protocol/PhaseProtocolBM.h" -#include "DataProcessAlgorithm.h" +#include "3rdlibs/include/CasicDevPhase.h" class PhaseDevice : public QObject { @@ -21,6 +20,8 @@ private: UDPClientUtil * clientUtil; + casic::birmm::tflab::CasicDevPhase * casicDev; + QByteArray dataBuff; void mockPhaseData(); diff --git a/PhaseMeasure.pro b/PhaseMeasure.pro index d247f1b..ced8cc8 100644 --- a/PhaseMeasure.pro +++ b/PhaseMeasure.pro @@ -10,7 +10,7 @@ FORMS += SetConfig.ui include(common/common.pri) -include(protocol/protocol.pri) +#include(protocol/protocol.pri) include(QCustomPlot/QCustomPlot.pri) HEADERS += AppInit.h @@ -20,7 +20,7 @@ HEADERS += ChannelItem.h HEADERS += PhaseWindow.h HEADERS += SetConfig.h -HEADERS += DataProcessAlgorithm.h +#HEADERS += DataProcessAlgorithm.h SOURCES += AppInit.cpp SOURCES += IconHelper.cpp @@ -29,7 +29,7 @@ SOURCES += ChannelItem.cpp SOURCES += PhaseWindow.cpp SOURCES += SetConfig.cpp -SOURCES += DataProcessAlgorithm.cpp +#SOURCES += DataProcessAlgorithm.cpp SOURCES += main.cpp # Default rules for deployment. @@ -43,3 +43,11 @@ RESOURCES += images.qrc RC_ICONS = PhaseMeasure.ico + +unix:!macx|win32: LIBS += -L$$PWD/3rdlibs/ -lDevPhaseLib + +INCLUDEPATH += $$PWD/3rdlibs/include +DEPENDPATH += $$PWD/3rdlibs/include + +win32:!win32-g++: PRE_TARGETDEPS += $$PWD/3rdlibs/DevPhaseLib.lib +else:unix:!macx|win32-g++: PRE_TARGETDEPS += $$PWD/3rdlibs/libDevPhaseLib.a diff --git a/common/common.pri b/common/common.pri index 81ad04d..f45f2aa 100644 --- a/common/common.pri +++ b/common/common.pri @@ -1,10 +1,10 @@ HEADERS += $$PWD/utils/SettingConfig.h -HEADERS += $$PWD/utils/QByteUtil.h +#HEADERS += $$PWD/utils/QByteUtil.h HEADERS += $$PWD/utils/QLogUtil.h HEADERS += $$PWD/utils/UDPClientUtil.h SOURCES += $$PWD/utils/SettingConfig.cpp -SOURCES += $$PWD/utils/QByteUtil.cpp +#SOURCES += $$PWD/utils/QByteUtil.cpp SOURCES += $$PWD/utils/QLogUtil.cpp SOURCES += $$PWD/utils/UDPClientUtil.cpp