Imports EgtUILib Public Class MachineButtonsUC 'Riferimento alla MainWindow Dim m_MainWindow As MainWindow = Application.Current.MainWindow Private m_DirectCutPage As DirectCutPageUC Friend m_CN As CN_generico Private m_bFirst As Boolean = True Private Const MAX_BUTTONS As Integer = 10 Private ImageArrayY(MAX_BUTTONS - 1) As String Private ImageArrayN(MAX_BUTTONS - 1) As String Private CommandArrayY(MAX_BUTTONS - 1) As String Private CommandArrayN(MAX_BUTTONS - 1) As String Private StateFlagArray(MAX_BUTTONS - 1) As String ' Creazione converter da String a ImageSource Dim ImageConverter As New ImageSourceConverter Private Sub MachineButtons_Loaded(sender As Object, e As RoutedEventArgs) If m_bFirst Then m_DirectCutPage = m_MainWindow.m_DirectCutPageUC m_bFirst = False End If ' Rendo invisibili bottoni 3 e 5 assi per poi attivarli solo se presenti 'ThreeAxisBtn.Visibility = Windows.Visibility.Hidden 'FiveAxisBtn.Visibility = Windows.Visibility.Hidden Dim sButtonImage As String = String.Empty 'Dim sButtonImageSource As ImageSource Dim sButtonCommand As String = String.Empty Dim sButtonStateFlag As String = String.Empty Dim nIndex As Integer = 0 While nIndex < MAX_BUTTONS 'And GetPrivateProfileMachineButtons(S_MACHBUTTONS, K_BUTTON & (nIndex + 1) & "Y", sButtonImage, sButtonCommand, sButtonStateFlag, m_MainWindow.GetMachIniFile()) If GetPrivateProfileMachineButtons(S_MACHBUTTONS, K_BUTTON & (nIndex + 1) & "Y", sButtonImage, sButtonCommand, sButtonStateFlag, m_MainWindow.GetMachIniFile()) Then ImageArrayY(nIndex) = sButtonImage CommandArrayY(nIndex) = sButtonCommand StateFlagArray(nIndex) = sButtonStateFlag End If 'If CommandArray(nIndex) = "3Axes.lua" Then ' MachineButtonsGrid.Children.Remove(GetButton(nIndex + 1)) ' ThreeAxisBtn.SetValue(Grid.ColumnProperty, nIndex) ' ThreeAxisBtn.Visibility = Windows.Visibility.Visible ' Try ' Dim s As String = m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\" & sButtonImage ' sButtonImageSource = ImageConverter.ConvertFromString(s) ' ThreeAxisImg.Source = sButtonImageSource ' Catch ex As Exception ' EgtOutLog("Error loading image " & sButtonImage) ' End Try 'ElseIf CommandArray(nIndex) = "5Axes.lua" Then ' MachineButtonsGrid.Children.Remove(GetButton(nIndex + 1)) ' FiveAxisBtn.SetValue(Grid.ColumnProperty, nIndex) ' FiveAxisBtn.Visibility = Windows.Visibility.Visible ' Try ' Dim s As String = m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\" & sButtonImage ' sButtonImageSource = ImageConverter.ConvertFromString(s) ' FiveAxisImg.Source = sButtonImageSource ' Catch ex As Exception ' EgtOutLog("Error loading image " & sButtonImage) ' End Try 'Else 'End If 'Try ' Dim s As String = m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\" & sButtonImage ' sButtonImageSource = ImageConverter.ConvertFromString(s) ' GetImage(nIndex + 1).Source = sButtonImageSource 'Catch ex As Exception ' EgtOutLog("Error loading image " & sButtonImage) 'End Try nIndex += 1 End While nIndex = 0 While nIndex < MAX_BUTTONS 'And GetPrivateProfileMachineButtons(S_MACHBUTTONS, K_BUTTON & (nIndex + 1) & "N", sButtonImage, sButtonCommand, sButtonStateFlag, m_MainWindow.GetMachIniFile()) If GetPrivateProfileMachineButtons(S_MACHBUTTONS, K_BUTTON & (nIndex + 1) & "N", sButtonImage, sButtonCommand, sButtonStateFlag, m_MainWindow.GetMachIniFile()) Then ImageArrayN(nIndex) = sButtonImage CommandArrayN(nIndex) = sButtonCommand End If nIndex += 1 End While ' Nascondo bottoni inutilizzati Dim nYNum As Integer = 0 For Each Item In CommandArrayY If Not String.IsNullOrEmpty(Item) Then nYNum += 1 End If Next Dim nNNum As Integer = 0 For Each Item In CommandArrayN If Not String.IsNullOrEmpty(Item) Then nNNum += 1 End If Next Dim nBtnNum As Integer = Math.Max(nYNum, nNNum) nIndex = nBtnNum While nIndex < MAX_BUTTONS GetToggleButton(nIndex + 1).Visibility = Windows.Visibility.Hidden nIndex += 1 End While ' Se modalità Debug metto immaginette fisse e tolgo bottoni in eccesso If Not m_MainWindow.m_bNCLink Then For nIndex = 0 To 2 Try Dim s As String = m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\" & ImageArrayN(nIndex) Dim sButtonImageSource As ImageSource = ImageConverter.ConvertFromString(s) GetImage(nIndex + 1).Source = sButtonImageSource Catch ex As Exception EgtOutLog("Error loading image " & ImageArrayN(nIndex + 1)) End Try Next For nIndex = 3 To 4 Try Dim s As String = m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\" & ImageArrayY(nIndex) Dim sButtonImageSource As ImageSource = ImageConverter.ConvertFromString(s) GetImage(nIndex + 1).Source = sButtonImageSource Catch ex As Exception EgtOutLog("Error loading image " & ImageArrayN(nIndex + 1)) End Try Next For I = 6 To 10 GetToggleButton(I).Visibility = Windows.Visibility.Hidden Next End If End Sub Private Sub MachineButton_Click(sender As Object, e As RoutedEventArgs) Handles MachineButton1.Click, MachineButton2.Click, MachineButton3.Click, MachineButton4.Click, MachineButton5.Click, MachineButton6.Click, MachineButton7.Click, MachineButton8.Click, MachineButton9.Click, MachineButton10.Click Dim CurrentBtn As Primitives.ToggleButton = e.Source Dim nTemp As Integer = 0 Dim dTemp As Double = 0 Dim sTemp As String = String.Empty Dim b2Start As Boolean = False Dim CmdString As String = String.Empty If CurrentBtn.IsChecked Then EgtLuaExecFile(m_MainWindow.GetMachinesRootDir() & "\" & m_MainWindow.GetCurrMachine() & "\DirectCmd\" & CommandArrayY(GetToggleButtonIndex(CurrentBtn) - 1)) Else If Not (StateFlagArray(GetToggleButtonIndex(CurrentBtn) - 1) = "ThreeAxis" Or StateFlagArray(GetToggleButtonIndex(CurrentBtn) - 1) = "FiveAxis") Then EgtLuaExecFile(m_MainWindow.GetMachinesRootDir() & "\" & m_MainWindow.GetCurrMachine() & "\DirectCmd\" & CommandArrayN(GetToggleButtonIndex(CurrentBtn) - 1)) Else Return End If End If StringToDouble(m_DirectCutPage.m_ManualAxesMove.FeedTxBx.Text, dTemp) EgtLuaSetGlobNumVar("CMD.F", dTemp) StringToDouble(m_DirectCutPage.m_ManualAxesMove.SpeedTxBx.Text, dTemp) EgtLuaSetGlobNumVar("CMD.S", dTemp) nTemp = GetPrivateProfileInt(S_AXES, K_L1ID, 0, m_MainWindow.GetMachIniFile()) dTemp = m_CN.d_axis_position(nTemp) EgtLuaSetGlobNumVar("CMD.L1", dTemp) nTemp = GetPrivateProfileInt(S_AXES, K_L2ID, 1, m_MainWindow.GetMachIniFile()) dTemp = m_CN.d_axis_position(nTemp) EgtLuaSetGlobNumVar("CMD.L2", dTemp) nTemp = GetPrivateProfileInt(S_AXES, K_L3ID, 2, m_MainWindow.GetMachIniFile()) dTemp = m_CN.d_axis_position(nTemp) EgtLuaSetGlobNumVar("CMD.L3", dTemp) nTemp = GetPrivateProfileInt(S_AXES, K_R1ID, 8, m_MainWindow.GetMachIniFile()) dTemp = m_CN.d_axis_position(nTemp) EgtLuaSetGlobNumVar("CMD.R1", dTemp) nTemp = GetPrivateProfileInt(S_AXES, K_R2ID, 7, m_MainWindow.GetMachIniFile()) dTemp = m_CN.d_axis_position(nTemp) EgtLuaSetGlobNumVar("CMD.R2", dTemp) EgtLuaExecLine("CmdString()") ' Leggo variabili EgtLuaGetGlobStringVar("CMD.CMDSTRING", CmdString) EgtLuaGetGlobBoolVar("CMD.DOUBLESTART", b2Start) ' Reset lua EgtLuaResetGlobVar("CmdString") EgtLuaResetGlobVar("CMD") Dim nResult As Short nResult = m_CN.DGeneralFunctions_WriteCncMode(2) ' Modalità MDI m_CN.sz_ManualDataInput = CmdString m_CN.MDI_command() System.Threading.Thread.Sleep(300) m_CN.DGeneralFunctions_CycleStart() If b2Start Then System.Threading.Thread.Sleep(300) m_CN.DGeneralFunctions_CycleStart() End If System.Threading.Thread.Sleep(300) nResult = m_CN.DGeneralFunctions_WriteCncMode(7) ' Modalità manuale End Sub 'Private Sub MachineToggleButton_Click(sender As Object, e As RoutedEventArgs) Handles ThreeAxisBtn.Click, FiveAxisBtn.Click ' Dim CurrentBtn As Primitives.ToggleButton = e.Source ' Dim nTemp As Integer = 0 ' Dim dTemp As Double = 0 ' Dim sTemp As String = String.Empty ' Dim b2Start As Boolean = False ' Dim CmdString As String = String.Empty ' EgtLuaExecFile(m_MainWindow.GetMachinesRootDir() & "\" & m_MainWindow.GetCurrMachine() & "\DirectCmd\" & GetToggleButtonIndex(CurrentBtn)) ' StringToDouble(m_DirectCutPage.m_ManualAxesMove.FeedTxBx.Text, dTemp) ' EgtLuaSetGlobNumVar("CMD.F", dTemp) ' StringToDouble(m_DirectCutPage.m_ManualAxesMove.SpeedTxBx.Text, dTemp) ' EgtLuaSetGlobNumVar("CMD.S", dTemp) ' nTemp = GetPrivateProfileInt(S_AXES, K_L1ID, 0, m_MainWindow.GetMachIniFile()) ' dTemp = m_CN.d_axis_position(nTemp) ' EgtLuaSetGlobNumVar("CMD.L1", dTemp) ' nTemp = GetPrivateProfileInt(S_AXES, K_L2ID, 1, m_MainWindow.GetMachIniFile()) ' dTemp = m_CN.d_axis_position(nTemp) ' EgtLuaSetGlobNumVar("CMD.L2", dTemp) ' nTemp = GetPrivateProfileInt(S_AXES, K_L3ID, 2, m_MainWindow.GetMachIniFile()) ' dTemp = m_CN.d_axis_position(nTemp) ' EgtLuaSetGlobNumVar("CMD.L3", dTemp) ' nTemp = GetPrivateProfileInt(S_AXES, K_R1ID, 8, m_MainWindow.GetMachIniFile()) ' dTemp = m_CN.d_axis_position(nTemp) ' EgtLuaSetGlobNumVar("CMD.R1", dTemp) ' nTemp = GetPrivateProfileInt(S_AXES, K_R2ID, 7, m_MainWindow.GetMachIniFile()) ' dTemp = m_CN.d_axis_position(nTemp) ' EgtLuaSetGlobNumVar("CMD.R2", dTemp) ' EgtLuaExecLine("CmdString()") ' ' Leggo variabili ' EgtLuaGetGlobStringVar("CMD.CMDSTRING", CmdString) ' EgtLuaGetGlobBoolVar("CMD.DOUBLESTART", b2Start) ' ' Reset lua ' EgtLuaResetGlobVar("CmdString") ' EgtLuaResetGlobVar("CMD") ' Dim nResult As Short ' nResult = m_CN.DGeneralFunctions_WriteCncMode(2) ' Modalità MDI ' m_CN.sz_ManualDataInput = CmdString ' m_CN.MDI_command() ' System.Threading.Thread.Sleep(150) ' m_CN.DGeneralFunctions_CycleStart() ' If b2Start Then ' System.Threading.Thread.Sleep(150) ' m_CN.DGeneralFunctions_CycleStart() ' End If ' nResult = m_CN.DGeneralFunctions_WriteCncMode(7) ' Modalità manuale 'End Sub Friend Sub SpindleStateChanged(SpindleState As Boolean) Dim nIndex As Integer = Array.IndexOf(StateFlagArray, "Spindle") If SpindleState Then GetToggleButton(nIndex + 1).IsChecked = True Try Dim s As String = m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\" & ImageArrayY(nIndex) Dim sButtonImageSource As ImageSource = ImageConverter.ConvertFromString(s) GetImage(nIndex + 1).Source = sButtonImageSource Catch ex As Exception EgtOutLog("Error loading image " & ImageArrayY(nIndex + 1)) End Try Else GetToggleButton(nIndex + 1).IsChecked = False Try Dim s As String = m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\" & ImageArrayN(nIndex) Dim sButtonImageSource As ImageSource = ImageConverter.ConvertFromString(s) GetImage(nIndex + 1).Source = sButtonImageSource Catch ex As Exception EgtOutLog("Error loading image " & ImageArrayN(nIndex + 1)) End Try End If End Sub Friend Sub CoolantStateChanged(CoolantState As Boolean) Dim nIndex As Integer = Array.IndexOf(StateFlagArray, "Coolant") If CoolantState Then GetToggleButton(nIndex + 1).IsChecked = True Try Dim s As String = m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\" & ImageArrayY(nIndex) Dim sButtonImageSource As ImageSource = ImageConverter.ConvertFromString(s) GetImage(nIndex + 1).Source = sButtonImageSource Catch ex As Exception EgtOutLog("Error loading image " & ImageArrayY(nIndex + 1)) End Try Else GetToggleButton(nIndex + 1).IsChecked = False Try Dim s As String = m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\" & ImageArrayN(nIndex) Dim sButtonImageSource As ImageSource = ImageConverter.ConvertFromString(s) GetImage(nIndex + 1).Source = sButtonImageSource Catch ex As Exception EgtOutLog("Error loading image " & ImageArrayN(nIndex + 1)) End Try End If End Sub Friend Sub LaserStateChanged(LaserState As Boolean) Dim nIndex As Integer = Array.IndexOf(StateFlagArray, "Laser") If LaserState Then GetToggleButton(nIndex + 1).IsChecked = True Try Dim s As String = m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\" & ImageArrayY(nIndex) Dim sButtonImageSource As ImageSource = ImageConverter.ConvertFromString(s) GetImage(nIndex + 1).Source = sButtonImageSource Catch ex As Exception EgtOutLog("Error loading image " & ImageArrayY(nIndex + 1)) End Try Else GetToggleButton(nIndex + 1).IsChecked = False Try Dim s As String = m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\" & ImageArrayN(nIndex) Dim sButtonImageSource As ImageSource = ImageConverter.ConvertFromString(s) GetImage(nIndex + 1).Source = sButtonImageSource Catch ex As Exception EgtOutLog("Error loading image " & ImageArrayN(nIndex + 1)) End Try End If End Sub Friend Sub ThreeAxisStateChanged(ThreeAxisState As Boolean) Dim nIndex As Integer = Array.IndexOf(StateFlagArray, "ThreeAxis") If ThreeAxisState Then GetToggleButton(nIndex + 1).IsChecked = True Try Dim s As String = m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\" & ImageArrayY(nIndex) Dim sButtonImageSource As ImageSource = ImageConverter.ConvertFromString(s) GetImage(nIndex + 1).Source = sButtonImageSource Catch ex As Exception EgtOutLog("Error loading image " & ImageArrayY(nIndex + 1)) End Try Else GetToggleButton(nIndex + 1).IsChecked = False Try Dim s As String = m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\" & ImageArrayY(nIndex) Dim sButtonImageSource As ImageSource = ImageConverter.ConvertFromString(s) GetImage(nIndex + 1).Source = sButtonImageSource Catch ex As Exception EgtOutLog("Error loading image " & ImageArrayN(nIndex + 1)) End Try End If End Sub Friend Sub FiveAxisStateChanged(FiveAxisState As Boolean) Dim nIndex As Integer = Array.IndexOf(StateFlagArray, "FiveAxis") If FiveAxisState Then GetToggleButton(nIndex + 1).IsChecked = True Try Dim s As String = m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\" & ImageArrayY(nIndex) Dim sButtonImageSource As ImageSource = ImageConverter.ConvertFromString(s) GetImage(nIndex + 1).Source = sButtonImageSource Catch ex As Exception EgtOutLog("Error loading image " & ImageArrayY(nIndex + 1)) End Try Else GetToggleButton(nIndex + 1).IsChecked = False Try Dim s As String = m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\" & ImageArrayY(nIndex) Dim sButtonImageSource As ImageSource = ImageConverter.ConvertFromString(s) GetImage(nIndex + 1).Source = sButtonImageSource Catch ex As Exception EgtOutLog("Error loading image " & ImageArrayN(nIndex + 1)) End Try End If End Sub Private Function GetToggleButton(ByVal nIndex As Integer) As Primitives.ToggleButton Select Case nIndex Case 1 Return MachineButton1 Case 2 Return MachineButton2 Case 3 Return MachineButton3 Case 4 Return MachineButton4 Case 5 Return MachineButton5 Case 6 Return MachineButton6 Case 7 Return MachineButton7 Case 8 Return MachineButton8 Case 9 Return MachineButton9 Case Else Return MachineButton10 End Select End Function Private Function GetToggleButtonIndex(ByVal nBtnName As Primitives.ToggleButton) As Integer Select Case nBtnName.Name Case MachineButton1.Name Return 1 Case MachineButton2.Name Return 2 Case MachineButton3.Name Return 3 Case MachineButton4.Name Return 4 Case MachineButton5.Name Return 5 Case MachineButton6.Name Return 6 Case MachineButton7.Name Return 7 Case MachineButton8.Name Return 8 Case MachineButton9.Name Return 9 Case Else Return 10 End Select End Function 'Private Function GetToggleButtonIndex(ByVal nBtnName As Primitives.ToggleButton) As String ' Select Case nBtnName.Name ' Case ThreeAxisBtn.Name ' Return "3Axes.lua" ' Case Else ' Return "5Axes.lua" ' End Select 'End Function Private Function GetImage(ByVal nInd As Integer) As Image Select Case nInd Case 1 Return ImageButton1 Case 2 Return ImageButton2 Case 3 Return ImageButton3 Case 4 Return ImageButton4 Case 5 Return ImageButton5 Case 6 Return ImageButton6 Case 7 Return ImageButton7 Case 8 Return ImageButton8 Case 9 Return ImageButton9 Case Else Return ImageButton10 End Select End Function Public Function GetPrivateProfileMachineButtons( ByVal lpAppName As String, ByVal lpKeyName As String, ByRef lpButtonImage As String, ByRef lpCommand As String, ByRef lpStateFlag As String, ByVal lpFileName As String) As Boolean Dim sVal As String = String.Empty GetPrivateProfileString(lpAppName, lpKeyName, "", sVal, lpFileName) Dim sItems() As String = sVal.Split(",".ToCharArray) If sItems.Count() >= 2 Then lpButtonImage = sItems(0) lpCommand = sItems(1) If sItems.Count() >= 3 Then lpStateFlag = sItems(2) Else lpStateFlag = String.Empty End If Return True End If Return False End Function End Class