13ce4d11dc
- Aggiuna comunicazione CN e visualizzazione parametri macchina.
222 lines
5.7 KiB
VB.net
222 lines
5.7 KiB
VB.net
Imports System.Windows.Threading
|
|
Imports System.Globalization
|
|
Imports EgtUILib
|
|
|
|
Public Class MachineStatusUC
|
|
|
|
'Const
|
|
Private Const MAX_AXES As Integer = 9
|
|
|
|
' Riferimento alla MainWindow
|
|
Private m_MainWindow As MainWindow = Application.Current.MainWindow
|
|
|
|
'Variabile per presenza collegamento al CN
|
|
Dim m_bNCLink As Integer
|
|
|
|
'Variabile per stato CN
|
|
Private b_Nc_simulation As Boolean = False
|
|
|
|
'Classe del CN
|
|
Public WithEvents cn As Num.NumNC
|
|
|
|
Private b_new_pos_data As Boolean = False
|
|
Private b_new_delta_data As Boolean = False
|
|
Private b_new_var_data As Boolean = False
|
|
Private b_timer_busy As Boolean = False
|
|
|
|
'Creazione timer
|
|
Dim RefreshTimer As New DispatcherTimer
|
|
|
|
Private Sub MachineStatus_Initialized(sender As Object, e As EventArgs)
|
|
|
|
'Verifico presenza del collegamento al CN
|
|
m_bNCLink = GetPrivateProfileInt("General", "CNLink", 0, m_MainWindow.GetIniFile())
|
|
If m_bNCLink Then
|
|
AddHandler RefreshTimer.Tick, AddressOf RefreshTimer_tick
|
|
RefreshTimer.Interval = TimeSpan.FromMilliseconds(100)
|
|
RefreshTimer.Start()
|
|
|
|
Call InitCn()
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub RefreshTimer_tick()
|
|
If Not b_timer_busy Then
|
|
|
|
b_timer_busy = True
|
|
RefreshTimer.Stop()
|
|
|
|
Call refresh()
|
|
|
|
b_timer_busy = False
|
|
RefreshTimer.Start()
|
|
Else
|
|
Dim x As Integer = 10
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub InitCn()
|
|
|
|
If (Not b_Nc_simulation) Then
|
|
|
|
MachineStatusGrid.Background = Brushes.Tomato
|
|
|
|
' istanzio l'oggetto CN
|
|
Try
|
|
|
|
cn = New Num.NumNC()
|
|
|
|
Catch ex As Exception
|
|
' set status to statusbar
|
|
MsgBox(ex.Message)
|
|
End Try
|
|
|
|
While cn.n_state < 2
|
|
System.Threading.Thread.Sleep(500) ' 0.5 sec wait!!!!!!!!
|
|
End While
|
|
|
|
cn.b_axis_events_enable = True
|
|
MachineStatusGrid.Background = Brushes.Gray
|
|
|
|
Else ' se in debug
|
|
|
|
MachineStatusGrid.Background = Brushes.Gold
|
|
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub NewVarChanged_handler(ByVal nst As Object) Handles cn.NewVarChanged
|
|
|
|
b_new_var_data = True
|
|
|
|
End Sub
|
|
|
|
Private Sub NewPositionData_handler(ByVal nst As Short) Handles cn.NewPositionData
|
|
|
|
b_new_pos_data = True
|
|
|
|
End Sub
|
|
|
|
Private Sub NewPosDeltaData_handler(ByVal nst As Short) Handles cn.NewPosDeltaData
|
|
|
|
b_new_delta_data = True
|
|
|
|
End Sub
|
|
|
|
Sub refresh()
|
|
|
|
If b_new_pos_data Then
|
|
b_new_pos_data = False
|
|
|
|
Call DisplayPosition()
|
|
|
|
End If
|
|
|
|
If b_new_delta_data Then
|
|
b_new_delta_data = False
|
|
|
|
Call DisplayDeltaPosition()
|
|
|
|
End If
|
|
|
|
|
|
|
|
If b_new_var_data Then
|
|
b_new_var_data = False
|
|
|
|
Call DisplayVar()
|
|
|
|
End If
|
|
|
|
|
|
|
|
If cn.b_feed_override_changed Then
|
|
cn.b_feed_override_changed = False
|
|
|
|
|
|
FeedOverrideLbl.Content = cn.d_DInterpo_Feed_override.ToString & "%"
|
|
FeedLbl.Content = cn.d_DInterpo_Prog_Feed.ToString
|
|
|
|
End If
|
|
|
|
If cn.b_spindle_data_changed Then
|
|
cn.b_spindle_data_changed = False
|
|
SpeedOverrideLbl.Content = cn.n_spindle_override(0).ToString
|
|
SpeedLbl.Content = cn.d_spindle_prog(0).ToString
|
|
|
|
End If
|
|
|
|
If cn.b_Tool_data_changed Then
|
|
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
|
|
|
|
|
|
|
|
End Sub
|
|
|
|
Sub DisplayPosition()
|
|
|
|
|
|
For n As Short = 0 To MAX_AXES - 1
|
|
|
|
Select Case n
|
|
Case 0 'X
|
|
Axis1Lbl.Content = cn.d_axis_position(n).ToString("F3", CultureInfo.InvariantCulture)
|
|
Case 1
|
|
Axis2Lbl.Content = cn.d_axis_position(n).ToString("F3", CultureInfo.InvariantCulture)
|
|
Case 2
|
|
Axis3Lbl.Content = cn.d_axis_position(n).ToString("F3", CultureInfo.InvariantCulture)
|
|
Case 7
|
|
Axis5Lbl.Content = cn.d_axis_position(n).ToString("F3", CultureInfo.InvariantCulture)
|
|
Case 8
|
|
Axis4Lbl.Content = cn.d_axis_position(n).ToString("F3", CultureInfo.InvariantCulture)
|
|
End Select
|
|
|
|
Next
|
|
|
|
|
|
End Sub
|
|
|
|
|
|
Sub DisplayDeltaPosition()
|
|
|
|
For n As Short = 0 To MAX_AXES - 1
|
|
|
|
Select Case n
|
|
Case 0 'X
|
|
DeltaAxis1Lbl.Content = cn.d_axis_delta(n).ToString("F3", CultureInfo.InvariantCulture)
|
|
Case 1
|
|
DeltaAxis2Lbl.Content = cn.d_axis_delta(n).ToString("F3", CultureInfo.InvariantCulture)
|
|
Case 2
|
|
DeltaAxis3Lbl.Content = cn.d_axis_delta(n).ToString("F3", CultureInfo.InvariantCulture)
|
|
Case 7
|
|
DeltaAxis4Lbl.Content = cn.d_axis_delta(n).ToString("F3", CultureInfo.InvariantCulture)
|
|
Case 8
|
|
DeltaAxis5Lbl.Content = cn.d_axis_delta(n).ToString("F3", CultureInfo.InvariantCulture)
|
|
End Select
|
|
|
|
Next
|
|
|
|
End Sub
|
|
|
|
Sub DisplayVar()
|
|
|
|
'For n As Short = 0 To FrmMain.MAX_AXES - 1
|
|
|
|
' lbl_var_values(n).Text = cn.d_Dvariable_values(n * 10).ToString
|
|
|
|
'Next
|
|
|
|
End Sub
|
|
|
|
End Class
|