From cd9534f04d3c3b5ed4b9639fc65cf6db2898d23f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20DI=20MERCURIO?= Date: Thu, 11 Apr 2019 13:00:24 +0200 Subject: [PATCH] Correction sur le moniteur pour prendre an charge les messages de timeout et d'erreur de communication + suppression du timer et bouton getbattery --- software/monitor/monitor/MonitorUI.cs | 180 +++++++----------- .../monitor/monitor/gtk-gui/MainWindow.cs | 178 ++++++++--------- software/monitor/monitor/gtk-gui/gui.stetic | 15 +- software/monitor/monitor/monitor | Bin 114688 -> 114176 bytes 4 files changed, 155 insertions(+), 218 deletions(-) diff --git a/software/monitor/monitor/MonitorUI.cs b/software/monitor/monitor/MonitorUI.cs index f2f43e0..a703ec4 100644 --- a/software/monitor/monitor/MonitorUI.cs +++ b/software/monitor/monitor/MonitorUI.cs @@ -25,6 +25,11 @@ // 15/10/2019 dimercur // Demande #43: Migrer le code lié à la gestion des images dans sa propre classe widget +// 11/04/2019 dimercur +// Suppression du timer battery +// suppression de la case à cocher getbattery +// Prise en charge des messages ANSWER_TIMEOUT et ANSWER_COM_ERROR dans OnCommandReceivedEvent + using System; using Gtk; using Gdk; @@ -68,11 +73,6 @@ public partial class MainWindow : Gtk.Window /// private ImageWidget imageWidget; - /// - /// Timer for battery request - /// - private System.Timers.Timer batteryTimer; - /// /// Counter for image reception and detecting bad picture ratio /// @@ -91,10 +91,6 @@ public partial class MainWindow : Gtk.Window // Init of image widget imageWidget = new ImageWidget(drawingAreaCamera); - // create new timer for battery request, every 10s - batteryTimer = new System.Timers.Timer(10000.0); - batteryTimer.Elapsed += OnBatteryTimerElapsed; - // Customize controls AdjustControls(); } @@ -145,7 +141,6 @@ public partial class MainWindow : Gtk.Window if (cmdManager != null) cmdManager.Close(); - batteryTimer.Stop(); break; case SystemState.ServerConnected: buttonServerConnection.Label = "Disconnect"; @@ -159,14 +154,12 @@ public partial class MainWindow : Gtk.Window labelRobotControl.Sensitive = false; gtkAlignmentRobotControl.Sensitive = false; - batteryTimer.Stop(); break; case SystemState.RobotConnected: buttonRobotActivation.Label = "Reset"; labelRobotControl.Sensitive = true; gtkAlignmentRobotControl.Sensitive = true; - batteryTimer.Start(); break; default: labelRobot.Sensitive = false; @@ -259,64 +252,81 @@ public partial class MainWindow : Gtk.Window // Depending on message received (based on header), launch correponding action header = header.ToUpper(); - if (header == DestijlCommandList.ROBOT_BATTERY_LEVEL) + switch (header) { - string batLevel = ""; + case DestijlCommandList.ANSWER_TIMEOUT: + case DestijlCommandList.ANSWER_COM_ERROR: + Console.WriteLine("Communication lost with robot"); + Gtk.Application.Invoke(delegate + { + MessagePopup(MessageType.Error, ButtonsType.Ok, "Robot lost", "Communication with robot lost !"); + }); - switch (data[0]) - { - case '2': - batLevel = "High"; - break; - case '1': - batLevel = "Low"; - break; - case '0': - batLevel = "Empty"; - break; - default: - batLevel = "Invalid value"; - break; - } + ChangeState(SystemState.ServerConnected); - Gtk.Application.Invoke(delegate - { - labelBatteryLevel.Text = batLevel; - }); - } - else if (header == DestijlCommandList.CAMERA_IMAGE) - { - imageReceivedCounter++; + break; + case DestijlCommandList.ROBOT_BATTERY_LEVEL: + string batLevel = ""; - byte[] image = new byte[2]; - try - { - image = Convert.FromBase64String(data); - } - catch (FormatException) - { - badImageReceivedCounter++; - Console.WriteLine("Unable to convert from base64 "); - } + switch (data[0]) + { + case '2': + batLevel = "High"; + break; + case '1': + batLevel = "Low"; + break; + case '0': + batLevel = "Empty"; + break; + default: + batLevel = "Invalid value"; + break; + } - try - { - imageWidget.ShowImage(image); - } - catch (GLib.GException) - { - badImageReceivedCounter++; + Gtk.Application.Invoke(delegate + { + labelBatteryLevel.Text = batLevel; + }); + + break; + case DestijlCommandList.CAMERA_IMAGE: + imageReceivedCounter++; + + byte[] image = new byte[2]; + try + { + image = Convert.FromBase64String(data); + } + catch (FormatException) + { + badImageReceivedCounter++; + Console.WriteLine("Unable to convert from base64 "); + } + + try + { + imageWidget.ShowImage(image); + } + catch (GLib.GException) + { + badImageReceivedCounter++; #if DEBUG - Console.WriteLine("Bad Image: " + badImageReceivedCounter + - " / " + imageReceivedCounter + - " (" + badImageReceivedCounter * 100 / imageReceivedCounter + "%)"); + Console.WriteLine("Bad Image: " + badImageReceivedCounter + + " / " + imageReceivedCounter + + " (" + badImageReceivedCounter * 100 / imageReceivedCounter + "%)"); #endif - } - //} - } - else if (header == DestijlCommandList.CAMERA_POSITION) - { - imageWidget.Position = DestijlCommandManager.DecodePosition(data); + } + + break; + case DestijlCommandList.CAMERA_POSITION: + imageWidget.Position = DestijlCommandManager.DecodePosition(data); + + break; + default: + Console.WriteLine("Untreated message from supervisor: " + header + ": " + data); + + break; } } } @@ -526,50 +536,6 @@ public partial class MainWindow : Gtk.Window } } - /// - /// Callback called when battery timer expired - /// - /// Sender object - /// Event - void OnBatteryTimerElapsed(object sender, System.Timers.ElapsedEventArgs e) - { - DestijlCommandManager.CommandStatus status; - batteryTimer.Stop(); - - // if battery checkbox is checked, a request for battery level is done - if (checkButtonGetBattery.Active) - { - status = cmdManager.RobotGetBattery(); - - // if status is not ok, show appropriate message and print "Unknown" for battery level - switch (status) - { - case DestijlCommandManager.CommandStatus.Success: - batteryTimer.Start(); - break; - case DestijlCommandManager.CommandStatus.CommunicationLostWithServer: - Console.WriteLine("Error: Connection lost with server"); - batteryTimer.Stop(); - labelBatteryLevel.Text = "Unknown"; - - ChangeState(SystemState.NotConnected); - break; - case DestijlCommandManager.CommandStatus.CommunicationLostWithRobot: - Console.WriteLine("Error: Connection lost with robot"); - batteryTimer.Stop(); - labelBatteryLevel.Text = "Unknown"; - - ChangeState(SystemState.ServerConnected); - break; - default: - labelBatteryLevel.Text = "Unknown"; - batteryTimer.Start(); - break; - } - } - else batteryTimer.Start(); - } - /// /// Callback called when checkbutton for camera is clicked /// diff --git a/software/monitor/monitor/gtk-gui/MainWindow.cs b/software/monitor/monitor/gtk-gui/MainWindow.cs index 466b549..30def1b 100644 --- a/software/monitor/monitor/gtk-gui/MainWindow.cs +++ b/software/monitor/monitor/gtk-gui/MainWindow.cs @@ -125,8 +125,6 @@ public partial class MainWindow private global::Gtk.Label labelBatteryLevel; - private global::Gtk.CheckButton checkButtonGetBattery; - protected virtual void Build() { global::Stetic.Gui.Initialize(this); @@ -530,92 +528,91 @@ public partial class MainWindow this.table4.ColumnSpacing = ((uint)(6)); // Container child table4.Gtk.Table+TableChild this.buttonDown = new global::Gtk.Button(); - global::Gtk.Tooltips w40 = new Gtk.Tooltips(); - w40.SetTip(this.buttonDown, "Move robot backward", "Move robot backward"); + this.buttonDown.TooltipMarkup = "Move robot backward"; this.buttonDown.CanFocus = true; this.buttonDown.Name = "buttonDown"; this.buttonDown.UseUnderline = true; - global::Gtk.Image w41 = new global::Gtk.Image(); - w41.Pixbuf = global::Gdk.Pixbuf.LoadFromResource("monitor.ressources.pan-down-symbolic.symbolic.png"); - this.buttonDown.Image = w41; + global::Gtk.Image w40 = new global::Gtk.Image(); + w40.Pixbuf = global::Gdk.Pixbuf.LoadFromResource("monitor.ressources.pan-down-symbolic.symbolic.png"); + this.buttonDown.Image = w40; this.table4.Add(this.buttonDown); - global::Gtk.Table.TableChild w42 = ((global::Gtk.Table.TableChild)(this.table4[this.buttonDown])); - w42.TopAttach = ((uint)(2)); - w42.BottomAttach = ((uint)(3)); - w42.LeftAttach = ((uint)(1)); - w42.RightAttach = ((uint)(2)); - w42.XOptions = ((global::Gtk.AttachOptions)(4)); - w42.YOptions = ((global::Gtk.AttachOptions)(4)); + global::Gtk.Table.TableChild w41 = ((global::Gtk.Table.TableChild)(this.table4[this.buttonDown])); + w41.TopAttach = ((uint)(2)); + w41.BottomAttach = ((uint)(3)); + w41.LeftAttach = ((uint)(1)); + w41.RightAttach = ((uint)(2)); + w41.XOptions = ((global::Gtk.AttachOptions)(4)); + w41.YOptions = ((global::Gtk.AttachOptions)(4)); // Container child table4.Gtk.Table+TableChild this.buttonForward = new global::Gtk.Button(); - w40.SetTip(this.buttonForward, "Move robot forward", "Move robot forward"); + this.buttonForward.TooltipMarkup = "Move robot forward"; this.buttonForward.CanFocus = true; this.buttonForward.Name = "buttonForward"; this.buttonForward.UseUnderline = true; - global::Gtk.Image w43 = new global::Gtk.Image(); - w43.Pixbuf = global::Gdk.Pixbuf.LoadFromResource("monitor.ressources.pan-up-symbolic.symbolic.png"); - this.buttonForward.Image = w43; + global::Gtk.Image w42 = new global::Gtk.Image(); + w42.Pixbuf = global::Gdk.Pixbuf.LoadFromResource("monitor.ressources.pan-up-symbolic.symbolic.png"); + this.buttonForward.Image = w42; this.table4.Add(this.buttonForward); - global::Gtk.Table.TableChild w44 = ((global::Gtk.Table.TableChild)(this.table4[this.buttonForward])); - w44.LeftAttach = ((uint)(1)); - w44.RightAttach = ((uint)(2)); - w44.XOptions = ((global::Gtk.AttachOptions)(4)); - w44.YOptions = ((global::Gtk.AttachOptions)(4)); + global::Gtk.Table.TableChild w43 = ((global::Gtk.Table.TableChild)(this.table4[this.buttonForward])); + w43.LeftAttach = ((uint)(1)); + w43.RightAttach = ((uint)(2)); + w43.XOptions = ((global::Gtk.AttachOptions)(4)); + w43.YOptions = ((global::Gtk.AttachOptions)(4)); // Container child table4.Gtk.Table+TableChild this.buttonLeft = new global::Gtk.Button(); - w40.SetTip(this.buttonLeft, "Turn robot to the left", "Turn robot to the left"); + this.buttonLeft.TooltipMarkup = "Turn robot to the left"; this.buttonLeft.CanFocus = true; this.buttonLeft.Name = "buttonLeft"; this.buttonLeft.UseUnderline = true; - global::Gtk.Image w45 = new global::Gtk.Image(); - w45.Pixbuf = global::Gdk.Pixbuf.LoadFromResource("monitor.ressources.pan-start-symbolic.symbolic.png"); - this.buttonLeft.Image = w45; + global::Gtk.Image w44 = new global::Gtk.Image(); + w44.Pixbuf = global::Gdk.Pixbuf.LoadFromResource("monitor.ressources.pan-start-symbolic.symbolic.png"); + this.buttonLeft.Image = w44; this.table4.Add(this.buttonLeft); - global::Gtk.Table.TableChild w46 = ((global::Gtk.Table.TableChild)(this.table4[this.buttonLeft])); - w46.TopAttach = ((uint)(1)); - w46.BottomAttach = ((uint)(2)); - w46.XOptions = ((global::Gtk.AttachOptions)(4)); - w46.YOptions = ((global::Gtk.AttachOptions)(4)); + global::Gtk.Table.TableChild w45 = ((global::Gtk.Table.TableChild)(this.table4[this.buttonLeft])); + w45.TopAttach = ((uint)(1)); + w45.BottomAttach = ((uint)(2)); + w45.XOptions = ((global::Gtk.AttachOptions)(4)); + w45.YOptions = ((global::Gtk.AttachOptions)(4)); // Container child table4.Gtk.Table+TableChild this.buttonRight = new global::Gtk.Button(); - w40.SetTip(this.buttonRight, "Turn robot to the right", "Turn robot to the right"); + this.buttonRight.TooltipMarkup = "Turn robot to the right"; this.buttonRight.CanFocus = true; this.buttonRight.Name = "buttonRight"; this.buttonRight.UseUnderline = true; - global::Gtk.Image w47 = new global::Gtk.Image(); - w47.Pixbuf = global::Gdk.Pixbuf.LoadFromResource("monitor.ressources.pan-end-symbolic.symbolic.png"); - this.buttonRight.Image = w47; + global::Gtk.Image w46 = new global::Gtk.Image(); + w46.Pixbuf = global::Gdk.Pixbuf.LoadFromResource("monitor.ressources.pan-end-symbolic.symbolic.png"); + this.buttonRight.Image = w46; this.table4.Add(this.buttonRight); - global::Gtk.Table.TableChild w48 = ((global::Gtk.Table.TableChild)(this.table4[this.buttonRight])); - w48.TopAttach = ((uint)(1)); - w48.BottomAttach = ((uint)(2)); - w48.LeftAttach = ((uint)(2)); - w48.RightAttach = ((uint)(3)); - w48.XOptions = ((global::Gtk.AttachOptions)(4)); - w48.YOptions = ((global::Gtk.AttachOptions)(4)); + global::Gtk.Table.TableChild w47 = ((global::Gtk.Table.TableChild)(this.table4[this.buttonRight])); + w47.TopAttach = ((uint)(1)); + w47.BottomAttach = ((uint)(2)); + w47.LeftAttach = ((uint)(2)); + w47.RightAttach = ((uint)(3)); + w47.XOptions = ((global::Gtk.AttachOptions)(4)); + w47.YOptions = ((global::Gtk.AttachOptions)(4)); // Container child table4.Gtk.Table+TableChild this.buttonStop = new global::Gtk.Button(); - w40.SetTip(this.buttonStop, "Stop robot movements", "Stop robot movements"); + this.buttonStop.TooltipMarkup = "Stop robot movements"; this.buttonStop.CanFocus = true; this.buttonStop.Name = "buttonStop"; this.buttonStop.UseUnderline = true; - global::Gtk.Image w49 = new global::Gtk.Image(); - w49.Pixbuf = global::Gdk.Pixbuf.LoadFromResource("monitor.ressources.hand-filled-32.png"); - this.buttonStop.Image = w49; + global::Gtk.Image w48 = new global::Gtk.Image(); + w48.Pixbuf = global::Gdk.Pixbuf.LoadFromResource("monitor.ressources.hand-filled-32.png"); + this.buttonStop.Image = w48; this.table4.Add(this.buttonStop); - global::Gtk.Table.TableChild w50 = ((global::Gtk.Table.TableChild)(this.table4[this.buttonStop])); - w50.TopAttach = ((uint)(1)); - w50.BottomAttach = ((uint)(2)); - w50.LeftAttach = ((uint)(1)); - w50.RightAttach = ((uint)(2)); - w50.XOptions = ((global::Gtk.AttachOptions)(4)); - w50.YOptions = ((global::Gtk.AttachOptions)(4)); + global::Gtk.Table.TableChild w49 = ((global::Gtk.Table.TableChild)(this.table4[this.buttonStop])); + w49.TopAttach = ((uint)(1)); + w49.BottomAttach = ((uint)(2)); + w49.LeftAttach = ((uint)(1)); + w49.RightAttach = ((uint)(2)); + w49.XOptions = ((global::Gtk.AttachOptions)(4)); + w49.YOptions = ((global::Gtk.AttachOptions)(4)); this.alignment8.Add(this.table4); this.vbox9.Add(this.alignment8); - global::Gtk.Box.BoxChild w52 = ((global::Gtk.Box.BoxChild)(this.vbox9[this.alignment8])); - w52.Position = 0; - w52.Expand = false; - w52.Fill = false; + global::Gtk.Box.BoxChild w51 = ((global::Gtk.Box.BoxChild)(this.vbox9[this.alignment8])); + w51.Position = 0; + w51.Expand = false; + w51.Fill = false; // Container child vbox9.Gtk.Box+BoxChild this.table3 = new global::Gtk.Table(((uint)(1)), ((uint)(2)), false); this.table3.Name = "table3"; @@ -628,10 +625,10 @@ public partial class MainWindow this.label3.LabelProp = global::Mono.Unix.Catalog.GetString("Battery level:"); this.label3.Justify = ((global::Gtk.Justification)(1)); this.table3.Add(this.label3); - global::Gtk.Table.TableChild w53 = ((global::Gtk.Table.TableChild)(this.table3[this.label3])); - w53.YPadding = ((uint)(10)); - w53.XOptions = ((global::Gtk.AttachOptions)(4)); - w53.YOptions = ((global::Gtk.AttachOptions)(4)); + global::Gtk.Table.TableChild w52 = ((global::Gtk.Table.TableChild)(this.table3[this.label3])); + w52.YPadding = ((uint)(10)); + w52.XOptions = ((global::Gtk.AttachOptions)(4)); + w52.YOptions = ((global::Gtk.AttachOptions)(4)); // Container child table3.Gtk.Table+TableChild this.labelBatteryLevel = new global::Gtk.Label(); this.labelBatteryLevel.Name = "labelBatteryLevel"; @@ -639,49 +636,36 @@ public partial class MainWindow this.labelBatteryLevel.Xalign = 0F; this.labelBatteryLevel.LabelProp = global::Mono.Unix.Catalog.GetString("Unknown"); this.table3.Add(this.labelBatteryLevel); - global::Gtk.Table.TableChild w54 = ((global::Gtk.Table.TableChild)(this.table3[this.labelBatteryLevel])); - w54.LeftAttach = ((uint)(1)); - w54.RightAttach = ((uint)(2)); - w54.YOptions = ((global::Gtk.AttachOptions)(4)); + global::Gtk.Table.TableChild w53 = ((global::Gtk.Table.TableChild)(this.table3[this.labelBatteryLevel])); + w53.LeftAttach = ((uint)(1)); + w53.RightAttach = ((uint)(2)); + w53.YOptions = ((global::Gtk.AttachOptions)(4)); this.vbox9.Add(this.table3); - global::Gtk.Box.BoxChild w55 = ((global::Gtk.Box.BoxChild)(this.vbox9[this.table3])); - w55.Position = 2; - w55.Expand = false; - w55.Fill = false; - // Container child vbox9.Gtk.Box+BoxChild - this.checkButtonGetBattery = new global::Gtk.CheckButton(); - this.checkButtonGetBattery.CanFocus = true; - this.checkButtonGetBattery.Name = "checkButtonGetBattery"; - this.checkButtonGetBattery.Label = global::Mono.Unix.Catalog.GetString("Get battery level"); - this.checkButtonGetBattery.Active = true; - this.checkButtonGetBattery.DrawIndicator = true; - this.checkButtonGetBattery.UseUnderline = true; - this.vbox9.Add(this.checkButtonGetBattery); - global::Gtk.Box.BoxChild w56 = ((global::Gtk.Box.BoxChild)(this.vbox9[this.checkButtonGetBattery])); - w56.Position = 3; - w56.Expand = false; - w56.Fill = false; + global::Gtk.Box.BoxChild w54 = ((global::Gtk.Box.BoxChild)(this.vbox9[this.table3])); + w54.Position = 2; + w54.Expand = false; + w54.Fill = false; this.gtkAlignmentRobotControl.Add(this.vbox9); this.vbox12.Add(this.gtkAlignmentRobotControl); - global::Gtk.Box.BoxChild w58 = ((global::Gtk.Box.BoxChild)(this.vbox12[this.gtkAlignmentRobotControl])); - w58.Position = 1; + global::Gtk.Box.BoxChild w56 = ((global::Gtk.Box.BoxChild)(this.vbox12[this.gtkAlignmentRobotControl])); + w56.Position = 1; this.vbox5.Add(this.vbox12); - global::Gtk.Box.BoxChild w59 = ((global::Gtk.Box.BoxChild)(this.vbox5[this.vbox12])); - w59.Position = 4; + global::Gtk.Box.BoxChild w57 = ((global::Gtk.Box.BoxChild)(this.vbox5[this.vbox12])); + w57.Position = 4; this.alignment3.Add(this.vbox5); this.hbox3.Add(this.alignment3); - global::Gtk.Box.BoxChild w61 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.alignment3])); - w61.Position = 1; - w61.Expand = false; - w61.Fill = false; + global::Gtk.Box.BoxChild w59 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.alignment3])); + w59.Position = 1; + w59.Expand = false; + w59.Fill = false; this.hbox1.Add(this.hbox3); - global::Gtk.Box.BoxChild w62 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.hbox3])); - w62.Position = 1; - w62.Expand = false; - w62.Fill = false; + global::Gtk.Box.BoxChild w60 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.hbox3])); + w60.Position = 1; + w60.Expand = false; + w60.Fill = false; this.vbox1.Add(this.hbox1); - global::Gtk.Box.BoxChild w63 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.hbox1])); - w63.Position = 1; + global::Gtk.Box.BoxChild w61 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.hbox1])); + w61.Position = 1; this.Add(this.vbox1); if ((this.Child != null)) { diff --git a/software/monitor/monitor/gtk-gui/gui.stetic b/software/monitor/monitor/gtk-gui/gui.stetic index c5412f8..26af0d7 100644 --- a/software/monitor/monitor/gtk-gui/gui.stetic +++ b/software/monitor/monitor/gtk-gui/gui.stetic @@ -809,20 +809,7 @@ - - - True - Get battery level - True - True - True - - - 3 - True - False - False - + diff --git a/software/monitor/monitor/monitor b/software/monitor/monitor/monitor index f916d3ae3fc85d69d1cf992a3f13a9814d298b2e..91a9f4d836646883dad1f4959056950b51297112 100755 GIT binary patch delta 31419 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 delta 31020 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 L`>l3lUf}-#b)u6%