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