Compare commits

...

3 Commits

8 changed files with 60 additions and 37 deletions

View File

@ -47,7 +47,7 @@ jobs:
cmake --version
mkdir build
cd build
cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/Users/runner/work/ProtocolParser/Qt/6.5.3/macos -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DProtocolParser_BUILD_STATIC_LIB=ON -GNinja ..
cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/Users/runner/work/ProtocolParser/Qt/6.5.3/macos -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DRIBBONUI_BUILD_STATIC_LIB=ON -GNinja ..
cmake --build . --target all --config Release --parallel
- name: package

View File

@ -55,7 +55,7 @@ jobs:
cmake --version
mkdir build
cd build
cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/home/runner/work/ProtocolParser/Qt/6.5.3/gcc_64 -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -DProtocolParser_BUILD_STATIC_LIB=ON -GNinja ..
cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/home/runner/work/ProtocolParser/Qt/6.5.3/gcc_64 -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -DRIBBONUI_BUILD_STATIC_LIB=ON -GNinja ..
cmake --build . --target all --config Release --parallel
- name: install QT linux deploy

View File

@ -64,7 +64,7 @@ jobs:
run: |
mkdir build
cd build
cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=D:\a\ProtocolParser\Qt\6.5.3\mingw_64 -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -DProtocolParser_BUILD_STATIC_LIB=ON -GNinja ..
cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=D:\a\ProtocolParser\Qt\6.5.3\mingw_64 -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -DRIBBONUI_BUILD_STATIC_LIB=ON -GNinja ..
cmake --build . --target all --config Release --parallel
- name: package

View File

@ -2,14 +2,7 @@ cmake_minimum_required(VERSION 3.20)
project(ProtocolParser_APP VERSION 1.0.2 LANGUAGES CXX)
add_definitions(-DFRAMELESSHELPER_CORE_NO_DEBUG_OUTPUT)
add_definitions(-DFRAMELESSHELPER_QUICK_NO_DEBUG_OUTPUT)
set(FRAMELESSHELPER_BUILD_STATIC ON)
set(FRAMELESSHELPER_BUILD_WIDGETS OFF)
set(FRAMELESSHELPER_NO_SUMMARY OFF)
set(FRAMELESSHELPER_REPRODUCIBLE_OUTPUT ON)
set(RIBBONUI_BUILD_FRAMELESSHEPLER ON)
set(RIBBONUI_BUILD_EXAMPLES OFF)
set(RIBBONUI_BUILD_STATIC_LIB ON)
add_subdirectory(3rdparty/RibbonUI)
add_subdirectory(app_source)

View File

@ -4,6 +4,7 @@
#include <QQmlEngine>
#include <QVariant>
#include <QSettings>
#include <QMutex>
class Config : public QObject
{
@ -25,6 +26,7 @@ private:
Q_DISABLE_COPY_MOVE(Config)
QString m_qstrFileName;
QSettings *m_psetting=nullptr;
QMutex _mutex;
};
#endif // CONFIG_H

View File

@ -37,11 +37,13 @@ Config* Config::instance()
void Config::set(QString qstrnodename,QString qstrkeyname,QVariant qvarvalue)
{
QMutexLocker locker(&_mutex);
m_psetting->setValue(QString("/%1/%2").arg(qstrnodename).arg(qstrkeyname), qvarvalue);
}
void Config::setArray(QString qstrnodename,QString qstrkeyname,QVariant qvarvalue)
{
QMutexLocker locker(&_mutex);
m_psetting->beginWriteArray(QString("/%1/%2").arg(qstrnodename).arg(qstrkeyname));
QList<QVariant> list = qvarvalue.toList();
for (int i = 0; i< list.length(); i++)
@ -54,12 +56,14 @@ void Config::setArray(QString qstrnodename,QString qstrkeyname,QVariant qvarvalu
QVariant Config::get(QString qstrnodename,QString qstrkeyname)
{
QMutexLocker locker(&_mutex);
QVariant qvar = m_psetting->value(QString("/%1/%2").arg(qstrnodename).arg(qstrkeyname));
return qvar;
}
QVariant Config::getArray(QString qstrnodename,QString qstrkeyname)
{
QMutexLocker locker(&_mutex);
QList<QVariant> list;
int size = m_psetting->beginReadArray(QString("/%1/%2").arg(qstrnodename).arg(qstrkeyname));
for (int i = 0; i< size; i++)
@ -73,5 +77,6 @@ QVariant Config::getArray(QString qstrnodename,QString qstrkeyname)
void Config::Clear()
{
QMutexLocker locker(&_mutex);
m_psetting->clear();
}

View File

@ -18,7 +18,7 @@ int main(int argc, char *argv[])
#ifdef Q_OS_WIN
FramelessConfig::instance()->set(Global::Option::ForceHideWindowFrameBorder);
FramelessConfig::instance()->set(Global::Option::ForceNonNativeBackgroundBlur);
FramelessConfig::instance()->set(Global::Option::WindowUseRoundCorners);
#endif
FramelessConfig::instance()->set(Global::Option::EnableBlurBehindWindow);
FramelessConfig::instance()->set(Global::Option::CenterWindowBeforeShow);

View File

@ -104,13 +104,20 @@ void ZigBeeDataResolver::des_port_parser(zigbee_protocol::ZigbeeFrame &zframe, b
switch (zframe.getDesPort()) {
case 0x81:
{
hframe = (hmac_frame*)frame;
QJsonObject object;
hframe = (hmac_frame*)frame;
object.insert("text",QJsonValue(QString(zdata.toHex(' ').toUpper())));
object.insert("sender", sender);
object.insert("note_text",QJsonValue("收到节点0x"+ sender +"发送的验证信息"));
object.insert("recieved", true);
object.insert("type","zigbee_identify_data");
if(*(u16*)frame != HMAC_FRAME_HEAD)
{
object.insert("note_text",QJsonValue("收到节点0x"+ sender +"发送的数据包,但并非验证信息,请检查下位机发送是否有误"));
emit data_send("zigbee_identify_data_view",object);
return;
}
else
object.insert("note_text",QJsonValue("收到节点0x"+ sender +"发送的验证信息"));
emit data_send("zigbee_identify_data_view",object);
if (_allow_list.contains(node->first.addr))
{
@ -238,38 +245,54 @@ void ZigBeeDataResolver::des_port_parser(zigbee_protocol::ZigbeeFrame &zframe, b
zigbee_protocol::ZigbeeFrame nzframe = zframe;
czdata = (crypto_zdata_frame*)frame;
_protocol->zigbee_data_dectypt((uint8_t*)&ndata, &data_len, czdata, Crypto::SM4_decrypt);
memcpy(nbframe.data, &ndata, ndata.data_length + DATA_FRAME_PREFIX_LEN);
nbframe.length = BASE_FRAME_PREFIX_LEN + ndata.data_length + DATA_FRAME_PREFIX_LEN;
nzframe.setData((char*)&nbframe,nbframe.length);
zdata = QByteArray((char *)nzframe.data(), nzframe.size());
object.insert("decrypted_text", QJsonValue(QString(zdata.toHex(' ').toUpper())));
ddata = (data_frame*)&ndata;
if(*(u16 *)&ndata != DATA_FRAME_HEAD)
{
note_text = "数据包错误,请检查是否解密失败或为数据帧";
}
else
{
memcpy(nbframe.data, &ndata, ndata.data_length + DATA_FRAME_PREFIX_LEN);
nbframe.length = BASE_FRAME_PREFIX_LEN + ndata.data_length + DATA_FRAME_PREFIX_LEN;
nzframe.setData((char*)&nbframe,nbframe.length);
zdata = QByteArray((char *)nzframe.data(), nzframe.size());
object.insert("decrypted_text", QJsonValue(QString(zdata.toHex(' ').toUpper())));
ddata = (data_frame*)&ndata;
}
}
else if (*(u16 *)frame != DATA_FRAME_HEAD)
{
object.insert("note_text",QJsonValue("收到节点0x"+sender+"发送的数据,但不是数据帧或加密帧,请检查下位机发送是否有误"));
emit data_send("zigbee_recv_data_view",object);
return;
}
else{
ddata = (data_frame*)frame;
}
switch (ddata->type) {
case SENSOR_DATA_TYPE:
if(ddata!=nullptr)
{
QStringList name_list, type_list;
name_list = Config::instance()->getArray("Protocol", "data_frame_name").toStringList();
type_list = Config::instance()->getArray("Protocol", "data_frame_type").toStringList();
if (!name_list.length())
break;
note_text += "传感器数据:";
void* pdata = (void *)ddata->data;
for (uint8_t i = 0; i < name_list.length(); i++)
switch (ddata->type) {
case SENSOR_DATA_TYPE:
{
note_text += name_list[i]+ ":" + sensor_data_reader(&pdata,type_list[i]) + ' ';
QStringList name_list, type_list;
name_list = Config::instance()->getArray("Protocol", "data_frame_name").toStringList();
type_list = Config::instance()->getArray("Protocol", "data_frame_type").toStringList();
if (!name_list.length())
break;
note_text += "传感器数据:";
void* pdata = (void *)ddata->data;
for (uint8_t i = 0; i < name_list.length(); i++)
{
note_text += name_list[i]+ ":" + sensor_data_reader(&pdata,type_list[i]) + ' ';
}
object.insert("note_text",QJsonValue(note_text));
break;
}
object.insert("note_text",QJsonValue(note_text));
break;
default:
break;
}
if (QRandomGenerator::global()->bounded(2)!=0 && is_demo)
object.insert("decrypted_text", QJsonValue(QString(zdata.toHex(' ').toUpper())));
}
default:
break;
}
if (QRandomGenerator::global()->bounded(2)!=0 && is_demo)
object.insert("decrypted_text", QJsonValue(QString(zdata.toHex(' ').toUpper())));
emit data_send("zigbee_recv_data_view",object);
}
else