92 lines
5.2 KiB
C++

#include "widget.h"
#include <QApplication>
#include "datatype.h"
QByteArray createAndSerializeDataPacket() {
DataPacket packet;
packet.frameHeader = 1;
packet.packetSeq = 2;
packet.dataLength = 3; // 64通道数据
packet.batteryLevel = 4;
packet.channelCount = 5;
packet.pitchAngle = 6;
packet.rollAngle = 7;
packet.yawAngle = 8;
packet.ecg = 9;
packet.spo2 =10;
packet.reserved1 = 1;
packet.reserved2 = 2;
packet.reserved3 = 3;
packet.reserved4 = 4;
// 填充数据块
for (int i = 0; i < 192; ++i) {
packet.dataBlock.append(static_cast<char>(i % 256));
}
packet.syncSource = 5;
packet.syncSeq = 6;
packet.packetTail = 8;
// 序列化数据包
QByteArray serializedPacket = packet.serialize();
qDebug() << "Serialized Packet (Hex):" << serializedPacket.toHex(' ');
return serializedPacket;
}
#include <QTextCodec>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForLocale(codec);
Widget w;
w.show();
#if 0
QString data="aa0000b21403ca3d4000000000000000000692000000000000ffed4dffedddffedb6ffed56ffee1fffedadffee5affed90ffedd5ffed3cffee6bffed67ffed86ffedc7ffee1fffedb9ffee11ffedd3ffee1cffedc0ffee2cffed67ffeddfffedeeffedb9ffed5effedf1ffed8affee42ffedd7ffede9ffee43ffed2affed89ffed9bffee28ffed8fffee05ffeda8ffee3affed7cffedfaffed9fffed8cffee0fffedc0ffedb7ffee16ffed89ffedadffedecffee36ffee18ffedfaffee42ffedaaffed59ffedffffede3ffee54ffee0bffed26ffee7fffeeb80000ffed4fffede1ffedb2ffed57ffee1fffeda8ffee5effed8affeddaffed40ffee6bffed71ffed87ffedc7ffee27ffedbcffee13ffedcfffee17ffedbfffee28ffed6cffede0ffede8ffedbaffed5bffede8ffed82ffee48ffeddbffededffee44ffed2dffed88ffed96ffee24ffed8bffedffffedaaffee3cffed82ffedf8ffed9bffed93ffee11ffedbdffedb2ffee1fffed89ffedacffede8ffee36ffee16ffedf7ffee40ffeda4ffed5dffee06ffedd9ffee51ffee0cffed25ffee83ff00000000ffed55ffedddffedb1ffed54ffee22ffedafffee5cffed85ffedd9ffed40ffee72ffed6effed8affedcbffee25ffedbcffee0bffedceffee18ffedc2ffee24ffed6effede6ffededffedbbffed5cffedeeffed85ffee53ffedd6ffedf0ffee4cffed30ffed8cffed96ffee27ffed95ffee01ffedadffee39ffed82ffedf9ffed9dffed94ffee11ffedbdffedb2ffee1fffed87ffedacffede9ffee33ffee1fffedf7ffee40ffeda4ffed57ffee02ffeddeffee4cffee11ffed24ffee0000eebd0000ffed54ffeddcffedb6ffed59ffee1fffedb1ffee58ffed87ffedd4ffed46ffee6dffed70ffed86ffedcfffee22ffedb4ffee0effedd4ffee1cffedc0ffee1effed67ffede5ffedebffedbaffed5affedf2ffed88ffee4dffedd5ffedf0ffee42ffed33ffed8affeda0ffee1bffed93ffee06ffedafffee38ffed7bffedf7ffeda0ffed8fffee0effedbeffedb6ffee1fffed85ffeda8ffedf2ffee33ffee17ffedf4ffee3effeda6ffed5affedf9ffede3ffee4effee0cffed2300007dffeeb80000ffed56ffede1ffedb3ffed55ffee1effedafffee59ffed85ffedd0ffed42ffee69ffed69ffed84ffedc7ffee20ffedb6ffee18ffedcfffee1bffedbfffee25ffed64ffede1ffede9ffedbcffed58ffedf7ffed83ffee4bffedd5ffededffee45ffed2fffed8effed96ffee1affed8dffee08ffedafffee33ffed86ffedf7ffeda2ffed8fffee10ffedbaffedb4ffee1bffed8dffedaaffedf0ffee3bffee15ffedfaffee38ffeda6ffed57ffee02ffede4ffee4effee03ff0000ffee7cffeebe0000005555";
DataPacket datapack;
datapack.deserialize(QByteArray( data.toStdString().c_str()));
qDebug()<<"包序号\n :"+QString::number(datapack.packetSeq)<<endl;;
qDebug()<<"数据块长度 \n:"+QString::number(datapack.dataLength)<<endl;;; // 数据块长度 (2 bytes)
qDebug()<<"电量\n"+QString::number(datapack.batteryLevel)<<endl;;; // 电量 (1 byte)
qDebug()<<"通道数量\n"+QString::number(datapack.channelCount)<<endl;;; // 通道数量 (1 byte)
qDebug()<<"俯仰角\n"+QString::number(datapack.pitchAngle)<<endl;;; // 俯仰角 (2 bytes)
qDebug()<<"滚动角\n"+QString::number(datapack.rollAngle)<<endl;;; // 滚动角 (2 bytes)
qDebug()<<"偏航角\n"+QString::number(datapack.yawAngle)<<endl;;; // 偏航角 (2 bytes)
qDebug()<<"心电\n"+QString::number(datapack.ecg)<<endl;;; // 心电 (2 bytes)
qDebug()<<"血氧\n"+QString::number(datapack.spo2)<<endl;;; // 血氧 (2 bytes)
QByteArray str = createAndSerializeDataPacket();
DataPacket packet;
packet.deserialize(str);
qDebug() << "Deserialization successful"<<str;
qDebug() << "Frame Header:" << (int)packet.frameHeader;
qDebug() << "Packet Seq:" << packet.packetSeq;
qDebug() << "Data Length:" << packet.dataLength;
qDebug() << "Battery Level:" << (int)packet.batteryLevel;
qDebug() << "Channel Count:" << (int)packet.channelCount;
qDebug() << "Pitch Angle:" << packet.pitchAngle;
qDebug() << "Roll Angle:" << packet.rollAngle;
qDebug() << "Yaw Angle:" << packet.yawAngle;
qDebug() << "ECG:" << packet.ecg;
qDebug() << "SpO2:" << packet.spo2;
qDebug() << "SpO2:" <<packet.reserved1 ;
qDebug() << "SpO2:" << packet.reserved2;
qDebug() << "SpO2:" <<packet.reserved3 ;
qDebug() << "SpO2:" <<packet.reserved4 ;
qDebug() << "Sync Source:" << (int)packet.syncSource;
qDebug() << "Sync Seq:" << (int)packet.syncSeq;
qDebug() << "Checksum:" << (int)packet.checksum;
qDebug() << "Packet Tail:" << packet.packetTail;
// 打印数据块
qDebug() << "Data Block:" << packet.dataBlock;
#endif
return a.exec();
}