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 datetime import datetime
from time import strftime, time
from pprint import pprint
from gps import *
import gpxpy
@ -165,87 +166,92 @@ class QtGPSWindow(MainWindow):
elif report['class'] == 'SKY':
self.txtHDOP.setText(str(getattr(report, 'hdop', 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')
self.txtSatellites.setStyleSheet("background-color: rgb(0, 0, 0)")
self.txtSatellites.setTextColor(self.white)
self.txtSatellites.setFontWeight(QFont.Bold)
self.txtSatellites.setText(txt)
try:
satellites = report['satellites']
prns = []
radius = []
theta = []
colors = []
markers = []
txt = "%4s %4s %4s %3s %1s" % ('PRN', 'Azim', 'Elev', 'SNR', 'Used')
self.txtSatellites.setStyleSheet("background-color: rgb(0, 0, 0)")
self.txtSatellites.setTextColor(self.white)
self.txtSatellites.setFontWeight(QFont.Bold)
self.txtSatellites.setText(txt)
for (i, satellite) in enumerate(satellites):
prn = int(satellite['PRN'])
azim = int(satellite['az'])
elev = int(satellite['el'])
snr = int(satellite['ss'])
used = int(satellite['used'])
# health = satellite['health']
prns = []
radius = []
theta = []
colors = []
markers = []
# don't show if not visible
if azim >= 360 or elev < -10 or elev > 90:
continue;
for satellite in satellites:
prn = int(satellite['PRN'])
azim = int(satellite['az'])
elev = int(satellite['el'])
snr = int(satellite['ss'])
used = int(satellite['used'])
# health = satellite['health']
cname = '#000000'
color = self.black
if snr < 12:
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
# don't show if not visible
if azim >= 360 or elev < -10 or elev > 90:
continue;
txt = "%4u %4u %4u %3u %1u" % (prn, azim, elev, snr, used)
self.txtSatellites.setTextColor(color)
if used:
self.txtSatellites.setFontWeight(QFont.Bold)
else:
self.txtSatellites.setFontWeight(QFont.Normal)
self.txtSatellites.append(txt)
cname = '#000000'
color = self.black
if snr < 12:
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
prns.append(prn)
theta.append(radians(float(azim)))
radius.append(float(elev))
colors.append(cname)
if used:
markers.append(ord('P'))
else:
markers.append(ord('+'))
txt = "%4u %4u %4u %3u %1u" % (prn, azim, elev, snr, used)
self.txtSatellites.setTextColor(color)
if used:
self.txtSatellites.setFontWeight(QFont.Bold)
else:
self.txtSatellites.setFontWeight(QFont.Normal)
self.txtSatellites.append(txt)
area = 100
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]))
prns.append(prn)
theta.append(radians(float(azim)))
radius.append(float(elev))
colors.append(cname)
if used:
markers.append(ord('P'))
else:
markers.append(ord('+'))
polar.set_theta_direction(-1)
polar.set_theta_zero_location('N', offset=0)
area = 100
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)
self.scene.clear()
self.scene.addWidget(canvas)
h = float(self.scene.height()) / 2.0
w = float(self.scene.width()) / 2.0
self.viewSatellites.centerOn(w,h)
self.viewSatellites.show()
polar.set_theta_direction(-1)
polar.set_theta_zero_location('N', offset=0)
canvas = FigureCanvas(figure)
self.scene.clear()
self.scene.addWidget(canvas)
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()