aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2020-10-13 08:20:23 +0300
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2020-10-13 08:20:23 +0300
commit9c59f5be697bd0a1a7992239a3701dd7670747ec (patch)
tree3d13fd0a9ad11431414c630b827973c983ab91d3 /Software/Visual_Studio
parent28f7a6f566c4e951d3d40c449813fce0c7460ca7 (diff)
downloadTango-9c59f5be697bd0a1a7992239a3701dd7670747ec.tar.gz
Tango-9c59f5be697bd0a1a7992239a3701dd7670747ec.zip
Implemented ink waste cartridge filling emptying progress.
Diffstat (limited to 'Software/Visual_Studio')
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Images/cl-full.pngbin0 -> 3454 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Images/lubricant2.pngbin0 -> 194234 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/Colors.xaml11
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj6
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/LayoutViewVM.cs130
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Views/LayoutView.xaml15
-rw-r--r--Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs10
-rw-r--r--Software/Visual_Studio/Tango.Integration/Operation/IMachineOperator.cs16
-rw-r--r--Software/Visual_Studio/Tango.Integration/Operation/InkFillingStatusChangedEventArgs.cs14
-rw-r--r--Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs175
-rw-r--r--Software/Visual_Studio/Tango.Integration/Tango.Integration.csproj3
-rw-r--r--Software/Visual_Studio/Tango.PMR/IFS/CartridgeState.cs58
12 files changed, 408 insertions, 30 deletions
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Images/cl-full.png b/Software/Visual_Studio/PPC/Tango.PPC.Common/Images/cl-full.png
new file mode 100644
index 000000000..5aaea8e6c
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Images/cl-full.png
Binary files differ
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Images/lubricant2.png b/Software/Visual_Studio/PPC/Tango.PPC.Common/Images/lubricant2.png
new file mode 100644
index 000000000..554c16305
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Images/lubricant2.png
Binary files differ
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/Colors.xaml b/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/Colors.xaml
index 03f4b6f36..5fdbcf5f8 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/Colors.xaml
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/Colors.xaml
@@ -2,6 +2,17 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Tango.PPC.Common.Resources">
+ <BitmapImage x:Key="TangoImageLubricant" UriSource="../Images/lubricant2.png" />
+ <BitmapImage x:Key="TangoImageCleaner" UriSource="../Images/cl-full.png" />
+ <SolidColorBrush x:Key="TangoBlackInkBrush" Color="Black" />
+ <SolidColorBrush x:Key="TangoMagentaInkBrush" Color="#ED008C" />
+ <SolidColorBrush x:Key="TangoCyanInkBrush" Color="#1662EB" />
+ <SolidColorBrush x:Key="TangoYellowInkBrush" Color="#E8FF0C" />
+ <SolidColorBrush x:Key="TangoWasteBrush" Color="#2BA221" />
+ <SolidColorBrush x:Key="TangoTransparentInkBrush" Color="#E9E9E9" />
+ <SolidColorBrush x:Key="TangoLubricantBrush" Color="#DEDAC4" />
+ <SolidColorBrush x:Key="TangoCleanerBrush" Color="#8BEC83" />
+
</ResourceDictionary> \ No newline at end of file
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj b/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj
index 87b322f04..2e0c6843e 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj
@@ -479,6 +479,10 @@
<ItemGroup>
<None Include="Resources\tap.png" />
</ItemGroup>
+ <ItemGroup>
+ <Resource Include="Images\cl-full.png" />
+ <Resource Include="Images\lubricant2.png" />
+ </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\..\packages\System.Data.SQLite.Core.1.0.108.0\build\net46\System.Data.SQLite.Core.targets" Condition="Exists('..\..\packages\System.Data.SQLite.Core.1.0.108.0\build\net46\System.Data.SQLite.Core.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
@@ -489,7 +493,7 @@
</Target>
<ProjectExtensions>
<VisualStudio>
- <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
+ <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
</VisualStudio>
</ProjectExtensions>
</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/LayoutViewVM.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/LayoutViewVM.cs
index 2bb4e9286..65df72878 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/LayoutViewVM.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/LayoutViewVM.cs
@@ -3,11 +3,16 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Media;
using System.Windows.Threading;
+using Tango.Core;
using Tango.Core.Commands;
using Tango.Core.DI;
using Tango.Integration.Operation;
+using Tango.PMR.IFS;
using Tango.PPC.Common;
+using Tango.PPC.Common.Connection;
using Tango.PPC.Common.Modules;
using Tango.PPC.Common.Navigation;
using Tango.PPC.UI.Views;
@@ -31,6 +36,86 @@ namespace Tango.PPC.UI.ViewModels
[TangoInject]
public IPPCModuleLoader ModuleLoader { get; set; }
+ #region Classes
+
+ public class CartridgeModel : ExtendedObject
+ {
+ private IMachineProvider _machineProvider;
+
+ public CartridgeStatus Status { get; set; }
+
+ public bool InProgress
+ {
+ get { return Status.State == CartridgeState.Filling || Status.State == CartridgeState.Emptying; }
+ }
+
+ public String Message
+ {
+ get { return Status.Cartridge.Slot == PMR.Diagnostics.CartridgeSlot.Ink ? "Ink filling is in progress..." : "Waste emptying is in progress..."; }
+ }
+
+ public Brush Brush
+ {
+ get
+ {
+ if (Status.Cartridge.Slot == PMR.Diagnostics.CartridgeSlot.Ink)
+ {
+ try
+ {
+ int index = Status.Cartridge.Index;
+
+ var idsPack = _machineProvider.Machine.Configuration.IdsPacks.FirstOrDefault(x => x.PackIndex == index);
+
+ if (idsPack != null)
+ {
+ switch (idsPack.LiquidType.Type)
+ {
+ case BL.Enumerations.LiquidTypes.Cyan:
+ return Application.Current.Resources["TangoCyanInkBrush"] as Brush;
+ case BL.Enumerations.LiquidTypes.Magenta:
+ return Application.Current.Resources["TangoMagentaInkBrush"] as Brush;
+ case BL.Enumerations.LiquidTypes.Yellow:
+ return Application.Current.Resources["TangoYellowInkBrush"] as Brush;
+ case BL.Enumerations.LiquidTypes.Black:
+ return Application.Current.Resources["TangoBlackInkBrush"] as Brush;
+ case BL.Enumerations.LiquidTypes.Lubricant:
+ return Application.Current.Resources["TangoLubricantBrush"] as Brush;
+ case BL.Enumerations.LiquidTypes.Cleaner:
+ return Application.Current.Resources["TangoCleanerBrush"] as Brush;
+ case BL.Enumerations.LiquidTypes.TransparentInk:
+ return Application.Current.Resources["TangoTransparentInkBrush"] as Brush;
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error generating ink filling brush.");
+ }
+
+ return Application.Current.Resources["TangoPrimaryAccentBrush"] as Brush;
+ }
+ else
+ {
+ return Application.Current.Resources["TangoWasteBrush"] as Brush;
+ }
+ }
+ }
+
+ public CartridgeModel(IMachineProvider machineProvider)
+ {
+ _machineProvider = machineProvider;
+ Status = new CartridgeStatus();
+ }
+
+ public void Invalidate()
+ {
+ RaisePropertyChanged(nameof(InProgress));
+ RaisePropertyChanged(nameof(Status));
+ }
+ }
+
+ #endregion
+
#region Properties
private bool _isMenuOpened;
@@ -74,6 +159,23 @@ namespace Tango.PPC.UI.ViewModels
set { _isPowerOpened = value; RaisePropertyChangedAuto(); }
}
+ private bool _isInkFillingOrWasteEmptying;
+ /// <summary>
+ /// Gets or sets a value indicating whether ink filling or waste emptying is active.
+ /// </summary>
+ public bool IsInkFillingOrWasteEmptying
+ {
+ get { return _isInkFillingOrWasteEmptying; }
+ set { _isInkFillingOrWasteEmptying = value; RaisePropertyChangedAuto(); }
+ }
+
+ private List<CartridgeModel> _cartridges;
+ public List<CartridgeModel> Cartridges
+ {
+ get { return _cartridges; }
+ set { _cartridges = value; RaisePropertyChangedAuto(); }
+ }
+
#endregion
#region Commands
@@ -312,6 +414,34 @@ namespace Tango.PPC.UI.ViewModels
{
base.OnApplicationStarted();
MachineProvider.MachineOperator.PrintingStarted += MachineOperator_PrintingStarted;
+ MachineProvider.MachineOperator.InkFillingStatusChanged += MachineOperator_InkFillingStatusChanged;
+ }
+
+ private void MachineOperator_InkFillingStatusChanged(object sender, InkFillingStatusChangedEventArgs e)
+ {
+ if (Cartridges == null)
+ {
+ Cartridges = MachineProvider.MachineOperator.InkFillingStatus.CartridgesStatuses.Select(x => new CartridgeModel(MachineProvider) { Status = x }).ToList();
+ }
+ else
+ {
+ foreach (var cartridgeStatus in e.Status.CartridgesStatuses)
+ {
+ var model = Cartridges.SingleOrDefault(x => x.Status == cartridgeStatus);
+
+ if (model != null)
+ {
+ model.Status = cartridgeStatus;
+ }
+ }
+ }
+
+ foreach (var cartridgeModel in Cartridges)
+ {
+ cartridgeModel.Invalidate();
+ }
+
+ IsInkFillingOrWasteEmptying = Cartridges.Any(x => x.Status.State == CartridgeState.Filling || x.Status.State == CartridgeState.Emptying);
}
/// <summary>
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/LayoutView.xaml b/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/LayoutView.xaml
index d428b1aba..8b701156a 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/LayoutView.xaml
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/LayoutView.xaml
@@ -325,6 +325,21 @@
</DockPanel>
</Border>
+ <Border Margin="0 0 0 0" DockPanel.Dock="Top" Visibility="{Binding IsInkFillingOrWasteEmptying,Converter={StaticResource BooleanToVisibilityConverter}}">
+ <ItemsControl ItemsSource="{Binding Cartridges}">
+ <ItemsControl.ItemTemplate>
+ <DataTemplate>
+ <Border Margin="0 5 0 0" Visibility="{Binding InProgress,Converter={StaticResource BooleanToVisibilityConverter}}">
+ <StackPanel>
+ <TextBlock Margin="5 0 0 0" Text="{Binding Message,Mode=OneWay}" FontSize="{StaticResource TangoSmallFontSize}"></TextBlock>
+ <touch:TouchProgressBar Foreground="{Binding Brush,Mode=OneWay}" Background="#DBDBDB" Height="3" Margin="0 2 0 0" Minimum="0" Maximum="100" Value="{Binding Status.ProgressPercentage}" />
+ </StackPanel>
+ </Border>
+ </DataTemplate>
+ </ItemsControl.ItemTemplate>
+ </ItemsControl>
+ </Border>
+
<Grid Background="{StaticResource TangoKeyboardBackground}">
<controls:NavigationControl x:Name="NavigationControl" x:FieldModifier="public" TransitionAlwaysFades="False" TransitionType="Zoom" KeepElementsAttached="False" UseDefferedRendering="True">
<!--MODULES GOES HERE-->
diff --git a/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs b/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs
index 779e110e8..5276aba8d 100644
--- a/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs
+++ b/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs
@@ -240,20 +240,20 @@ namespace Tango.Emulations.Emulators
Index = i,
Slot = CartridgeSlot.Ink,
},
- State = CartridgeState.Exists
+ State = CartridgeState.Present
});
}
InkFillingStatus.CartridgesStatuses.Add(new CartridgeStatus()
{
- Cartridge = new Cartridge() { Index = 0, Slot = CartridgeSlot.WasteLower },
- State = CartridgeState.Exists
+ Cartridge = new Cartridge() { Index = 0, Slot = CartridgeSlot.WasteMiddle },
+ State = CartridgeState.Present
});
InkFillingStatus.CartridgesStatuses.Add(new CartridgeStatus()
{
- Cartridge = new Cartridge() { Index = 1, Slot = CartridgeSlot.WasteMiddle },
- State = CartridgeState.Exists
+ Cartridge = new Cartridge() { Index = 1, Slot = CartridgeSlot.WasteLower },
+ State = CartridgeState.Present
});
}
diff --git a/Software/Visual_Studio/Tango.Integration/Operation/IMachineOperator.cs b/Software/Visual_Studio/Tango.Integration/Operation/IMachineOperator.cs
index 8bce840d9..9bd0932e9 100644
--- a/Software/Visual_Studio/Tango.Integration/Operation/IMachineOperator.cs
+++ b/Software/Visual_Studio/Tango.Integration/Operation/IMachineOperator.cs
@@ -25,6 +25,7 @@ using Tango.Integration.Emergency;
using Tango.PMR.MachineStatus;
using Tango.PMR.ThreadLoading;
using Tango.PMR.Power;
+using Tango.PMR.IFS;
namespace Tango.Integration.Operation
{
@@ -81,6 +82,11 @@ namespace Tango.Integration.Operation
StartThreadLoadingResponse ThreadLoadingStatus { get; }
/// <summary>
+ /// Gets the ink filling status.
+ /// </summary>
+ InkFillingStatus InkFillingStatus { get; }
+
+ /// <summary>
/// Gets or sets the firmware upgrade mode.
/// </summary>
FirmwareUpgradeModes FirmwareUpgradeMode { get; set; }
@@ -246,6 +252,11 @@ namespace Tango.Integration.Operation
event EventHandler<HeadCleaningEndedEventArgs> HeadCleaningEnded;
/// <summary>
+ /// Occurs when the ink filling status has changed.
+ /// </summary>
+ event EventHandler<InkFillingStatusChangedEventArgs> InkFillingStatusChanged;
+
+ /// <summary>
/// Gets or sets a value indicating whether direct the embedded device to send diagnostics messages.
/// </summary>
bool EnableDiagnostics { get; set; }
@@ -281,6 +292,11 @@ namespace Tango.Integration.Operation
bool EnablePowerUpSequence { get; set; }
/// <summary>
+ /// Gets or sets a value indicating whether to enable the ink/waste filling status channel.
+ /// </summary>
+ bool EnableInkFillingStatus { get; set; }
+
+ /// <summary>
/// Gets the last process parameters table sent to the embedded device.
/// </summary>
ProcessParametersTable CurrentProcessParameters { get; }
diff --git a/Software/Visual_Studio/Tango.Integration/Operation/InkFillingStatusChangedEventArgs.cs b/Software/Visual_Studio/Tango.Integration/Operation/InkFillingStatusChangedEventArgs.cs
new file mode 100644
index 000000000..e674dc777
--- /dev/null
+++ b/Software/Visual_Studio/Tango.Integration/Operation/InkFillingStatusChangedEventArgs.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.PMR.IFS;
+
+namespace Tango.Integration.Operation
+{
+ public class InkFillingStatusChangedEventArgs : EventArgs
+ {
+ public InkFillingStatus Status { get; set; }
+ }
+}
diff --git a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs
index 85034f278..4978a90f3 100644
--- a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs
+++ b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs
@@ -44,6 +44,7 @@ using System.Globalization;
using Tango.PMR.Power;
using Tango.PMR.ThreadLoading;
using Tango.BL.DTO;
+using Tango.PMR.IFS;
namespace Tango.Integration.Operation
{
@@ -70,6 +71,7 @@ namespace Tango.Integration.Operation
private bool _eventsSent;
private bool _debugSent;
private bool _machineStatusSent;
+ private bool _inkFillingStatusSent;
private bool _threadLoadingSent;
private static RunningJobStatus _last_job_status;
private bool _isPowerDownRequestInProgress;
@@ -129,6 +131,7 @@ namespace Tango.Integration.Operation
JobRunsLogger.Start();
EnableEventsNotification = true;
EnableMachineStatusUpdates = true;
+ EnableInkFillingStatus = true;
EnableJobResume = true;
LogEmbeddedDebuggingToFile = true;
FirmwareUpgradeMode = FirmwareUpgradeModes.DFU | FirmwareUpgradeModes.TFP_PACKAGE;
@@ -137,6 +140,7 @@ namespace Tango.Integration.Operation
EnableJobLiquidQuantityValidation = true;
FailsWithAdapter = true;
ContinuousRequestTimeout = TimeSpan.FromSeconds(2);
+ ResetInkFllingStatus();
}
/// <summary>
@@ -277,6 +281,11 @@ namespace Tango.Integration.Operation
/// </summary>
public event EventHandler<HeadCleaningEndedEventArgs> HeadCleaningEnded;
+ /// <summary>
+ /// Occurs when the ink filling status has changed.
+ /// </summary>
+ public event EventHandler<InkFillingStatusChangedEventArgs> InkFillingStatusChanged;
+
#endregion
#region Properties
@@ -354,6 +363,16 @@ namespace Tango.Integration.Operation
private set { _machineStatus = value; RaisePropertyChangedAuto(); }
}
+ private InkFillingStatus _inkFillingStatus;
+ /// <summary>
+ /// Gets or sets the ink filling status.
+ /// </summary>
+ public InkFillingStatus InkFillingStatus
+ {
+ get { return _inkFillingStatus; }
+ private set { _inkFillingStatus = value; RaisePropertyChangedAuto(); }
+ }
+
private StartThreadLoadingResponse _threadLoadingStatus;
/// <summary>
/// Gets the current thread loading status.
@@ -499,6 +518,21 @@ namespace Tango.Integration.Operation
}
}
+ private bool _enableInkFillingStatus;
+ public bool EnableInkFillingStatus
+ {
+ get { return _enableInkFillingStatus; }
+ set
+ {
+ if (_enableInkFillingStatus != value)
+ {
+ _enableInkFillingStatus = value;
+ RaisePropertyChangedAuto();
+ OnEnableInkFillingStatus(value);
+ }
+ }
+ }
+
private bool _enableAutomaticThreadLoading;
/// <summary>
/// Gets or sets a value indicating whether to enable automatic thread loading support.
@@ -816,6 +850,45 @@ namespace Tango.Integration.Operation
}
/// <summary>
+ /// Called when the enable ink filling status has been changed.
+ /// </summary>
+ /// <param name="value">if set to <c>true</c> [value].</param>
+ protected virtual void OnEnableInkFillingStatus(bool value)
+ {
+ if (value && State == TransportComponentState.Connected && !_inkFillingStatusSent)
+ {
+ var request = new StartInkFillingStatusRequest();
+
+ bool responseLogged = false;
+ _inkFillingStatusSent = true;
+
+ SendContinuousRequest<StartInkFillingStatusRequest, StartInkFillingStatusResponse>(request, new TransportContinuousRequestConfig() { ShouldLog = true }).ObserveOn(new NewThreadScheduler()).Subscribe(
+ (response) =>
+ {
+ OnInkFillingStatusChanged(response);
+
+ if (!responseLogged)
+ {
+ responseLogged = true;
+ }
+ },
+ (ex) =>
+ {
+ _inkFillingStatusSent = false;
+ },
+ () =>
+ {
+ _inkFillingStatusSent = false;
+ LogManager.Log("Ink filling status response completed!?", LogCategory.Warning);
+ });
+ }
+ else if (_inkFillingStatusSent)
+ {
+ _inkFillingStatusSent = false;
+ }
+ }
+
+ /// <summary>
/// Called when the enable automatic thread loading has been changed
/// </summary>
/// <param name="value">if set to <c>true</c> [value].</param>
@@ -922,6 +995,60 @@ namespace Tango.Integration.Operation
}
/// <summary>
+ /// Called when ink filling status has been changed.
+ /// </summary>
+ /// <param name="response">The response.</param>
+ protected virtual void OnInkFillingStatusChanged(StartInkFillingStatusResponse response)
+ {
+ if (response.Status == null || response.Status.CartridgesStatuses == null || response.Status.CartridgesStatuses.Count == 0) return;
+
+ int index = -1;
+ bool raiseChange = false;
+
+ foreach (var remoteCartridge in response.Status.CartridgesStatuses)
+ {
+ index++;
+
+ if (remoteCartridge.Cartridge == null)
+ {
+ LogManager.Log($"Remote cartridge arrived with null cartridge at position [{index}] and will be ignored.", LogCategory.Error);
+ continue;
+ }
+
+ var localCartridge = InkFillingStatus.CartridgesStatuses.SingleOrDefault(x => x.Cartridge.Index == remoteCartridge.Cartridge.Index && x.Cartridge.Slot == remoteCartridge.Cartridge.Slot);
+
+ if (localCartridge != null)
+ {
+ if (localCartridge.State != remoteCartridge.State)
+ {
+ localCartridge.State = remoteCartridge.State;
+ LogManager.Log($"{localCartridge.Cartridge.Slot} Cartridge '{localCartridge.Cartridge.Index}' state changed: '{localCartridge.State}' => '{remoteCartridge.State}'.");
+ }
+
+ if (remoteCartridge.Cartridge.Tag != null)
+ {
+ LogManager.Log($"{localCartridge.Cartridge.Slot} Cartridge '{localCartridge.Cartridge.Index}' Tag arrived:\n{remoteCartridge.Cartridge.Tag.ToJsonString()}");
+ }
+
+ localCartridge.Message = remoteCartridge.Message;
+ localCartridge.ProgressPercentage = remoteCartridge.ProgressPercentage;
+
+ raiseChange = true;
+ }
+ else
+ {
+ LogManager.Log($"Could not locate local cartridge with slot '{remoteCartridge.Cartridge.Slot}' and index '{remoteCartridge.Cartridge.Index}'.", LogCategory.Error);
+ }
+ }
+
+ if (raiseChange)
+ {
+ RaisePropertyChanged(nameof(InkFillingStatus));
+ InkFillingStatusChanged?.Invoke(this, new InkFillingStatusChangedEventArgs() { Status = InkFillingStatus });
+ }
+ }
+
+ /// <summary>
/// Called when the machine state has been changed.
/// </summary>
/// <param name="state">The state.</param>
@@ -1267,6 +1394,7 @@ namespace Tango.Integration.Operation
}
ResetEvents();
+ ResetInkFllingStatus();
await base.Disconnect();
}
@@ -1318,6 +1446,7 @@ namespace Tango.Integration.Operation
OnEnableEventsNotification(EnableEventsNotification);
OnEnableMachineStatusUpdatesChanged(EnableMachineStatusUpdates);
OnEnableAutomaticThreadLoadingChanged(EnableAutomaticThreadLoading);
+ OnEnableInkFillingStatus(EnableInkFillingStatus);
if (EnablePowerUpSequence)
{
@@ -1351,6 +1480,52 @@ namespace Tango.Integration.Operation
#region Private Methods
+ private void ResetInkFllingStatus()
+ {
+ if (InkFillingStatus == null)
+ {
+ var status = new InkFillingStatus();
+
+ for (int i = 0; i < 8; i++)
+ {
+ status.CartridgesStatuses.Add(new CartridgeStatus()
+ {
+ Cartridge = new Cartridge()
+ {
+ Index = i,
+ Slot = CartridgeSlot.Ink,
+ },
+ State = CartridgeState.Absent
+ });
+ }
+
+ status.CartridgesStatuses.Add(new CartridgeStatus()
+ {
+ Cartridge = new Cartridge() { Index = 0, Slot = CartridgeSlot.WasteMiddle },
+ State = CartridgeState.Absent
+ });
+
+ status.CartridgesStatuses.Add(new CartridgeStatus()
+ {
+ Cartridge = new Cartridge() { Index = 1, Slot = CartridgeSlot.WasteLower },
+ State = CartridgeState.Absent
+ });
+
+ InkFillingStatus = status;
+ }
+ else
+ {
+ foreach (var cartridge in InkFillingStatus.CartridgesStatuses)
+ {
+ cartridge.ProgressPercentage = 0;
+ cartridge.Message = String.Empty;
+ cartridge.State = CartridgeState.Absent;
+ }
+ }
+
+ InkFillingStatusChanged?.Invoke(this, new InkFillingStatusChangedEventArgs() { Status = InkFillingStatus });
+ }
+
private void SaveCachedJobOperation(Job job)
{
try
diff --git a/Software/Visual_Studio/Tango.Integration/Tango.Integration.csproj b/Software/Visual_Studio/Tango.Integration/Tango.Integration.csproj
index 7efd29d0a..591cd282a 100644
--- a/Software/Visual_Studio/Tango.Integration/Tango.Integration.csproj
+++ b/Software/Visual_Studio/Tango.Integration/Tango.Integration.csproj
@@ -121,6 +121,7 @@
<Compile Include="Operation\HeadCleaningHandler.cs" />
<Compile Include="Operation\HeadCleaningStatusChangedEventArgs.cs" />
<Compile Include="Operation\IGradientGenerationConfiguration.cs" />
+ <Compile Include="Operation\InkFillingStatusChangedEventArgs.cs" />
<Compile Include="Operation\InsufficientLiquidQuantityException.cs" />
<Compile Include="Operation\JobDescriptionFile.cs" />
<Compile Include="Operation\JobLiquidQuantityCalculationMode.cs" />
@@ -220,7 +221,7 @@
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<ProjectExtensions>
<VisualStudio>
- <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
+ <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
</VisualStudio>
</ProjectExtensions>
</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/Tango.PMR/IFS/CartridgeState.cs b/Software/Visual_Studio/Tango.PMR/IFS/CartridgeState.cs
index 815d7b370..6b2daa8f7 100644
--- a/Software/Visual_Studio/Tango.PMR/IFS/CartridgeState.cs
+++ b/Software/Visual_Studio/Tango.PMR/IFS/CartridgeState.cs
@@ -22,12 +22,13 @@ namespace Tango.PMR.IFS {
static CartridgeStateReflection() {
byte[] descriptorData = global::System.Convert.FromBase64String(
string.Concat(
- "ChRDYXJ0cmlkZ2VTdGF0ZS5wcm90bxINVGFuZ28uUE1SLklGUyqoAQoOQ2Fy",
- "dHJpZGdlU3RhdGUSCAoETm9uZRAAEgoKBkFic2VudBABEgoKBkV4aXN0cxAC",
- "EgwKCEluc2VydGVkEAMSCwoHRmlsbGluZxAEEhQKEEZpbGxpbmdDb21wbGV0",
- "ZWQQBRIMCghFbXB0eWluZxAGEhUKEUVtcHR5aW5nQ29tcGxldGVkEAcSCQoF",
- "RW1wdHkQCBIICgRGdWxsEAkSCQoFRXJyb3IQCkIZChdjb20udHdpbmUudGFu",
- "Z28ucG1yLmlmc2IGcHJvdG8z"));
+ "ChRDYXJ0cmlkZ2VTdGF0ZS5wcm90bxINVGFuZ28uUE1SLklGUyrPAQoOQ2Fy",
+ "dHJpZGdlU3RhdGUSCAoETm9uZRAAEgoKBkFic2VudBABEgsKB1ByZXNlbnQQ",
+ "AhIMCghJbnNlcnRlZBADEgkKBUVtcHR5EAQSCAoERnVsbBAFEgkKBUVycm9y",
+ "EAYSCwoHRmlsbGluZxAKEhQKEEZpbGxpbmdDb21wbGV0ZWQQCxIRCg1GaWxs",
+ "aW5nRmFpbGVkEAwSDAoIRW1wdHlpbmcQFBIVChFFbXB0eWluZ0NvbXBsZXRl",
+ "ZBAVEhEKDUVtcHlpbmdGYWlsZWQQFkIZChdjb20udHdpbmUudGFuZ28ucG1y",
+ "Lmlmc2IGcHJvdG8z"));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { },
new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Tango.PMR.IFS.CartridgeState), }, null));
@@ -36,6 +37,9 @@ namespace Tango.PMR.IFS {
}
#region Enums
+ /// <summary>
+ ///OT = One Trigger, meaning, the state should be sent once, then return to a none OT state.
+ /// </summary>
public enum CartridgeState {
/// <summary>
///Unspecified.
@@ -46,41 +50,49 @@ namespace Tango.PMR.IFS {
/// </summary>
[pbr::OriginalName("Absent")] Absent = 1,
/// <summary>
- ///Waste or ink cartridge exists.
+ ///Waste or ink cartridge present.
/// </summary>
- [pbr::OriginalName("Exists")] Exists = 2,
+ [pbr::OriginalName("Present")] Present = 2,
/// <summary>
- ///Waste or ink cartridge inserted.
+ ///Waste or ink cartridge inserted. | OT
/// </summary>
[pbr::OriginalName("Inserted")] Inserted = 3,
/// <summary>
- ///Ink cartridge is now filling...
+ ///Waste or ink cartridge is empty.
/// </summary>
- [pbr::OriginalName("Filling")] Filling = 4,
+ [pbr::OriginalName("Empty")] Empty = 4,
/// <summary>
- ///Ink cartridge filing completed.
+ ///Waste or ink cartridge is full.
/// </summary>
- [pbr::OriginalName("FillingCompleted")] FillingCompleted = 5,
+ [pbr::OriginalName("Full")] Full = 5,
/// <summary>
- ///Waste cartridge is emptying...
+ ///Waste or ink is in an error state. (unrelated to filling or emptying)
/// </summary>
- [pbr::OriginalName("Emptying")] Emptying = 6,
+ [pbr::OriginalName("Error")] Error = 6,
/// <summary>
- ///Waste cartridge emptying completed.
+ ///Ink cartridge is now filling...
/// </summary>
- [pbr::OriginalName("EmptyingCompleted")] EmptyingCompleted = 7,
+ [pbr::OriginalName("Filling")] Filling = 10,
/// <summary>
- ///Waste or ink cartridge is empty.
+ ///Ink cartridge filing completed. | OT
/// </summary>
- [pbr::OriginalName("Empty")] Empty = 8,
+ [pbr::OriginalName("FillingCompleted")] FillingCompleted = 11,
/// <summary>
- ///Waste or ink cartridge is full.
+ ///Error occurred while ink filling. | OT
+ /// </summary>
+ [pbr::OriginalName("FillingFailed")] FillingFailed = 12,
+ /// <summary>
+ ///Waste cartridge is emptying...
+ /// </summary>
+ [pbr::OriginalName("Emptying")] Emptying = 20,
+ /// <summary>
+ ///Waste cartridge emptying completed. | OT
/// </summary>
- [pbr::OriginalName("Full")] Full = 9,
+ [pbr::OriginalName("EmptyingCompleted")] EmptyingCompleted = 21,
/// <summary>
- ///Error occurred while filling or emptying.
+ ///Error occurred while waste emptying. | OT
/// </summary>
- [pbr::OriginalName("Error")] Error = 10,
+ [pbr::OriginalName("EmpyingFailed")] EmpyingFailed = 22,
}
#endregion