From 296e18704e8ccc7d35b49c83abd138d4c9869c4a Mon Sep 17 00:00:00 2001 From: Emmanuele Sassi Date: Fri, 23 Aug 2024 19:04:41 +0200 Subject: [PATCH] - funzione che restituisce prossima porta aggiorna lo stato - aggiunta funzione PlgExecProcess - aggiunti bottoni di scrittura variabili macchina - aggiunta finestrella statistiche processi --- .../DoorListPage/DoorListPageVM.vb | 29 +- .../LUA/Lua_General.vb | 15 + .../MachinePage/MachinePageV.xaml | 311 +++++++++++++----- .../MachinePage/MachinePageVM.vb | 191 ++++++++++- .../ProcessManager/ProcessManagerV.xaml | 52 +++ .../ProcessManager/ProcessManagerV.xaml.vb | 18 + .../ProcessManager/ProcessManagerVM.vb | 52 +++ .../Supervisor.Plugin.FiveLakes.vbproj | 8 + .../Utility/ExecProcessManager.vb | 151 ++++++--- 9 files changed, 689 insertions(+), 138 deletions(-) create mode 100644 Supervisor.Plugin.FiveLakes/ProcessManager/ProcessManagerV.xaml create mode 100644 Supervisor.Plugin.FiveLakes/ProcessManager/ProcessManagerV.xaml.vb create mode 100644 Supervisor.Plugin.FiveLakes/ProcessManager/ProcessManagerVM.vb diff --git a/Supervisor.Plugin.FiveLakes/DoorListPage/DoorListPageVM.vb b/Supervisor.Plugin.FiveLakes/DoorListPage/DoorListPageVM.vb index 568e045..2fdc16d 100644 --- a/Supervisor.Plugin.FiveLakes/DoorListPage/DoorListPageVM.vb +++ b/Supervisor.Plugin.FiveLakes/DoorListPage/DoorListPageVM.vb @@ -144,7 +144,11 @@ Public Class DoorListPageVM End Sub Friend Function GetNextDoor() As Door - Return m_DoorList.FirstOrDefault(Function(x) x.nState >= Door.DoorStates.SENT_TO_PRODUCTION AndAlso x.nState <= Door.DoorStates.IN_PRODUCTION) + Dim NextDoor As Door = m_DoorList.FirstOrDefault(Function(x) x.nState = Door.DoorStates.READY_FOR_PRODUCTION) + If Not IsNothing(NextDoor) Then + NextDoor.SetState(Door.DoorStates.SENT_TO_PRODUCTION) + End If + Return NextDoor End Function #End Region ' METHODS @@ -261,7 +265,7 @@ Public Class DoorListPageVM Dim sCamExePath As String = "" GetPluginPrivateProfileString(S_GENERAL, "CAMExePath", "", sCamExePath) Dim sMainLuaPath As String = "" - GetPluginPrivateProfileString(S_GENERAL, "MainLUA", "", sMainLuaPath) + GetPluginPrivateProfileString(S_GENERAL, "MainPipeLUA", "", sMainLuaPath) Dim bStartExecProcessManager As Boolean = False If IsNothing(m_ExecProcessManager) Then bStartExecProcessManager = True @@ -350,7 +354,7 @@ Public Class DoorListPageVM If IsNothing(SelDoor) Then Return Dim nOldIndex As Integer = m_DoorList.IndexOf(SelDoor) If nOldIndex = 0 Then Return - If m_DoorList(nOldIndex - 1).nState >= Door.DoorStates.SENT_TO_PRODUCTION Then Return + If m_DoorList(nOldIndex - 1).nState >= Door.DoorStates.READY_FOR_PRODUCTION Then Return m_DoorList.Move(nOldIndex, nOldIndex - 1) WriteBackup() End Sub @@ -369,7 +373,7 @@ Public Class DoorListPageVM End Property Public Sub MoveDown() - If IsNothing(SelDoor) OrElse SelDoor.nState >= Door.DoorStates.SENT_TO_PRODUCTION Then Return + If IsNothing(SelDoor) OrElse SelDoor.nState >= Door.DoorStates.READY_FOR_PRODUCTION Then Return Dim nOldIndex As Integer = m_DoorList.IndexOf(SelDoor) If nOldIndex = m_DoorList.Count - 1 Then Return m_DoorList.Move(nOldIndex, nOldIndex + 1) @@ -390,7 +394,7 @@ Public Class DoorListPageVM End Property Public Sub Delete() - If IsNothing(SelDoor) OrElse SelDoor.nState >= Door.DoorStates.SENT_TO_PRODUCTION Then Return + If IsNothing(SelDoor) OrElse SelDoor.nState >= Door.DoorStates.READY_FOR_PRODUCTION Then Return If MessageBox.Show("Are you sure you want to delete the selected door?", "Info", MessageBoxButton.YesNo, MessageBoxImage.Information) = MessageBoxResult.Yes Then m_DoorList.Remove(SelDoor) WriteBackup() @@ -415,7 +419,7 @@ Public Class DoorListPageVM If MessageBox.Show("Are you sure you want to delete all the doors?", "Info", MessageBoxButton.YesNo, MessageBoxImage.Information) = MessageBoxResult.Yes Then For nDoorIndex = m_DoorList.Count - 1 To 0 Step -1 Dim Door As Door = m_DoorList(nDoorIndex) - If Door.nState >= Door.DoorStates.SENT_TO_PRODUCTION Then Continue For + If Door.nState >= Door.DoorStates.READY_FOR_PRODUCTION Then Continue For m_DoorList.Remove(Door) Next WriteBackup() @@ -438,13 +442,13 @@ Public Class DoorListPageVM Public Sub Produce() If IsNothing(SelDoor) OrElse SelDoor.nState = Door.DoorStates.SKIPPED OrElse SelDoor.nState = Door.DoorStates.VERIFICATION_FAILED OrElse - SelDoor.nState >= Door.DoorStates.SENT_TO_PRODUCTION Then Return + SelDoor.nState >= Door.DoorStates.READY_FOR_PRODUCTION Then Return ' la sposto dopo l'ultima da produrre - Dim nNewIndex As Integer = m_DoorList.IndexOf(m_DoorList.FirstOrDefault(Function(x) x.nState < Door.DoorStates.SENT_TO_PRODUCTION)) + Dim nNewIndex As Integer = m_DoorList.IndexOf(m_DoorList.FirstOrDefault(Function(x) x.nState < Door.DoorStates.READY_FOR_PRODUCTION)) Dim nOldIndex As Integer = m_DoorList.IndexOf(SelDoor) Dim SelectedDoor As Door = m_SelDoor m_DoorList.Move(nOldIndex, nNewIndex) - SelectedDoor.SetState(Door.DoorStates.SENT_TO_PRODUCTION) + SelectedDoor.SetState(Door.DoorStates.READY_FOR_PRODUCTION) WriteBackup() End Sub @@ -480,7 +484,7 @@ Public Class DoorListPageVM End Property Public Sub Refresh() - m_SelDoor.SetState(Door.DoorStates.SENT_TO_PRODUCTION) + m_SelDoor.SetState(Door.DoorStates.READY_FOR_PRODUCTION) 'RefreshGraphicsTimer_Tick(Nothing, Nothing) End Sub @@ -500,8 +504,9 @@ Public Class Door VERIFIED = 10 VERIFICATION_FAILED = 11 SKIPPED = 20 - SENT_TO_PRODUCTION = 30 - IN_PRODUCTION = 31 + READY_FOR_PRODUCTION = 30 + SENT_TO_PRODUCTION = 31 + IN_PRODUCTION = 32 PRODUCED = 32 SCRAP = 40 End Enum diff --git a/Supervisor.Plugin.FiveLakes/LUA/Lua_General.vb b/Supervisor.Plugin.FiveLakes/LUA/Lua_General.vb index c8afa82..d699f16 100644 --- a/Supervisor.Plugin.FiveLakes/LUA/Lua_General.vb +++ b/Supervisor.Plugin.FiveLakes/LUA/Lua_General.vb @@ -3,6 +3,20 @@ Imports KeraLua Public Module Lua_General Friend func_PlgGetNextDoor As LuaFunction = AddressOf Lua_PlgGetNextDoor + Friend func_PlgExecProcess As LuaFunction = AddressOf Lua_PlgExecProcess + + Private Function Lua_PlgExecProcess(ByVal p As IntPtr) As Integer + Dim state = Lua.FromIntPtr(p) + Dim sDDFName As String = "" + LuaCheckParam(state, 1, sDDFName) + LuaClearStack(state) + If Map.refDoorListPageVM.ExecCAMProcess(sDDFName) Then + state.PushBoolean(True) + Return 1 + Else + Return 0 + End If + End Function Private Function Lua_PlgGetNextDoor(ByVal p As IntPtr) As Integer Dim state = Lua.FromIntPtr(p) @@ -20,6 +34,7 @@ Public Module Lua_General Friend Function LuaInstallGeneral(state As Lua) As Boolean If IsNothing(state) Then Return False state.Register("PlgGetNextDoor", func_PlgGetNextDoor) + state.Register("PlgExecProcess", func_PlgExecProcess) Return True End Function diff --git a/Supervisor.Plugin.FiveLakes/MachinePage/MachinePageV.xaml b/Supervisor.Plugin.FiveLakes/MachinePage/MachinePageV.xaml index e9da88f..54f77ca 100644 --- a/Supervisor.Plugin.FiveLakes/MachinePage/MachinePageV.xaml +++ b/Supervisor.Plugin.FiveLakes/MachinePage/MachinePageV.xaml @@ -1,9 +1,11 @@  + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:local="clr-namespace:Supervisor.Plugin.FiveLakes"> + - - - - - - - - - - - - - - - --> + + + + + + + + + +