From 72564f4dc1ef77acae1e58892a9b99a20a706088 Mon Sep 17 00:00:00 2001 From: Felix Ruess Date: Mon, 21 Dec 2015 12:23:46 +0100 Subject: [PATCH] [python] some fixes for realtimeplotapp - use messages_xml_map from pprz_msg - hide the message picker instead of shutting it down (because that stops the ivy listener) - fix drag and drop --- .../python/real_time_plot/messagepicker.py | 8 ++++++-- .../python/real_time_plot/plotpanel.py | 14 +++++++++----- sw/lib/python/ivy_msg_interface.py | 6 +++++- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/sw/ground_segment/python/real_time_plot/messagepicker.py b/sw/ground_segment/python/real_time_plot/messagepicker.py index c700325280..33e863cab7 100755 --- a/sw/ground_segment/python/real_time_plot/messagepicker.py +++ b/sw/ground_segment/python/real_time_plot/messagepicker.py @@ -46,8 +46,12 @@ class MessagePicker(wx.Frame): self.message_interface = IvyMessagesInterface(self.msg_recv, initIvy) def OnClose(self, event): - self.message_interface.shutdown() - self.Destroy() + # if we have a parent (like the plotpanel) only hide instead of shutdown + if self.GetParent() is not None: + self.Hide() + else: + self.message_interface.shutdown() + self.Destroy() def msg_recv(self, ac_id, msg): if msg.msg_class != "telemetry": diff --git a/sw/ground_segment/python/real_time_plot/plotpanel.py b/sw/ground_segment/python/real_time_plot/plotpanel.py index 5793ecbf79..a6eb9d8bfc 100644 --- a/sw/ground_segment/python/real_time_plot/plotpanel.py +++ b/sw/ground_segment/python/real_time_plot/plotpanel.py @@ -2,6 +2,7 @@ from __future__ import absolute_import, print_function, division import wx from ivy.std_api import * +from ivy.ivy import IvyIllegalStateError import logging from textdroptarget import * import math @@ -10,9 +11,9 @@ import sys import os import messagepicker -sys.path.append(os.getenv("PAPARAZZI_HOME") + "/sw/lib/python") +sys.path.append(os.getenv("PAPARAZZI_SRC") + "/sw/lib/python") -import messages_xml_map +from pprz_msg import messages_xml_map class plot_data: def __init__(self, ivy_msg_id, title, width, color = None): @@ -181,7 +182,7 @@ class PlotPanel(): self.scale = 1.0 self.x_axis = None - messages_xml_map.ParseMessages() + messages_xml_map.parse_messages() # start the timer self.timer = wx.FutureCall( self.plot_interval, self.OnTimer) @@ -212,7 +213,10 @@ class PlotPanel(): def OnClose(self): self.timer.Stop() - IvyStop() + try: + IvyStop() + except IvyIllegalStateError as e: + print(e) def OnErase(self, event): pass @@ -242,7 +246,7 @@ class PlotPanel(): IvyStop() def OnDropText(self, data): - [ac_id, category, message, field] = data.encode('ASCII').split(':') + [ac_id, category, message, field, scale] = data.encode('ASCII').split(':') self.BindCurve(int(ac_id), message, field) def OnIvyMsg(self, agent, *larg): diff --git a/sw/lib/python/ivy_msg_interface.py b/sw/lib/python/ivy_msg_interface.py index d9befe55e4..717f3f2650 100644 --- a/sw/lib/python/ivy_msg_interface.py +++ b/sw/lib/python/ivy_msg_interface.py @@ -1,6 +1,7 @@ from __future__ import absolute_import, division, print_function from ivy.std_api import * +from ivy.ivy import IvyIllegalStateError import logging import os import sys @@ -30,7 +31,10 @@ class IvyMessagesInterface(object): def shutdown(self): self.stop() - IvyStop() + try: + IvyStop() + except IvyIllegalStateError as e: + print(e) def __init__del__(self): try: