Imports System.Collections.Generic Imports System.ComponentModel Imports System.Data Imports System.Drawing Imports System.Linq Imports System.Text Imports System.Windows.Forms Namespace Num Public Class NumNC Inherits CN_generico #Region " Classes" #End Region #Region " Enum" Enum eDatatype As Short tpUnknown = -1 ' -1 unknown ... tpByte = 0 ' 0: signed byte - SINT8 tpUByte = 1 ' 1: unsigned byte - UINT8 tpShort = 2 ' 2: short integer - SINT16 tpUShort = 3 ' 3: unsigned short integer - UINT16 tpLong = 4 ' 4: long integer - SINT32 tpULong = 5 ' 5: unsigned long integer - UINT32 tpDouble = 6 ' 6: double floating point tpByteMap = 7 ' 7: byte bitmap - read as UINT8, show as BOOL tpWordMap = 8 ' 8: word bitmap - read as UINT16, show as BOOL tpLongMap = 9 ' 9: long bitmap - read as UINT32, show as BOOL tpLLong = 10 ' 10: 64 bits integer long tpByteLongMap = 11 ' 11: long bitmap - read as UINT32, show as BYTE End Enum Enum eCnMode As Short AutoM = 0 SingleM = 1 MDI = 2 Manual = 7 End Enum #End Region #Region " Num objects" ' Instance the FXServer object variables Dim WithEvents objDRunTimeSystem As FXServer.DRunTimeSystem Dim WithEvents objDGroupManager As FXServer.DGroupManager Dim WithEvents objDReadELS As FXServer.DReadELS Dim WithEvents objDPlcVariables As FXServer.DPlcVariables Dim WithEvents objDVariables As FXServer.DVariables Dim WithEvents objDReadTestExectime As FXServer.DReadTestExectime Dim WithEvents objDPosition As FXServer.DPosition Dim WithEvents objDNCKParameter As FXServer.DNCKParameter Dim WithEvents objDMdiCommand As FXServer.DMdiCommand Dim WithEvents objDMainCncData As FXServer.DMainCncData Dim WithEvents objDNumDirectory As FXServer.DNumDirectory Dim WithEvents objDInterpo As FXServer.DInterpo Dim WithEvents objDGeneralFunctions As FXServer.DGeneralFunctions Dim WithEvents objDFeedOverride As FXServer.DFeedOverride Dim WithEvents objDReadSpindleComplete As FXServer.DReadSpindleComplete Dim WithEvents objDFileTransfer As FXServer.DFileTransfer Dim WithEvents objDTool As FXServer.DTool 'FXLib Dim WithEvents objSystemFunctions As FXLib.SystemFunctions Dim WithEvents objCncState As FXLib.CncState 'FXLog Dim WithEvents objErrorHandler As FXLog.ErrorHandler Dim WithEvents objConfig As FXLog.Config #End Region #Region " local var" Private n_dTool_range_start As Short = 1 Private n_dTool_range_stop As Short = 2 Private AplCncNumber As New List(Of Short) Private AplChannel As New List(Of Short) Private AplSet As New List(Of Short) Private AplStatus As Short Private ExceptStatus As Short #End Region #Region " Constructor" Sub New() ' Initialize and start Runtime System sz_NC_error_messages = New List(Of String) InitFxServer() End Sub #End Region #Region "Internal Methods" ' Init FXServer class DRunTimeSystem Private Sub InitFxServer() n_state = 0 'Initialize the class DRunTimeSystem objDRunTimeSystem = New FXServer.DRunTimeSystem() objDRunTimeSystem.Init() n_state = 1 Dim Index As Integer = 0 Dim SaveCurrProj As New SaveCurrProjWD While n_state < 2 And Index < 20 If Index = 0 Then SaveCurrProj.sTextString = "Collegamento in corso" SaveCurrProj.Show() End If System.Threading.Thread.Sleep(500) ' 0.5 sec wait Index += 1 End While If n_state < 2 Then SaveCurrProj.Close() SaveCurrProj = New SaveCurrProjWD SaveCurrProj.sTextString = "Collegamento non riuscito" SaveCurrProj.Show() System.Threading.Thread.Sleep(2000) ' 2 sec wait SaveCurrProj.Close() Else SaveCurrProj.Close() SaveCurrProj = New SaveCurrProjWD SaveCurrProj.sTextString = "Collegamento riuscito" SaveCurrProj.Show() System.Threading.Thread.Sleep(2000) ' 2 sec wait SaveCurrProj.Close() End If sz_versionRTS = objDRunTimeSystem.GetVersionRTS sz_ConnectionAddress = objDRunTimeSystem.GetConnectionAddress sz_AffaireNumber = objDRunTimeSystem.GetAffaireNumber(1).ToString End Sub ' Init FXServer classes for application Private Sub InitFxObjects() Dim n_ret As Short 'Initialize FXServer class DGroupManager objDGroupManager = New FXServer.DGroupManager() objDGroupManager.CncNumber = 0 objDGroupManager.AxisGroup = 0 ' seleziona gruppo assi CH1 'Initialize FXServer class DMdiCommand objDMdiCommand = New FXServer.DMdiCommand() objDMdiCommand.Init(objDGroupManager.Handle) 'Initialize FXServer class DMainCncData objDMainCncData = New FXServer.DMainCncData() objDMainCncData.Init(objDGroupManager.Handle) 'Initialize FXServer class DGeneralFunctions objDGeneralFunctions = New FXServer.DGeneralFunctions() objDGeneralFunctions.Init(objDGroupManager.Handle) 'Initialize FXServer class DFileTransfer objDFileTransfer = New FXServer.DFileTransfer objDFileTransfer.Init(objDGroupManager.Handle) ' --------'Initialize FXServer class DFeedOverride ' --------objDFeedOverride = New FXServer.DFeedOverride() ' --------objDFeedOverride.Init(objDGroupManager.Handle) ' Detect and identify the Flexium CNC type sz_CncFxIdentifier = objDMainCncData.GetCncIdentifier() ' _txtGetCncIdentification.Invoke(DirectCast(Sub() _txtGetCncIdentification.Text = CncFxIdentifier, MethodInvoker)) If sz_CncFxIdentifier = "Flexium 6" OrElse sz_CncFxIdentifier = "Flexium 8" OrElse sz_CncFxIdentifier = "Flexium 68" Then IsFlexiumPlus = False Else IsFlexiumPlus = True End If d_LinearAxisPrecision = CDbl(objDMainCncData.GetLinearPrecision()) ' ' Initialize FXServer class DPosition ' objDPosition = New FXServer.DPosition() '--objDPosition.Flag = 0 '--objDPosition.ModeOP = 0 '--objDPosition.FastUpdate = 0 ' Disable FastUpdate=0 To show the refresh time by Flag > 0 objDPosition.Init(objDGroupManager.Handle) '--objDPosition.FireValues() n_validaxes = objDPosition.FireValidAxis() ' ' Initialize FXServer class DReadELS ' 'objDReadELS = New FXServer.DReadELS 'Metodi 'objDReadELS.Flag = 0 'objDReadELS.Init(objDGroupManager.Handle) 'objDReadELS.AddParameter("E80000", 1) ' objDReadELS.AddParameter("E80001", 2) ' objDReadELS.AddParameter("E80002", 3) 'objDReadELS.AddParameter("E70000", 2) 'objDReadELS.AddParameter("L100", 3) ' ' dall' esterno call ReadEls_Add_Parameter ( "E80000", 1 ) ' objDVariables = New FXServer.DVariables objDVariables.Init(objDGroupManager.Handle, "E80000", 10) ' 10 variables ' short n_c = Convert.ToInt16(_Variables[9, 1].Text ); ' short rc = objDVariables.WriteVariables2(2, objDGroupManager.Handle, "E80000", n_c); // era 60001 'Dim Paras() As String = New String(1) {"E80000", "E80001"} 'Dim Paras As String = "E80000;E80001" 'Dim Valus As Object 'Dim MyRnd As New Random 'Valus = MyRnd.Next(500) & ";" & MyRnd.Next(450, 1000) 'objDVariables.WriteVariables(objDGroupManager.Handle, Paras, Valus) ' 'Initialize FXServer class DInterpo ' objDInterpo = New FXServer.DInterpo objDInterpo.Init(objDGroupManager.Handle) 'Initialize FXServer class DReadSpindleComplete ' Only available with FX Server >= 3.9 ' objDReadSpindleComplete.ValueChanged2 += new FXServer.IDReadSpindleCompleteEvents_ValueChanged2EventHandler(objDReadSpindleComplete_ValueChanged2); objDReadSpindleComplete = New FXServer.DReadSpindleComplete n_ret = objDReadSpindleComplete.Init(objDGroupManager.Handle) ' Initialize FXServer class DTool objDTool = New FXServer.DTool n_ret = objDTool.Init(objDGroupManager.Handle) ' Initialize FXLib SystemFunctions object 'objSystemFunctions = New FXLib.SystemFunctions() ' objSystemFunctions.InitWindowsEvent() ' Load Language Values to List 'objSystemFunctions.FireAllLanguages() 'Initialize FXLog Config Objects ' --------objConfig = New FXLog.Config() ' --------objConfig.Init() ' Initialize FXLog ErrorHandler Objects objErrorHandler = New FXLog.ErrorHandler() ' --------' Initialisation config for testing ' --------' Accepting all messages ' --------' Consult the documentation for detailed information objErrorHandler.AllError = 1 objErrorHandler.ErrorGlobal = 0 objErrorHandler.SetChannel(0, 0) objErrorHandler.AcceptBootSysMessage(1) objErrorHandler.AcceptException(0) ' Initialize FXLib CncState objects ' --------objCncState = New FXLib.CncState() ' --------objCncState.Init() ' Initializes FXServer Component DNumDirectory ' works with the zone 0 (Customer content) ' --------objDNumDirectory = New FXServer.DNumDirectory() ' --------objDNumDirectory.Init(objDGroupManager.Handle) ' --------objDNumDirectory.ReadMemorySize() End Sub ' Close FXServer objects Private Sub CloseFxObjects() ' FXServer classes without method Close() to close the object => possibilty ' FXServer objectvariable can dispose from memory by following procedure ' !!!!!!!!!!!! aggiungere release di tutti gli oggetti creati !!!! System.Runtime.InteropServices.Marshal.ReleaseComObject(objDGroupManager) objDGroupManager = Nothing System.Runtime.InteropServices.Marshal.ReleaseComObject(objDMdiCommand) objDMdiCommand = Nothing System.Runtime.InteropServices.Marshal.ReleaseComObject(objDMainCncData) objDMainCncData = Nothing System.Runtime.InteropServices.Marshal.ReleaseComObject(objDGeneralFunctions) objDGeneralFunctions = Nothing ' --------System.Runtime.InteropServices.Marshal.ReleaseComObject(objDFeedOverride) ' --------objDFeedOverride = Nothing System.Runtime.InteropServices.Marshal.ReleaseComObject(objDPosition) objDPosition = Nothing ' --------System.Runtime.InteropServices.Marshal.ReleaseComObject(objDReadELS) ' --------objDReadELS = Nothing System.Runtime.InteropServices.Marshal.ReleaseComObject(objDVariables) objDVariables = Nothing System.Runtime.InteropServices.Marshal.ReleaseComObject(objDInterpo) objDInterpo = Nothing System.Runtime.InteropServices.Marshal.ReleaseComObject(objDReadSpindleComplete) objDReadSpindleComplete = Nothing System.Runtime.InteropServices.Marshal.ReleaseComObject(objDTool) objDTool = Nothing ' --------System.Runtime.InteropServices.Marshal.ReleaseComObject(objSystemFunctions) ' --------objSystemFunctions = Nothing ' --------System.Runtime.InteropServices.Marshal.ReleaseComObject(objConfig) ' --------objConfig = Nothing System.Runtime.InteropServices.Marshal.ReleaseComObject(objErrorHandler) objErrorHandler = Nothing ' --------System.Runtime.InteropServices.Marshal.ReleaseComObject(objCncState) ' --------objCncState = Nothing ' --------System.Runtime.InteropServices.Marshal.ReleaseComObject(objDNumDirectory) ' --------objDNumDirectory = Nothing ' FXServer dispose by the class method Close() MessageBox.Show("CloseFxObjects") End Sub #End Region #Region " Events" #Region "-- FXServer -- DRunTimeSystem EVENTS" ' ' ' ------->> FXServer Event DRunTimeSystem ServerInitializationFinished ' Private Sub objDRunTimeSystem_ServerInitializationFinished() Handles objDRunTimeSystem.ServerInitializationFinished ' Initialize the FXServer class for application InitFxObjects() sz_ServerInitStatus = "FXServer objects initialized !" sz_ServerReinitStatus = "FXServer no objects closed !" n_state = 2 End Sub ' ' ' ------->> FXServer Event DRunTimeSystem ServerReinitializationStarted ' Private Sub objDRunTimeSystem_ServerReinitializationStarted() Handles objDRunTimeSystem.ServerReinitializationStarted CloseFxObjects() sz_ServerInitStatus = "FXServer objects closed !" sz_ServerReinitStatus = "FXServer objects not initialized !" n_state = 3 End Sub 'Private Delegate Sub _RTSWaitForInteraction(ByVal state As Short, ByVal question As Short, ByVal Cnc As Short, ByVal extAdr As Short, ByVal AddStrings As Object) Private Sub objDRunTimeSystem_RTSWaitForInteraction(ByVal state As Short, ByVal question As Short, ByVal Cnc As Short, _ ByVal extAdr As Short, ByVal AddStrings As Object) Handles objDRunTimeSystem.RTSWaitForInteraction End Sub Private Sub objDRunTimeSystem_CncApplikationLoaded(ByVal value As Short) Handles objDRunTimeSystem.CncApplikationLoaded 'If Me.InvokeRequired Then 'Invoke(New CncApplikationLoaded(AddressOf objDRunTimeSystem_CncApplikationLoaded), value) 'Else ' lstData.Items.Add("CncApplikationLoaded--> " & value ' !!!!!!!!!!!!!!!!!!!!!! 'End If End Sub #End Region #Region "-- FXServer -- DGroupManager EVENTS" ' ' ' ------->> FXServer Event DGroupManager ErrorHandler ' Private Sub objDGroupManager_ErrorHandler(szError As String, nTextNumber As Short) Handles objDGroupManager.ErrorHandler MessageBox.Show("DGroupManager.ErrorHandler message : " & szError & "ErrorHandler number : " & nTextNumber.ToString) End Sub #End Region #Region "-- FXServer -- DGeneralFunctions EVENTS" ' ' ------->> FXServer Event GeneralFunctions ProgramActivated Private Sub objDGeneralFunctions_ProgramActivated(nErrorcode As Short) Handles objDGeneralFunctions.ProgramActivated n_activate_error_code = nErrorcode ' 0 = OK ; > 0 errorcode End Sub ' ' ------->> FXServer Event GeneralFunctions OnCncStart Private Sub objDGeneralFunction_OnCncStart(nErrorcode As Short) Handles objDGeneralFunctions.OnCncStart End Sub ' ' ------->> FXServer Event GeneralFunctions OnCncStop Private Sub objDGeneralFunction_OnCncStop(nErrorcode As Short) Handles objDGeneralFunctions.OnCncStop End Sub ' ' ------->> FXServer Event GeneralFunctions OnCncReset Private Sub objDGeneralFunction_OnCncReset(nErrorcode As Short) Handles objDGeneralFunctions.OnCncReset End Sub ' ' ------->> FXServer Event GeneralFunctions CncModeWritten Private Sub objDGeneralFunction_CncModeWritten(nErrorcode As Short) Handles objDGeneralFunctions.CncModeWritten End Sub ' ' ------->> FXServer Event GeneralFunctions VariableWritten Private Sub objDGeneralFunction_VariableWritten(nErrorcode As Short) Handles objDGeneralFunctions.VariableWritten If nErrorcode <> 0 Then MessageBox.Show("DGeneralFunctions.VariableWritten :" + " " + nErrorcode.ToString()) End If End Sub ' ' ------->> FXServer Event GeneralFunctions OnCncStop Private Sub objDGeneralFunction_OnSkipLevelWritten(iHandle As Integer, nErrorcode As Short) Handles objDGeneralFunctions.OnSkipLevelWritten End Sub #End Region #Region "-- FXServer -- DFileTransfer EVENTS" ' ' ------->> FXServer Event DFileTransfer Completed Private Sub objDFileTransfer_Completed(l_Handle As Integer) Handles objDFileTransfer.Completed End Sub ' ' ------->> FXServer Event DFileTransfer TransferStarted Private Sub objDFileTransfer_TransferStarted(l_Handle As Integer) Handles objDFileTransfer.TransferStarted End Sub ' ' ------->> FXServer Event DFileTransfer Failed Private Sub objDFileTransfer_Failed(l_Handle As Integer, n_seq As Short, n_reason As Short) Handles objDFileTransfer.Failed End Sub ' ' ------->> FXServer Event DFileTransfer BytesTransfered Private Sub objDFileTransfer_BytesTransfered(l_Handle As Integer, l_bytes As Integer) Handles objDFileTransfer.BytesTransfered End Sub #End Region #Region "-- FXServer -- DFeedOverride EVENTS" ' ' ------->> FXServer Event GeneralFunctions ValueChanged Private Sub objDFeedOverride_ValueChanged(vtArrayIndex As Object, vtArrayValue As Object) Handles objDFeedOverride.ValueChanged Dim n As Short, ni As Short Dim index() As Object Dim values() As Object index = vtArrayIndex values = vtArrayValue For n = 0 To index.Length - 1 ni = CInt(index(n)) l_channel_override(ni) = CLng(values(n)) Next b_feed_override_changed = True End Sub #End Region #Region "-- FXServer -- DPosition EVENTS" ' ' ' ------->> FXServer Event DPosition PositionChanged ' Private Sub objDposition_PositionChanged(vtArrayIndex As Object, vtArrayValue As Object) Handles objDPosition.PositionChanged Dim n As Short, ni As Short Dim index() As Object Dim values() As Object index = vtArrayIndex values = vtArrayValue For n = 0 To index.Length - 1 ni = CInt(index(n)) d_axis_position(ni) = CDbl(CLng(values(n))) / d_LinearAxisPrecision Next If b_axis_events_enable Then MyBase.OnNewPositionData() End Sub Private Sub objDPosition_DeltaChanged(vtArrayIndex As Object, vtArrayValue As Object) Handles objDPosition.DeltaChanged Dim n As Short, ni As Short Dim index() As Object Dim values() As Object index = vtArrayIndex values = vtArrayValue For n = 0 To index.Length - 1 ni = CInt(index(n)) d_axis_delta(ni) = CDbl(CLng(values(n))) / d_LinearAxisPrecision Next If b_axis_events_enable Then MyBase.OnNewPosDeltaData() End Sub Private Sub objDPosition_EndposChanged(vtArrayIndex As Object, vtArrayValue As Object) Handles objDPosition.EndposChanged End Sub Private Sub objDPosition_OffsetChanged(vtArrayIndex As Object, vtArrayValue As Object) Handles objDPosition.OffsetChanged End Sub Private Sub objDPosition_ValidAxisChanged(vtArrayIndex As Object, vtArrayValue As Object) Handles objDPosition.ValidAxisChanged Dim n As Short, ni As Short Dim valid_i() As Object Dim valid_v() As Object valid_i = vtArrayIndex valid_v = vtArrayValue For n = 0 To valid_i.Length - 1 ni = CInt(valid_v(n)) If ni = 0 Then b_axis_valid(n) = False Else b_axis_valid(n) = True End If Next End Sub Private Sub objDPosition_ValuesChanged(vtArrayIndex As Object, vtArrayValue As Object) Handles objDPosition.ValuesChanged End Sub Private Sub objDPosition_ReadOncePositionChanged(lHandle As Integer, vtArrayValue As Object) Handles objDPosition.ReadOncePositionChanged End Sub Private Sub objDPosition_ReadOnceDeltaChanged(lHandle As Integer, vtArrayValue As Object) Handles objDPosition.ReadOnceDeltaChanged End Sub #End Region #Region "-- FXServer -- DReadELS EVENTS" '' '' ATTENZIONE : vengono sparati tutti e 3 gli eventi..... tenerne 1 solo !!! !!! !!! '' #Region " smorto" #If False Then Private Sub objDReadELS_ValueChanged(ByVal nHandle As Short, ByVal dValue As Double, ByVal nErrorcode As Short) Handles objDReadELS.ValueChanged Dim sza As String If (nHandle < 1 Or nHandle > MAX_VALUES) Then MsgBox(" Invalid handle in Validchanged : " + nHandle.ToString) Exit Sub End If If (nErrorcode <> 0) Then MsgBox(" Error in Validchanged : " & nErrorcode.ToString + " Handle : " + nHandle.ToString) Try sza = dValue.ToString Catch Ex As Exception MsgBox(Ex.Message) End Try End Sub #End If #End Region Private Sub objDReadELS_ValueChanged2(nHandle As Integer, dValue As Double, nerrorCode As Short) Handles objDReadELS.ValueChanged2 If (nHandle < 1 Or nHandle > MAX_VALUES) Then MsgBox(" Invalid handle in Validchanged2 : " + nHandle.ToString) Exit Sub End If If (nerrorCode <> 0) Then MsgBox(" Error in Validchanged2 : " & nerrorCode.ToString + " Handle : " + nHandle.ToString) Try d_DReadELS_value = dValue n_DReadELS_handle = nHandle Catch Ex As Exception MsgBox(Ex.Message) End Try End Sub #Region " smorto" #If False Then ' Only for FX Server >= 3.9.0.0 ' poi in realtà ritorna sempre tipo = -1 per cui è eguale alle altre..... Private Sub objDReadELS_ValueChanged3(nHandle As Integer, value As Object, DataType As Short, Writable As Short, nerrorCode As Short) Handles objDReadELS.ValueChanged3 Dim edata_type As eDatatype Dim sValue As String edata_type = DataType If (nHandle < 1 Or nHandle > MAX_VALUES) Then MsgBox(" Invalid handle in Validchanged3 : " + nHandle.ToString) Exit Sub End If If (nerrorCode <> 0) Then MsgBox(" Error in Validchanged3 : " & nerrorCode.ToString + " Handle : " + nHandle.ToString) Try Select Case (edata_type) Case eDatatype.tpByte ' tpByte : signed byte - SINT8 sValue = CType(value, SByte).ToString Case eDatatype.tpUByte ' tpUByte : unsigned byte - UINT8 sValue = CType(value, Byte).ToString Case eDatatype.tpShort ' tpShort : short integer - SINT16 sValue = CType(value, Short).ToString Case eDatatype.tpUShort ' tpUShort 3: unsigned short integer - UINT16 sValue = CType(value, UShort).ToString Case eDatatype.tpLong ' tpLong : long integer - SINT32 sValue = CType(value, Integer).ToString Case eDatatype.tpULong ' tpULong : unsigned long integer - UINT32 sValue = CType(value, UInteger).ToString Case eDatatype.tpDouble ' tpDouble : double floating point - DOUBLE sValue = CType(value, Double).ToString Case eDatatype.tpByteMap ' tpByteMap : byte bitmap - read as UINT8, show as BOOL sValue = CType(value, Byte).ToString Case eDatatype.tpWordMap ' tpWordMap : word bitmap - read as UINT16, show as BOOL sValue = CType(value, UShort).ToString Case eDatatype.tpLongMap ' tpLongMap : long bitmap - read as UINT32, show as BOOL sValue = CType(value, UInteger).ToString Case eDatatype.tpLLong ' tpLLong : 64 bits integer long sValue = CType(value, Long).ToString Case eDatatype.tpByteLongMap ' tpByteLongMap : long bitmap - read as UINT32, show as BYTE sValue = CType(value, UInteger).ToString Case eDatatype.tpUnknown ' for flexium standard we receive No datatype .. we assume it is ???? bug ... we don't know ... sValue = value.ToString() Case Else sValue = String.Empty MsgBox("objDReadELS_ValueChanged3() : Unknown Datatype !") End Select Catch Ex As Exception MsgBox("objDReadELS_ValueChanged3 " & Ex.Message + " Handle : " + nHandle.ToString) End Try End Sub #End If #End Region #End Region #Region "-- FXServer -- DVariables EVENTS" Private Sub objDVariables_ValueChanged(vtArrayIndex As Object, vtArrayValues As Object) Handles objDVariables.ValueChanged2 Dim n As Short, ni As Short Dim index() As Object Dim values() As Object index = vtArrayIndex values = vtArrayValues If IsFlexiumPlus Then Exit Sub ' This event should not be used for Flexium plus as it returns wrong datatype .. (int instead of double for example) For n = 0 To index.Length - 1 ni = CInt(index(n)) d_Dvariable_values(ni) = CDbl(CLng(values(n))) Next If b_axis_events_enable Then MyBase.OnNewVarChanged() End Sub Private Sub objDVariables_ValueChanged2(vtArrayIndex As Object, vtArrayValues As Object) Handles objDVariables.ValueChanged ' ' probabilmente evento non sparato nei flexium non plus..... ' End Sub Private Sub objDVariables_VariableWritten(nErrorCode As Short) Handles objDVariables.VariableWritten If (nErrorCode <> 0) Then MsgBox(" Error in objDVariables_VariableWritten2 : " & nErrorCode.ToString) Else ' mettere qualcosa per il completamento ok della scrittura b_Dvariable_changed = True End If End Sub Private Sub objDVariables_VariableWritten2(lHandle As Integer, nErrorCode As Short) Handles objDVariables.VariableWritten2 If (lHandle <> 2 Or nErrorCode <> 0) Then MsgBox(" Error in objDVariables_VariableWritten2 : " & nErrorCode.ToString + " Handle : " + lHandle.ToString) Else ' mettere qualcosa per il completamento ok della scrittura b_Dvariable_changed = True End If End Sub #End Region #Region "-- FXServer -- DInterpo EVENTS" ' ' ' ------->> FXServer Event DInterpo MemorySize ' Private Sub objDInterpo_ValuesChanged(vtArrayValue As Object) Handles objDInterpo.ValuesChanged '0 = "Interpolation speed", 1= "Not used", 2 = "Distance to go", 3 = "Programmed feedrate", 4 = "Feed override [%]" Dim n As Short Dim values() As Object values = vtArrayValue For n = 0 To values.Length - 1 d_DInterpo_values(n) = CDbl(CLng(values(n))) Next d_DInterpo_Prog_Feed = d_DInterpo_values(3) d_DInterpo_Feed_override = d_DInterpo_values(4) b_feed_override_changed = True End Sub #End Region #Region "-- FXServer -- DReadSpindleComplete EVENTS" ' ' ' ------->> FXServer Event DReadSpindleComplete ValueChanged ' Private Sub objDReadSpindleComplete_ValueChanged(vtArrayIndex As Object, vtArrayValue As Object) Handles objDReadSpindleComplete.ValueChanged Dim n As Short, n_spindle As Short, n_info As Short Dim index() As Object Dim values() As Object index = vtArrayIndex values = vtArrayValue For n = 0 To index.Length - 1 n_spindle = CShort(index(n) \ 10) n_info = CShort(index(n) Mod 10) If (n_spindle > (MAX_VALUES - 1) Or n_info > 10) Then Exit For Select Case n_info Case 2 ' % override n_spindle_override(n_spindle) = CShort(values(n)) Case 3 ' prog speed d_spindle_prog(n_spindle) = CDbl(values(n)) Case 4 ' meas. speed d_spindle_eff(n_spindle) = CDbl(values(n)) Case Else End Select 'ni = CInt(index(n)) 'd_axis_position(ni) = CDbl(CLng(values(n))) Next b_spindle_data_changed = True End Sub #End Region #Region "-- FXServer -- DTool EVENTS" ' ' ' ------->> FXServer Event DTool ToolDataChanged ' Private Sub objDTool_ToolDataChanged(vtArrayIndex As Object, vtArrayValue As Object) Handles objDTool.ToolDataChanged ' Read the change of the Tools data Dim n As Short, n_tool As Short, n_data As Short, l_value As Long, nt As Short Dim index() As Object Dim values() As Object index = vtArrayIndex values = vtArrayValue For n = 0 To index.Length - 1 Try n_tool = CShort(index(n) \ 10) n_data = CShort(index(n) Mod 10) nt = n_tool - n_dTool_range_start l_value = CLng(values(n)) If (n_tool < n_dTool_range_start Or n_tool > n_dTool_range_stop Or n_data > 7) Then Continue For Select Case n_data Case 0 ' Tool type ( Mill / lathe ) If l_value = 0 Then Tools(nt).type = "M" Else Tools(nt).type = "L" End If Case 1 ' lenght / X Tools(nt).lenght = CDbl(l_value) / 1000.0 Case 2 ' radius / Z Tools(nt).radius = CDbl(l_value) / 1000.0 Case 3 ' Cut radius / Cut tip Tools(nt).tip = CDbl(l_value) / 1000.0 Case 4 ' D lenght Tools(nt).D_lenght = CDbl(l_value) / 1000.0 Case 5 ' D_radius Tools(nt).D_radius = CDbl(l_value) / 1000.0 Case 6 ' nose dir Tools(nt).nose_dir = "C" & (l_value).ToString Case 7 ' toolcom Tools(nt).comp_num = CShort(l_value) Case Else End Select Catch ex As Exception MsgBox(" Error in objDTool_ToolDataChanged : " & ex.Message) End Try Next b_Tool_data_changed = True End Sub ' ' ' ------->> FXServer Event DTool ToolDataWritten ' Private Sub objDTool_ToolDataWritten(l_Handle As Integer, n_error_code As Short) Handles objDTool.ToolDataWritten If l_Handle <> 1 Or n_error_code <> 0 Then MessageBox.Show("Error: objDTool_ToolDataWritten handle : " & l_Handle.ToString & " error : " & n_error_code.ToString()) End If End Sub ' ' ' ------->> FXServer Event DTool DynamicToolDataWritten ' Private Sub objDTool_DynamicToolDataWritten(l_Handle As Integer, n_error_code As Short) Handles objDTool.DynamicToolDataWritten If l_Handle <> 2 Or n_error_code <> 0 Then MessageBox.Show("Error: objDTool_DynamicToolDataWritten handle : " & l_Handle.ToString & " error : " & n_error_code.ToString()) End If End Sub #End Region #Region "-- FXServer -- DNumDirectory EVENTS" ' ' ' ------->> FXServer Event DNumDirectory MemorySize ' Private Sub objDNumDirectory_MemorySize(vtArrayIndex As Object, vtArrayValue As Object) Handles objDNumDirectory.MemorySize End Sub #End Region #Region "-- FXServer -- DMdiCommand EVENTS" ' ' ------->> FXServer Event DMdiCommand CommandWritten ' Private Sub objDMdiCommand_CommandWritten(retVal As Short) Handles objDMdiCommand.CommandWritten 'throw new NotImplementedException(); If retVal <> 0 Then MessageBox.Show("Error CommandWritten :" + " " + retVal.ToString()) End If sz_ManualDataInput = "" End Sub #End Region #Region "-- FXLog -- ErrorHandler EVENTS" ' ' ' ------->> FXLog Event ErrorHandler ErrorOnCnc ..... ' Private Sub objErrorHandler_ErrorOnCnc(cnc As Short, channel As Short, nset As Short) Handles objErrorHandler.ErrorOnCnc ' AplCncNumber.Add(cnc) ' AplChannel.Add(channel) ' AplSet.Add(nset) End Sub Private Sub objErrorHandler_ErrorOnOtherChannel(status As Short) Handles objErrorHandler.ErrorOnOtherChannel AplStatus = status End Sub Private Sub objErrorHandler_Exception(status As Short) Handles objErrorHandler.Exception ExceptStatus = status End Sub Private Sub objErrorHandler_ErrorFromActiveCnc2 _ (CncNumber As Short, numberOfError As Short, ErrorTyp As Object, ErrorIndex As Object, ErrorNumber As Object, ErrorLine As Object, ErrorMessage As Object, ErrorAdditional As Object) _ Handles objErrorHandler.ErrorFromActiveCnc2 Dim vErrorType(0 To 10) As Object Dim vErrorIndex(0 To 10) As Object Dim vErrorNumber(0 To 10) As Object Dim vNumberError As Object Dim vExtNumberError As Object = Nothing Dim vErrorLine(0 To 10) As Object ' Dim vErrorMessage(0 To 10) As Object Dim vErrorAdditional(0 To 10) As Object Dim sMessaggio As String 'Dim sMessaggio1 As String Dim i As Integer 'Dim nLinee As Integer Dim ClassPLCMsg As Object b_PLC_error = False b_NC_error = False If numberOfError <> 0 Then sz_NC_error_messages.Clear() For i = 0 To (numberOfError - 1) vErrorIndex(i) = ErrorIndex(i) ' CNmsg indica il Chx , DriveError e Drive Warning indica ind @ asse vErrorType(i) = ErrorTyp(i) 'Tipo errore vErrorNumber(i) = Str(ErrorNumber(i)) 'CNC msg : Numero errore vErrorLine(i) = Str(ErrorLine(i)) 'Linea ISO ' vErrorMessage(i) = ErrorMessage(i) 'Testo messaggio CNC Select Case vErrorType(i) Case 0 'CNC boot message 'sMessaggio = objSystemFunctions.GetSysErrorText(vErrorNumber(i)) ' Recupero il testo del messaggio ???? sMessaggio = "Boot: " & ErrorMessage(i) Case 1 'CNC sys warning sMessaggio = "All.Sys: " & vErrorNumber(i) & " " & ErrorMessage(i) Case 2 'CNC msg vNumberError = vErrorNumber(i) And &HFFFF If IsFlexiumPlus Then vExtNumberError = (vNumberError And &HFFFF0000) / 2 ^ 16 ' mettere sotto ..............!!!!!! End If If Not IsFlexiumPlus Then ' Flexium 6 / 68 NCK If vErrorLine(i) = 0 Then sMessaggio = "CN: " & vNumberError & " " & " " & ErrorMessage(i) Else sMessaggio = "CN: " & vNumberError & " N" & vErrorLine(i) & " " & ErrorMessage(i) End If Else ' Flexium 6+ / 68+ NCK ???????????????????? da verificare ????????????????????????????? If vErrorLine(i) = 0 And vErrorAdditional(i) = 0 Then sMessaggio = "CN: " & vNumberError & " Ext" & vExtNumberError & " " & ErrorMessage(i) ElseIf vErrorLine(i) = 0 And vErrorAdditional(i) <> 0 Then sMessaggio = "CN: " & vNumberError & " Ext" & vExtNumberError & " L" & vErrorAdditional(i) & ErrorMessage(i) ElseIf vErrorLine(i) <> 0 And vErrorAdditional(i) = 0 Then sMessaggio = "CN: " & vNumberError & " Ext" & vExtNumberError & " N" & vErrorLine(i) & " " & ErrorMessage(i) Else sMessaggio = "CN: " & vNumberError & " Ext" & vExtNumberError & " N" & vErrorLine(i) & " L" & vErrorAdditional(i) & ErrorMessage(i) End If End If Case 3 'Drive Error vNumberError = vErrorNumber(i) And &HFFFF0000 vNumberError = vNumberError / 2 ^ 16 vExtNumberError = vErrorNumber(i) - (vNumberError * 2 ^ 16) '--> vNumberError(i) AND &hFFFF sMessaggio = "Azionamento: " & "Asse " & vErrorIndex(i) & " Errore: " & vNumberError & " Ext " & vExtNumberError & " " & ErrorMessage(i) Case 5 'Communication Message 'sMessaggio = objFXLib_SystemFunctions.GetUniteError(vNumberError) ' Recupero il testo del messaggio ???? sMessaggio = "COMM: " & vErrorNumber(i) & " " & ErrorMessage(i) Case 6, 7, 8, 9, 10, 11, 12, 13 'PLC msg Reaction Class 1->8 ClassPLCMsg = vErrorType(i) - 5 sMessaggio = "PLC: " & vErrorNumber(i) & " Classe: " & ClassPLCMsg & " " & ErrorMessage(i) ' Recupero 1'riga del testo del messaggio in ../Language/xx/... 'For nLinee = 1 To 10 ' verifico se ho altre righe di testo 'sMessaggio1 = objSystemFunctions.GetPlcErrorText(vErrorNumber(i), nLinee) 'If sMessaggio1 = "" Then 'Exit For 'End If ' sz_NC_error_messages.Add(sMessaggio) ' sMessaggio = sMessaggio1 ' Next nLinee Case 20 'HMI msg 'sMessaggio = objSystemFunctions.GetHmiMessageText(vErrorNumber(i)) ' Recupero il testo del messaggio ???? sMessaggio = "HMI: " & vErrorNumber(i) & " " & ErrorMessage(i) Case 21 'User msg 'sMessaggio = objSystemFunctions.GetUserMessageText(vErrorNumber(i)) ' Recupero il testo del messaggio ???? sMessaggio = "User: " & vErrorNumber(i) & " " & ErrorMessage(i) Case 22 'RTS msg ' sMessaggio = objSystemFunctions.GetRunTimeSystemError(vErrorNumber(i)) ' Recupero il testo del messaggio ???? sMessaggio = "RTS: " & vErrorNumber(i) & " " & ErrorMessage(i) Case 23 'Drive Warning sMessaggio = "Azionamento: " & "Asse " & vErrorIndex(i) & " Avviso: " & vErrorNumber(i) & ": " & ErrorMessage(i) Case Else sMessaggio = "Type ??: " & vErrorNumber(i) & " " & ErrorMessage(i) End Select sz_NC_error_messages.Add(sMessaggio) Next i b_NC_error = True Else sz_NC_error_messages.Clear() b_NC_error = True End If End Sub #End Region #Region "-- FXLib -- SystemFunctions EVENTS" ' ' ' ------->> FXLib Event SystemFunctions LanguageData ' Private Sub objSystemFunctions_LanguageData(index As Short, shortName As String, languageName As String) Handles objSystemFunctions.LanguageData End Sub #End Region #Region "-- FXLib -- CncState EVENTS" ' ' ' ------->> FXLib Event CncState ConfigUpdated .... ' Private Sub objCncState_ConfigUpdated() Handles objCncState.ConfigUpdated End Sub Private Sub objCncState_ValueChanged(nc As Short, Variable As String, value As Integer) Handles objCncState.ValueChanged End Sub Private Sub objCncState_NotHomed(nc As Short, value As Integer) Handles objCncState.NotHomed End Sub Private Sub objCncState_IndependentChannels(nc As Short, indep As Short) Handles objCncState.IndependentChannels End Sub Private Sub objCncState_HMIValueChange(var As String, value As Integer) Handles objCncState.HMIValueChange End Sub #End Region #End Region #Region " Metodi pubblici" Public Overrides Sub ReadEls_Add_Parameter(sz_var As String, n_par As Short) Call objDReadELS.AddParameter(sz_var, n_par) End Sub ' ' ' call DVariables_WriteVariables("E80000;E80001" , "1;2" ) Public Overrides Sub DVariables_WriteVariables(sz_parameters As String, sz_values As String) Dim Valus As Object = sz_values Dim n_ret As Short n_ret = objDVariables.WriteVariables(objDGroupManager.Handle, sz_parameters, Valus) End Sub Public Overrides Sub DVariables_WriteVariables2(sz_parameters As String, sz_values As String) Dim Valus As Object = sz_values objDVariables.WriteVariables2(2, objDGroupManager.Handle, sz_parameters, Valus) End Sub Public Overrides Sub MDI_command() Dim n_ret As Int16 = objDMdiCommand.ExecuteCommand(sz_ManualDataInput) If n_ret <> 0 Then MessageBox.Show("Error Execute MDI Command :" + " " + n_ret.ToString()) End If End Sub ' ' Activate program ' returns 0 = OK ; > 0 error ' Public Overrides Function ActivateProgram(n_part_program As Integer) As Int16 Dim l_glbPartProgramNumber As Long, n_ret As Short l_glbPartProgramNumber = Convert.ToInt32(n_part_program) l_glbPartProgramNumber = l_glbPartProgramNumber * 10 n_ret = objDGeneralFunctions.ActivateProgram(l_glbPartProgramNumber, 0) Return n_ret End Function ' ' Set DPOsition Mode OP/OM ' Public Overrides Sub set_OP_OM(n As Short) objDPosition.ModeOP = n End Sub ' ' Read Once position ' returns 0 = OK ; > 0 error ' Public Overrides Function DPOsition_ReadOnce() As Int16 Return objDPosition.ReadOnce(1, objDGroupManager.Handle, objDPosition.ModeOP) End Function ' ' Set Cycle Start ' Public Overrides Function DGeneralFunctions_CycleStart() As Int16 objDGeneralFunctions.CncStart() Return 0 End Function ' ' Set Feed Hold ' Public Overrides Function DGeneralFunctions_FeedHold() As Int16 objDGeneralFunctions.CncStop() Return 0 End Function ' ' Set NC Reset ' Public Overrides Function DGeneralFunctions_Reset() As Int16 objDGeneralFunctions.CncReset() Return 0 End Function Public Overrides Function DGeneralFunctions_WriteCncMode(nmode As Short) As Int16 Dim ngroup0 As Short = 0 Call objDGeneralFunctions.WriteCncMode(nmode, ngroup0) Return 0 End Function Public Overrides Function Write_var_1(sz_par As String, lvalue As Long) As Int16 Dim n_ret As Short n_ret = objDGeneralFunctions.WriteVariable(sz_par, lvalue) If n_ret <> 0 Then MsgBox("error from objDGeneralFunctions.WriteVariable" & n_ret.ToString) Return n_ret End Function ' ' da PC a CN ' Public Overrides Function Download_NC_prog(sz_PC_filename As String, sz_NC_filename As String) As Int16 Dim n_ret As Short Dim n_FileDelete As Short = 1, n_IgnoreMsgZone As Short = 0 Dim lHandle As Long = 10 ' ?? n_ret = objDFileTransfer.FileDownload2(lHandle, sz_NC_filename, sz_PC_filename, "", n_FileDelete, n_IgnoreMsgZone) If n_ret <> 0 Then MessageBox.Show("Error: FileDownload2 error : " & n_ret.ToString()) Return n_ret End Function ' ' da CN a pc ' Public Overrides Function Upload_NC_prog(sz_PC_filename As String, sz_NC_filename As String) As Int16 Dim n_ret As Short Dim lHandle As Long = 20 ' ?? n_ret = objDFileTransfer.FileUpload(lHandle, sz_NC_filename, sz_PC_filename, "") If n_ret <> 0 Then MessageBox.Show("Error: FileUpload error : " & n_ret.ToString()) Return n_ret End Function Public Overrides Function Delete_NC_prog(sz_NC_filename As String) As Int16 Dim n_ret As Short Dim lHandle As Long = 20 ' ?? n_ret = objDFileTransfer.FileDelete(lHandle, sz_NC_filename, "") If n_ret <> 0 Then MessageBox.Show("Error: FileDelete error : " & n_ret.ToString()) Return n_ret End Function Public Overrides Function Start_Transfer_NC_prog() As Int16 Dim n_ret As Short n_ret = objDFileTransfer.StartTransfer() If n_ret <> 0 Then MessageBox.Show("Error: StartTransfer error : " & n_ret.ToString()) Return n_ret End Function Public Overrides Function DTool_set_read_range(n_start As Short, n_stop As Short) As Short Dim n_ret As Short n_dTool_range_start = n_start n_dTool_range_stop = n_stop n_ret = objDTool.SetToolRange(n_start, n_stop) If n_ret <> 0 Then MessageBox.Show("Error: DTool_set_red_range error : " & n_ret.ToString()) Return n_ret End Function Public Overrides Function DTool_write_tool(n_tool_number As Short, Length_X As Double, Radius As Double, TipRadius_Z As Double, _ DLength_X As Double, DTipRadius_Z As Double, _ nDirection As Short, nType As Short, nH As Integer) As Short Dim n_ret As Short, l_handle As Long = 1 n_ret = objDTool.WriteToolCorr2(n_tool_number, (Length_X * 1000.0), (Radius * 1000.0), (TipRadius_Z * 1000.0), (DLength_X * 1000.0), (DTipRadius_Z * 1000.0), _ nDirection, nType, nH, objDTool.Flag, l_handle) If n_ret <> 0 Then MessageBox.Show("Error: DTool_write_tool error : " & n_ret.ToString()) Return n_ret End Function #End Region End Class End Namespace