我目前运行两个覆盆子π,让我们称之为工作pi和非工作PI。
工作PI
单元从原来的Wheezy发行版升级到这个版本的Jessie。以前在Wheezy下有一个TL-WN725N无线连接,但是在Jessie升级之后,这个无线连接变得无法操作。
非工作π
f 225
两个pi的共同点是:
使用gpsmon /dev/ttyAMA0 0命令运行U-Blox6gps chipsets.
问题最终目标是让两个pi使用python记录全球定位系统数据。要做到这一点,似乎(据我所能收集的)必须有一个gpsd套接字运行。这可以用cgps -s进行验证。这在工作PI中是功能性的,但是在非工作pi中失败。
我已经在两个pi中使用以下命令启动了gpsd服务
sudo /dev/ttyAMA0 -b -N -D 3 -n -F /var/run/gpsd.sock
在工作PI中,该命令被接受,cgps -s正确运行。此外,还提供了以下资料:
$ sudo netstat -ltnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN 498/ser2net
tcp 0 0 0.0.0.0:2000 0.0.0.0:* LISTEN 498/ser2net
tcp 0 0 0.0.0.0:2001 0.0.0.0:* LISTEN 498/ser2net
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 452/sshd
tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN 369/inetd
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN 498/ser2net
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 769/exim4
tcp 0 0 0.0.0.0:3001 0.0.0.0:* LISTEN 498/ser2net
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 814/0
tcp 0 0 127.0.0.1:6011 0.0.0.0:* LISTEN 20461/2
tcp 0 0 127.0.0.1:6012 0.0.0.0:* LISTEN 6177/5
tcp 0 0 127.0.0.1:6013 0.0.0.0:* LISTEN 6236/7
tcp 0 0 127.0.0.1:2947 0.0.0.0:* LISTEN 8609/gpsd
tcp6 0 0 :::22 :::* LISTEN 452/sshd
tcp6 0 0 ::1:25 :::* LISTEN 769/exim4
tcp6 0 0 ::1:6010 :::* LISTEN 814/0
tcp6 0 0 ::1:6011 :::* LISTEN 20461/2
tcp6 0 0 ::1:6012 :::* LISTEN 6177/5
tcp6 0 0 ::1:6013 :::* LISTEN 6236/7
tcp6 0 0 ::1:2947 :::* LISTEN 8609/gpsd这正是我所期望的: gpsd服务正在使用IPv4和IPv6 2947套接字。
现在,对于不工作的pi:
$ sudo gpsd /dev/ttyAMA0 -b -N D 3 -n -F /var/run/gpsd.sock
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!响应netstat命令:
$ sudo netstat -ltnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:2947 0.0.0.0:* LISTEN 1/init
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN 564/ser2net
tcp 0 0 0.0.0.0:2000 0.0.0.0:* LISTEN 564/ser2net
tcp 0 0 0.0.0.0:2001 0.0.0.0:* LISTEN 564/ser2net
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 477/sshd
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN 564/ser2net
tcp 0 0 0.0.0.0:3001 0.0.0.0:* LISTEN 564/ser2net
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 882/0
tcp6 0 0 ::1:2947 :::* LISTEN 1/init
tcp6 0 0 :::22 :::* LISTEN 477/sshd
tcp6 0 0 ::1:6010 :::* LISTEN 882/0显然,init服务正在使用IPv4和IPv6 2947套接字(我是RF硬件人员,而不是软件人员,但这听起来像是操作系统正在控制端口)。
我比较了两个pi之间的下列文件,发现它们是相同的:
/lib/systemd/system/gpsd.socket
/lib/systemd/system/gpsd.service
/etc/default/gpsd在过去的两周里,我对这个网站和其他网站进行了梳理,并尝试了在那里提出的解决方案(但没有结果)。这似乎是一个不寻常的问题。我欢迎任何帮助,但我的三个主要问题是:
。
我没有主意了。
我不太确定我是应该添加评论,编辑帖子,还是回答问题。针对LARSKS的第一个答复:
我会分别记录每一个圆周率。
非工作π
重新启动pi时:
$ systemctl is-enabled gpsd.socket
enabled
$ systemctl is-enabled gpsd.service
staticcgps -s或cgps仍然不能工作(超时)
不过,看来套接字和服务是存在的。所以,我试着打电话到2947端口:
$ sudo telnet localhost 2947
Trying ::1...
Connected to localhost.
Escape character is '^]'.
{"class":"VERSION","release":"3.11","rev":"3.11-3","proto_major":3,"proto_minor":9}
?WATCH={"enable":true, "json"}
{"class":"DEVICES","devices":[]}
{"class":"WATCH","enable":true,"json":false,"nmea":false,"raw":0,"scaled":false,"timing":false,"split24":false,"pps":false}
^]
telnet> quit
Connection closed.连接刚刚挂起。
gpsmon /dev/ttyAMA0 0仍然正常工作。
工作PI
$ systemctl is-enabled gpsd.socket
disabled
$ systemctl is-enabled gpsd.service
static这正是我所期望的,所以我试图像以前一样开始这项服务:
$ sudo gpsd /dev/ttyAMA0 -b -N D 3 -n -F /var/run/gpsd.sock
gpsd:ERROR: device open failed: No such file or directory - retrying read-only
gpsd:ERROR: read-only device open failed: No such file or directory
gpsd:ERROR: initial GPS device D open failed
gpsd:ERROR: device open failed: No such file or directory - retrying read-only
gpsd:ERROR: read-only device open failed: No such file or directory
gpsd:ERROR: initial GPS device 3 open failed
gpsd:ERROR: device open failed: No such file or directory - retrying read-only
gpsd:ERROR: read-only device open failed: No such file or directory
gpsd:ERROR: D: device activation failed.
gpsd:ERROR: device open failed: No such file or directory - retrying read-only
gpsd:ERROR: read-only device open failed: No such file or directory
gpsd:ERROR: 3: device activation failed.
gpsd:ERROR: device open failed: No such file or directory - retrying read-only
gpsd:ERROR: read-only device open failed: No such file or directory
gpsd:ERROR: D: device activation failed.
gpsd:ERROR: device open failed: No such file or directory - retrying read-only
gpsd:ERROR: read-only device open failed: No such file or directory
gpsd:ERROR: 3: device activation failed.
^Z
[1]+ Stopped sudo gpsd /dev/ttyAMA0 -b -N D 3 -n -F /var/run/gpsd.sock现在不一样了。事实上,当我尝试运行cgps时,我只会得到一个空白屏幕。以前我会得到一张空桌子,但现在什么也没有。
当我尝试运行gpsmon /dev/ttyAMA0 0时,我得到:
$ gpsmon /dev/ttyAMA0
gpsmon:ERROR: device open failed: Device or resource busy - retrying read-only
gpsmon:ERROR: read-only device open failed: Device or resource busy
gpsmon: activation of device /dev/ttyAMA0 failed, errno=16 (Device or resource busy)但是,如果我重新启动,gpsmon /dev/ttyAMA0 0将返回到正常操作。
作为脚注:
$ systemctl enable --now gpsd.socket
systemctl: unrecognized option '--now'作为一般观察,gpsmon /dev/ttyAMA0 0命令可以工作,因为我只是通过串口将NMEA消息流到屏幕上。
cgps (或python代码)无法工作,因为套接字和或服务不能工作。
发布于 2022-10-12 22:41:23
您试过使用gpsd的不同端口吗?使用-S标志指定端口。
https://stackoverflow.com/questions/68231444
复制相似问题