找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4488|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

手機(jī)怎么查看遠(yuǎn)程GPS數(shù)據(jù)呢?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:224249 發(fā)表于 2018-8-21 16:04 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
分享學(xué)習(xí)一下,手機(jī)查看gps數(shù)據(jù)
GPS手機(jī)遠(yuǎn)程接收方案
需要材料
材料
數(shù)量
GPS模塊
1
GSM模塊
1
電源
1
TCP服務(wù)器
1
可編程單片機(jī)
1
杜邦線
若干
螺絲螺母
若干
設(shè)計(jì)
GPS模塊是串口收發(fā)的,如果需要把接收到的信息處理后傳輸給手機(jī)上查看,那么我們需要先設(shè)計(jì)出無(wú)線傳輸方案; 無(wú)線傳輸方案中有幾種辦法:
1.藍(lán)牙傳輸
2.WIFI傳輸
3.通過(guò)GSM模塊把經(jīng)緯度信息放到網(wǎng)絡(luò)服務(wù)器中
這里我們只介紹第三種方案,前面兩種相對(duì)簡(jiǎn)單,需要介紹。
無(wú)論哪種方案,我們都需要先在眾多的GPS數(shù)據(jù)中提取經(jīng)緯度信息,提取方法參GPS的資料文檔。GSM模塊需要先設(shè)定好訪問(wèn)網(wǎng)絡(luò)的功能,設(shè)置方法參考GSM的資料文檔。
現(xiàn)在準(zhǔn)備好的模塊有2個(gè)串口傳輸,而大多數(shù)便宜單片機(jī)只有1個(gè)串口,這時(shí)可以采取下圖的方案設(shè)計(jì)。
把GSM模塊的RX接到單片機(jī)的TX,并把GPS的TX接到單片機(jī)的RX,這樣就可以利用一個(gè)串口分別接兩個(gè)模塊達(dá)成效果。
服務(wù)器
服務(wù)器方案可以自己架設(shè)或者使用網(wǎng)絡(luò)服務(wù)器,這里我們以LINUX服務(wù)為案例;服務(wù)器的工作非常簡(jiǎn)單,僅僅建立一個(gè)TCP服務(wù)器并把兩個(gè)客戶端得信息互相轉(zhuǎn)發(fā)。這里提供下C的參考程序給大家修改。

  1. /*
  2. * main.cpp
  3. * TCP客戶端信息轉(zhuǎn)發(fā)
  4. * Author: Yayi
  5. */
  6. #include <stdlib.h>
  7. #include <stdio.h>
  8. #include <errno.h>
  9. #include <string.h>
  10. #include <netdb.h>
  11. #include <sys/types.h>
  12. #include <netinet/in.h>
  13. #include <sys/socket.h>
  14. #include <unistd.h>
  15. #include <arpa/inet.h>
  16. #include <time.h>
  17. #include <sys/wait.h>

  18. #define WAITBUF 10
  19. int main(int argc, char *argv[])
  20. {
  21.               int sockfd,clientnub,client2nub;
  22.               struct sockaddr_in server_addr;
  23.               struct sockaddr_in client_addr,client2_addr;
  24.               socklen_t sin_size;
  25.               char serverlog0[1024] = {0};
  26.               char serverlog1[1024] = {0};
  27.               char serverlog2[1024] = {0};
  28.               time_t timep;
  29.               struct tm *p;

  30.               /*服務(wù)器端開始建立socket描述符*/
  31.               if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
  32.               {
  33.         fprintf(stderr,"Socket error:%s\n",strerror(errno));
  34.         exit(1);
  35.               }

  36.               /*服務(wù)器端填充 sockaddr結(jié)構(gòu)*/
  37.               bzero(&server_addr,sizeof(struct sockaddr_in));
  38.               server_addr.sin_family=AF_INET;

  39.               /*自動(dòng)填充主機(jī)IP*/
  40.               server_addr.sin_addr.s_addr=htonl(INADDR_ANY);
  41.               server_addr.sin_port=htons(8888);

  42.               /*捆綁sockfd描述符*/
  43.               if(bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1)
  44.               {
  45.                       fprintf(stderr,"Bind error:%s\n",strerror(errno));
  46.                       exit(1);
  47.               }

  48.               /*監(jiān)聽sockfd描述符*/
  49.               if(listen(sockfd, WAITBUF)==-1)
  50.               {
  51.                       fprintf(stderr,"Listen error:%s\n",strerror(errno));
  52.                       exit(1);
  53.               }

  54.               /*等待客戶端鏈接*/
  55.         sin_size=sizeof(struct sockaddr_in);
  56.         clientnub=accept(sockfd,(struct sockaddr *)(&client_addr),&sin_size);

  57.         /*日志格式化*/
  58.                   time(&timep);
  59.                   p = gmtime(&timep);

  60.               sprintf(serverlog0,"[%d.%d.%d", (1900+p->tm_year), (1+p->tm_mon), p->tm_mday);
  61.               sprintf(serverlog1," %d:%d:%d] ", p->tm_hour, p->tm_min, p->tm_sec);
  62.               sprintf(serverlog2,"Server get connection from %s\n",inet_ntoa(client_addr.sin_addr));

  63.               FILE* file = fopen("tcpserver.log","a+");
  64.               fwrite(serverlog0,1,strlen(serverlog0),file);
  65.               fwrite(serverlog1,1,strlen(serverlog1),file);
  66.               fwrite(serverlog2,1,strlen(serverlog2),file);
  67.               fclose(file);

  68.               /*發(fā)送鏈接"OK\n"信號(hào)*/
  69.               send(clientnub,"OK\n",strlen("OK\n"),0);

  70.               /*等待客戶端2鏈接*/
  71.               sin_size=sizeof(struct sockaddr_in);
  72.               client2nub=accept(sockfd,(struct sockaddr *)(&client2_addr),&sin_size);
  73.         /*日志格式化*/
  74.                   time(&timep);
  75.                   p = gmtime(&timep);


  76.               sprintf(serverlog0,"[%d.%d.%d", (1900+p->tm_year), (1+p->tm_mon), p->tm_mday);
  77.               sprintf(serverlog1," %d:%d:%d] ", p->tm_hour, p->tm_min, p->tm_sec);
  78.               sprintf(serverlog2,"Server get connection from %s\n",inet_ntoa(client2_addr.sin_addr));

  79.               file = fopen("tcpserver.log","a+");
  80.               fwrite(serverlog0,1,strlen(serverlog0),file);
  81.               fwrite(serverlog1,1,strlen(serverlog1),file);
  82.               fwrite(serverlog2,1,strlen(serverlog2),file);
  83.               fclose(file);

  84.               /*發(fā)送鏈接"OK\n"信號(hào)*/
  85.               send(client2nub,"OK\n",strlen("OK\n"),0);

  86.               while(1)
  87.               {
  88.                             char recv_send_data[1024]={0};
  89.                             /*把客戶端2接收轉(zhuǎn)發(fā)客戶端*/
  90.                             if((recv(client2nub,recv_send_data,1024,0))>0)
  91.                                           send(clientnub,recv_send_data,strlen(recv_send_data),0);
  92.                             /*把客戶端接收轉(zhuǎn)發(fā)客戶端2*/
  93.                             if((recv(clientnub,recv_send_data,1024,0))>0)
  94.                                           send(client2nub,recv_send_data,strlen(recv_send_data),0);
  95.               }
  96.               close(sockfd);
  97.               exit(0);
  98. }
復(fù)制代碼

編譯后運(yùn)行一下即在阻塞等待兩個(gè)客戶端的接入。
手機(jī)APP接收數(shù)據(jù)格式
在單片機(jī)提取出經(jīng)緯度的時(shí)候必須按照以下格式發(fā)送,否則手機(jī)APP不做處理。
Latitude:xx.xxxxx,Longitude:xxx.xxxxx\r\n
效果預(yù)覽
圖片是帶著小狗跑步,可以看到小狗就在我得身后。

完整的Word格式文檔51黑下載地址:
手機(jī)遠(yuǎn)程查看GPS信息方案.docx (131.55 KB, 下載次數(shù): 20)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:361138 發(fā)表于 2019-3-2 21:39 | 只看該作者
這資料也太少了吧
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表