diff --git a/DeviceHub/protocol/FrequencyTuningProtocolTX.cpp b/DeviceHub/protocol/FrequencyTuningProtocolTX.cpp index 9c47b0e..501b19e 100644 --- a/DeviceHub/protocol/FrequencyTuningProtocolTX.cpp +++ b/DeviceHub/protocol/FrequencyTuningProtocolTX.cpp @@ -66,6 +66,76 @@ return true; } +QByteArray FrequencyTuningProtocolTX::generateSettingCommand(QString devCode, QString commandType, QString valueSet) +{ + QByteArray commandBytes; + + commandBytes.append(commandType); + commandBytes.append("BM1304-30"); + commandBytes.append(devCode); + + if (commandType == "3" || commandType =="4") + { + // 频率偏移设置 or 频率偏移步进量设置 + commandBytes.append(0x20); + QString valueStr = QString::number(valueSet.toDouble(), 'g', 3).toUpper(); + if (valueSet.toDouble() >= 0) + { + commandBytes.prepend('+'); + } + commandBytes.append(valueStr); + + } else if (commandType == "5") + { + // PPS移相设置 + commandBytes.append(0x20); + + QString valueStr = QString("%1").arg(qAbs(valueSet.toLongLong()), 12, 10, QLatin1Char('0')); + if (valueSet.toLongLong() >= 0) + { + commandBytes.prepend('+'); + } else { + commandBytes.prepend("-"); + } + commandBytes.append(valueStr); + + } else if (commandType == "6") + { + // PPS脉冲宽度设置 + commandBytes.append(0x20); + commandBytes.append('+'); + QString valueStr = QString("%1").arg(valueSet.toLongLong(), 8, 10, QLatin1Char('0')); + commandBytes.append(valueStr); + + } else if (commandType == "7") + { + // 相位步进量设置 + commandBytes.append(0x20); + QString valueStr = QString("%1").arg(qAbs(valueSet.toDouble()), 14, 'f', 3, QLatin1Char('0')); + if (valueSet.toDouble() >= 0) + { + commandBytes.prepend('+'); + } else { + commandBytes.prepend('-'); + } + commandBytes.append(valueStr); + + } else if (commandType == "8") + { + // PPS同步设置 + commandBytes.append(0x20).append("1"); + } + + commandBytes.append('0'); // + commandBytes.append(this->buildCRC16(commandBytes)); + commandBytes.append("*"); + + commandBytes.prepend(QString::number(commandBytes.size() + 3, 16).toUpper().toLocal8Bit()); + commandBytes.prepend("$"); + + return commandBytes; +} + QList FrequencyTuningProtocolTX::extractFrameList(QByteArray rawData) { QList resultList; diff --git a/DeviceHub/protocol/FrequencyTuningProtocolTX.cpp b/DeviceHub/protocol/FrequencyTuningProtocolTX.cpp index 9c47b0e..501b19e 100644 --- a/DeviceHub/protocol/FrequencyTuningProtocolTX.cpp +++ b/DeviceHub/protocol/FrequencyTuningProtocolTX.cpp @@ -66,6 +66,76 @@ return true; } +QByteArray FrequencyTuningProtocolTX::generateSettingCommand(QString devCode, QString commandType, QString valueSet) +{ + QByteArray commandBytes; + + commandBytes.append(commandType); + commandBytes.append("BM1304-30"); + commandBytes.append(devCode); + + if (commandType == "3" || commandType =="4") + { + // 频率偏移设置 or 频率偏移步进量设置 + commandBytes.append(0x20); + QString valueStr = QString::number(valueSet.toDouble(), 'g', 3).toUpper(); + if (valueSet.toDouble() >= 0) + { + commandBytes.prepend('+'); + } + commandBytes.append(valueStr); + + } else if (commandType == "5") + { + // PPS移相设置 + commandBytes.append(0x20); + + QString valueStr = QString("%1").arg(qAbs(valueSet.toLongLong()), 12, 10, QLatin1Char('0')); + if (valueSet.toLongLong() >= 0) + { + commandBytes.prepend('+'); + } else { + commandBytes.prepend("-"); + } + commandBytes.append(valueStr); + + } else if (commandType == "6") + { + // PPS脉冲宽度设置 + commandBytes.append(0x20); + commandBytes.append('+'); + QString valueStr = QString("%1").arg(valueSet.toLongLong(), 8, 10, QLatin1Char('0')); + commandBytes.append(valueStr); + + } else if (commandType == "7") + { + // 相位步进量设置 + commandBytes.append(0x20); + QString valueStr = QString("%1").arg(qAbs(valueSet.toDouble()), 14, 'f', 3, QLatin1Char('0')); + if (valueSet.toDouble() >= 0) + { + commandBytes.prepend('+'); + } else { + commandBytes.prepend('-'); + } + commandBytes.append(valueStr); + + } else if (commandType == "8") + { + // PPS同步设置 + commandBytes.append(0x20).append("1"); + } + + commandBytes.append('0'); // + commandBytes.append(this->buildCRC16(commandBytes)); + commandBytes.append("*"); + + commandBytes.prepend(QString::number(commandBytes.size() + 3, 16).toUpper().toLocal8Bit()); + commandBytes.prepend("$"); + + return commandBytes; +} + QList FrequencyTuningProtocolTX::extractFrameList(QByteArray rawData) { QList resultList; diff --git a/DeviceHub/protocol/FrequencyTuningProtocolTX.h b/DeviceHub/protocol/FrequencyTuningProtocolTX.h index a914280..ac3b903 100644 --- a/DeviceHub/protocol/FrequencyTuningProtocolTX.h +++ b/DeviceHub/protocol/FrequencyTuningProtocolTX.h @@ -17,6 +17,7 @@ // 解析数据 bool parseDeviceFrameData(QByteArray rawData, DeviceFrameBaseDto * ftFrameData, int frameType); + QByteArray generateSettingCommand(QString devCode, QString commandType, QString valueSet); DeviceFrameBaseDto * frameFactory(int frameType); // diff --git a/DeviceHub/protocol/FrequencyTuningProtocolTX.cpp b/DeviceHub/protocol/FrequencyTuningProtocolTX.cpp index 9c47b0e..501b19e 100644 --- a/DeviceHub/protocol/FrequencyTuningProtocolTX.cpp +++ b/DeviceHub/protocol/FrequencyTuningProtocolTX.cpp @@ -66,6 +66,76 @@ return true; } +QByteArray FrequencyTuningProtocolTX::generateSettingCommand(QString devCode, QString commandType, QString valueSet) +{ + QByteArray commandBytes; + + commandBytes.append(commandType); + commandBytes.append("BM1304-30"); + commandBytes.append(devCode); + + if (commandType == "3" || commandType =="4") + { + // 频率偏移设置 or 频率偏移步进量设置 + commandBytes.append(0x20); + QString valueStr = QString::number(valueSet.toDouble(), 'g', 3).toUpper(); + if (valueSet.toDouble() >= 0) + { + commandBytes.prepend('+'); + } + commandBytes.append(valueStr); + + } else if (commandType == "5") + { + // PPS移相设置 + commandBytes.append(0x20); + + QString valueStr = QString("%1").arg(qAbs(valueSet.toLongLong()), 12, 10, QLatin1Char('0')); + if (valueSet.toLongLong() >= 0) + { + commandBytes.prepend('+'); + } else { + commandBytes.prepend("-"); + } + commandBytes.append(valueStr); + + } else if (commandType == "6") + { + // PPS脉冲宽度设置 + commandBytes.append(0x20); + commandBytes.append('+'); + QString valueStr = QString("%1").arg(valueSet.toLongLong(), 8, 10, QLatin1Char('0')); + commandBytes.append(valueStr); + + } else if (commandType == "7") + { + // 相位步进量设置 + commandBytes.append(0x20); + QString valueStr = QString("%1").arg(qAbs(valueSet.toDouble()), 14, 'f', 3, QLatin1Char('0')); + if (valueSet.toDouble() >= 0) + { + commandBytes.prepend('+'); + } else { + commandBytes.prepend('-'); + } + commandBytes.append(valueStr); + + } else if (commandType == "8") + { + // PPS同步设置 + commandBytes.append(0x20).append("1"); + } + + commandBytes.append('0'); // + commandBytes.append(this->buildCRC16(commandBytes)); + commandBytes.append("*"); + + commandBytes.prepend(QString::number(commandBytes.size() + 3, 16).toUpper().toLocal8Bit()); + commandBytes.prepend("$"); + + return commandBytes; +} + QList FrequencyTuningProtocolTX::extractFrameList(QByteArray rawData) { QList resultList; diff --git a/DeviceHub/protocol/FrequencyTuningProtocolTX.h b/DeviceHub/protocol/FrequencyTuningProtocolTX.h index a914280..ac3b903 100644 --- a/DeviceHub/protocol/FrequencyTuningProtocolTX.h +++ b/DeviceHub/protocol/FrequencyTuningProtocolTX.h @@ -17,6 +17,7 @@ // 解析数据 bool parseDeviceFrameData(QByteArray rawData, DeviceFrameBaseDto * ftFrameData, int frameType); + QByteArray generateSettingCommand(QString devCode, QString commandType, QString valueSet); DeviceFrameBaseDto * frameFactory(int frameType); // diff --git a/DeviceHub/protocol/NtpServerProtocolBM.cpp b/DeviceHub/protocol/NtpServerProtocolBM.cpp index 9cbc71a..2db494b 100644 --- a/DeviceHub/protocol/NtpServerProtocolBM.cpp +++ b/DeviceHub/protocol/NtpServerProtocolBM.cpp @@ -73,34 +73,7 @@ commandBytes.append("1308-07").append(0x20); commandBytes.append(devCode); commandBytes.append(commandType); - - if (commandType == "1") - { - // 4*8 or 2*8 - QStringList valueList = valueSet.split(","); - for (int i = 0; i < valueList.size(); i++) - { - QString value = valueList.at(i); - while (value.size() < 6) - { - value.prepend("0"); - } - commandBytes.append(value); - } - } else if (commandType == "2") - { - QStringList delayParams = valueSet.split(","); - if (delayParams.size() == 2) - { - commandBytes.append(delayParams.at(0)); - QString delay = delayParams.at(1); - while(delay.size() < 11) - { - delay.insert(1, "0"); - } - commandBytes.append(delay); - } - } + commandBytes.append(valueSet); commandBytes.append(this->buildCRC16(commandBytes)); commandBytes.append("*");