#include #include #include #include #include #include #include "data_frame.h" void frame_decode_jtt808(QString in,QString *out) { in.toLower(); QByteArray bytes = in.toLatin1(); MsgHead_txt_2013 head; memcpy( &head, bytes.data(), sizeof(head) ); QString tmp ; out->append("\r\n数据帧头:\r\n"); out->append("消息ID:"); tmp = QString(QLatin1String((char *)head.msg_id)); out->append(tmp.mid(0,sizeof(head.msg_id))); out->append("\r\n"); out->append("消息体属性:"); tmp = QString(QLatin1String((char *)head.attr)); out->append(tmp.mid(0,sizeof(head.attr))); out->append("\r\n"); out->append("终端手机号:"); tmp = QString(QLatin1String((char *)head.phone)); out->append(tmp.mid(0,sizeof(head.phone))); out->append("\r\n"); out->append("消息流水号:"); tmp = QString(QLatin1String((char *)head.sn)); out->append(tmp.mid(0,sizeof(head.sn))); out->append("\r\n"); } void frame_decode_T2C(QString in,QString *out) { in.toLower(); QByteArray bytes = in.toLatin1(); T2C_Header_txt head; memcpy( &head, bytes.data(), sizeof(head) ); QString tmp ; out->append("\r\n远程标定--数据帧头:\r\n"); out->append("帧头:"); tmp = QString(QLatin1String((char *)head.frameflag)); out->append(tmp.mid(0,sizeof(head.frameflag))); out->append("\r\n"); out->append("扩展地址:"); tmp = QString(QLatin1String((char *)head.deviceaddr)); out->append(tmp.mid(0,sizeof(head.deviceaddr))); out->append("\r\n"); out->append("读写功能码:"); tmp = QString(QLatin1String((char *)head.functioncode)); out->append(tmp.mid(0,sizeof(head.functioncode))); out->append("\r\n"); out->append("命令码:"); tmp = QString(QLatin1String((char *)head.cmdcode)); out->append(tmp.mid(0,sizeof(head.cmdcode))); out->append("\r\n"); out->append("数据长度:"); tmp = QString(QLatin1String((char *)head.datalength)); out->append(tmp.mid(0,sizeof(head.datalength))); out->append("\r\n"); out->append("保留字4字节:"); tmp = QString(QLatin1String((char *)head.reserved)); out->append(tmp.mid(0,sizeof(head.reserved))); out->append("\r\n"); } void frame_decode_recognize(QString in,QString *out) { if(in.indexOf("3901") == 0) { frame_decode_T2C(in,out); } else { frame_decode_jtt808(in,out); } }