4

ここ数日、gpsfake を python-gps で動作させるために一生懸命努力してきました。インターネットで見つけた次の例文で 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 スクリプトを実行します。

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 のログ ファイルをいろいろ試したので、それが原因ではないと思います。

4

1 に答える 1

0

位置レポートを取得するには、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

于 2014-04-30T21:58:27.557 に答える