ProtocolPack.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. /********************************************************************************
  2. * File Name: ProtocolPack.h
  3. * Function Describe: Header file for ProtocolPack.c
  4. * Explain:
  5. * Writer: ShiLiangWen
  6. * Date: 2019-2-9
  7. *******************************************************************************/
  8. #ifndef __PROTOCOL_PACK_H
  9. #define __PROTOCOL_PACK_H
  10. //-------------------------------------------------------------------------------
  11. #include "MBCross.h"
  12. #define PROPACKET_BUF_LEN 1024
  13. #define MSGID_LOGIN 0x0929
  14. #define MSGID_POSITION 0x0200
  15. #define MSGID_M_POSITION 0x0704
  16. //结构体SUTDL 用于解决网络传输unsigned long类型时,因MCU系统和PC系统存储差异而做的调整
  17. typedef struct SUTDL
  18. {
  19. union {
  20. struct { unsigned char b1,b2,b3,b4; }ucData;
  21. unsigned long ulData;
  22. }Data;
  23. }SUTDL;
  24. //结构体SUTDL 用于解决网络传输unsigned short类型时,因MCU系统和PC系统存储差异而做的调整
  25. typedef struct SUTDS
  26. {
  27. union {
  28. struct { unsigned char b1,b2; }ucData;
  29. unsigned short usData;
  30. }Data;
  31. }SUTDS;
  32. typedef struct SUT_POS_ALARM{
  33. unsigned int NU1:4;//未用
  34. unsigned int GNSS:1;//bit 4 定位模块
  35. unsigned int NU2:10;//未用
  36. unsigned int Meter:1;//bit 15 水表
  37. unsigned int NU3:16;//未用
  38. }__attribute__((packed)) SUT_POS_ALARM;
  39. typedef struct SUT_POS_STATUS{
  40. unsigned int ACC:1;//0 0:ACC 关;1: ACC 开
  41. unsigned int GNSS:1;//1 0:未定位;1:定位
  42. unsigned int South:1;//2 0:北纬;1:南纬
  43. unsigned int West:1;//3 0:东经;1:西经
  44. unsigned int NU1:14;//4~17 未用
  45. unsigned int GPS:1;//18 0:未使用 GPS 卫星进行定位;1:使用 GPS 卫星进行定位
  46. unsigned int BD:1;//19 0:未使用北斗卫星进行定位;1:使用北斗卫星进行定位
  47. unsigned int GLONASS:1;//20 0:未使用 GLONASS 卫星进行定位;1:使用 GLONASS 卫星进行定位
  48. unsigned int Galileo:1;//21 0:未使用 Galileo 卫星进行定位;1:使用 Galileo 卫星进行定位
  49. unsigned int NU2:10;//22-31 保留
  50. }__attribute__((packed)) SUT_POS_STATUS;
  51. typedef struct SUT_POSITION
  52. {
  53. unsigned char flag;//存储标志,有存储为0,无存储为FF
  54. SUT_POS_ALARM Alarm;//0 报警标志 DWORD 报警标志位定义见 表 24
  55. SUT_POS_STATUS Status;//4 状态 DWORD 状态位定义见 表 25
  56. unsigned int Latitude;//8 纬度 DWORD 以度为单位的纬度值乘以10的6次方, 精确到百万分之一度
  57. unsigned int Longitude;//12 经度 DWORD 以度为单位的经度值乘以10的6次方, 精确到百万分之一度
  58. unsigned short Altitude; //16 高程 WORD 海拔高度,单位为米(m)
  59. unsigned short Speed;//18 速度 WORD 1/10km/h
  60. unsigned short Aspect;//20 方向 WORD 0-359,正北为 0,顺时针
  61. unsigned char Time[6];//21 时间 BCD[6] YY-MM-DD-hh-mm-ss(GMT+8 时及的时间均采用此时区)
  62. //附加信息
  63. unsigned char ExtraMsgId;//附加信息ID --渔船项目固定为:0x3A
  64. unsigned char ExtraMsgLen;//附加信息长度 --长度固定为从下一项开始到结构体最后的长度
  65. unsigned char NetMode;//网络模式
  66. unsigned char CSQ;//4G 信号强度
  67. unsigned char Infrared; //红外总使能状态,对应第21字节
  68. unsigned char Camera; //视频总使能状态,对应第22字节
  69. unsigned short TcLen;
  70. unsigned char TcData[TC_DATA_MAX_LEN];//透传的数据,对应从23字节开始
  71. }__attribute__((packed)) SUT_POSITION;
  72. extern unsigned char g_ucPropacketBuf[PROPACKET_BUF_LEN];
  73. int PacketLogin(unsigned short MsgNum);
  74. int PacketPosition(unsigned short MsgNum,SUT_POSITION sutPosition);
  75. int PacketMorePosition(unsigned short MsgNum);
  76. void PacketConvertTest(void);
  77. void PacketDeConvertTest(void);
  78. int CheckPacket(unsigned char *pData,unsigned short DataLen);
  79. int PacketConvert(unsigned char *Buf,int BufLen,int DataLen);
  80. //-------------------------------------------------------------------------------
  81. #endif