998 lines
49 KiB
VB.net
998 lines
49 KiB
VB.net
Imports CndexLinkDotNet
|
|
Imports Microsoft.Win32
|
|
Imports CMSControl.App.Runtime
|
|
Imports CMSControl.Config.Settings
|
|
|
|
Imports T_memType = System.Collections.Generic.Dictionary(Of System.Int32, System.Collections.Generic.Dictionary(Of System.Int32, System.Object))
|
|
Imports T_memDim = System.Collections.Generic.Dictionary(Of System.Int32, System.Object)
|
|
|
|
Namespace CNC
|
|
|
|
Public Class OSAI_OPEN
|
|
Inherits OSAI
|
|
|
|
'Variabili per Web Service OPENcontrol
|
|
Protected _szIpAddress As String
|
|
Friend OPENws As OPENcontrol.OPENcontrolPortTypeClient
|
|
Private nReturn As Short
|
|
|
|
Protected Const MAXRET = 3
|
|
|
|
Public Enum O_Table
|
|
TOOL_TABLE_ID = 1
|
|
OFFSET_TABLE_ID = 2
|
|
ORIGIN_TABLE_ID = 3
|
|
USER_TABLE_ID = 4
|
|
End Enum
|
|
|
|
Public Overrides Property Licenza() As Integer
|
|
Get
|
|
Dim uiLicence(0) As UInteger
|
|
'leggo dal cn il valore
|
|
Me.O_RW_DWord(R, MemTypeWord.GW_CODE, 303, uiLicence)
|
|
Return UnsignedToInteger(uiLicence(0))
|
|
End Get
|
|
Set(ByVal value As Integer)
|
|
'setto sul cn il valore
|
|
Dim uiLicence(0) As UInteger
|
|
uiLicence(0) = IntegerToUnsigned(value)
|
|
Me.O_RW_DWord(W, MemTypeWord.GW_CODE, 303, uiLicence)
|
|
End Set
|
|
End Property
|
|
|
|
Public Overrides Property LicenzaScaduta() As Boolean
|
|
Get
|
|
Dim bLicenzaScaduta As Boolean
|
|
'leggo dal cn il valore
|
|
Me.O_RW_Boolean(R, MemTypeWord.GW_CODE, 302, 0, bLicenzaScaduta)
|
|
Return bLicenzaScaduta
|
|
End Get
|
|
Set(ByVal value As Boolean)
|
|
'setto sul cn il valore
|
|
Me.O_RW_Boolean(W, MemTypeWord.GW_CODE, 302, 0, value)
|
|
End Set
|
|
End Property
|
|
|
|
Public Sub New(ByRef szIpAddress As String)
|
|
_Type = NcType.OSAI
|
|
_szIpAddress = szIpAddress
|
|
|
|
Dim conf As String = "OPENcontrol"
|
|
Dim url As String = "http://" & szIpAddress & ":8080"
|
|
|
|
Try
|
|
OPENws = New OPENcontrol.OPENcontrolPortTypeClient(conf, url)
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message)
|
|
End Try
|
|
|
|
'Definisco l'area della Cnc Window
|
|
SetCncWindowSize()
|
|
|
|
'Inizializzo le variabili
|
|
Me._Descrizione = "NC OSAI OPENcontrol" & vbNewLine
|
|
Me._Descrizione = Me._Descrizione & "IpAddress: " & _szIpAddress
|
|
End Sub
|
|
|
|
Public Overrides Sub Connect(Optional ByRef szStatus As String = "")
|
|
Dim BootPhaseEnquiryR As New OPENcontrol.BootPhaseEnquiryR
|
|
Dim BootPhaseEnquiry As OPENcontrol.BootPhaseEnquiry
|
|
Dim szReturn As String = ""
|
|
Dim usValue(0) As UShort
|
|
Dim TimeStart As Date
|
|
|
|
BootPhaseEnquiry = New OPENcontrol.BootPhaseEnquiry()
|
|
|
|
'leggo in che fase di boot mi trovo
|
|
Try
|
|
BootPhaseEnquiryR = OPENws.BootPhaseEnquiry(BootPhaseEnquiry)
|
|
Catch ex As System.ServiceModel.EndpointNotFoundException
|
|
_bConnected = False
|
|
Throw New CmsNcException(ex.Message)
|
|
Catch ex As System.ServiceModel.CommunicationException
|
|
_bConnected = False
|
|
Throw New CmsNcException(ex.Message)
|
|
End Try
|
|
|
|
If O_CheckRetError(BootPhaseEnquiryR.retval, BootPhaseEnquiryR.ErrClass, BootPhaseEnquiryR.ErrNum, String.Format("BootPhaseEnquiry({0}) Connect CNC.OSAI_OPEN", BootPhaseEnquiry), szReturn) Then
|
|
_bConnected = False
|
|
Throw New CmsNcException(szReturn)
|
|
Else
|
|
'verifico che il sistema si trovi in una fase operativa "stabile"
|
|
Log.WI("OK BootPhaseEnquiry CNC.OSAI_OPEN", "Phase=" & BootPhaseEnquiryR.Phase, CLog.Lev.Secondary)
|
|
If BootPhaseEnquiryR.Phase = 4 Then 'SYSTEM_UP_PHASE
|
|
|
|
'leggo matricola e verifico che sia diversa da zero
|
|
TimeStart = Now
|
|
Do
|
|
Select Case Settings.MemoryMapping
|
|
Case MemoryMapping.ElsManager, _
|
|
MemoryMapping.ToolManager
|
|
'Matricola
|
|
usValue(0) = 0 'non esiste mappatura elsmangaer e toolmanager in OPENcontrol
|
|
MsgBox("Non esiste implementazione con questa mappatura su OSAI OPENcontrol", MsgBoxStyle.Critical)
|
|
End
|
|
Case MemoryMapping.Default, _
|
|
MemoryMapping.ToolTable
|
|
'Matricola
|
|
nReturn = O_RW_Word(R, MemTypeWord.MW_CODE, 3403, usValue)
|
|
End Select
|
|
|
|
If usValue(0) > 0 Then
|
|
Threading.Thread.Sleep(500)
|
|
Exit Do
|
|
End If
|
|
|
|
If (Now - TimeStart).Seconds > 30 Then
|
|
Select Case MsgBox("Matricola non inizializzata in 30 secondi: Verificare inizializzazione PLC", MsgBoxStyle.Exclamation + MsgBoxStyle.RetryCancel)
|
|
Case MsgBoxResult.Retry : TimeStart = Now
|
|
Case MsgBoxResult.Cancel : Exit Do
|
|
End Select
|
|
End If
|
|
Log.WI("OK Connect CNC.OSAI_OPEN but SERIAL NUMBER NOT YET INITIALIZED", , CLog.Lev.Secondary)
|
|
Application.DoEvents()
|
|
Threading.Thread.Sleep(500) 'aspetto 500ms prima di ritentare
|
|
Application.DoEvents()
|
|
Loop
|
|
|
|
_bConnected = True
|
|
Log.WI("OK Connect CNC.OSAI_OPEN", "Connected=" & _bConnected, CLog.Lev.Secondary)
|
|
Else
|
|
_bConnected = False
|
|
Log.WI("OK Connect CNC.OSAI_OPEN but PHASE NOT OK", "Phase=" & BootPhaseEnquiryR.Phase & " Connected=" & _bConnected, CLog.Lev.Secondary)
|
|
Throw New CmsNcException("ERR BootPhase NOT OK CNC.OSAI_OPEN")
|
|
End If
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Overrides Sub Disconnect(Optional ByRef szStatus As String = "")
|
|
_bConnected = False
|
|
End Sub
|
|
|
|
|
|
|
|
''' <summary>
|
|
''' Legge le memorie di configurazione dal cn
|
|
''' </summary>
|
|
Public Overrides Sub GetStaticData()
|
|
Dim nValue(0) As Integer
|
|
Dim sValue(0) As Short
|
|
Dim ucValue(0) As Byte
|
|
|
|
If Not bStaticDataReaded Then
|
|
'Try
|
|
Select Case Settings.MemoryMapping
|
|
Case MemoryMapping.ElsManager
|
|
|
|
Case MemoryMapping.Default, _
|
|
MemoryMapping.ToolManager, _
|
|
MemoryMapping.ToolTable
|
|
|
|
'Matricola
|
|
nReturn = O_RW_Short(R, MemTypeWord.MW_CODE, 3403, sValue)
|
|
Me._Matricola = sValue(0)
|
|
'Teste
|
|
nReturn = O_RW_Short(R, MemTypeWord.MW_CODE, 3405, sValue)
|
|
Me._Teste = sValue(0)
|
|
'Magazzini
|
|
nReturn = O_RW_Short(R, MemTypeWord.MW_CODE, 3407, sValue)
|
|
Me._Magazzini = sValue(0)
|
|
'Manine per Magazzino
|
|
ReDim Me._ManineMagazzino(Me._Magazzini - 1)
|
|
ReDim ucValue(19)
|
|
nReturn = O_RW_Byte(R, MemTypeWord.MW_CODE, 2900, LOW_ORDER, ucValue)
|
|
Array.Copy(ucValue, Me._ManineMagazzino, Me._ManineMagazzino.Length)
|
|
ReDim ucValue(0)
|
|
|
|
'Magazzini Con Attrezzaggio Automatico (maschera)
|
|
O_RW_Integer(R, MemTypeWord.MW_CODE, 4060, nValue)
|
|
Me._MagazziniConAttrezzaggioAutomatico = nValue(0)
|
|
End Select
|
|
|
|
Me._MaxUtensiliGestibili = 300 'TODO IMPLEMENTARE
|
|
Me._MaxIdUtensile = 300 'TODO IMPLEMENTARE
|
|
|
|
Select Case Settings.MemoryMapping
|
|
Case MemoryMapping.ElsManager
|
|
Case MemoryMapping.ToolManager
|
|
Case MemoryMapping.Default, _
|
|
MemoryMapping.ToolTable
|
|
'ZoomSpeed
|
|
nReturn = O_RW_Short(R, MemTypeWord.MW_CODE, 3425, sValue)
|
|
If sValue(0) > 0 And sValue(0) <= 100 Then
|
|
Me._ZoomSpeed = sValue(0)
|
|
Else
|
|
Me._ZoomSpeed = 1
|
|
End If
|
|
End Select
|
|
|
|
bStaticDataReaded = True
|
|
|
|
'Catch ex As CmsNcException
|
|
' Me.CncException(ex.Message)
|
|
'End Try
|
|
|
|
End If
|
|
End Sub
|
|
|
|
|
|
''' <summary>
|
|
''' Legge o scrive Boolean da MEMORIE PLC
|
|
''' </summary>
|
|
''' <param name="bWrite">Se True SCRIVE, se False LEGGE</param>
|
|
''' <param name="MemType">Tipo di memoria Osai</param>
|
|
''' <param name="MemIndex">Indice di memoria</param>
|
|
''' <param name="MemBit">Bit della memoria</param>
|
|
''' <param name="Value">Valore da scrivere su scrittura e letto su lettura</param>
|
|
''' <returns>True se andata a buon fine</returns>
|
|
Public Overloads Overrides Function O_RW_Boolean(ByVal bWrite As Boolean, ByVal MemType As MemTypeWord, ByVal MemIndex As Integer, ByVal MemBit As Integer, ByRef Value As Boolean) As Boolean
|
|
Dim szReturn As String = ""
|
|
Dim nRetry As Integer
|
|
Retry: nRetry += 1
|
|
|
|
Try
|
|
If bWrite Then ' *** Write
|
|
Dim myWriteVarWordBitR As OPENcontrol.WriteVarWordBitR
|
|
Dim myWriteVarWordBit As New OPENcontrol.WriteVarWordBit
|
|
myWriteVarWordBit.Code = MemType
|
|
myWriteVarWordBit.Index = MemIndex
|
|
myWriteVarWordBit.BitIndex = MemBit
|
|
myWriteVarWordBit.BitValue = IIf(Value, 1, 0)
|
|
myWriteVarWordBitR = OPENws.WriteVarWordBit(myWriteVarWordBit)
|
|
If O_CheckRetError(myWriteVarWordBitR.retval, myWriteVarWordBitR.ErrClass, myWriteVarWordBitR.ErrNum, String.Format("WriteVarWordBit({0},{1}) O_RW_Boolean CNC.OSAI_OPEN", [Enum].GetName(MemType.GetType, MemType), MemIndex), szReturn) Then
|
|
Throw New CmsNcException(szReturn)
|
|
Return False
|
|
End If
|
|
|
|
Else ' ************* Read
|
|
Dim myReadVarWordR As OPENcontrol.ReadVarWordR
|
|
Dim myReadVarWord As New OPENcontrol.ReadVarWord
|
|
myReadVarWord.Code = MemType
|
|
myReadVarWord.Index = MemIndex
|
|
myReadVarWord.NumVar = 1
|
|
myReadVarWordR = OPENws.ReadVarWord(myReadVarWord)
|
|
If O_CheckRetError(myReadVarWordR.retval, myReadVarWordR.ErrClass, myReadVarWordR.ErrNum, String.Format("ReadVarWord({0},{1}) O_RW_Boolean CNC.OSAI_OPEN", [Enum].GetName(MemType.GetType, MemType), MemIndex), szReturn) Then
|
|
Throw New CmsNcException(szReturn)
|
|
Return False
|
|
End If
|
|
If (myReadVarWordR.Value(0) And (2 ^ MemBit)) = (2 ^ MemBit) Then 'True
|
|
Value = True
|
|
Else 'False
|
|
Value = False
|
|
End If
|
|
End If
|
|
|
|
Return True
|
|
Catch ex As System.ServiceModel.CommunicationException
|
|
If nRetry < MAXRET Then GoTo Retry
|
|
Throw New CmsNcException(ex.Message)
|
|
Return False
|
|
Catch ex As System.TimeoutException
|
|
Throw New CmsNcException(ex.Message)
|
|
Return False
|
|
End Try
|
|
End Function
|
|
|
|
''' <summary>
|
|
''' Legge o scrive Byte da MEMORIE PLC
|
|
''' </summary>
|
|
''' <param name="bWrite">Se True SCRIVE, se False LEGGE</param>
|
|
''' <param name="MemType">Tipo di memoria Osai</param>
|
|
''' <param name="MemIndex">Indice di memoria</param>
|
|
''' <param name="MemOrderStart">Ordine di partenza LOW_ORDER = 0 HIGH_ORDER = 1</param>
|
|
''' <param name="Value">Matrice di valori da scrivere su scrittura o letti su lettura</param>
|
|
''' <returns>True se andata a buon fine</returns>
|
|
Public Overloads Overrides Function O_RW_Byte(ByVal bWrite As Boolean, ByVal MemType As MemTypeWord, ByVal MemIndex As Integer, ByVal MemOrderStart As Integer, ByRef Value() As Byte) As Boolean
|
|
Dim szReturn As String = ""
|
|
Dim bStartHigh As Boolean = MemOrderStart
|
|
Dim bEndDispari As Boolean = (Value.Length + MemOrderStart) Mod 2
|
|
Dim cStart, cEnd As Byte
|
|
Dim ValueTmp(((Value.Length + MemOrderStart) \ 2) + ((Value.Length + MemOrderStart) Mod 2) - 1) As UShort
|
|
Dim nRetry As Integer
|
|
Retry: nRetry += 1
|
|
|
|
Try
|
|
If bWrite Then ' *** Write
|
|
'se comincio con hi leggo la prima memo
|
|
If bStartHigh Then
|
|
Dim ValStartTmp(0) As UShort
|
|
O_RW_Word(R, MemType, MemIndex, ValStartTmp)
|
|
cStart = WordToByte(ValStartTmp(0), LOW_ORDER)
|
|
End If
|
|
|
|
'se finisco dispari, leggo l'ultima memo
|
|
If bEndDispari Then
|
|
Dim ValEndTmp(0) As UShort
|
|
O_RW_Word(R, MemType, MemIndex + ValueTmp.Length - 1, ValEndTmp)
|
|
cEnd = WordToByte(ValEndTmp(0), HIGH_ORDER)
|
|
End If
|
|
|
|
For i = 0 To ValueTmp.Length - 1
|
|
Dim cLow, cHigh As Byte
|
|
'Low
|
|
If i = 0 AndAlso bStartHigh Then
|
|
cLow = cStart
|
|
Else
|
|
cLow = Value(i * 2 - MemOrderStart)
|
|
End If
|
|
'High
|
|
If i = (ValueTmp.Length - 1) AndAlso bEndDispari Then
|
|
cHigh = cEnd
|
|
Else
|
|
cHigh = Value(i * 2 + 1 - MemOrderStart)
|
|
End If
|
|
|
|
ValueTmp(i) = ByteToWord(cLow, cHigh)
|
|
Next
|
|
|
|
O_RW_Word(W, MemType, MemIndex, ValueTmp)
|
|
|
|
Else ' ************* Read
|
|
Dim myReadVarWordR As OPENcontrol.ReadVarWordR
|
|
Dim myReadVarWord As New OPENcontrol.ReadVarWord
|
|
myReadVarWord.Code = MemType
|
|
myReadVarWord.Index = MemIndex
|
|
myReadVarWord.NumVar = ValueTmp.Length
|
|
myReadVarWordR = OPENws.ReadVarWord(myReadVarWord)
|
|
If O_CheckRetError(myReadVarWordR.retval, myReadVarWordR.ErrClass, myReadVarWordR.ErrNum, String.Format("ReadVarWord({0},{1}) O_RW_Byte CNC.OSAI_OPEN", [Enum].GetName(MemType.GetType, MemType), MemIndex), szReturn) Then
|
|
Throw New CmsNcException(szReturn)
|
|
Return False
|
|
End If
|
|
For i = 0 To Value.Length - 1
|
|
Value(i) = WordToByte(myReadVarWordR.Value((i + MemOrderStart) \ 2), (i + MemOrderStart) Mod 2)
|
|
Next
|
|
End If
|
|
|
|
Return True
|
|
Catch ex As System.ServiceModel.CommunicationException
|
|
If nRetry < MAXRET Then GoTo Retry
|
|
Throw New CmsNcException(ex.Message)
|
|
Return False
|
|
Catch ex As System.TimeoutException
|
|
Throw New CmsNcException(ex.Message)
|
|
Return False
|
|
End Try
|
|
End Function
|
|
|
|
''' <summary>
|
|
''' Legge o scrive Word da MEMORIE PLC
|
|
''' </summary>
|
|
''' <param name="bWrite">Se True SCRIVE, se False LEGGE</param>
|
|
''' <param name="MemType">Tipo di memoria Osai</param>
|
|
''' <param name="MemIndex">Indice di memoria</param>
|
|
''' <param name="Value">Matrice di valori da scrivere su scrittura o letti su lettura</param>
|
|
''' <returns>True se andata a buon fine</returns>
|
|
Public Overloads Overrides Function O_RW_Word(ByVal bWrite As Boolean, ByVal MemType As MemTypeWord, ByVal MemIndex As Integer, ByRef Value() As UShort) As Boolean
|
|
Dim szReturn As String = ""
|
|
Dim nRetry As Integer
|
|
Retry: nRetry += 1
|
|
|
|
Try
|
|
If bWrite Then ' *** Write
|
|
Dim myWriteVarWordR As OPENcontrol.WriteVarWordR
|
|
Dim myWriteVarWord As New OPENcontrol.WriteVarWord
|
|
myWriteVarWord.Code = MemType
|
|
myWriteVarWord.Index = MemIndex
|
|
myWriteVarWord.NumVar = Value.Length
|
|
ReDim myWriteVarWord.Value(Value.Length - 1)
|
|
Array.Copy(Value, myWriteVarWord.Value, Value.Length)
|
|
myWriteVarWordR = OPENws.WriteVarWord(myWriteVarWord)
|
|
If O_CheckRetError(myWriteVarWordR.retval, myWriteVarWordR.ErrClass, myWriteVarWordR.ErrNum, String.Format("WriteVarWord({0},{1}) O_RW_Word CNC.OSAI_OPEN", [Enum].GetName(MemType.GetType, MemType), MemIndex), szReturn) Then
|
|
Throw New CmsNcException(szReturn)
|
|
Return False
|
|
End If
|
|
|
|
Else ' ************* Read
|
|
Dim myReadVarWordR As OPENcontrol.ReadVarWordR
|
|
Dim myReadVarWord As New OPENcontrol.ReadVarWord
|
|
myReadVarWord.Code = MemType
|
|
myReadVarWord.Index = MemIndex
|
|
myReadVarWord.NumVar = Value.Length
|
|
myReadVarWordR = OPENws.ReadVarWord(myReadVarWord)
|
|
If O_CheckRetError(myReadVarWordR.retval, myReadVarWordR.ErrClass, myReadVarWordR.ErrNum, String.Format("ReadVarWord({0},{1}) O_RW_Word CNC.OSAI_OPEN", [Enum].GetName(MemType.GetType, MemType), MemIndex), szReturn) Then
|
|
Throw New CmsNcException(szReturn)
|
|
Return False
|
|
End If
|
|
Array.Copy(myReadVarWordR.Value, Value, Value.Length)
|
|
End If
|
|
|
|
Return True
|
|
|
|
Catch ex As System.ServiceModel.CommunicationException
|
|
If nRetry < MAXRET Then GoTo Retry
|
|
Throw New CmsNcException(ex.Message)
|
|
Return False
|
|
Catch ex As System.TimeoutException
|
|
Throw New CmsNcException(ex.Message)
|
|
Return False
|
|
End Try
|
|
End Function
|
|
|
|
|
|
''' <summary>
|
|
''' Legge o scrive Short da MEMORIE PLC
|
|
''' </summary>
|
|
''' <param name="bWrite">Se True SCRIVE, se False LEGGE</param>
|
|
''' <param name="MemType">Tipo di memoria Osai</param>
|
|
''' <param name="MemIndex">Indice di memoria</param>
|
|
''' <param name="Value">Matrice di valori da scrivere su scrittura o letti su lettura</param>
|
|
''' <returns>True se andata a buon fine</returns>
|
|
Public Overloads Overrides Function O_RW_Short(ByVal bWrite As Boolean, ByVal MemType As MemTypeWord, ByVal MemIndex As Integer, ByRef Value() As Short) As Boolean
|
|
Dim szReturn As String = ""
|
|
Dim nRetry As Integer
|
|
Retry: nRetry += 1
|
|
|
|
Try
|
|
If bWrite Then ' *** Write
|
|
Dim myWriteVarWordR As OPENcontrol.WriteVarWordR
|
|
Dim myWriteVarWord As New OPENcontrol.WriteVarWord
|
|
myWriteVarWord.Code = MemType
|
|
myWriteVarWord.Index = MemIndex
|
|
myWriteVarWord.NumVar = Value.Length
|
|
ReDim myWriteVarWord.Value(Value.Length - 1)
|
|
For i = 0 To Value.Length - 1
|
|
myWriteVarWord.Value(i) = ShortToUnsigned(Value(i))
|
|
Next
|
|
myWriteVarWordR = OPENws.WriteVarWord(myWriteVarWord)
|
|
If O_CheckRetError(myWriteVarWordR.retval, myWriteVarWordR.ErrClass, myWriteVarWordR.ErrNum, String.Format("WriteVarWord({0},{1}) O_RW_Short CNC.OSAI_OPEN", [Enum].GetName(MemType.GetType, MemType), MemIndex), szReturn) Then
|
|
Throw New CmsNcException(szReturn)
|
|
Return False
|
|
End If
|
|
|
|
Else ' ************* Read
|
|
Dim myReadVarWordR As OPENcontrol.ReadVarWordR
|
|
Dim myReadVarWord As New OPENcontrol.ReadVarWord
|
|
myReadVarWord.Code = MemType
|
|
myReadVarWord.Index = MemIndex
|
|
myReadVarWord.NumVar = Value.Length
|
|
myReadVarWordR = OPENws.ReadVarWord(myReadVarWord)
|
|
If O_CheckRetError(myReadVarWordR.retval, myReadVarWordR.ErrClass, myReadVarWordR.ErrNum, String.Format("ReadVarWord({0},{1}) O_RW_Short CNC.OSAI_OPEN", [Enum].GetName(MemType.GetType, MemType), MemIndex), szReturn) Then
|
|
Throw New CmsNcException(szReturn)
|
|
Return False
|
|
End If
|
|
For i = 0 To Value.Length - 1
|
|
Value(i) = UnsignedToShort(myReadVarWordR.Value(i))
|
|
Next
|
|
End If
|
|
Return True
|
|
Catch ex As System.ServiceModel.CommunicationException
|
|
If nRetry < MAXRET Then GoTo Retry
|
|
Throw New CmsNcException(ex.Message)
|
|
Return False
|
|
Catch ex As System.TimeoutException
|
|
Throw New CmsNcException(ex.Message)
|
|
Return False
|
|
End Try
|
|
End Function
|
|
|
|
|
|
''' <summary>
|
|
''' Legge o scrive Integer da MEMORIE PLC
|
|
''' </summary>
|
|
''' <param name="bWrite">Se True SCRIVE, se False LEGGE</param>
|
|
''' <param name="MemType">Tipo di memoria Osai</param>
|
|
''' <param name="MemIndex">Indice di memoria</param>
|
|
''' <param name="Value">Matrice di valori da scrivere su scrittura o letti su lettura</param>
|
|
''' <returns>True se andata a buon fine</returns>
|
|
Public Overloads Overrides Function O_RW_DWord(ByVal bWrite As Boolean, ByVal MemType As MemTypeWord, ByVal MemIndex As Integer, ByRef Value() As UInteger) As Boolean
|
|
Dim szReturn As String = ""
|
|
Dim ValueTmp(Value.Length * 2 - 1) As UShort
|
|
Dim nRetry As Integer
|
|
Retry: nRetry += 1
|
|
|
|
Try
|
|
If bWrite Then ' *** Write
|
|
Dim myWriteVarWordR As OPENcontrol.WriteVarWordR
|
|
Dim myWriteVarWord As New OPENcontrol.WriteVarWord
|
|
myWriteVarWord.Code = MemType
|
|
myWriteVarWord.Index = MemIndex
|
|
myWriteVarWord.NumVar = ValueTmp.Length
|
|
For i = 0 To Value.Length - 1
|
|
ValueTmp(i * 2) = DWordToWord(Value(i), LOW_ORDER)
|
|
ValueTmp(i * 2 + 1) = DWordToWord(Value(i), HIGH_ORDER)
|
|
Next
|
|
ReDim myWriteVarWord.Value(ValueTmp.Length - 1)
|
|
Array.Copy(ValueTmp, myWriteVarWord.Value, ValueTmp.Length)
|
|
myWriteVarWordR = OPENws.WriteVarWord(myWriteVarWord)
|
|
If O_CheckRetError(myWriteVarWordR.retval, myWriteVarWordR.ErrClass, myWriteVarWordR.ErrNum, String.Format("WriteVarWord({0},{1}) O_RW_DWord CNC.OSAI_OPEN", [Enum].GetName(MemType.GetType, MemType), MemIndex), szReturn) Then
|
|
Throw New CmsNcException(szReturn)
|
|
Return False
|
|
End If
|
|
|
|
Else ' ************* Read
|
|
Dim myReadVarWordR As OPENcontrol.ReadVarWordR
|
|
Dim myReadVarWord As New OPENcontrol.ReadVarWord
|
|
myReadVarWord.Code = MemType
|
|
myReadVarWord.Index = MemIndex
|
|
myReadVarWord.NumVar = ValueTmp.Length
|
|
myReadVarWordR = OPENws.ReadVarWord(myReadVarWord)
|
|
If O_CheckRetError(myReadVarWordR.retval, myReadVarWordR.ErrClass, myReadVarWordR.ErrNum, String.Format("ReadVarWord({0},{1}) O_RW_DWord CNC.OSAI_OPEN", [Enum].GetName(MemType.GetType, MemType), MemIndex), szReturn) Then
|
|
Throw New CmsNcException(szReturn)
|
|
Return False
|
|
Else
|
|
For i = 0 To Value.Length - 1
|
|
Value(i) = WordsToDWord(myReadVarWordR.Value(i * 2), myReadVarWordR.Value(i * 2 + 1))
|
|
Next
|
|
End If
|
|
End If
|
|
|
|
Return True
|
|
Catch ex As System.ServiceModel.CommunicationException
|
|
If nRetry < MAXRET Then GoTo Retry
|
|
Throw New CmsNcException(ex.Message)
|
|
Return False
|
|
Catch ex As System.TimeoutException
|
|
Throw New CmsNcException(ex.Message)
|
|
Return False
|
|
End Try
|
|
End Function
|
|
|
|
|
|
''' <summary>
|
|
''' Legge o scrive Integer da MEMORIE PLC
|
|
''' </summary>
|
|
''' <param name="bWrite">Se True SCRIVE, se False LEGGE</param>
|
|
''' <param name="MemType">Tipo di memoria Osai</param>
|
|
''' <param name="MemIndex">Indice di memoria</param>
|
|
''' <param name="Value">Matrice di valori da scrivere su scrittura o letti su lettura</param>
|
|
''' <returns>True se andata a buon fine</returns>
|
|
Public Overloads Overrides Function O_RW_Integer(ByVal bWrite As Boolean, ByVal MemType As MemTypeWord, ByVal MemIndex As Integer, ByRef Value() As Integer) As Boolean
|
|
Dim szReturn As String = ""
|
|
Dim ValueTmp(Value.Length * 2 - 1) As UShort
|
|
Dim nRetry As Integer
|
|
Retry: nRetry += 1
|
|
|
|
Try
|
|
If bWrite Then ' *** Write
|
|
Dim myWriteVarWordR As OPENcontrol.WriteVarWordR
|
|
Dim myWriteVarWord As New OPENcontrol.WriteVarWord
|
|
myWriteVarWord.Code = MemType
|
|
myWriteVarWord.Index = MemIndex
|
|
myWriteVarWord.NumVar = ValueTmp.Length
|
|
For i = 0 To Value.Length - 1
|
|
ValueTmp(i * 2) = IntegerToWord(Value(i), LOW_ORDER)
|
|
ValueTmp(i * 2 + 1) = IntegerToWord(Value(i), HIGH_ORDER)
|
|
Next
|
|
ReDim myWriteVarWord.Value(ValueTmp.Length - 1)
|
|
Array.Copy(ValueTmp, myWriteVarWord.Value, ValueTmp.Length)
|
|
myWriteVarWordR = OPENws.WriteVarWord(myWriteVarWord)
|
|
If O_CheckRetError(myWriteVarWordR.retval, myWriteVarWordR.ErrClass, myWriteVarWordR.ErrNum, String.Format("WriteVarDWord({0},{1}) O_RW_DWord CNC.OSAI_OPEN", [Enum].GetName(MemType.GetType, MemType), MemIndex), szReturn) Then
|
|
Throw New CmsNcException(szReturn)
|
|
Return False
|
|
End If
|
|
|
|
Else ' ************* Read
|
|
Dim myReadVarWordR As OPENcontrol.ReadVarWordR
|
|
Dim myReadVarWord As New OPENcontrol.ReadVarWord
|
|
myReadVarWord.Code = MemType
|
|
myReadVarWord.Index = MemIndex
|
|
myReadVarWord.NumVar = ValueTmp.Length
|
|
myReadVarWordR = OPENws.ReadVarWord(myReadVarWord)
|
|
If O_CheckRetError(myReadVarWordR.retval, myReadVarWordR.ErrClass, myReadVarWordR.ErrNum, String.Format("ReadVarDWord({0},{1}) O_RW_DWord CNC.OSAI_OPEN", [Enum].GetName(MemType.GetType, MemType), MemIndex), szReturn) Then
|
|
Throw New CmsNcException(szReturn)
|
|
Return False
|
|
Else
|
|
For i = 0 To Value.Length - 1
|
|
Value(i) = WordsToInteger(myReadVarWordR.Value(i * 2), myReadVarWordR.Value(i * 2 + 1))
|
|
Next
|
|
End If
|
|
End If
|
|
|
|
Return True
|
|
Catch ex As System.ServiceModel.CommunicationException
|
|
If nRetry < MAXRET Then GoTo Retry
|
|
Throw New CmsNcException(ex.Message)
|
|
Return False
|
|
Catch ex As System.TimeoutException
|
|
Throw New CmsNcException(ex.Message)
|
|
Return False
|
|
End Try
|
|
End Function
|
|
|
|
''' <summary>
|
|
''' Legge o scrive Double da MEMORIE PLC
|
|
''' </summary>
|
|
''' <param name="bWrite">Se True SCRIVE, se False LEGGE</param>
|
|
''' <param name="MemType">Tipo di memoria Osai</param>
|
|
''' <param name="MemIndex">Indice di memoria</param>
|
|
''' <param name="Value">Matrice di valori da scrivere su scrittura o letti su lettura</param>
|
|
''' <returns>True se andata a buon fine</returns>
|
|
Public Overloads Overrides Function O_RW_Double(ByVal bWrite As Boolean, ByVal MemType As MemTypeDouble, ByVal MemIndex As Integer, ByRef Value() As Double) As Boolean
|
|
Dim szReturn As String = ""
|
|
Dim nRetry As Integer
|
|
Retry: nRetry += 1
|
|
|
|
Try
|
|
If bWrite Then ' *** Write
|
|
Dim myWriteVarDoubleR As OPENcontrol.WriteVarDoubleR
|
|
Dim myWriteVarDouble As New OPENcontrol.WriteVarDouble
|
|
myWriteVarDouble.Code = MemType
|
|
myWriteVarDouble.Index = MemIndex
|
|
myWriteVarDouble.NumVar = Value.Length
|
|
ReDim myWriteVarDouble.Value(Value.Length - 1)
|
|
Array.Copy(Value, myWriteVarDouble.Value, Value.Length)
|
|
myWriteVarDoubleR = OPENws.WriteVarDouble(myWriteVarDouble)
|
|
If O_CheckRetError(myWriteVarDoubleR.retval, myWriteVarDoubleR.ErrClass, myWriteVarDoubleR.ErrNum, String.Format("WriteVarDouble({0},{1}) O_RW_Double CNC.OSAI_OPEN", [Enum].GetName(MemType.GetType, MemType), MemIndex), szReturn) Then
|
|
Throw New CmsNcException(szReturn)
|
|
Return False
|
|
End If
|
|
|
|
Else ' ************* Read
|
|
Dim myReadVarDoubleR As OPENcontrol.ReadVarDoubleR
|
|
Dim myReadVarDouble As New OPENcontrol.ReadVarDouble
|
|
myReadVarDouble.Code = MemType
|
|
myReadVarDouble.Index = MemIndex
|
|
myReadVarDouble.NumVar = Value.Length
|
|
myReadVarDoubleR = OPENws.ReadVarDouble(myReadVarDouble)
|
|
If O_CheckRetError(myReadVarDoubleR.retval, myReadVarDoubleR.ErrClass, myReadVarDoubleR.ErrNum, String.Format("ReadVarDouble({0},{1}) O_RW_Double CNC.OSAI_OPEN", [Enum].GetName(MemType.GetType, MemType), MemIndex), szReturn) Then
|
|
Throw New CmsNcException(szReturn)
|
|
Return False
|
|
End If
|
|
Array.Copy(myReadVarDoubleR.Value, Value, Value.Length)
|
|
End If
|
|
|
|
Return True
|
|
Catch ex As System.ServiceModel.CommunicationException
|
|
If nRetry < MAXRET Then GoTo Retry
|
|
Throw New CmsNcException(ex.Message)
|
|
Return False
|
|
Catch ex As System.TimeoutException
|
|
Throw New CmsNcException(ex.Message)
|
|
Return False
|
|
End Try
|
|
End Function
|
|
|
|
''' <summary>
|
|
''' Legge o scrive Stringhe da MEMORIE SC
|
|
''' </summary>
|
|
''' <param name="bWrite">Se True SCRIVE, se False LEGGE</param>
|
|
''' <param name="MemIndex">Indice di memoria</param>
|
|
''' <param name="MemLength">Lunghezza caratteri</param>
|
|
''' <param name="Value">Stringa da scrivere su scrittura o leggere su lettura</param>
|
|
''' <returns>True se andata a buon fine</returns>
|
|
Public Overloads Overrides Function O_RW_Text(ByVal bWrite As Boolean, ByVal MemType As MemTypeText, ByVal MemIndex As Integer, ByVal MemLength As Integer, ByRef Value As String) As Boolean
|
|
Dim szReturn As String = ""
|
|
Dim nRetry As Integer
|
|
Retry: nRetry += 1
|
|
|
|
Try
|
|
If bWrite Then ' *** Write
|
|
Dim myWriteVarTextR As OPENcontrol.WriteVarTextR
|
|
Dim myWriteVarText As New OPENcontrol.WriteVarText
|
|
myWriteVarText.Code = MemType
|
|
myWriteVarText.Index = MemIndex
|
|
myWriteVarText.Len = MemLength
|
|
myWriteVarText.Text = Value
|
|
myWriteVarText.Process = 1 'serve per le variabili SC
|
|
myWriteVarTextR = OPENws.WriteVarText(myWriteVarText)
|
|
If O_CheckRetError(myWriteVarTextR.retval, myWriteVarTextR.ErrClass, myWriteVarTextR.ErrNum, String.Format("WriteVarText({0},{1}) O_RW_Text CNC.OSAI_OPEN", [Enum].GetName(MemType.GetType, MemType), MemIndex), szReturn) Then
|
|
Throw New CmsNcException(szReturn)
|
|
Return False
|
|
End If
|
|
|
|
Else ' ************* Read
|
|
Dim myReadVarTextR As OPENcontrol.ReadVarTextR
|
|
Dim myReadVarText As New OPENcontrol.ReadVarText
|
|
myReadVarText.Code = MemType
|
|
myReadVarText.Index = MemIndex
|
|
myReadVarText.Size = MemLength
|
|
myReadVarText.Process = 1 'serve per le variabili SC
|
|
myReadVarTextR = OPENws.ReadVarText(myReadVarText)
|
|
If O_CheckRetError(myReadVarTextR.retval, myReadVarTextR.ErrClass, myReadVarTextR.ErrNum, String.Format("ReadVarText({0},{1}) O_RW_Text CNC.OSAI_OPEN", [Enum].GetName(MemType.GetType, MemType), MemIndex), szReturn) Then
|
|
Throw New CmsNcException(szReturn)
|
|
Return False
|
|
End If
|
|
Value = myReadVarTextR.Text
|
|
End If
|
|
Catch ex As System.ServiceModel.CommunicationException
|
|
If nRetry < MAXRET Then GoTo Retry
|
|
Throw New CmsNcException(ex.Message)
|
|
Return False
|
|
Catch ex As System.TimeoutException
|
|
Throw New CmsNcException(ex.Message)
|
|
Return False
|
|
End Try
|
|
End Function
|
|
|
|
|
|
|
|
''' <summary>
|
|
''' Legge o scrive Length and Radius Offset da tabella Utensili CN
|
|
''' </summary>
|
|
''' <param name="bWrite">Se True SCRIVE, se False LEGGE</param>
|
|
''' <param name="ToolOffsetNumber">Numero dell'offset utensile</param>
|
|
Public Overrides Function O_RW_ToolOffset(ByVal bWrite As Boolean, ByVal ToolOffsetNumber As Integer, ByRef CutterRadius_Wear As Double, ByRef CutterRadius_Geometry As Double, ByRef ToolLenght_Wear As Double, ByRef ToolLenght_Geometry As Double) As Boolean
|
|
Dim szReturn As String = ""
|
|
Dim nRetry As Integer
|
|
Retry: nRetry += 1
|
|
|
|
Try
|
|
If bWrite Then ' *** Write
|
|
'leggo il correttore per usarlo come template
|
|
Dim myGetOffsetTabRecordIIR As OPENcontrol.GetOffsetTabRecordIIR
|
|
Dim myGetOffsetTabRecordII As New OPENcontrol.GetOffsetTabRecordII
|
|
myGetOffsetTabRecordII.RecordNum = ToolOffsetNumber
|
|
myGetOffsetTabRecordIIR = OPENws.GetOffsetTabRecordII(myGetOffsetTabRecordII)
|
|
If O_CheckRetError(myGetOffsetTabRecordIIR.retval, myGetOffsetTabRecordIIR.ErrClass, myGetOffsetTabRecordIIR.ErrNum, String.Format("GetOffsetTabRecordII({0}) O_RW_ToolOffset CNC.OSAI_OPEN", ToolOffsetNumber), szReturn) Then
|
|
Throw New CmsNcException(szReturn)
|
|
Return False
|
|
End If
|
|
|
|
Dim mySetOffsetTabRecordIIR As OPENcontrol.SetOffsetTabRecordIIR
|
|
Dim mySetOffsetTabRecordII As New OPENcontrol.SetOffsetTabRecordII
|
|
mySetOffsetTabRecordII.RecordNum = ToolOffsetNumber
|
|
mySetOffsetTabRecordII.RecordBuff = myGetOffsetTabRecordIIR.RecordBuff
|
|
'modifico i valori che mi interesssano
|
|
mySetOffsetTabRecordII.RecordBuff.DiaVal(0).ActChangeVal = CutterRadius_Wear
|
|
mySetOffsetTabRecordII.RecordBuff.DiaVal(0).ValOrig = CutterRadius_Geometry
|
|
mySetOffsetTabRecordII.RecordBuff.LenVal(0).ActChangeVal = ToolLenght_Wear
|
|
mySetOffsetTabRecordII.RecordBuff.LenVal(0).ValOrig = ToolLenght_Geometry
|
|
|
|
'scrivo il correttore
|
|
mySetOffsetTabRecordIIR = OPENws.SetOffsetTabRecordII(mySetOffsetTabRecordII)
|
|
If O_CheckRetError(mySetOffsetTabRecordIIR.retval, mySetOffsetTabRecordIIR.ErrClass, mySetOffsetTabRecordIIR.ErrNum, String.Format("SetOffsetTabRecordII({0}) O_RW_ToolOffset CNC.OSAI_OPEN", ToolOffsetNumber), szReturn) Then
|
|
Throw New CmsNcException(szReturn)
|
|
Return False
|
|
End If
|
|
|
|
Else ' ************* Read
|
|
Dim myGetOffsetTabRecordIIR As OPENcontrol.GetOffsetTabRecordIIR
|
|
Dim myGetOffsetTabRecordII As New OPENcontrol.GetOffsetTabRecordII
|
|
myGetOffsetTabRecordII.RecordNum = ToolOffsetNumber
|
|
myGetOffsetTabRecordIIR = OPENws.GetOffsetTabRecordII(myGetOffsetTabRecordII)
|
|
If O_CheckRetError(myGetOffsetTabRecordIIR.retval, myGetOffsetTabRecordIIR.ErrClass, myGetOffsetTabRecordIIR.ErrNum, String.Format("GetOffsetTabRecordII({0}) O_RW_ToolOffset CNC.OSAI_OPEN", ToolOffsetNumber), szReturn) Then
|
|
Throw New CmsNcException(szReturn)
|
|
Return False
|
|
End If
|
|
|
|
CutterRadius_Wear = myGetOffsetTabRecordIIR.RecordBuff.DiaVal(0).ActChangeVal
|
|
CutterRadius_Geometry = myGetOffsetTabRecordIIR.RecordBuff.DiaVal(0).ValOrig
|
|
ToolLenght_Wear = myGetOffsetTabRecordIIR.RecordBuff.LenVal(0).ActChangeVal
|
|
ToolLenght_Geometry = myGetOffsetTabRecordIIR.RecordBuff.LenVal(0).ValOrig
|
|
End If
|
|
Catch ex As System.ServiceModel.CommunicationException
|
|
If nRetry < MAXRET Then GoTo Retry
|
|
Throw New CmsNcException(ex.Message)
|
|
Return False
|
|
End Try
|
|
|
|
|
|
|
|
'Dim iodbpsd_1 As Focas1.IODBPSD_1
|
|
'Dim odbtofs As Focas1.ODBTOFS
|
|
'Dim nReturn As Integer
|
|
'Dim bNcInInch As Boolean
|
|
'Dim bTtInInch As Boolean
|
|
'Dim valid_fig As Short
|
|
'Dim dec_fig_in(31) As Short
|
|
'Dim dec_fig_out(31) As Short
|
|
|
|
'iodbpsd_1 = New Focas1.IODBPSD_1
|
|
'odbtofs = New Focas1.ODBTOFS
|
|
|
|
''Leggo se il CN è impostato in Inch (parametro 0.2)
|
|
'nReturn = Focas1.cnc_rdparam(nLibHandle(1), 0, 0, 4 + 1, iodbpsd_1)
|
|
'If F_CheckRetError_Cnc(nReturn, "cnc_rdparam F_RW_LengthOffset CNC.FANUC") Then
|
|
' Throw New CmsNcException("ERR cnc_rdparam F_RW_LengthOffset CNC.FANUC")
|
|
'End If
|
|
'bNcInInch = (iodbpsd_1.cdata And MASK_BIT2) = MASK_BIT2
|
|
|
|
''Leggo se ToolTable è impostato in Inch
|
|
'bTtInInch = Config.Options.CurrentOptions.ToolTable_Inch
|
|
|
|
''leggo le cifre decimali
|
|
'nReturn = Focas1.cnc_getfigure(nLibHandle(1), 1, valid_fig, dec_fig_in, dec_fig_out)
|
|
'If F_CheckRetError_Cnc(nReturn, "cnc_getfigure F_RW_LengthOffset CNC.FANUC") Then
|
|
' Throw New CmsNcException("ERR cnc_getfigure F_RW_LengthOffset CNC.FANUC")
|
|
'End If
|
|
|
|
'If bWrite Then ' *** Write
|
|
' For i = 0 To 3
|
|
' Dim dblTmp As Double
|
|
' Dim nTmp As Integer
|
|
' Select Case i
|
|
' Case 0 : dblTmp = CutterRadius_Wear
|
|
' Case 1 : dblTmp = CutterRadius_Geometry
|
|
' Case 2 : dblTmp = ToolLenght_Wear
|
|
' Case 3 : dblTmp = ToolLenght_Geometry
|
|
' End Select
|
|
' 'moltiplico per le cifre decimali
|
|
' dblTmp *= 10 ^ dec_fig_in(0)
|
|
' 'riporto all'unità di misura di Nc
|
|
' If bNcInInch And Not bTtInInch Then
|
|
' nTmp = dblTmp / 25.4
|
|
' ElseIf Not bNcInInch And bTtInInch Then
|
|
' nTmp = dblTmp * 25.4
|
|
' Else
|
|
' nTmp = dblTmp
|
|
' End If
|
|
' nReturn = Focas1.cnc_wrtofs(nLibHandle(1), ToolOffsetNumber, i, 8, nTmp)
|
|
' If F_CheckRetError_Pmc(nReturn, "cnc_wrtofs F_RW_ToolOffset CNC.FANUC") Then
|
|
' Throw New CmsNcException("ERR cnc_wrtofs F_RW_ToolOffset CNC.FANUC")
|
|
' End If
|
|
' Next
|
|
|
|
'Else ' ************* Read
|
|
' For i = 0 To 3
|
|
' nReturn = Focas1.cnc_rdtofs(nLibHandle(1), ToolOffsetNumber, i, 8, odbtofs)
|
|
' If F_CheckRetError_Pmc(nReturn, "cnc_rdtofs F_RW_ToolOffset CNC.FANUC") OrElse (odbtofs.datano <> ToolOffsetNumber Or odbtofs.type <> i) Then
|
|
' Throw New CmsNcException("ERR cnc_rdtofs F_RW_ToolOffset CNC.FANUC")
|
|
' Else
|
|
' Dim dblTmp As Double
|
|
' 'riporto all'unità di misura di ToolTable
|
|
' If bNcInInch And Not bTtInInch Then
|
|
' dblTmp = odbtofs.data * 25.4
|
|
' ElseIf Not bNcInInch And bTtInInch Then
|
|
' dblTmp = odbtofs.data / 25.4
|
|
' Else
|
|
' dblTmp = odbtofs.data
|
|
' End If
|
|
' 'divido per le cifre decimali
|
|
' dblTmp /= 10 ^ dec_fig_in(0)
|
|
' 'memorizzo il dato
|
|
' Select Case i
|
|
' Case 0 : CutterRadius_Wear = dblTmp
|
|
' Case 1 : CutterRadius_Geometry = dblTmp
|
|
' Case 2 : ToolLenght_Wear = dblTmp
|
|
' Case 3 : ToolLenght_Geometry = dblTmp
|
|
' End Select
|
|
' End If
|
|
' Next
|
|
|
|
'End If
|
|
|
|
End Function
|
|
|
|
''' <summary>
|
|
''' Blocca l'accesso alla tabella dei correttori
|
|
''' </summary>
|
|
''' <param name="Lock">=True: Blocca la tabella, =False: Sblocca la tabella</param>
|
|
''' <returns>True se andata a buon fine</returns>
|
|
Public Overrides Function O_LockOffsetTable(ByVal Lock As Boolean) As Boolean
|
|
Static bLocked As Boolean
|
|
Dim szReturn As String = ""
|
|
Dim nRetry As Integer
|
|
Retry: nRetry += 1
|
|
|
|
Try
|
|
If Lock Then
|
|
If Not bLocked Then
|
|
Dim myLockTableIIR As OPENcontrol.LockTableIIR
|
|
Dim myLockTableII As New OPENcontrol.LockTableII
|
|
myLockTableII.TableNum = O_Table.OFFSET_TABLE_ID
|
|
myLockTableIIR = OPENws.LockTableII(myLockTableII)
|
|
If O_CheckRetError(myLockTableIIR.retval, myLockTableIIR.ErrClass, myLockTableIIR.ErrNum, String.Format("LockTableII({0}) O_LockOffsetTable CNC.OSAI_OPEN", myLockTableII.TableNum), szReturn) Then
|
|
'Throw New CmsNcException(szReturn)
|
|
Return False
|
|
End If
|
|
bLocked = True
|
|
End If
|
|
Else
|
|
Dim myUnLockTableIIR As OPENcontrol.UnLockTableIIR
|
|
Dim myUnLockTableII As New OPENcontrol.UnLockTableII
|
|
myUnLockTableII.TableNum = O_Table.OFFSET_TABLE_ID
|
|
myUnLockTableIIR = OPENws.UnLockTableII(myUnLockTableII)
|
|
If O_CheckRetError(myUnLockTableIIR.retval, myUnLockTableIIR.ErrClass, myUnLockTableIIR.ErrNum, String.Format("UnLockTableII({0}) O_LockOffsetTable CNC.OSAI_OPEN", myUnLockTableII.TableNum), szReturn) Then
|
|
'Throw New CmsNcException(szReturn)
|
|
Return False
|
|
End If
|
|
bLocked = False
|
|
End If
|
|
Return True
|
|
Catch ex As System.ServiceModel.CommunicationException
|
|
If nRetry < MAXRET Then GoTo Retry
|
|
Throw New CmsNcException(ex.Message)
|
|
Return False
|
|
End Try
|
|
End Function
|
|
|
|
|
|
''' <summary>
|
|
''' Legge il numero del processo attivo
|
|
''' </summary>
|
|
''' <param name="ProcessId">Valore di ritorno del processo selezionato</param>
|
|
''' <returns>True se andata a buon fine</returns>
|
|
Public Overloads Overrides Function O_GetSelectedProcess(ByRef ProcessId As Short) As Boolean
|
|
Dim szReturn As String = ""
|
|
Dim myGetSelectedProcessR As OPENcontrol.GetSelectedProcessR
|
|
Dim myGetSelectedProcess As New OPENcontrol.GetSelectedProcess
|
|
Dim nRetry As Integer
|
|
Retry: nRetry += 1
|
|
|
|
Try
|
|
myGetSelectedProcessR = OPENws.GetSelectedProcess(myGetSelectedProcess)
|
|
If O_CheckRetError(myGetSelectedProcessR.retval, myGetSelectedProcessR.ErrClass, myGetSelectedProcessR.ErrNum, "GetSelectedProcess() O_GetSelectedProcess CNC.OSAI_OPEN", szReturn) Then
|
|
Throw New CmsNcException(szReturn)
|
|
Return False
|
|
End If
|
|
|
|
ProcessId = UnsignedToShort(myGetSelectedProcessR.ProcNum)
|
|
Return True
|
|
Catch ex As System.ServiceModel.CommunicationException
|
|
If nRetry < MAXRET Then GoTo Retry
|
|
Throw New CmsNcException(ex.Message)
|
|
Return False
|
|
End Try
|
|
End Function
|
|
|
|
''' <summary>
|
|
''' Legge la riga del programma attivo
|
|
''' </summary>
|
|
''' <param name="Line">Riga in esecuzione del programma attivo</param>
|
|
''' <returns>True se andata a buon fine</returns>
|
|
Public Overloads Overrides Function O_GetActiveLineProgram(ByRef Line As String) As Boolean
|
|
Dim szReturn As String = ""
|
|
Dim myGetPartProgramLinesR As OPENcontrol.GetPartProgramLinesR
|
|
Dim myGetPartProgramLines As New OPENcontrol.GetPartProgramLines
|
|
Dim ProcessId As Short
|
|
Dim nRetry As Integer
|
|
Retry: nRetry += 1
|
|
|
|
Try
|
|
O_GetSelectedProcess(ProcessId)
|
|
|
|
myGetPartProgramLines.ProcNum = ProcessId
|
|
myGetPartProgramLinesR = OPENws.GetPartProgramLines(myGetPartProgramLines)
|
|
If O_CheckRetError(myGetPartProgramLinesR.retval, myGetPartProgramLinesR.ErrClass, myGetPartProgramLinesR.ErrNum, "GetPartProgramLines() O_GetActiveLineProgram CNC.OSAI_OPEN", szReturn) Then
|
|
Throw New CmsNcException(szReturn)
|
|
Return False
|
|
End If
|
|
|
|
Line = myGetPartProgramLinesR.PPLine2
|
|
Return True
|
|
Catch ex As System.ServiceModel.CommunicationException
|
|
If nRetry < MAXRET Then GoTo Retry
|
|
Throw New CmsNcException(ex.Message)
|
|
Return False
|
|
End Try
|
|
End Function
|
|
|
|
|
|
''' <summary>
|
|
''' Legge la tabella assi
|
|
''' </summary>
|
|
''' <param name="ProcessId">Processo selezionato</param>
|
|
''' <param name="AxisTable">Valore di ritorno Assi del processo selezionato</param>
|
|
''' <returns>True se andata a buon fine</returns>
|
|
Public Overloads Overrides Function O_GetAxisTab(ByVal ProcessId As Short, ByRef AxisTable() As Char, ByRef AxisIdTable() As Short) As Boolean
|
|
Dim szReturn As String = ""
|
|
Dim i, j As Integer
|
|
Dim myGetAxesInfo3R As OPENcontrol.GetAxesInfo3R
|
|
Dim myGetAxesInfo3 As New OPENcontrol.GetAxesInfo3
|
|
Dim nRetry As Integer
|
|
Retry: nRetry += 1
|
|
|
|
Try
|
|
myGetAxesInfo3.AxesNum = 64
|
|
myGetAxesInfo3R = OPENws.GetAxesInfo3(myGetAxesInfo3)
|
|
If O_CheckRetError(myGetAxesInfo3R.retval, myGetAxesInfo3R.ErrClass, myGetAxesInfo3R.ErrNum, "GetAxesInfo3() O_RW_Word CNC.OSAI_OPEN", szReturn) Then
|
|
Throw New CmsNcException(szReturn)
|
|
Return False
|
|
End If
|
|
|
|
For i = 0 To 63
|
|
If myGetAxesInfo3R.AxOwnerList(i) = ProcessId Then
|
|
If (myGetAxesInfo3R.AxNameList(i) < Asc("a") Or myGetAxesInfo3R.AxNameList(i) > Asc("z")) And myGetAxesInfo3R.AxNameList(i) <> Asc("S") Then
|
|
AxisTable(j) = Chr(myGetAxesInfo3R.AxNameList(i))
|
|
AxisIdTable(j) = i + 1
|
|
j += 1
|
|
End If
|
|
'ElseIf myGetAxesInfo3R.AxOwnerList(i) = &HFFFF& Then 'Non esco perchè gli assi potrebbero non essere in fila
|
|
' Exit For
|
|
End If
|
|
Next i
|
|
|
|
Return True
|
|
Catch ex As System.ServiceModel.CommunicationException
|
|
If nRetry < MAXRET Then GoTo Retry
|
|
Throw New CmsNcException(ex.Message)
|
|
Return False
|
|
End Try
|
|
End Function
|
|
|
|
|
|
End Class
|
|
|
|
End Namespace
|