Como eu uso o gpsdecode para gerar os resultados do gpscat de maneira legível?

1

Estou conectado a um processador com GPS conectado por uma porta serial USB. O que eu tenho tentado fazer é ler os dados do GPS fazendo:

gpscat /dev/ttyS2 | gpsdecode

No entanto, é muito lento e, depois de muito tempo, gera isto:

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}]}

Quando eu mato o processo, isso é o que ele gera:

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

Este é o comando certo para usar? Se sim, qual é o problema?

Editar ---- Novo

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}]}

    
por Goldname 17.07.2017 / 14:16

1 resposta

1

If so, what's the problem?

aparece como se você estivesse eliminando o processo gpsdecode, que estava lendo o gpscat saída. Quando parou de ler, o buffer de saída do gpscat foi preenchido. Quando o sinal de kill chegou ao processo do gpscat, o python tentou fechar o identificador de saída não vazio, ele falhou com essa mensagem, como visto no Stack Overflow Q & A vinculado.

Para evitar esse erro específico, você pode tentar matar o processo do gpscat em vez do processo gpsdecode.

    
por 17.07.2017 / 16:13