Files
effector.plugin.fivelakes/Effector.Plugin.FiveLakes/LUA/Lua_General.vb
T
Emmanuele Sassi 27f1b9b99d - aggiunta funzione OpenProduction
- migliorata gestione conversione date in string con convertitori da libreria
- correzione in PlgGetNextDoor to manage also folders for ddf
- in modalita' debug se reset azzero stato macchina
- se in reset non aggiorno stati porte
- in RestartWnd aggiunta lista porte con stato da sistemare e gestito bottone EmptyMachine
- corretta scrittura date ed altri parametri su Json
2025-02-26 16:19:46 +01:00

170 lines
6.5 KiB
VB.net

Imports KeraLua
Imports System.IO
Imports Effector.Plugin.Lib
Public Module Lua_General
Friend func_PlgGetNumberFromIni As LuaFunction = AddressOf Lua_PlgGetNumberFromIni
Friend func_PlgGetStringFromIni As LuaFunction = AddressOf Lua_PlgGetStringFromIni
Friend func_PlgWriteStringToIni As LuaFunction = AddressOf Lua_PlgWriteStringToIni
Friend func_PlgExecProcess As LuaFunction = AddressOf Lua_PlgExecProcess
Friend func_PlgExecProcessAsync As LuaFunction = AddressOf Lua_PlgExecProcessAsync
Friend func_PlgCheckExecProcessAsync As LuaFunction = AddressOf Lua_PlgCheckExecProcessAsync
Friend func_PlgGetNextDoor As LuaFunction = AddressOf Lua_PlgGetNextDoor
Friend func_PlgOpenRestartWnd As LuaFunction = AddressOf Lua_PlgOpenRestartWnd
Friend func_PlgMachineReset As LuaFunction = AddressOf Lua_PlgMachineReset
Friend func_PlgRestartMachineMessage As LuaFunction = AddressOf Lua_PlgRestartMachineMessage
Private Function Lua_PlgGetNumberFromIni(ByVal p As IntPtr) As Integer
Dim state = Lua.FromIntPtr(p)
' 4 parametri: sSec, sKey, dDef
Dim sSec As String = ""
Dim sKey As String = ""
Dim dDef As Integer = 0
LuaCheckParam(state, 1, sSec)
LuaCheckParam(state, 2, sKey)
LuaCheckParam(state, 3, dDef)
LuaClearStack(state)
Dim dResult As Double = GetPluginPrivateProfileDouble(sSec, sKey, dDef)
' restituisco il risultato
LuaSetParam(state, dResult)
Return 1
End Function
Private Function Lua_PlgGetStringFromIni(ByVal p As IntPtr) As Integer
Dim state = Lua.FromIntPtr(p)
' 4 parametri: sSec, sKey, sDef
Dim sSec As String = ""
Dim sKey As String = ""
Dim sDef As String = 0
LuaCheckParam(state, 1, sSec)
LuaCheckParam(state, 2, sKey)
LuaCheckParam(state, 3, sDef)
LuaClearStack(state)
Dim sResult As String = ""
GetPluginPrivateProfileString(sSec, sKey, sDef, sResult)
' restituisco il risultato
LuaSetParam(state, sResult)
Return 1
End Function
Private Function Lua_PlgWriteStringToIni(ByVal p As IntPtr) As Integer
Dim state = Lua.FromIntPtr(p)
' 4 parametri: sSec, sKey, sVal
Dim sSec As String = ""
Dim sKey As String = ""
Dim sVal As Integer = 0
LuaCheckParam(state, 1, sSec)
LuaCheckParam(state, 2, sKey)
LuaCheckParam(state, 3, sVal)
LuaClearStack(state)
Dim bResult As Boolean = WritePluginPrivateProfileString(sSec, sKey, sVal)
' restituisco il risultato
LuaSetParam(state, bResult)
Return 1
End Function
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_PlgExecProcessAsync(ByVal p As IntPtr) As Integer
Dim state = Lua.FromIntPtr(p)
Dim sDDFName As String = ""
LuaCheckParam(state, 1, sDDFName)
LuaClearStack(state)
If Map.refDoorListPageVM.ExecCAMProcessAsync(sDDFName) Then
state.PushBoolean(True)
Return 1
Else
Return 0
End If
End Function
Private Function Lua_PlgCheckExecProcessAsync(ByVal p As IntPtr) As Integer
Dim state = Lua.FromIntPtr(p)
LuaClearStack(state)
Dim bHasExited As Boolean = False
Dim nExitCode As Integer = -1
If Map.refSupervisorFunction.PlgCheckExecProcessAsync(bHasExited, nExitCode) Then
state.PushBoolean(bHasExited)
state.PushInteger(nExitCode)
Return 2
Else
Return 0
End If
End Function
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, If(Not String.IsNullOrWhiteSpace(Path.GetDirectoryName(NextDoor.sDDFName)), Path.GetDirectoryName(NextDoor.sDDFName) & "_", "") & Path.GetFileNameWithoutExtension(NextDoor.sDDFName) & "_" & NextDoor.nId & ".ddf")
'LuaSetParam(state, NextDoor.sDDFName & "_" & NextDoor.nId)
Return 2
End If
Return 0
End Function
Private Function Lua_PlgOpenRestartWnd(ByVal p As IntPtr) As Integer
Dim state = Lua.FromIntPtr(p)
Dim nMachineIndex As Integer = 1
LuaGetParam(state, 1, nMachineIndex)
LuaClearStack(state)
Dim RestartWnd As New RestartWndV(Application.Current.MainWindow, New RestartWndVM(nMachineIndex))
Dim bRes As Boolean = RestartWnd.ShowDialog()
If Not IsNothing(bRes) Then
' restituisco il risultato
LuaSetParam(state, bRes)
Return 1
End If
Return 0
End Function
Private Function Lua_PlgMachineReset(ByVal p As IntPtr) As Integer
Dim state = Lua.FromIntPtr(p)
Dim nMachineIndex As Integer = 1
LuaGetParam(state, 1, nMachineIndex)
LuaClearStack(state)
Map.refDoorListPageVM.ResetProductionQueue()
Return 0
End Function
Private Function Lua_PlgRestartMachineMessage(ByVal p As IntPtr) As Integer
Dim state = Lua.FromIntPtr(p)
Dim nMachineIndex As Integer = 1
LuaGetParam(state, 1, nMachineIndex)
LuaClearStack(state)
MessageBox.Show("Error! Check log file for description." & Environment.NewLine & "When fixed reset and restart MainAuto on machine " & nMachineIndex)
Return 0
End Function
Friend Function LuaInstallGeneral(state As Lua) As Boolean
If IsNothing(state) Then Return False
state.Register("PlgGetNumberFromIni", func_PlgGetNumberFromIni)
state.Register("PlgGetStringFromIni", func_PlgGetStringFromIni)
state.Register("PlgWriteStringToIni", func_PlgWriteStringToIni)
state.Register("PlgExecProcess", func_PlgExecProcess)
state.Register("PlgExecProcessAsync", func_PlgExecProcessAsync)
state.Register("PlgCheckExecProcessAsync", func_PlgCheckExecProcessAsync)
state.Register("PlgGetNextDoor", func_PlgGetNextDoor)
state.Register("PlgOpenRestartWnd", func_PlgOpenRestartWnd)
state.Register("PlgMachineReset", func_PlgMachineReset)
state.Register("PlgRestartMachineMessage", func_PlgRestartMachineMessage)
Return True
End Function
End Module