GpsProcess.c 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638
  1. #include "includes.h"
  2. SUT_GPS_SEND_DATA sutGpsSendData;
  3. /**********************************************************************************
  4. GpsSendHead
  5. ***********************************************************************************/
  6. void GpsServerConect(void)
  7. { //"AT+ZIPSEND=0,12\r"=41542B5A495053454E443D302C31320D
  8. //"AT+ZIPSENDU=0,12\r"=41542B5A495053454E44553D302C31320D
  9. //unsigned char Data[]={0x29,0x29,0xB1,0x00,0x07,0x59,0x69,0xB5,0xA1,0x00,0x92,0x0D}; //2929B100075969B5A100920D
  10. //ModemSendAT("AT+ZIPSEND=0,12\r"); //41542B5A495053454E443D302C31320D2929B100075969B5A100920D
  11. //ModemSendData(Data,sizeof(Data));
  12. int len;
  13. char buf[100];
  14. unsigned char temp=0;
  15. len=GpsPacket(buf,sutNetPara.PSN,XINGAN_PACKET_CLIENT_CMD_CONNECT,&temp,1);
  16. ModemSendTcpData(0,buf,len);
  17. }
  18. unsigned char GetCheckSum(unsigned char *pData,int len)
  19. {
  20. int i;
  21. unsigned char sum=0;
  22. for(i=0;i<len;i++){
  23. sum=sum^pData[i];
  24. }
  25. return sum;
  26. }
  27. /*************************************************************************************
  28. *
  29. **************************************************************************************/
  30. int GpsPacket(unsigned char *Buffer,unsigned long PSN,unsigned char CMD,unsigned char *pData,int DataLen)
  31. {
  32. unsigned char *pBuf=Buffer;
  33. int j,i=0;
  34. unsigned short Len=DataLen+6;
  35. pBuf[i++]=0x29;
  36. pBuf[i++]=0x29;
  37. pBuf[i++]=CMD;
  38. pBuf[i++]=(unsigned char)((Len>>8)&0xff);
  39. pBuf[i++]=(unsigned char)(Len&0xff);
  40. pBuf[i++]=(unsigned char)((PSN>>24)&0xff);
  41. pBuf[i++]=(unsigned char)((PSN>>16)&0xff);
  42. pBuf[i++]=(unsigned char)((PSN>>8)&0xff);
  43. pBuf[i++]=(unsigned char)(PSN&0xff);
  44. for(j=0;j<DataLen;j++){
  45. pBuf[i++]= pData[j];
  46. }
  47. pBuf[i]=GetCheckSum(pBuf,i);
  48. i++;
  49. pBuf[i++]=0x0D;
  50. return i;
  51. }
  52. /**********************************************************************************
  53. GpsSendPosition
  54. 发送位置数据
  55. Head(2) Cmd(1) Len(2) PSN(4) GpsData(34) Check(1) End(1)
  56. Cmd=0x80
  57. 总长度=2+1+2+40=45
  58. ***********************************************************************************/
  59. void GpsSendPosition(void)
  60. {
  61. int i;
  62. int len;
  63. char tmp[5];
  64. char buf[150];
  65. unsigned char GpsBuf[50];
  66. len=GpsPacket(GpsBuf,sutNetPara.PSN,0x80,(unsigned char *)&sutGpsSendData,sizeof(SUT_GPS_SEND_DATA));
  67. sprintf(buf,"AT+ZIPSEND=0,%d\r",len);
  68. ModemSendAT(buf);
  69. ModemSendData(GpsBuf,len);
  70. strcpy(buf,"SendGpsD:");
  71. for(i=0;i<len;i++){
  72. sprintf(tmp,"%02x,",GpsBuf[i]);
  73. strcat(buf,tmp);
  74. }
  75. strcat(buf,"\r\n");
  76. SlwTrace(INF,buf);
  77. }
  78. /*******************************************************
  79. GPRMC信息,与,之间的子信息处理,存储到相应的结构体中元素中
  80. *******************************************************/
  81. void GPS_GPRMC_Handle(unsigned char *ch,unsigned char ch1)
  82. {
  83. unsigned char x,y;
  84. // send_byte('d');
  85. switch(ch1)
  86. {
  87. case 0: //时间
  88. for(x=0,y=0;x<8;x++)
  89. {
  90. if(x==2||x==5){ sutGpsInfo.Time[x]=0x3a;}
  91. else sutGpsInfo.Time[x]=ch[y++];
  92. }
  93. // send_byte(time[7]);
  94. break;
  95. case 1: //状态
  96. sutGpsInfo.Status=ch[0];
  97. break;
  98. case 2: //纬度
  99. for(x=10,y=0;x<17;x++)
  100. {
  101. if(x==12||x==15) {}
  102. else sutGpsInfo.Location[x]=ch[y++];
  103. }
  104. break;
  105. case 3: //南北纬
  106. sutGpsInfo.Location[9]=ch[0];
  107. break;
  108. case 4: //经度
  109. for(x=1,y=0;x<8;x++){
  110. if(x==4||x==7){}
  111. else sutGpsInfo.Location[x]=ch[y++];
  112. }
  113. break;
  114. case 5: //东西经
  115. sutGpsInfo.Location[0]=ch[0];
  116. break;
  117. case 6: //航速
  118. for(x=0;x<6;x++){
  119. sutGpsInfo.Speed[x+1]=ch[x];
  120. }
  121. sutGpsInfo.Speed[6]=0x20;
  122. sutGpsInfo.Speed[7]=0x20;
  123. break;
  124. case 7: //信息自己定义
  125. break;
  126. case 8: //信息自己定义
  127. break;
  128. case 9: //信息自己定义
  129. break;
  130. case 10: //信息自己定义
  131. break;
  132. case 11: //信息自己定义
  133. break;
  134. default:break;
  135. }
  136. }
  137. /*******************************************************
  138. 处理GPRMC信息
  139. *******************************************************/
  140. void GPS_GPRMC_Alysis(unsigned char *RMC_Data)
  141. {
  142. unsigned char i,j,k;
  143. unsigned char count;
  144. unsigned char temp[10];
  145. //send_byte('a');
  146. for(i=0;i<strlen(RMC_Data);)
  147. {
  148. switch(RMC_Data[i])
  149. {
  150. case '$':
  151. j=i++; //标记$的起始位置
  152. while(RMC_Data[i]!=',') //RMC_Data[i]==','时结束循环。
  153. {i++;}
  154. // uart1_sendbytes(GPRMC[RMC_Count].RMC_ID);
  155. break;
  156. case ',':
  157. j=i++; //标记,的起始位置
  158. while((RMC_Data[i]!=',')&&(RMC_Data[i]!='*')) //RMC_Data[i]==','或者=='*'时结束循环。
  159. {i++;}
  160. if(j+1!=i)
  161. {
  162. for(j=j+1,k=0;j<i;j++)
  163. {
  164. temp[k++]=RMC_Data[j];
  165. }
  166. temp[k]='\0';
  167. // send_byte(temp[0]);
  168. }
  169. else temp[0]='\0';
  170. // send_byte('c');
  171. GPS_GPRMC_Handle(temp,count++);
  172. break;
  173. case '*':
  174. i=strlen(RMC_Data); //处理完成,软件结束。
  175. break;
  176. default:break;
  177. }
  178. }
  179. // send_byte('e');
  180. }
  181. void GpsDataInit(void)
  182. {
  183. unsigned char *p;
  184. p=(unsigned char *)&sutGpsSendData;
  185. memset(p, 0, sizeof(SUT_GPS_SEND_DATA));
  186. p=(unsigned char *)&sutGpsInfo;
  187. memset(p, 0, sizeof(SUT_GPS_INF));
  188. sutGpsInfo.SendTime=15;//默认主动上报时间间隔 单位为秒
  189. }
  190. /*************************************************************************
  191. *检查GPS 服务器发过来的数据包是否正确
  192. 非法 返回0
  193. 合法 返回命令码
  194. **************************************************************************/
  195. unsigned char GpsServerCheckPack(unsigned char *data,unsigned short DataLen)
  196. {
  197. int i=0;
  198. unsigned char cmd;
  199. unsigned short len;
  200. unsigned long PSN;
  201. //判断数据包的包头是否正确
  202. if(data[0]!=GPS_PACK_HEAD1)return 0;
  203. if(data[1]!=GPS_PACK_HEAD2)return 0;
  204. //判断数据包的校验是否正确
  205. if(data[DataLen-2] != GetCheckSum(data,DataLen-2))
  206. {
  207. return 0;
  208. }
  209. //判断数据包的结尾是否正确
  210. if(data[DataLen-1] != GPS_PACK_END)
  211. {
  212. return 0;
  213. }
  214. //获取数据包的长度 并判断长度是否正确
  215. len=(unsigned short)data[3]*256+data[4];
  216. if(DataLen!=(len+5))return 0;
  217. // //判断终端编号是否正确
  218. // PSN=(unsigned long)data[5]<<24;
  219. // PSN+=(unsigned long)data[6]<<16;
  220. // PSN+=(unsigned long)data[7]<<8;
  221. // PSN+=(unsigned long)data[8];
  222. // if(PSN!=sutNetPara.PSN) return 0;
  223. //解析当前命令
  224. cmd = data[2];
  225. sutGpsInfo.HostCmd = cmd;
  226. return cmd;
  227. }
  228. /**************************************************************************************************
  229. *
  230. ***************************************************************************************************/
  231. uint32_t Process_XinganCenterGetPos_rsp(unsigned char* buf, unsigned short len)
  232. {
  233. char SendBuf[100];
  234. unsigned short PacketLen;
  235. MakeGpsSendData();
  236. PacketLen=GpsPacket(SendBuf,sutNetPara.PSN,XINGAN_PACKET_CENTER_CMD_GET_POS_RSP,(unsigned char *)&sutGpsSendData,sizeof(SUT_GPS_SEND_DATA));
  237. ModemSendTcpData(0,SendBuf,PacketLen);
  238. return 0;
  239. }
  240. uint32_t Process_XinganClient_rsp(char* buf, unsigned short len)
  241. {
  242. if(!sutGpsInfo.isServerLogin){
  243. sutGpsInfo.isServerLogin=1;
  244. SlwTrace(INF,"[Gps Login]\r\n");
  245. }
  246. return 0;
  247. }
  248. /**************************************************************************************************
  249. *
  250. ***************************************************************************************************/
  251. void GpsTimingSendPos(void)
  252. {
  253. char SendBuf[100];
  254. unsigned short PacketLen;
  255. MakeGpsSendData();
  256. PacketLen=GpsPacket(SendBuf,sutNetPara.PSN,XINGAN_PACKET_CLIENT_SEND_POS_DATA,(unsigned char *)&sutGpsSendData,sizeof(SUT_GPS_SEND_DATA));
  257. ModemSendTcpData(0,SendBuf,PacketLen);
  258. return ;
  259. }
  260. /***********************************************************************************
  261. *服务器设置主动上报时间
  262. *数据格式
  263. HEAD1 HEAD2 CMD LEN1 LEN2 PSN1 PSN2 PSN3 PSN4 X1 X2 CHECK END
  264. 29 29 34 00 08 PSN[4] X1 X2 CHECK 0D
  265. time=X1*256+X2
  266. ***********************************************************************************/
  267. uint32_t Process_XinganCenterGetPosTimerout(char* buf, uint32_t len)
  268. {
  269. char SendBuf[100];
  270. unsigned short t;
  271. unsigned short PacketLen;
  272. //跳过终端序列号4 bytes
  273. //获取时间
  274. sutGpsInfo.SendTime =((unsigned short)buf[9]&0xff<<8) + (unsigned short)buf[10]&0xff ;
  275. sprintf(SendBuf,"[GpsTime=%d]\r\n",sutGpsInfo.SendTime);
  276. SlwTrace(INF,SendBuf);
  277. //ol_start_AppTimer( XINGAN_SENDBACK_TIMER, g_xingan_info.timeout * KAL_TICKS_1_SEC);
  278. MakeGpsSendData();
  279. PacketLen=GpsPacket(SendBuf,sutNetPara.PSN,XINGAN_PACKET_CENTER_CMD_COMMON_RSP,(unsigned char *)&sutGpsSendData,sizeof(SUT_GPS_SEND_DATA));
  280. ModemSendTcpData(0,SendBuf,PacketLen);
  281. return len;
  282. }
  283. /******************************************************************************
  284. *
  285. *******************************************************************************/
  286. XinganCmd_struct XinganCmd_info[] =
  287. {
  288. {XINGAN_PACKET_CENTER_CMD_GET_POS, Process_XinganCenterGetPos_rsp},
  289. // {XINGAN_PACKET_CENTER_CMD_GET_STAT, Process_XinganCenterGetStat_rsp},
  290. // {XINGAN_PACKET_CENTER_CMD_RESET, Process_XinganCenterReset_rsp},
  291. // {XINGAN_PACKET_CENTER_CMD_DEFAULT_SET, Process_XinganCenterDefaultSet_rsp},
  292. {XINGAN_PACKET_CENTER_CMD_GET_POS_TIMEOUT, Process_XinganCenterGetPosTimerout},
  293. // {XINGAN_PACKET_CENTER_CMD_GET_POS_LENOUT, Process_XinganCenterGetPosLenout},
  294. // {XINGAN_PACKET_CENTER_CMD_CLOSE_WARNING, Process_XinganCenterCloseWarning_rsp},
  295. // {XINGAN_PACKET_CENTER_CMD_OPEN_OIL_WAY, Process_XinganCenterOpenOilWay_rsp},
  296. // {XINGAN_PACKET_CENTER_CMD_CLOSE_OIL_WAY, Process_XinganCenterCloseOilWay_rsp},
  297. // {XINGAN_PACKET_CENTER_CMD_GET_VER, Process_XinganCenterGetVer_rsp},
  298. // {XINGAN_PACKET_CENTER_CMD_DIAL_CALL, Process_XinganCenterDialCall_rsp} ,
  299. // {XINGAN_PACKET_CENTER_CMD_HIGH_SPEED_WARNING, Process_XinganCenterHighSpeedWarning_rsp},
  300. // {XINGAN_PACKET_CENTER_CMD_STATISTICS_MILE, Process_XinganCenterStatisticsMile_rsp},
  301. // {XINGAN_PACKET_CENTER_CMD_UDP_IPPORT, Process_XinganCenterIPport_rsp},
  302. // {XINGAN_PACKET_CENTER_CMD_APN, Process_XinganCenterApn_rsp},
  303. //
  304. {XINGAN_PACKET_CLIENT_CMD_COMMON_RSP, Process_XinganClient_rsp},
  305. //
  306. // {XINGAN_PACKET_CLIENT_CMD_CONNECT, Process_XinganClientConnectReq},
  307. // {XINGAN_PACKET_CLIENT_SEND_POS_DATA, Process_XinganClientSendPosData},
  308. // {XINGAN_PACKET_CLIENT_CMD_SEND_WARNING_DATA, Process_XinganClientSendWarnData},
  309. };
  310. Xingan_process_packet GetXinganProcessFun(uint32_t Cmd)
  311. {
  312. uint32_t j;
  313. for(j=0;j<sizeof(XinganCmd_info)/sizeof(XinganCmd_struct);j++)
  314. {
  315. if(Cmd == XinganCmd_info[j].cmd)
  316. {
  317. return XinganCmd_info[j].process_packet;
  318. }
  319. }
  320. return NULL;
  321. }
  322. /***************************************************************
  323. 处理GPS服务器发过来的信息
  324. 返回:
  325. 无效消息 不处理 返回0
  326. 否则返回命令码
  327. ****************************************************************/
  328. unsigned char GpsServerProcess(unsigned char *data, unsigned short DataLen)
  329. {
  330. unsigned char cmd;
  331. Xingan_process_packet ProcessFun;
  332. cmd=GpsServerCheckPack(data,DataLen);
  333. if(!cmd)return 0;
  334. ProcessFun = GetXinganProcessFun(cmd);
  335. if(ProcessFun !=NULL)
  336. {
  337. ProcessFun(data, DataLen);
  338. }
  339. return cmd;
  340. }
  341. /***************************************************************************
  342. *MakeGpsSendData
  343. 根据sutGpsInfo生成sutGpsSendData
  344. ****************************************************************************/
  345. void MakeGpsSendData(void)
  346. {
  347. #ifdef GPS_DEBUG_GPS_SEND_DATA
  348. int i;
  349. const unsigned char acucTemp[]={
  350. 0x15,0x05,0x18,0x16,0x03,0x08,//yymmddhhmmss
  351. 0x83,0x03,0x79,0x01, //wwww 纬度
  352. 0x93,0x04,0x56,0x08, //jjjj 经度
  353. 0x01,0x20,0x01,0x54, //ssff 速度方向
  354. 0xf8,//st 状态
  355. 0x01,0xE2,0x40,//里程数 1E240=123456米
  356. 0x00,0x00,0xff,0x00,//车辆状态 St1~St4
  357. 0x00,0x0A,0x00,0x00,0x00,0x00,0x00,0x00//V1~V8
  358. };
  359. unsigned char *p=(unsigned char *)&sutGpsSendData;
  360. for(i=0;i<sizeof(acucTemp);i++){
  361. p[i]=acucTemp[i];
  362. }
  363. #else
  364. unsigned char *data=(unsigned char *)&sutGpsSendData;
  365. memset(data, 0, sizeof(SUT_GPS_SEND_DATA));
  366. data[0] = sutGpsInfo.year;
  367. data[1] = sutGpsInfo.month;
  368. data[2] = sutGpsInfo.day;
  369. data[3] = sutGpsInfo.hour;
  370. data[4] = sutGpsInfo.minu;
  371. data[5] = sutGpsInfo.sec;
  372. data[6] = (sutGpsInfo.latitue>>24)&0xFF;
  373. data[7] = (sutGpsInfo.latitue>>16)&0xFF;
  374. data[8] = (sutGpsInfo.latitue>>8)&0xFF;
  375. data[9] = (sutGpsInfo.latitue)&0xFF;
  376. data[10] = (sutGpsInfo.longitue>>24)&0xFF;
  377. data[11] = (sutGpsInfo.longitue>>16)&0xFF;
  378. data[12] = (sutGpsInfo.longitue>>8)&0xFF;
  379. data[13] = (sutGpsInfo.longitue)&0xFF;
  380. data[14] = (sutGpsInfo.speed>>8)&0xFF;
  381. data[15] = (sutGpsInfo.speed)&0xFF;
  382. data[16] = (sutGpsInfo.aspect>>8)&0xFF;
  383. data[17] = (sutGpsInfo.aspect)&0xFF;
  384. //st;
  385. if(sutGpsInfo.isGpsValid == 1 )
  386. {
  387. data[18] |= (0x01<<7);
  388. }
  389. if(sutGpsInfo.isGpsValid == 0)
  390. {
  391. data[18] |= (0x01<<6);
  392. data[18] |= (0x01<<5);
  393. }
  394. else if(sutGpsInfo.isGpsValid == 0)//:GPS天线短路
  395. {
  396. data[18] |= (0x01<<6);
  397. }
  398. else if(sutGpsInfo.isGpsValid == 0)//:GPS天线开路;
  399. {
  400. data[18] |= (0x01<<5);
  401. }
  402. else if(sutGpsInfo.isGpsValid == 0) //0x03:GPS模块故障
  403. {
  404. }
  405. // if(sutGpsInfo.MainPowerStat ==0 )//主电源正常
  406. // {
  407. // data[18] |= (0x01<<4);
  408. // data[18] |= (0x01<<3);
  409. // }
  410. // else if(sutGpsInfo.MainPowerStat == 1)//主电源掉电
  411. // {
  412. // data[18] |= (0x01<<4);
  413. // }
  414. // else if(sutGpsInfo.MainPowerStat == 2 || g_xingan_info.MainPowerStat ==3)//主电源过高或过低
  415. // {
  416. // data[18] |= (0x01<<3);
  417. // }
  418. //里程数
  419. data[19] = (sutGpsInfo.StatisticsMile>>16)&0xFF;
  420. data[20] = (sutGpsInfo.StatisticsMile>>8)&0xFF;
  421. data[21] = (sutGpsInfo.StatisticsMile)&0xFF;
  422. //St1:
  423. // if(GetAccStat() == FALSE)//ACC关
  424. // {
  425. // data[22] |= (0x01<<7);
  426. // }
  427. // if(GetHighSensor1Stat() == FALSE)//自定义1路高传感器状态为低
  428. // {
  429. // data[22] |= (0x01<<6);
  430. // }
  431. // if(GetHighSensor2Stat() == FALSE)//自定义2路高传感器状态为低
  432. // {
  433. // data[22] |= (0x01<<5);
  434. // }
  435. // if(GetLowSensor1Stat() == TRUE)//自定义1路低传感器状态为高
  436. // {
  437. // data[22] |= (0x01<<4);
  438. // }
  439. // if(GetLowSensor2Stat()== TRUE)//自定义2路低传感器状态为高
  440. // {
  441. // data[22] |= (0x01<<3);
  442. // }
  443. //
  444. // if(GetOilWayStat()== TRUE)//油路正常
  445. // {
  446. // data[22] |= (0x01<<2);
  447. // }
  448. //
  449. // if(GetLoginStat() == FALSE)//没有登签
  450. // {
  451. // data[22] |= (0x01<<1);
  452. // }
  453. //
  454. // if(GetWarningStat() == FALSE)//未设防
  455. // {
  456. // data[22] |= (0x01);
  457. // }
  458. //st2:
  459. // if(GetRobWarningStat()== FALSE)//不为劫警报警
  460. // {
  461. // data[23] |= (0x01<<7);
  462. // }
  463. //
  464. // if(GetHighSpeedWarningStat()== FALSE)//不为超速报警
  465. // {
  466. // data[23] |= (0x01<<6);
  467. // }
  468. // if(GetStopTimeoutStat()== FALSE)//不为停车超长报警
  469. // {
  470. // data[23] |= (0x01<<5);
  471. // }
  472. // if(GooutOfRegion()== FALSE)//不为驶出区域报警
  473. // {
  474. // data[23] |= (0x01<<4);
  475. // }
  476. // if(ComeintoRegion()==FALSE)//不为驶入区域报警
  477. // {
  478. // data[23] |= (0x01<<3);
  479. // }
  480. //
  481. // if(PasswordIsOK()== TRUE)//不为看车密码错误报警
  482. // {
  483. // data[23] |= (0x01<<2);
  484. // }
  485. //
  486. // if(GprsIsLogin() == FALSE)//不为GPRS已上线
  487. // {
  488. // data[23] |= (0x01<<1);
  489. // }
  490. //
  491. // if(PppIsOK() == FALSE)//不为终端拨号成功
  492. // {
  493. // data[23] |= (0x01);
  494. // }
  495. //st3:
  496. // if(GprsIsLogin() == FALSE)//GPRS未注册
  497. // {
  498. // data[24] |= (0x01<<7);
  499. // }else{
  500. data[24] &= ~(0x01<<7);
  501. // }
  502. // if(CenterNeedSendCmd21() == TRUE)//中心应下发21指令
  503. // {
  504. data[24] |= (0x01<<6);
  505. // }
  506. // if(g_xingan_info.SendMode == XINGAN_PACKET_SEND_TCP)//TCP通讯方式
  507. // {
  508. data[24] |= (0x01<<5);
  509. // }
  510. //:CSQ信号状态0-31
  511. data[24] += (char)g_iCSQ;
  512. //st4
  513. // if(IsHandleOK()== TRUE)//手柄接入
  514. // {
  515. // data[25] |= (0x01<<7);
  516. // }
  517. // if(IsLcdOK() == TRUE)//LCD显示屏接入
  518. // {
  519. // data[25] |= (0x01<<6);
  520. // }
  521. // if(IsImageCollectorOK()== TRUE)//图像采集器接入
  522. // {
  523. // data[25] |= (0x01<<5);
  524. // }
  525. // if(IsFareMeterOK()== TRUE)//计价器接入
  526. // {
  527. // data[25] |= (0x01<<4);
  528. // }
  529. // if(IsVoiceDialerOK()==TRUE)//语音波号器接入
  530. // {
  531. // data[25] |= (0x01<<3);
  532. // }
  533. // if(IsForbiddenDialCall()==TRUE)//禁止打出
  534. // {
  535. // data[25] |= (0x01<<2);
  536. // }
  537. // if(IsForbiddenReceiveCall()==TRUE)//禁止打入
  538. // {
  539. // data[25] |= (0x01<<1);
  540. // }
  541. // if(IsForbiddenAllCalls()==TRUE)//禁止通话
  542. // {
  543. // data[25] |= (0x01);
  544. // }
  545. //v1v2v3v4:终端设置状态
  546. //V1V2:定时发送时间
  547. data[26] = (sutGpsInfo.SendTime>>8)&0xFF;
  548. data[27] = (sutGpsInfo.SendTime)&0xFF;
  549. //V3: 停车设置时间
  550. //data[28]= sutGpsInfo.StopTimeout&0xFF;
  551. //V4: 超速设置时间
  552. // data[29]= sutGpsInfo.HighSpeed;
  553. //V5; 电子围栏设置个数
  554. // data[30]= sutGpsInfo.ElectronicFenceNum;
  555. //V6: 登签
  556. if(sutGpsInfo.isServerLogin)data[31] = 1;
  557. else data[31] = 0;
  558. //: 定时发送图片的时间
  559. data[32] = 0;//
  560. //: 中心下发的主命令
  561. data[33]= sutGpsInfo.HostCmd;
  562. #endif
  563. }
  564. void MakeGpsData(void)
  565. {
  566. unsigned char *data=(unsigned char *)&sutGpsSendData;
  567. if(!sutGpsInfo.isGpsValid)return;
  568. data[0] = sutGpsInfo.year;
  569. data[1] = sutGpsInfo.month;
  570. data[2] = sutGpsInfo.day;
  571. data[3] = sutGpsInfo.hour;
  572. data[4] = sutGpsInfo.minu;
  573. data[5] = sutGpsInfo.sec;
  574. data[6] = sutGpsInfo.longitue>>24;
  575. data[7] = sutGpsInfo.longitue>>16;
  576. data[8] = sutGpsInfo.longitue>>8;
  577. data[9] = sutGpsInfo.longitue;
  578. data[10] = sutGpsInfo.latitue>>24;
  579. data[11] = sutGpsInfo.latitue>>16;
  580. data[12] = sutGpsInfo.latitue>>8;
  581. data[13] = sutGpsInfo.latitue;
  582. data[14] = sutGpsInfo.speed>>8;
  583. data[15] = sutGpsInfo.speed;
  584. data[16] = sutGpsInfo.aspect>>8;
  585. data[17] = sutGpsInfo.aspect;
  586. //st
  587. data[18] = 1;
  588. //空重载状态:表示范围:0-1采用压缩BCD编码.
  589. // 1 表示重载 0 表示空载
  590. data[19]= 0;
  591. //登退签状态:表示范围:0-1采用压缩BCD编码。
  592. // 1 表示登签 0 表示退签
  593. data[20] = 1;
  594. }