gpt4 book ai didi

unix - 使用gpsd或cgps返回纬度和经度,然后退出

转载 作者:行者123 更新时间:2023-12-03 18:35:30 26 4
gpt4 key购买 nike

我想要一种简单的方法来从UNIX命令行从USB加密狗查询我的GPS位置。

现在,我知道我有一个运行正常的软件和硬件系统,cgps命令在显示我的位置方面的成功证明了这一点。现在,我希望能够从命令行对我的gps位置进行简短请求(纬度,十进制长)。我的USB序列号为/dev/ttyUSB0,我使用的是Global Sat软件狗,它输出通用的NMEA语句

我该怎么做?

谢谢

最佳答案

telnet 127.0.0.1 2947

?WATCH={"enable":true}

?POLL;

给您答案,但是您仍然需要将小麦与谷壳分开。它还假定gps并非来自冷启动。

可以称为简短脚本,例如;

#!/bin/bash
exec 2>/dev/null
# get positions
gpstmp=/tmp/gps.data
gpspipe -w -n 40 >$gpstmp"1"&
ppid=$!
sleep 10
kill -9 $ppid
cat $gpstmp"1"|grep -om1 "[-]\?[[:digit:]]\{1,3\}\.[[:digit:]]\{9\}" >$gpstmp
size=$(stat -c%s $gpstmp)
if [ $size -gt 10 ]; then
cat $gpstmp|sed -n -e 1p >/tmp/gps.lat
cat $gpstmp|sed -n -e 2p >/tmp/gps.lon
fi
rm $gpstmp $gpstmp"1"


这将导致输出40个句子,然后将 grep纬度/经度输出到临时文件,然后进行清理。

或者,从 GPS3 github repository将alpha gps3.py与以下Python2.7-3.4脚本放在同一目录中并执行。

from time import sleep
import gps3

the_connection = gps3.GPSDSocket()
the_fix = gps3.DataStream()

try:
for new_data in the_connection:
if new_data:
the_fix.refresh(new_data)
if not isinstance(the_fix.TPV['lat'], str): # check for valid data
speed = the_fix.TPV['speed']
latitude = the_fix.TPV['lat']
longitude = the_fix.TPV['lon']
altitude = the_fix.TPV['alt']
print('Latitude:', latitude, 'Longitude:', longitude)
sleep(1)
except KeyboardInterrupt:
the_connection.close()
print("\nTerminated by user\nGood Bye.\n")


如果您希望它在一次迭代后也关闭,请 import sys然后将 sleep(1)替换为 sys.exit()

关于unix - 使用gpsd或cgps返回纬度和经度,然后退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28387230/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com