找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6266|回复: 7
收起左侧

GPS+北斗定位以及WIFI S1216无线透传到电脑的虚拟地图实时定位 stm32源码

  [复制链接]
ID:313134 发表于 2018-4-21 16:15 | 显示全部楼层 |阅读模式
通过S1216 GPS+北斗定位模块将收集到的定位信息通过无线wifi模块透传到电脑上,配合电脑的虚拟地图可以实时定位。


stm32单片机源程序如下:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"                           
  5. #include "lcd.h"  
  6. #include "key.h"     
  7. #include "malloc.h"
  8. #include "sdio_sdcard.h"  
  9. #include "w25qxx.h"   
  10. #include "ff.h"  
  11. #include "exfuns.h"   
  12. #include "text.h"        
  13. #include "touch.h"               
  14. #include "usart3.h"
  15. #include "common.h"
  16. #include "gps.h"
  17. #include "string.h"               
  18. #include "usart2.h"

  19. u8 USART1_TX_BUF[USART2_MAX_RECV_LEN];                                         //串口1,发送缓存区
  20. nmea_msg gpsx;                                                                                         //GPS信息
  21. __align(4) u8 dtbuf[50];                                                                   //打印缓存器
  22. const u8*fixmode_tbl[4]={"Fail","Fail"," 2D "," 3D "};        //fix mode字符串
  23.          
  24. //显示GPS定位信息
  25. void Gps_Msg_Show(void)
  26. {
  27.          float tp;                  
  28.         tp=gpsx.longitude;           
  29.         sprintf((char *)dtbuf,"Longitude:%.5f %1c   ",tp/=100000,gpsx.ewhemi);        //得到经度字符串
  30.         u3_printf("%s\r\n",dtbuf);//发送接收到的数据到串口1
  31.         
  32.         tp=gpsx.latitude;           
  33.         sprintf((char *)dtbuf,"Latitude:%.5f %1c   ",tp/=100000,gpsx.nshemi);        //得到纬度字符串         
  34.         u3_printf("%s\r\n",dtbuf);//发送接收到的数据到串口1
  35.         
  36.         tp=gpsx.altitude;         
  37.          sprintf((char *)dtbuf,"Altitude:%.1fm     ",tp/=10);                                    //得到高度字符串
  38.         u3_printf("%s\r\n",dtbuf);//发送接收到的数据到串口1  
  39.         
  40.         tp=gpsx.speed;           
  41.          sprintf((char *)dtbuf,"Speed:%.3fkm/h     ",tp/=1000);                                    //得到速度字符串        
  42.         u3_printf("%s\r\n",dtbuf);//发送接收到的数据到串口1               

  43.         if(gpsx.fixmode<=3)                                                                                                                //定位状态
  44.         {  
  45.                 sprintf((char *)dtbuf,"Fix Mode:%s",fixmode_tbl[gpsx.fixmode]);                  
  46.         }                    
  47.         sprintf((char *)dtbuf,"GPS+BD Valid satellite:%02d",gpsx.posslnum);                         //用于定位的GPS卫星数

  48.         sprintf((char *)dtbuf,"GPS Visible satellite:%02d",gpsx.svnum%100);                         //可见GPS卫星数

  49.         //printf("%s\r\n",dtbuf);//发送接收到的数据到串口1
  50.         
  51.         sprintf((char *)dtbuf,"BD Visible satellite:%02d",gpsx.beidou_svnum%100);                         //可见北斗卫星数

  52.         //printf("%s\r\n",dtbuf);//发送接收到的数据到串口1
  53.         sprintf((char *)dtbuf,"UTC Date:%04d/%02d/%02d   ",gpsx.utc.year,gpsx.utc.month,gpsx.utc.date);        //显示UTC日期
  54.         u3_printf("%s\r\n",dtbuf);//发送接收到的数据到串口1
  55.         sprintf((char *)dtbuf,"UTC Time:%02d:%02d:%02d   ",gpsx.utc.hour,gpsx.utc.min,gpsx.utc.sec);        //显示UTC时间
  56.   u3_printf("%s\r\n",dtbuf);//发送接收到的数据到串口1
  57. }




  58. int main(void)
  59. {        
  60.         u16 i,rxlen;
  61.         u16 lenx;
  62.         u8 key=0XFF;
  63.         u8 upload=0;                              
  64.         delay_init();                     //延时函数初始化         
  65.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
  66.         uart_init(115200);                 //串口初始化为115200        
  67.          LED_Init();                                          //初始化与LED连接的硬件接口

  68.         USART2_Init(115200);  //初始化串口2波特率为115200
  69.         usart3_init(115200);                //初始化串口3
  70.         my_mem_init(SRAMIN);                //初始化内部内存池
  71.         delay_ms(1000);
  72.   delay_ms(1000);
  73.   delay_ms(1000);
  74.   tcp_connect();
  75.         SkyTra_Cfg_Prt(3);                        //重新设置模块的波特率为115200
  76.         USART2_Init(38400);                        //初始化串口3波特率为115200
  77.         SkyTra_Cfg_Tp(100000);        //脉冲宽度为100ms
  78. while(1)
  79.          {
  80.                         LED0=!LED0;//red
  81.                         delay_ms(300);
  82.                         u3_printf("%s\r\n","123");
  83.                         delay_ms(1);
  84.                         if(USART2_RX_STA&0X8000)                //接收到一次数据了
  85.                         {
  86.                                         rxlen=USART2_RX_STA&0X7FFF;        //得到数据长度
  87.                                         for(i=0;i<rxlen;i++)USART1_TX_BUF[i]=USART2_RX_BUF[i];           
  88.                                         USART2_RX_STA=0;                           //启动下一次接收
  89.                                         USART1_TX_BUF[i]=0;                        //自动添加结束符
  90.                                         GPS_Analysis(&gpsx,(u8*)USART1_TX_BUF);//分析字符串
  91.                                         Gps_Msg_Show();                                //显示信息
  92.                         }
  93.                         if((lenx%4000)==0)
  94.                         LED0=!LED0;
  95.                         lenx++;
  96.         }

  97. }
复制代码

所有资料51hei提供下载:
电子终端程序.rar (1.61 MB, 下载次数: 133)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:561213 发表于 2019-6-12 19:56 | 显示全部楼层
我要试试
回复

使用道具 举报

ID:421308 发表于 2019-7-12 09:01 | 显示全部楼层
看看效果,学习学习
回复

使用道具 举报

ID:199471 发表于 2019-7-15 15:59 | 显示全部楼层
学习学习,谢谢楼主
回复

使用道具 举报

ID:504404 发表于 2020-5-6 00:08 | 显示全部楼层
请问电脑的虚拟地图怎么构建的鸭
回复

使用道具 举报

ID:897693 发表于 2021-4-1 08:50 | 显示全部楼层
怎么插引脚啊
回复

使用道具 举报

ID:897693 发表于 2021-4-1 08:51 | 显示全部楼层
怎么插引脚啊
回复

使用道具 举报

ID:311400 发表于 2021-4-2 09:17 | 显示全部楼层
非常关注电脑的虚拟地图
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表