Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 37adc352a1 | |||
| 2708670d9a | |||
| 737366ba27 | |||
| d10588867f | |||
| 54158406b7 | |||
| 5c3c231729 | |||
| d3c0b1c2c6 | |||
| ad04e5d916 |
@@ -24,7 +24,7 @@
|
||||
<RowDefinition Height="0.5*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<TextBlock Name="Title" Grid.Row="1" Grid.Column="1"
|
||||
<TextBlock Name="TableListMsg" Grid.Row="1" Grid.Column="1"
|
||||
Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}"/>
|
||||
|
||||
<ItemsControl Name="TableList"
|
||||
|
||||
@@ -20,7 +20,7 @@ Public Class SelectTableWD
|
||||
|
||||
Private Sub ChangeTable_Initialized() Handles Me.Initialized
|
||||
|
||||
Title.Text = EgtUILib.EgtMsg(91234) ' Seleziona la tavola da usare
|
||||
TableListMsg.Text = EgtUILib.EgtMsg(91234) ' Seleziona la tavola da usare
|
||||
' recuepero l'inidce della tavola corrente
|
||||
Dim nIndeXCurrTab As Integer = GetCurrentTable()
|
||||
' creo la lista delle tavole disponibili (attivo il bottone della tavola attualmente in uso)
|
||||
|
||||
@@ -261,17 +261,11 @@ Module ConstIni
|
||||
Public Const K_REGANGSTEP As String = "AngStep"
|
||||
|
||||
Public Const S_CAMERA As String = "Camera"
|
||||
Public Const K_CAM_COUNT As String = "Count"
|
||||
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_CONTOUR As String = "Contour"
|
||||
Public Const K_CAM_EXEPATH2 As String = "ExePath2"
|
||||
Public Const K_CAM_IMAGE2 As String = "Image2"
|
||||
Public Const K_CAM_INFO2 As String = "Info2"
|
||||
Public Const K_CAM_RESULT2 As String = "Result2"
|
||||
Public Const K_CAM_CONTOUR2 As String = "Contour2"
|
||||
Public Const K_CAM_THRESHOLD As String = "Threshold"
|
||||
Public Const K_CAM_TOLERANCE As String = "Tolerance"
|
||||
Public Const K_CAM_TIMEOUT As String = "Timeout"
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
Public Const S_NUMERICALCONTROL As String = "NumericalControl"
|
||||
Public Const K_TYPE As String = "Type"
|
||||
Public Const K_SPECIALSEND As String = "SpecialSend"
|
||||
|
||||
Public Const S_PARTPROGRAM As String = "PartProgram"
|
||||
Public Const K_EXTENSION As String = "Extension"
|
||||
|
||||
@@ -267,6 +267,7 @@ Public Class GridCut
|
||||
EraseDirectCutPart()
|
||||
' Riattivo eventuali lavorazioni presenti
|
||||
ActivateAllMachinings()
|
||||
EgtSetCurrPhase(1)
|
||||
' Abilito registrazione progetto modificato
|
||||
EgtEnableModified()
|
||||
' Nascondo la macchina
|
||||
@@ -763,10 +764,37 @@ Public Class GridCut
|
||||
If Not m_MainWindow.m_CurrentMachine.bDirectCutsFinalHome Then
|
||||
RemoveFinalHome()
|
||||
End If
|
||||
' Se richiesta gestione tagli finali
|
||||
OrderFinalSawCuts()
|
||||
' Aggiorno stato bottoni
|
||||
UpdateSimulOkBtn()
|
||||
Return m_bCutOk
|
||||
End Function
|
||||
|
||||
Private Function OrderFinalSawCuts() As Boolean
|
||||
' Se gestione tagli finali non richiesta, esco
|
||||
If Not m_MainWindow.m_CurrentMachine.bEnableFinalSawCut Then Return False
|
||||
' Sposto i tagli finali alla fine, conservando l'ordine relativo
|
||||
Dim nFirstMovedId As Integer = GDB_ID.NULL
|
||||
Dim nRefId As Integer = EgtGetLastActiveOperation()
|
||||
Dim nOpeId As Integer = EgtGetFirstActiveOperation()
|
||||
While nOpeId <> GDB_ID.NULL
|
||||
If nOpeId = nFirstMovedId Then Exit While
|
||||
Dim nNextOpeId As Integer = EgtGetNextActiveOperation( nOpeId)
|
||||
If EgtGetOperationType( nOpeId) = MCH_OY.SAWING Then
|
||||
Dim bFinalCut As Boolean = False
|
||||
IF EgtGetInfo( nOpeId, "FinalCut", bFinalCut) AndAlso bFinalCut Then
|
||||
EgtRelocateGlob( nOpeId, nRefId, GDB_POS.AFTER)
|
||||
nRefId = nOpeId
|
||||
If nFirstMovedId = GDB_ID.NULL Then nFirstMovedId = nOpeId
|
||||
End If
|
||||
End If
|
||||
nOpeId = nNextOpeId
|
||||
End While
|
||||
' Esco
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Private Function MultiplyCut(nLayerId As Integer) As Boolean
|
||||
If m_bCustomGrid Then
|
||||
Return MultiplyCut_1(nLayerId)
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="7.5*"/>
|
||||
<ColumnDefinition Width="1.5*"/>
|
||||
<ColumnDefinition Width="1*"/>
|
||||
<ColumnDefinition Width="2*"/>
|
||||
<ColumnDefinition Width="5*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
@@ -103,7 +103,7 @@
|
||||
|
||||
<GroupBox Name="PartProgTransferGpBx"
|
||||
Style="{DynamicResource OmagCut_GroupBox}" Grid.Row="2"
|
||||
Grid.ColumnSpan="3">
|
||||
Grid.ColumnSpan="2">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="2*"/>
|
||||
@@ -127,9 +127,16 @@
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
|
||||
<GroupBox Name="SpecialSendGpBx" Style="{DynamicResource OmagCut_GroupBox}" Grid.Row="2"
|
||||
Grid.Column="2" Grid.ColumnSpan="1" Margin="5,0,5,0">
|
||||
<CheckBox Name="SpecialSendChBx"
|
||||
Style="{DynamicResource OmagCut_CheckBox_Single}"
|
||||
HorizontalAlignment="Center" Margin="0,0,0,0"/>
|
||||
</GroupBox>
|
||||
|
||||
<GroupBox Name="PowerGpBx" Style="{DynamicResource OmagCut_GroupBox}" Grid.Row="2"
|
||||
Grid.Column="3" Grid.ColumnSpan="3" Margin="5,0,0,0">
|
||||
<Grid>
|
||||
Grid.Column="3" Grid.ColumnSpan="1" Margin="5,0,0,0">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="2*"/>
|
||||
<ColumnDefinition Width="2*"/>
|
||||
|
||||
@@ -37,6 +37,16 @@ Public Class MachineCNPageUC
|
||||
PartProgTransferGpBx.Visibility = Windows.Visibility.Hidden
|
||||
End If
|
||||
|
||||
' Se prevista, scelta invio speciale part program
|
||||
Dim nSpecialSend As Integer = GetPrivateProfileInt(S_NUMERICALCONTROL, K_SPECIALSEND, -1, m_MainWindow.GetMachIniFile())
|
||||
If nSpecialSend <> -1 Then
|
||||
SpecialSendChBx.IsChecked() = (nSpecialSend = 1)
|
||||
SpecialSendGpBx.Header = "Special Send"
|
||||
SpecialSendGpBx.Visibility = Visibility.Visible
|
||||
else
|
||||
SpecialSendGpBx.Visibility = Visibility.Collapsed
|
||||
End If
|
||||
|
||||
' nuovi pulsanti
|
||||
If GetPrivateProfileInt(S_NCDATA, K_NEWCONSOLE, 0, m_MainWindow.GetMachIniFile()) = 1 Then
|
||||
PowerONBtn.Content = "ON"
|
||||
@@ -85,7 +95,7 @@ Public Class MachineCNPageUC
|
||||
Dim m_nCount As Integer = 1
|
||||
Dim bFoundBtn As Boolean = True
|
||||
Dim sTestVal As String = String.Empty
|
||||
' se non trovo il primo pulsante della lista allora nascondo l'elenco dei pulasnti per accensione
|
||||
' se non trovo il primo pulsante della lista allora nascondo l'elenco dei pulsanti per accensione
|
||||
If GetPrivateProfileString("MachineButtons", K_BUTTON & "1", "", sTestVal, m_MainWindow.GetMachIniFile()) = 0 Then
|
||||
PowerGpBx.Visibility = Visibility.Collapsed
|
||||
Return
|
||||
@@ -323,6 +333,10 @@ Public Class MachineCNPageUC
|
||||
MDITxBx.Background = Brushes.LightGray
|
||||
End Sub
|
||||
|
||||
Private Sub SpecialSend_Click(sender As Object, e As RoutedEventArgs) Handles SpecialSendChBx.Click
|
||||
m_MainWindow.m_CNCommunication.SpecialSend() = If( SpecialSendChBx.IsChecked(), 1, 0)
|
||||
End Sub
|
||||
|
||||
Private Sub PowerON_Click(sender As Object, e As RoutedEventArgs) Handles PowerONBtn.Click
|
||||
Dim PowerOnButton As MachineButton = m_ButtonPower(0)
|
||||
' eseguo lo script lua associato
|
||||
|
||||
@@ -2221,7 +2221,7 @@ Public Class MachiningDbPageUC
|
||||
Friend Function SaveCurrMachining() As Boolean
|
||||
SetMachiningParams()
|
||||
If EgtMdbIsCurrMachiningModified() Then
|
||||
Dim SaveCurrMachiningWnd As New EgtMsgBox(m_MainWindow, "", EgtMsg(91003), EgtMsgBox.Buttons.YES_NO_CANCEL, EgtMsgBox.Icons.NULL) ' Inclinazione
|
||||
Dim SaveCurrMachiningWnd As New EgtMsgBox(m_MainWindow, "", EgtMsg(91103), EgtMsgBox.Buttons.YES_NO_CANCEL, EgtMsgBox.Icons.NULL) ' Inclinazione
|
||||
Select Case SaveCurrMachiningWnd.m_nPressedBtn
|
||||
Case 0 ' Annulla
|
||||
Return False
|
||||
|
||||
+2
-2
@@ -362,8 +362,8 @@ Class MainWindow
|
||||
' Verifico abilitazione nesting automatico
|
||||
m_bAutoNest = Not String.IsNullOrWhiteSpace(sNestKey)
|
||||
' Recupero opzioni della chiave
|
||||
Dim bKey As Boolean = EgtGetKeyLevel(9423, 2707, 1, m_nKeyLevel) And
|
||||
EgtGetKeyOptions(9423, 2707, 1, m_nKeyOptions)
|
||||
Dim bKey As Boolean = EgtGetKeyLevel(9423, 2709, 1, m_nKeyLevel) And
|
||||
EgtGetKeyOptions(9423, 2709, 1, m_nKeyOptions)
|
||||
' Verifico abilitazione prodotto
|
||||
Dim bProd As Boolean = GetKeyOption(KEY_OPT.CUT_BASE)
|
||||
' Impostazione per programma OnlyFrame: solo se CUT_BASE non attivo
|
||||
|
||||
@@ -62,5 +62,5 @@ Imports System.Windows
|
||||
' by using the '*' as shown below:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("2.7.8.2")>
|
||||
<Assembly: AssemblyFileVersion("2.7.8.2")>
|
||||
<Assembly: AssemblyVersion("2.7.9.3")>
|
||||
<Assembly: AssemblyFileVersion("2.7.9.3")>
|
||||
|
||||
+107
-33
@@ -20,6 +20,21 @@ Public Class CNCommunication
|
||||
' Variabile per tipologia CN
|
||||
Friend m_nNCType As Integer
|
||||
|
||||
' Modalità speciale invio programmi (attualmente solo per Fanuc, fino a 4 programmi)
|
||||
Private m_nSpecialSend As Integer = -1
|
||||
Friend Property SpecialSend As Integer
|
||||
Get
|
||||
Return m_nSpecialSend
|
||||
End Get
|
||||
Set(value As Integer)
|
||||
value = Math.Max( Math.Min( value, 1), -1)
|
||||
If value <> m_nSpecialSend Then
|
||||
m_nSpecialSend = value
|
||||
WritePrivateProfileString( S_NUMERICALCONTROL, K_SPECIALSEND, value.ToString(), m_MainWindow.GetMachIniFile())
|
||||
End If
|
||||
End Set
|
||||
End Property
|
||||
|
||||
' Variabile che indica il Mode corrente
|
||||
Private m_nCurrMode As Integer = -1
|
||||
|
||||
@@ -98,6 +113,10 @@ Public Class CNCommunication
|
||||
|
||||
EgtOutLog("NcLink=" & m_MainWindow.m_bNCLink.ToString & " type=" & m_nNCType)
|
||||
|
||||
' Leggo flag invio speciale programma di lavoro
|
||||
Dim nTemp As Integer = GetPrivateProfileInt(S_NUMERICALCONTROL, K_SPECIALSEND, -1, m_MainWindow.GetMachIniFile())
|
||||
m_nSpecialSend = Math.Max( Math.Min( nTemp, 1), -1)
|
||||
|
||||
' Se CN Siemens leggo dati programma intermedio di comunicazione
|
||||
If m_nNCType = 3 Then
|
||||
Dim sExeName As String = String.Empty
|
||||
@@ -1183,7 +1202,7 @@ Public Class CNCommunication
|
||||
'Laser = 16384
|
||||
End Enum
|
||||
|
||||
#Region "MASCHERA per conttrollo Bit a Bit"
|
||||
#Region "MASCHERA per controllo Bit a Bit"
|
||||
<Flags()>
|
||||
Public Enum Mask As Integer
|
||||
bit_Err = -1
|
||||
@@ -1568,10 +1587,6 @@ Public Class CNCommunication
|
||||
Optional bActivate As Boolean = True) As Boolean
|
||||
Dim bOk As Boolean = True
|
||||
|
||||
' !!!!!!!!!!!!!!!!!! FORZO IL PROGRAMMA !!!!!!!!!!!!!!!!!!
|
||||
' m_nNCType = 2
|
||||
' !!!!!!!!!!!!!!!!!! FORZO IL PROGRAMMA !!!!!!!!!!!!!!!!!!
|
||||
|
||||
' Download programma
|
||||
If m_MainWindow.m_bNCLink Then
|
||||
bOk = (m_nNCType > 0)
|
||||
@@ -1582,6 +1597,10 @@ Public Class CNCommunication
|
||||
Else
|
||||
sNumProg = nNumProg.ToString()
|
||||
End If
|
||||
' Se Fanuc con trasmissione speciale, disabilito attivazione
|
||||
If m_nNCType = 4 AndAlso m_nSpecialSend = 1 Then
|
||||
bActivate = False
|
||||
End If
|
||||
' Se richiesta successiva attivazione, faccio reset
|
||||
If bActivate Then
|
||||
EgtOutLog("Call function: DGeneralFunctions_Reset")
|
||||
@@ -1600,42 +1619,47 @@ Public Class CNCommunication
|
||||
' Attesa opportuna
|
||||
System.Threading.Thread.Sleep(100)
|
||||
ElseIf m_nNCType = 4 Then
|
||||
' FANUC: imposto modalità EDIT
|
||||
bOk = bOk AndAlso (m_CN.DGeneralFunctions_WriteCncMode(1) = 0)
|
||||
' Attesa opportuna
|
||||
System.Threading.Thread.Sleep(m_MainWindow.m_CurrentMachine.nThreadSleep)
|
||||
' FANUC: imposto modalità EDIT se non special send
|
||||
If m_nSpecialSend <> 1 Then
|
||||
bOk = bOk AndAlso (m_CN.DGeneralFunctions_WriteCncMode(1) = 0)
|
||||
' Attesa opportuna
|
||||
System.Threading.Thread.Sleep(m_MainWindow.m_CurrentMachine.nThreadSleep)
|
||||
End If
|
||||
End If
|
||||
EgtOutLog("Download_NC_prog(" & sCncPath & ", " & sNumProg.ToString & ")")
|
||||
' -------------- START DOWNLOAD --------------
|
||||
TimeSpanInit()
|
||||
bOk = bOk AndAlso (m_CN.Download_NC_prog(sCncPath, sNumProg) = 0)
|
||||
' Attesa opportuna
|
||||
System.Threading.Thread.Sleep(100)
|
||||
' FANUC: genero un file 901 vuoto da aspedire, attivare; poi rispedisco il file 900
|
||||
If m_nNCType = 4 And Not bOk Then
|
||||
bOk = True
|
||||
Dim sCncPath1 As String = m_MainWindow.GetCncDir() & "\PlaceHolder" & m_MainWindow.m_CurrentMachine.sIsoFileExt
|
||||
Dim fs As FileStream = File.Create(sCncPath1)
|
||||
' Add text to the file.
|
||||
Dim info As Byte() = New UTF8Encoding(True).GetBytes(vbLf & "(PlaceHolder)")
|
||||
fs.Write(info, 0, info.Length)
|
||||
fs.Close()
|
||||
bOk = bOk AndAlso (m_CN.Download_NC_prog(sCncPath1, "901") = 0)
|
||||
If m_nNCType = 4 AndAlso m_nSpecialSend = 1 Then
|
||||
bOk = bOk AndAlso SpecialSendProgram(sCncPath, sNumProg)
|
||||
Else
|
||||
bOk = bOk AndAlso (m_CN.Download_NC_prog(sCncPath, sNumProg) = 0)
|
||||
' Attesa opportuna
|
||||
System.Threading.Thread.Sleep(m_MainWindow.m_CurrentMachine.nThreadSleep)
|
||||
If bActivate Then
|
||||
bOk = bOk AndAlso (m_CN.ActivateProgram("901") = 0)
|
||||
System.Threading.Thread.Sleep(100)
|
||||
' FANUC: genero un file 901 vuoto da spedire, attivare; poi rispedisco il file 900
|
||||
If m_nNCType = 4 And Not bOk Then
|
||||
bOk = True
|
||||
Dim sCncPath1 As String = m_MainWindow.GetCncDir() & "\PlaceHolder" & m_MainWindow.m_CurrentMachine.sIsoFileExt
|
||||
Dim fs As FileStream = File.Create(sCncPath1)
|
||||
' Add text to the file.
|
||||
Dim info As Byte() = New UTF8Encoding(True).GetBytes(vbLf & "(PlaceHolder)")
|
||||
fs.Write(info, 0, info.Length)
|
||||
fs.Close()
|
||||
bOk = bOk AndAlso (m_CN.Download_NC_prog(sCncPath1, "901") = 0)
|
||||
' Attesa opportuna
|
||||
System.Threading.Thread.Sleep(m_MainWindow.m_CurrentMachine.nThreadSleep)
|
||||
If bActivate Then
|
||||
bOk = bOk AndAlso (m_CN.ActivateProgram("901") = 0)
|
||||
' Attesa opportuna
|
||||
System.Threading.Thread.Sleep(m_MainWindow.m_CurrentMachine.nThreadSleep)
|
||||
End If
|
||||
' riprovo ad eseguire il programma 900
|
||||
bOk = True
|
||||
bOk = bOk AndAlso (m_CN.Download_NC_prog(sCncPath, sNumProg) = 0)
|
||||
' Attesa opportuna
|
||||
System.Threading.Thread.Sleep(m_MainWindow.m_CurrentMachine.nThreadSleep)
|
||||
End If
|
||||
' riprovo ad eseguire il programma 900
|
||||
bOk = True
|
||||
bOk = bOk AndAlso (m_CN.Download_NC_prog(sCncPath, sNumProg) = 0)
|
||||
' Attesa opportuna
|
||||
System.Threading.Thread.Sleep(m_MainWindow.m_CurrentMachine.nThreadSleep)
|
||||
End If
|
||||
EgtOutLog("Nc Type : " & m_nNCType.ToString)
|
||||
' AXIUM (NUM OLD): se DripFeed non esegluo attivazione programma)
|
||||
' AXIUM (NUM OLD): se DripFeed non eseguo attivazione programma)
|
||||
If m_nNCType = 1 AndAlso m_CN.bIsDripFeed Then
|
||||
' eventauli cambi di stato sono trattati all'interno della funzione DownLoad_NC_prog
|
||||
Return True
|
||||
@@ -1652,7 +1676,7 @@ Public Class CNCommunication
|
||||
EgtOutLog(TimeSpanEnd())
|
||||
' Attesa opportuna
|
||||
System.Threading.Thread.Sleep(100)
|
||||
' Attivo la modalità AUTO prima per preparar il cyclo start
|
||||
' Attivo la modalità AUTO prima per preparare il cyclo start
|
||||
bOk = bOk AndAlso (m_CN.DGeneralFunctions_WriteCncMode(0) = 0)
|
||||
' Attesa opportuna
|
||||
System.Threading.Thread.Sleep(100)
|
||||
@@ -1675,6 +1699,56 @@ Public Class CNCommunication
|
||||
Return bOk
|
||||
End Function
|
||||
|
||||
Private Function SpecialSendProgram(sz_PC_filename As String, sz_NC_filename As String) As Boolean
|
||||
' Solo per Fanuc
|
||||
If m_nNCType <> 4 Then Return False
|
||||
' Indice base
|
||||
Dim nBase As Integer = 900
|
||||
' Ho possibilità di trasmettere in 4 aree consecutive (901, 902, 903 e 904)
|
||||
For I As Integer = 1 To 4
|
||||
' Leggo la variabile semaforo dell'area I-esima
|
||||
Dim nVal As Integer = -1
|
||||
Dim sVar As String = "#" & (nBase + I).ToString()
|
||||
EgtOutLog( "IndVar=" & sVar)
|
||||
For J As Integer = 1 To 20
|
||||
' Devo rileggere la variabile ad ogni ciclo
|
||||
m_CN.ReadEls_Add_Parameter(sVar, 3)
|
||||
System.Threading.Thread.Sleep(100)
|
||||
If m_CN.n_DReadELS_handle = 3 Then
|
||||
nVal = CInt(m_MainWindow.m_CNCommunication.m_CN.d_DReadELS_value)
|
||||
EgtOutLog( "Value=" & nVal.ToString())
|
||||
If nVal <> -1 Then
|
||||
Exit For
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
' Se posso trasmettere
|
||||
If nVal = 0 Then
|
||||
' Assegno numero di programma
|
||||
Dim sNumProg As String = "O0" & ( nBase + I).ToString()
|
||||
EgtOutLog( "NumProg=" & sNumProg)
|
||||
' Eseguo trasmissione
|
||||
Dim bOk As Boolean = ( m_CN.Download_NC_prog(sz_PC_filename, sNumProg) = 0)
|
||||
System.Threading.Thread.Sleep(100)
|
||||
EgtOutLog( "SendResult=" & bOk.ToString())
|
||||
' Se non riuscita riprovo
|
||||
If Not bOk Then
|
||||
bOk = ( m_CN.Download_NC_prog(sz_PC_filename, sNumProg) = 0)
|
||||
System.Threading.Thread.Sleep(100)
|
||||
EgtOutLog( "SecondSendResult=" & bOk.ToString())
|
||||
End If
|
||||
' Se andata a buon fine
|
||||
If bOk Then
|
||||
' Dichiaro programma trasmesso
|
||||
m_MainWindow.m_CNCommunication.m_CN.DVariables_WriteVariables2(sVar, "1")
|
||||
System.Threading.Thread.Sleep(100)
|
||||
Return True
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
Return False
|
||||
End Function
|
||||
|
||||
Private Sub GetSpecialCAxes()
|
||||
If m_CN.bCPos Then
|
||||
m_CN.d_axis_position(m_nA4) = m_CN.dCPos
|
||||
|
||||
+5
-1
@@ -1372,7 +1372,11 @@ Module M_Fanuc
|
||||
FileOpen(nFilew, szFileProgramma, OpenMode.Output)
|
||||
|
||||
' PrintLine(nFilew, "%" & vbLf & "<" & NomeSend & ">") ' !!!!!!!! da spostare
|
||||
PrintLine(nFilew, vbLf & "<" & NomeSend & ">") ' !!
|
||||
If NomeSend.StartsWith( "O") Then
|
||||
PrintLine(nFilew, vbLf & NomeSend) ' !!
|
||||
Else
|
||||
PrintLine(nFilew, vbLf & "<" & NomeSend & ">") ' !!
|
||||
End If
|
||||
|
||||
'trascrivo file tranne prima linea
|
||||
While (Not EOF(nFiler))
|
||||
|
||||
@@ -766,7 +766,8 @@ Public Class ProjectMgrUC
|
||||
End If
|
||||
|
||||
'------------------- INIZIO Avvio il Ciclo-Start-------------------------
|
||||
If GetPrivateProfileInt(S_GENERAL, K_STARTPROGRAM, 0, m_MainWindow.GetIniFile()) <> 0 Then
|
||||
If GetPrivateProfileInt(S_GENERAL, K_STARTPROGRAM, 0, m_MainWindow.GetIniFile()) <> 0 AndAlso
|
||||
( m_MainWindow.m_CNCommunication.m_nNCType <> 4 Or m_MainWindow.m_CNCommunication.SpecialSend <> 1) Then
|
||||
Dim MyCicloStartWD As New CicloStartWD(m_MainWindow)
|
||||
MyCicloStartWD.ShowDialog()
|
||||
End If
|
||||
|
||||
+32
-27
@@ -26,28 +26,19 @@ Public Class Camera
|
||||
Private m_bCalcContour As Boolean = False
|
||||
Private m_nCameraCount As Integer = 0
|
||||
Private m_sCameraPath As String = String.Empty
|
||||
'Private m_sCameraPath2 As String = String.Empty
|
||||
Private m_sCameraProcName As String = String.Empty
|
||||
'Private m_sCameraProcName2 As String = String.Empty
|
||||
Private m_sImage As String = String.Empty
|
||||
'Private m_sImage2 As String = String.Empty
|
||||
Private m_sInfo As String = String.Empty
|
||||
'Private m_sInfo2 As String = String.Empty
|
||||
Private m_sResult As String = String.Empty
|
||||
'Private m_sResult2 As String = String.Empty
|
||||
Private m_sContour As String = String.Empty
|
||||
'Private m_sContour2 As String = String.Empty
|
||||
Private m_nThreshold As Integer = 60
|
||||
Private m_dTolerance As Double = 5
|
||||
Private m_nTimeout As Integer = 30
|
||||
Private m_sImageDir As String = String.Empty
|
||||
|
||||
Private Const CAMERAMNG As String = "CameraMng"
|
||||
Private Const N_LOOP As Integer = 20
|
||||
|
||||
'Public m_ProcessCmg As New Process()
|
||||
|
||||
' Lista dei processi Cmg associati ad igni tavola
|
||||
' Lista dei processi Cmg associati ad ogni tavola
|
||||
Public m_ProcessCmgList As New List(Of Process)
|
||||
' restituisce lo stato che il processo associato alla tavola corrente (PrepareCamera)
|
||||
Private m_bIsRunnigProc As Boolean = False
|
||||
@@ -96,6 +87,8 @@ Public Class Camera
|
||||
(GetPrivateProfileInt(S_GENERAL, K_CONTOURFROMCAMERA, 1, m_MainWindow.GetIniFile()) <> 0)
|
||||
' Ricavo il nome del processo associato
|
||||
m_sCameraProcName = Path.GetFileNameWithoutExtension(m_sCameraPath)
|
||||
' Terminazione di eventuali processi omonimi in esecuzione
|
||||
KillPreviousProcesses()
|
||||
' Avvio processi del camera manager per ogni tavola
|
||||
CamerasHide()
|
||||
Return True
|
||||
@@ -104,7 +97,7 @@ Public Class Camera
|
||||
Public Function Close() As Boolean
|
||||
If m_bBusy Then Return False
|
||||
If m_bCameraLink Then
|
||||
KillProcess()
|
||||
KillProcesses()
|
||||
End If
|
||||
Return True
|
||||
End Function
|
||||
@@ -179,7 +172,7 @@ Public Class Camera
|
||||
' Indice di processo uguale all'indice della tavola
|
||||
nIndProc = nIndTab
|
||||
Case 1
|
||||
' Alla tavola 1 possono essre associati 2 processi (solo se camera Hq abilitata e attiva)
|
||||
' Alla tavola 1 possono essere associati 2 processi (solo se camera Hq abilitata e attiva)
|
||||
If nIndTab = 1 And
|
||||
(GetPrivateProfileInt(S_CAMERAHQ, K_CAMERAHQ_ENABLE, 0, m_MainWindow.GetMachIniFile()) <> 0) AndAlso
|
||||
(GetPrivateProfileInt(S_CAMERAHQ, K_CAMERAHQ_ACTIVATE, 0, m_MainWindow.GetMachIniFile()) <> 0) Then
|
||||
@@ -467,10 +460,12 @@ Public Class Camera
|
||||
GetPrivateProfileString(S_CAMERA, K_CAM_RESULT, "", m_sResult, m_MainWindow.GetIniFile())
|
||||
GetPrivateProfileString(S_CAMERA, K_CAM_CONTOUR, "", m_sContour, m_MainWindow.GetIniFile())
|
||||
|
||||
m_sImage = m_sImage.Replace(CAMERAMNG, CAMERAMNG & (nIndProc).ToString())
|
||||
m_sInfo = m_sInfo.Replace(CAMERAMNG, CAMERAMNG & (nIndProc).ToString())
|
||||
m_sResult = m_sResult.Replace(CAMERAMNG, CAMERAMNG & (nIndProc).ToString())
|
||||
m_sContour = m_sContour.Replace(CAMERAMNG, CAMERAMNG & (nIndProc).ToString())
|
||||
If nIndProc <> 1 Then
|
||||
m_sImage = m_sImage.Replace(m_sCameraProcName, m_sCameraProcName & (nIndProc).ToString())
|
||||
m_sInfo = m_sInfo.Replace(m_sCameraProcName, m_sCameraProcName & (nIndProc).ToString())
|
||||
m_sResult = m_sResult.Replace(m_sCameraProcName, m_sCameraProcName & (nIndProc).ToString())
|
||||
m_sContour = m_sContour.Replace(m_sCameraProcName, m_sCameraProcName & (nIndProc).ToString())
|
||||
End If
|
||||
|
||||
Return If(m_bIsRunnigProc, nIndProc, -1)
|
||||
End Function
|
||||
@@ -799,20 +794,30 @@ Public Class Camera
|
||||
Return bOk
|
||||
End Function
|
||||
|
||||
Private Function ProcessIsRunning() As Boolean
|
||||
' OK: chiudo tutti i processi di CameraMng in esecuzione prima dell'avvio
|
||||
Private Sub KillPreviousProcesses()
|
||||
If Not m_bCameraLink Then Return
|
||||
Dim Procs() As Process
|
||||
Procs = Process.GetProcessesByName(m_sCameraProcName)
|
||||
Return (Procs.Length() > 0)
|
||||
End Function
|
||||
For i As Integer = 0 To Procs.Count() - 1
|
||||
Try
|
||||
Procs(i).Kill()
|
||||
Procs(i).WaitForExit( 50)
|
||||
Catch Ex As Exception
|
||||
EgtOutLog(ex.Message())
|
||||
End Try
|
||||
Next
|
||||
End Sub
|
||||
|
||||
' OK: chiudo tutti i processi che hanno il nome CameraMng.exe
|
||||
Private Sub KillProcess()
|
||||
Dim Procs() As Process
|
||||
Procs = Process.GetProcessesByName(m_sCameraProcName)
|
||||
For i As Integer = 0 To Procs.Length() - 1
|
||||
Procs(i).Kill()
|
||||
Procs(i).WaitForExit(2000)
|
||||
Next i
|
||||
' OK: chiudo tutti i processi di CameraMng lanciati
|
||||
Private Sub KillProcesses()
|
||||
For i As Integer = 0 To m_ProcessCmgList.Count() - 1
|
||||
Try
|
||||
m_ProcessCmgList(i).Kill()
|
||||
Catch Ex As Exception
|
||||
EgtOutLog(ex.Message())
|
||||
End Try
|
||||
Next
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
|
||||
Reference in New Issue
Block a user