data_frame.cpp 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #include <qsettings.h>
  2. #include <qfiledialog.h>
  3. #include <qtextstream.h>
  4. #include <qfile.h>
  5. #include <QTextCodec>
  6. #include <QCryptographicHash>
  7. #include "data_frame.h"
  8. void frame_decode_jtt808(QString in,QString *out)
  9. {
  10. in.toLower();
  11. QByteArray bytes = in.toLatin1();
  12. MsgHead_txt_2013 head;
  13. memcpy( &head, bytes.data(), sizeof(head) );
  14. QString tmp ;
  15. out->append("\r\n数据帧头:\r\n");
  16. out->append("消息ID:");
  17. tmp = QString(QLatin1String((char *)head.msg_id));
  18. out->append(tmp.mid(0,sizeof(head.msg_id)));
  19. out->append("\r\n");
  20. out->append("消息体属性:");
  21. tmp = QString(QLatin1String((char *)head.attr));
  22. out->append(tmp.mid(0,sizeof(head.attr)));
  23. out->append("\r\n");
  24. out->append("终端手机号:");
  25. tmp = QString(QLatin1String((char *)head.phone));
  26. out->append(tmp.mid(0,sizeof(head.phone)));
  27. out->append("\r\n");
  28. out->append("消息流水号:");
  29. tmp = QString(QLatin1String((char *)head.sn));
  30. out->append(tmp.mid(0,sizeof(head.sn)));
  31. out->append("\r\n");
  32. }
  33. void frame_decode_T2C(QString in,QString *out)
  34. {
  35. in.toLower();
  36. QByteArray bytes = in.toLatin1();
  37. T2C_Header_txt head;
  38. memcpy( &head, bytes.data(), sizeof(head) );
  39. QString tmp ;
  40. out->append("\r\n远程标定--数据帧头:\r\n");
  41. out->append("帧头:");
  42. tmp = QString(QLatin1String((char *)head.frameflag));
  43. out->append(tmp.mid(0,sizeof(head.frameflag)));
  44. out->append("\r\n");
  45. out->append("扩展地址:");
  46. tmp = QString(QLatin1String((char *)head.deviceaddr));
  47. out->append(tmp.mid(0,sizeof(head.deviceaddr)));
  48. out->append("\r\n");
  49. out->append("读写功能码:");
  50. tmp = QString(QLatin1String((char *)head.functioncode));
  51. out->append(tmp.mid(0,sizeof(head.functioncode)));
  52. out->append("\r\n");
  53. out->append("命令码:");
  54. tmp = QString(QLatin1String((char *)head.cmdcode));
  55. out->append(tmp.mid(0,sizeof(head.cmdcode)));
  56. out->append("\r\n");
  57. out->append("数据长度:");
  58. tmp = QString(QLatin1String((char *)head.datalength));
  59. out->append(tmp.mid(0,sizeof(head.datalength)));
  60. out->append("\r\n");
  61. out->append("保留字4字节:");
  62. tmp = QString(QLatin1String((char *)head.reserved));
  63. out->append(tmp.mid(0,sizeof(head.reserved)));
  64. out->append("\r\n");
  65. }
  66. void frame_decode_recognize(QString in,QString *out)
  67. {
  68. if(in.indexOf("3901") == 0)
  69. {
  70. frame_decode_T2C(in,out);
  71. }
  72. else
  73. {
  74. frame_decode_jtt808(in,out);
  75. }
  76. }