GPSD没有得到很好的解决方案

A_r*_*i11 2 gps tty gpsd raspberry-pi

我有一个通过USB连接到Raspberry Pi的GPS模块.

出于某种原因,我似乎无法使用以下方法获得修复:

CGPS

它似乎没有得到修复并终止.

我也尝试过:

sudo killall gpsd

sudo gpsd/dev/ttyUSB0 -F /var/run/gpsd.sock

然后再次尝试cgps,但这似乎也不起作用.

我甚至尝试过:

sudo nano/etc/default/gpsd

并改变了这条线:

GPSD_OPTIONS = ""

至:

GPSD_OPTIONS = "的/ dev/ttyACM0"

这显然适用于网络上的其他人,但重启后,这也不起作用.

但出于某种原因我做的时候:

gpsmon/dev/ttyUSB0

我得到了完整的数据读数; lat,lon,Sats,altitude,ext.

有没有办法将gpsmon /dev/ttyUSB0句子输出到文本文件?

另外,为什么我不能使用cgps或类似的东西获得修复?

Nod*_*dak 8

gpsd是一个简化gps使用的漂亮应用程序,但它可能有点令人困惑.

如果您使用的是Rasbian或某些apt基于包的系统,最好配置它sudo dpkg-reconfigure gpsd以避免并发症(tyqos),但不是必需的.我们有偏好,但您可能没有,

  • 自动开启,
  • -n 不要等待客户
  • -G 听所有地址,
  • -b 破坏设备安全模式,和
  • 自动查找

结果配置文件看起来像

# Default settings for gpsd.
# Please do not edit this file directly - use `dpkg-reconfigure gpsd'  to
# change the options.
START_DAEMON="true"
GPSD_OPTIONS="-n -G -b"
DEVICES=""
USBAUTO="true"
GPSD_SOCKET="/var/run/gpsd.sock"
Run Code Online (Sandbox Code Playgroud)

当gpsd以这种方式运行时,使用这种方法的主要障碍是它会在你可以之前抓住gps.尝试独立并直接访问设备/dev/whatever将因繁忙而失败.

如果您希望在执行任何其他操作之前,无论出于何种原因,请确保gpsd未运行.

sudo killall gpsd

并删除gpsd可能留下的任何套接字,

sudo rm /var/run/gpsd.sock

通过附加gps并跟踪gps的位置来检查gps的位置dmesg | tail.它看起来像

[67338.935645] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[67338.935650] usb 1-1.2: Product: USB-Serial Controller
[67338.935653] usb 1-1.2: Manufacturer: Prolific Technology Inc.
[67338.936154] pl2303 1-1.2:1.0: pl2303 converter detected
[67338.937953] usb 1-1.2: pl2303 converter now attached to ttyUSB1
[67339.806917] pl2303 ttyUSB1: usb_serial_generic_read_bulk_callback - urb stopped: -32
[67339.807306] pl2303 ttyUSB1: usb_serial_generic_read_bulk_callback - urb stopped: -32
[67340.018016] pps_ldisc: PPS line discipline registered
[67340.018321] pps pps0: new PPS source usbserial1
[67340.018330] pps pps0: source "/dev/ttyUSB1" added
Run Code Online (Sandbox Code Playgroud)

然后你可以检查输出sudo cat /dev/ttyUSB1...或者其他什么,但是你可以用gpsd运行来做.(您也可以将其转换为文本文件sudo cat /dev/ttyUSB1 > gps_dump.txt,或者您的gpsmon /dev/ttyUSB0 >gps_dump.txt,但有更优雅的解决方案.)

困惑的另一面是没有来自gpsd的gps输出,因为它没有运行或"正确"配置.(关闭,未启动或指向错误的设备).一些应用程序会告诉你它没有运行,许多应用程序只是静静地坐着而没有任何数据.我知道没有人会告诉你gpsd被手动设置为错误的设备.

如果你杀了GPSD,或没有它自动神奇地启动,确保其与运行sudo /etc/init.d/gpsd restart

除非你用奇怪的硬件做一些奇怪的事情,否则大多数情况下会在这些设置中用gpsd吐回数据,而不需要诊断设置.

但是,cgps如果没有修复,请记住会超时.检查你的skyview和Time To First Fix.xgps另一方面,对于失败更具弹性,并提供数据缺失或质量的线索.如果你有一个X服务器,xgps实际上我的首选测试是"它是否正常工作".如果你不这样做,但你的Pi在网络上(xgps 192.168.0.6或者其他什么,因为其他机器安装了gpsd-client).另一种选择是ssh -X user@192.168.0.6然后执行xgps)

有趣的是,进入gpsd是另一种层次诊断,与其他人一样.

最后,gpsd(gps3.py)Python客户端的无耻插件是从gpsd访问数据的手段.它仍然是阿尔法,但它不会导入历史残余.


Tim*_*ody 5

您可能绑定到错误的序列号。您可以在未插入设备的情况下导航到下面的文件夹,然后在插入设备的情况下刷新,从而找到 GPS 设备的序列号。

cd /dev/
ls
Run Code Online (Sandbox Code Playgroud)

我的设备叫做“ttyACM0”

安装必需的软件包。

sudo apt-get install gpsd gpsd-clients python-gps
Run Code Online (Sandbox Code Playgroud)

停止守护进程

sudo systemctl stop gpsd.socket
sudo systemctl disable gpsd.socket
Run Code Online (Sandbox Code Playgroud)

将服务暴露给公共端口和本地主机

vim /lib/systemd/system/gpsd.socket
Run Code Online (Sandbox Code Playgroud)

将 127.0.0.1 更改为 0.0.0.0

停止 GPSD 服务

sudo killall gpsd
Run Code Online (Sandbox Code Playgroud)

将服务绑定到串口设备

sudo gpsd /dev/ttyACM0 -F /var/run/gpsd.sock
Run Code Online (Sandbox Code Playgroud)

显示 GPS 数据

gpsmon
Run Code Online (Sandbox Code Playgroud)

该视频逐步展示了如何执行您正在寻找的操作。

如何在树莓派上安装 GPS

https://www.youtube.com/watch?v=A1zmhxcUOxw