Catch error on satellites

This commit is contained in:
2026-06-08 12:41:58 -04:00
parent ecb6fe0097
commit cb72616e26

View File

@ -7,6 +7,7 @@ import yaml
from math import radians from math import radians
from datetime import datetime from datetime import datetime
from time import strftime, time from time import strftime, time
from pprint import pprint
from gps import * from gps import *
import gpxpy import gpxpy
@ -165,87 +166,92 @@ class QtGPSWindow(MainWindow):
elif report['class'] == 'SKY': elif report['class'] == 'SKY':
self.txtHDOP.setText(str(getattr(report, 'hdop', 0.0))) self.txtHDOP.setText(str(getattr(report, 'hdop', 0.0)))
self.txtVDOP.setText(str(getattr(report, 'vdop', 0.0))) self.txtVDOP.setText(str(getattr(report, 'vdop', 0.0)))
satellites = getattr(report, 'satellites')
txt = "%4s %4s %4s %3s %1s" % ('PRN', 'Azim', 'Elev', 'SNR', 'Used') try:
self.txtSatellites.setStyleSheet("background-color: rgb(0, 0, 0)") satellites = report['satellites']
self.txtSatellites.setTextColor(self.white)
self.txtSatellites.setFontWeight(QFont.Bold)
self.txtSatellites.setText(txt)
prns = [] txt = "%4s %4s %4s %3s %1s" % ('PRN', 'Azim', 'Elev', 'SNR', 'Used')
radius = [] self.txtSatellites.setStyleSheet("background-color: rgb(0, 0, 0)")
theta = [] self.txtSatellites.setTextColor(self.white)
colors = [] self.txtSatellites.setFontWeight(QFont.Bold)
markers = [] self.txtSatellites.setText(txt)
for (i, satellite) in enumerate(satellites): prns = []
prn = int(satellite['PRN']) radius = []
azim = int(satellite['az']) theta = []
elev = int(satellite['el']) colors = []
snr = int(satellite['ss']) markers = []
used = int(satellite['used'])
# health = satellite['health']
# don't show if not visible for satellite in satellites:
if azim >= 360 or elev < -10 or elev > 90: prn = int(satellite['PRN'])
continue; azim = int(satellite['az'])
elev = int(satellite['el'])
snr = int(satellite['ss'])
used = int(satellite['used'])
# health = satellite['health']
cname = '#000000' # don't show if not visible
color = self.black if azim >= 360 or elev < -10 or elev > 90:
if snr < 12: continue;
cname = '#808080'
color = self.gray
elif snr < 30:
cname = '#ff0000'
color = self.red
elif snr < 36:
cname = '#ffd300'
color = self.yellow
elif snr < 42:
cname = '#00ff00'
color = self.green
else:
cname = '#0000ff'
color = self.blue
txt = "%4u %4u %4u %3u %1u" % (prn, azim, elev, snr, used) cname = '#000000'
self.txtSatellites.setTextColor(color) color = self.black
if used: if snr < 12:
self.txtSatellites.setFontWeight(QFont.Bold) cname = '#808080'
else: color = self.gray
self.txtSatellites.setFontWeight(QFont.Normal) elif snr < 30:
self.txtSatellites.append(txt) cname = '#ff0000'
color = self.red
elif snr < 36:
cname = '#ffd300'
color = self.yellow
elif snr < 42:
cname = '#00ff00'
color = self.green
else:
cname = '#0000ff'
color = self.blue
prns.append(prn) txt = "%4u %4u %4u %3u %1u" % (prn, azim, elev, snr, used)
theta.append(radians(float(azim))) self.txtSatellites.setTextColor(color)
radius.append(float(elev)) if used:
colors.append(cname) self.txtSatellites.setFontWeight(QFont.Bold)
if used: else:
markers.append(ord('P')) self.txtSatellites.setFontWeight(QFont.Normal)
else: self.txtSatellites.append(txt)
markers.append(ord('+'))
area = 100 prns.append(prn)
figure = Figure() theta.append(radians(float(azim)))
polar = figure.add_subplot(111, projection='polar') radius.append(float(elev))
polar.scatter(theta, radius, c=colors, s=area, cmap=None, alpha=0.75) colors.append(cname)
polar.set_rorigin(90.0) if used:
polar.set_xticklabels([]) markers.append(ord('P'))
polar.set_yticklabels([]) else:
for i, prn in enumerate(prns): markers.append(ord('+'))
polar.annotate(str(prn), (theta[i], radius[i]))
polar.set_theta_direction(-1) area = 100
polar.set_theta_zero_location('N', offset=0) figure = Figure()
polar = figure.add_subplot(111, projection='polar')
polar.scatter(theta, radius, c=colors, s=area, cmap=None, alpha=0.75)
polar.set_rorigin(90.0)
polar.set_xticklabels([])
polar.set_yticklabels([])
for i, prn in enumerate(prns):
polar.annotate(str(prn), (theta[i], radius[i]))
canvas = FigureCanvas(figure) polar.set_theta_direction(-1)
self.scene.clear() polar.set_theta_zero_location('N', offset=0)
self.scene.addWidget(canvas)
h = float(self.scene.height()) / 2.0 canvas = FigureCanvas(figure)
w = float(self.scene.width()) / 2.0 self.scene.clear()
self.viewSatellites.centerOn(w,h) self.scene.addWidget(canvas)
self.viewSatellites.show() h = float(self.scene.height()) / 2.0
w = float(self.scene.width()) / 2.0
self.viewSatellites.centerOn(w,h)
self.viewSatellites.show()
except:
pass
self.show() self.show()