Added gpsd_report check
This commit is contained in:
@ -125,124 +125,129 @@ class QtGPSWindow(MainWindow):
|
|||||||
global gpsd_report
|
global gpsd_report
|
||||||
report = gpsd_report
|
report = gpsd_report
|
||||||
|
|
||||||
|
# make sure is good report
|
||||||
try:
|
try:
|
||||||
if report['class'] == 'TPV':
|
if not 'class' in report:
|
||||||
status = getattr(report, 'status', 0)
|
return
|
||||||
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()
|
|
||||||
except:
|
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):
|
def toggle_logging(self):
|
||||||
if self.log_enabled:
|
if self.log_enabled:
|
||||||
|
|||||||
Reference in New Issue
Block a user