Added gpsd_report check
This commit is contained in:
@ -125,124 +125,129 @@ class QtGPSWindow(MainWindow):
|
||||
global gpsd_report
|
||||
report = gpsd_report
|
||||
|
||||
# make sure is good report
|
||||
try:
|
||||
if report['class'] == 'TPV':
|
||||
status = getattr(report, 'status', 0)
|
||||
mode = getattr(report, 'mode', 0)
|
||||
time = getattr(report, 'time', 0)
|
||||
lat = getattr(report, 'lat', 0.0)
|
||||
lon = getattr(report, 'lon', 0.0)
|
||||
elev = getattr(report, 'altHAE', 0.0) # meters
|
||||
heading = getattr(report, 'track', 0.0)
|
||||
speed = getattr(report, 'speed', 0.0) # m/sec
|
||||
|
||||
self.txtStatus.setText(fix_status[status])
|
||||
self.txtMode.setText(fix_mode[mode])
|
||||
self.txtTime.setText(time)
|
||||
self.txtLatitude.setText("%10.7f" %(lat))
|
||||
self.txtLongitude.setText("%10.7f" % (lon))
|
||||
self.txtAltitude.setText("%7.2f" % (elev))
|
||||
self.txtHeading.setText("%7.2f" % (heading))
|
||||
self.txtSpeed.setText("%7.2f" % (speed))
|
||||
|
||||
self.txtGrid.setText(mh.to_maiden(lat, lon))
|
||||
|
||||
if self.log_enabled:
|
||||
point = gpxpy.gpx.GPXTrackPoint(lat, lon, elevation=elev)
|
||||
point.time = datetime.now()
|
||||
self.gpx_segment.points.append(point)
|
||||
self.num_points += 1
|
||||
self.num_count += 1
|
||||
self.txtCount.setText(str(self.num_count))
|
||||
|
||||
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']
|
||||
|
||||
# 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)
|
||||
|
||||
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()
|
||||
if not 'class' in report:
|
||||
return
|
||||
except:
|
||||
pass
|
||||
return
|
||||
|
||||
# GPS messages
|
||||
if report['class'] == 'TPV':
|
||||
status = getattr(report, 'status', 0)
|
||||
mode = getattr(report, 'mode', 0)
|
||||
time = getattr(report, 'time', 0)
|
||||
lat = getattr(report, 'lat', 0.0)
|
||||
lon = getattr(report, 'lon', 0.0)
|
||||
elev = getattr(report, 'altHAE', 0.0) # meters
|
||||
heading = getattr(report, 'track', 0.0)
|
||||
speed = getattr(report, 'speed', 0.0) # m/sec
|
||||
|
||||
self.txtStatus.setText(fix_status[status])
|
||||
self.txtMode.setText(fix_mode[mode])
|
||||
self.txtTime.setText(time)
|
||||
self.txtLatitude.setText("%10.7f" %(lat))
|
||||
self.txtLongitude.setText("%10.7f" % (lon))
|
||||
self.txtAltitude.setText("%7.2f" % (elev))
|
||||
self.txtHeading.setText("%7.2f" % (heading))
|
||||
self.txtSpeed.setText("%7.2f" % (speed))
|
||||
|
||||
self.txtGrid.setText(mh.to_maiden(lat, lon))
|
||||
|
||||
if self.log_enabled:
|
||||
point = gpxpy.gpx.GPXTrackPoint(lat, lon, elevation=elev)
|
||||
point.time = datetime.now()
|
||||
self.gpx_segment.points.append(point)
|
||||
self.num_points += 1
|
||||
self.num_count += 1
|
||||
self.txtCount.setText(str(self.num_count))
|
||||
|
||||
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']
|
||||
|
||||
# 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)
|
||||
|
||||
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):
|
||||
if self.log_enabled:
|
||||
|
||||
Reference in New Issue
Block a user