e2daebcb5a
- aggiornamenti e migliorie varie.
208 lines
5.8 KiB
VB.net
208 lines
5.8 KiB
VB.net
Imports System.Windows.Threading
|
|
Imports System.Globalization
|
|
Imports EgtUILib
|
|
|
|
Public Class CNCommunication
|
|
|
|
' Riferimento alla MainWindow
|
|
Private m_MainWindow As MainWindow = Application.Current.MainWindow
|
|
Private m_MachineStatus As MachineStatusUC = m_MainWindow.m_MachineStatusUC
|
|
Private m_AlarmsPage As AlarmsPageUC = m_MainWindow.m_MachinePageUC.m_AlarmsPageUC
|
|
|
|
'Variabile per tipologia CN
|
|
Friend m_nNCType As Integer
|
|
|
|
'Variabile per stato CN
|
|
Private b_Nc_simulation As Boolean = False
|
|
|
|
'Variabile che indica il Mode corrente
|
|
Private m_nCurrMode As Integer
|
|
|
|
'Classe del CN
|
|
Public WithEvents m_CN As CN_generico
|
|
|
|
Private m_bNewPosData As Boolean = True
|
|
Private m_bNewDeltaData As Boolean = True
|
|
Private m_bNewVarData As Boolean = False
|
|
Private m_bTimerBusy As Boolean = False
|
|
|
|
'Creazione timer
|
|
Private m_RefreshTimer As New DispatcherTimer
|
|
|
|
Friend Sub CNCommunication_Initialization()
|
|
|
|
'Verifico tipologia del CN
|
|
If m_MainWindow.m_bNCLink = 0 Then
|
|
m_nNCType = 0
|
|
Else
|
|
m_nNCType = GetPrivateProfileInt(S_NUMERICALCONTROL, K_TYPE, 0, m_MainWindow.GetMachIniFile())
|
|
End If
|
|
|
|
'Inizializzo la connessione
|
|
InitCn()
|
|
|
|
'Verifico se la connessione è avvenuta e in caso affermativo lancio il timer di aggiornamento dell'interfaccia
|
|
If Not (m_CN.n_state < 2) Then
|
|
AddHandler m_RefreshTimer.Tick, AddressOf RefreshTimer_tick
|
|
m_RefreshTimer.Interval = TimeSpan.FromMilliseconds(100)
|
|
m_RefreshTimer.Start()
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub RefreshTimer_tick()
|
|
If Not m_bTimerBusy Then
|
|
|
|
m_bTimerBusy = True
|
|
m_RefreshTimer.Stop()
|
|
|
|
Refresh()
|
|
|
|
m_bTimerBusy = False
|
|
m_RefreshTimer.Start()
|
|
Else
|
|
Dim x As Integer = 10
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub InitCn()
|
|
|
|
m_MachineStatus.MachineStatusGrid.Background = Brushes.Gold
|
|
|
|
' istanzio l'oggetto CN
|
|
Try
|
|
Select Case m_nNCType
|
|
Case 0
|
|
m_CN = New CN_Debug
|
|
Case 1
|
|
m_CN = New Num.NumNCOld
|
|
Case Else
|
|
m_CN = New Num.NumNC
|
|
End Select
|
|
m_MainWindow.m_MachineStatusUC.m_CN = Me.m_CN
|
|
m_MainWindow.m_MachinePageUC.m_AlarmsPageUC.m_CN = Me.m_CN
|
|
m_MainWindow.m_MachinePageUC.m_TestingPage.m_CN = Me.m_CN
|
|
m_MainWindow.m_DirectCutPageUC.m_MachineButtons.m_CN = Me.m_CN
|
|
m_MainWindow.m_DirectCutPageUC.m_CN = Me.m_CN
|
|
m_MainWindow.m_DirectCutPageUC.m_ManualAxesMove.m_CN = Me.m_CN
|
|
Catch ex As Exception
|
|
' set status to statusbar
|
|
MsgBox(ex.Message)
|
|
End Try
|
|
|
|
Select Case m_nNCType
|
|
Case 0 'Debug
|
|
Case 1 'Axium
|
|
Case 2 'Flexium
|
|
If m_CN.n_state < 2 Then
|
|
'Per evitare crash nel caso si clickino bottoni che agiscono sul controllo, avvio il controllo di debug al posto del flexium
|
|
Me.m_CN = New CN_Debug
|
|
m_MainWindow.m_MachineStatusUC.m_CN = Me.m_CN
|
|
m_MainWindow.m_MachinePageUC.m_AlarmsPageUC.m_CN = Me.m_CN
|
|
m_MainWindow.m_MachinePageUC.m_TestingPage.m_CN = Me.m_CN
|
|
m_MainWindow.m_DirectCutPageUC.m_MachineButtons.m_CN = Me.m_CN
|
|
m_MainWindow.m_DirectCutPageUC.m_CN = Me.m_CN
|
|
m_MachineStatus.MachineStatusGrid.Background = Brushes.Red
|
|
Else
|
|
m_CN.b_axis_events_enable = True
|
|
m_MachineStatus.MachineStatusGrid.Background = Brushes.Gray
|
|
End If
|
|
|
|
End Select
|
|
|
|
End Sub
|
|
|
|
Private Sub NewVarChanged_handler(ByVal nst As Object) Handles m_CN.NewVarChanged
|
|
|
|
m_bNewVarData = True
|
|
|
|
End Sub
|
|
|
|
Private Sub NewPositionData_handler(ByVal nst As Short) Handles m_CN.NewPositionData
|
|
|
|
m_bNewPosData = True
|
|
|
|
End Sub
|
|
|
|
Private Sub NewPosDeltaData_handler(ByVal nst As Short) Handles m_CN.NewPosDeltaData
|
|
|
|
m_bNewDeltaData = True
|
|
|
|
End Sub
|
|
|
|
Sub Refresh()
|
|
|
|
If m_bNewPosData Then
|
|
m_bNewPosData = False
|
|
|
|
m_MachineStatus.DisplayPosition()
|
|
|
|
End If
|
|
|
|
If m_bNewDeltaData Then
|
|
m_bNewDeltaData = False
|
|
|
|
m_MachineStatus.DisplayDeltaPosition()
|
|
|
|
End If
|
|
|
|
|
|
|
|
If m_bNewVarData Then
|
|
m_bNewVarData = False
|
|
|
|
m_MachineStatus.DisplayVar()
|
|
|
|
End If
|
|
|
|
|
|
|
|
If m_CN.b_feed_override_changed Then
|
|
|
|
m_CN.b_feed_override_changed = False
|
|
m_MachineStatus.DisplayFeed()
|
|
m_MachineStatus.ConsumptionLbl.Content = m_CN.d_spindle_current
|
|
|
|
End If
|
|
|
|
If m_CN.b_spindle_data_changed Then
|
|
|
|
m_CN.b_spindle_data_changed = False
|
|
m_MachineStatus.DisplaySpeed()
|
|
|
|
End If
|
|
|
|
If m_CN.b_Tool_data_changed Then
|
|
m_CN.b_Tool_data_changed = False
|
|
|
|
'FrmMain.LblToolLen.Text = cn.Tools(0).lenght.ToString
|
|
'FrmMain.LblToolRad.Text = cn.Tools(0).radius.ToString
|
|
'FrmMain.LblToolComp.Text = cn.Tools(0).comp_num.ToString
|
|
|
|
End If
|
|
|
|
If m_CN.read_active_mode() <> m_nCurrMode Then
|
|
m_nCurrMode = m_CN.read_active_mode()
|
|
m_MachineStatus.DisplayActiveMode(m_nCurrMode)
|
|
|
|
End If
|
|
|
|
If m_CN.b_NC_error Then
|
|
m_CN.b_NC_error = False
|
|
m_AlarmsPage.NcError()
|
|
End If
|
|
|
|
If m_CN.b_PLC_error Then
|
|
m_AlarmsPage.PlcError(m_CN.sz_PLC_error_messages)
|
|
Else
|
|
'Dim BackColor As SolidColorBrush = m_MainWindow.m_MachineStatusUC.MachineStatusGrid.Background
|
|
'If Colors.Red.Equals(BackColor.Color) Then
|
|
' m_MainWindow.m_MachineStatusUC.MachineStatusGrid.Background = Brushes.DarkGray
|
|
'End If
|
|
End If
|
|
|
|
End Sub
|
|
|
|
End Class
|