juz*_*lin 2 gps nmea gpsd ubuntu-16.04 ubuntu-18.04
我对 Linux 上的 GPS 设备完全是新手。
我有一个GlobalSat G-STAR IVUSB 设备,我只想将 GPS 位置(纬度、经度)打印到标准输出。我怎样才能做到这一点?我正在阅读有关 的内容gpsd,但不确定如何获取实际位置。该文档似乎很旧。
有什么常用工具等吗?
看来与
$ sudo stty -F /dev/ttyUSB0 4800
$ sudo cat /dev/ttyUSB0
Run Code Online (Sandbox Code Playgroud)
我可以从设备读取一些 NMEA(?) 数据:
$GPGGA,113935.199,,,,,0,00,,,M,0.0,M,,0000*5B
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPRMC,113935.199,V,,,,,,,100918,,,N*41
$GPGGA,113936.186,,,,,0,00,,,M,0.0,M,,0000*56
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPRMC,113936.186,V,,,,,,,100918,,,N*4C
$GPGGA,113937.185,,,,,0,00,,,M,0.0,M,,0000*54
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPRMC,113937.185,V,,,,,,,100918,,,N*4E
$GPGGA,113938.200,,,,,0,00,,,M,0.0,M,,0000*55
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
Run Code Online (Sandbox Code Playgroud)
我仍然看不到$GPGLL应该包含该位置..?
编辑:我也明白了:
$ sudo gpsd /dev/ttyUSB0 -N
gpsd:ERROR: can't bind to IPv4 port gpsd, Address already in use
gpsd:ERROR: maybe gpsd is already running!
gpsd:ERROR: can't bind to IPv6 port gpsd, Address already in use
gpsd:ERROR: maybe gpsd is already running!
Run Code Online (Sandbox Code Playgroud)
我已经杀死了所有gpsd实例并删除了套接字,但仍然得到了..
小智 5
您发布的输出sudo cat /dev/ttyUSB0是您对 GPS 模块的期望,该模块(尚未)没有修复,即它没有足够的信息来计算其当前位置(+其他信息)。
消息提供的唯一信息是一天中的当前时间、11 小时 39 分 35 秒等。在您从 GPS 模块收到的消息中,该消息不仅$GPGLL可以告诉您您的位置,还可以告诉您您确实收到的消息$GPGGA。$GPRMC如果您的模块有修复,您将不会看到连续的几个逗号,而是看到中间的实际值。
有关不同消息格式的更多详细信息,请参阅此概述中找到。
缺少 GPS 修复的可能根本原因是什么(假设您的硬件 + 天线都正常)?
因此我的建议是:
全球定位系统:
GPSD(如果已安装)通常会在您插入 GPS 模块时自动启动。您可以使用以下命令检查当前状态
systemctl status gpsd.service
systemctl status gpsd.socket
Run Code Online (Sandbox Code Playgroud)
如果处于活动状态,gpsd守护进程会读出通过串行接口传入的 GPS 数据,并通过特定端口(默认:端口 2947)上的套接字将其提供给其他应用程序。在这种情况下,串行监视器将无法再访问串行端口。
| 归档时间: |
|
| 查看次数: |
4317 次 |
| 最近记录: |