?? 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 + -