GPSD 没有得到很好的修复

GPSD not getting a good fix

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

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

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

我获得了完整的数据读数;纬度、经度、卫星、高度、分机号

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

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

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"

这种方法的主要障碍是 gpsd 在这种方式下 运行 是它会抢先获取 gps。尝试独立和直接访问设备 /dev/whatever 将因繁忙而失败。

如果你想走那条路,无论出于什么原因,在做任何其他事情之前,确保 gpsd 不是 运行。

sudo killall gpsd

并移除 gpsd 可能留下的任何插座,

sudo rm /var/run/gpsd.sock

通过附加 GPS 并使用 dmesg | tail 跟踪它的去向来检查 GPS 的位置。它看起来像

[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

然后您可以使用 sudo cat /dev/ttyUSB1...或其他任何方式检查输出,但您可以使用 gpsd 运行 来执行此操作。 (您也可以将其放入文本文件 sudo cat /dev/ttyUSB1 > gps_dump.txt 或您的 gpsmon /dev/ttyUSB0 >gps_dump.txt,但还有更优雅的解决方案。)

混淆的另一面是 gpsd 没有 gps 输出,因为它不是 运行 或未配置 'properly'。 (关闭、未启动或指向错误的设备)。一些应用程序会告诉您它不是 运行,许多应用程序只是静静地坐着,没有任何数据。我知道 none 会告诉您 gpsd 已被手动设置为错误的设备。

如果您关闭了 gpsd,或者没有让它自动神奇地启动,请确保它是 运行 sudo /etc/init.d/gpsd restart

除非你用奇怪的硬件做一些奇怪的事情大多数案例将在这些设置中使用 gpsd 吐回数据,而无需进行诊断设置。

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

远程登录到 gpsd,虽然很有趣,但与其他诊断一样,是另一层诊断。

最后,一个无耻的插件 Python client for gpsd (gps3.py) 作为从 gpsd 访问数据的手段。它仍然是 alpha,但它不会导入历史问题。

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

cd /dev/
ls

我的设备名为"ttyACM0"

安装必要的软件包。

sudo apt-get install gpsd gpsd-clients python-gps

停止守护进程

sudo systemctl stop gpsd.socket
sudo systemctl disable gpsd.socket

将服务公开到 public 端口和本地主机

vim /lib/systemd/system/gpsd.socket

将 127.0.0.1 更改为 0.0.0.0

停止 GPSD 服务

sudo killall gpsd

将服务绑定到串口设备

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

显示 GPS 数据

gpsmon

此视频逐步展示了如何完成您正在寻找的事情。

如何在树莓派上安装GPS

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