kopia lustrzana https://github.com/projecthorus/wenet
Added habitat upload support for imagery packets. Telemetry GUI loads by default with start_rx.sh
rodzic
43f6f57455
commit
11fc3d73d0
|
@ -10,6 +10,7 @@ from threading import Thread
|
|||
import traceback
|
||||
import socket
|
||||
import json
|
||||
import sys
|
||||
import Queue
|
||||
import datetime
|
||||
from WenetPackets import *
|
||||
|
@ -20,6 +21,11 @@ import numpy as np
|
|||
imu_plot_history_size = 60 # Seconds.
|
||||
|
||||
|
||||
user_callsign = "N0CALL"
|
||||
|
||||
if len(sys.argv) > 1:
|
||||
user_callsign = sys.argv[1]
|
||||
|
||||
app = QtGui.QApplication([])
|
||||
|
||||
# Configure PyQtGraph to use black plots on a transparent background.
|
||||
|
@ -224,7 +230,7 @@ def updateIMUFrame(imu_data):
|
|||
|
||||
# Telemetry Log
|
||||
packetSnifferFrame = QtGui.QFrame()
|
||||
packetSnifferFrame.setFixedSize(1300,150)
|
||||
packetSnifferFrame.setFixedSize(1200,150)
|
||||
packetSnifferFrame.setFrameStyle(QtGui.QFrame.Box)
|
||||
packetSnifferTitle = QtGui.QLabel("<b><u>Telemetry Log</u></b>")
|
||||
console = QtGui.QPlainTextEdit()
|
||||
|
@ -234,6 +240,40 @@ packetSnifferLayout.addWidget(packetSnifferTitle)
|
|||
packetSnifferLayout.addWidget(console)
|
||||
packetSnifferFrame.setLayout(packetSnifferLayout)
|
||||
|
||||
# Habitat Upload Frame
|
||||
uploadFrame = QtGui.QFrame()
|
||||
uploadFrame.setFixedSize(200,150)
|
||||
uploadFrame.setFrameStyle(QtGui.QFrame.Box)
|
||||
uploadFrame.setLineWidth(1)
|
||||
uploadFrameTitle = QtGui.QLabel("<b><u>Habitat Upload</u></b>")
|
||||
|
||||
uploadFrameHabitat = QtGui.QCheckBox("Habitat Upload")
|
||||
uploadFrameHabitat.setChecked(True)
|
||||
uploadFrameCallsignLabel = QtGui.QLabel("<b>Your Callsign:</b>")
|
||||
uploadFrameCallsign = QtGui.QLineEdit(user_callsign)
|
||||
uploadFrameCallsign.setMaxLength(10)
|
||||
uploadFrameHabitatStatus = QtGui.QLabel("Last Upload: ")
|
||||
|
||||
uploadFrameLayout = QtGui.QGridLayout()
|
||||
uploadFrameLayout.addWidget(uploadFrameTitle,0,0,1,1)
|
||||
uploadFrameLayout.addWidget(uploadFrameCallsignLabel,1,0,1,1)
|
||||
uploadFrameLayout.addWidget(uploadFrameCallsign,1,1,1,1)
|
||||
uploadFrameLayout.addWidget(uploadFrameHabitat,2,0,1,2)
|
||||
uploadFrameLayout.addWidget(uploadFrameHabitatStatus,3,0,1,2)
|
||||
|
||||
uploadFrame.setLayout(uploadFrameLayout)
|
||||
|
||||
def imageTelemetryHandler(packet):
|
||||
(upload_ok, error) = image_telemetry_upload(packet, user_callsign = str(uploadFrameCallsign.text()))
|
||||
timestamp = datetime.datetime.utcnow().strftime("%Y%m%d-%H%M%SZ")
|
||||
|
||||
if upload_ok:
|
||||
uploadFrameHabitatStatus.setText("Last Upload: %s" % datetime.utcnow().strftime("%H:%M:%S"))
|
||||
console.appendPlainText("%s \tHabitat Upload: OK")
|
||||
else:
|
||||
uploadFrameHabitatStatus.setText("Last Upload: Failed!")
|
||||
console.appendPlainText("%s \tHabitat Upload: FAIL: %s" % (timestamp, error))
|
||||
|
||||
|
||||
# Main Window
|
||||
main_widget = QtGui.QWidget()
|
||||
|
@ -242,8 +282,10 @@ main_widget.setLayout(layout)
|
|||
|
||||
layout.addWidget(gpsFrame,0,0)
|
||||
layout.addWidget(imuFrame,0,1)
|
||||
layout.addWidget(imuPlot,0,2)
|
||||
layout.addWidget(packetSnifferFrame,1,0,1,4)
|
||||
layout.addWidget(imuPlot,0,2,1,2)
|
||||
layout.addWidget(packetSnifferFrame,1,0,1,3)
|
||||
layout.addWidget(uploadFrame,1,3,1,1)
|
||||
|
||||
|
||||
mainwin = QtGui.QMainWindow()
|
||||
mainwin.setWindowTitle("Wenet GPS/IMU Telemetry Console")
|
||||
|
@ -275,6 +317,10 @@ def process_udp(udp_packet):
|
|||
elif packet_type == WENET_PACKET_TYPES.ORIENTATION_TELEMETRY:
|
||||
orientation_data = orientation_telemetry_decoder(packet)
|
||||
updateIMUFrame(orientation_data)
|
||||
elif packet_type == WENET_PACKET_TYPES.IMAGE_TELEMETRY:
|
||||
# Print to console, then attempt to upload packet.
|
||||
console.appendPlainText("%s \t%s" % (timestamp,packet_to_string(packet)))
|
||||
imageTelemetryHandler(packet)
|
||||
else:
|
||||
# Convert to string, and print to terminal with timestamp.
|
||||
console.appendPlainText("%s \t%s" % (timestamp,packet_to_string(packet)))
|
||||
|
|
|
@ -603,9 +603,9 @@ def image_telemetry_upload(packet, user_callsign="N0CALL"):
|
|||
)
|
||||
|
||||
response = c.getresponse()
|
||||
return "Image Telemetry: Uploaded to Habitat Successfuly."
|
||||
return (True, "Image Telemetry: Uploaded to Habitat Successfuly.")
|
||||
except Exception as e:
|
||||
return "Failed to upload to Habitat: %s" % (str(e))
|
||||
return (False, "Failed to upload to Habitat: %s" % (str(e)))
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -19,6 +19,8 @@ python ssdv_upload.py $MYCALL &
|
|||
|
||||
# Start the SSDV RX GUI.
|
||||
python rx_gui.py &
|
||||
# Start the Telemetry GUI.
|
||||
python TelemetryGUI.py $MYCALL &
|
||||
|
||||
# Uncomment the following line if using a V3 RTLSDR and need the Bias-Tee enabled.
|
||||
# rtl_biast -b 1
|
||||
|
|
|
@ -1131,7 +1131,7 @@ class UBloxGPS(object):
|
|||
self.gps.send_message(CLASS_CFG, MSG_CFG_NAV5,'\x00')
|
||||
|
||||
# Additional checks to be sure we're in the right dynamic model.
|
||||
if self.rx_counder % 40 == 0:
|
||||
if self.rx_counter % 40 == 0:
|
||||
self.gps.set_preferred_dynamic_model(self.dynamic_model)
|
||||
|
||||
# Send data to the callback function.
|
||||
|
|
Ładowanie…
Reference in New Issue