|
|
|
|
@ -38,6 +38,9 @@ class DroneMonitor(Node):
|
|
|
|
|
self.selected_drones = set()
|
|
|
|
|
self.latest_data = {}
|
|
|
|
|
|
|
|
|
|
# 定義需要過濾的模式
|
|
|
|
|
self.filtered_modes = ['Mode(0x000000c0)']
|
|
|
|
|
|
|
|
|
|
# 啟動 WebSocket client 執行緒
|
|
|
|
|
threading.Thread(target=self.start_ws_client, daemon=True).start()
|
|
|
|
|
|
|
|
|
|
@ -310,6 +313,9 @@ class DroneMonitor(Node):
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def state_callback(self, drone_id, msg):
|
|
|
|
|
mode = msg.mode
|
|
|
|
|
if mode in self.filtered_modes:
|
|
|
|
|
return
|
|
|
|
|
self.latest_data[(drone_id, 'state')] = {
|
|
|
|
|
'mode': msg.mode,
|
|
|
|
|
'armed': msg.armed
|
|
|
|
|
@ -1181,9 +1187,10 @@ class ControlStationUI(QMainWindow):
|
|
|
|
|
|
|
|
|
|
# 顯示總電壓、電池節數、單節電壓和百分比
|
|
|
|
|
text = f"{percentage:.0f}%"
|
|
|
|
|
vol = f"{voltage:.2f}V"
|
|
|
|
|
|
|
|
|
|
self.update_field(panel, drone_id, 'battery', text, voltage_color)
|
|
|
|
|
self.update_overview_table(drone_id, 'battery', text)
|
|
|
|
|
self.update_overview_table(drone_id, 'battery', vol)
|
|
|
|
|
|
|
|
|
|
elif msg_type == 'gps':
|
|
|
|
|
lat, lon = data.get('lat', 0), data.get('lon', 0)
|
|
|
|
|
|