web-dev-qa-db-ja.com

gpsdecodeを使用してgpscatの結果を読みやすい方法で出力するにはどうすればよいですか?

USBシリアルポートを介してGPSが接続されたプロセッサに接続しています。私がやろうとしていることは、次のようにしてGPSデータを読み取ることです。

gpscat /dev/ttyS2 | gpsdecode

ただし、それは非常に遅く、長い​​時間の後にこれを出力します:

130 root@gw-0317STLG0067 ~ # gpscat /dev/ttyS2 | gpsdecode            
:(
{"class":"SKY","device":"stdin","vdop":1.20,"hdop":1.20,"pdop":1.80,"satellites":[{"PRN":29,"el":28,"az":79,"ss":39,"used":false},{"PRN":31,"el":18,"az":204,"ss":18,"used":false}]}

プロセスを強制終了すると、次のように出力されます。

close failed in file object destructor: 
sys.excepthook is missing 
lost sys.stderr

これは使用するのに適切なコマンドですか?もしそうなら、問題は何ですか?

編集----新規

Output {"class": "TPV"、 "device": "stdin"、 "mode":2、 "lat":50.782431667、 "lon":6.076753333} {"class": "SKY"、 "device": " stdin "、" satellites ":[{" PRN ":27、" el ":86、" az ":124、" ss ":30、" used ":false}]} {" class ":" TPV "、 "device": "stdin"、 "mode":2、 "lat":50.782431667、 "lon":6.076753333} {"class": "TPV"、 "device": "stdin"、 "mode":2、 " lat ":50.782431667、" lon ":6.076753333} {" class ":" TPV "、" device ":" stdin "、" mode ":2、" lat ":50.782431667、" lon ":6.076753333} {" class " : "TPV"、 "device": "stdin"、 "mode":2、 "time": "2017-07-17T14:52:13.000Z"、 "ept":0.005、 "lat":50.782431667、 "lon ":6.076753333、" track ":206.8000、" speed ":0.000} {" class ":" SKY "、" device ":" stdin "、" vdop ":1.60、" hdop ":1.00、" pdop ":2.00 、 "satellites":[{"PRN":7、 "el":10、 "az":289、 "ss":19、 "used":false}、{"PRN":8、 "el":54 、 "az":296、 "ss":19、 "used":false}、{"PRN":10、 "el":59、 "az":122、 "ss":43、 "used":false }、{"PRN":15、 "el":11、 "az":38、 "ss":43、 "used":false}、{"PRN":27、 "el":84、 "az" :126、 "ss":34、 "used":false}]} {"class": "SKY"、 "device": "stdin"、 "vdop":1.60、 "hdop":1.00、 "pdop": 2.00、 "satellites":[{"PRN":7、 "el":10、 "az":289、 "ss":19、 "used":false}、{"PRN":8、 "el":54、 "az":296、 "ss":19、 "used":false} 、{"PRN":10、 "el":59、 "az":122、 "ss":43、 "used":false}、{"PRN":15、 "el":11、 "az": 38、 "ss":43、 "used":false}、{"PRN":27、 "el":84、 "az":126、 "ss":34、 "used":false}、{"PRN ":27、" el ":84、" az ":126、" ss ":34、" used ":false}]} {" class ":" SKY "、" device ":" stdin "、" vdop " :1.60、 "hdop":1.00、 "pdop":2.00、 "satellites":[{"PRN":7、 "el":10、 "az":288、 "ss":17、 "used":false }、{"PRN":8、 "el":55、 "az":296、 "ss":22、 "used":false}、{"PRN":10、 "el":60、 "az" :120、 "ss":41、 "used":false}、{"PRN":15、 "el":10、 "az":37、 "ss":45、 "used":false}、{" PRN ":16、" el ":35、" az ":188、" ss ":25、" used ":false}、{" PRN ":18、" el ":46、" az ":70、" ss ":40、" used ":false}、{" PRN ":21、" el ":23、" az ":71、" ss ":38、" used ":false}、{" PRN ":26 、 "el":10、 "az":175、 "ss":24、 "used":false}、{"PRN":27、 "el":84、 "az":126、 "ss":33 、 "used":false}]} {"class": "SKY"、 "device": "stdin"、 "vdop":1.60、 "hdop":1.00、 "pdop":2.00、 "satellites":[{ "PRN":7、 "el":10、 "az":288、 "ss":17、 "used":false}、{"PRN":8、 "el":55、 "az":296、 "ss":22、 "used":false}、{"PRN":10、 "el":60、 "az":120 、 "ss":41、 "used":false}、{"PRN":15、 "el":10、 "az":37、 "ss":45、 "used":false}、{"PRN" :16、 "el":35、 "az":188、 "ss":25、 "used":false}、{"PRN":18、 "el":46、 "az":70、 "ss" :40、 "used":false}、{"PRN":21、 "el":23、 "az":71、 "ss":38、 "used":false}、{"PRN":26、 " el ":10、" az ":175、" ss ":24、" used ":false}、{" PRN ":27、" el ":84、" az ":126、" ss ":33、" used ":false}、{" PRN ":70、" el ":14、" az ":23、" ss ":25、" used ":false}、{" PRN ":86、" el ":39 、 "az":82、 "ss":32、 "used":true}、{"PRN":65、 "el":0、 "az":174、 "ss":19、 "used":false }、{"PRN":71、 "el":47、 "az":70、 "ss":29、 "used":true}、{"PRN":72、 "el":35、 "az" :142、 "ss":29、 "used":true}]}

1
Goldname

もしそうなら、問題は何ですか?

それは 表示 gpsdecodeプロセスを強制終了しているように見えます。これはがgpscatの出力を読み取っていました。読み取りを停止すると、gpscatの出力バッファがいっぱいになりました。キルシグナルがgpscatプロセスに到達すると、pythonは空でない出力ハンドルを閉じようとしましたが、リンクされたStack Overflow Q&Aに見られるように、そのメッセージで失敗しました。

この特定のエラーを回避するには、gpsdecodeプロセスの代わりにgpscatプロセスを強制終了してみてください。

1
Jeff Schaller