Compare commits

..

1 Commits

Author SHA1 Message Date
Emmanuele Sassi 88b9226bcb - gestione log macchina con timer
- aggiornamento log macchina durante produzione pezzi
2023-06-12 09:13:30 +02:00
24 changed files with 137 additions and 167 deletions
+2 -2
View File
@@ -35,5 +35,5 @@ Imports System.Runtime.InteropServices
' by using the '*' as shown below: ' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")> ' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("2.5.6.2")> <Assembly: AssemblyVersion("2.5.5.4")>
<Assembly: AssemblyFileVersion("2.5.6.2")> <Assembly: AssemblyFileVersion("2.5.5.4")>
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.5.6.2")] [assembly: AssemblyVersion("2.5.5.4")]
[assembly: AssemblyFileVersion("2.5.6.2")] [assembly: AssemblyFileVersion("2.5.5.4")]
@@ -40,7 +40,7 @@ Public Class LeftPanelVM
Return m_SelChannel Return m_SelChannel
End Get End Get
Set(ByVal value As IdNameStruct) Set(ByVal value As IdNameStruct)
MachManaging.AddToCommandList(ThreadCommand.CreateCommand(CommandTypes.SETCHANNEL, value.Id)) MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.SETCHANNEL, value.Id))
m_SelChannel = value m_SelChannel = value
End Set End Set
End Property End Property
@@ -86,7 +86,7 @@ Public Class LeftPanelVM
Return m_SelOPMode Return m_SelOPMode
End Get End Get
Set(ByVal value As OPState) Set(ByVal value As OPState)
MachManaging.AddToCommandList(ThreadCommand.CreateCommand(CommandTypes.SETOPMODE, value.Id)) MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.SETOPMODE, value.Id))
' se MDI ' se MDI
If value.Id = OPModes.Mdi Then If value.Id = OPModes.Mdi Then
' mostro pagina comandi MDI ' mostro pagina comandi MDI
@@ -561,6 +561,8 @@ Public Class LeftPanelVM
If CurrentMachine.Flow = FlowTypes.ONEBYONE Then If CurrentMachine.Flow = FlowTypes.ONEBYONE Then
MyMachGroupVM.UpdateProduceIsEnabledForAll() MyMachGroupVM.UpdateProduceIsEnabledForAll()
End If End If
' aggiorno log macchina
Map.refMachineLogPageVM.UpdateMachineLogList(False)
End Sub End Sub
#End Region ' DoneRawPart #End Region ' DoneRawPart
@@ -800,6 +802,8 @@ Public Class LeftPanelVM
Next Next
SetDonePart(SelMachGroup, SelMachGroup.SelPart) SetDonePart(SelMachGroup, SelMachGroup.SelPart)
Map.refProjectVM.SupervisorMachGroupPanelVM.SelectedMachGroup = SelMachGroup Map.refProjectVM.SupervisorMachGroupPanelVM.SelectedMachGroup = SelMachGroup
' aggiorno log macchina
Map.refMachineLogPageVM.UpdateMachineLogList(False)
End Sub End Sub
Public Sub SetDonePart(MachGroup As MyMachGroupVM, Part As PartVM) Public Sub SetDonePart(MachGroup As MyMachGroupVM, Part As PartVM)
+1 -1
View File
@@ -163,7 +163,7 @@ Public Class MDIPageVM
''' </summary> ''' </summary>
Friend Sub SendMDI() Friend Sub SendMDI()
If Not String.IsNullOrWhiteSpace(m_sMDICommand_Text) Then If Not String.IsNullOrWhiteSpace(m_sMDICommand_Text) Then
MachManaging.AddToCommandList(ThreadCommand.CreateCommand(CommandTypes.MDI, m_sMDICommand_Text)) MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.MDI, m_sMDICommand_Text))
End If End If
End Sub End Sub
@@ -427,11 +427,11 @@ Public Class MachCommandMessagePanelVM
End Property End Property
Public Sub Disconnect() Public Sub Disconnect()
MachManaging.AddToCommandList(ThreadCommand.CreateCommand(CommandTypes.DISCONNECT)) MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.DISCONNECT))
End Sub End Sub
Public Sub SetOPState(OpState As Integer) Public Sub SetOPState(OpState As Integer)
MachManaging.AddToCommandList(ThreadCommand.CreateCommand(CommandTypes.SETOPMODE)) MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.SETOPMODE))
End Sub End Sub
Public ReadOnly Property Start_Command As ICommand Public ReadOnly Property Start_Command As ICommand
@@ -442,7 +442,7 @@ Public Class MachCommandMessagePanelVM
End Property End Property
Public Sub Start(ByVal param As Object) Public Sub Start(ByVal param As Object)
MachManaging.AddToCommandList(ThreadCommand.CreateCommand(CommandTypes.START)) MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.START))
End Sub End Sub
Public ReadOnly Property Stop_Command As ICommand Public ReadOnly Property Stop_Command As ICommand
@@ -453,7 +453,7 @@ Public Class MachCommandMessagePanelVM
End Property End Property
Public Sub [Stop](ByVal param As Object) Public Sub [Stop](ByVal param As Object)
MachManaging.AddToCommandList(ThreadCommand.CreateCommand(CommandTypes.STOP_)) MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.STOP_))
End Sub End Sub
Public ReadOnly Property Reset_Command As ICommand Public ReadOnly Property Reset_Command As ICommand
@@ -464,7 +464,7 @@ Public Class MachCommandMessagePanelVM
End Property End Property
Public Sub Reset(ByVal param As Object) Public Sub Reset(ByVal param As Object)
MachManaging.AddToCommandList(ThreadCommand.CreateCommand(CommandTypes.RESET)) MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.RESET))
' annullo stato di pronto ad essere lavorato di tutti i programmi ' annullo stato di pronto ad essere lavorato di tutti i programmi
If Not IsNothing(Map.refProjectVM.SupervisorMachGroupPanelVM) Then Map.refProjectVM.SupervisorMachGroupPanelVM.ResetAllMachGroups() If Not IsNothing(Map.refProjectVM.SupervisorMachGroupPanelVM) Then Map.refProjectVM.SupervisorMachGroupPanelVM.ResetAllMachGroups()
End Sub End Sub
@@ -477,7 +477,7 @@ Public Class MachCommandMessagePanelVM
End Property End Property
Public Sub [Step](ByVal param As Object) Public Sub [Step](ByVal param As Object)
MachManaging.AddToCommandList(ThreadCommand.CreateCommand(CommandTypes.STEP_)) MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.STEP_))
End Sub End Sub
Public ReadOnly Property SetPoint_Command As ICommand Public ReadOnly Property SetPoint_Command As ICommand
@@ -488,7 +488,7 @@ Public Class MachCommandMessagePanelVM
End Property End Property
Public Sub SetPoint(ByVal param As Object) Public Sub SetPoint(ByVal param As Object)
MachManaging.AddToCommandList(ThreadCommand.CreateCommand(CommandTypes.SETPOINT)) MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.SETPOINT))
End Sub End Sub
@@ -500,7 +500,7 @@ Public Class MachCommandMessagePanelVM
End Property End Property
Public Sub DeleteAlarms(ByVal param As Object) Public Sub DeleteAlarms(ByVal param As Object)
MachManaging.AddToCommandList(ThreadCommand.CreateCommand(CommandTypes.DELETEALARMS)) MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.DELETEALARMS))
End Sub End Sub
Public Function GetVarPathByName(Name As String) As String Public Function GetVarPathByName(Name As String) As String
@@ -10,9 +10,6 @@ Imports EgtBEAMWALL.Supervisor.CommVar
Public Class MachManaging Public Class MachManaging
' lock per aggiunta elemento a lista MachGroup
Private Shared Lock_CommandList As New Object
Private m_bConnected As Boolean = False Private m_bConnected As Boolean = False
Public ReadOnly Property bConnected As Boolean Public ReadOnly Property bConnected As Boolean
Get Get
@@ -56,22 +53,6 @@ Public Class MachManaging
Return m_CommandList Return m_CommandList
End Get End Get
End Property End Property
Friend Shared Sub AddToCommandList(value As ThreadCommand)
SyncLock Lock_CommandList
' EgtOutLog("Inizio ciclo rimozioni")
For CommandIndex = m_CommandList.Count - 1 To 0 Step -1
Dim Command As ThreadCommand = m_CommandList(CommandIndex)
If Command.ProcessingStatus = ThreadCommand.ProcessingStatuses.DONE Then
' EgtOutLog("Inizio rimozione comando")
m_CommandList.Remove(Command)
' EgtOutLog("Fine rimozione comando")
End If
Next
' EgtOutLog("Fine ciclo rimozioni")
CommandList.Add(value)
' EgtOutLog("Count dopo aggiunta: " & CommandList.Count)
End SyncLock
End Sub
Private m_bStartPending As Boolean = False Private m_bStartPending As Boolean = False
Public ReadOnly Property StartPending As Boolean Public ReadOnly Property StartPending As Boolean
@@ -588,6 +569,8 @@ Public Class MachManaging
' scrivo evento inizio MachGroup su DB ' scrivo evento inizio MachGroup su DB
DbControllers.m_LogMachineController.Create(LogEvent.CreateMachGroupStateLog(dtStart, nP_Prod, nP_Machgroup, nP_State, DbControllers.SupervisorId)) DbControllers.m_LogMachineController.Create(LogEvent.CreateMachGroupStateLog(dtStart, nP_Prod, nP_Machgroup, nP_State, DbControllers.SupervisorId))
End If End If
' flag di aggiornamento log macchina
Map.refMachineLogPageVM.UpdateMachineLogList(False)
' attesa per essere sicuro che abbia scritto e riletto variabili ' attesa per essere sicuro che abbia scritto e riletto variabili
Threading.Thread.Sleep(300) Threading.Thread.Sleep(300)
ElseIf nP_State = PartState.END_ Then ElseIf nP_State = PartState.END_ Then
@@ -657,7 +640,7 @@ Public Class MachManaging
' se non impostata data start ' se non impostata data start
If MachGroup.dtStartTime = DateTime.MinValue Then If MachGroup.dtStartTime = DateTime.MinValue Then
' EgtOutLog("Start date not set on Prod " & nP_Prod & " Machgroup " & nP_Machgroup) EgtOutLog("Start date not set on Prod " & nP_Prod & " Machgroup " & nP_Machgroup)
Dim dtStart As DateTime = MachGroup.dtEndTime - TimeSpan.FromSeconds(60) Dim dtStart As DateTime = MachGroup.dtEndTime - TimeSpan.FromSeconds(60)
' provo a recuperare tempo stimato ' provo a recuperare tempo stimato
If MachGroup.nCALC_TIME > 0 Then If MachGroup.nCALC_TIME > 0 Then
@@ -697,6 +680,8 @@ Public Class MachManaging
Map.refLeftPanelVM.PrintLabel(MachGroup, Part) Map.refLeftPanelVM.PrintLabel(MachGroup, Part)
End If End If
End If End If
' flag di aggiornamento log macchina
Map.refMachineLogPageVM.UpdateMachineLogList(False)
' attesa per essere sicuro che abbia scritto e riletto variabili ' attesa per essere sicuro che abbia scritto e riletto variabili
Threading.Thread.Sleep(300) Threading.Thread.Sleep(300)
End If End If
@@ -741,7 +726,7 @@ Public Class MachManaging
End Function End Function
Private Function SendNextProgram() As Boolean Private Function SendNextProgram() As Boolean
' EgtOutLog("Inizio SendNextProgram") EgtOutLog("Inizio SendNextProgram")
Dim bSent As Boolean = False Dim bSent As Boolean = False
If (CurrentMachine.NCType = NCTypes.TPA AndAlso Not m_bStartPending AndAlso Tpa.opState = MachineOperatingState.Pending) OrElse If (CurrentMachine.NCType = NCTypes.TPA AndAlso Not m_bStartPending AndAlso Tpa.opState = MachineOperatingState.Pending) OrElse
(CurrentMachine.NCType = NCTypes.NUM_FLEXIUM AndAlso Not Num_Flexium.bIsTransferActive) OrElse (CurrentMachine.NCType = NCTypes.NUM_FLEXIUM AndAlso Not Num_Flexium.bIsTransferActive) OrElse
@@ -749,20 +734,20 @@ Public Class MachManaging
(CurrentMachine.NCType = NCTypes.NUM_AXIUM_PCTOOLKIT AndAlso Not Num_Axium_PCToolkit.bIsTransferActive) Then ' Or Tpa.opState = MachineOperatingState.Start) Then (CurrentMachine.NCType = NCTypes.NUM_AXIUM_PCTOOLKIT AndAlso Not Num_Axium_PCToolkit.bIsTransferActive) Then ' Or Tpa.opState = MachineOperatingState.Start) Then
' verifico se c'e' un programma da lanciare ' verifico se c'e' un programma da lanciare
If Not IsNothing(Map.refProjectVM.SupervisorMachGroupPanelVM) Then If Not IsNothing(Map.refProjectVM.SupervisorMachGroupPanelVM) Then
' EgtOutLog("Start " & DateTime.Now()) EgtOutLog("Start " & DateTime.Now())
Dim bMachGroupNotReady As Boolean = False Dim bMachGroupNotReady As Boolean = False
SyncLock m_Lock_SendProgram SyncLock m_Lock_SendProgram
For Each MyMachGroup As MyMachGroupVM In Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupVMList For Each MyMachGroup As MyMachGroupVM In Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupVMList
' EgtOutLog("Ciclo su name: " & MyMachGroup.Name & " id: " & MyMachGroup.Id) EgtOutLog("Ciclo su name: " & MyMachGroup.Name & " id: " & MyMachGroup.Id)
If Not MyMachGroup.bSentToMachine AndAlso (MyMachGroup.dtStartTime = DateTime.MinValue OrElse If Not MyMachGroup.bSentToMachine AndAlso (MyMachGroup.dtStartTime = DateTime.MinValue OrElse
(Map.refSupervisorManagerVM.CurrProd.nType = BWType.WALL AndAlso MyMachGroup.bResetWhileCutting)) Then (Map.refSupervisorManagerVM.CurrProd.nType = BWType.WALL AndAlso MyMachGroup.bResetWhileCutting)) Then
' EgtOutLog(MyMachGroup.Name & " id: " & MyMachGroup.Id & " è da fare") EgtOutLog(MyMachGroup.Name & " id: " & MyMachGroup.Id & " è da fare")
' verifico se ricalcolo finito ' verifico se ricalcolo finito
If MyMachGroup.bReadyForMachining AndAlso If(CurrentMachine.NCType = NCTypes.NUM_FLEXIUM Or CurrentMachine.NCType = NCTypes.NUM_AXIUM_APSERVER OrElse CurrentMachine.NCType = NCTypes.NUM_AXIUM_PCTOOLKIT, Not MyMachGroup.bSendingToMachine, True) Then If MyMachGroup.bReadyForMachining AndAlso If(CurrentMachine.NCType = NCTypes.NUM_FLEXIUM Or CurrentMachine.NCType = NCTypes.NUM_AXIUM_APSERVER OrElse CurrentMachine.NCType = NCTypes.NUM_AXIUM_PCTOOLKIT, Not MyMachGroup.bSendingToMachine, True) Then
' EgtOutLog(MyMachGroup.Name & " id: " & MyMachGroup.Id & " pronto per essere lavorato") EgtOutLog(MyMachGroup.Name & " id: " & MyMachGroup.Id & " pronto per essere lavorato")
' lo lancio ' lo lancio
bSent = SendProgram(MyMachGroup.CnFilePath(), MyMachGroup.Name) bSent = SendProgram(MyMachGroup.CnFilePath(), MyMachGroup.Name)
' EgtOutLog(MyMachGroup.Name & " id: " & MyMachGroup.Id & " mandato " & DateTime.Now() & " " & MyMachGroup.Name & " " & bSent.ToString()) EgtOutLog(MyMachGroup.Name & " id: " & MyMachGroup.Id & " mandato " & DateTime.Now() & " " & MyMachGroup.Name & " " & bSent.ToString())
Select Case CurrentMachine.NCType Select Case CurrentMachine.NCType
Case NCTypes.TPA Case NCTypes.TPA
MyMachGroup.SetSentToMachine(bSent) MyMachGroup.SetSentToMachine(bSent)
@@ -774,7 +759,7 @@ Public Class MachManaging
Else Else
' programma non ancora pronto, esco per attendere ' programma non ancora pronto, esco per attendere
bMachGroupNotReady = True bMachGroupNotReady = True
' EgtOutLog(MyMachGroup.Name & " id: " & MyMachGroup.Id & " non ancora pronto per essere mandato") EgtOutLog(MyMachGroup.Name & " id: " & MyMachGroup.Id & " non ancora pronto per essere mandato")
Exit For Exit For
'Return False 'Return False
End If End If
@@ -782,7 +767,7 @@ Public Class MachManaging
Next Next
End SyncLock End SyncLock
If bMachGroupNotReady Then Return False If bMachGroupNotReady Then Return False
' EgtOutLog("End " & DateTime.Now()) EgtOutLog("End " & DateTime.Now())
End If End If
End If End If
Return bSent Return bSent
@@ -790,17 +775,10 @@ Public Class MachManaging
Private Sub CommandList_CollectionChanged(sender As Object, e As NotifyCollectionChangedEventArgs) Private Sub CommandList_CollectionChanged(sender As Object, e As NotifyCollectionChangedEventArgs)
If Not IsNothing(e.NewItems) Then If Not IsNothing(e.NewItems) Then
' EgtOutLog("Inizio ciclo esecuzione comandi") For Each Command In e.NewItems
Dim nCommandCount As Integer = e.NewItems.Count ExecuteCommand(DirectCast(Command, ThreadCommand))
For CommandIndex = 0 To nCommandCount - 1 m_CommandList.Remove(Command)
Dim Command As ThreadCommand = e.NewItems(CommandIndex)
If Command.ProcessingStatus = ThreadCommand.ProcessingStatuses.WAITING Then
Command.SetProcessingStatus(ThreadCommand.ProcessingStatuses.PROCESSING)
ExecuteCommand(DirectCast(Command, ThreadCommand))
Command.SetProcessingStatus(ThreadCommand.ProcessingStatuses.DONE)
End If
Next Next
' EgtOutLog("Fine ciclo esecuzione di " & nCommandCount & " comandi")
End If End If
End Sub End Sub
@@ -1070,7 +1048,7 @@ Public Class MachManaging
Num_Axium_APServer.StartTransfer() Num_Axium_APServer.StartTransfer()
Return True Return True
Case NCTypes.NUM_AXIUM_PCTOOLKIT Case NCTypes.NUM_AXIUM_PCTOOLKIT
' EgtOutLog("Pre Download") EgtOutLog("Pre Download")
Dim nFileType As Integer = 0 Dim nFileType As Integer = 0
If Integer.TryParse(ProgramId, nFileType) AndAlso nFileType > 0 Then If Integer.TryParse(ProgramId, nFileType) AndAlso nFileType > 0 Then
Num_Axium_PCToolkit.FileDownload(nFileType * 10, ProgramPath) Num_Axium_PCToolkit.FileDownload(nFileType * 10, ProgramPath)
@@ -54,12 +54,6 @@ End Class
Public Class ThreadCommand Public Class ThreadCommand
Public Enum ProcessingStatuses
WAITING = 1
PROCESSING = 2
DONE = 3
End Enum
Private m_CommandType As CommandTypes Private m_CommandType As CommandTypes
Public ReadOnly Property CommandType As CommandTypes Public ReadOnly Property CommandType As CommandTypes
Get Get
@@ -101,16 +95,6 @@ Public Class ThreadCommand
End Get End Get
End Property End Property
Private m_ProcessingStatus As ProcessingStatuses = ProcessingStatuses.WAITING
Public ReadOnly Property ProcessingStatus As ProcessingStatuses
Get
Return m_ProcessingStatus
End Get
End Property
Friend Sub SetProcessingStatus(value As ProcessingStatuses)
m_ProcessingStatus = value
End Sub
Protected Sub New() Protected Sub New()
End Sub End Sub
@@ -25,21 +25,21 @@
</Grid> </Grid>
<StackPanel Orientation="Horizontal" Height="30"> <StackPanel Orientation="Horizontal" Height="30">
<TextBlock Text="{Binding Entity_Msg}" <TextBlock Text="Entità"
Style="{StaticResource Log_TextBlock}"/> Style="{StaticResource Log_TextBlock}"/>
<ComboBox ItemsSource="{Binding EntityTypeList}" <ComboBox ItemsSource="{Binding EntityTypeList}"
SelectedIndex="{Binding SelEntityType}" SelectedIndex="{Binding SelEntityType}"
Width="70" Width="70"
Margin="0,0,2.5,0" Margin="0,0,2.5,0"
Style="{StaticResource PartParam_ComboBox}"/> Style="{StaticResource PartParam_ComboBox}"/>
<TextBlock Text="{Binding Event_Msg}" <TextBlock Text="Evento"
Style="{StaticResource Log_TextBlock}"/> Style="{StaticResource Log_TextBlock}"/>
<ComboBox ItemsSource="{Binding PartEventTypeList}" <ComboBox ItemsSource="{Binding PartEventTypeList}"
SelectedIndex="{Binding SelPartEventType}" SelectedIndex="{Binding SelPartEventType}"
Width="70" Width="70"
Margin="0,0,2.5,0" Margin="0,0,2.5,0"
Style="{StaticResource PartParam_ComboBox}"/> Style="{StaticResource PartParam_ComboBox}"/>
<TextBlock Text="{Binding Date_Msg}" <TextBlock Text="Data"
Style="{StaticResource Log_TextBlock}"/> Style="{StaticResource Log_TextBlock}"/>
<ComboBox ItemsSource="{Binding DayTypeList}" <ComboBox ItemsSource="{Binding DayTypeList}"
SelectedIndex="{Binding SelDayType}" SelectedIndex="{Binding SelDayType}"
@@ -47,11 +47,11 @@
Margin="0,0,2.5,0" Margin="0,0,2.5,0"
Style="{StaticResource PartParam_ComboBox}"/> Style="{StaticResource PartParam_ComboBox}"/>
<StackPanel Orientation="Horizontal" Visibility="{Binding Date_Visibility}"> <StackPanel Orientation="Horizontal" Visibility="{Binding Date_Visibility}">
<TextBlock Text="{Binding From_Msg}" <TextBlock Text="Dal"
Style="{StaticResource Log_TextBlock}"/> Style="{StaticResource Log_TextBlock}"/>
<DatePicker SelectedDate="{Binding dtStartDate}" <DatePicker SelectedDate="{Binding dtStartDate}"
Style="{StaticResource Log_DatePicker}"/> Style="{StaticResource Log_DatePicker}"/>
<TextBlock Text="{Binding To_Msg}" <TextBlock Text="Al"
Style="{StaticResource Log_TextBlock}"/> Style="{StaticResource Log_TextBlock}"/>
<DatePicker SelectedDate="{Binding dtEndDate}" <DatePicker SelectedDate="{Binding dtEndDate}"
Style="{StaticResource Log_DatePicker}"/> Style="{StaticResource Log_DatePicker}"/>
@@ -9,6 +9,10 @@ Imports EgtBEAMWALL.Core.MachLog
Public Class MachineLogPageVM Public Class MachineLogPageVM
Inherits VMBase Inherits VMBase
Private m_Lock_LogList As New Object
Private m_MachineLog_Timer As New DispatcherTimer
Private Enum DayTypes As Integer Private Enum DayTypes As Integer
TODAY = 0 TODAY = 0
YESTERDAY = 1 YESTERDAY = 1
@@ -68,7 +72,7 @@ Public Class MachineLogPageVM
End Set End Set
End Property End Property
Private m_PartEventTypeList As New List(Of String)({"", EgtMsg(62527), EgtMsg(62528)}) Private m_PartEventTypeList As New List(Of String)({"", "Inizio", "Fine"})
Public ReadOnly Property PartEventTypeList As List(Of String) Public ReadOnly Property PartEventTypeList As List(Of String)
Get Get
Return m_PartEventTypeList Return m_PartEventTypeList
@@ -87,7 +91,7 @@ Public Class MachineLogPageVM
End Set End Set
End Property End Property
Private m_EntityTypeList As New List(Of String)({"", EgtMsg(62525), EgtMsg(62526)}) Private m_EntityTypeList As New List(Of String)({"", "Pezzo", "Barra"})
Public ReadOnly Property EntityTypeList As List(Of String) Public ReadOnly Property EntityTypeList As List(Of String)
Get Get
Return m_EntityTypeList Return m_EntityTypeList
@@ -106,7 +110,7 @@ Public Class MachineLogPageVM
End Set End Set
End Property End Property
Private m_DayTypeList As New List(Of String)({EgtMsg(62529), EgtMsg(62530), EgtMsg(62531)}) Private m_DayTypeList As New List(Of String)({"Oggi", "Ieri", "Periodo"})
Public ReadOnly Property DayTypeList As List(Of String) Public ReadOnly Property DayTypeList As List(Of String)
Get Get
Return m_DayTypeList Return m_DayTypeList
@@ -131,7 +135,7 @@ Public Class MachineLogPageVM
End If End If
NotifyPropertyChanged(NameOf(Date_Visibility)) NotifyPropertyChanged(NameOf(Date_Visibility))
' aggiorno lista da Db ' aggiorno lista da Db
UpdateMachineLogList() UpdateMachineLogList(True)
End Set End Set
End Property End Property
@@ -145,7 +149,7 @@ Public Class MachineLogPageVM
Dim lStartDate As Long = m_dtStartDate.ToFileTimeUtc() Dim lStartDate As Long = m_dtStartDate.ToFileTimeUtc()
WriteMainPrivateProfileString(S_MACHINELOGFILTER, K_STARTDATE, lStartDate.ToString()) WriteMainPrivateProfileString(S_MACHINELOGFILTER, K_STARTDATE, lStartDate.ToString())
' aggiorno lista da Db ' aggiorno lista da Db
UpdateMachineLogList() UpdateMachineLogList(True)
End Set End Set
End Property End Property
@@ -159,7 +163,7 @@ Public Class MachineLogPageVM
Dim lEndDate As Long = m_dtEndDate.ToFileTimeUtc() Dim lEndDate As Long = m_dtEndDate.ToFileTimeUtc()
WriteMainPrivateProfileString(S_MACHINELOGFILTER, K_ENDDATE, lEndDate.ToString()) WriteMainPrivateProfileString(S_MACHINELOGFILTER, K_ENDDATE, lEndDate.ToString())
' aggiorno lista da Db ' aggiorno lista da Db
UpdateMachineLogList() UpdateMachineLogList(True)
End Set End Set
End Property End Property
@@ -223,35 +227,6 @@ Public Class MachineLogPageVM
End Get End Get
End Property End Property
Public ReadOnly Property Entity_Msg As String
Get
Return EgtMsg(62520)
End Get
End Property
Public ReadOnly Property Event_Msg As String
Get
Return EgtMsg(62521)
End Get
End Property
Public ReadOnly Property Date_Msg As String
Get
Return EgtMsg(62522)
End Get
End Property
Public ReadOnly Property From_Msg As String
Get
Return EgtMsg(62523)
End Get
End Property
Public ReadOnly Property To_Msg As String
Get
Return EgtMsg(62524)
End Get
End Property
#End Region ' Messages #End Region ' Messages
@@ -292,6 +267,9 @@ Public Class MachineLogPageVM
m_dtEndDate = If(lEndDate > 0, DateTime.FromFileTimeUtc(lEndDate), DateTime.Today) m_dtEndDate = If(lEndDate > 0, DateTime.FromFileTimeUtc(lEndDate), DateTime.Today)
m_Date_Visibility = Visibility.Visible m_Date_Visibility = Visibility.Visible
End Select End Select
m_MachineLog_Timer.Interval = TimeSpan.FromMilliseconds(100)
AddHandler m_MachineLog_Timer.Tick, AddressOf MachineLog_Timer_Tick
m_MachineLog_Timer.Start()
End Sub End Sub
#End Region ' CONSTRUCTORS #End Region ' CONSTRUCTORS
@@ -334,21 +312,69 @@ Public Class MachineLogPageVM
m_colMachineLog_Description.ColumnVisibility = Visibility.Collapsed m_colMachineLog_Description.ColumnVisibility = Visibility.Collapsed
m_colMachineLog_SupervisorId.ColumnVisibility = Visibility.Collapsed m_colMachineLog_SupervisorId.ColumnVisibility = Visibility.Collapsed
End If End If
UpdateMachineLogList() UpdateMachineLogList(True)
m_MachineLogList_View = CollectionViewSource.GetDefaultView(m_MachineLogList) m_MachineLogList_View = CollectionViewSource.GetDefaultView(m_MachineLogList)
m_MachineLogList_View.Filter = AddressOf MachineLogFilter m_MachineLogList_View.Filter = AddressOf MachineLogFilter
End Sub End Sub
Friend Sub UpdateMachineLogList() ' indice di aggiornamento della lista rispetto a Db
Private m_nUpdateIndex As Integer
' indice di ricaricamento completo della lista dal Db
Private m_nRefreshIndex As Integer
' indice dell'ultimo update/refresh
Private m_nLastLogUpdate As Integer
Friend Sub UpdateMachineLogList(bRefresh As Boolean)
Dim nMaxIndex As Integer = Math.Max(m_nUpdateIndex, m_nRefreshIndex)
If bRefresh Then
m_nRefreshIndex = nMaxIndex + 1
Else
m_nUpdateIndex = nMaxIndex + 1
End If
End Sub
Private Sub MachineLog_Timer_Tick(sender As Object, e As EventArgs)
SyncLock m_Lock_LogList
Dim nRefresh As Integer = m_nRefreshIndex
Dim nUpdate As Integer = m_nUpdateIndex
If nRefresh > m_nLastLogUpdate Then
m_nLastLogUpdate = nRefresh
UpdateFromDb(True)
ElseIf nUpdate > m_nLastLogUpdate Then
m_nLastLogUpdate = nUpdate
UpdateFromDb(False)
End If
End SyncLock
End Sub
Friend Sub UpdateFromDb(bRefresh As Boolean)
'm_MachineLogList = New ObservableCollection(Of LogEvent)(DbControllers.m_LogMachineController.GetCoreDesc(DateTime.Now - TimeSpan.FromDays(300), DateTime.Now).Select(Of LogEvent)(Function(x) New LogEvent(x)).ToList()) 'm_MachineLogList = New ObservableCollection(Of LogEvent)(DbControllers.m_LogMachineController.GetCoreDesc(DateTime.Now - TimeSpan.FromDays(300), DateTime.Now).Select(Of LogEvent)(Function(x) New LogEvent(x)).ToList())
Dim DbList As List(Of LogEvent)
Select Case m_SelDayType Select Case m_SelDayType
Case DayTypes.TODAY
m_MachineLogList = New ObservableCollection(Of LogEvent)(DbControllers.m_LogMachineController.GetCoreDesc(DateTime.Today, DateTime.Today + TimeSpan.FromDays(1)).Select(Of LogEvent)(Function(x) New LogEvent(x)).ToList())
Case DayTypes.YESTERDAY
m_MachineLogList = New ObservableCollection(Of LogEvent)(DbControllers.m_LogMachineController.GetCoreDesc(DateTime.Today - TimeSpan.FromDays(1), DateTime.Today).Select(Of LogEvent)(Function(x) New LogEvent(x)).ToList())
Case DayTypes.PERIOD Case DayTypes.PERIOD
m_MachineLogList = New ObservableCollection(Of LogEvent)(DbControllers.m_LogMachineController.GetCoreDesc(m_dtStartDate, m_dtEndDate + TimeSpan.FromDays(1)).Select(Of LogEvent)(Function(x) New LogEvent(x)).ToList()) DbList = DbControllers.m_LogMachineController.GetCoreDesc(m_dtStartDate, m_dtEndDate + TimeSpan.FromDays(1)).Select(Of LogEvent)(Function(x) New LogEvent(x)).ToList()
Case DayTypes.YESTERDAY
DbList = DbControllers.m_LogMachineController.GetCoreDesc(DateTime.Today - TimeSpan.FromDays(1), DateTime.Today).Select(Of LogEvent)(Function(x) New LogEvent(x)).ToList()
Case Else ' DayTypes.TODAY
DbList = DbControllers.m_LogMachineController.GetCoreDesc(DateTime.Today, DateTime.Today + TimeSpan.FromDays(1)).Select(Of LogEvent)(Function(x) New LogEvent(x)).ToList()
End Select End Select
If bRefresh OrElse m_MachineLogList.Count < 1 Then
m_MachineLogList = New ObservableCollection(Of LogEvent)(DbList)
Else
' cerco in lista Db ultimo elemento della mia lista
Dim LastItem As LogEvent = m_MachineLogList(0)
Dim CommonItem As LogEvent = DbList.FirstOrDefault(Function(x) x.EventDateTime = LastItem.EventDateTime AndAlso x.EventType = LastItem.EventType AndAlso x.SupervisorId = LastItem.SupervisorId AndAlso x.Value = LastItem.Value)
Dim nCommonItemIndex As Integer
If Not IsNothing(CommonItem) Then
nCommonItemIndex = DbList.IndexOf(CommonItem)
End If
' aggiorno i successivi
If nCommonItemIndex >= 0 Then
For Index = nCommonItemIndex - 1 To 0 Step -1
m_MachineLogList.Insert(0, DbList(Index))
Next
End If
End If
NotifyPropertyChanged(NameOf(MachineLogList)) NotifyPropertyChanged(NameOf(MachineLogList))
m_MachineLogList_View = CollectionViewSource.GetDefaultView(m_MachineLogList) m_MachineLogList_View = CollectionViewSource.GetDefaultView(m_MachineLogList)
m_MachineLogList_View.Filter = AddressOf MachineLogFilter m_MachineLogList_View.Filter = AddressOf MachineLogFilter
@@ -376,7 +402,7 @@ Public Class MachineLogPageVM
''' Execute the Open. This method is invoked by the OpenCommand. ''' Execute the Open. This method is invoked by the OpenCommand.
''' </summary> ''' </summary>
Friend Sub Refresh() Friend Sub Refresh()
UpdateMachineLogList() UpdateMachineLogList(False)
End Sub End Sub
#End Region ' Refresh #End Region ' Refresh
@@ -277,31 +277,31 @@ Public Class MainMenuVM
Private Function InitINPUTS() As Boolean Private Function InitINPUTS() As Boolean
' fermo e riavvio lettura variabili per includere quelle della pagina input ' fermo e riavvio lettura variabili per includere quelle della pagina input
MachManaging.AddToCommandList(ThreadCommand.CreateCommand(CommandTypes.STOPREAD_NUMFLEXIUM)) MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.STOPREAD_NUMFLEXIUM))
MachManaging.AddToCommandList(ThreadCommand.CreateCommand(CommandTypes.READ_NUMFLEXIUM)) MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.READ_NUMFLEXIUM))
Map.refMainWindowVM.NotifyPropertyChanged(NameOf(Map.refMainWindowVM.nSelTabPage)) Map.refMainWindowVM.NotifyPropertyChanged(NameOf(Map.refMainWindowVM.nSelTabPage))
Return True Return True
End Function End Function
Private Function ExitINPUTS() As Boolean Private Function ExitINPUTS() As Boolean
' fermo e riavvio lettura variabili per includere quelle della pagina input ' fermo e riavvio lettura variabili per includere quelle della pagina input
MachManaging.AddToCommandList(ThreadCommand.CreateCommand(CommandTypes.STOPREAD_NUMFLEXIUM)) MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.STOPREAD_NUMFLEXIUM))
MachManaging.AddToCommandList(ThreadCommand.CreateCommand(CommandTypes.READ_NUMFLEXIUM)) MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.READ_NUMFLEXIUM))
Return True Return True
End Function End Function
Private Function InitOUTPUTS() As Boolean Private Function InitOUTPUTS() As Boolean
' fermo e riavvio lettura variabili per includere quelle della pagina input ' fermo e riavvio lettura variabili per includere quelle della pagina input
MachManaging.AddToCommandList(ThreadCommand.CreateCommand(CommandTypes.STOPREAD_NUMFLEXIUM)) MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.STOPREAD_NUMFLEXIUM))
MachManaging.AddToCommandList(ThreadCommand.CreateCommand(CommandTypes.READ_NUMFLEXIUM)) MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.READ_NUMFLEXIUM))
Map.refMainWindowVM.NotifyPropertyChanged(NameOf(Map.refMainWindowVM.nSelTabPage)) Map.refMainWindowVM.NotifyPropertyChanged(NameOf(Map.refMainWindowVM.nSelTabPage))
Return True Return True
End Function End Function
Private Function ExitOUTPUTS() As Boolean Private Function ExitOUTPUTS() As Boolean
' fermo e riavvio lettura variabili per includere quelle della pagina input ' fermo e riavvio lettura variabili per includere quelle della pagina input
MachManaging.AddToCommandList(ThreadCommand.CreateCommand(CommandTypes.STOPREAD_NUMFLEXIUM)) MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.STOPREAD_NUMFLEXIUM))
MachManaging.AddToCommandList(ThreadCommand.CreateCommand(CommandTypes.READ_NUMFLEXIUM)) MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.READ_NUMFLEXIUM))
Return True Return True
End Function End Function
@@ -248,8 +248,8 @@ Public Class MainWindowM
EgtSetLockId( sLockId) EgtSetLockId( sLockId)
End If End If
' Recupero livello e opzioni della chiave ' Recupero livello e opzioni della chiave
Dim bKey As Boolean = EgtGetKeyLevel(5327, 2506, 1, m_nKeyLevel) And Dim bKey As Boolean = EgtGetKeyLevel(5327, 2505, 1, m_nKeyLevel) And
EgtGetKeyOptions(5327, 2506, 1, m_nKeyOptions) EgtGetKeyOptions(5327, 2505, 1, m_nKeyOptions)
' Inizializzazione generale di EgtInterface ' Inizializzazione generale di EgtInterface
m_nDebug = GetMainPrivateProfileInt(S_GENERAL, K_DEBUG, 0) m_nDebug = GetMainPrivateProfileInt(S_GENERAL, K_DEBUG, 0)
m_sLogFile = m_sTempDir & "\" & SUPGENLOG_FILE_NAME.Replace("#", m_nInstance.ToString()) m_sLogFile = m_sTempDir & "\" & SUPGENLOG_FILE_NAME.Replace("#", m_nInstance.ToString())
@@ -234,7 +234,7 @@ Public Class MainWindowVM
Return Return
End If End If
' disconnetto comunicazione con macchina ' disconnetto comunicazione con macchina
MachManaging.AddToCommandList(ThreadCommand.CreateCommand(CommandTypes.DISCONNECT)) MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.DISCONNECT))
' termino thread di comunicazione con Db ed altri programmi ' termino thread di comunicazione con Db ed altri programmi
ViewerOptimizerCommThread.StopThread() ViewerOptimizerCommThread.StopThread()
' Verifico modifica parametri in Configurazione e chiedo il salvataggio ' Verifico modifica parametri in Configurazione e chiedo il salvataggio
@@ -70,5 +70,5 @@ Imports System.Windows
' by using the '*' as shown below: ' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")> ' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("2.5.6.2")> <Assembly: AssemblyVersion("2.5.5.4")>
<Assembly: AssemblyFileVersion("2.5.6.2")> <Assembly: AssemblyFileVersion("2.5.5.4")>
+3 -4
View File
@@ -1,5 +1,4 @@
Imports EgtUILib Imports EgtWPFLib5
Imports EgtWPFLib5
Imports EgtBEAMWALL.Core Imports EgtBEAMWALL.Core
Public Class LogEvent Public Class LogEvent
@@ -78,9 +77,9 @@ Public Class LogEvent
Get Get
Select Case m_Status Select Case m_Status
Case 1 Case 1
Return EgtMsg(62527) Return "Inizio"
Case 2 Case 2
Return EgtMsg(62528) Return "Fine"
Case Else Case Else
Return "" Return ""
End Select End Select
@@ -64,7 +64,7 @@ Public Class Variable
Return CommVar.sValue Return CommVar.sValue
End Get End Get
Set(value As String) Set(value As String)
MachManaging.AddToCommandList(ThreadCommand.CreateCommand(CommandTypes.WRITE, {CommVar.nType}, Nothing, {CommVar.sAddress, value})) MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.WRITE, {CommVar.nType}, Nothing, {CommVar.sAddress, value}))
NotifyPropertyChanged(NameOf(sValue)) NotifyPropertyChanged(NameOf(sValue))
End Set End Set
End Property End Property
@@ -120,17 +120,9 @@ Public Class BTLFeatureVM
End Get End Get
Set(value As String) Set(value As String)
Dim nTemp As Integer = 0 Dim nTemp As Integer = 0
If Integer.TryParse(value, nTemp) Then If Integer.TryParse(value, nTemp) Then
If EgtSetInfo(nFeatureId, BTL_FTR_PRIORITY, nTemp) Then m_BTLFeatureM.nPriority = nTemp
m_BTLFeatureM.nPriority = nTemp EgtSetInfo( nFeatureId, BTL_FTR_PRIORITY, m_BTLFeatureM.nPriority)
' setto feature da ricalcolare
ResetCalcFeature()
' se in View
If Map.refMainMenuVM.SelPage = Pages.VIEW Then
' imposto modificato per copie
EgtDuploSetModified(m_BTLPartM.nPartId)
End If
End If
End If End If
NotifyPropertyChanged(NameOf(sPriority)) NotifyPropertyChanged(NameOf(sPriority))
End Set End Set
@@ -2164,7 +2164,7 @@ Public Class BTLPartVM
' imposto path disegno da mostrare in BottomPanel ' imposto path disegno da mostrare in BottomPanel
Dim SelPBTLParam As BTLParamVM = Map.refProjectVM.BTLStructureVM.SelBTLPart.SelBTLFeatureVM.SelPBTLParam Dim SelPBTLParam As BTLParamVM = Map.refProjectVM.BTLStructureVM.SelBTLPart.SelBTLFeatureVM.SelPBTLParam
If Not IsNothing(SelPBTLParam) Then Map.refBottomPanelVM.SetCurrDraw(SelPBTLParam.sDrawPath) If Not IsNothing(SelPBTLParam) Then Map.refBottomPanelVM.SetCurrDraw(SelPBTLParam.sDrawPath)
Case NameOf(sender.bDO), NameOf(sender.sPriority) Case NameOf(sender.bDO)
NotifyPropertyChanged(NameOf(bDOALL)) NotifyPropertyChanged(NameOf(bDOALL))
' setto pezzo da ricalcolare ' setto pezzo da ricalcolare
'ResetCalcTotalPart() 'ResetCalcTotalPart()
@@ -29,7 +29,7 @@ Public Class FeatureManagerVM
Public ReadOnly Property Priority_Visibility As Visibility Public ReadOnly Property Priority_Visibility As Visibility
Get Get
Return If(CurrentMachine.nType = Core.ConstBeam.MachineType.WALL AndAlso CurrentMachine.bIsEnabledPriority, Visibility.Visible, Visibility.Collapsed) Return if(CurrentMachine.nType = Core.ConstBeam.MachineType.WALL, Visibility.Visible, Visibility.Collapsed)
End Get End Get
End Property End Property
@@ -62,7 +62,7 @@ Public Class FeatureInPartInRawPartListVM
Friend Sub UpdateColumns(nMachType As MachineType) Friend Sub UpdateColumns(nMachType As MachineType)
If Not IsNothing(m_colFeatureInPartInRawPart_Priority) Then If Not IsNothing(m_colFeatureInPartInRawPart_Priority) Then
m_colFeatureInPartInRawPart_Priority.Visible = (nMachType = MachineType.WALL AndAlso CurrentMachine.bIsEnabledPriority) m_colFeatureInPartInRawPart_Priority.Visible = (nMachType=MachineType.WALL)
End If End If
End Sub End Sub
@@ -235,8 +235,8 @@ Public Class MainWindowM
EgtSetLockId( sLockId) EgtSetLockId( sLockId)
End If End If
' Recupero livello e opzioni della chiave ' Recupero livello e opzioni della chiave
Dim bKey As Boolean = EgtGetKeyLevel(5327, 2506, 1, m_nKeyLevel) And Dim bKey As Boolean = EgtGetKeyLevel(5327, 2505, 1, m_nKeyLevel) And
EgtGetKeyOptions(5327, 2506, 1, m_nKeyOptions) EgtGetKeyOptions(5327, 2505, 1, m_nKeyOptions)
' Inizializzazione generale di EgtInterface ' Inizializzazione generale di EgtInterface
m_nDebug = GetMainPrivateProfileInt(S_GENERAL, K_DEBUG, 0) m_nDebug = GetMainPrivateProfileInt(S_GENERAL, K_DEBUG, 0)
m_sLogFile = m_sTempDir & "\" & VWOPTGENLOG_FILE_NAME.Replace("#", m_nInstance.ToString()) m_sLogFile = m_sTempDir & "\" & VWOPTGENLOG_FILE_NAME.Replace("#", m_nInstance.ToString())
@@ -70,5 +70,5 @@ Imports System.Windows
' by using the '*' as shown below: ' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")> ' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("2.5.6.2")> <Assembly: AssemblyVersion("2.5.5.4")>
<Assembly: AssemblyFileVersion("2.5.6.2")> <Assembly: AssemblyFileVersion("2.5.5.4")>
@@ -87,13 +87,6 @@ Public Module CurrentMachine
Return m_dMinOffset Return m_dMinOffset
End Get End Get
End Property End Property
' Attivazione Priority pareti
Private m_bIsEnabledPriority As Boolean = 0
Public ReadOnly Property bIsEnabledPriority As Boolean
Get
Return m_bIsEnabledPriority
End Get
End Property
#Region "Proprietà che leggono e scrivono i valori anche da o su file ini" #Region "Proprietà che leggono e scrivono i valori anche da o su file ini"
@@ -307,11 +300,6 @@ Public Module CurrentMachine
End Select End Select
EgtLuaGetGlobNumVar("GWD.MIN_HEIGHT", m_dMinRawH) EgtLuaGetGlobNumVar("GWD.MIN_HEIGHT", m_dMinRawH)
EgtLuaGetGlobNumVar("GWD.MAX_HEIGHT", m_dMaxRawH) EgtLuaGetGlobNumVar("GWD.MAX_HEIGHT", m_dMaxRawH)
If EgtLuaGetGlobNumVar("GWD.BTL_PRIORITY", nTemp) Then
m_bIsEnabledPriority = nTemp > 0
Else
m_bIsEnabledPriority = False
End If
Else Else
m_nViewDir = VT.ISO_SW m_nViewDir = VT.ISO_SW
m_OrigCorner = MCH_CR.BR m_OrigCorner = MCH_CR.BR
@@ -320,7 +308,6 @@ Public Module CurrentMachine
m_NestingCorner = MCH_CR.BR m_NestingCorner = MCH_CR.BR
m_dMinRawH = 5 m_dMinRawH = 5
m_dMaxRawH = 500 m_dMaxRawH = 500
m_bIsEnabledPriority = False
End If End If
' Cancello tavola globale ' Cancello tavola globale
EgtLuaResetGlobVar("GWD") EgtLuaResetGlobVar("GWD")
Binary file not shown.
Binary file not shown.