diff --git a/CN_generico.vb b/CN_generico.vb new file mode 100644 index 0000000..57c0ec9 --- /dev/null +++ b/CN_generico.vb @@ -0,0 +1,132 @@ +Public MustInherit Class CN_generico + +#Region " Constants" + + Public Const MAX_AXES As Short = 10 + Public Const MAX_VAR As Short = 100 + Public Const MAX_VALUES As Short = 9 ' Max. index to read the data from the FXServer array + Public Const MAX_TOOLS As Short = 100 + +#End Region + +#Region " Struct" + + Public Structure ToolStructure + Public type As Char + Public lenght As Double + Public radius As Double + Public tip As Double + Public D_lenght As Double + Public D_radius As Double + Public nose_dir As String + Public comp_num As Short + End Structure + +#End Region + +#Region " Interface" + + + Public IsFlexiumPlus As Boolean = False + Public sz_CncFxIdentifier As String = "" + + Public d_LinearAxisPrecision As Double + + Public sz_ServerInitStatus As String + Public sz_ServerReinitStatus As String + Public sz_ManualDataInput As String + + Public sz_versionRTS As String + Public sz_ConnectionAddress As String + Public sz_AffaireNumber As String + + Public n_state As Short = 0 + Public n_validaxes As Short + ' + + Public b_axis_events_enable As Boolean = False + Public d_axis_position(MAX_AXES) As Double + Public d_axis_delta(MAX_AXES) As Double + Public b_axis_valid(MAX_AXES) As Boolean + + Public d_DReadELS_value As Double + Public n_DReadELS_handle As Short + + Public d_Dvariable_values(MAX_VAR) As Double + Public b_Dvariable_changed As Boolean = False + + Public d_DInterpo_values(MAX_AXES) As Double + Public d_DInterpo_Prog_Feed As Double + Public d_DInterpo_Feed_override As Double + + Public n_activate_error_code As Short + + Public l_channel_override(MAX_VALUES) As Long + Public b_feed_override_changed As Boolean = False + + Public d_spindle_prog(MAX_VALUES) As Double + Public d_spindle_eff(MAX_VALUES) As Double + Public n_spindle_override(MAX_VALUES) As Short + Public b_spindle_data_changed As Boolean = False + + Public Tools(MAX_TOOLS) As ToolStructure + Public b_Tool_data_changed As Boolean = False + + Public Event NewPositionData(ByVal sender As Object) + Public Event NewPosDeltaData(ByVal sender As Object) + Public Event NewVarChanged(ByVal sender As Object) + + Protected Overridable Sub OnNewPositionData() + RaiseEvent NewPositionData(0) + End Sub + Protected Overridable Sub OnNewPosDeltaData() + RaiseEvent NewPosDeltaData(0) + End Sub + Protected Overridable Sub OnNewVarChanged() + RaiseEvent NewVarChanged(0) + End Sub + +#End Region + +#Region " Metodi pubblici" + + Public MustOverride Sub ReadEls_Add_Parameter(sz_var As String, n_par As Short) + + Public MustOverride Sub DVariables_WriteVariables(sz_parameters As String, sz_values As String) + + Public MustOverride Sub DVariables_WriteVariables2(sz_parameters As String, sz_values As String) + + Public MustOverride Sub MDI_command() + + Public MustOverride Function ActivateProgram(n_part_program As Integer) As Int16 + + Public MustOverride Sub set_OP_OM(n As Short) + + Public MustOverride Function DPOsition_ReadOnce() As Short + + Public MustOverride Function DGeneralFunctions_CycleStart() As Int16 + + Public MustOverride Function DGeneralFunctions_FeedHold() As Int16 + + Public MustOverride Function DGeneralFunctions_Reset() As Int16 + + Public MustOverride Function DGeneralFunctions_WriteCncMode(nmode As Short) As Int16 + + Public MustOverride Function Write_var_1(sz_par As String, lvalue As Long) As Int16 + + Public MustOverride Function Download_NC_prog(sz_PC_filename As String, sz_NC_filename As String) As Int16 + + Public MustOverride Function Upload_NC_prog(sz_PC_filename As String, sz_NC_filename As String) As Int16 + + Public MustOverride Function Delete_NC_prog(sz_NC_filename As String) As Int16 + + Public MustOverride Function Start_Transfer_NC_prog() As Int16 + + Public MustOverride Function DTool_set_read_range(n_start As Short, n_stop As Short) As Short + + Public MustOverride 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 +#End Region + +End Class diff --git a/ConstIni.vb b/ConstIni.vb index 7166459..780b6d8 100644 --- a/ConstIni.vb +++ b/ConstIni.vb @@ -13,112 +13,107 @@ Module ConstIni - Public Const INI_FILE_NAME As String = "OmagCUT.ini" + Public Const INI_FILE_NAME As String = "OmagCUT.ini" - Public Const S_GENERAL As String = "General" - Public Const K_DEBUG As String = "Debug" - Public Const K_LICENCE As String = "Licence" - Public Const K_MESSAGESDIR As String = "MessagesDir" - Public Const K_MESSAGES As String = "Messages" - Public Const K_WINPLACE As String = "WinPlace" - Public Const K_MAXPROJ As String = "MaxProj" - Public Const K_LASTPROJ As String = "LastProj" - Public Const K_AUTOLOADLASTPROJ As String = "AutoLoadLastProj" - Public Const K_SAVEDIR As String = "SaveDir" - Public Const K_IMAGEDIR As String = "ImageDir" - Public Const K_CAMERALINK As String = "CameraLink" - Public Const K_CNLINK As String = "CNLink" + Public Const S_GENERAL As String = "General" + Public Const K_DEBUG As String = "Debug" + Public Const K_LICENCE As String = "Licence" + Public Const K_MESSAGESDIR As String = "MessagesDir" + Public Const K_MESSAGES As String = "Messages" + Public Const K_WINPLACE As String = "WinPlace" + Public Const K_MAXPROJ As String = "MaxProj" + Public Const K_LASTPROJ As String = "LastProj" + Public Const K_AUTOLOADLASTPROJ As String = "AutoLoadLastProj" + Public Const K_SAVEDIR As String = "SaveDir" + Public Const K_IMAGEDIR As String = "ImageDir" + Public Const K_CAMERALINK As String = "CameraLink" + Public Const K_CNLINK As String = "CNLink" - Public Const S_LUA As String = "Lua" - Public Const K_LIBSDIR As String = "LibsDir" - Public Const K_BASELIB As String = "BaseLib" + Public Const S_LUA As String = "Lua" + Public Const K_LIBSDIR As String = "LibsDir" + Public Const K_BASELIB As String = "BaseLib" - Public Const S_GEOMDB As String = "GeomDB" - Public Const K_DEFAULTFONT As String = "DefaultFont" - Public Const K_NFEFONTDIR As String = "NfeFontDir" - Public Const K_DEFAULTCOLOR As String = "DefaultColor" - Public Const K_SAVETYPE As String = "SaveType" + Public Const S_GEOMDB As String = "GeomDB" + Public Const K_DEFAULTFONT As String = "DefaultFont" + Public Const K_NFEFONTDIR As String = "NfeFontDir" + Public Const K_DEFAULTCOLOR As String = "DefaultColor" + Public Const K_SAVETYPE As String = "SaveType" - Public Const S_OPENGL As String = "OpenGL" - Public Const K_DOUBLEBUFFER As String = "DoubleBuffer" - Public Const K_COLORBITS As String = "ColorBits" - Public Const K_DEPTHBITS As String = "DepthBits" - Public Const K_DRIVER As String = "Driver" + Public Const S_OPENGL As String = "OpenGL" + Public Const K_DOUBLEBUFFER As String = "DoubleBuffer" + Public Const K_COLORBITS As String = "ColorBits" + Public Const K_DEPTHBITS As String = "DepthBits" + Public Const K_DRIVER As String = "Driver" - Public Const S_SCENE As String = "Scene" - Public Const K_BACKTOP As String = "BackTop" - Public Const K_BACKBOTTOM As String = "BackBottom" - Public Const K_SHOWGFRAME As String = "ShowGFrame" - Public Const K_MARK As String = "Mark" - Public Const K_SELSURF As String = "SelSurf" - Public Const K_SHOWMODE As String = "ShowMode" - Public Const K_CURVEDIR As String = "CurveDir" - Public Const K_SHOWTRIAADV As String = "ShowTriaAdv" - Public Const K_ZOOMWIN As String = "ZoomWin" - Public Const K_DISTLINE As String = "DistLine" - Public Const K_MMUNITS As String = "MmUnits" + Public Const S_SCENE As String = "Scene" + Public Const K_BACKTOP As String = "BackTop" + Public Const K_BACKBOTTOM As String = "BackBottom" + Public Const K_SHOWGFRAME As String = "ShowGFrame" + Public Const K_MARK As String = "Mark" + Public Const K_SELSURF As String = "SelSurf" + Public Const K_SHOWMODE As String = "ShowMode" + Public Const K_CURVEDIR As String = "CurveDir" + Public Const K_SHOWTRIAADV As String = "ShowTriaAdv" + Public Const K_ZOOMWIN As String = "ZoomWin" + Public Const K_DISTLINE As String = "DistLine" + Public Const K_MMUNITS As String = "MmUnits" - Public Const S_GRID As String = "Grid" - Public Const K_SHOWGRID As String = "ShowGrid" - Public Const K_SHOWFRAME As String = "ShowFrame" - Public Const K_SNAPSTEP As String = "SnapStep" - Public Const K_SNAPSTEPINCH As String = "SnapStepInch" - Public Const K_MINLINESSTEP As String = "MinLineSStep" - Public Const K_MAJLINESSTEP As String = "MajLineSStep" - Public Const K_EXTSSTEP As String = "ExtSStep" - Public Const K_MINLNCOLOR As String = "MinLnColor" - Public Const K_MAJLNCOLOR As String = "MajLnColor" + Public Const S_GRID As String = "Grid" + Public Const K_SHOWGRID As String = "ShowGrid" + Public Const K_SHOWFRAME As String = "ShowFrame" + Public Const K_SNAPSTEP As String = "SnapStep" + Public Const K_SNAPSTEPINCH As String = "SnapStepInch" + Public Const K_MINLINESSTEP As String = "MinLineSStep" + Public Const K_MAJLINESSTEP As String = "MajLineSStep" + Public Const K_EXTSSTEP As String = "ExtSStep" + Public Const K_MINLNCOLOR As String = "MinLnColor" + Public Const K_MAJLNCOLOR As String = "MajLnColor" - Public Const S_TABSPECIAL As String = "TabSpecial" - Public Const K_TSSHOW As String = "Show" + Public Const S_TABSPECIAL As String = "TabSpecial" + Public Const K_TSSHOW As String = "Show" - Public Const S_COMPO As String = "Compo" - Public Const K_CMPWINPLACE As String = "WinPlace" - Public Const K_COMPODIR As String = "CompoDir" + Public Const S_COMPO As String = "Compo" + Public Const K_CMPWINPLACE As String = "WinPlace" + Public Const K_COMPODIR As String = "CompoDir" - Public Const S_FLATPARTS As String = "FlatParts" - Public Const K_FLPWINPLACE As String = "WinPlace" - Public Const K_FLPCURRDIR As String = "CurrDir" + Public Const S_FLATPARTS As String = "FlatParts" + Public Const K_FLPWINPLACE As String = "WinPlace" + Public Const K_FLPCURRDIR As String = "CurrDir" - Public Const S_NEST As String = "Nest" - Public Const K_DIRECT As String = "Direct" - Public Const K_STEP As String = "Step" + Public Const S_NEST As String = "Nest" + Public Const K_DIRECT As String = "Direct" + Public Const K_STEP As String = "Step" - Public Const S_RAWPART As String = "RawPart" - Public Const K_RAWCOLOR As String = "RawColor" - Public Const K_KERFCOLOR As String = "KerfColor" - Public Const K_RAWLENGTH As String = "Length" - Public Const K_RAWWIDTH As String = "Width" - Public Const K_RAWHEIGHT As String = "Height" - Public Const K_RAWOFFSX As String = "OffsX" - Public Const K_RAWOFFSY As String = "OffsY" - Public Const K_RAWKERF As String = "Kerf" + Public Const S_RAWPART As String = "RawPart" + Public Const K_RAWCOLOR As String = "RawColor" + Public Const K_KERFCOLOR As String = "KerfColor" + Public Const K_RAWLENGTH As String = "Length" + Public Const K_RAWWIDTH As String = "Width" + Public Const K_RAWHEIGHT As String = "Height" + Public Const K_RAWOFFSX As String = "OffsX" + Public Const K_RAWOFFSY As String = "OffsY" + Public Const K_RAWKERF As String = "Kerf" - Public Const S_CAMERA As String = "Camera" - Public Const K_CAM_EXEPATH As String = "ExePath" - Public Const K_CAM_IMAGE As String = "Image" - Public Const K_CAM_INFO As String = "Info" - Public Const K_CAM_RESULT As String = "Result" - Public Const K_CAM_TIMEOUT As String = "Timeout" + Public Const S_CAMERA As String = "Camera" + Public Const K_CAM_EXEPATH As String = "ExePath" + Public Const K_CAM_IMAGE As String = "Image" + Public Const K_CAM_INFO As String = "Info" + Public Const K_CAM_RESULT As String = "Result" + Public Const K_CAM_TIMEOUT As String = "Timeout" - Public Const S_MACH As String = "Mach" - Public Const K_MACHINESDIR As String = "MachinesDir" - Public Const K_CURRMACH As String = "CurrMach" + Public Const S_MACH As String = "Mach" + Public Const K_MACHINESDIR As String = "MachinesDir" + Public Const K_CURRMACH As String = "CurrMach" - Public Const S_TOOLS As String = "Tools" - Public Const K_DRILLBIT As String = "Drillbit" - Public Const K_SAWBLADE As String = "Sawblade" - Public Const K_MILL As String = "Mill" + Public Const S_MATERIALS As String = "Materials" + Public Const K_CURRMATERIAL As String = "CurrMaterial" + Public Const K_MATERIAL As String = "Material" + Public Const K_CURRSAW As String = "CurrSaw" - Public Const S_MATERIALS As String = "Materials" - Public Const K_CURRMATERIAL As String = "CurrMaterial" - Public Const K_MATERIAL As String = "Material" - Public Const K_CURRSAW As String = "CurrSaw" + Public Const S_MRUFILES As String = "MruFiles" + Public Const S_MRUSCRIPTS As String = "MruScripts" + Public Const K_FILE As String = "File" - Public Const S_MRUFILES As String = "MruFiles" - Public Const S_MRUSCRIPTS As String = "MruScripts" - Public Const K_FILE As String = "File" - - Public Const S_FILEOPEN As String = "FileOpen" + Public Const S_FILEOPEN As String = "FileOpen" End Module diff --git a/ConstMachIni.vb b/ConstMachIni.vb new file mode 100644 index 0000000..15dc897 --- /dev/null +++ b/ConstMachIni.vb @@ -0,0 +1,13 @@ +Module ConstMachIni + + Public Const S_NUMERICALCONTROL As String = "NumericalControl" + Public Const K_TYPE As String = "Type" + + Public Const S_TOOLS As String = "Tools" + Public Const K_DRILLBIT As String = "Drillbit" + Public Const K_SAWBLADE As String = "Sawblade" + Public Const K_MILL As String = "Mill" + Public Const K_SHOWTOOLCHANGER As String = "ShowToolChanger" + Public Const K_SHOWHEADEXIT As String = "ShowHeadExit" + +End Module diff --git a/M_Num.vb b/M_Num.vb index 7fc40f1..64e395e 100644 --- a/M_Num.vb +++ b/M_Num.vb @@ -1,3 +1,4 @@ + Imports System.Collections.Generic Imports System.ComponentModel Imports System.Data @@ -5,10 +6,11 @@ Imports System.Drawing Imports System.Linq Imports System.Text Imports System.Windows.Forms -Imports System.Windows.Threading Namespace Num - Partial Public Class NumNC + Public Class NumNC + Inherits CN_generico + #Region " Classes" #End Region @@ -40,33 +42,6 @@ Namespace Num #End Region -#Region " Constants" - - Const MAX_AXES As Short = 10 - Const MAX_VAR As Short = 100 - Const MAX_VALUES As Short = 9 ' Max. index to read the data from the FXServer array - Const MAX_TOOLS As Short = 100 - -#End Region - -#Region " Struct" - - Public Structure ToolStructure - Public type As Char - Public lenght As Double - Public radius As Double - Public tip As Double - Public D_lenght As Double - Public D_radius As Double - Public nose_dir As String - Public comp_num As Short - End Structure - - - -#End Region - - #Region " Num objects" ' Instance the FXServer object variables @@ -106,61 +81,6 @@ Namespace Num #End Region -#Region " Interface" - - Public Event NewPositionData(ByVal sender As Object) - Public Event NewPosDeltaData(ByVal sender As Object) - - Public Event NewVarChanged(ByVal sender As Object) - - - Public IsFlexiumPlus As Boolean = False - Public sz_CncFxIdentifier As String = "" - - Public d_LinearAxisPrecision As Double - - Public sz_ServerInitStatus As String - Public sz_ServerReinitStatus As String - Public sz_ManualDataInput As String - - Public sz_versionRTS As String - Public sz_ConnectionAddress As String - Public sz_AffaireNumber As String - - Public n_state As Short = 0 - Public n_validaxes As Short - ' - - Public b_axis_events_enable As Boolean = False - Public d_axis_position(MAX_AXES) As Double - Public d_axis_delta(MAX_AXES) As Double - Public b_axis_valid(MAX_AXES) As Boolean - - Public d_DReadELS_value As Double - Public n_DReadELS_handle As Short - - Public d_Dvariable_values(MAX_VAR) As Double - Public b_Dvariable_changed As Boolean = False - - Public d_DInterpo_values(MAX_AXES) As Double - Public d_DInterpo_Prog_Feed As Double - Public d_DInterpo_Feed_override As Double - - Public n_activate_error_code As Short - - Public l_channel_override(MAX_VALUES) As Long - Public b_feed_override_changed As Boolean = False - - Public d_spindle_prog(MAX_VALUES) As Double - Public d_spindle_eff(MAX_VALUES) As Double - Public n_spindle_override(MAX_VALUES) As Short - Public b_spindle_data_changed As Boolean = False - - Public Tools(MAX_TOOLS) As ToolStructure - Public b_Tool_data_changed As Boolean = False - -#End Region - #Region " local var" Private n_dTool_range_start As Short = 1 @@ -435,6 +355,7 @@ Namespace Num #End Region + #Region " Events" #Region "-- FXServer -- DRunTimeSystem EVENTS" @@ -618,7 +539,7 @@ Namespace Num d_axis_position(ni) = CDbl(CLng(values(n))) / d_LinearAxisPrecision Next - If b_axis_events_enable Then RaiseEvent NewPositionData(0) + If b_axis_events_enable Then MyBase.OnNewPositionData() End Sub @@ -638,7 +559,7 @@ Namespace Num d_axis_delta(ni) = CDbl(CLng(values(n))) / d_LinearAxisPrecision Next - If b_axis_events_enable Then RaiseEvent NewPosDeltaData(0) + If b_axis_events_enable Then MyBase.OnNewPosDeltaData() End Sub @@ -833,7 +754,7 @@ Namespace Num d_Dvariable_values(ni) = CDbl(CLng(values(n))) Next - If b_axis_events_enable Then RaiseEvent NewVarChanged(0) + If b_axis_events_enable Then MyBase.OnNewVarChanged() End Sub @@ -1117,7 +1038,7 @@ Namespace Num #Region " Metodi pubblici" - Public Sub ReadEls_Add_Parameter(sz_var As String, n_par As Short) + Public Overrides Sub ReadEls_Add_Parameter(sz_var As String, n_par As Short) Call objDReadELS.AddParameter(sz_var, n_par) @@ -1126,7 +1047,7 @@ Namespace Num ' ' call DVariables_WriteVariables("E80000;E80001" , "1;2" ) - Public Sub DVariables_WriteVariables(sz_parameters As String, sz_values As String) + Public Overrides Sub DVariables_WriteVariables(sz_parameters As String, sz_values As String) Dim Valus As Object = sz_values @@ -1136,7 +1057,7 @@ Namespace Num End Sub - Public Sub DVariables_WriteVariables2(sz_parameters As String, sz_values As String) + Public Overrides Sub DVariables_WriteVariables2(sz_parameters As String, sz_values As String) Dim Valus As Object = sz_values @@ -1144,13 +1065,13 @@ Namespace Num End Sub - Public Sub MDI_command() + Public Overrides Sub MDI_command() - Dim _FxReturn As Int16 = objDMdiCommand.ExecuteCommand(sz_ManualDataInput) + Dim n_ret As Int16 = objDMdiCommand.ExecuteCommand(sz_ManualDataInput) - If _FxReturn <> 0 Then + If n_ret <> 0 Then - MessageBox.Show("Error Execute MDI Command :" + " " + _FxReturn.ToString()) + MessageBox.Show("Error Execute MDI Command :" + " " + n_ret.ToString()) End If @@ -1159,7 +1080,7 @@ Namespace Num ' Activate program ' returns 0 = OK ; > 0 error ' - Public Function DGeneralFunctions_ActivateProgram(n_part_program As Short) As Short + Public Overrides Function ActivateProgram(n_part_program As Integer) As Int16 Dim l_glbPartProgramNumber As Long, n_ret As Short @@ -1174,14 +1095,14 @@ Namespace Num ' ' Set DPOsition Mode OP/OM ' - Public Sub DPOsition_set_OP_OM(n As Short) + Public Overrides Sub set_OP_OM(n As Short) objDPosition.ModeOP = n End Sub ' ' Read Once position ' returns 0 = OK ; > 0 error ' - Public Function DPOsition_ReadOnce() As Short + Public Overrides Function DPOsition_ReadOnce() As Int16 Return objDPosition.ReadOnce(1, objDGroupManager.Handle, objDPosition.ModeOP) @@ -1189,31 +1110,31 @@ Namespace Num ' ' Set Cycle Start ' - Public Sub DGeneralFunctions_CycleStart() + Public Overrides Function DGeneralFunctions_CycleStart() As Int16 objDGeneralFunctions.CncStart() - End Sub + End Function ' ' Set Feed Hold ' - Public Sub DGeneralFunctions_FeedHold() + Public Overrides Function DGeneralFunctions_FeedHold() As Int16 objDGeneralFunctions.CncStop() - End Sub + End Function ' ' Set NC Reset ' - Public Sub DGeneralFunctions_Reset() + Public Overrides Function DGeneralFunctions_Reset() As Int16 objDGeneralFunctions.CncReset() - End Sub + End Function - Public Sub DGeneralFunctions_WriteCncMode(nmode As Short) + Public Overrides Function DGeneralFunctions_WriteCncMode(nmode As Short) As Int16 Dim ngroup0 As Short = 0 Call objDGeneralFunctions.WriteCncMode(nmode, ngroup0) - End Sub + End Function - Public Sub DGeneralFunctions_Writevar1(sz_par As String, lvalue As Long) + Public Overrides Function Write_var_1(sz_par As String, lvalue As Long) As Int16 Dim n_ret As Short @@ -1221,11 +1142,11 @@ Namespace Num If n_ret <> 0 Then MsgBox("error from objDGeneralFunctions.WriteVariable" & n_ret.ToString) - End Sub + End Function ' ' da PC a CN ' - Public Function Download_NC_prog(sz_PC_filename As String, sz_NC_filename As String) + 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 @@ -1241,7 +1162,7 @@ Namespace Num ' ' da CN a pc ' - Public Function Upload_NC_prog(sz_PC_filename As String, sz_NC_filename As String) + 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 ' ?? @@ -1253,7 +1174,7 @@ Namespace Num End Function - Public Function Delete_NC_prog(sz_NC_filename As String) + Public Overrides Function Delete_NC_prog(sz_NC_filename As String) As Int16 Dim n_ret As Short Dim lHandle As Long = 20 ' ?? @@ -1265,7 +1186,7 @@ Namespace Num End Function - Public Function Start_Transfer_NC_prog() + Public Overrides Function Start_Transfer_NC_prog() As Int16 Dim n_ret As Short @@ -1276,7 +1197,7 @@ Namespace Num End Function - Public Function DTool_set_read_range(n_start As Short, n_stop As Short) As Short + Public Overrides Function DTool_set_read_range(n_start As Short, n_stop As Short) As Short Dim n_ret As Short @@ -1290,7 +1211,7 @@ Namespace Num End Function - Public Function DTool_write_tool(n_tool_number As Short, Length_X As Double, Radius As Double, TipRadius_Z As Double, _ + 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 @@ -1308,6 +1229,7 @@ Namespace Num #End Region + End Class End Namespace diff --git a/M_Num_old.vb b/M_Num_old.vb new file mode 100644 index 0000000..00cc544 --- /dev/null +++ b/M_Num_old.vb @@ -0,0 +1,817 @@ + +Imports System.Collections.Generic + Imports System.ComponentModel + Imports System.Data + Imports System.Drawing + Imports System.Linq + Imports System.Text +Imports System.Windows.Forms +Imports System.Runtime.InteropServices + +Namespace Num + Public Class NumNCOld + Inherits CN_generico + + ' Riferimento alla MainWindow + Private m_MainWindow As MainWindow = Application.Current.MainWindow + +#Region " Classes" +#End Region + +#Region " Enum" + Enum eStatetype As Int16 + NOT_INIT = -999 + READY = 0 + BUSY = -998 + End Enum +#End Region + +#Region " Constants" + + Const A_AXIS As Short = 6 + Const RET_OK As Int16 = 0 + + ' modi NUM Axium + + Const AUTO_M = 0, SINGLE_M = 1, MDI_M = 2, DRYRUN_M = 3, SEARCH_M = 4, EDIT_M = 5, TEST_M = 6 + Const MANUAL_M = 7, MOS_M = 8, SHIFTS_M = 9, TLCOMP_M = 10, LOAD_M = 13, UPLOAD_M = 15 + + Const V0 = &HA000, V1 = &HA001, V2 = &HA002, V3 = &HA003, V4 = &HA004, V5 = &HA005, V6 = &HA006, V7 = &HA007 + Const VBY = &HA040, VW = &HA041, VL = &HA042 'VB4 doesn't accepte VB (-->VBY ) + + Const M0 = &HA100, M1 = &HA101, M2 = &HA102, M3 = &HA103, M4 = &HA104, M5 = &HA105, M6 = &HA106, M7 = &HA107 + Const MB = &HA140, MW = &HA141, ML = &HA142 + + 'Global Const C0=*0xA200 + 'C1,C2,C3,C4,C5,C6,C7, + Const CB = &HA240, CW = &HA241, CL = &HA242 + + Const R0 = &HA400, R1 = &HA401, R2 = &HA402, R3 = &HA403, R4 = &HA404, R5 = &HA405, R6 = &HA406, R7 = &HA407 + Const RB = &HA440, RW = &HA441, RL = &HA442 + + Const W0 = &HA500, W1 = &HA501, W2 = &HA502, W3 = &HA503, W4 = &HA504, W5 = &HA505, W6 = &HA506, W7 = &HA507 + Const WB = &HA540, WW = &HA541, WL = &HA542 + + Const I0 = &HA800, I1 = &HA801, I2 = &HA802, I3 = &HA803, I4 = &HA804, I5 = &HA805, I6 = &HA806, I7 = &HA807 + Const IB = &HA840, IW = &HA841, IL = &HA842 + + Const Q0 = &HA900, Q1 = &HA901, Q2 = &HA902, Q3 = &HA903, Q4 = &HA904, Q5 = &HA905, Q6 = &HA906, Q7 = &HA907 + Const QB = &HA940, QW = &HA941, QL = &HA942 + + Const SYN = 0 ' /* synchrone */ + Const ASS = 1 ' /* assynchrone send request */ + Const ASR = 2 ' /* assynchrone read response */ + + Const CTRL_AXES = 143 + Const SPINDLE_SPEED = 144 + Const SPINDLE_POS = 145, H_VAR = 147, MOS_OK = 149 + Const E80000 = 150, E81000 = 151, E82000 = 152, E30000 = 166, E40000 = 167, M_DECOD = 168, DATA_PROG = 226 + + Const Mode = 180, ACTIVE_PROG = 181 + + Const REF = 128, MES = 129, DAT1 = 130, DAT2 = 131, DAT3 = 132, MIN_LIM = 133, MAX_LIM = 134, VARH = 147 + Const TILT = 135, MACH_ORIGIN = 136, P17_MIN = 137, P17_MAX = 138, REF_COR = 139, REF_POS = 140, MES_POS = 141 + + Const TMACRO1 = &H31, TMACRO2 = &H32, TMACRO3 = &H33 + Const TUT6 = 6, TLAD = 7, TIHM = 8, TNC = 12, TPAR = 5, TCALIBR = 2, TMACRO = 11, TUTIL = 13, TPASSANT = 12 + Const TSi = 1, TFi = 2, SPi = 3, THi = 4, INI = 5, TABSYMB = 10, ALLMODULE = 16, CMODULE = 65, TXTFILE = 97 + Const IHMFNT = 98, IHMBMP = 99, IHMRSC = 100, IHMINI = 101, IHMTXT = 102, IHMICO = 103, IHMCOD = 104 + +#End Region + +#Region " Structures" + + Structure tDNC20_Position_OPOM + Dim Valid As Byte + Dim Position As Long + Dim ToGo As Long + Dim offset As Long + End Structure + + Structure tDNC20_Axes + ' Dim axe(0 To 8) As tDNC20_Position_OPOM + Dim axe() As tDNC20_Position_OPOM + End Structure + + Structure tDNC20_Spindle_i + Dim Valid As Byte + Dim Spindle As Long + End Structure + + Structure tDNC20_Spindle + ' Dim Data(0 To 3) As tDNC20_Spindle_i + Dim Data() As tDNC20_Spindle_i + End Structure + + Structure tCorOutil + Dim L_X As Long + Dim RTore_Z As Long + Dim R_Radus As Long + Dim DL_DX As Long + Dim DR_DZ As Long + Dim Direc As Long + Dim Type As Long + End Structure + + + Public Structure My_data_struct + _ + Public data As Byte() + End Structure + +#End Region + +#Region " Variabili " + + Public Var600A As Byte + Public Var600B As Byte + Public Var600C As Byte + Public Var600D As Byte + Public Var600E As Byte + Public Var600F As Byte + + Public var6010L As Long + Public var6014L As Long + Public var6018L As Long + Public var601CL As Long + Public var6020L As Long + Public var6024L As Long + Public var6028L As Long + Public var602CL As Long + + + Private iFirstVar As Integer + Private n_portNC As Integer + + Private Vmminch As Long = 1000 + Private NumCifreDecP4 As Long = 1000 + + Private aTimer As System.Timers.Timer + + Private b_busy As Boolean = False + Private b_OM_pos As Boolean = True + Private global_state As eStatetype = eStatetype.NOT_INIT + + Private MyData As My_data_struct + +#End Region + +#Region " DLL import" + + Declare Function SetPLCTool Lib "LIB_UNIT2.DLL" (ByVal chinit As String) As Int16 + Declare Function Get_Port Lib "LIB_UNIT2.DLL" (ByRef Port As Int16) As Int16 + + Declare Function Free_Port Lib "LIB_UNIT2.DLL" (ByVal Port As Int16) As Int16 + Declare Function Close_Unite Lib "LIB_UNIT2.DLL" () As Int16 + + Declare Function WriteObjectVarious2 Lib "dnc2.DLL" (ByVal Port As Int16, ByVal qui As UInt16, ByRef pData As Int32) As Int16 + Declare Function ReadObjectVarious2 Lib "dnc2.DLL" (ByVal Port As Int16, ByVal qui As UInt16, ByRef pData As Int32, ByVal Mode As UInt16) As Int16 + ' Declare Function WriteLadderVar Lib "dnc2.DLL" (ByVal Port As Int16, ByVal qui As UInt16, ByVal num As Int16, ByVal Nb As Int16, ByRef pData As Int32) As Int16 + + Declare Function StartNC Lib "dnc2.dll" (ByVal Port As Int16) As Int16 + Declare Function StopNC Lib "dnc2.dll" (ByVal Port As Int16) As Int16 + Declare Function InitNC Lib "dnc2.dll" (ByVal Port As Int16) As Int16 + + Declare Function WriteTool Lib "dnc2.dll" (ByVal Port As Int16, ByVal number As Integer, ByVal Quantity As Integer, AdrData As tCorOutil) As Int16 + Declare Function ReadTool Lib "dnc2.dll" (ByVal Port As Int16, ByVal number As Integer, ByVal Quantity As Integer, ByRef d As My_data_struct, ByVal Mode As UInt16) As Int16 + + Declare Function DNC20_DialWithModes_2 Lib "dnc20_2.dll" (ByVal Port As Int16, ByVal pstring As String, ByVal Mode As UInt16) As Int16 + Declare Function DNC20_Spindle Lib "dnc20_2.dll" (ByVal Port As Int16, ByVal Group As Int16, ByRef pData As tDNC20_Spindle, ByVal Mode As UInt16) As Int16 + + Declare Function ReadLadderVar Lib "dnc2.DLL" (ByVal Port As Int16, ByVal qui As UInt16, ByVal num As UInt16, ByVal Nb As UInt16, ByRef d As My_data_struct, ByVal Mode As UInt16) As Int16 + + Declare Function UpLoadFile Lib "dnc2.dll" (ByVal Port As Int16, ByVal prog As Int32, ByVal filename As String) As Int16 + Declare Function DownLoadFile Lib "dnc2.dll" (ByVal Port As Int16, ByVal prog As Int32, ByVal filename As String) As Int16 + Declare Function DncDeleteFile Lib "dnc2.dll" (ByVal Port As Int16, ByVal prog As Int32) As Int16 + + Declare Function DNC20_Position_OM Lib "dnc20_2.dll" (ByVal Port As Int16, ByVal Groupe As Int16, ByRef d As My_data_struct, ByVal Mode As UInt16) As Int16 + Declare Function DNC20_Position_OP Lib "dnc20_2.dll" (ByVal Port As Int16, ByVal Groupe As Int16, ByRef d As My_data_struct, ByVal Mode As UInt16) As Int16 + + Declare Function ReadObjectVarious4 Lib "dnc2.dll" (ByVal Port As Int16, ByVal qui As UInt16, ByVal Prem As UInt16, ByVal Quantity As UInt16, ByRef d As My_data_struct, ByVal Mode As UInt16) As Int16 + Declare Function WriteObjectVarious4 Lib "dnc2.dll" (ByVal Port As Int16, ByVal qui As UInt16, ByVal Prem As UInt16, ByVal Quantity As UInt16, ByRef d As My_data_struct) As Int16 + +#End Region + + + +#Region " Constructor" + + Sub New() + + Dim nret As Integer + + ' !!!!!!!!!!!!!!!!!!!!!!!!!1 da leggere da file di configurazione !!!!!!! + + 'nret = NC_connect("COM") + nret = NC_connect("XIP01, 0, 10, 0, 0, 0") + + + ' Create a timer and set an half second interval. + aTimer = New System.Timers.Timer() + + aTimer.Interval = 500 ' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + ' Hook up the Elapsed event for the timer. + AddHandler aTimer.Elapsed, AddressOf OnTimedEvent + + aTimer.AutoReset = True ' Have the timer fire repeated events (true is the default) + + aTimer.Enabled = True ' Start the timer + + End Sub + + Private Sub OnTimedEvent(source As Object, e As System.Timers.ElapsedEventArgs) + + If Not b_busy Then + aTimer.Enabled = False + b_busy = True + + Call timer_read_var() ' leggo un mucchio di variabili in un colpo solo + + Call Read_machine_pos() ' leggo posizioni assi + + b_busy = False + aTimer.Enabled = True + End If + + End Sub + + Function NC_connect(sz_connect_string As String) + + Dim nret As Integer + Dim msga As String + + 'nret = SetPLCTool("XIP01, 0, 10, 0, 0, 0") + 'nret = SetPLCTool("COM") + + nret = SetPLCTool(sz_connect_string) + + If nret <> 0 Then + msga = " Communication not availabe - ret = " & nret.ToString & " - " & sz_connect_string + MsgBox(msga, vbExclamation, "SetPLCTool") + End + End If + + 'Richiedo porta comunicazione PC-CN 2 + ' iport2 = 1 + nret = Get_Port(n_portNC) + If nret <> 0 Then + Beep() + msga = " Gate 2 not available " + MsgBox(msga, vbOKOnly, "Get_Port - ret = " & nret.ToString) + End + End If + + ' eventualmente aggiungere apertura porta per PPP + 'iport3 = 3 + 'nret = Get_Port(iport3) + + global_state = eStatetype.READY + + Return nret + + End Function + + Function NC_disconnect() + + Dim nret As Integer + + + nret = Free_Port(n_portNC) + + 'nret = Close_Unite() + + ' eventualmente pchidere porta per PPP + ' Free_Port(iport3) + + Return nret + + End Function + +#End Region + + Function timer_read_var() + + Dim nret As Int16 = -1 + + If global_state <> eStatetype.READY Then + Return global_state + Exit Function + Else + global_state = eStatetype.BUSY + End If + + 'lettura variabili da %V600A.B a %V600D.B tramite un solo accesso in memoria per %V600A.B e lettura di 4 in serie + + iFirstVar = &H600A + + nret = ReadLadderVar(n_portNC, VBY, iFirstVar, 5, MyData, SYN) + + If nret = 0 Then + Var600A = MyData.data(0) ' Feed_override + Var600B = MyData.data(1) ' spindle_override + Var600C = MyData.data(2) + Var600D = MyData.data(3) ' active_mode + Var600E = MyData.data(4) + + b_feed_override_changed = True + d_DInterpo_Feed_override = Math.Round(Var600A * 120.0 / 255, 0) + + m_MainWindow.m_MachineStatusUC.cn.b_spindle_data_changed = True + n_spindle_override(0) = Var600B + + End If + + 'Fine lettura %V600D.B + + 'lettura variabili da %V6010.L a %V601C.L + + iFirstVar = &H6010 + + nret = ReadLadderVar(n_portNC, VL, iFirstVar, 4, MyData, SYN) + + If nret = 0 Then + var6010L = BitConverter.ToInt32(MyData.data, 0) ' progr. Feed + var6014L = BitConverter.ToInt32(MyData.data, 4) ' progr. speed + var6018L = BitConverter.ToInt32(MyData.data, 8) + var601CL = BitConverter.ToInt32(MyData.data, 12) + End If + + d_DInterpo_Prog_Feed = var6010L + d_spindle_prog(0) = var6014L + + + 'lettura variabili da %V6020.L a %V602C.L + + iFirstVar = &H6020 + + nret = ReadLadderVar(n_portNC, VL, iFirstVar, 4, MyData, SYN) + + If nret = 0 Then + var6020L = BitConverter.ToInt32(MyData.data, 0) + var6024L = BitConverter.ToInt32(MyData.data, 4) ' potenziometro tablet + var6028L = BitConverter.ToInt32(MyData.data, 8) ' disponibile + var602CL = BitConverter.ToInt32(MyData.data, 12) ' disponibile + End If + + global_state = eStatetype.READY + Return nret + + End Function + + Private Function set_NC_mode(n_mode As Integer) As Int16 + + Dim nret As Int16 = -1 + + If global_state <> eStatetype.READY Then + Return global_state + Exit Function + Else + global_state = eStatetype.BUSY + End If + + nret = WriteObjectVarious2(n_portNC, Mode, n_mode) ' 0 AUTO 1 SEQUENZIALE 2 IMD 7 MANUALE + + global_state = eStatetype.READY + Return nret + + End Function + + Private Function set_MDI_command(sz_command As String) As Int16 + + Dim nret As Int16 = -1 + Dim nret2 As Int16 = -1 + Dim nret3 As Int16 = -1 + + If global_state <> eStatetype.READY Then + Return global_state + Exit Function + Else + global_state = eStatetype.BUSY + End If + + nret = WriteObjectVarious2(n_portNC, Mode, MDI_M) ' SELEZIONE MODO IMD + If nret = 0 Then + + nret2 = DNC20_DialWithModes_2(n_portNC, sz_command, SYN) ' PASSO IL COMANDO SU UN BUFFER + If nret2 = 0 Then + + nret3 = StartNC(n_portNC) ' DO IL CICLO + If nret3 = 0 Then + + nret = WriteObjectVarious2(n_portNC, Mode, MANUAL_M) ' ' SELEZIONO MODO MANUALE + + Else + nret = nret3 + 3000 ' codice di errore della StartNC + End If ' If nret3 = 0 + Else + nret = nret2 + 2000 ' codice di errore della DNC20_DialWithModes_2 + End If ' If nret2 = 0 + End If ' If nret = 0 + + global_state = eStatetype.READY + Return nret + + End Function + + Function read_active_mode() As Int16 + + Return (Var600D) ' es 0 = auto, ecc. + + End Function + + Function Read_machine_pos() + + Dim nret As Int16 + Dim i As Short, n As Short + + If global_state <> eStatetype.READY Then + Return global_state + Exit Function + Else + global_state = eStatetype.BUSY + End If + + If (b_OM_pos) Then ' quote rispetto a 0 Macchina + nret = DNC20_Position_OM(n_portNC, 0, MyData, SYN) + + Else ' quote rispetto A 0 Pezzo + nret = DNC20_Position_OP(n_portNC, 0, MyData, SYN) + End If + + For i = 0 To MAX_AXES - 2 ' la costante è 10 per cui per fare da 0 a 8.... + + n = i * 16 + + b_axis_valid(i) = (MyData.data(n) <> 0) + + If (i < A_AXIS) Then + d_axis_position(i) = (BitConverter.ToInt32(MyData.data, n + 4)) / Vmminch ' X + d_axis_delta(i) = (BitConverter.ToInt32(MyData.data, n + 8)) / Vmminch + Else + d_axis_position(i) = (BitConverter.ToInt32(MyData.data, n + 4)) / NumCifreDecP4 ' A + d_axis_delta(i) = (BitConverter.ToInt32(MyData.data, n + 8)) / NumCifreDecP4 + End If + + Next + + If b_axis_events_enable Then + + MyBase.OnNewPositionData() + MyBase.OnNewPosDeltaData() + End If + + global_state = eStatetype.READY + Return nret + + End Function + + +#Region " Metodi pubblici" + + Public Overrides Sub ReadEls_Add_Parameter(sz_var As String, n_par As Short) + + End Sub + ' + ' call DVariables_WriteVariables("E80000;E80001" , "1;2" ) + ' + Public Overrides Sub DVariables_WriteVariables(sz_parameters As String, sz_values As String) + + + End Sub + + Public Overrides Sub DVariables_WriteVariables2(sz_parameters As String, sz_values As String) + + + End Sub + + Public Overrides Sub MDI_command() + + Dim nret As Int16 = set_MDI_command(sz_ManualDataInput) + + If nret <> 0 Then + MessageBox.Show("Error Execute MDI Command :" + " " + nret.ToString()) + End If + + End Sub + ' + ' Activate program + ' returns 0 = OK ; > 0 error + ' + Public Overrides Function ActivateProgram(n_part_program As Integer) As Int16 + + Dim nret As Int16 = -1 + + If global_state <> eStatetype.READY Then + Return global_state + Exit Function + Else + global_state = eStatetype.BUSY + End If + + nret = WriteObjectVarious2(n_portNC, Mode, AUTO_M) ' potrebbe essere anche modo 11 ! + + If nret = 0 Then + nret = WriteObjectVarious2(n_portNC, ACTIVE_PROG, n_part_program) ' notare : numero non moltiplicato * 10 + End If + + If nret <> 0 Then + MessageBox.Show("Error in Activate program :" + " " + nret.ToString()) + End If + + global_state = eStatetype.READY + Return nret + + End Function + ' + ' Set DPOsition Mode OP/OM + ' + Public Overrides Sub set_OP_OM(n As Short) + + + + End Sub + ' + ' Read Once position + ' returns 0 = OK ; > 0 error + ' + Public Overrides Function DPOsition_ReadOnce() As Int16 + + + End Function + ' + ' Set Cycle Start + ' + Public Overrides Function DGeneralFunctions_CycleStart() As Int16 + + Dim nret As Int16 = -1 + + If global_state <> eStatetype.READY Then + Return global_state + Exit Function + Else + global_state = eStatetype.BUSY + End If + + + nret = StartNC(n_portNC) + + global_state = eStatetype.READY + Return nret + + End Function + ' + ' Set Feed Hold + ' + Public Overrides Function DGeneralFunctions_FeedHold() As Int16 + + Dim nret As Int16 = -1 + + If global_state <> eStatetype.READY Then + Return global_state + Exit Function + Else + global_state = eStatetype.BUSY + End If + + nret = StopNC(n_portNC) + + global_state = eStatetype.READY + Return nret + + End Function + ' + ' Set NC Reset + ' + Public Overrides Function DGeneralFunctions_Reset() As Int16 + Dim nret As Int16 = -1 + + If global_state <> eStatetype.READY Then + Return global_state + Exit Function + Else + global_state = eStatetype.BUSY + End If + + nret = InitNC(n_portNC) + + global_state = eStatetype.READY + Return nret + + End Function + + Public Overrides Function DGeneralFunctions_WriteCncMode(nmode As Short) As Int16 + Dim nret As Int16 = -1 + + nret = set_NC_mode(nmode) + + Return nret + + End Function + + Public Overrides Function Write_var_1(sz_par As String, lvalue As Long) As Int16 + + Dim nret As Int16 = -1 + Dim n_what As UInt16 + + If global_state <> eStatetype.READY Then + Return global_state + Exit Function + Else + global_state = eStatetype.BUSY + End If + + If sz_par = "E80000" Then ' !!! da sistemare per beccare anche gli altri indirizzi + n_what = E80000 + MyData.data = BitConverter.GetBytes(lvalue) + + nret = WriteObjectVarious4(n_portNC, n_what, 0, 1, MyData) + Else + nret = -997 + End If + + + + global_state = eStatetype.READY + Return nret + + 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 nret As Int16 = -1 + + If global_state <> eStatetype.READY Then + Return global_state + Exit Function + Else + global_state = eStatetype.BUSY + End If + + Dim l As Long = get_Num_prog_number(sz_NC_filename) + + ' nret = DncDeleteFile(iport2, l) + + nret = DownLoadFile(n_portNC, l, sz_PC_filename) + + global_state = eStatetype.READY + Return nret + + 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 nret As Int16 = -1 + + If global_state <> eStatetype.READY Then + Return global_state + Exit Function + Else + global_state = eStatetype.BUSY + End If + + Dim l As Long = get_Num_prog_number(sz_NC_filename) + + nret = UpLoadFile(n_portNC, l, sz_PC_filename) + + global_state = eStatetype.READY + Return nret + + End Function + + Private Function get_Num_prog_number(sz_in As String) As Long + + Dim sz_n As String = sz_in + Dim l_prog_num As Long + + If InStr(sz_n, "%") Then sz_n = sz_n.Replace("%", "") + + If InStr(sz_n, ".") Then + sz_n = sz_n.Replace(".", "") + l_prog_num = CLng(sz_n) + Else + l_prog_num = CLng(sz_n) * 10 + End If + + Return l_prog_num + + End Function + + Public Overrides Function Delete_NC_prog(sz_NC_filename As String) As Int16 + + Dim nret As Int16 = -1 + + If global_state <> eStatetype.READY Then + Return global_state + Exit Function + Else + global_state = eStatetype.BUSY + End If + + Dim l As Long = get_Num_prog_number(sz_NC_filename) + + nret = DncDeleteFile(n_portNC, l) + + global_state = eStatetype.READY + Return nret + + End Function + + Public Overrides Function Start_Transfer_NC_prog() As Int16 + Return 0 + End Function + + Public Overrides Function DTool_set_read_range(n_start As Short, n_stop As Short) As Int16 + + Dim nret As Int16 = -1 + + If global_state <> eStatetype.READY Then + Return global_state + Exit Function + Else + global_state = eStatetype.BUSY + End If + + nret = ReadTool(n_portNC, n_start, 1, MyData, SYN) + + If nret = RET_OK Then + + Tools(0).lenght = 0 ' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + Tools(0).radius = 0 + Tools(0).comp_num = 0 + + b_Tool_data_changed = True + + End If + + global_state = eStatetype.READY + Return nret + + 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 Int16 + Dim Tool As tCorOutil + + Dim nret As Int16 = -1 + + If global_state <> eStatetype.READY Then + Return global_state + Exit Function + Else + global_state = eStatetype.BUSY + End If + + ' da rifare !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + Tool.L_X = CLng(Length_X * 1000) + Tool.R_Radus = CLng(Radius * 1000) + Tool.RTore_Z = CLng(TipRadius_Z * 1000) + Tool.DL_DX = 0 + Tool.DR_DZ = 0 + Tool.Direc = 0 + Tool.Type = 0 + + nret = WriteTool(n_portNC, n_tool_number, 1, Tool) + + global_state = eStatetype.READY + Return nret + + End Function + + Public Function readE80000() As Int16 ' temporanea di prova ..... + + + Dim nret As Int16 = -1 + Dim ldata As Int32 + + If global_state <> eStatetype.READY Then + Return global_state + Exit Function + Else + global_state = eStatetype.BUSY + End If + + nret = ReadObjectVarious4(n_portNC, E80000, 0, 1, MyData, SYN) + If nret = 0 Then + ldata = BitConverter.ToInt32(MyData.data, 0) + End If + + global_state = eStatetype.READY + Return nret + + + End Function + + +#End Region + + End Class + +End Namespace + + diff --git a/MachinePageUC.xaml.vb b/MachinePageUC.xaml.vb index df2145b..f3a2f62 100644 --- a/MachinePageUC.xaml.vb +++ b/MachinePageUC.xaml.vb @@ -10,9 +10,6 @@ Public Class MachinePageUC Friend m_AlarmsPageUC As AlarmsPageUC Friend m_ToolsDbUC As ToolsDbPageUC - 'Dichiarazione variabili direttori - Friend m_sMachIniFile As String = String.Empty - Private Sub MachinePage_Initialized(sender As Object, e As EventArgs) 'Creazione delle Page UserControl @@ -25,13 +22,6 @@ Public Class MachinePageUC m_ToolsDbUC.SetValue(Grid.RowProperty, 1) m_ToolsDbUC.SetValue(Grid.RowSpanProperty, 2) - ' Impostazione path Ini file - Dim sTemp As String = String.Empty - GetPrivateProfileString(S_MACH, K_MACHINESDIR, "", sTemp, m_MainWindow.GetIniFile()) - m_sMachIniFile = sTemp - GetPrivateProfileString(S_MACH, K_CURRMACH, "", sTemp, m_MainWindow.GetIniFile()) - m_sMachIniFile = m_sMachIniFile & "\" & sTemp & "\" & sTemp & ".ini" - End Sub Private Sub MachinePage_Loaded(sender As Object, e As RoutedEventArgs) @@ -46,7 +36,12 @@ Public Class MachinePageUC End Sub Private Sub ToolsDBBtn_Click(sender As Object, e As RoutedEventArgs) Handles ToolsDBBtn.Click - MachinePageGrid.Children.Add(m_ToolsDbUC) + For Each Page In MachinePageGrid.Children + If TypeOf Page Is ToolsDbPageUC Then + Exit Sub + End If + Next + MachinePageGrid.Children.Add(m_ToolsDbUC) End Sub Private Sub StartBtn_Click(sender As Object, e As RoutedEventArgs) Handles StartBtn.Click @@ -102,7 +97,7 @@ Public Class MachinePageUC End Sub Private Sub ActivateBtn_Click(sender As Object, e As RoutedEventArgs) Handles ActivateBtn.Click - cn.DGeneralFunctions_ActivateProgram(900) + cn.ActivateProgram(900) End Sub End Class diff --git a/MachineStatusUC.xaml.vb b/MachineStatusUC.xaml.vb index 3e5b550..62ee742 100644 --- a/MachineStatusUC.xaml.vb +++ b/MachineStatusUC.xaml.vb @@ -11,13 +11,16 @@ Public Class MachineStatusUC Private m_MainWindow As MainWindow = Application.Current.MainWindow 'Variabile per presenza collegamento al CN - Dim m_bNCLink As Integer + Private m_bNCLink As Integer + 'Variabile per tipologia CN + Private m_iNCType As Integer 'Variabile per stato CN Private b_Nc_simulation As Boolean = False + 'Classe del CN - Public WithEvents cn As Num.NumNC + Public WithEvents cn As CN_generico Private b_new_pos_data As Boolean = False Private b_new_delta_data As Boolean = False @@ -31,6 +34,8 @@ Public Class MachineStatusUC 'Verifico presenza del collegamento al CN m_bNCLink = GetPrivateProfileInt(S_GENERAL, K_CNLINK, 0, m_MainWindow.GetIniFile()) + 'Verifico tipologia del CN + m_iNCType = GetPrivateProfileInt(S_NUMERICALCONTROL, K_TYPE, 0, m_MainWindow.m_sMachIniFile) If m_bNCLink Then AddHandler RefreshTimer.Tick, AddressOf RefreshTimer_tick RefreshTimer.Interval = TimeSpan.FromMilliseconds(100) @@ -58,23 +63,31 @@ Public Class MachineStatusUC Private Sub InitCn() - If (Not b_Nc_simulation) Then + If m_bNCLink = 1 Then MachineStatusGrid.Background = Brushes.Tomato ' istanzio l'oggetto CN Try - - cn = New Num.NumNC() + Select Case m_iNCType + Case 1 + cn = New Num.NumNCOld + Case Else + cn = New Num.NumNC + End Select Catch ex As Exception ' set status to statusbar MsgBox(ex.Message) End Try + Select Case m_iNCType + Case 1 + Case Else + While cn.n_state < 2 + System.Threading.Thread.Sleep(500) ' 0.5 sec wait!!!!!!!! + End While + End Select - 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 diff --git a/MainWindow.xaml.vb b/MainWindow.xaml.vb index 7a65451..f806054 100644 --- a/MainWindow.xaml.vb +++ b/MainWindow.xaml.vb @@ -39,6 +39,7 @@ Class MainWindow Private m_sSaveDir As String = String.Empty Private m_sMachinesRoot As String = String.Empty Private Shared m_sIniFile As String = String.Empty + Friend m_sMachIniFile As String = String.Empty Private m_nDebug As Integer = 0 ' Dichiarazione lista per ListBox della ImportPage @@ -104,6 +105,12 @@ Class MainWindow m_sTempDir = m_sDataRoot & "\" & TEMP_DIR ' Impostazione path Ini file m_sIniFile = m_sConfigDir & "\" & INI_FILE_NAME + ' Impostazione path MachIni file + Dim sTemp As String = String.Empty + GetPrivateProfileString(S_MACH, K_MACHINESDIR, "", sTemp, m_sIniFile) + m_sMachIniFile = sTemp + GetPrivateProfileString(S_MACH, K_CURRMACH, "", sTemp, m_sIniFile) + m_sMachIniFile = m_sMachIniFile & "\" & sTemp & "\" & sTemp & ".ini" ' Impostazione direttorio di salvataggio If GetPrivateProfileString(S_GENERAL, K_SAVEDIR, "", m_sSaveDir, m_sIniFile) = 0 Then m_sSaveDir = m_sDataRoot & "\" & SAVE_DFL_DIR diff --git a/OmagCUT.vbproj b/OmagCUT.vbproj index 7b952cb..7e890f5 100644 --- a/OmagCUT.vbproj +++ b/OmagCUT.vbproj @@ -125,6 +125,8 @@ CadCutPageUC.xaml + + CurrentProjectPageUC.xaml @@ -139,6 +141,7 @@ FrameCutPageUC.xaml + NestPageUC.xaml diff --git a/ToolsDbPageUC.xaml b/ToolsDbPageUC.xaml index 43b8894..074b770 100644 --- a/ToolsDbPageUC.xaml +++ b/ToolsDbPageUC.xaml @@ -15,7 +15,7 @@ - + diff --git a/ToolsDbPageUC.xaml.vb b/ToolsDbPageUC.xaml.vb index 5fedc12..47acb8b 100644 --- a/ToolsDbPageUC.xaml.vb +++ b/ToolsDbPageUC.xaml.vb @@ -15,11 +15,21 @@ Public Class ToolsDbPageUC Private m_bFirst As Boolean = True Private m_Annulla As Boolean = False - Private m_NewItem As Object + 'Variabile che conserva l'utensile precedentemente selezionato usata nel caso si selezioni annulla quando si cambia utensile selezionato Private m_OldItem As Object + ' Dichiarazione Scene + Friend WithEvents ToolScene As New Scene + Dim ToolSceneHost As New System.Windows.Forms.Integration.WindowsFormsHost + Private Sub ToolsDbPage_Initialized(sender As Object, e As EventArgs) + 'Assegnazione scena all'host e posizionamento nella ToolsDbPageGrid + ToolSceneHost.Child = ToolScene + ToolSceneHost.SetValue(Grid.ColumnProperty, 2) + ToolSceneHost.SetValue(Grid.RowProperty, 0) + Me.ToolsDbPageGrid.Children.Add(ToolSceneHost) + ' Assegno la lista degli utensili come sorgente del treeview ToolTreeView.ItemsSource = ToolsList @@ -46,13 +56,54 @@ Public Class ToolsDbPageUC Private Sub ToolsDbPage_Loaded(sender As Object, e As RoutedEventArgs) If m_bFirst Then + ' imposto colore di default + Dim DefColor As New Color3d(0, 0, 0) + GetPrivateProfileColor(S_GEOMDB, K_DEFAULTCOLOR, DefColor, m_MainWindow.GetIniFile()) + ToolScene.SetDefaultMaterial(DefColor) + ' imposto colori sfondo + Dim BackTopColor As New Color3d(192, 192, 192) + GetPrivateProfileColor(S_SCENE, K_BACKTOP, BackTopColor, m_MainWindow.GetIniFile()) + Dim BackBotColor As New Color3d(BackTopColor) + GetPrivateProfileColor(S_SCENE, K_BACKBOTTOM, BackBotColor, m_MainWindow.GetIniFile()) + ToolScene.SetViewBackground(BackTopColor, BackBotColor) + ' imposto colore di evidenziazione + Dim MarkColor As New Color3d(255, 255, 0) + GetPrivateProfileColor(S_SCENE, K_MARK, MarkColor, m_MainWindow.GetIniFile()) + ToolScene.SetMarkMaterial(MarkColor) + ' imposto colore per superfici selezionate + Dim SelSurfColor As New Color3d(255, 255, 192) + GetPrivateProfileColor(S_SCENE, K_SELSURF, SelSurfColor, m_MainWindow.GetIniFile()) + ToolScene.SetSelSurfMaterial(SelSurfColor) + ' imposto tipo e colore del rettangolo di zoom + Dim bOutline As Boolean = True + Dim ZwColor As New Color3d(0, 0, 0) + GetPrivateProfileZoomWin(S_SCENE, K_ZOOMWIN, bOutline, ZwColor, m_MainWindow.GetIniFile()) + ToolScene.SetZoomWinAttribs(bOutline, ZwColor) + ' imposto colore della linea di distanza + Dim DstLnColor As New Color3d(255, 0, 0) + GetPrivateProfileColor(S_SCENE, K_DISTLINE, DstLnColor, m_MainWindow.GetIniFile()) + ToolScene.SetDistLineMaterial(DstLnColor) + ' imposto parametri OpenGL + Dim nDriver As Integer = GetPrivateProfileInt(S_OPENGL, K_DRIVER, 3, m_MainWindow.GetIniFile()) + Dim b2Buff As Boolean = (GetPrivateProfileInt(S_OPENGL, K_DOUBLEBUFFER, 1, m_MainWindow.GetIniFile()) <> 0) + Dim nColorBits As Integer = GetPrivateProfileInt(S_OPENGL, K_COLORBITS, 32, m_MainWindow.GetIniFile()) + Dim nDepthBits As Integer = GetPrivateProfileInt(S_OPENGL, K_DEPTHBITS, 32, m_MainWindow.GetIniFile()) + ToolScene.SetViewAttributes(nDriver, b2Buff, nColorBits, nDepthBits) + ' inizializzo la scena (DB geometrico + visualizzazione) + ToolScene.Init() + ' leggo direttorio componenti + 'GetPrivateProfileString(S_COMPO, K_COMPODIR, "", m_sCompoDir, m_MainWindow.GetIniFile()) + 'Inizializzo le famiglie di utensili nell'albero + EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx()) InitializeToolFamily(K_SAWBLADE, MCH_TF.SAWBLADE, EgtMsg(MSG_TOOLSDBPAGEUC + 31)) InitializeToolFamily(K_DRILLBIT, MCH_TF.DRILLBIT, EgtMsg(MSG_TOOLSDBPAGEUC + 32)) InitializeToolFamily(K_MILL, MCH_TF.MILL, EgtMsg(MSG_TOOLSDBPAGEUC + 33)) m_bFirst = False + Else + EgtSetCurrentContext(ToolScene.GetCtx()) End If - If GetPrivateProfileInt("General", "ToolChanger", 0, m_MainWindow.m_MachinePageUC.m_sMachIniFile) <> 0 Then + If GetPrivateProfileInt(S_TOOLS, K_SHOWTOOLCHANGER, 0, m_MainWindow.m_sMachIniFile) <> 0 Then TCPosTxBl.Visibility = Windows.Visibility.Visible TCPosTxBx.Visibility = Windows.Visibility.Visible Else @@ -60,7 +111,7 @@ Public Class ToolsDbPageUC TCPosTxBx.Visibility = Windows.Visibility.Hidden End If - If GetPrivateProfileInt("General", "Head", 0, m_MainWindow.m_MachinePageUC.m_sMachIniFile) <> 0 Then + If GetPrivateProfileInt(S_TOOLS, K_SHOWHEADEXIT, 0, m_MainWindow.m_sMachIniFile) <> 0 Then HeadTxBl.Visibility = Windows.Visibility.Visible HeadTxBx.Visibility = Windows.Visibility.Visible ExitTxBl.Visibility = Windows.Visibility.Visible @@ -129,10 +180,15 @@ Public Class ToolsDbPageUC Private Sub RemoveBtn_Click(sender As Object, e As RoutedEventArgs) Handles RemoveBtn.Click If TypeOf ToolTreeView.SelectedItem Is ToolItem Then - Dim SelectedCathegory As ToolItem = ToolTreeView.SelectedItem - EgtTdbRemoveTool(SelectedCathegory.Title) + Dim SelectedItem As ToolItem = ToolTreeView.SelectedItem + EgtTdbRemoveTool(SelectedItem.Title) + For Each ToolFamily In ToolsList + If (ToolFamily.nFType And SelectedItem.nType) <> 0 Then + ToolFamily.Items.Remove(SelectedItem) + End If + Next End If - RefreshToolTree() + 'RefreshToolTree() End Sub Private Sub OkBtn_Click(sender As Object, e As RoutedEventArgs) Handles OkBtn.Click @@ -145,7 +201,7 @@ Public Class ToolsDbPageUC End Sub Private Sub InitializeToolFamily(sFIniConst As String, nFType As Integer, sFName As String) - If GetPrivateProfileInt(S_TOOLS, sFIniConst, 0, m_MainWindow.GetIniFile()) = 1 Then + If GetPrivateProfileInt(S_TOOLS, sFIniConst, 0, m_MainWindow.m_sMachIniFile) = 1 Then Dim ToolCathegory As New CathegoryItem(sFName, nFType) Dim nType As Integer = 0 Dim ToolName As String = String.Empty