如何将GPS位置打印到标准输出(Ubuntu 16.04/18.04)?
我是一个在Linux上使用GPS设备的新手 我有一个如何将GPS位置打印到标准输出(Ubuntu 16.04/18.04)?,gps,ubuntu-16.04,ubuntu-18.04,nmea,gpsd,Gps,Ubuntu 16.04,Ubuntu 18.04,Nmea,Gpsd,我是一个在Linux上使用GPS设备的新手 我有一个GlobalSat G-STAR IVUSB设备,我只想将GPS位置(纬度、经度)打印到标准输出。我怎样才能做到这一点?我正在阅读有关gpsd的文章,但不确定如何获取实际位置。文档似乎很旧 有什么常用的工具吗 似乎是 $ sudo stty -F /dev/ttyUSB0 4800 $ sudo cat /dev/ttyUSB0 我可以从设备读取一些NMEA(?)数据: $GPGGA,113935.199,,,,,0,00,,,M,0.0,M
GlobalSat G-STAR IV
USB设备,我只想将GPS位置(纬度、经度)打印到标准输出。我怎样才能做到这一点?我正在阅读有关gpsd的文章,但不确定如何获取实际位置。文档似乎很旧
有什么常用的工具吗
似乎是
$ sudo stty -F /dev/ttyUSB0 4800
$ sudo cat /dev/ttyUSB0
我可以从设备读取一些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
我仍然没有看到应该包含位置的$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!
我已经杀死了所有
gpsd
实例并删除了套接字,但仍然得到了..您从sudo cat/dev/ttyUSB0发布的输出是您对GPS模块的期望,该模块没有(尚未)修复,即它没有足够的信息来计算其当前位置(+其他信息)
这些信息提供的唯一信息是一天中的当前时间、11h39m35s等。在您从GPS模块收到的信息中,不仅$GPGLL
信息可以告诉您您的位置,还可以告诉您确实收到的$GPGGA
和$GPRMC
信息。如果您的模块有修复程序,您将不会在一行中看到几个逗号,而是在它们之间看到实际值。有关不同消息格式的更多详细信息,请参见本页 丢失GPS定位的可能根本原因是什么(假设您的硬件+天线正常)?
- 您刚开始使用这个刚从工厂出来的模块,需要一些时间来掌握它的坐标。这种全新设备的安装时间最长可达15分钟
- 模块所在位置的GPS信号强度不够强
- 确保在您所在的位置,来自卫星的GPS信号足够强。最好是搬到户外
- 如果您的模块以前从未进行过修复,请给您的模块一些时间。最多等待20分钟
systemctl status gpsd.service
systemctl status gpsd.socket
如果激活,
gpsd
deamon将通过串行接口读取GPS数据,并通过特定端口(默认:端口2947)上的套接字将其提供给其他应用程序。在这种情况下,串行监视器无法再访问串行端口。您从sudo cat/dev/ttyUSB0发布的输出是您对GPS模块的期望,该模块没有(尚未)固定,即它没有足够的信息来计算其当前位置(+其他信息)
这些信息提供的唯一信息是一天中的当前时间、11h39m35s等。在您从GPS模块收到的信息中,不仅$GPGLL
信息可以告诉您您的位置,还可以告诉您确实收到的$GPGGA
和$GPRMC
信息。如果您的模块有修复程序,您将不会在一行中看到几个逗号,而是在它们之间看到实际值。有关不同消息格式的更多详细信息,请参见本页 丢失GPS定位的可能根本原因是什么(假设您的硬件+天线正常)?
- 您刚刚开始使用这个模块,刚从工厂,它需要一些时间来获得它的坐标。这种全新设备的安装时间最长可达15分钟
- 模块所在位置的GPS信号强度不够强
- 确保在您所在的位置,来自卫星的GPS信号足够强。最好是搬到户外
- 如果您的模块以前从未进行过修复,请给您的模块一些时间。最多等待20分钟
systemctl status gpsd.service
systemctl status gpsd.socket
如果激活,
gpsd
deamon将通过串行接口读取GPS数据,并通过特定端口(默认:端口2947)上的套接字将其提供给其他应用程序。在这种情况下,串行监视器无法再访问串行端口。使该设备工作的步骤包括:
# Switch the device to NMEA mode
sudo gpsctl -f -n /dev/ttyUSB0
# Set baudrate to 4800
sudo stty -F /dev/ttyUSB0 4800
# Start gpsd
gpsd -S 4000 /dev/ttyUSB0
现在创建一个到localhost:4000
的TCP/IP套接字连接,并说?WATCH={“enable”:true,“json”:true}代码>或使用libgps
等:
使该设备工作的步骤包括:
# Switch the device to NMEA mode
sudo gpsctl -f -n /dev/ttyUSB0
# Set baudrate to 4800
sudo stty -F /dev/ttyUSB0 4800
# Start gpsd
gpsd -S 4000 /dev/ttyUSB0
现在创建一个到localhost:4000
的TCP/IP套接字连接,并说?WATCH={“enable”:true,“json”:true}代码>或使用libgps
等:
joaquin@hamradio:~$sudo gpsctl-f-n/dev/ttyUSB0
gpsctl:ERROR:SER:/dev/ttyUSB0已由另一个进程打开
很抱歉出现了不完整的评论。只是想澄清一下:同一个GPS,用sudo stty-F/dev/ttyUSB0 4800
获取数据,但是sudo gpsctl…
如上所示失败检查该设备上是否已经运行了gpsd
?它已停止。我运行了sudo killall gpsd
。顺便说一句,这是Ubuntu20.04,如果在两天的战斗后运行。谢谢你的帮助。只需a)启动Ubuntu b)连接gps c)运行答案中指定的步骤。joaquin@hamradio:~$sudo gpsctl-f-n/dev/ttyUSB0
gpsctl:ERROR:SER:/dev/ttyUSB0已由另一个进程打开sudo stty-F/dev/ttyUSB0 4800
获取数据,但是sudo gpsctl…
如上所示失败检查该设备上是否已经运行了gpsd