From ff183d99def579aeaaee06d89ad6bbbfa47c4107 Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Tue, 16 Jan 2018 13:15:52 +0200 Subject: Implemented velocity graph on technician module using mouse position. --- .../ViewModels/SensorsViewVM.cs | 17 ++++++++-- .../Views/SensorsView.xaml | 32 ++++++++++++++++++ .../Views/SensorsView.xaml.cs | 1 + .../Tango.Emulations/Emulators/MachineEmulator.cs | 3 ++ .../Tango.Emulations/Tango.Emulations.csproj | 2 ++ .../Tango.PMR/Diagnostics/PushSensorsResponse.cs | 39 +++++++++++++++++----- 6 files changed, 83 insertions(+), 11 deletions(-) (limited to 'Software/Visual_Studio') diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/SensorsViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/SensorsViewVM.cs index 5b28916ec..c3cf7386e 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/SensorsViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/SensorsViewVM.cs @@ -82,9 +82,11 @@ namespace Tango.MachineStudio.Technician.ViewModels TemperatureController = new GraphController(); PressureController = new GraphController(); + VelocityController = new GraphController(); _controllers.Add(TemperatureController); _controllers.Add(PressureController); + _controllers.Add(VelocityController); var module = moduleLoader.UserModules.SingleOrDefault(x => x is TechnicianModule) as TechnicianModule; @@ -126,8 +128,9 @@ namespace Tango.MachineStudio.Technician.ViewModels /// The data. private void MachineOperator_SensorsDataAvailable(object sender, PushSensorsResponse data) { - TemperatureController.PushData(data.Temperature.ToArray().Select(Convert.ToDouble).ToArray()); - PressureController.PushData(data.Temperature.ToArray().Select(Convert.ToDouble).ToArray()); + TemperatureController.PushData(data.Temperature.ToArray()); + PressureController.PushData(data.Temperature.ToArray()); + VelocityController.PushData(data.Velocity.ToArray()); } #endregion @@ -174,6 +177,16 @@ namespace Tango.MachineStudio.Technician.ViewModels set { _pressureController = value; RaisePropertyChanged(nameof(PressureController)); } } + private GraphController _velocityController; + /// + /// Gets or sets the velocity sensor graph controller . + /// + public GraphController VelocityController + { + get { return _velocityController; } + set { _velocityController = value; RaisePropertyChanged(nameof(VelocityController)); } + } + #endregion } } diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Views/SensorsView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Views/SensorsView.xaml index 2e074ec3c..63feae2f3 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Views/SensorsView.xaml +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Views/SensorsView.xaml @@ -129,6 +129,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Views/SensorsView.xaml.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Views/SensorsView.xaml.cs index 4727a3603..c94c26414 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Views/SensorsView.xaml.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Views/SensorsView.xaml.cs @@ -31,6 +31,7 @@ namespace Tango.MachineStudio.Technician.Views _syncManager = new SyncManager(); _syncManager.AddGraph(graphTemperature); _syncManager.AddGraph(graphPressure); + _syncManager.AddGraph(graphVelocity); _syncManager.RefreshRate = 30; _syncManager.Start(); } diff --git a/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs b/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs index d07c526c6..fe4a994e6 100644 --- a/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs +++ b/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs @@ -15,6 +15,7 @@ using Tango.Core.Commands; using Tango.Transport; using Tango.PMR.Integration; using Tango.PMR.Diagnostics; +using System.Windows.Forms; namespace Tango.Emulations.Emulators { @@ -110,6 +111,8 @@ namespace Tango.Emulations.Emulators res.Temperature.Add((int)(150 + 75 * Math.Sin(2 * 3.14 * 10 * value))); } + res.Velocity.Add(Cursor.Position.Y); + Transporter.SendResponse(res, container.Token); Thread.Sleep(10); } diff --git a/Software/Visual_Studio/Tango.Emulations/Tango.Emulations.csproj b/Software/Visual_Studio/Tango.Emulations/Tango.Emulations.csproj index 477d7f983..d76a547d0 100644 --- a/Software/Visual_Studio/Tango.Emulations/Tango.Emulations.csproj +++ b/Software/Visual_Studio/Tango.Emulations/Tango.Emulations.csproj @@ -36,6 +36,8 @@ + + diff --git a/Software/Visual_Studio/Tango.PMR/Diagnostics/PushSensorsResponse.cs b/Software/Visual_Studio/Tango.PMR/Diagnostics/PushSensorsResponse.cs index 5ffacccc9..205665e69 100644 --- a/Software/Visual_Studio/Tango.PMR/Diagnostics/PushSensorsResponse.cs +++ b/Software/Visual_Studio/Tango.PMR/Diagnostics/PushSensorsResponse.cs @@ -23,13 +23,13 @@ namespace Tango.PMR.Diagnostics { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "ChlQdXNoU2Vuc29yc1Jlc3BvbnNlLnByb3RvEhVUYW5nby5QTVIuRGlhZ25v", - "c3RpY3MiKgoTUHVzaFNlbnNvcnNSZXNwb25zZRITCgtUZW1wZXJhdHVyZRgB", - "IAMoBUIhCh9jb20udHdpbmUudGFuZ28ucG1yLmRpYWdub3N0aWNzYgZwcm90", - "bzM=")); + "c3RpY3MiPAoTUHVzaFNlbnNvcnNSZXNwb25zZRITCgtUZW1wZXJhdHVyZRgB", + "IAMoARIQCghWZWxvY2l0eRgCIAMoAUIhCh9jb20udHdpbmUudGFuZ28ucG1y", + "LmRpYWdub3N0aWNzYgZwcm90bzM=")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Diagnostics.PushSensorsResponse), global::Tango.PMR.Diagnostics.PushSensorsResponse.Parser, new[]{ "Temperature" }, null, null, null) + new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Diagnostics.PushSensorsResponse), global::Tango.PMR.Diagnostics.PushSensorsResponse.Parser, new[]{ "Temperature", "Velocity" }, null, null, null) })); } #endregion @@ -61,6 +61,7 @@ namespace Tango.PMR.Diagnostics { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public PushSensorsResponse(PushSensorsResponse other) : this() { temperature_ = other.temperature_.Clone(); + velocity_ = other.velocity_.Clone(); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -70,14 +71,24 @@ namespace Tango.PMR.Diagnostics { /// Field number for the "Temperature" field. public const int TemperatureFieldNumber = 1; - private static readonly pb::FieldCodec _repeated_temperature_codec - = pb::FieldCodec.ForInt32(10); - private readonly pbc::RepeatedField temperature_ = new pbc::RepeatedField(); + private static readonly pb::FieldCodec _repeated_temperature_codec + = pb::FieldCodec.ForDouble(10); + private readonly pbc::RepeatedField temperature_ = new pbc::RepeatedField(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Temperature { + public pbc::RepeatedField Temperature { get { return temperature_; } } + /// Field number for the "Velocity" field. + public const int VelocityFieldNumber = 2; + private static readonly pb::FieldCodec _repeated_velocity_codec + = pb::FieldCodec.ForDouble(18); + private readonly pbc::RepeatedField velocity_ = new pbc::RepeatedField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public pbc::RepeatedField Velocity { + get { return velocity_; } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override bool Equals(object other) { return Equals(other as PushSensorsResponse); @@ -92,6 +103,7 @@ namespace Tango.PMR.Diagnostics { return true; } if(!temperature_.Equals(other.temperature_)) return false; + if(!velocity_.Equals(other.velocity_)) return false; return true; } @@ -99,6 +111,7 @@ namespace Tango.PMR.Diagnostics { public override int GetHashCode() { int hash = 1; hash ^= temperature_.GetHashCode(); + hash ^= velocity_.GetHashCode(); return hash; } @@ -110,12 +123,14 @@ namespace Tango.PMR.Diagnostics { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public void WriteTo(pb::CodedOutputStream output) { temperature_.WriteTo(output, _repeated_temperature_codec); + velocity_.WriteTo(output, _repeated_velocity_codec); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public int CalculateSize() { int size = 0; size += temperature_.CalculateSize(_repeated_temperature_codec); + size += velocity_.CalculateSize(_repeated_velocity_codec); return size; } @@ -125,6 +140,7 @@ namespace Tango.PMR.Diagnostics { return; } temperature_.Add(other.temperature_); + velocity_.Add(other.velocity_); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -136,10 +152,15 @@ namespace Tango.PMR.Diagnostics { input.SkipLastField(); break; case 10: - case 8: { + case 9: { temperature_.AddEntriesFrom(input, _repeated_temperature_codec); break; } + case 18: + case 17: { + velocity_.AddEntriesFrom(input, _repeated_velocity_codec); + break; + } } } } -- cgit v1.3.1