2012-12-25 55 views
4

我一直在努力讓gpsfake在python-gps的最後幾天工作。 我用下面的例句,我發現在互聯網上執行gpsfake:使用python-gps從gpsd/gpsfake中讀取

gpsfake test_data.log 

test_data.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,方法讀():

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日誌文件,所以我認爲這不是原因。

回答

0

要獲得位置報告,您必須開始「看」的設備GPSD/gpsfake是監控,嘗試發送:

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

這將使從JSON格式的所有設備的更新。

要停止更新:

?WATCH={"enable":false}; 

看着一旦啓用,你會得到一個包含位置數據「冠捷科技」的反應,並與衛星數據「SKY」的反應。有關客戶端

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

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