📄 gprsstruct.h
字号:
#ifndef _GPRS_STRUCT_
#define _GPRS_STRUCT_
/////////////////////////////////////////////////////////////////////////////
// 车台发往控制中心的信息格式
//非压缩定位信息
typedef struct tagUNPRESSORIENT{
DWORD vehicle_ID; //车台ID号码
//日期时间
WORD year;
BYTE month;
BYTE day;
BYTE hour;
BYTE minute;
BYTE second;
double latitudenet; //纬度,表示定位数据的纬度,以度为单位,范围为-90度到+90度
double longitudenet; //经度,表示定位数据的经度,以度为单位,范围为-90度到+90度
BYTE speed; //速度,表示GPS天线的运行速度,表示范围0~255,单位千米/小时
BYTE direction; //方向,表示GPS天线的运行方向,以正北方为0度,顺时针增加,单位为2度,数值范围0~180
WORD status; //状态位,用来传递车台的状态信息或者OEM板是否已经定位等
BYTE interval; //时间间隔,单位为秒
}UNPRESSORIENT,*LPUNPRESSORIENT;
//压缩定位信息
typedef struct tagPRESSORIENT{
DWORD vehicle_ID;//车台ID号码
//日期时间
WORD year;
BYTE month;
BYTE day;
BYTE hour;
BYTE minute;
BYTE second;
double latitudenet[10]; //纬度,表示定位数据的纬度,以度为单位,范围为-90度到+90度
double longitudenet[10];//经度,表示定位数据的经度,以度为单位,范围为-90度到+90度
BYTE speed[10]; //速度,表示GPS天线的运行速度,表示范围0~255,单位千米/小时
BYTE direction[10]; //方向,表示GPS天线的运行方向,以正北方为0度,顺时针增加,单位为2度,数值范围0~180
WORD status[10]; //状态位,用来传递车台的状态信息或者OEM板是否已经定位等
BYTE interval; //时间间隔,单位为秒
}PRESSORIENT,*LPPRESSORIENT;
//上传的短消息
typedef struct tagUPSHORTMESSAGE{
DWORD vehicle_ID; //车台ID号码
BYTE len; //短消息长度
BYTE message[255]; //短消息内容
}UPSHORTMESSAGE,*LPUPSHORTMESSAGE;
//收到正确命令的确认信息
typedef struct tagVERIFYMESSAGE{
DWORD vehicle_ID; //车台ID号码
BYTE len; //确认信息长度
BYTE message[255]; //确认信息内容
}VERIFYMESSAGE,*LPVERIFYMESSAGE;
//收到错误命令发送的消息
typedef struct tagWRONGMESSAGE{
DWORD vehicle_ID; //车台ID号码
BYTE wrong_number; //错误信息码
}WRONGMESSAGE,*LPWRONGMESSAGE;
//测试网络连接状态
typedef struct tagTESTWORK{
DWORD vehicle_ID; //车台ID号码
}TESTWORK,*LPTESTWORK;
//围栏报警信息
typedef struct tagRAILALARM{
DWORD vehicle_ID; //车台ID号码
BYTE railnum; //报警围栏号
BYTE alarmstatus; //报警状态
// BYTE roadnum; //线路号
}RAILALARM,*LPRAILALARM;
//车台向中心要围栏的位置信息
typedef struct tagRAILPOSITION{
DWORD vehicle_ID; //车台ID号码
BYTE framenum; //帧数
BYTE frameNO; //帧号
}RAILPOSITION,*LPRAILPOSITION;
//紧急报警
typedef struct tagURGENTALARM{
DWORD vehicle_ID; //车台ID号码
BYTE alarmtype; //报警类型
}URGENTALARM,*LPURGENTALARM;
//点名定位信息
typedef struct tagCALLINGORIENT{
DWORD vehicle_ID; //车台ID号码
//日期时间
WORD year;
BYTE month;
BYTE day;
BYTE hour;
BYTE minute;
BYTE second;
double latitudenet; //纬度,表示定位数据的纬度,以度为单位,范围为-90度到+90度
double longitudenet; //经度,表示定位数据的经度,以度为单位,范围为-90度到+90度
BYTE speed; //速度,表示GPS天线的运行速度,表示范围0~255,单位千米/小时
BYTE direction; //方向,表示GPS天线的运行方向,以正北方为0度,顺时针增加,单位为2度,数值范围0~180
WORD status; //状态位,用来传递车台的状态信息或者OEM板是否已经定位等
BYTE interval; //时间间隔,单位为秒
}CALLINGORIENT,*LPCALLINGORIENT;
//请求设置运行方向信息
typedef struct tagREQUESTDRIECTION{
DWORD vehicle_ID; //车台ID号码
}REQUESTDRIECTION,*LPREQUESTDRIECTION;
//盲区补偿数据包
typedef struct tagBLINDCOMPENSATE{
DWORD vehicle_ID; //车台ID号码
//日期时间
WORD year;
BYTE month;
BYTE day;
BYTE hour;
BYTE minute;
BYTE second;
double latitudenet[10]; //纬度,表示定位数据的纬度,以度为单位,范围为-90度到+90度
double longitudenet[10];//经度,表示定位数据的经度,以度为单位,范围为-90度到+90度
BYTE speed[10]; //速度,表示GPS天线的运行速度,表示范围0~255,单位千米/小时
BYTE direction[10]; //方向,表示GPS天线的运行方向,以正北方为0度,顺时针增加,单位为2度,数值范围0~180
WORD status[10]; //状态位,用来传递车台的状态信息或者OEM板是否已经定位等
BYTE interval; //时间间隔,单位为秒
}BLINDCOMPENSATE,*LPBLINDCOMPENSATE;
/////////////////////////////////////////////////////////////////////////////
// 控制中心发往车台的信息格式
//定位数据上传时间间隔和网络测试包最大发送次数
typedef struct tagORIENTUPINTERVAL{
DWORD vehicle_ID; //车台ID号码
BYTE interval; //上传时间间隔,表示1至60秒的时间间隔长度,单位为秒
BYTE testmax; //网络测试包最大发送次数
BYTE redialnum; //掉线后重拨次数
BYTE redialwait; //再次重拨等待时间,单位为分钟
}ORIENTUPINTERVAL,*LPORIENTUPINTERVAL;
//设置指示灯的状态
typedef struct tagINDICATELIGHTSTATUS{
DWORD vehicle_ID; //车台ID号码
BYTE status; //指示灯状态值
}INDICATELIGHTSTATUS,*LPINDICATELIGHTSTATUS;
//下发短消息格式
typedef struct tagDOWNSMESSAGE{
DWORD vehicle_ID; //车台ID号码
BYTE len; //短消息长度
BYTE message[100]; //短消息内容
}DOWNSMESSAGE,*LPDOWNSMESSAGE;
//修改固定短消息
typedef struct tagSMESSAGECONTENT{
bool ifrevised; //是否修改
BYTE content[28]; //短消息修改内容
BYTE len; //消息长度
}SMESSAGECONTENT,*LPSMESSAGECONTENT;
typedef struct tagREVISEFIXEDSMESSAGE{
DWORD vehicle_ID; //车台ID号码
BYTE groupnum; //组号
SMESSAGECONTENT shortmessagegroup[5]; //要修改的固定短消息
}REVISEFIXEDSMESSAGE,*LPREVISEFIXEDSMESSAGE;
//设置IP地址
typedef struct tagIPADDRESS{
DWORD vehicle_ID; //车台ID号码
DWORD ipaddress; //IP地址
}IPADDRESS,*LPIPADDRESS;
//设置车台ID号码
typedef struct tagVEHICLEID{
DWORD vehicle_ID; //老车台ID号码
DWORD newvehicle_ID; //新车台ID号码
}VEHICLEID,*LPVEHICLEID;
//中心向车台下发电子围栏位置数据
typedef struct tagDOWNRAILPOSITION{
DWORD vehicle_ID; //车台ID号码
BYTE railnum; //围栏个数
DWORD alarmstatus; //报警状态
BYTE busno; //公交线路号,4bit
BYTE frameno; //帧号,4bit
DWORD llatitude[15]; //左上角纬度,单位为毫秒,数值范围-324,000,000至324,000,000
DWORD llongitude[15]; //左上角经度,单位为毫秒,数值范围-324,000,000至324,000,000
DWORD rlatitude[15]; //右上角纬度,单位为毫秒,数值范围-324,000,000至324,000,000
DWORD rlongitude[15]; //右上角经度,单位为毫秒,数值范围-324,000,000至324,000,000
}DOWNRAILPOSITION,*LPDOWNRAILPOSITION;
//设置允许通话号码
typedef struct tagPHONENUMBER{
BYTE num[14]; //电话号码
UINT len; //电话号码长度
}PHONENUMBER,*LPPHONENUMBER;
typedef struct tagPERMITPHONENUMBER{
DWORD vehicle_ID; //车台ID号码
PHONENUMBER phonenum[15]; //电话号码
BYTE num; //电话号码个数
BYTE restrictstatus[2]; //通话限制状态
BYTE groupnum; //组号
}PERMITPHONENUMBER,*LPPERMITPHONENUMBER;
//点名
typedef struct tagCALLING{
DWORD vehicle_ID; //车台ID号码
}CALLING,*LPCALLING;
//要求车台执行监听动作
typedef struct tagREQUESTMONITOR{
DWORD vehicle_ID; //车台ID号码
BYTE monitornum[11]; //监听号码
}REQUESTMONITOR,*LPREQUESTMONITOR;
//设置超速报警门限
typedef struct tagOVERSPEEDALARMBOUND{
DWORD vehicle_ID; //车台ID号码
BYTE boundvalue; //报警门限值,单位为公里/小时
BYTE alarmstatus; //报警状态
}OVERSPEEDALARMBOUND,*LPOVERSPEEDALARMBOUND;
//设置车辆运行方向
typedef struct tagMOVINGDIRECTION{
DWORD vehicle_ID; //车台ID号码
BYTE direction; //上下行标志
BYTE controlmode; //控制方式
// BYTE busno; //公交线路号
}MOVINGDIRECTION,*LPMOVINGDIRECTION;
//设置自动报站控制方式
typedef struct tagAUTOREPORTCONTROL{
DWORD vehicle_ID; //车台ID号码
BYTE controlmode; //自动报站控制方式
}AUTOREPORTCONTROL,*LPAUTOREPORTCONTROL;
//设置语音播报信息
typedef struct tagVOICEREPORT{
DWORD vehicle_ID; //车台ID号码
BYTE voicecontent[100]; //语音播报内容
BYTE len; //播报内容长度
}VOICEREPORT,*LPVOICEREPORT;
//中心下发的确认信息
typedef struct tagCENTERVERIFY{
DWORD vehicle_ID; //车台ID号码
BYTE content[12]; //下发的确认信息内容
}CENTERVERIFY,*LPCENTERVERIFY;
//透明传输
//****将自定义结构转换为变体类型的宏****//
//datatobechange是一个自定义结构的指针型变量
#ifndef TRANSE_TO_VARIANT
#define TRANSE_TO_VARIANT(datatobechange) \
long lengthofA = sizeof(*datatobechange); \
HRESULT hr; \
SAFEARRAYBOUND rgsabound[1]; \
rgsabound[0].lLbound = 0; \
rgsabound[0].cElements = lengthofA; \
SAFEARRAY FAR* pMySafeArray; \
pMySafeArray = SafeArrayCreate(VT_UI1, 1, rgsabound); \
BYTE* pData; \
hr = SafeArrayAccessData( pMySafeArray, (void**)&pData); \
memcpy(pData, datatobechange, rgsabound[0].cElements); \
SafeArrayUnaccessData(pMySafeArray); \
VARIANT myVariant; \
myVariant.parray = pMySafeArray; \
myVariant.vt = VT_ARRAY|VT_UI1 \
#endif
#ifndef DELETE_VARIANT
//************释放变体空间的宏*************//
#define DELETE_VARIANT hr = SafeArrayDestroy(pMySafeArray)
#endif
#ifndef GETDATA_IN_VARIANT
//***********取得变体中数据的宏************//
//sourcedata是变体指针类型
//aimdata是自定义结构指针型变量
//该宏将变体类型中的数据赋给自定义的结构
#define GETDATA_IN_VARIANT(sourcedata,aimdata) \
HRESULT hr; \
hr = SafeArrayAccessData(sourcedata->parray,(void**)&aimdata); \
SafeArrayUnaccessData(sourcedata->parray) \
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -