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

时间:2015-03-29 18:55:25

标签: gps raspberry-pi tty gpsd

我有一个通过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或类似的东西获得修复?

2 个答案:

答案 0 :(得分:7)

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

如果您正在使用Rasbian或某些基于apt的软件包系统,最好将其配置为sudo dpkg-reconfigure gpsd以避免并发症(tyqos),但这不是必需的。我们有偏好,但你可能没有,

  • autostart,
  • -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的位置来检查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.txtgpsmon /dev/ttyUSB0 >gps_dump.txt,但有更优雅的解决方案。)

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

如果您已杀死gpsd,或者没有自动神奇地启动,请确保它与sudo /etc/init.d/gpsd restart一起运行

除非您使用奇数硬件执行奇怪操作大多数情况,否则会在这些设置中使用gpsd吐出数据,从而无需进行诊断设置。

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

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

最后,一个无耻的插件Python client for gpsd (gps3.py)作为从gpsd访问数据的方法。它仍然是阿尔法,但它并没有导入历史残余。

答案 1 :(得分:0)

您可能绑定到错误的序列号。通过导航至以下文件夹(未插入设备)来发现GPS设备的序列号,然后在插入设备后刷新。

cd /dev/
ls

我的设备称为“ ttyACM0”

安装必需的软件包。

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

停止守护程序

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

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

vim /lib/systemd/system/gpsd.socket

将127.0.0.1更改为0.0.0.0

停止GPSD服务

sudo kilall gpsd

绑定服务到串行设备

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

显示GPS数据

gpsmon

此视频逐步显示了您要寻找的东西。

如何在RaspberryPi上安装GPS

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