Catch error on satellites
This commit is contained in:
@ -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,88 +166,93 @@ 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)
|
||||
|
||||
prns = []
|
||||
radius = []
|
||||
theta = []
|
||||
colors = []
|
||||
markers = []
|
||||
|
||||
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']
|
||||
try:
|
||||
satellites = report['satellites']
|
||||
|
||||
# don't show if not visible
|
||||
if azim >= 360 or elev < -10 or elev > 90:
|
||||
continue;
|
||||
|
||||
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
|
||||
|
||||
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)
|
||||
|
||||
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 = "%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)
|
||||
|
||||
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 = []
|
||||
radius = []
|
||||
theta = []
|
||||
colors = []
|
||||
markers = []
|
||||
|
||||
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']
|
||||
|
||||
# don't show if not visible
|
||||
if azim >= 360 or elev < -10 or elev > 90:
|
||||
continue;
|
||||
|
||||
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
|
||||
|
||||
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)
|
||||
|
||||
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('+'))
|
||||
|
||||
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]))
|
||||
|
||||
polar.set_theta_direction(-1)
|
||||
polar.set_theta_zero_location('N', offset=0)
|
||||
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
|
||||
|
||||
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()
|
||||
|
||||
self.show()
|
||||
|
||||
def toggle_logging(self):
|
||||
|
||||
Reference in New Issue
Block a user