问题标签 [nmea]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - onNmeaReceived 的任何替代方案?
我编写了一个使用 NMEA 数据的应用程序,由 NmeaListener 提供。此应用程序可在以下设备上完美运行:
- 华硕 Nexus 7,安卓 4.1.1
- 三星 Nexus S,安卓 4.1.2
- 索尼爱立信 Xperia Mini,Android 2.3.4
- 索尼爱立信 Xperia X10 Mini,Android 2.1.1
在所有这些设备上,调用 onNmeaReceived() 没有问题。
但在低成本设备上
- 华为/沃达丰 858,安卓 2.2.2
onNmeaReceived() 根本没有被调用。至少 onLocationChanged() 在所有设备上被调用,包括华为。但我不需要位置,我需要 NMEA 数据。
那么,我能做些什么呢?
在此先感谢您的帮助!
android - 在 Android 2.3 中解析 NMEA 数据
我正在尝试从连接到我的 Android 2.3 平板电脑的蓝牙 gps 设备获取数据。目前,我可以使用 Android 蓝牙堆栈将其配对并从已创建的串行设备中读取。现在我有很多来自 gps 的 NMEA 数据...我尝试集成一小段 Java 代码来解析这些字符串,但我想知道 Android 框架中是否已经有类似的东西可用. 我只需要知道纬度/经度和指南针方向。谢谢!
c++ - 如何在我的程序中检测 GPS 设备所连接的端口(C/C)
我正在编写一个程序来绘制路线。有没有办法找出 GPS 设备连接的端口?我现在可以列出所有可用的端口。但最好列出 GPS 设备端口。
c++ - gpsd客户端数据缓冲区
我正在开发一个 C++ 应用程序,它应该使用 gpsd 检索收到的 $GPGGA 类型的 NMEA 语句。这个想法是大约每秒从 gpsd 读取一次并解析最后收到的 $GPGGA 句子,提取我感兴趣的两个字段:质量指标和参考站 ID。我使用了 C++ libgpsmm 库,定期调用 togpsmm::read()
和 to gpsmm::data()
,直接访问客户端数据缓冲区。
起初,我使用 gpsfake 和伪造的 GPS 日志进行了几次测试(指定 gpsfake 选项“-c 0.5”,以便每秒有两个句子)。当两次请求 gpsd 之间的时间小于或等于 400ms 时,结果正常。如果我尝试更长的时间,结果是出乎意料的,每次阅读一段 NMEA 句子,其中包含大量重复数据以及一些截断的句子。当我尝试使用每秒写入约 40 个句子的真正 GPS 时,情况变得更糟:在这种情况下,读取之间的时间应该是 10 毫秒或更短,以便获得正确的结果。
以下是打印接收到的 NMEA 语句的更简单程序。它运行良好,与模拟甚至与真正的 GPS 一起使用。但是如果我取消注释 usleep() 调用,这使得程序每秒检查一次缓冲区,客户端数据缓冲区不会给出合理的结果。
这是注释了 usleep() 调用的输出(即不断读取数据):
这是注释行时的输出(即每秒检查一次缓冲区):
有什么建议吗?起初,我试图直接分析gps_data_t
结构,但与在 NMEA 语句中的搜索相比,在结构的所有字段中,这样识别质量指标和参考站 ID 似乎更难。
gps - 无法使用蓝牙 GPS 等安卓设备
我想将我的安卓手机(ICS 4.0.1)像蓝牙 GPS 一样与我的树莓派一起使用。我目前的分发是 raspbian。我尝试了 Google Play 中的几个应用程序,但最后我选择了 blueNmea。它创建一个 RFCOM/L2CAP 通道以在蓝牙流上广播 GPS 位置。
当我浏览树莓派上可用的蓝牙服务时,我看到了 blueNmea RFCOM/L2CAP 通道。但是当我尝试使用频道时,出现“无效交换”错误
我尝试了两种使用该服务的方法,使用 rfcomm 命令和使用 pybluez 包装器。两种方式都会出现同样的错误。
我认为 blueNmea 没有看到 rasperrry,因此不会发送 nmea 数据。blueNmea 应用程序有一个“已连接的客户端”列表,而树莓派从未出现在此列表中。
我也尝试将两个设备配对在一起,但没有区别。
也可以在 TCP/IP 连接上使用 blueNmea,我用我的笔记本进行了测试,它工作正常。
谢谢。
windows - NMEA 数据已收到但为空。有什么秘密吗?
我有一个平板电脑“Futjitsu Stylistic Q550”。它在 Windows 7(不是手机!)上运行。它有一个内置的 GPS 接收器“Sierra Wireless”。我需要从 COM 端口解析 NMEA 数据。我可以做到,但它总是空的!像“$GPRMC,,V,,,,,,,,,,N*53”。我已经尝试站在开放空间很长时间(所以我的 Android 设备通过 GPS 定位了我很长时间)但 NMEA 数据仍然是空的。所以我想GPS是关闭的。但我不知道如何弄清楚。我尝试发送到 COM 端口 $PARAM,START,0*61 但没有任何变化。我尝试将 SIM 卡插入设备,正如一个论坛上所建议的那样,但结果是一样的。那么 GPS 是否可能处于空闲状态或其他原因,或者它只是不工作?如果它空闲或关闭,我该如何启用它?
而且..这看起来很奇怪,但是 GSV 枚举了卫星,但每个人仍然没有数据,例如:$GPGSV,4,1,16,32,,,,11,,,,23,,,*78
android - android nmea速度的来源
我正在构建一个小型游艇赛车应用程序来测量我的逆风速度,速度相对较低,在 6-10 节范围内,并且固有的 GPS 位置误差导致报告速度的显着波动(这就是为什么我我会努力而不是使用手持 GPS 单元)。
因此,我试图通过使用 $GPRMC 语句中的 NMEA 纬度/经度和时间计算对 onNmeaReceived 事件(默认情况下发生在 1000 毫秒)的 5 次和 10 次调用的较长时间段内的速度来消除错误.
在将 NMEA 报告的速度与自上次事件以来计算的速度进行比较时,我发现它们有很大不同,所以我想知道 $GPRMC 句子中提供的 NMEA 速度是如何计算的?可能的答案可能是
- 从 GPS 多普勒速度推断?
- 计算为前一秒的距离/时间?
- 或者是其他东西....?
该文档对此事完全保持沉默。
使用安卓 4.0.3 三星 SGS 11
nmea - 我应该使用哪个 NMEA 句子
我正在使用的 GPS 输出多个 NMEA 语句,可用于定位数据。(GPGGA 和 GPRMC)。我有理由使用一个而不是另一个吗?我应该检查它们并比较数据吗?我可以随便挑一个来用吗?
在这一点上,我只对纬度/经度和时间感兴趣。
如果不清楚我在问什么,请告诉我,我会尽力澄清。
android - 阅读 Android 1.6 中的 NMEA 语句?
有没有办法在 Android 1.6 中阅读 NMEA 句子?我看到 GpsStatus.NmeaListener 需要 API 级别 5 或更高级别,但我希望有人知道在级别 4 上执行此操作的聪明方法。
gps - 这个 GPGSV 句子有效吗?
在解析 GPS 接收器的 NMEA 输出时,我得到以下几行:
据我了解,来自网络上的各种来源(例如这里),这是错误的。根据第 3 个数字,应该有 16 颗卫星,这对于我之前遇到的所有 GPS 接收器都是如此,但是这句话中的句子只包含 13 颗卫星的数据。
这是一个错误吗?还是我错误地阅读了规范?