mirror of
https://gitee.com/drabel/LibQQt.git
synced 2025-01-04 10:18:44 +08:00
220 lines
5.2 KiB
C++
220 lines
5.2 KiB
C++
|
#include "cedianudpmessage.h"
|
|||
|
#include <qqtcore.h>
|
|||
|
|
|||
|
CedianUdpMessage::CedianUdpMessage(QObject *parent) : QQtMessage(parent)
|
|||
|
{
|
|||
|
qreal mVAA = 0;
|
|||
|
qreal mVAB = 0;
|
|||
|
qreal mVAC = 0;
|
|||
|
qreal mVPA = 0;
|
|||
|
qreal mVPB = 0;
|
|||
|
qreal mVPC = 0;
|
|||
|
qreal mIAA = 0;
|
|||
|
qreal mIAB = 0;
|
|||
|
qreal mIAC = 0;
|
|||
|
qreal mIPA = 0;
|
|||
|
qreal mIPB = 0;
|
|||
|
qreal mIPC = 0;
|
|||
|
qreal mFA = 0;
|
|||
|
qreal mFB = 0;
|
|||
|
qreal mFC = 0;
|
|||
|
QString mDateTime =0;
|
|||
|
|
|||
|
mqbaVAA.clear();
|
|||
|
mqbaVAB.clear();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/*把测点发来的数据解出来*/
|
|||
|
void CedianUdpMessage::parser(const QByteArray & data)
|
|||
|
{
|
|||
|
QByteArray l = data;
|
|||
|
quint8 DataLen = 0, temp = 0, Month = 0, Day = 0, Hour = 0, Minute = 0, Second =0;
|
|||
|
quint16 Year = 0;
|
|||
|
//跳过包头 0-5
|
|||
|
for (int i=0; i<6 ;i++)
|
|||
|
{
|
|||
|
l >> temp;
|
|||
|
DataLen++;
|
|||
|
}
|
|||
|
//跳过空格 6
|
|||
|
l >> temp;
|
|||
|
DataLen++;
|
|||
|
//日 7-8
|
|||
|
l >> temp;
|
|||
|
mqbaDateTime << temp;
|
|||
|
Day = 10 * (temp - 0x30);
|
|||
|
l >> temp;
|
|||
|
mqbaDateTime << temp;
|
|||
|
Day = Day + (temp - 0x30);
|
|||
|
DataLen = DataLen + 2;
|
|||
|
//月 9-10
|
|||
|
l >> temp;
|
|||
|
mqbaDateTime << temp;
|
|||
|
Month = 10 * (temp - 0x30);
|
|||
|
l >> temp;
|
|||
|
mqbaDateTime << temp;
|
|||
|
Month = Month + (temp - 0x30);
|
|||
|
DataLen = DataLen + 2;
|
|||
|
//年 11-12
|
|||
|
l >> temp;
|
|||
|
mqbaDateTime << temp;
|
|||
|
Year = 10 * (temp - 0x30) + 2000;
|
|||
|
l >> temp;
|
|||
|
mqbaDateTime << temp;
|
|||
|
Year = Year + (temp - 0x30);
|
|||
|
DataLen = DataLen + 2;
|
|||
|
//跳过空格 13
|
|||
|
l >> temp;
|
|||
|
DataLen++;
|
|||
|
//时 14-15
|
|||
|
l >> temp;
|
|||
|
mqbaDateTime << temp;
|
|||
|
Hour = 10 * (temp - 0x30);
|
|||
|
l >> temp;
|
|||
|
mqbaDateTime << temp;
|
|||
|
Hour = Hour + (temp - 0x30);
|
|||
|
DataLen = DataLen + 2;
|
|||
|
//分 16-17
|
|||
|
l >> temp;
|
|||
|
mqbaDateTime << temp;
|
|||
|
Minute = 10 * (temp - 0x30);
|
|||
|
l >> temp;
|
|||
|
mqbaDateTime << temp;
|
|||
|
Minute = Minute + (temp - 0x30);
|
|||
|
DataLen = DataLen + 2;
|
|||
|
//秒 18-19
|
|||
|
l >> temp;
|
|||
|
mqbaDateTime << temp;
|
|||
|
Second = 10 * (temp - 0x30);
|
|||
|
l >> temp;
|
|||
|
mqbaDateTime << temp;
|
|||
|
Second = Second + (temp - 0x30);
|
|||
|
DataLen = DataLen + 2;
|
|||
|
//拼接并赋值给成员变量 年月日时分秒
|
|||
|
mDateTime = QString("%1-%2-%3 %4:%5:%6").arg(Year).arg(Month).arg(Day).arg(Hour).arg(Minute).arg(Second);
|
|||
|
//跳过空格 20
|
|||
|
l >> temp;
|
|||
|
DataLen++;
|
|||
|
//秒内标号 21-22
|
|||
|
l >> temp;
|
|||
|
mqbaBuffer << temp;
|
|||
|
mBuffer = 10 * (temp - 0x30);
|
|||
|
l >> temp;
|
|||
|
mqbaBuffer << temp;
|
|||
|
mBuffer = mBuffer + (temp - 0x30);
|
|||
|
DataLen = DataLen + 2;
|
|||
|
//跳过空格 23
|
|||
|
l >> temp;
|
|||
|
DataLen++;
|
|||
|
//频率mFA 24-30
|
|||
|
l >> temp;
|
|||
|
mqbaFA << temp;
|
|||
|
mFA = (temp - 0x30) * 100000;
|
|||
|
l >> temp;
|
|||
|
mqbaFA << temp;
|
|||
|
mFA = mFA + (temp - 0x30) * 10000;
|
|||
|
l >> temp; //小数点
|
|||
|
mqbaFA << temp;
|
|||
|
l >> temp;
|
|||
|
mqbaFA << temp;
|
|||
|
mFA = mFA + (temp - 0x30) * 1000;
|
|||
|
l >> temp;
|
|||
|
mqbaFA << temp;
|
|||
|
mFA = mFA + (temp - 0x30) * 100;
|
|||
|
l >> temp;
|
|||
|
mqbaFA << temp;
|
|||
|
mFA = mFA + (temp - 0x30) * 10;
|
|||
|
l >> temp;
|
|||
|
mqbaFA << temp;
|
|||
|
mFA = mFA + (temp - 0x30);
|
|||
|
mFA = mFA / 10000;
|
|||
|
DataLen = DataLen + 7;
|
|||
|
//跳过空格 31
|
|||
|
l >> temp;
|
|||
|
DataLen++;
|
|||
|
//频率弃用 32-38
|
|||
|
for (int i=0; i<7 ;i++)
|
|||
|
{
|
|||
|
l >> temp;
|
|||
|
DataLen++;
|
|||
|
}
|
|||
|
//跳过空格 39
|
|||
|
l >> temp;
|
|||
|
DataLen++;
|
|||
|
|
|||
|
//电压幅值mVAA 40-45
|
|||
|
l >> temp;
|
|||
|
mqbaVAA << temp;
|
|||
|
mVAA = (temp - 0x30) * 10000;
|
|||
|
l >> temp;
|
|||
|
mqbaVAA << temp;
|
|||
|
mVAA = mVAA + (temp - 0x30) * 1000;
|
|||
|
l >> temp;
|
|||
|
mqbaVAA << temp;
|
|||
|
mVAA = mVAA + (temp - 0x30) * 100;
|
|||
|
l >> temp; //小数点
|
|||
|
mqbaVAA << temp;
|
|||
|
l >> temp;
|
|||
|
mqbaVAA << temp;
|
|||
|
mVAA = mVAA + (temp - 0x30) * 10;
|
|||
|
l >> temp;
|
|||
|
mqbaVAA << temp;
|
|||
|
mVAA = mVAA + (temp - 0x30);
|
|||
|
mVAA = mVAA / 100;
|
|||
|
DataLen = DataLen + 6;
|
|||
|
|
|||
|
//跳过空格 46
|
|||
|
l >> temp;
|
|||
|
DataLen++;
|
|||
|
//电压相位mVPA 47-51
|
|||
|
l >> temp;
|
|||
|
mqbaVPA << temp;
|
|||
|
mVPA = (temp - 0x30) * 1000;
|
|||
|
l >> temp; //小数点
|
|||
|
mqbaVPA << temp;
|
|||
|
l >> temp;
|
|||
|
mqbaVPA << temp;
|
|||
|
mVPA = mVPA + (temp - 0x30) * 100;
|
|||
|
l >> temp;
|
|||
|
mqbaVPA << temp;
|
|||
|
mVPA = mVPA + (temp - 0x30) * 10;
|
|||
|
l >> temp;
|
|||
|
mqbaVPA << temp;
|
|||
|
mVPA = mVPA + (temp - 0x30);
|
|||
|
mVPA = mVPA / 1000;
|
|||
|
mVPA = mVPA * 57.296;
|
|||
|
DataLen = DataLen + 5;
|
|||
|
//跳过包尾 52-54
|
|||
|
for (int i=0; i<3 ;i++)
|
|||
|
{
|
|||
|
l >> temp;
|
|||
|
DataLen++;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//监测点数据只有接收,没有发送,所以不需要实现packer函数
|
|||
|
void CedianUdpMessage::packer(QByteArray & l) const
|
|||
|
{
|
|||
|
}
|
|||
|
|
|||
|
QDebug operator<<(QDebug dbg, const CedianUdpMessage &c)
|
|||
|
{
|
|||
|
// dbg.nospace() << "{" << hex << c.head() << "|" <<
|
|||
|
// hex << c.size() << "=" << dec << c.size() << "|" <<
|
|||
|
// hex << c.cmd() << "|" <<
|
|||
|
// hex << c.uid() << "|" <<
|
|||
|
// c.data().data() << "@" << dec << c.data().size() << "|" <<
|
|||
|
// hex << c.sum() << "|" <<
|
|||
|
// hex << c.tail() << "}";
|
|||
|
dbg.nospace() << "{" << hex << "}";
|
|||
|
return dbg.space();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|