From c670ba47580758e106acdd55f66c8e1b5dfba056 Mon Sep 17 00:00:00 2001 From: Emmanuele Sassi Date: Fri, 9 Aug 2024 17:02:39 +0200 Subject: [PATCH] - introdotta funzione GetNextDoor chiamabile da lua - gestito DeleteAll in DoorListPage - corretto id porte che riparte da 1 solo in caso di lista vuota - aggiunta gestione funzioni chiamabili da lua - corretta lettura variabili macchina booleane --- Exe/SupervisorD32.exe | Bin 45056 -> 45056 bytes .../DoorListPage/DoorListPageVM.vb | 28 +- Supervisor.Plugin.FiveLakes/LUA/LuaManager.vb | 16 + Supervisor.Plugin.FiveLakes/LUA/Lua_Aux.vb | 363 ++++++++++++++++++ .../LUA/Lua_General.vb | 26 ++ .../MachinePage/MachinePageVM.vb | 7 +- .../Supervisor.Plugin.FiveLakes.vbproj | 15 + Supervisor.Plugin.FiveLakes/Utility/Map.vb | 12 + Supervisor.Plugin.FiveLakes/packages.config | 1 + 9 files changed, 456 insertions(+), 12 deletions(-) create mode 100644 Supervisor.Plugin.FiveLakes/LUA/LuaManager.vb create mode 100644 Supervisor.Plugin.FiveLakes/LUA/Lua_Aux.vb create mode 100644 Supervisor.Plugin.FiveLakes/LUA/Lua_General.vb diff --git a/Exe/SupervisorD32.exe b/Exe/SupervisorD32.exe index 26a0f32682515df450af430c2765421441f20e74..a80180466bc76276309cc4d44ba9e9c5ea8401ad 100644 GIT binary patch delta 16014 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 M>z=Qr<(0<&03{-PZvX%Q delta 15826 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 Door.DoorStates.SENT_TO_PRODUCTION AndAlso x.nState <= Door.DoorStates.IN_PRODUCTION) + End Function + #End Region ' METHODS #Region "COMMANDS" @@ -247,10 +252,10 @@ Public Class DoorListPageVM For nQuantityIndex = 1 To nQuantity Dim nId As Integer = 1 If m_DoorList.Count > 0 Then - Dim LastDoor = m_DoorList.LastOrDefault() - If Not IsNothing(LastDoor) AndAlso LastDoor.nId < 1000 Then - nId = LastDoor.nId + 1 - End If + Dim nMaxId As Integer = m_DoorList.Max(Of Integer)(Function(x) x.nId) + 'If nMaxId < 100 Then + nId = nMaxId + 1 + 'End If End If Dim NewDoor As New Door(nId, nLineIndex, Values(nDDFNameIndex), Path.GetFileName(sCSVPath), 1, dWidth, dHeight, dThickness, Headers, Values) @@ -373,8 +378,15 @@ Public Class DoorListPageVM End Property Public Sub DeleteAll() - If IsNothing(SelDoor) OrElse SelDoor.nState >= Door.DoorStates.SENT_TO_PRODUCTION Then Return - WriteBackup() + If m_DoorList.Count = 0 Then Return + 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 + m_DoorList.Remove(Door) + Next + WriteBackup() + End If End Sub #End Region ' DeleteAll @@ -397,9 +409,9 @@ Public Class DoorListPageVM ' 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 nOldIndex As Integer = m_DoorList.IndexOf(SelDoor) - + Dim SelectedDoor As Door = m_SelDoor m_DoorList.Move(nOldIndex, nNewIndex) - SelDoor.SetState(Door.DoorStates.SENT_TO_PRODUCTION) + SelectedDoor.SetState(Door.DoorStates.SENT_TO_PRODUCTION) WriteBackup() End Sub diff --git a/Supervisor.Plugin.FiveLakes/LUA/LuaManager.vb b/Supervisor.Plugin.FiveLakes/LUA/LuaManager.vb new file mode 100644 index 0000000..344f455 --- /dev/null +++ b/Supervisor.Plugin.FiveLakes/LUA/LuaManager.vb @@ -0,0 +1,16 @@ +Imports System.ComponentModel.Composition +Imports Supervisor.Plugin.Interface +Imports KeraLua + + + +Public Class LuaManager + Implements IPluginLuaManager + + Private state As Lua + + Public Function PlgInit(state As Object) As Boolean Implements IPluginLuaManager.PlgInit + Return LuaInstallGeneral(state) + End Function + +End Class diff --git a/Supervisor.Plugin.FiveLakes/LUA/Lua_Aux.vb b/Supervisor.Plugin.FiveLakes/LUA/Lua_Aux.vb new file mode 100644 index 0000000..31a7fe6 --- /dev/null +++ b/Supervisor.Plugin.FiveLakes/LUA/Lua_Aux.vb @@ -0,0 +1,363 @@ +Imports KeraLua + +Public Module Lua_Aux + + Friend Function LuaClearStack(state As Lua) + Dim nIndex As Integer = state.GetTop() + If nIndex > 0 Then + state.Pop(nIndex) + End If + Return True + End Function + + Friend Function LuaCheckParam(state As Lua, nIndex As Integer, ByRef bValue As Boolean) + If Not LuaGetParam(state, nIndex, bValue) Then + Return state.Error(" Invalid Parameter # " & nIndex) + End If + Return True + End Function + + Friend Function LuaCheckParam(state As Lua, nIndex As Integer, ByRef nValue As Integer) + If Not LuaGetParam(state, nIndex, nValue) Then + Return state.Error(" Invalid Parameter # " & nIndex) + End If + Return True + End Function + + Friend Function LuaCheckParam(state As Lua, nIndex As Integer, ByRef dValue As Double) + If Not LuaGetParam(state, nIndex, dValue) Then + Return state.Error(" Invalid Parameter # " & nIndex) + End If + Return True + End Function + + Friend Function LuaCheckParam(state As Lua, nIndex As Integer, ByRef sValue As String) + If Not LuaGetParam(state, nIndex, sValue) Then + Return state.Error(" Invalid Parameter # " & nIndex) + End If + Return True + End Function + + Friend Function LuaGetParam(state As Lua, nIndex As Integer, ByRef bValue As Boolean) As Boolean + If Not state.IsBoolean(nIndex) Then Return False + bValue = state.ToBoolean(nIndex) + Return True + End Function + + Friend Function LuaGetParam(state As Lua, nIndex As Integer, ByRef nValue As Integer) As Boolean + If Not state.IsNumber(nIndex) Then Return False + nValue = Math.Round(state.ToNumber(nIndex)) + Return True + End Function + + Friend Function LuaGetParam(state As Lua, nIndex As Integer, ByRef dValue As Double) As Boolean + If Not state.IsNumber(nIndex) Then Return False + dValue = state.ToNumber(nIndex) + Return True + End Function + + Friend Function LuaGetParam(state As Lua, nIndex As Integer, ByRef sValue As String) As Boolean + If Not state.IsString(nIndex) Then Return False + sValue = state.ToString(nIndex) + Return True + End Function + + Friend Function LuaSetParam(state As Lua) As Boolean + Try + state.PushNil() + Catch ex As Exception + Return False + End Try + Return True + End Function + + Friend Function LuaSetParam(state As Lua, ByRef bValue As Boolean) As Boolean + Try + state.PushBoolean(bValue) + Catch ex As Exception + Return False + End Try + Return True + End Function + + Friend Function LuaSetParam(state As Lua, ByRef nValue As Integer) As Boolean + Try + state.PushInteger(nValue) + Catch ex As Exception + Return False + End Try + Return True + End Function + + Friend Function LuaSetParam(state As Lua, ByRef dValue As Double) As Boolean + Try + state.PushNumber(dValue) + Catch ex As Exception + Return False + End Try + Return True + End Function + + Friend Function LuaSetParam(state As Lua, ByRef sValue As String) As Boolean + Try + state.PushString(sValue) + Catch ex As Exception + Return False + End Try + Return True + End Function + + Friend Function LuaGetTabFieldParam(state As Lua, nIndex As Integer, sVarName As String, ByRef bValue As Boolean) As Boolean + If Not state.IsTable(nIndex) Then Return False + state.GetField(nIndex, sVarName) + Dim bResult As Boolean = LuaGetParam(state, -1, bValue) + state.Pop(1) + Return bResult + End Function + + Friend Function LuaGetTabFieldParam(state As Lua, nIndex As Integer, sVarName As String, ByRef nValue As Integer) As Boolean + If Not state.IsTable(nIndex) Then Return False + state.GetField(nIndex, sVarName) + Dim bResult As Boolean = LuaGetParam(state, -1, nValue) + state.Pop(1) + Return bResult + End Function + + Friend Function LuaGetTabFieldParam(state As Lua, nIndex As Integer, sVarName As String, ByRef dValue As Double) As Boolean + If Not state.IsTable(nIndex) Then Return False + state.GetField(nIndex, sVarName) + Dim bResult As Boolean = LuaGetParam(state, -1, dValue) + state.Pop(1) + Return bResult + End Function + + Friend Function LuaGetTabFieldParam(state As Lua, nIndex As Integer, sVarName As String, ByRef sValue As String) As Boolean + If Not state.IsTable(nIndex) Then Return False + state.GetField(nIndex, sVarName) + Dim bResult As Boolean = LuaGetParam(state, -1, sValue) + state.Pop(1) + Return bResult + End Function + + Friend Function LuaGetGlobVar(state As Lua, ByRef sName As String, ByRef bValue As Boolean) As Boolean + ' se variabile standard + If Not sName.Contains("."c) Then + state.GetGlobal(sName) + Dim bResult As Boolean = LuaGetParam(state, -1, bValue) + state.Pop(1) + Return bResult + Else + Dim sTableName As String = "", sVarName As String = "" + Dim sParams() As String = sName.Split("."c) + sTableName = sParams(0) + sVarName = sParams(1) + state.GetGlobal(sTableName) + Dim bResult As Boolean = LuaGetTabFieldParam(state, -1, sVarName, bValue) + state.Pop(1) + Return bResult + End If + End Function + + Friend Function LuaGetGlobVar(state As Lua, ByRef sName As String, ByRef nValue As Integer) As Boolean + ' se variabile standard + If Not sName.Contains("."c) Then + state.GetGlobal(sName) + Dim bResult As Boolean = LuaGetParam(state, -1, nValue) + state.Pop(1) + Return bResult + Else + Dim sTableName As String = "", sVarName As String = "" + Dim sParams() As String = sName.Split("."c) + sTableName = sParams(0) + sVarName = sParams(1) + state.GetGlobal(sTableName) + Dim bResult As Boolean = LuaGetTabFieldParam(state, -1, sVarName, nValue) + state.Pop(1) + Return bResult + End If + End Function + + Friend Function LuaGetGlobVar(state As Lua, ByRef sName As String, ByRef dValue As Double) As Boolean + ' se variabile standard + If Not sName.Contains("."c) Then + state.GetGlobal(sName) + Dim bResult As Boolean = LuaGetParam(state, -1, dValue) + state.Pop(1) + Return bResult + Else + Dim sTableName As String = "", sVarName As String = "" + Dim sParams() As String = sName.Split("."c) + sTableName = sParams(0) + sVarName = sParams(1) + state.GetGlobal(sTableName) + Dim bResult As Boolean = LuaGetTabFieldParam(state, -1, sVarName, dValue) + state.Pop(1) + Return bResult + End If + End Function + + Friend Function LuaGetGlobVar(state As Lua, ByRef sName As String, ByRef sValue As String) As Boolean + ' se variabile standard + If Not sName.Contains("."c) Then + state.GetGlobal(sName) + Dim bResult As Boolean = LuaGetParam(state, -1, sValue) + state.Pop(1) + Return bResult + Else + Dim sTableName As String = "", sVarName As String = "" + Dim sParams() As String = sName.Split("."c) + sTableName = sParams(0) + sVarName = sParams(1) + state.GetGlobal(sTableName) + Dim bResult As Boolean = LuaGetTabFieldParam(state, -1, sVarName, sValue) + state.Pop(1) + Return bResult + End If + End Function + + Friend Function LuaSetTabFieldParam(state As Lua, nIndex As Integer, sVarName As String) As Boolean + If Not state.IsTable(nIndex) Then Return False + If Not LuaSetParam(state) Then Return False + Dim nPos As Integer = (If(nIndex > 0, nIndex, nIndex - 1)) + state.SetField(nPos, sVarName) + Return True + End Function + + Friend Function LuaSetTabFieldParam(state As Lua, nIndex As Integer, sVarName As String, ByRef bValue As Boolean) As Boolean + If Not state.IsTable(nIndex) Then Return False + If Not LuaSetParam(state, bValue) Then Return False + Dim nPos As Integer = (If(nIndex > 0, nIndex, nIndex - 1)) + state.SetField(nPos, sVarName) + Return True + End Function + + Friend Function LuaSetTabFieldParam(state As Lua, nIndex As Integer, sVarName As String, ByRef nValue As Integer) As Boolean + If Not state.IsTable(nIndex) Then Return False + If Not LuaSetParam(state, nValue) Then Return False + Dim nPos As Integer = (If(nIndex > 0, nIndex, nIndex - 1)) + state.SetField(nPos, sVarName) + Return True + End Function + + Friend Function LuaSetTabFieldParam(state As Lua, nIndex As Integer, sVarName As String, ByRef dValue As Double) As Boolean + If Not state.IsTable(nIndex) Then Return False + If Not LuaSetParam(state, dValue) Then Return False + Dim nPos As Integer = (If(nIndex > 0, nIndex, nIndex - 1)) + state.SetField(nPos, sVarName) + Return True + End Function + + Friend Function LuaSetTabFieldParam(state As Lua, nIndex As Integer, sVarName As String, ByRef sValue As String) As Boolean + If Not state.IsTable(nIndex) Then Return False + If Not LuaSetParam(state, sValue) Then Return False + Dim nPos As Integer = (If(nIndex > 0, nIndex, nIndex - 1)) + state.SetField(nPos, sVarName) + Return True + End Function + + Friend Function LuaSetGlobVar(state As Lua, ByRef sName As String, ByRef bValue As Boolean) As Boolean + ' se variabile standard + If Not sName.Contains("."c) Then + If Not LuaSetParam(state, bValue) Then Return False + state.SetGlobal(sName) + Return True + ' altrimenti campo di tabella + Else + Dim sTableName As String = "", sVarName As String = "" + Dim sParams() As String = sName.Split("."c) + sTableName = sParams(0) + sVarName = sParams(1) + state.GetGlobal(sTableName) + Dim bResult As Boolean = LuaSetTabFieldParam(state, -1, sVarName, bValue) + state.Pop(1) + Return bResult + End If + End Function + + Friend Function LuaSetGlobVar(state As Lua, ByRef sName As String, ByRef nValue As Integer) As Boolean + ' se variabile standard + If Not sName.Contains("."c) Then + If Not LuaSetParam(state, nValue) Then Return False + state.SetGlobal(sName) + Return True + ' altrimenti campo di tabella + Else + Dim sTableName As String = "", sVarName As String = "" + Dim sParams() As String = sName.Split("."c) + sTableName = sParams(0) + sVarName = sParams(1) + state.GetGlobal(sTableName) + Dim bResult As Boolean = LuaSetTabFieldParam(state, -1, sVarName, nValue) + state.Pop(1) + Return bResult + End If + End Function + + Friend Function LuaSetGlobVar(state As Lua, ByRef sName As String, ByRef dValue As Double) As Boolean + ' se variabile standard + If Not sName.Contains("."c) Then + If Not LuaSetParam(state, dValue) Then Return False + state.SetGlobal(sName) + Return True + ' altrimenti campo di tabella + Else + Dim sTableName As String = "", sVarName As String = "" + Dim sParams() As String = sName.Split("."c) + sTableName = sParams(0) + sVarName = sParams(1) + state.GetGlobal(sTableName) + Dim bResult As Boolean = LuaSetTabFieldParam(state, -1, sVarName, dValue) + state.Pop(1) + Return bResult + End If + End Function + + Friend Function LuaSetGlobVar(state As Lua, ByRef sName As String, ByRef sValue As String) As Boolean + ' se variabile standard + If Not sName.Contains("."c) Then + If Not LuaSetParam(state, sValue) Then Return False + state.SetGlobal(sName) + Return True + ' altrimenti campo di tabella + Else + Dim sTableName As String = "", sVarName As String = "" + Dim sParams() As String = sName.Split("."c) + sTableName = sParams(0) + sVarName = sParams(1) + state.GetGlobal(sTableName) + Dim bResult As Boolean = LuaSetTabFieldParam(state, -1, sVarName, sValue) + state.Pop(1) + Return bResult + End If + End Function + + Friend Function LuaResetGlobVar(state As Lua, ByRef sName As String) As Boolean + ' se variabile standard + If Not sName.Contains("."c) Then + If Not LuaSetParam(state) Then Return False + state.SetGlobal(sName) + Return True + ' altrimenti campo di tabella + Else + Dim sTableName As String = "", sVarName As String = "" + Dim sParams() As String = sName.Split("."c) + sTableName = sParams(0) + sVarName = sParams(1) + state.GetGlobal(sTableName) + Dim bResult As Boolean = LuaSetTabFieldParam(state, -1, sVarName) + state.Pop(1) + Return bResult + End If + End Function + + Friend Function LuaCreateGlobTable(state As Lua, ByRef sName As String) As Boolean + Try + state.NewTable() + state.SetGlobal(sName) + Catch ex As Exception + Return False + End Try + Return True + End Function + +End Module diff --git a/Supervisor.Plugin.FiveLakes/LUA/Lua_General.vb b/Supervisor.Plugin.FiveLakes/LUA/Lua_General.vb new file mode 100644 index 0000000..c8afa82 --- /dev/null +++ b/Supervisor.Plugin.FiveLakes/LUA/Lua_General.vb @@ -0,0 +1,26 @@ +Imports KeraLua + +Public Module Lua_General + + Friend func_PlgGetNextDoor As LuaFunction = AddressOf Lua_PlgGetNextDoor + + Private Function Lua_PlgGetNextDoor(ByVal p As IntPtr) As Integer + Dim state = Lua.FromIntPtr(p) + LuaClearStack(state) + Dim NextDoor As Door = Map.refDoorListPageVM.GetNextDoor() + If Not IsNothing(NextDoor) Then + ' restituisco il risultato + LuaSetParam(state, NextDoor.nId) + LuaSetParam(state, NextDoor.sDDFName) + Return 2 + End If + Return 0 + End Function + + Friend Function LuaInstallGeneral(state As Lua) As Boolean + If IsNothing(state) Then Return False + state.Register("PlgGetNextDoor", func_PlgGetNextDoor) + Return True + End Function + +End Module diff --git a/Supervisor.Plugin.FiveLakes/MachinePage/MachinePageVM.vb b/Supervisor.Plugin.FiveLakes/MachinePage/MachinePageVM.vb index 66c7b15..8e02eb0 100644 --- a/Supervisor.Plugin.FiveLakes/MachinePage/MachinePageVM.vb +++ b/Supervisor.Plugin.FiveLakes/MachinePage/MachinePageVM.vb @@ -77,10 +77,9 @@ Public Class MachinePageVM Dim sIndexSplit() As String = Var.sIndex.Split("."c) Integer.TryParse(sIndexSplit(0), nIndex) Integer.TryParse(sIndexSplit(1), nBit) - Integer.TryParse(Var.sIndex, nIndex) - Dim dValue As Double = 0 - If Map.refSupervisorFunction.ComReadBitVar(nIndex, nBit, dValue, Var.nMachine) Then - Var.SetValue(dValue) + Dim bValue As Boolean = 0 + If Map.refSupervisorFunction.ComReadBitVar(nIndex, nBit, bValue, Var.nMachine) Then + Var.SetValue(bValue) Else Map.refSupervisorFunction.PlgOutLog("Error! Reading Variable " & Var.sIndex & " on machine " & Var.nMachine & "failed!") End If diff --git a/Supervisor.Plugin.FiveLakes/Supervisor.Plugin.FiveLakes.vbproj b/Supervisor.Plugin.FiveLakes/Supervisor.Plugin.FiveLakes.vbproj index cfb8520..897736b 100644 --- a/Supervisor.Plugin.FiveLakes/Supervisor.Plugin.FiveLakes.vbproj +++ b/Supervisor.Plugin.FiveLakes/Supervisor.Plugin.FiveLakes.vbproj @@ -11,6 +11,8 @@ Custom true {7C77F537-8235-40AB-B24A-4E71CFB96D2C} + + true @@ -49,6 +51,9 @@ ..\..\..\EgtProg\DllD32\EgtWPFLib48.dll + + ..\packages\KeraLua.1.4.1\lib\net46\KeraLua.dll + ..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll @@ -100,6 +105,9 @@ FiveLakesUI.xaml + + + MachinePageV.xaml @@ -173,4 +181,11 @@ copy $(TargetPath) c:\EgtData\Supervisor\Plugin\Supervisor.Plugin.FiveLakes\Supervisor.Plugin.FiveLakes.dll + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + \ No newline at end of file diff --git a/Supervisor.Plugin.FiveLakes/Utility/Map.vb b/Supervisor.Plugin.FiveLakes/Utility/Map.vb index fcf27f5..59ddb52 100644 --- a/Supervisor.Plugin.FiveLakes/Utility/Map.vb +++ b/Supervisor.Plugin.FiveLakes/Utility/Map.vb @@ -3,6 +3,7 @@ Module Map Private m_refFiveLakesUIVM As FiveLakesUIVM + Private m_refDoorListPageVM As DoorListPageVM Private m_refSupervisorFunction As IHost 'Private m_refMyStatusBarVM As MyStatusBarVM @@ -46,6 +47,12 @@ Module Map End Get End Property + Public ReadOnly Property refDoorListPageVM As DoorListPageVM + Get + Return m_refDoorListPageVM + End Get + End Property + Public ReadOnly Property refSupervisorFunction As IHost Get Return m_refSupervisorFunction @@ -264,6 +271,11 @@ Module Map Return Not IsNothing(m_refSupervisorFunction) End Function + Friend Function SetRefDoorListPageVM(DoorListPageVM As DoorListPageVM) As Boolean + m_refDoorListPageVM = DoorListPageVM + Return Not IsNothing(m_refDoorListPageVM) + End Function + ' Friend Function SetRefProjManagerVM(ProjManagerVM As ProjManagerVM) As Boolean ' m_refProjManagerVM = ProjManagerVM ' Return Not IsNothing(m_refProjManagerVM) diff --git a/Supervisor.Plugin.FiveLakes/packages.config b/Supervisor.Plugin.FiveLakes/packages.config index e46d5a8..03464bd 100644 --- a/Supervisor.Plugin.FiveLakes/packages.config +++ b/Supervisor.Plugin.FiveLakes/packages.config @@ -1,4 +1,5 @@  + \ No newline at end of file