python - 使用 python-gps 从 gpsd/gpsfake 读取

标签 python gps

最近几天我一直在努力让 gpsfake 与 python-gps 一起工作。 我执行 gpsfake 时使用了以下在网上找到的例句:

gpsfake test_data.log

测试数据.log:

$PMGNST,05.40,2,T,961,08.3,+04583,00*4C
$GPGLL,5036.9881,N,00707.9142,E,125412.480,A*3F
$GPGGA,125412.48,5036.9881,N,00707.9142,E,2,04,20.5,00269,M,,,,*17
$GPRMC,125412.48,A,5036.9881,N,00707.9142,E,00.0,000.0,230506,00,E*4F
$GPGSA,A,2,27,04,08,24,,,,,,,,,20.5,20.5,*12
$GPGSV,3,1,10,13,81,052,,04,58,240,39,23,44,064,,24,43,188,36*75
$GPGSV,3,2,10,02,42,295,,27,34,177,40,20,21,113,,16,12,058,*7F
$GPGSV,3,3,10,08,07,189,38,10,05,293,,131,11,117,,120,28,209,*76

运行后,我执行找到的 Python 脚本 here :

import gps
import os
import time

if __name__ == '__main__':
    session = gps.gps(verbose=1)

while 1:
    os.system('clear')
    session.next() 
    # a = altitude, d = date/time, m=mode,  
    # o=postion/fix, s=status, y=satellites

    print
    print ' GPS reading'
    print '----------------------------------------'
    print 'latitude    ' , session.fix.latitude
    print 'longitude   ' , session.fix.longitude
    print time.strftime("%H:%M:%S")

    print
    print ' Satellites (total of', len(session.satellites) , ' in view)'
    for i in session.satellites:
        print '\t', i

    time.sleep(3)

我获得了一个连接,但随后它在第 80 行的 gpscommon 类方法 read() 中被锁定:

frag = self.sock.recv(4096)

这告诉我没有收到甚至没有发送任何数据。

当我尝试通过终端连接

connect 127.0.0.1 2947

唯一的回应是

{"class":"VERSION","release":"3.4","rev":"3.4","proto_major":3,"proto_minor":6}

仅此而已。

有谁知道如何获得正确的数据?我尝试了各种 NMEA 日志文件,所以我认为这不是原因。

最佳答案

要获取位置报告,您必须开始“监视”gpsd/gpsfake 正在监视的设备,请尝试发送:

?WATCH={"enable":true,"json":true};

这将启用来自所有设备的 JSON 格式的更新。

停止更新:

?WATCH={"enable":false};

启用观看后,您将获得包含位置数据的“TPV”响应和包含卫星数据的“SKY”响应。

有关客户的更多信息:http://www.catb.org/gpsd/client-howto.html

GPSd JSON 格式:http://www.catb.org/gpsd/gpsd_json.html

关于python - 使用 python-gps 从 gpsd/gpsfake 读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14030828/

相关文章:

python - 如何让 Python 进程使用所有 Docker 容器内存而不被杀死?

Python stdout、\r 进度条和带有 Putty 的 sshd 不定期更新

安卓 GPS 分组

android - 减少(Android)电池时间的是什么?

ios - 如何防止 Swift 中的假 GPS 应用程序模拟 GPS 位置(欺骗)?

python - numpy.pad 添加的填充量是声明的两倍

python - 如何用 Python 将字典写入 Excel

python - 从另一个字符串中减去一个字符串

android - onLocationChanged() 未被调用

ios - 确定 iPhone 是在美国还是加拿大?