Imports EgtUILib Imports EgtWPFLib Public Class DirectCutPageUC ' Dichiarazione delle Page UserControl Private m_MainWindow As MainWindow = Application.Current.MainWindow Friend m_MachineButtons As MachineButtonsUC Friend m_ManualAxesMove As ManualAxesMoveUC Friend m_SingleCut As SingleCutUC Friend m_MultipleCut As MultipleCut Friend m_GridCut As GridCut Friend m_SawTest As SawTestUC ' Stato di visualizzazione della macchina Friend m_bShowMachine As Boolean = False Friend m_nMachLook As Integer = MCH_LOOK.ALL ' Dati generali CN Friend m_CN As CN_generico Private m_bFirst As Boolean = True ' Riferimento alla pagina correntemente attiva Friend m_ActiveDirectCutPage As DirectCutPages Enum DirectCutPages DirectCut SingleCut MultipleCut GridCut SawTest End Enum Private Sub DirectCutPage_Initialized(sender As Object, e As EventArgs) 'Creazione delle Page UserControl m_MachineButtons = New MachineButtonsUC m_ManualAxesMove = New ManualAxesMoveUC m_SingleCut = New SingleCutUC m_MultipleCut = New MultipleCut m_GridCut = New GridCut m_SawTest = New SawTestUC 'Posizionemento nella griglia delle Page UserControl m_MachineButtons.SetValue(Grid.RowProperty, 2) m_ManualAxesMove.SetValue(Grid.RowProperty, 1) m_SingleCut.SetValue(Grid.RowProperty, 1) m_MultipleCut.SetValue(Grid.RowProperty, 1) m_GridCut.SetValue(Grid.RowProperty, 1) m_SawTest.SetValue(Grid.RowProperty, 1) 'Assegno MachineButtons alla pagina LowerButtonGrid.Children.Add(m_MachineButtons) ManualBtn.Content = EgtMsg(MSG_DIRECTCUTPAGEUC + 1) SingleCutBtn.Content = EgtMsg(MSG_DIRECTCUTPAGEUC + 2) MultipleCutBtn.Content = EgtMsg(MSG_DIRECTCUTPAGEUC + 3) GridCutBtn.Content = EgtMsg(MSG_DIRECTCUTPAGEUC + 4) MachViewModeBtn.Content = EgtMsg(MSG_DIRECTCUTPAGEUC + 5) SawTestBtn.Content = EgtMsg(MSG_DIRECTCUTPAGEUC + 7) SawProbingBtn.Content = EgtMsg(MSG_DIRECTCUTPAGEUC + 8) End Sub Private Sub DirectCutPage_Loaded(sender As Object, e As RoutedEventArgs) m_ActiveDirectCutPage = DirectCutPages.DirectCut End Sub Private Sub ManualBtn_Click(sender As Object, e As RoutedEventArgs) Handles ManualBtn.Click LeftButtonGrid.Children.Add(m_ManualAxesMove) End Sub Private Sub SingleCutBtn_Click(sender As Object, e As RoutedEventArgs) Handles SingleCutBtn.Click LeftButtonGrid.Children.Add(m_SingleCut) m_ActiveDirectCutPage = DirectCutPages.SingleCut End Sub Private Sub MultipleCutBtn_Click(sender As Object, e As RoutedEventArgs) Handles MultipleCutBtn.Click LeftButtonGrid.Children.Add(m_MultipleCut) m_ActiveDirectCutPage = DirectCutPages.MultipleCut End Sub Private Sub GridCutBtn_Click(sender As Object, e As RoutedEventArgs) Handles GridCutBtn.Click LeftButtonGrid.Children.Add(m_GridCut) m_ActiveDirectCutPage = DirectCutPages.GridCut End Sub Private Sub SawTestBtn_Click(sender As Object, e As RoutedEventArgs) Handles SawTestBtn.Click LeftButtonGrid.Children.Add(m_SawTest) m_ActiveDirectCutPage = DirectCutPages.SawTest End Sub Private Sub MachViewModeBtn_Click(sender As Object, e As RoutedEventArgs) Handles MachViewModeBtn.Click If m_bShowMachine Then ' aggiorno lo stato Select Case m_nMachLook Case MCH_LOOK.ALL m_nMachLook = MCH_LOOK.TAB_HEAD Case MCH_LOOK.TAB_HEAD m_nMachLook = MCH_LOOK.TAB_TOOL Case Else m_nMachLook = MCH_LOOK.ALL End Select ' aggiorno lo stato della macchina e la sua visualizzazione EgtSetMachineLook(m_nMachLook) EgtDraw() End If End Sub Friend Sub DirectCutPage_Unloaded(sender As Object, e As RoutedEventArgs) Select Case m_ActiveDirectCutPage Case DirectCutPages.DirectCut ' Non è necessario fare alcunché Case DirectCutPages.SingleCut LeftButtonGrid.Children.Remove(m_SingleCut) Case DirectCutPages.MultipleCut LeftButtonGrid.Children.Remove(m_MultipleCut) Case DirectCutPages.GridCut LeftButtonGrid.Children.Remove(m_GridCut) Case DirectCutPages.SawTest LeftButtonGrid.Children.Remove(m_SawTest) End Select End Sub Private Sub SawProbingBtn_Click(sender As Object, e As RoutedEventArgs) Handles SawProbingBtn.Click ' Recupero file LUA EgtLuaExecFile(m_MainWindow.GetMachinesRootDir() & "\" & m_MainWindow.GetCurrMachine() & "\DirectCmd\SawProbing.lua") ' Recupero lama montata dal Db utensili EgtTdbSetCurrTool(m_MainWindow.m_CurrentMachine.sCurrSaw) Dim dToolParam As Double = 0 ' Imposto parametri EgtLuaSetGlobNumVar("CMD.TCPOS", 100) 'Per ora fisso 100 per le macchine senza ToolChanger, ma da modificare per poterle gestire!!!!!! EgtTdbGetCurrToolParam(MCH_TP.DIAM, dToolParam) EgtLuaSetGlobNumVar("CMD.DIAM", dToolParam * 1000) EgtTdbGetCurrToolParam(MCH_TP.THICK, dToolParam) EgtLuaSetGlobNumVar("CMD.THICK", dToolParam * 1000) EgtTdbGetCurrToolParam(MCH_TP.LEN, dToolParam) EgtLuaSetGlobNumVar("CMD.LENGTH", dToolParam * 1000) EgtLuaCallFunction("CMD.CmdString") ' Leggo variabili Dim CmdString As String = String.Empty EgtLuaGetGlobStringVar("CMD.CMDSTRING", CmdString) ' Reset lua EgtLuaResetGlobVar("CMD") ' Modifico stringa per inserire i newline CmdString = CmdString.Replace("
", Environment.NewLine) ' Creo file... Dim FilePath As String = m_MainWindow.GetCncDir() & "\SawProbing.xpi" ' ...e ci scrivo Dim Writer As New IO.StreamWriter(FilePath, False) Writer.Write(CmdString) Writer.Close() ' Verifico se sono connesso alla macchina prima di continuare If Not m_MainWindow.m_bNCLink Then Exit Sub End If ' Mando file al CN m_MainWindow.m_CNCommunication.SendProgram(FilePath, 900) ' Aspetto e lo avvio System.Threading.Thread.Sleep(300) m_MainWindow.m_CNCommunication.m_CN.DGeneralFunctions_CycleStart() ' Creo MsgBox di attesa Dim MsgBoxStateInfo As New EgtMsgBox(m_MainWindow, EgtMsg(MSG_DIRECTCUTPAGEUC + 41), EgtMsg(MSG_DIRECTCUTPAGEUC + 42), True, EgtMsgBox.Icons.NULL) Dim ProbingStateNameVar As String = String.Empty GetPrivateProfileString(S_MACH_PROBING, K_PROBINGSTATEVAR, "", ProbingStateNameVar, m_MainWindow.GetMachIniFile()) m_MainWindow.m_CNCommunication.m_CN.n_DReadELS_handle = 0 m_MainWindow.m_CNCommunication.m_CN.ReadEls_Add_Parameter(ProbingStateNameVar, 1) ' Definisco flag tastatura Dim bProbingOk As Boolean = False For I = 0 To 120 If m_MainWindow.m_CNCommunication.m_CN.n_DReadELS_handle = 1 Then Dim L108Val As Integer = m_MainWindow.m_CNCommunication.m_CN.d_DReadELS_value Select Case L108Val Case 0 ' Non faccio alcunchè perchè sta tastando Case 1 ' Tastatura completata bProbingOk = True Exit For Case 2 ' Errore bProbingOk = False Exit For End Select End If System.Threading.Thread.Sleep(1000) ' Incremento progressbar MsgBoxStateInfo.LoadingPrBr_Value += 100 / 120 ' Costringo ad aggiornare GUI Dim nDummy As Integer Application.Current.Dispatcher.Invoke(Windows.Threading.DispatcherPriority.Background, New Action(Function() nDummy = 0)) Next If bProbingOk Then ' Leggo spessore misurato Dim SawDiameterNameVar As String = String.Empty GetPrivateProfileString(S_MACH_PROBING, K_SAWDIAMETER, "", SawDiameterNameVar, m_MainWindow.GetMachIniFile()) m_MainWindow.m_CNCommunication.m_CN.n_DReadELS_handle = 0 m_MainWindow.m_CNCommunication.m_CN.ReadEls_Add_Parameter(SawDiameterNameVar, 1) Dim SawDiam As Double = 0 For I = 0 To 20 If m_MainWindow.m_CNCommunication.m_CN.n_DReadELS_handle = 1 Then SawDiam = m_MainWindow.m_CNCommunication.m_CN.d_DReadELS_value MsgBoxStateInfo.LoadingPrBr_Value = 100 MsgBoxStateInfo.Text = EgtMsg(MSG_DIRECTCUTPAGEUC + 43) ' Costringo ad aggiornare GUI Dim nDummy As Integer Application.Current.Dispatcher.Invoke(Windows.Threading.DispatcherPriority.Background, New Action(Function() nDummy = 0)) System.Threading.Thread.Sleep(1500) 'Trasformo misura rilevata in mm If m_MainWindow.m_CNCommunication.m_CN.Is_G71_active() Then SawDiam *= ONEMM / 1000 Else SawDiam *= ONEINCH / 1000 End If ' Imposto spessore misurato come diametro lama If SawDiam > -EPS_ZERO Then ' Recupero lama montata dal Db utensili EgtTdbSetCurrTool(m_MainWindow.m_CurrentMachine.sCurrSaw) EgtTdbSetCurrToolParam(MCH_TP.DIAM, SawDiam) EgtTdbSaveCurrTool() EgtTdbSave() End If ' Chiudo msgbox MsgBoxStateInfo.Close() Exit For End If System.Threading.Thread.Sleep(100) Next Else MsgBoxStateInfo.Text = EgtMsg(MSG_DIRECTCUTPAGEUC + 44) ' Costringo ad aggiornare GUI Dim nDummy As Integer Application.Current.Dispatcher.Invoke(Windows.Threading.DispatcherPriority.Background, New Action(Function() nDummy = 0)) System.Threading.Thread.Sleep(1500) MsgBoxStateInfo.Close() End If End Sub Private Sub ManualModeBtn_Click(sender As Object, e As RoutedEventArgs) Handles ManualModeBtn.Click ' Imposto modalità manuale della macchina Dim nResult As Short = m_CN.DGeneralFunctions_WriteCncMode(7) ' Modalità manuale End Sub End Class