标题:
GPS+北斗定位以及WIFI S1216无线透传到电脑的虚拟地图实时定位 stm32源码
[打印本页]
作者:
htlmm1314
时间:
2018-4-21 16:15
标题:
GPS+北斗定位以及WIFI S1216无线透传到电脑的虚拟地图实时定位 stm32源码
通过S1216 GPS+北斗定位模块将收集到的定位信息通过无线wifi模块透传到电脑上,配合电脑的虚拟地图可以实时定位。
stm32单片机源程序如下:
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "lcd.h"
#include "key.h"
#include "malloc.h"
#include "sdio_sdcard.h"
#include "w25qxx.h"
#include "ff.h"
#include "exfuns.h"
#include "text.h"
#include "touch.h"
#include "usart3.h"
#include "common.h"
#include "gps.h"
#include "string.h"
#include "usart2.h"
u8 USART1_TX_BUF[USART2_MAX_RECV_LEN]; //串口1,发送缓存区
nmea_msg gpsx; //GPS信息
__align(4) u8 dtbuf[50]; //打印缓存器
const u8*fixmode_tbl[4]={"Fail","Fail"," 2D "," 3D "}; //fix mode字符串
//显示GPS定位信息
void Gps_Msg_Show(void)
{
float tp;
tp=gpsx.longitude;
sprintf((char *)dtbuf,"Longitude:%.5f %1c ",tp/=100000,gpsx.ewhemi); //得到经度字符串
u3_printf("%s\r\n",dtbuf);//发送接收到的数据到串口1
tp=gpsx.latitude;
sprintf((char *)dtbuf,"Latitude:%.5f %1c ",tp/=100000,gpsx.nshemi); //得到纬度字符串
u3_printf("%s\r\n",dtbuf);//发送接收到的数据到串口1
tp=gpsx.altitude;
sprintf((char *)dtbuf,"Altitude:%.1fm ",tp/=10); //得到高度字符串
u3_printf("%s\r\n",dtbuf);//发送接收到的数据到串口1
tp=gpsx.speed;
sprintf((char *)dtbuf,"Speed:%.3fkm/h ",tp/=1000); //得到速度字符串
u3_printf("%s\r\n",dtbuf);//发送接收到的数据到串口1
if(gpsx.fixmode<=3) //定位状态
{
sprintf((char *)dtbuf,"Fix Mode:%s",fixmode_tbl[gpsx.fixmode]);
}
sprintf((char *)dtbuf,"GPS+BD Valid satellite:%02d",gpsx.posslnum); //用于定位的GPS卫星数
sprintf((char *)dtbuf,"GPS Visible satellite:%02d",gpsx.svnum%100); //可见GPS卫星数
//printf("%s\r\n",dtbuf);//发送接收到的数据到串口1
sprintf((char *)dtbuf,"BD Visible satellite:%02d",gpsx.beidou_svnum%100); //可见北斗卫星数
//printf("%s\r\n",dtbuf);//发送接收到的数据到串口1
sprintf((char *)dtbuf,"UTC Date:%04d/%02d/%02d ",gpsx.utc.year,gpsx.utc.month,gpsx.utc.date); //显示UTC日期
u3_printf("%s\r\n",dtbuf);//发送接收到的数据到串口1
sprintf((char *)dtbuf,"UTC Time:%02d:%02d:%02d ",gpsx.utc.hour,gpsx.utc.min,gpsx.utc.sec); //显示UTC时间
u3_printf("%s\r\n",dtbuf);//发送接收到的数据到串口1
}
int main(void)
{
u16 i,rxlen;
u16 lenx;
u8 key=0XFF;
u8 upload=0;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
LED_Init(); //初始化与LED连接的硬件接口
USART2_Init(115200); //初始化串口2波特率为115200
usart3_init(115200); //初始化串口3
my_mem_init(SRAMIN); //初始化内部内存池
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
tcp_connect();
SkyTra_Cfg_Prt(3); //重新设置模块的波特率为115200
USART2_Init(38400); //初始化串口3波特率为115200
SkyTra_Cfg_Tp(100000); //脉冲宽度为100ms
while(1)
{
LED0=!LED0;//red
delay_ms(300);
u3_printf("%s\r\n","123");
delay_ms(1);
if(USART2_RX_STA&0X8000) //接收到一次数据了
{
rxlen=USART2_RX_STA&0X7FFF; //得到数据长度
for(i=0;i<rxlen;i++)USART1_TX_BUF[i]=USART2_RX_BUF[i];
USART2_RX_STA=0; //启动下一次接收
USART1_TX_BUF[i]=0; //自动添加结束符
GPS_Analysis(&gpsx,(u8*)USART1_TX_BUF);//分析字符串
Gps_Msg_Show(); //显示信息
}
if((lenx%4000)==0)
LED0=!LED0;
lenx++;
}
}
复制代码
所有资料51hei提供下载:
电子终端程序.rar
(1.61 MB, 下载次数: 133)
2018-4-21 16:29 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
zsj09948
时间:
2019-6-12 19:56
我要试试
作者:
xiaozhong1314
时间:
2019-7-12 09:01
看看效果,学习学习
作者:
995879859
时间:
2019-7-15 15:59
学习学习,谢谢楼主
作者:
QI0609
时间:
2020-5-6 00:08
请问电脑的虚拟地图怎么构建的鸭
作者:
youlaiyuan
时间:
2021-4-1 08:50
怎么插引脚啊
作者:
youlaiyuan
时间:
2021-4-1 08:51
怎么插引脚啊
作者:
longwu4886
时间:
2021-4-2 09:17
非常关注电脑的虚拟地图
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1