Imports System.Windows.Threading Imports EgtUILib Public Class ManualAxesMoveUC ' Dichiarazione delle Page UserControl Private m_MainWindow As MainWindow = Application.Current.MainWindow Friend m_CN As CN_generico ' Timer per aggiornamento nomi assi Private m_Timer As New DispatcherTimer Private Sub ManualAxesMove_Initialized(sender As Object, e As EventArgs) AddHandler m_Timer.Tick, AddressOf Timer_tick End Sub Private Sub ManualAxesMove_Loaded(sender As Object, e As RoutedEventArgs) ' Nomi feed e speed FeedTxBl.Text = "F" SpeedTxBl.Text = "S" ' Valori feed e speed da lama corrente Dim dTemp As Double = 0 EgtTdbSetCurrTool(m_MainWindow.m_CurrentProjectPageUC.ToolTxBx.Text) EgtTdbGetCurrToolParam(MCH_TP.FEED, dTemp) FeedTxBx.Text = dTemp EgtTdbGetCurrToolParam(MCH_TP.SPEED, dTemp) SpeedTxBx.Text = dTemp ' Nomi assi UpdateAxesNames() ' Valori assi lineari : assegno '0' perchè incrementali L1TxBx.Text = "0" L2TxBx.Text = "0" L3TxBx.Text = "0" ' Valori assi rotanti : assegno i valori macchina Dim dL1, dL2, dL3, dR1, dR2 As Double m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) R1TxBx.Text = DoubleToString(dR1, 3) R2TxBx.Text = DoubleToString(dR2, 3) ' Lancio timer per aggiornamento interfaccia m_Timer.Interval = TimeSpan.FromMilliseconds(200) m_Timer.Start() End Sub Private Sub UpdateAxesNames() Dim sL1 As String = String.Empty Dim sL2 As String = String.Empty Dim sL3 As String = String.Empty Dim sR1 As String = String.Empty Dim sR2 As String = String.Empty m_MainWindow.m_CNCommunication.GetAxesNames(sL1, sL2, sL3, sR1, sR2) If Not m_CN.Is_G24_active() Then L1Btn.Content = sL1 ' X L2Btn.Content = sL2 ' Y L3Btn.Content = sL3 ' Z Else L1Btn.Content = "P" ' perpendicular L2Btn.Content = "H" ' horizontal L3Btn.Content = "V" ' vertical End If R1Btn.Content = sR1 ' C R2Btn.Content = sR2 ' B End Sub Private Sub Timer_tick() UpdateAxesNames() End Sub Private Sub XXBtn_Click(sender As Object, e As RoutedEventArgs) Handles L1Btn.Click, L2Btn.Click, L3Btn.Click, R1Btn.Click, R2Btn.Click Dim CurrentBtn As Button = e.Source Dim nTemp As Integer = 0 Dim dTemp As Double = 0 Dim CmdString As String = String.Empty EgtLuaExecFile(m_MainWindow.GetMachinesRootDir() & "\" & m_MainWindow.GetCurrMachine() & "\DirectCmd\AxesMove.lua") StringToDouble(FeedTxBx.Text, dTemp) EgtLuaSetGlobNumVar("CMD.F", dTemp) StringToDouble(SpeedTxBx.Text, dTemp) EgtLuaSetGlobNumVar("CMD.S", dTemp) ' Leggo gli assi lineari rispetto allo 0 pezzo (per essere compatibile con G150) m_CN.set_OP_OM(1) System.Threading.Thread.Sleep(1000) Dim dL1, dL2, dL3 As Double m_MainWindow.m_CNCommunication.GetLinearAxesPositions(dL1, dL2, dL3) EgtLuaSetGlobNumVar("CMD.L1", dL1) EgtLuaSetGlobNumVar("CMD.L2", dL2) EgtLuaSetGlobNumVar("CMD.L3", dL3) ' Leggo gli assi rotanti rispetto allo 0 macchina m_CN.set_OP_OM(0) System.Threading.Thread.Sleep(100) Dim dR1, dR2 As Double m_MainWindow.m_CNCommunication.GetRotaryAxesPositions(dR1, dR2) EgtLuaSetGlobNumVar("CMD.R1", dR1) EgtLuaSetGlobNumVar("CMD.R2", dR2) ' Assegno nome e valore asse da muovere EgtLuaSetGlobStringVar("CMD.AXISNAME", GetAxisName(CurrentBtn)) EgtLuaSetGlobNumVar("CMD.AXISMOVE", GetAxisMove(CurrentBtn)) ' Calcolo stringa di comando risultante EgtLuaExecLine("CmdString()") EgtLuaGetGlobStringVar("CMD.CMDSTRING", CmdString) EgtLuaResetGlobVar("CmdString") EgtLuaResetGlobVar("CMD") ' Eseguo in MDI m_CN.DGeneralFunctions_WriteCncMode(2) ' Modalità MDI System.Threading.Thread.Sleep(150) m_CN.sz_ManualDataInput = CmdString m_CN.MDI_command() System.Threading.Thread.Sleep(150) m_CN.DGeneralFunctions_CycleStart() m_CN.DGeneralFunctions_WriteCncMode(7) End Sub Private Function GetAxisName(ByVal nBtnName As Button) As String Dim sL1 As String = String.Empty Dim sL2 As String = String.Empty Dim sL3 As String = String.Empty Dim sR1 As String = String.Empty Dim sR2 As String = String.Empty m_MainWindow.m_CNCommunication.GetAxesNames(sL1, sL2, sL3, sR1, sR2) Select Case nBtnName.Name Case L1Btn.Name Return sL1 Case L2Btn.Name Return sL2 Case L3Btn.Name Return sL3 Case R1Btn.Name Return sR1 Case R2Btn.Name Return sR2 End Select Return String.Empty End Function Private Function GetAxisMove(ByVal nBtnName As Button) As Double Dim dVal As Double = 0 Select Case nBtnName.Name Case L1Btn.Name StringToDouble(L1TxBx.Text, dVal) Case L2Btn.Name StringToDouble(L2TxBx.Text, dVal) Case L3Btn.Name StringToDouble(L3TxBx.Text, dVal) Case R1Btn.Name StringToDouble(R1TxBx.Text, dVal) Case R2Btn.Name StringToDouble(R2TxBx.Text, dVal) End Select Return dVal End Function End Class