STM32 GPS定位

2023-05-16

文章目录

    • ATGM332D简介
    • 特性
    • 引脚接入
    • 串口通信
    • NMEA 协议解析
    • 串口输出
    • nmealib在linux下使用

ATGM332D简介

高性能、低功耗 GPS、北斗双模定位模块

特性

特性说明
基本功能三维位置定位(经纬度、海拔),测速,授时
导航系统GPS、北斗 BDS(双模)
支持辅助GNSS
位置定位精度2.5 米(圆概率误差 CEP50)
测速精度<0.1m/s
航向角精度0.5 度
授时精度<30ns
射频通道数目支持全星座北斗 BDS、GPS 同时接收
定位时间冷启动:≤32s ; 热启动:≤1s
冷启动捕获灵敏度-148dBm
热启动捕获灵敏度-156dBm
重捕获灵敏度-160dBm
跟踪灵敏度-162dBm
导航信息最高更新速率1Hz(默认),最大 10Hz
串口预留有 TTL 电平标准的串口,支持与使用 3.3/5V 电平标
准的系统通讯支持传输速率:4800、9600、115200bps,默认为 9600bps
协议NMEA0183
输出的经纬度坐标系WGS-84 坐标系
最大高度18000m
最大速度515m/s
最大加速度4g
电源通过模块引出的电源引脚 3.3~5V 供电
工作温度-40 到+85 摄氏度
保存温度-40 到+125 摄氏度
功耗连续运行<25mA (@3.3V

引脚接入

名称说明
VCC电源线,正常电压范围为:3.3~5V
GND地线
TXD串口数据发送信号线,使用 TTL 电平
RXD串口数据接收信号线,使用 TTL 电平
PPS时间脉冲信号线,模块接收到 GPS 时间信息后,输出可调节的脉冲信号,默认为 1Hz,脉冲上升沿与 UTC 时间对齐

GPS模块 STM32
TXD <------->PA3
RXD<-------> PA2

串口通信

UART->DMA中断
gpio配置

#define GPS_USART                             USART2
#define GPS_USART_CLK                         RCC_APB1Periph_USART2
#define GPS_RCC_PeriphClockCmd_Fun          RCC_APB1PeriphClockCmd

#define GPS_USART_RX_GPIO_PORT                GPIOA
#define GPS_USART_RX_GPIO_CLK                 RCC_APB2Periph_GPIOA
#define GPS_USART_RX_PIN                      GPIO_Pin_3

#define GPS_USART_TX_GPIO_PORT                GPIOA
#define GPS_USART_TX_GPIO_CLK                 RCC_APB2Periph_GPIOA
#define GPS_USART_TX_PIN                      GPIO_Pin_2

#define GPS_DMA                      DMA1
#define GPS_DMA_CLK                  RCC_AHBPeriph_DMA1
#define GPS_DMA_CHANNEL              DMA1_Channel6
#define GPS_DMA_IRQn                 DMA1_Channel6_IRQn         //中断源

static void GPS_USART_Config(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	USART_InitTypeDef USART_InitStructure;
	
	/* config USART clock */
	RCC_APB2PeriphClockCmd(GPS_USART_RX_GPIO_CLK|GPS_USART_TX_GPIO_CLK, ENABLE);
	GPS_RCC_PeriphClockCmd_Fun(GPS_USART_CLK, ENABLE);
	/* USART GPIO config */
   /* Configure USART Tx  as alternate function push-pull */
    GPIO_InitStructure.GPIO_Pin = GPS_USART_TX_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPS_USART_TX_GPIO_PORT, &GPIO_InitStructure);   
    /* Configure USART Rx as input floating */
    GPIO_InitStructure.GPIO_Pin = GPS_USART_RX_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPS_USART_TX_GPIO_PORT, &GPIO_InitStructure);
	/* USART2 mode config */
	USART_InitStructure.USART_BaudRate = GPS_USART_BAUDRATE;//波特率 
	USART_InitStructure.USART_WordLength = USART_WordLength_8b;
	USART_InitStructure.USART_StopBits = USART_StopBits_1;
	USART_InitStructure.USART_Parity = USART_Parity_No ;
	USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
	USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

	USART_Init(GPS_USART, &USART_InitStructure); 
	USART_Cmd(GPS_USART, ENABLE);	
}

gps dma配置

static void GPS_DMA_Config(void)
{
   		DMA_InitTypeDef DMA_InitStructure;
		RCC_AHBPeriphClockCmd(GPS_DMA_CLK, ENABLE);//DMA时钟
		DMA_InitStructure.DMA_PeripheralBaseAddr = GPS_DATA_ADDR;//DMA源,串口数据寄存器地址	   
		DMA_InitStructure.DMA_MemoryBaseAddr = (u32)gps_rbuff;//收到数据地址
		DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;//内存到外设	
		DMA_InitStructure.DMA_BufferSize = GPS_RBUFF_SIZE;//传输大小   
		DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //外设地址不增
		DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;	//内存地址递增
		DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;//外设数据单位
		DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;	 //内存数据单位
		DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;	//不断循环 
		DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;  //优先级 中
		DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;//禁止内存到内存	   
		DMA_Init(GPS_DMA_CHANNEL, &DMA_InitStructure); 	   //配置DMA通道
        GPS_Interrupt_Config();
        DMA_ITConfig(GPS_DMA_CHANNEL,DMA_IT_HT|DMA_IT_TC,ENABLE);  //DMA发送完产生中断
		/*使能DMA*/
		DMA_Cmd (GPS_DMA_CHANNEL,ENABLE);		
		USART_DMACmd(GPS_USART, USART_DMAReq_Rx, ENABLE);//配置串口向DMA发出TX请求
}

NMEA 协议解析

NMEA 是美国国家海洋电子协会(National Marine Electronics Association )为海用电子设备制定的标准格式,目前已经成为了 GPS 导航设备统一的 RTCM 标准协议。已成为所有的定位接收机中最通用的数据输出格式。

NMEA-0183 是一套定义接收机输出的标准信息,有几种不同的格式,每种都是独立相关的 ASCII 格式,使用逗号隔开数据,数据流长度从 30-100 字符不等,通常以每秒间隔选择输出,最常用的格式为"GGA",它包含了定位时间,纬度,经度,高度,定位所用的卫星数,DOP 值,差分状态和校正时段等,其他的有速度,跟踪,日期等。

语句协议解析
语句协议

该协议采用 ASCII 码。 帧格式形如: a a c c c , d d d , d d d , … , d d d ∗ h h < C R > < L F > < 1 > “ aaccc,ddd,ddd,…,ddd*hh<CR><LF> <1> “ aaccc,ddd,ddd,,dddhh<CR><LF><1>”——帧命令起始位
<2> aaccc——地址域,前两位为识别符,后三位为语句名
<3> ddd…ddd——数据
<4> “”——校验和前缀
<5> hh——校验和(check sum),$与
之间所有字符 ASCII 码的校验和(各字节做异或运
算,得到校验和后,再转换 16 进制格式的 ASCII 字符。)
<6> ——CR(Carriage Return) + LF(Line Feed)帧结束,回车和换

1、GGA 全球定位数据

$GNGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>,<13>,<14>*<15>
$GNGGA,012842.000,2253.7220,N,11350.7025,E,1,11,1.5,44.8,M,0.0,M,*44
<1> UTC 时间,格式为 hhmmss.sss
<2> 纬度,格式为 ddmm.mmmm(前导位数不足则补 0)
<3> 纬度半球,N 或 S(北纬或南纬)
<4> 经度,格式为 dddmm.mmmm(前导位数不足则补 0)
<5> 经度半球,E 或 W(东经或西经)
<6> 定位质量指示,0=定位无效,1=标准定位,2=差分定位,6=估算
<7> 使用卫星数量,从 00 到 12(前导位数不足则补 0)
<8> 水平精确度,0.5 到 99.9
<9> 天线离海平面的高度,-9999.9 到 9999.9 米
<10> 高度单位,M 表示单位米
<11> 大地椭球面相对海平面的高度(-999.9 到 9999.9)
<12> 高度单位,M 表示单位米
<13> 差分 GPS 数据期限(RTCM SC-104),最后设立 RTCM 传送的秒数量
<14> 差分参考基站标号,从 0000 到 1023(前导位数不足则补 0)
<15> 校验和。

2、RMC 推荐最小数据

$ GNRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>,<13><14>
$GNRMC,012841.000,A,2253.7220,N,11350.7025,E,0.00,0.00,140117,A
7B
<1> UTC(Coordinated Universal Time)时间,hhmmss(时分秒)格式
<2> 定位状态,A=有效定位,V=无效定位
<3> Latitude,纬度 ddmm.mmmm(度分)格式(前导位数不足则补 0)
<4> 纬度半球 N(北半球)或 S(南半球)
<5> Longitude,经度 dddmm.mmmm(度分)格式(前导位数不足则补 0
<6> 经度半球 E(东经)或 W(西经)
<7> 地面速率(000.0~999.9 节,Knot,前导位数不足则补 0)
<8> 地面航向(000.0~359.9 度,以真北为参考基准,前导位数不足则补 0)
<9> UTC 日期,ddmmyy(日月年)格式
<10> Magnetic Variation,磁偏角(000.0~180.0 度,前导位数不足则补 0)
<11> Declination,磁偏角方向,E(东)或 W(西)
<12> Mode Indicator,模式指示(仅 NMEA0183 3.00 版本输出,A=自主定位,D=差分,
E=估算,N=数据无效)
<13> NavStatus,导航状态标示符( V 表示系统不输出导航状态信息)
<14> 校验和

3、VTG 地面速度信息(Course over ground and Ground speed)。

$ GNVTG,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9><10>
$GNVTG,0.00,T,M,0.00,N,0.00,K,A
23
<1> 以真北为参考基准的地面航向
<2> T,表示“真”
<3> 以磁北为参考基准的地面航向
<4> M,表示“磁场”
<5> 地面速率
<6> N,表示“节”
<7> 地面速率
<8> K,表示“千米/小时”
<9> 模式指示(A=自主定位,D=差分,E=估算,N=数据无效)
<10> 校验和

4、GLL 定位地理信息(Latitude and longitude, with time of position fix and status)

$ GNGLL,<1>,<2>,<3>,<4>,<5>,<6>,<7><8>
$GNGLL,2253.7220,N,11350.7025,E,012842.000,A,A
4D
<1> 纬度 ddmm.mmmmm(度分)
<2> 纬度半球 N(北半球)或 S(南半球)
<3> 经度 dddmm.mmmmm(度分)
<4> 经度半球 E(东经)或 W(西经)
<5> UTC 时间:hhmmss(时分秒)
<6> 定位状态,A=有效定位,V=无效定位
<7> 模式指示(A=自主定位,D=差分,E=估算,N=数据无效)
<8> 校验和

5、ZDA 当前时间信息:(Time and Date)

格式:$ GNZDA,<1>,<2>,<3>,<4>,<5>,<6><7>
例子:$GNZDA,012841.000,14,01,2017,00,00
46
<1> UTC 时间:hhmmss(时分秒,格林威治时间)
<2> 日
<3> 月
<4> 年

6、GSA GPS 精度指针及使用卫星 (GNSS DOP and Active Satellites)。

X X G S A , S m o d e , F S , S V I D , P D O P , H D O P , V D O P ∗ C S < C R > < L F > 例 子 : XXGSA,Smode,FS{,SVID},PDOP,HDOP,VDOP*CS<CR><LF> 例子: XXGSA,Smode,FS,SVID,PDOP,HDOP,VDOPCS<CR><LF>GPGSA,A,3,05,13,02,30,15,24,2.2,1.5,1.635
$BDGSA,A,3,01,03,04,08,12,2.2,1.5,1.6
2D
<1> 模式 1:定位型式 1 = 未定位,2 = 二维定位,3 = 三维定位
<2> FS:定位状态标志
<3> {,SVID}:用于定位的卫星编号,该字段共显示 12 颗可用卫星编号,多于 12 颗时只输
出前 12 颗, 不足 12 颗时不足的区域补空
<4> PDOP 综合位置精度因子(0.5 - 99.9)
<5> HDOP 水平精度因子(0.5 - 99.9)
<6> VDOP 垂直精度因子(0.5 - 99.9)
<7> systemId:NMEA 所定义的 GNSS 系统 ID 号
<8> 校验和

7、GSV 可视卫星状态输出语句 (GNSS Satellites in View)

$XXGSV,NumMsg,MsgNo,NumSv{,SVID,ele,az,cn0} CS
$GPGSV,3,1,09,02,42,118,49,05,38,041,47,06,05,128,39,13,74,039,41
77
$GPGSV,3,2,09,15,68,244,28,20,45,325,21,24,15,180,28,29,47,278,23*72
<1> 总的 GSV 语句电文数
<2> 当前 GSV 语句号
<3> 可视卫星总数,00 至 12
<4> 卫星编号{,SVID,ele,az,cn0},01 至 32
<5> 信噪比(C/No),00 至 99dB;无表示未接收到讯号
<6> 校验和。
注:每条语句最多包括四颗卫星的信息,每颗卫星的信息有四个数据项,即:卫星编
号、卫星仰角、卫星方位角、信噪比。

解码库 源码地址

直接使用该解码库,,它使用纯 C 语言编写,支持 windows、winCE 、
UNIX 平台,支持解析 GPGGA,GPGSA,GPGSV,GPRMC,GPVTG 这五种语句
关键代码

nmeaINFO info;          //GPS解码后得到的数据
nmeaPARSER parser;      //解码时使用的数据结构

//gps_rbuff 为串口DMA中断收到的数据
nmea_parse(&parser, (const char*)&gps_rbuff[0], HALF_GPS_RBUFF_SIZE, &info);

串口输出

在这里插入图片描述

nmealib在linux下使用

下载源码->编译->运行

root@ubuntu:/home/wy/nmealib# ls
build  CHANGELOG.TXT  doc  include  lib  LICENSE.TXT  Makefile  nmea.ico  nmea.sln  README.TXT  samples  src

make

root@ubuntu:/home/wy/nmealib# make
mkdir -p build/nmea_gcc
gcc  -I include  -Llib -lnmea -lm -c src/generate.c -o build/nmea_gcc/generate.o
gcc  -I include  -Llib -lnmea -lm -c src/generator.c -o build/nmea_gcc/generator.o
gcc  -I include  -Llib -lnmea -lm -c src/parse.c -o build/nmea_gcc/parse.o
gcc  -I include  -Llib -lnmea -lm -c src/parser.c -o build/nmea_gcc/parser.o
gcc  -I include  -Llib -lnmea -lm -c src/tok.c -o build/nmea_gcc/tok.o
gcc  -I include  -Llib -lnmea -lm -c src/context.c -o build/nmea_gcc/context.o
gcc  -I include  -Llib -lnmea -lm -c src/time.c -o build/nmea_gcc/time.o
gcc  -I include  -Llib -lnmea -lm -c src/info.c -o build/nmea_gcc/info.o
gcc  -I include  -Llib -lnmea -lm -c src/gmath.c -o build/nmea_gcc/gmath.o
gcc  -I include  -Llib -lnmea -lm -c src/sentence.c -o build/nmea_gcc/sentence.o
ar rsc lib/libnmea.a build/nmea_gcc/generate.o build/nmea_gcc/generator.o build/nmea_gcc/parse.o build/nmea_gcc/parser.o build/nmea_gcc/tok.o build/nmea_gcc/context.o build/nmea_gcc/time.o build/nmea_gcc/info.o build/nmea_gcc/gmath.o build/nmea_gcc/sentence.o
ranlib lib/libnmea.a
gcc  -I include  -Llib -lnmea -lm  -c samples/generate/main.c -o samples/generate/main.o
gcc   samples/generate/main.o -Llib -lnmea -lm -o build/samples_generate 
gcc  -I include  -Llib -lnmea -lm  -c samples/generator/main.c -o samples/generator/main.o
gcc   samples/generator/main.o -Llib -lnmea -lm -o build/samples_generator 
gcc  -I include  -Llib -lnmea -lm  -c samples/parse/main.c -o samples/parse/main.o
gcc   samples/parse/main.o -Llib -lnmea -lm -o build/samples_parse 
gcc  -I include  -Llib -lnmea -lm  -c samples/parse_file/main.c -o samples/parse_file/main.o
samples/parse_file/main.c: In function ‘trace’:
samples/parse_file/main.c:13:5: warning: implicit declaration of function ‘write’; did you mean ‘fwrite’? [-Wimplicit-function-declaration]
     write(1, str, str_size);
     ^~~~~
     fwrite
gcc   samples/parse_file/main.o -Llib -lnmea -lm -o build/samples_parse_file 
gcc  -I include  -Llib -lnmea -lm  -c samples/math/main.c -o samples/math/main.o
gcc   samples/math/main.o -Llib -lnmea -lm -o build/samples_math 
rm samples/math/main.o samples/generator/main.o samples/parse/main.o samples/generate/main.o samples/parse_file/main.o

samples/parse_file/main.c 主函数

#include <nmea/nmea.h>

#include <string.h>
#include <stdio.h>

#ifdef NMEA_WIN
#   include <io.h>
#endif

void trace(const char *str, int str_size)
{
    printf("Trace: ");
    write(1, str, str_size);
    printf("\n");
}
void error(const char *str, int str_size)
{
    printf("Error: ");
    write(1, str, str_size);
    printf("\n");
}

int main()
{
    nmeaINFO info;
    nmeaPARSER parser;
    FILE *file;
    char buff[2048];
    int size, it = 0;
    nmeaPOS dpos;

    file = fopen("gpslog.txt", "rb");

    if(!file)
        return -1;

    nmea_property()->trace_func = &trace;
    nmea_property()->error_func = &error;

    nmea_zero_INFO(&info);
    nmea_parser_init(&parser);

    while(!feof(file))
    {
        size = (int)fread(&buff[0], 1, 100, file);
        nmea_parse(&parser, &buff[0], size, &info);
        nmea_info2pos(&info, &dpos);
        printf(
            "%03d, Lat: %f, Lon: %f, Sig: %d, Fix: %d\n",
            it++, dpos.lat, dpos.lon, info.sig, info.fix
            );
    }
    fseek(file, 0, SEEK_SET);
    nmea_parser_destroy(&parser);
    fclose(file);
    return 0;
}

生成全部可执行文件路径以及文件

root@ubuntu:/home/wy/nmealib/build# ls
nmea_gcc  samples_generate  samples_generator  samples_math  samples_parse  samples_parse_file

准备gpslog.txt文件

root@ubuntu:/home/wy/nmealib/build# cp ../samples/parse_file/gpslog.txt .
root@ubuntu:/home/wy/nmealib/build# ls
gpslog.txt  nmea_gcc  samples_generate  samples_generator  samples_math  samples_parse  samples_parse_file

运行samples_parse_file,可以看到转换后的经纬度

root@ubuntu:/home/wy/nmealib/build# ./samples_parse_file
...
$GPGGA,213923.000,4221.1129,N,07102.9146,W,1,04,3.9,129.7,M,-33.7,M,,0000*6F
Trace: 
130, Lat: 0.739180, Lon: -1.240032, Sig: 1, Fix: 3
$GPGSA,A,3,26,07,06,21,,,,,,,,,4.1,3.9,1.0*3A
Trace: 
131, Lat: 0.739180, Lon: -1.240032, Sig: 1, Fix: 3
$GPRMC,213923.000,A,4221.1129,N,07102.9146,W,0.00,,010207,,,A*6E
Trace: 
$GPGGA,213924.000,4221.1129,N,07102.9146,W,1,04,3.9,129.7,M,-33.7,M,,0000*68
Trace: 
132, Lat: 0.739180, Lon: -1.240032, Sig: 1, Fix: 3
$GPGSA,A,3,26,07,06,21,,,,,,,,,4.0,3.9,1.0*3B
Trace: 
133, Lat: 0.739180, Lon: -1.240032, Sig: 1, Fix: 3
$GPRMC,213924.000,A,4221.1129,N,07102.9146,W,0.00,,010207,,,A*69
Trace: 
$GPGGA,213925.000,4221.1129,N,07102.9146,W,1,04,3.9,129.7,M,-33.7,M,,0000*69
Trace: 
134, Lat: 0.739180, Lon: -1.240032, Sig: 1, Fix: 3
$GPGSA,A,3,26,07,06,21,,,,,,,,,4.0,3.9,1.0*3B
Trace: 
$GPRMC,213925.000,A,4221.1129,N,07102.9146,W,0.00,,010207,,,A*68
Trace: 
135, Lat: 0.739180, Lon: -1.240032, Sig: 1, Fix: 3
$GPGGA,213926.000,4221.1112,N,07102.9177,W,1,04,3.9,136.5,M,-33.7,M,,0000*6C
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32 GPS定位 的相关文章

  • 计算小距离用什么公式

    Hy 我需要计算 2 个 GPS 点之间的距离 我读了这个问题计算地理邻近度的公式 https stackoverflow com questions 2096385 formulas to calculate geo proximity但
  • 谷歌地图可以根据小时分钟秒绘制点吗

    我正在尝试绘制以时分秒秒格式提供给我的 GPS 数据 GLatLng 会采用这种形式吗 还是我需要先转换它 很难在互联网上找到与此相关的任何内容 如果可以采用这种格式 我们将不胜感激 据我所知它不接受这种格式 但转换它真的很容易 只需计算一
  • 如何在android中离线获取纬度和经度?

    我想在 WiFi 和 Gps 关闭时获取当前位置 纬度和经度 可以从移动 SIM 网络获取纬度和经度 我在谷歌上搜索了更多 但没有得到满意的答案 从我昨天的经验来看question https stackoverflow com q 220
  • GPS坐标:一个点周围1平方公里

    我希望有人能给我提供一个方程来计算给定点周围 1 公里的平方 X 从 a aaa 到 b bbb Y 从 c ccc 到 c ccc 例如lat 53 38292839 and lon 6 1843984 我还需要围绕一个点 2 公里 5
  • GPS定位无服务

    我是一名新开发人员 有一个简单的问题 我已经四处搜索 但尚未找到明确的答案 简而言之 我正在开发一个需要能够使用 GPS 的应用程序 然而 诀窍是我想使用 GPS 来获取手机的位置 即使它们没有运营商服务 话虽如此 我有两个问题 是否可以通
  • 如何在 Android 中找到附近的应用程序用户?

    我正在制作一个应用程序 需要能够找到附近的人 他们是我的应用程序的用户 我看了很多类似问题的答案 似乎我别无选择 只能不断将用户的当前位置上传到服务器 并在必要时获取附近的用户列表 那么我的问题是 1 要获取附近的列表 应该有一些计算距离的
  • 设置模拟位置时 GPS 提供商未知错误?

    我正在尝试设置我的模拟位置 但是 我收到以下错误 提供商 gps 未知 并且不确定出了什么问题 我已经获得了在manifest xml 中声明的所有权限以及所有参数 模拟定位法 Initiates the method to set the
  • 使用 LocationManager 时,为什么打开 Wifi 但未连接有助于网络定位?

    这可能是偏离主题的 如果是这样 我道歉 并很高兴接受关闭标志 但我在弄清楚为什么 WIFI 打开但未连接到任何接入点 在我的 Android 设备上 时遇到问题 它vastly提高网络提供商使用时的准确性LocationManager 如果
  • React Native Android 位置请求超时

    在 IOS 中查找 GPS 坐标时没有问题 效果很好 Android 端不如 IOS 稳定 在真机和模拟器中都会出现这个问题 有时它可以找到位置 但有时却找不到 寻找了3天 但没有找到解决方案 当我的应用程序无法找到我的位置时 我尝试通过谷
  • 使用 GPS 获取 Android 手机的位置

    我还有一个关于基本 Android 编程的问题 如何访问 GPS 来获取运行应用程序的手机的当前位置 检索信息需要多长时间 在这种情况下 GPS 可能被禁用 如何再次启用 禁用它 必须在 andorid 清单中授予哪些权限 问候并感谢您的回
  • 哪些变量类型/大小在 STM32 微控制器上是原子的?

    以下是 STM32 微控制器上的数据类型 http www keil com support man docs armcc armcc chr1359125009502 htm http www keil com support man d
  • 在不改变我的位置的情况下获取当前位置的经度和纬度

    我可以找到当前位置的纬度和经度 但是这些数据在更改我的当前位置之前不会显示 我想在不更改我的位置的情况下获取当前位置的经度和纬度 package com example gps import android app Activity imp
  • 如何将timestamp_t转换为实际时间?

    我见过很多使用 time t 的例子 但 timestamp t 让我感到困惑 我正在做一个作业 我们需要打印出 GPS 数据 并且 GPS 设备返回一个类型 timestamp t 来表示它的时间戳和纪元时间 我尝试过使用 gmtime
  • 在没有互联网的情况下使用 Javascript 获取 GPS 位置 [重复]

    这个问题在这里已经有答案了 您好 如果设备具有 GPS 硬件 我们可以在没有互联网连接的情况下使用 JavaScript 获取 GPS 位置吗 请注意谁将其标记为重复 我需要 JavaScript 在没有互联网连接的情况下工作 并使用 GP
  • 如何将 GPS 数据从 Android 发送到网站?

    我是 Android 和 Web 服务开发新手 目前我正在开发Android程序 该程序将发送经度和纬度信息到asp net网站 以显示位置更改网站地图 问题是 如何将此数据发送到网站 最佳实践 对合适框架的任何建议 从Android应用程
  • 使用 Google 电子表格中的脚本从手机获取我的当前位置

    有没有办法使用 Google Apps 脚本从手机的 GPS 数据中获取我的当前位置 纬度和经度 最好是十进制形式 另外 是否可以打开和关闭 GPS 或者至少检测它是否打开或关闭 这是我尝试做的 我带着电动助力车去一些地方 在每个地方我都会
  • 当我的活动结束时,如何停止 GPS/位置跟踪?

    我有一个非常简单的 Android 应用程序 它显示 Google 地图视图并使用 GPS 跟踪位置 基本上像这样 public void onCreate Bundle savedInstanceState mLocationManage
  • requestLocationUpdates minTime 参数用途

    我正在创建一个应用程序 用于教育目的 它每 30 分钟记录一次用户的位置 并使用户能够查看地图上的所有位置 我不希望更新频率超过 30 分钟 但事实确实如此 这就是我的称呼requestLocationUpdates locationMan
  • 向 tk103 GPS 跟踪器发送命令

    我正在使用 php 开发实时 GPS 跟踪器 Web 应用程序 跟踪器参考号是tk103 我可以从跟踪器接收信息并将其存储到数据库中 设备的 GPRS 模式已启用 我的问题是 如何使用 php ini 将命令从服务器发送到设备 提前致谢 这
  • 使用 WGS84 椭球的距离

    考虑点 P1 60 N 20 E 0 和 P2 60 N 22 E 0 地球表面 当形状为 P1 和 P2 时 点 P1 和 P2 之间的最短距离是多少 地球是使用 WGS 84 椭球体建模的吗 不幸的是 文森蒂算法对于某些输入无法收敛 地

随机推荐

  • eggjs

    https editor csdn net md not checkout 61 1 amp spm 61 1001 2014 3001 4503 https blog csdn net weixin 42304193 article de
  • mini6410上HelloQt4运行出现libQtGui.so.4: cannot open shared的原因

    主要原因是在3 3 3节中 xff0c 编写的环境变量搭建文件setqt4env中设置路径不对 export LD LIBRARY PATH 61 xff08 看看有没有文件中的目录 xff09 应该改成你所在的qt4 7目录中的lib目录
  • VINS技术路线与代码详解

    VINS技术路线 写在前面 xff1a 本文整和自己的思路 xff0c 希望对学习VINS或者VIO的同学有所帮助 xff0c 如果你觉得文章写的对你的理解有一点帮助 xff0c 可以推荐给周围的小伙伴们 xff0c 当然 xff0c 如果
  • 用MicroPython开发ESP32- 用Thonny写程序

    陈拓 2022 06 11 2022 06 12 1 简介 在 用MicroPython开发ESP32 固件烧写与测试 https zhuanlan zhihu com p 527291091 https blog csdn net che
  • 单片机 stm32 接收数据和处理

    背景 1 单片机串口接收数据处理 xff0c 这个代码已经过很多项目验证 xff0c 没有问题 用这个代码帮了好几个同事解决数据接收久了就异常 2 这个代码做到接收和处理分开 避免不必要的处理逻辑问题 3 也可用于网口tcp xff0c u
  • odroid Xu4介绍

    Odroid xu4介绍 下面对这块开发板做一下简单的介绍 xff0c 共需要用到的人参考 从参数上来看 xff0c ODROID XU4的整体性能基本和目前的中端智能手机差不多 xff0c 它搭载了主频
  • OdroidXu4开发环境搭建

    OdroidXu4开发环境搭建 一 烧录镜像 1 SD卡烧录 首先准备一张至少16G的sd卡 镜像可以在官网 xff1a http odroid com dokuwiki doku php id 61 en odroid xu4 softw
  • 大小端:字节序与比特序

    https blog csdn net fzy0201 article details 26876711 https blog csdn net qq 40334837 article details 89042607 前言 前两天被问到一
  • VLC Buffering机制介绍

    一 简介 了解一定播放器知识的同学应该都知道 xff0c 播放器内部是有缓存的 xff08 非直播场景 xff09 缓存的作用主要是解决生产者和消费者速度的不匹配 xff0c 给用户更好的使用体验 例如 xff0c 在网络不稳定的情况下 x
  • Linux静态库和动态库学习总结

    一 废话 之前由于工作需要 xff0c 要封装一个Linux加密解密转换的动态库 xff0c 这个之前只做过Windows下面的 xff0c Linux下面还真没有做过 xff0c 之后做了整一个晚上才算做好 xff0c 不过其中也学到了不
  • UART的FIFO功能

    经常听到UART的FIFO功能 xff0c 但是从来没有真正使用过和认真思考过它的作用 正好有客户用到这个功能 xff0c 在这里做个总结 FIFO 是 First In First Out 的缩写 xff0c 它是一个具有先入先出特点的缓
  • 《C语言内核深度解析》笔记(3):指针才是C语言的精髓

    第03章 指针才是C语言的精髓 3 2 指针 int a 61 10 int p 61 amp a 指针变量p和普通变量之间没有本质区别 xff0c 都是变量空间放了一个数值 xff0c 只是p里面的数值比较特殊 xff0c 是a空间的地址
  • 相机针孔模型----从世界坐标系,到相机坐标系,再到图像物理坐标系,最后到图像像素坐标系的转换过程解析

    看了很多讲解针孔相机模型中从世界坐标系 gt 到相机坐标系 gt 图像坐标系的文章 xff0c 心里的疑惑也逐渐展开 xff0c 现在总结一下自己的理解 xff1a 世界坐标系 相机坐标系 图像物理坐标系 图像像素坐标系在我的另一篇博文里已
  • D1 R32 – ESP32+Arduino CNC Shield控制步进电机

    陈拓 2023 04 01 2023 04 05 1 简介 在 Arduino Uno开发板 43 电机驱动扩展版CNC Shield V3 0硬件说明 https blog csdn net chentuo2000 article det
  • pixhawk当中关于NMEA类型的gps数据处理流程

    1 启动跟新gps的数据的任务是在ArduCopter cpp中scheduler tasks中 调用的速度是50hz 2 通过执行update GPS方法中的 3 调转到ap gps cpp中的update方法中 4 在update中通过
  • C++Eigen库的配置和基本使用

    1 配置 1 下载 http bitbucket org eigen eigen get 3 2 5 tar bz2 2 配置 文件夹名字较长 xff0c 解压后可重命名 xff0c 如我命名为eigen3 xff0c 把D program
  • C++:extern "c"用法解析

    引言 C 43 43 保留了一部分过程式语言的特点 xff0c 因而它可以定义不属于任何类的全局变量和函数 但是 xff0c C 43 43 毕竟是一种面向对象的程序设计语言 xff0c 为了支持函数的重载 xff0c C 43 43 对全
  • 堆栈的作用,以及存放的数据

    在计算机领域 xff0c 堆栈是一个不容忽视的概念 xff0c 但是很多人甚至是计算机专业的人也没有明确堆栈其实是两种数据结构 堆栈都是一种数据项按序排列的数据结构 xff0c 只能在一端 称为栈顶 top 对数据项进行插入和删除 要点 x
  • STM32 姿态传感器mpu6050的使用

    文章目录 特性引脚说明使用I2C软件 xff0c 驱动mpu6050手册中寄存器描述MPU6050初始化的步骤 xff1a 数据读取mpu6050输出的值 特性 MPU6050 xff0c 能同时检测三轴加速度 三轴陀螺仪 三轴角速度 的运
  • STM32 GPS定位

    文章目录 ATGM332D简介特性引脚接入串口通信NMEA 协议解析串口输出nmealib在linux下使用 ATGM332D简介 高性能 低功耗 GPS 北斗双模定位模块 特性 特性说明基本功能三维位置定位 经纬度 海拔 xff0c 测速