Files
OmagCUT/CNCommunication.vb
T
Dario Sassi e2daebcb5a OmagCUT 1.6k10 :
- aggiornamenti e migliorie varie.
2015-12-07 08:05:49 +00:00

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