Imports System Imports System.Collections.Generic Imports System.Linq Imports System.Text Imports System.Threading.Tasks Imports System.Windows.Input Imports System.Collections.ObjectModel Imports System.Windows.Media Imports System.Windows Imports ISOCNC.Remoting Imports EgtUILib Imports System.Threading Class MachCommandMessagePanelVM Inherits VMBase Private _Connected As Boolean = False Public ReadOnly Property Connected As Boolean Get Return _Connected End Get End Property Public ReadOnly Property Connect_Background As SolidColorBrush Get Return (If(_Connected, Brushes.Green, Brushes.Red)) End Get End Property Private _ProgramPath As String Public ReadOnly Property ProgramPath As String Get Return _ProgramPath End Get End Property Private _ProgramIndex As Integer = 0 Public Property ProgramIndex As Integer Get Return _ProgramIndex End Get Set(ByVal value As Integer) _ProgramIndex = value End Set End Property Private _VarName As String Public Property VarName As String Get Return _VarName End Get Set(ByVal value As String) _VarName = value End Set End Property Private _VarValue As String = "" Public Property VarValue As String Get Return _VarValue End Get Set(ByVal value As String) _VarValue = value End Set End Property Public Sub SetVarValue(ByVal value As Object) _VarValue = CStr(value) NotifyPropertyChanged(NameOf(VarValue)) End Sub Private _AxisList As ObservableCollection(Of Axis) Public ReadOnly Property AxisList As ObservableCollection(Of Axis) Get Return _AxisList End Get End Property Private _OPStateList As List(Of ISOCNC.Remoting.MachineOperatingState) Public Property OPStateList As List(Of ISOCNC.Remoting.MachineOperatingState) Get Return _OPStateList End Get Set(ByVal value As List(Of ISOCNC.Remoting.MachineOperatingState)) _OPStateList = value End Set End Property Private _SelOPState As ISOCNC.Remoting.MachineOperatingState Public Property SelOPState As ISOCNC.Remoting.MachineOperatingState Get Return _SelOPState End Get Set(ByVal value As ISOCNC.Remoting.MachineOperatingState) _SelOPState = value End Set End Property Private _ErrCycle As String Public ReadOnly Property ErrCycle As String Get Return _ErrCycle End Get End Property Public Sub UpdateErrCycle(ByVal msg As String) _ErrCycle = msg NotifyPropertyChanged(NameOf(ErrCycle)) End Sub Private _Iso As String Public ReadOnly Property Iso As String Get Return _Iso End Get End Property Public Sub UpdateIso(ByVal msg As String) _Iso = msg NotifyPropertyChanged(NameOf(Iso)) End Sub Private _Message As String Public ReadOnly Property Message As String Get Return _Message End Get End Property Public Sub UpdateMessage(ByVal msg As String) _Message = msg NotifyPropertyChanged(NameOf(Message)) End Sub Private _ErrSystem As String Public ReadOnly Property ErrSystem As String Get Return _ErrSystem End Get End Property Public Sub UpdateErrSystem(ByVal msg As String) _ErrSystem = msg NotifyPropertyChanged(NameOf(ErrSystem)) End Sub Private m_cmdConnect As ICommand Private m_cmdDisconnect As ICommand Private m_cmdStart As ICommand Private m_cmdStop As ICommand Private m_cmdStep As ICommand Private m_cmdSearchFilePath As ICommand Private m_cmdAddProgram As ICommand Private m_cmdRemoveProgram As ICommand Private m_cmdReadVar As ICommand Private m_cmdWriteVar As ICommand Private m_cmdDeleteAlarms As ICommand Private m_cmdSetPoint As ICommand Public Sub New() Map.SetRefMachCommandMessagePanelVM(Me) _AxisList = New ObservableCollection(Of Axis) From { New Axis("X"), New Axis("Y"), New Axis("Z"), New Axis("C"), New Axis("B") } _OPStateList = New List(Of MachineOperatingState) From { MachineOperatingState.Start, MachineOperatingState.[Stop], MachineOperatingState.[End], MachineOperatingState.SetPoint, MachineOperatingState.Pending, MachineOperatingState.Unspecified } NotifyPropertyChanged(NameOf(Connect_Background)) End Sub Public ReadOnly Property Connect_Command As ICommand Get If m_cmdConnect Is Nothing Then m_cmdConnect = New Command(AddressOf Connect) Return m_cmdConnect End Get End Property Public Sub Connect(ByVal param As Object) MachManaging.m_CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.CONNECT)) ' avvio thread di gestione della macchina Map.refProjectVM.StartMachManagingThread() NotifyPropertyChanged(NameOf(Connect_Background)) If _Connected Then Init() End Sub Private Sub Init() _SelOPState = CType(Tpa.remObject.MachineOperativeStatus, MachineOperatingState) NotifyPropertyChanged(NameOf(SelOPState)) Dim sAxesValue As String = "" Dim dAxesValue As Double = 0 Dim sAxesName As String = "0.TESTA.AsseX.X" Tpa.remObject.SetVariableCommand(CInt(ISOCNC.Remoting.VariableCommands.ReadVar), sAxesName, sAxesValue) Double.TryParse(sAxesValue, dAxesValue) _AxisList(0).Value = dAxesValue sAxesName = "0.TESTA.AsseY.Y" Tpa.remObject.SetVariableCommand(CInt(ISOCNC.Remoting.VariableCommands.ReadVar), sAxesName, sAxesValue) Double.TryParse(sAxesValue, dAxesValue) _AxisList(1).Value = dAxesValue sAxesName = "0.TESTA.AsseZ.Z" Tpa.remObject.SetVariableCommand(CInt(ISOCNC.Remoting.VariableCommands.ReadVar), sAxesName, sAxesValue) Double.TryParse(sAxesValue, dAxesValue) _AxisList(2).Value = dAxesValue sAxesName = "0.TESTA.AsseC.C" Tpa.remObject.SetVariableCommand(CInt(ISOCNC.Remoting.VariableCommands.ReadVar), sAxesName, sAxesValue) Double.TryParse(sAxesValue, dAxesValue) _AxisList(3).Value = dAxesValue sAxesName = "0.TESTA.AsseB.B" Tpa.remObject.SetVariableCommand(CInt(ISOCNC.Remoting.VariableCommands.ReadVar), sAxesName, sAxesValue) Double.TryParse(sAxesValue, dAxesValue) _AxisList(4).Value = dAxesValue End Sub Public ReadOnly Property Disconnect_Command As ICommand Get If m_cmdDisconnect Is Nothing Then m_cmdDisconnect = New Command(AddressOf Disconnect) Return m_cmdDisconnect End Get End Property Public Sub Disconnect(ByVal param As Object) _Connected = Not Tpa.remObject.OnClose() NotifyPropertyChanged(NameOf(Connect_Background)) End Sub Public ReadOnly Property Start_Command As ICommand Get If m_cmdStart Is Nothing Then m_cmdStart = New Command(AddressOf Start) Return m_cmdStart End Get End Property Public Sub Start(ByVal param As Object) Tpa.remObject.SetCommand(CInt(ISOCNC.Remoting.Commands.Start)) System.Threading.Thread.Sleep(2000) Tpa.remObject.SetVariableCommand(CInt(ISOCNC.Remoting.VariableCommands.WriteVar), "0.FUNM.E80048", "0") End Sub Public ReadOnly Property Stop_Command As ICommand Get If m_cmdStop Is Nothing Then m_cmdStop = New Command(AddressOf [Stop]) Return m_cmdStop End Get End Property Public Sub [Stop](ByVal param As Object) Tpa.remObject.SetCommand(CInt(ISOCNC.Remoting.Commands.[Stop])) End Sub Public ReadOnly Property Step_Command As ICommand Get If m_cmdStep Is Nothing Then m_cmdStep = New Command(AddressOf [Step]) Return m_cmdStep End Get End Property Public Sub [Step](ByVal param As Object) Tpa.remObject.SetCommand(CInt(ISOCNC.Remoting.Commands.[End])) Tpa.remObject.RemoveAllProgramsFromList() End Sub Public ReadOnly Property SetPoint_Command As ICommand Get If m_cmdSetPoint Is Nothing Then m_cmdSetPoint = New Command(AddressOf SetPoint) Return m_cmdSetPoint End Get End Property Public Sub SetPoint(ByVal param As Object) Tpa.remObject.SetCommand(CInt(ISOCNC.Remoting.Commands.SetPoint)) End Sub Public ReadOnly Property SearchFilePath_Command As ICommand Get If m_cmdSearchFilePath Is Nothing Then m_cmdSearchFilePath = New Command(AddressOf SearchFilePath) Return m_cmdSearchFilePath End Get End Property Public Sub SearchFilePath(ByVal param As Object) Dim OpenFileDialog As Microsoft.Win32.OpenFileDialog = New Microsoft.Win32.OpenFileDialog() If OpenFileDialog.ShowDialog() = True Then _ProgramPath = OpenFileDialog.FileName NotifyPropertyChanged(NameOf(ProgramPath)) End Sub Public ReadOnly Property AddProgram_Command As ICommand Get If m_cmdAddProgram Is Nothing Then m_cmdAddProgram = New Command(AddressOf AddProgram) Return m_cmdAddProgram End Get End Property Public Sub AddProgram(ByVal param As Object) If SelOPState = MachineOperatingState.Pending Then Dim Path As String = _ProgramPath.Replace("\\", "\") Dim x As Boolean = Tpa.remObject.AddProgramToList(Path) Tpa.remObject.SetCommand(CInt(ISOCNC.Remoting.Commands.Start_Program_Soft)) End If End Sub Public ReadOnly Property RemoveProgram_Command As ICommand Get If m_cmdRemoveProgram Is Nothing Then m_cmdRemoveProgram = New Command(AddressOf RemoveProgram) Return m_cmdRemoveProgram End Get End Property Public Sub RemoveProgram(ByVal param As Object) If (Keyboard.Modifiers And ModifierKeys.Shift) = ModifierKeys.Shift Then Tpa.remObject.RemoveAllProgramsFromList() ElseIf _ProgramIndex < 0 Then Tpa.remObject.RemoveProgramFromList(_ProgramPath) Else Tpa.remObject.RemoveProgramFromListAtIndex(_ProgramIndex) End If End Sub Public ReadOnly Property ReadVar_Command As ICommand Get If m_cmdReadVar Is Nothing Then m_cmdReadVar = New Command(AddressOf ReadVar) Return m_cmdReadVar End Get End Property Public Sub ReadVar(ByVal param As Object) Tpa.remObject.SetVariableCommand(CInt(ISOCNC.Remoting.VariableCommands.ReadVar), _VarName, _VarValue) End Sub Public ReadOnly Property WriteVar_Command As ICommand Get If m_cmdWriteVar Is Nothing Then m_cmdWriteVar = New Command(AddressOf WriteVar) Return m_cmdWriteVar End Get End Property Public Sub WriteVar(ByVal param As Object) Tpa.remObject.SetVariableCommand(CInt(ISOCNC.Remoting.VariableCommands.WriteVar), _VarName, _VarValue) End Sub Public ReadOnly Property DeleteAlarms_Command As ICommand Get If m_cmdDeleteAlarms Is Nothing Then m_cmdDeleteAlarms = New Command(AddressOf DeleteAlarms) Return m_cmdDeleteAlarms End Get End Property Public Sub DeleteAlarms(ByVal param As Object) Tpa.remObject.DeleteAlarms(CInt(ISOCNC.Remoting.AlarmType.ISO)) End Sub End Class Class Axis Inherits VMBase Private _Name As String Public Property Name As String Get Return _Name End Get Set(ByVal value As String) _Name = value End Set End Property Private _Value As Double Public Property Value As Double Get Return _Value End Get Set(ByVal value As Double) _Value = value End Set End Property Public Sub New(ByVal Name As String) _Name = Name End Sub End Class