읽기 쉬운 방식으로 gpscat의 결과를 출력하기 위해 gpsdecode를 사용하는 방법은 무엇입니까?

읽기 쉬운 방식으로 gpscat의 결과를 출력하기 위해 gpsdecode를 사용하는 방법은 무엇입니까?

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

이것이 올바른 명령입니까? 그렇다면 문제는 무엇입니까?

편집----신규

출력 {"class": "TPV", "device": "stdin", "mode": 2, "lat": 50.782431667, "lon": 6.076753333} {"class": "SKY", "device": " 표준 입력","위성":[{"PRN":27,"el":86,"az":124,"ss":30,"used":false}]} {"class":"TPV", "device": "stdin", "mode": 2, "latitude": 50.782431667, "longitude": 6.076753333} {"class": "TPV", "device": "stdin", "mode": 2 , " 위도": 50.782431667, "경도": 6.076753333} {"클래스": "TPV", "장치": "stdin", "모드": 2, "위도": 50.782431667, "경도": 6.076753333} {" 클래스" : "TPV", "장치": "stdin", "모드": 2, "시간": "2017-07-17T14:52:13.000Z", "ept": 0.005, "lat": 50.782431667, "lon ":6.076753333,"트랙":206.8000,"속도":0.000} {"클래스":"SKY","장치":"stdin","vdop":1.60,"hdop":1.00,"pdop" :2.00 ,"위성":[{"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,"위성":[{"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,"use":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, "satellite": [{ "PRN": 7, " el" :10,"az":288,"ss":17,"사용됨":false},{"PRN":8,"el":55,"az":296,"ss":22, "사용됨" :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,"위성":[{"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,"사용됨":false},{"PRN":27,"el":84,"az":126,"ss":33 ,"사용됨 ":false},{"PRN":70,"el":14,"az":23,"ss":25,"used":false},{"PRN":86,"el" :39, "az":82,"ss":32,"사용됨":true},{"PRN":65,"el":0,"az":174,"ss":19,"사용됨": false }, {"PRN": 71, "el": 47, "az": 70, "ss": 29, "use": true}, {"PRN": 72, "el": 35 , "az" :142,"ss":29,"사용됨":true}]}false},{"PRN":10,"el":60,"az":120,"ss":41," 사용됨":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,"use":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,"사용됨":true},{"PRN":72,"el":35,"az":142,"ss" :29,"사용됨" :true}]}false},{"PRN":10,"el":60,"az":120,"ss":41,"used":false},{"PRN" :15,"el" :10,"az ":37,"ss":45,"사용됨":false},{"PRN":16,"el":35,"az":188,"ss" :25,"사용됨" :false},{ "PRN":18,"el":46,"az":70,"ss":40,"used":false},{"PRN":21," el":23," az":71,"ss":38,"중고":false},{"PRN":26,"el":10,"az":175,"ss":24,"중고":false},{"PRN": 27,"el":84,"az":126,"ss":33,"used":false},{"PRN":70,"el":14,"az":23,"ss": 25,"사용":false},{"PRN":86,"el":39,"az":82,"ss":32,"사용":true},{"PRN":65,"el ":0,"az":174,"ss":19,"used":false},{"PRN":71,"el":47,"az":70,"ss":29," 사용됨 ":true},{"PRN":72,"el":35,"az":142,"ss":29,"used":true}]}

답변1

그렇다면 문제는 무엇입니까?

그것나타나다마치 gpsdecode 프로세스를 종료하는 것과 같습니다.예전에는gpscat의 출력을 읽습니다. 읽기가 중지되면 gpscat의 출력 버퍼가 가득 찼습니다. 종료 신호가 gpscat 프로세스에 도달하면 Python은 null이 아닌 출력 핸들을 닫으려고 시도하지만 연결된 스택 오버플로 Q&A에 표시된 것처럼 이 메시지와 함께 실패합니다.

이 특정 오류를 방지하려면 gpsdecode 프로세스 대신 gpscat 프로세스를 종료해 보세요.

관련 정보