1894 lines
60 KiB
VB.net
1894 lines
60 KiB
VB.net
'
|
|
' libreria : VBlib
|
|
' file : ComCNOsai
|
|
'
|
|
' funzioni : connessione con CN OSAI come classe v1.1
|
|
'
|
|
' copyright 2008-2017 C.Viviani
|
|
'
|
|
Imports Microsoft.Win32
|
|
|
|
Public Class ComCNOsai
|
|
|
|
#Region "STRUCT CN"
|
|
|
|
' ----------------------------------------------------------------------------
|
|
' Struttura dati utilizzata per gestione lettura e scrittura variabili su CN
|
|
' ----------------------------------------------------------------------------
|
|
Public Structure stVAR
|
|
|
|
Dim szVarName As String
|
|
Dim nAddress As Integer
|
|
Dim nBit As Integer
|
|
Dim nNumCn As Integer
|
|
|
|
End Structure
|
|
#End Region
|
|
|
|
#Region "VARIABILI ISTANZA"
|
|
|
|
|
|
' -----------------------
|
|
' Dichiarazione costanti
|
|
' -----------------------
|
|
Public Const ERRORVALUE = -9999 ' valore assegnato alla variabile in caso di errore durante la lettura
|
|
|
|
' funzione boot enquiry : BootPhaseEnquiry_C
|
|
|
|
Public Const EMERG_SWITCH_PHASE As Short = 1
|
|
Public Const HW_BOOT_PHASE As Short = 2
|
|
Public Const SW_BOOT_PHASE As Short = 3
|
|
Public Const SYSTEM_UP_PHASE As Short = 4
|
|
Public Const SERVER_MODE_PHASE As Short = 5
|
|
Public Const REMOTE_SETUP_PHASE As Short = 6
|
|
Public Const SERVICE_MODE_PHASE As Short = 7
|
|
Public Const AX_PARAM_VERIFY_PHASE As Short = 8
|
|
|
|
' error codes
|
|
Public Const AB_NO_ERROR = &H0
|
|
Public Const AB_INIT_ERROR = &H101
|
|
Public Const AB_CHANNEL_NOT_OPENED = &H102
|
|
Public Const AB_WRONG_SESSION_NUMBER = &H103
|
|
Public Const AB_TOO_MANY_OPENED_SESSION = &H104
|
|
Public Const AB_REMOTE_CNC_ERROR = &H105
|
|
Public Const AB_NAME_TOO_LONG = &H106
|
|
Public Const AB_COMMAND_IN_EXECUTION = &H107
|
|
Public Const AB_CHANNELS_BUSY = &H108
|
|
Public Const AB_WRONG_PROCESS_NUMBER = &H109
|
|
Public Const AB_WRONG_SELECT_MODE = &H10A
|
|
Public Const AB_PARAM_OUT_OF_RANGE = &H10B
|
|
Public Const AB_CALLBACK_MUST_BE_NULL = &H10C
|
|
Public Const AB_WRONG_SYNC_CODE = &H10D
|
|
Public Const AB_BUFFER_SIZE_ERROR = &H10E
|
|
' netbios error codes
|
|
Public Const AB_NETB_NETWORK_ERROR = &H200
|
|
Public Const AB_NETB_DUP_LOCAL_NAME = &H201
|
|
Public Const AB_NETB_NAME_TABLE_FULL = &H202
|
|
Public Const AB_NETB_LOCAL_SESS_TAB_FULL = &H203
|
|
Public Const AB_NETB_NO_BODY_LISTENING = &H204
|
|
Public Const AB_NETB_NO_ASW_FROM_REMOTE = &H205
|
|
Public Const AB_NETB_NAME_USED_ON_REMOTE = &H206
|
|
Public Const AB_NETB_NAME_DELETED = &H207
|
|
Public Const AB_NETB_NAME_CONFLICT = &H208
|
|
Public Const AB_NETB_INCOMPAT_REMOTE_DEV = &H209
|
|
Public Const AB_NETB_TIMEOUT = &H20A
|
|
Public Const AB_NETB_SESSION_ERR = &H20B ' Session closed
|
|
|
|
Public Const AB_USER_ERROR = &H300
|
|
|
|
Public Const NO_WAIT_CNC_ANSWER = 1
|
|
Public Const WAIT_CNC_ANSWER = 2
|
|
|
|
Public Const ON_ = 1
|
|
Public Const OFF_ = 0
|
|
|
|
' 10 Series modes
|
|
Public Const MDI = 1
|
|
Public Const AUTO = 2
|
|
Public Const SEMI = 3
|
|
Public Const MANJOG = 4
|
|
Public Const INCJOG = 5
|
|
Public Const PROFILE = 6
|
|
Public Const HOME = 7
|
|
|
|
' 10 Series Status
|
|
Public Const IDLE_ As Byte = 1
|
|
Public Const CYCLE_ As Byte = 2
|
|
Public Const HOLDA_ As Byte = 3
|
|
Public Const RUNH_ As Byte = 4
|
|
Public Const HRUN_ As Byte = 5
|
|
Public Const ERRO_ As Byte = 6
|
|
Public Const WAIT_ As Byte = 7
|
|
Public Const RESET_ As Byte = 8
|
|
Public Const EMERG_ As Byte = 9
|
|
Public Const INPUT_ As Byte = 10
|
|
|
|
' 10 Series SubStatus
|
|
Public Const MAS = 6
|
|
Public Const MBR = 4
|
|
|
|
|
|
Public Const NUM_ELEM_SEL_AXI = 9
|
|
|
|
' Axes Position type selector
|
|
Public Const PROGPOS = 1 ' Programmed positions
|
|
Public Const INTPOS = 2 ' Interpolated positions
|
|
Public Const TRANSDPOS = 3 ' Transducer Position
|
|
Public Const ERRPOS = 4 ' Following Errors
|
|
|
|
Public Const MAIN_PROGR_NAME_LEN = 55
|
|
|
|
Protected Const ERRORE_OSAI = 0
|
|
|
|
' ---------------------
|
|
' Variabili di Istanza
|
|
' ---------------------
|
|
|
|
Protected mConnected As Boolean ' Indica se il Cn è connesso o meno
|
|
Protected mSessionOpened As Short ' Indica il numero di sessione aperta
|
|
Protected mNomeCN As String ' Indica il nome del cn da aprire
|
|
Protected mDebug As Boolean ' Indica se la connessione è debug o meno
|
|
Protected mVersion As Short ' indica la versione del Cn
|
|
|
|
|
|
Protected mErrClass As Long ' Indice della classe d'errore
|
|
Protected mErrNum As Long ' Indice della classe d'errore
|
|
|
|
Protected mErrMsg As String ' Stringa per gestione messaggi errore
|
|
Protected mCommunicationError as Boolean ' Boolean che indica se è avvenuto un errore di comunicazione
|
|
|
|
Private Server As New CndexLinkDotNet.Cndex() ' Istanza del server per comunicazione con CN
|
|
|
|
#End Region
|
|
|
|
#Region "COSTRUTTORE"
|
|
|
|
'-------------------------
|
|
' Definizione Costruttore
|
|
'-------------------------
|
|
Public Sub New(ByVal szCN As String, ByVal bIsDebug As Boolean, Optional ByVal sVersion As Short = 2)
|
|
|
|
' Inizializzazione variabili
|
|
Connected = False
|
|
SessionOpened = -1
|
|
ErrClass = 0
|
|
ErrNum = 0
|
|
ErrMsg = ""
|
|
|
|
' Set variabili da parametri
|
|
NomeCn = szCN
|
|
Debug = bIsDebug
|
|
Version = sVersion
|
|
End Sub
|
|
|
|
#End Region
|
|
|
|
#Region "PROPRIETA"
|
|
|
|
' ----------------------------------
|
|
' Indica se il CN è connesso o meno
|
|
' ----------------------------------
|
|
Public Property Connected() As Boolean
|
|
Get
|
|
Return mConnected
|
|
End Get
|
|
Set(ByVal value As Boolean)
|
|
mConnected = value
|
|
End Set
|
|
|
|
End Property
|
|
|
|
' -----------------------------
|
|
' Indice della classe d'errore
|
|
' -----------------------------
|
|
Public Property ErrClass() As Long
|
|
Get
|
|
Return mErrClass
|
|
End Get
|
|
Set(ByVal value As Long)
|
|
mErrClass = value
|
|
End Set
|
|
End Property
|
|
|
|
' ---------------------------
|
|
' Indice del numero d'errore
|
|
' ---------------------------
|
|
Public Property ErrNum() As Long
|
|
Get
|
|
Return mErrNum
|
|
End Get
|
|
Set(ByVal value As Long)
|
|
mErrNum = value
|
|
End Set
|
|
End Property
|
|
|
|
' ---------------------------------------
|
|
' Indica il numero della sessione aperta
|
|
' ---------------------------------------
|
|
Public Property SessionOpened() As Short
|
|
Get
|
|
Return mSessionOpened
|
|
End Get
|
|
Set(ByVal value As Short)
|
|
mSessionOpened = value
|
|
End Set
|
|
End Property
|
|
|
|
' ---------------------------------
|
|
' Indica la stringa di connessione
|
|
' ---------------------------------
|
|
Public Property NomeCn() As String
|
|
Get
|
|
Return mNomeCN
|
|
End Get
|
|
Set(ByVal value As String)
|
|
mNomeCN = value
|
|
End Set
|
|
End Property
|
|
|
|
' --------------------------------
|
|
' Indica se la connesione è Debug
|
|
' --------------------------------
|
|
Public Property Debug() As Boolean
|
|
Get
|
|
Return mDebug
|
|
End Get
|
|
Set(ByVal value As Boolean)
|
|
mDebug = value
|
|
End Set
|
|
End Property
|
|
|
|
' --------------------------------
|
|
' Indica la versione Osai
|
|
' 1 = Prima di versione WinNbi 3.0 (Gasper,Nasi,ABB etc)
|
|
' 2 = Versione WinNbi > 3.0 con OS XP
|
|
' 3 = Versione WinNbi > 3.0 con OS 7
|
|
' 4 = Open Control
|
|
' --------------------------------
|
|
Public Property Version() As Short
|
|
Get
|
|
Return mVersion
|
|
End Get
|
|
Set(ByVal value As Short)
|
|
mVersion = value
|
|
End Set
|
|
End Property
|
|
' --------------------------------
|
|
' Stringa per gestione errori
|
|
' --------------------------------
|
|
Public Property ErrMsg() As String
|
|
Get
|
|
Return mErrMsg
|
|
End Get
|
|
Set(ByVal value As String)
|
|
mErrMsg = value
|
|
End Set
|
|
End Property
|
|
|
|
' ------------------------------------------------------------
|
|
' Boolean che indica se c'è stato un errore di comunicazione
|
|
' ------------------------------------------------------------
|
|
Public Property Communication() As Boolean
|
|
Get
|
|
Return mCommunicationError
|
|
End Get
|
|
Set(ByVal value As Boolean)
|
|
mCommunicationError = value
|
|
End Set
|
|
End Property
|
|
|
|
#End Region
|
|
|
|
#Region "METODI - Open/close connection"
|
|
|
|
'------------------------------
|
|
' Lettura messaggio DIS
|
|
'------------------------------
|
|
Public Overridable Function ReadDisMsg(Optional ByVal nProcess As Integer = 1, Optional ByVal nMac As Integer = 1) As String
|
|
|
|
Dim szResult As String = "" ' Stringa risultato
|
|
|
|
Dim n_ret_state As Short
|
|
|
|
' se macchina collegata e non in debug
|
|
If (Not (Debug)) Then
|
|
|
|
n_ret_state = Server.ReadPartProgramMsg_C(SessionOpened, nProcess, szResult, ErrClass, ErrNum)
|
|
|
|
If (n_ret_state = ERRORE_OSAI) Then
|
|
|
|
ErrMsg = "Error on reading DIS Messages " & vbCrLf & what_happened()
|
|
'MsgBox(ErrMsg)
|
|
Return CShort(ERRORVALUE).ToString ' In uscita setto variabile a ERRORVALUE errore
|
|
|
|
Else
|
|
' return con il valore letto
|
|
Return szResult
|
|
|
|
End If
|
|
End If
|
|
|
|
Return szResult
|
|
End Function
|
|
|
|
|
|
' ------------------------------
|
|
' Apertura sessione con CN Osai
|
|
' ------------------------------
|
|
Public Overridable Function OpenSession() As Boolean
|
|
|
|
Dim nSession As Short = 0
|
|
|
|
Select Case Debug
|
|
|
|
Case False ' Se non sono in Debug = 0
|
|
|
|
nSession = Server.OpenSession_C(NomeCn, SessionOpened, ErrClass, ErrNum) ' Apro la sessione
|
|
|
|
If (nSession <> ERRORE_OSAI) Then
|
|
Connected = True ' Setto connesso = true
|
|
Else
|
|
Connected = False ' Setto connesso = false
|
|
ErrMsg = "Error on open session" & vbCrLf & what_happened()
|
|
End If
|
|
|
|
|
|
Case True ' Se sono in Debug = 1
|
|
|
|
Connected = True ' Connessione sempre OK
|
|
|
|
End Select
|
|
|
|
Return Connected
|
|
|
|
End Function
|
|
|
|
' ------------------------------
|
|
' Chiusura sessione con CN Osai
|
|
' ------------------------------
|
|
Public Overridable Function CloseSession() As Boolean
|
|
|
|
Dim nSession As Short
|
|
Dim bOk As Boolean
|
|
|
|
Select Case Debug
|
|
|
|
Case False ' Se non sono in Debug = 0
|
|
|
|
nSession = Server.CloseSession_C(SessionOpened, ErrClass, ErrNum) ' Chiudo la sessione
|
|
|
|
If (nSession <> ERRORE_OSAI) Then
|
|
bOk = True
|
|
Else
|
|
ErrMsg = "Error on closing session" & vbCrLf & what_happened()
|
|
bOk = False
|
|
End If
|
|
|
|
Case True ' Se sono in Debug = 1
|
|
|
|
bOk = True
|
|
|
|
End Select
|
|
|
|
Connected = False
|
|
|
|
Return bOk
|
|
|
|
End Function
|
|
|
|
' ------------------------------
|
|
' Verifica che il CN sia running
|
|
' ------------------------------
|
|
Public Overridable Function Is_NC_running() As Boolean
|
|
|
|
Dim n_ret_state As Short
|
|
Dim n_boot_Phase As Short
|
|
|
|
n_ret_state = Server.BootPhaseEnquiry_C(SessionOpened, n_boot_Phase, ErrClass, ErrNum)
|
|
|
|
If (n_ret_state = ERRORE_OSAI) Then
|
|
ErrMsg = "Error on BootPhaseEnquiry_C" & vbCrLf & "Class: " & Str(ErrClass) & " Number: 0x" & Hex(ErrNum)
|
|
Return False
|
|
Exit Function
|
|
End If
|
|
|
|
If n_boot_Phase <> SYSTEM_UP_PHASE Then
|
|
Return False
|
|
Else
|
|
Return (True)
|
|
End If
|
|
|
|
End Function
|
|
|
|
' ------------------------------
|
|
' START PartProgram
|
|
' ------------------------------
|
|
Public Overridable Function StartPP() As Boolean
|
|
|
|
Dim n_ret_state As Short
|
|
Dim bOk As Boolean
|
|
|
|
Select Case Debug
|
|
|
|
Case False ' Se non sono in Debug = 0
|
|
|
|
n_ret_state = Server.Cycle_C(SessionOpened, 1, 1, ErrClass, ErrNum) ' Chiudo la sessione
|
|
|
|
If (n_ret_state = ERRORE_OSAI) Then
|
|
|
|
ErrMsg = "Error on Cycle_C" & vbCrLf & vbCrLf & what_happened()
|
|
bOk = False
|
|
Else
|
|
bOk = True
|
|
End If
|
|
|
|
Case True ' Se sono in Debug = 1
|
|
|
|
bOk = True
|
|
|
|
End Select
|
|
|
|
Return bOk
|
|
|
|
End Function
|
|
|
|
#End Region
|
|
|
|
#Region "METODI - NC copy post Vista ...."
|
|
|
|
'------------------------------
|
|
' Copia file da Pc a Cn post Vista .... ritorna zero in caso di errore.
|
|
'------------------------------
|
|
Public Overridable Function CopyFileToNC(ByVal sz_logical_drive As String,
|
|
ByVal sz_source_filename As String,
|
|
ByVal sz_dest_filename As String) As Short
|
|
|
|
Dim n_ret_state As Short
|
|
|
|
Select Case Debug
|
|
|
|
Case False ' Se non sono in Debug = 0
|
|
|
|
n_ret_state = Server.LogFSTransferFileW_C(sz_logical_drive, sz_source_filename, NomeCn, sz_dest_filename, ErrClass, ErrNum)
|
|
|
|
If (n_ret_state > 0) Then ' ritorna zero in caso di errore.
|
|
Else
|
|
ErrMsg = "Error on CopyFileToNC" & vbCrLf & what_happened()
|
|
MsgBox(ErrMsg)
|
|
|
|
End If
|
|
|
|
Case True ' Se sono in Debug = 1
|
|
|
|
n_ret_state = 1 ' Connessione sempre OK
|
|
|
|
End Select
|
|
|
|
Return n_ret_state
|
|
|
|
End Function
|
|
|
|
'------------------------------
|
|
' Copia file da Cn a PC post Vista ....
|
|
'------------------------------
|
|
Public Overridable Function CopyFileFromNc(ByVal sz_logical_drive As String,
|
|
ByVal sz_source_filename As String,
|
|
ByVal sz_dest_filename As String) As Short
|
|
|
|
Dim n_ret_state As Short
|
|
|
|
Select Case Debug
|
|
|
|
Case False ' Se non sono in Debug = 0
|
|
|
|
|
|
n_ret_state = Server.LogFSTransferFileW_C(NomeCn, sz_source_filename, sz_logical_drive, sz_dest_filename, ErrClass, ErrNum)
|
|
|
|
If (n_ret_state > 0) Then
|
|
Else
|
|
ErrMsg = "Error on CopyFileFromNc" & vbCrLf & what_happened()
|
|
MsgBox(ErrMsg)
|
|
|
|
End If
|
|
|
|
|
|
Case True ' Se sono in Debug = 1
|
|
|
|
n_ret_state = 1 ' Connessione sempre OK
|
|
|
|
End Select
|
|
|
|
Return n_ret_state
|
|
|
|
End Function
|
|
|
|
'------------------------------
|
|
' Delete file su Cn post Vista ....
|
|
'------------------------------
|
|
Public Overridable Function DeleteFileOnNC(ByVal sz_pathname As String, ByVal sz_filename As String) As Short
|
|
|
|
Dim n_ret_state As Short
|
|
|
|
Dim n_hidden_drives As Long
|
|
Dim n_user_drives As Long
|
|
Dim n As Short
|
|
Dim sz_drive_name As String
|
|
Dim sz_drive_path As String
|
|
|
|
Select Case Debug
|
|
|
|
Case False ' Se non sono in Debug = 0
|
|
|
|
n_ret_state = Server.LogFSGetNumDrive_C(SessionOpened, n_hidden_drives, n_user_drives, ErrClass, ErrNum)
|
|
|
|
sz_drive_name = ""
|
|
sz_drive_path = ""
|
|
n = 0
|
|
|
|
'n_ret_state = Server.LogFSGetDriveList_C(SessionOpened, sz_drive_name, n, ErrClass, ErrNum)
|
|
|
|
'n_ret_state = Server.LogFSSetSecurityLevel_C(SessionOpened, "OEM", CndexLinkDotNet.Cndex.SECURITY_LEVEL_C.SECURITY_LEV_OEM_ADMIN_C, n, ErrClass, ErrNum)
|
|
|
|
'n_ret_state = Server.LogFSGetDrivePath_C(SessionOpened, sz_drive_name, sz_drive_path, CndexLinkDotNet.Cndex.SECURITY_LEVEL_C.SECURITY_LEV_OEM_ADMIN_C, ErrClass, ErrNum)
|
|
|
|
n_ret_state = Server.LogFSRemoveFile_C(SessionOpened, sz_pathname, sz_filename, ErrClass, ErrNum)
|
|
|
|
If (n_ret_state > 0) Then
|
|
Else
|
|
ErrMsg = "Error on DeleteFileOnNC" & vbCrLf & what_happened()
|
|
MsgBox(ErrMsg)
|
|
|
|
End If
|
|
|
|
Case True ' Se sono in Debug = 1
|
|
|
|
n_ret_state = 1 ' Connessione sempre OK
|
|
|
|
End Select
|
|
|
|
Return n_ret_state
|
|
|
|
End Function
|
|
|
|
#End Region
|
|
|
|
#Region "METODI - Lettura/scrittura variabili CN"
|
|
|
|
'------------------------------
|
|
' Lettura variabile Bool su Cn
|
|
'------------------------------
|
|
Public Overridable Function ReadBoolVar(ByVal szVar As stVAR, Optional ByVal nProcess As Integer = 1) As Short
|
|
|
|
Dim nValues(0) As Short ' Array (lo vuole la libreria Osai) che conterrà il valore letto
|
|
Dim nComOk As Short ' Se 1 lettura OK Se 0 lettura KO
|
|
Dim nNumVarToBeReaded As Integer = 1 ' Numero di variabili da leggere (fisso a 1)
|
|
|
|
|
|
' se macchina collegata e non in debug
|
|
If (Not (Debug)) Then
|
|
|
|
nValues(0) = 0
|
|
|
|
nComOk = Server.ReadVarWord_C(SessionOpened, CndexLinkDotNet.Cndex.GW_CODE, nProcess, szVar.nAddress, nNumVarToBeReaded, nValues, ErrClass, ErrNum)
|
|
|
|
If (nComOk = ERRORE_OSAI) Then
|
|
|
|
ErrMsg = "Error on reading bool variable" & vbCrLf & "Class: " & Str(ErrClass) & " Number: 0x" & Hex(ErrNum)
|
|
Return CShort(ERRORVALUE) ' In uscita setto variabile a ERRORVALUE errore
|
|
|
|
Else
|
|
|
|
If ((nValues(0) And (2 ^ szVar.nBit)) <> 0) Then ' Maschera per controllare solo il bit che mi interessa
|
|
nValues(0) = 1
|
|
Else
|
|
nValues(0) = 0
|
|
End If
|
|
|
|
' return con il valore letto
|
|
Return nValues(0)
|
|
|
|
End If
|
|
|
|
|
|
Else ' gestione se debug
|
|
|
|
' ritorno valore fittzio
|
|
Return 1
|
|
|
|
End If
|
|
|
|
End Function
|
|
|
|
' -------------------------------
|
|
' Scrittura variabile Bool su Cn
|
|
'---------------------------------
|
|
Public Overridable Function WriteBoolVar(ByVal szVar As stVAR, ByVal nValue As Short, Optional ByVal nProcess As Integer = 1) As Boolean
|
|
|
|
Dim nComOk As Short ' Se 1 scrittura OK Se 0 lettura KO
|
|
|
|
' se macchina collegata e non in debug
|
|
If (Not (Debug)) Then
|
|
|
|
nComOk = Server.WriteVarWordBit_C(SessionOpened, CndexLinkDotNet.Cndex.GW_CODE, nProcess, szVar.nAddress, szVar.nBit, nValue, ErrClass, ErrNum)
|
|
|
|
If (nComOk = ERRORE_OSAI) Then
|
|
|
|
ErrMsg = "Error on writing bool variable" & vbCrLf & "Class: " & Str(ErrClass) & " Number: 0x" & Hex(ErrNum)
|
|
Return False ' In uscita setto variabile a ERRORVALUE errore
|
|
|
|
Else
|
|
|
|
Return True
|
|
|
|
End If
|
|
|
|
' se sono in debug
|
|
Else
|
|
|
|
Return True
|
|
|
|
End If ' Endif gestione macchina collegata
|
|
|
|
End Function
|
|
|
|
'------------------------------
|
|
' Lettura variabile Short su Cn
|
|
'------------------------------
|
|
Public Overridable Function ReadShortVar(ByVal szVar As stVAR, Optional ByVal nProcess As Integer = 1) As Short
|
|
|
|
Dim nValues(0) As Short ' Array (lo vuole la libreria Osai) che conterrà il valore letto
|
|
Dim nComOk As Short ' Se 1 lettura OK Se 0 lettura KO
|
|
Dim nNumVarToBeReaded As Integer = 1 ' Numero di variabili da leggere (fisso a 1)
|
|
|
|
' se macchina collegata e non in debug
|
|
If (Not (Debug)) Then
|
|
|
|
nValues(0) = 0
|
|
|
|
nComOk = Server.ReadVarWord_C(SessionOpened, CndexLinkDotNet.Cndex.GW_CODE, nProcess, szVar.nAddress, nNumVarToBeReaded, nValues, ErrClass, ErrNum)
|
|
|
|
If (nComOk = ERRORE_OSAI) Then
|
|
|
|
ErrMsg = "Error on ReadVarWord_C" & vbCrLf & what_happened()
|
|
Return CShort(ERRORVALUE) ' In uscita setto variabile a ERRORVALUE errore
|
|
|
|
Else
|
|
|
|
' return con il valore letto
|
|
Return nValues(0)
|
|
|
|
End If
|
|
|
|
Else ' gestione se debug
|
|
|
|
' ritorno true
|
|
Return 1
|
|
|
|
End If
|
|
|
|
End Function
|
|
|
|
' -------------------------------
|
|
' Scrittura variabile Short su Cn
|
|
'---------------------------------
|
|
Public Overridable Function WriteShortVar(ByVal szVar As stVAR, ByVal nValue As Short, Optional ByVal nProcess As Integer = 1) As Boolean
|
|
|
|
Dim nComOk As Short ' Se 1 scritt. OK Se 0 lettura KO
|
|
Dim nValues(0) As Short ' Array (lo vuole la libreria Osai) che conterrà il valore letto
|
|
Dim nNumVarToBeWrited As Integer = 1 ' Numero di variabili da leggere (fisso a 1)
|
|
|
|
|
|
nValues(0) = nValue
|
|
|
|
' se macchina collegata e non in debug
|
|
If (Not (Debug)) Then
|
|
|
|
nComOk = Server.WriteVarWord_C(SessionOpened, CndexLinkDotNet.Cndex.GW_CODE, nProcess, szVar.nAddress, nNumVarToBeWrited, nValues, ErrClass, ErrNum)
|
|
|
|
If (nComOk = ERRORE_OSAI) Then
|
|
|
|
ErrMsg = "Error on writing short variable" & vbCrLf & what_happened()
|
|
Return False ' In uscita setto variabile a ERRORVALUE errore
|
|
|
|
Else
|
|
|
|
Return True
|
|
|
|
End If
|
|
|
|
' se sono in debug
|
|
Else
|
|
|
|
Return True
|
|
|
|
End If ' Endif gestione macchina collegata
|
|
|
|
End Function
|
|
|
|
'--------------------------------
|
|
' Lettura variabile G Double su Cn
|
|
'--------------------------------
|
|
Public Overridable Function ReadDoubleVar(ByVal szVar As stVAR, Optional ByVal nProcess As Integer = 1) As Double
|
|
|
|
Dim nValues(0) As Double ' Array (lo vuole la libreria Osai) che conterrà il valore letto
|
|
Dim nComOk As Short ' Se 1 lettura OK Se 0 lettura KO
|
|
Dim nNumVarToBeReaded As Integer = 1 ' Numero di variabili da leggere (fisso a 1)
|
|
|
|
' se macchina collegata e non in debug
|
|
If (Not (Debug)) Then
|
|
|
|
nValues(0) = 0
|
|
|
|
nComOk = Server.ReadVarDouble_C(SessionOpened, CndexLinkDotNet.Cndex.GD_CODE, nProcess, szVar.nAddress, nNumVarToBeReaded, nValues, ErrClass, ErrNum)
|
|
|
|
If (nComOk = ERRORE_OSAI) Then
|
|
|
|
ErrMsg = "Error on reading double variable" & vbCrLf & what_happened()
|
|
Return CDbl(ERRORVALUE) ' In uscita setto variabile a ERRORVALUE errore
|
|
|
|
Else
|
|
|
|
' return con il valore letto
|
|
Return nValues(0)
|
|
|
|
End If
|
|
|
|
|
|
Else ' gestione se debug
|
|
|
|
' ritorno true
|
|
Return 1.0
|
|
|
|
End If
|
|
|
|
End Function
|
|
|
|
' ---------------------------------
|
|
' Scrittura variabile G Double su Cn
|
|
'----------------------------------
|
|
Public Overridable Function WriteDoubleVar(ByVal szVar As stVAR, ByVal nValue As Double, Optional ByVal nProcess As Integer = 1) As Boolean
|
|
|
|
Dim nComOk As Short ' Se 1 scritt. OK Se 0 lettura KO
|
|
Dim nValues(0) As Double ' Array (lo vuole la libreria Osai) che conterrà il valore letto
|
|
Dim nNumVarToBeWrited As Integer = 1 ' Numero di variabili da leggere (fisso a 1)
|
|
|
|
|
|
nValues(0) = nValue
|
|
|
|
' se macchina collegata e non in debug
|
|
If (Not (Debug)) Then
|
|
|
|
nComOk = Server.WriteVarDouble_C(SessionOpened, CndexLinkDotNet.Cndex.GD_CODE, nProcess, szVar.nAddress, nNumVarToBeWrited, nValues, ErrClass, ErrNum)
|
|
|
|
If (nComOk = ERRORE_OSAI) Then
|
|
|
|
ErrMsg = "Error on writing double variable" & vbCrLf & what_happened()
|
|
Return False ' In uscita setto variabile a ERRORVALUE errore
|
|
|
|
Else
|
|
|
|
Return True
|
|
|
|
End If
|
|
|
|
' se sono in debug
|
|
Else
|
|
|
|
Return True
|
|
|
|
End If ' Endif gestione macchina collegata
|
|
|
|
End Function
|
|
|
|
'-----------------------------------
|
|
' Lettura variabile E (Double) su Cn
|
|
'-----------------------------------
|
|
Public Overridable Function ReadVarE(ByVal szVar As stVAR, Optional ByVal nProcess As Integer = 1) As Double
|
|
|
|
Dim nValues(0) As Double ' Array (lo vuole la libreria Osai) che conterrà il valore letto
|
|
Dim nComOk As Short ' Se 1 lettura OK Se 0 lettura KO
|
|
Dim nNumVarToBeReaded As Integer = 1 ' Numero di variabili da leggere (fisso a 1)
|
|
|
|
' se macchina collegata e non in debug
|
|
If (Not (Debug)) Then
|
|
|
|
nValues(0) = 0
|
|
|
|
nComOk = Server.ReadVarDouble_C(SessionOpened, CndexLinkDotNet.Cndex.E_CODE, nProcess, szVar.nAddress, nNumVarToBeReaded, nValues, ErrClass, ErrNum)
|
|
|
|
If (nComOk = ERRORE_OSAI) Then
|
|
|
|
ErrMsg = "Error on reading double variable" & vbCrLf & what_happened()
|
|
Return CDbl(ERRORVALUE) ' In uscita setto variabile a ERRORVALUE errore
|
|
|
|
Else
|
|
|
|
' return con il valore letto
|
|
Return nValues(0)
|
|
|
|
End If
|
|
|
|
|
|
Else ' gestione se debug
|
|
|
|
' ritorno valore fittizio
|
|
Return 1.0
|
|
|
|
End If
|
|
|
|
End Function
|
|
|
|
' ---------------------------------
|
|
' Scrittura variabile E (Double) su Cn
|
|
'----------------------------------
|
|
Public Overridable Function WriteVarE(ByVal szVar As stVAR, ByVal nValue As Double, Optional ByVal nProcess As Integer = 1) As Boolean
|
|
|
|
Dim nComOk As Short ' Se 1 scr. OK ; Se 0 scrittura KO
|
|
Dim nValues(0) As Double ' Array (lo vuole la libreria Osai) che conterrà il valore letto
|
|
Dim nNumVarToBeWrited As Integer = 1 ' Numero di variabili da leggere (fisso a 1)
|
|
|
|
|
|
nValues(0) = nValue
|
|
|
|
' se macchina collegata e non in debug
|
|
If (Not (Debug)) Then
|
|
|
|
nComOk = Server.WriteVarDouble_C(SessionOpened, CndexLinkDotNet.Cndex.E_CODE, nProcess, szVar.nAddress, nNumVarToBeWrited, nValues, ErrClass, ErrNum)
|
|
|
|
If (nComOk = ERRORE_OSAI) Then
|
|
|
|
ErrMsg = "Error on writing double variable" & vbCrLf & what_happened()
|
|
Return False ' In uscita setto variabile a ERRORVALUE errore
|
|
|
|
Else
|
|
|
|
Return True
|
|
|
|
End If
|
|
|
|
' se sono in debug
|
|
Else
|
|
|
|
Return True
|
|
|
|
End If ' Endif gestione macchina collegata
|
|
|
|
End Function
|
|
|
|
'-----------------------------------
|
|
' Lettura variabile L (Double) su Cn
|
|
'-----------------------------------
|
|
Public Overridable Function ReadVarL(ByVal szVar As stVAR, Optional ByVal nProcess As Integer = 1) As Double
|
|
|
|
' sulla serie 10 per leggere una variabile L occorre leggere un record della USER TABLE
|
|
|
|
Dim nComOk As Short ' Se 1 lettura OK ; Se 0 lettura KO
|
|
|
|
Dim UserRecord As CndexLinkDotNet.Cndex.USER_TABLE = Nothing
|
|
Dim nRecNumber As Short ' da 1 a 100
|
|
Dim nRecIndex As Short ' da 1 a 4 all interno del record
|
|
Dim value As Double
|
|
|
|
|
|
' se macchina collegata e non in debug
|
|
If (Not (Debug)) Then
|
|
|
|
nRecNumber = (szVar.nAddress / 4) + 1
|
|
nRecIndex = (szVar.nAddress Mod 4) + 1
|
|
|
|
nComOk = Server.GetUserTabRecord_C(SessionOpened, nRecNumber, UserRecord, ErrClass, ErrNum)
|
|
|
|
If (nComOk = ERRORE_OSAI) Then
|
|
|
|
ErrMsg = "Error on reading L variable" & vbCrLf & what_happened()
|
|
Return -99999.99 ' In uscita setto variabile a ERRORVALUE errore
|
|
|
|
Else
|
|
Select Case nRecIndex
|
|
Case 1
|
|
value = UserRecord.user1
|
|
Case 2
|
|
value = UserRecord.user2
|
|
Case 3
|
|
value = UserRecord.user3
|
|
Case 4
|
|
value = UserRecord.user4
|
|
|
|
End Select
|
|
|
|
Return value
|
|
|
|
End If
|
|
|
|
' se sono in debug
|
|
Else
|
|
|
|
Return 0.0
|
|
|
|
End If '
|
|
|
|
|
|
End Function
|
|
|
|
' ---------------------------------
|
|
' Scrittura variabile L (Double) su Cn
|
|
'----------------------------------
|
|
Public Overridable Function WriteVarL(ByVal szVar As stVAR, ByVal nValue As Double, Optional ByVal nProcess As Integer = 1) As Boolean
|
|
|
|
' sulla serie 10 per scrivere una variabile L occorre leggere un record della USER TABLE, sostituire il valore e riscrivere il record
|
|
|
|
Dim nComOk As Short ' Se 1 lettura OK ; Se 0 lettura KO
|
|
|
|
Dim UserRecord As CndexLinkDotNet.Cndex.USER_TABLE = Nothing
|
|
Dim nRecNumber As Short ' da 1 a 100
|
|
Dim nRecIndex As Short ' da 1 a 4 all interno del record
|
|
|
|
' se macchina collegata e non in debug
|
|
If (Not (Debug)) Then
|
|
|
|
nRecNumber = (szVar.nAddress / 4) + 1
|
|
nRecIndex = (szVar.nAddress Mod 4) + 1
|
|
|
|
nComOk = Server.GetUserTabRecord_C(SessionOpened, nRecNumber, UserRecord, ErrClass, ErrNum)
|
|
|
|
If (nComOk = ERRORE_OSAI) Then
|
|
|
|
ErrMsg = "Error on read L variable" & vbCrLf & what_happened()
|
|
Return False ' In uscita setto variabile a ERRORVALUE errore
|
|
|
|
Else
|
|
Select Case nRecIndex
|
|
Case 1
|
|
UserRecord.user1 = nValue
|
|
Case 2
|
|
UserRecord.user2 = nValue
|
|
Case 3
|
|
UserRecord.user3 = nValue
|
|
Case 4
|
|
UserRecord.user4 = nValue
|
|
|
|
End Select
|
|
|
|
nComOk = Server.SetUserTabRecord_C(SessionOpened, nRecNumber, UserRecord, ErrClass, ErrNum)
|
|
If (nComOk = ERRORE_OSAI) Then
|
|
|
|
ErrMsg = "Error on writing L variable" & vbCrLf & what_happened()
|
|
Return False ' In uscita setto variabile a ERRORVALUE errore
|
|
|
|
Else
|
|
Return True
|
|
End If
|
|
|
|
End If
|
|
|
|
Else ' se sono in debug
|
|
Return True
|
|
End If '
|
|
|
|
End Function
|
|
|
|
'--------------------------------
|
|
' Lettura variabile SC su Cn
|
|
'--------------------------------
|
|
Public Overridable Function ReadSCVar(ByVal nIndex As Integer, ByVal nNumChar As Integer, Optional ByVal nProcess As Integer = 1) As String
|
|
|
|
Dim szValue As String = ""
|
|
Dim nComOk As Short ' Se 1 lettura OK Se 0 lettura KO
|
|
Dim szText As String = ""
|
|
|
|
|
|
' se macchina collegata e non in debug
|
|
If (Not (Debug)) Then
|
|
|
|
nComOk = Server.ReadVarText_C(SessionOpened, CndexLinkDotNet.Cndex.SC_CODE, nProcess, nIndex, nNumChar, szValue, ErrClass, ErrNum)
|
|
|
|
If (nComOk = ERRORE_OSAI) Then
|
|
|
|
ErrMsg = "Error on reading SC variable" & vbCrLf & what_happened()
|
|
Return "" ' In uscita setto variabile a ERRORVALUE errore
|
|
|
|
Else
|
|
|
|
' return con il valore letto
|
|
Return szValue
|
|
|
|
End If
|
|
|
|
|
|
Else ' gestione se debug
|
|
|
|
' ritorno true
|
|
Return "SC VAR - DEBUG"
|
|
|
|
End If
|
|
|
|
|
|
End Function
|
|
|
|
' ---------------------------------
|
|
' Scrittura variabile SC su Cn
|
|
'----------------------------------
|
|
Public Overridable Function WriteSCVar(ByVal nIndex As Integer, ByVal nNumChar As Integer, ByVal szText As String, Optional ByVal nProcess As Integer = 1) As Boolean
|
|
|
|
Dim nComOk As Short ' Se 1 scritt. OK Se 0 lettura KO
|
|
|
|
' se macchina collegata e non in debug
|
|
If (Not (Debug)) Then
|
|
|
|
nComOk = Server.WriteVarText_C(SessionOpened, CndexLinkDotNet.Cndex.SC_CODE, nProcess, nIndex, nNumChar, szText, ErrClass, ErrNum)
|
|
|
|
If (nComOk = ERRORE_OSAI) Then
|
|
|
|
ErrMsg = "Error on writing SC variable" & vbCrLf & what_happened()
|
|
Return False ' In uscita setto variabile a ERRORVALUE errore
|
|
|
|
Else
|
|
|
|
Return True
|
|
|
|
End If
|
|
|
|
' se sono in debug
|
|
Else
|
|
|
|
Return True
|
|
|
|
End If ' Endif gestione macchina collegata
|
|
|
|
End Function
|
|
|
|
'--------------------------------
|
|
' Lettura variabile MW ( word ) su Cn
|
|
'--------------------------------
|
|
Public Overridable Function ReadVarMW(ByVal szVar As stVAR, Optional ByVal nProcess As Integer = 1) As UShort
|
|
|
|
Dim nValues(0) As Short ' Array (lo vuole la libreria Osai) che conterrà il valore letto
|
|
Dim nComOk As Short ' Se 1 scr. OK Se 0 lettura KO
|
|
Dim nNumVarToRead As Short = 1 ' Numero di variabili da leggere (fisso a 1)
|
|
|
|
' se macchina collegata e non in debug
|
|
If (Not (Debug)) Then
|
|
|
|
nValues(0) = 0
|
|
|
|
nComOk = Server.ReadVarWord_C(SessionOpened, CndexLinkDotNet.Cndex.MW_CODE, nProcess, szVar.nAddress, nNumVarToRead, nValues, ErrClass, ErrNum)
|
|
|
|
If (nComOk = ERRORE_OSAI) Then
|
|
|
|
ErrMsg = "Error on reading MW variable" & vbCrLf & what_happened()
|
|
Return (9999) ' In uscita setto variabile a ERRORVALUE errore
|
|
|
|
Else
|
|
|
|
' return con il valore letto
|
|
Return nValues(0)
|
|
|
|
End If
|
|
|
|
|
|
Else ' gestione se debug
|
|
|
|
' ritorno true
|
|
Return 1
|
|
|
|
End If
|
|
|
|
End Function
|
|
|
|
'--------------------------------
|
|
' Lettura multi variabile MW su Cn
|
|
'--------------------------------
|
|
Public Overridable Function ReadMultipleVarMW(ByVal nAddress As Integer, ByRef nValues() As Short, ByVal nNumVarToRead As Short, Optional ByVal nProcess As Integer = 1) As Boolean
|
|
|
|
Dim nComOk As Short ' Se 1 scr. OK Se 0 lettura KO
|
|
|
|
' se macchina collegata e non in debug
|
|
If (Not (Debug)) Then
|
|
|
|
nValues(0) = 0
|
|
|
|
nComOk = Server.ReadVarWord_C(SessionOpened, CndexLinkDotNet.Cndex.MW_CODE, nProcess, nAddress, nNumVarToRead, nValues, ErrClass, ErrNum)
|
|
|
|
If (nComOk = ERRORE_OSAI) Then
|
|
|
|
ErrMsg = "Error on reading multiple MW variable" & vbCrLf & what_happened()
|
|
Return False ' In uscita setto variabile a ERRORVALUE errore
|
|
|
|
Else
|
|
Return True
|
|
End If
|
|
|
|
Else ' gestione se debug
|
|
Return True
|
|
End If
|
|
|
|
End Function
|
|
|
|
|
|
#End Region
|
|
|
|
#Region "METODI - Info da CN e varie"
|
|
|
|
' ---------------------------------
|
|
' Lettura Warning Msg
|
|
'----------------------------------
|
|
Public Overridable Function ReadWarning(ByRef szText As String) As Boolean
|
|
|
|
Dim nComOk As Short ' Se 1 lettura OK Se 0 lettura KO
|
|
|
|
' se macchina collegata e non in debug
|
|
If (Not (Debug)) Then
|
|
|
|
nComOk = Server.ReadWarningMsg_C(SessionOpened, szText, ErrClass, ErrNum)
|
|
|
|
If (nComOk = ERRORE_OSAI) Then
|
|
|
|
ErrMsg = "Error on reading Warning Messages" & vbCrLf & what_happened()
|
|
Return False ' In uscita setto variabile a ERRORVALUE errore
|
|
|
|
Else
|
|
|
|
Return True
|
|
|
|
End If
|
|
|
|
' se sono in debug
|
|
Else
|
|
|
|
Return True
|
|
|
|
End If ' Endif gestione macchina collegata
|
|
|
|
End Function
|
|
|
|
' ---------------------------------
|
|
' Lettura programma corrente
|
|
'----------------------------------
|
|
Public Overridable Function GetActiveProgram(ByVal nProcess As Integer) As String
|
|
Dim szMainPrg As String = ""
|
|
Dim szSubProgram As String = ""
|
|
Dim nComOk As Short ' Se 1 lettura OK Se 0 lettura KO
|
|
|
|
|
|
' se macchina collegata e non in debug
|
|
If (Not (Debug)) Then
|
|
|
|
nComOk = Server.GetActivePartProgram_C(SessionOpened, nProcess, 1, szMainPrg, szSubProgram, ErrClass, ErrNum)
|
|
|
|
If (nComOk = ERRORE_OSAI) Then
|
|
|
|
ErrMsg = "Error on GetActivePartProgram_C" & vbCrLf & what_happened()
|
|
Return "Error" ' In uscita setto variabile a ERRORVALUE errore
|
|
|
|
Else
|
|
|
|
szMainPrg = Replace(szMainPrg, vbNullChar, "") ' Pulisco i caratteri farlocchi ...
|
|
Return szMainPrg
|
|
|
|
End If
|
|
|
|
' se sono in debug
|
|
Else
|
|
|
|
Return "OK"
|
|
|
|
End If ' Endif gestione macchina collegata
|
|
|
|
End Function
|
|
|
|
' ---------------------------------------------------------------
|
|
' Ritorna True se lo stato del CN è IDLE
|
|
'----------------------------------------------------------------
|
|
Public Overridable Function IsResetStatus(Optional ByVal nProcess As Integer = 1) As Boolean
|
|
Dim RetVal As Short
|
|
Dim ncInfo As New CndexLinkDotNet.Cndex.GETINFO1DATA
|
|
|
|
RetVal = Server.GetNcInfo1_C(SessionOpened, nProcess, ncInfo, ErrClass, ErrNum)
|
|
|
|
If RetVal > 0 Then
|
|
|
|
If ncInfo.mode_select = 0 Then
|
|
Return True
|
|
Else
|
|
Return False
|
|
End If
|
|
|
|
Else
|
|
'MsgBox("Error in IsResetStatus" & vbCrLf & "Class: " & Str(ErrClass) & " Number: 0x" & Hex(ErrNum))
|
|
Return 0
|
|
End If
|
|
|
|
End Function
|
|
|
|
' ---------------------------------
|
|
' Lettura info CN 1
|
|
'----------------------------------
|
|
Public Overridable Function NcInfo1(ByRef ncInfo As CndexLinkDotNet.Cndex.GETINFO1DATA, Optional ByVal nProcess As Integer = 1) As Boolean
|
|
|
|
Dim nComOk As Short ' Se 1 lettura OK Se 0 lettura KO
|
|
|
|
' se macchina collegata e non in debug
|
|
If (Not (Debug)) Then
|
|
|
|
nComOk = Server.GetNcInfo1_C(SessionOpened, nProcess, ncInfo, ErrClass, ErrNum)
|
|
|
|
If (nComOk = ERRORE_OSAI) Then
|
|
|
|
ErrMsg = "Error on reading NcInfo1" & vbCrLf & what_happened()
|
|
Return False ' In uscita setto variabile a ERRORVALUE errore
|
|
|
|
Else
|
|
|
|
Return True
|
|
|
|
End If
|
|
|
|
' se sono in debug
|
|
Else
|
|
|
|
Return True
|
|
|
|
End If ' Endif gestione macchina collegata
|
|
|
|
End Function
|
|
|
|
' ---------------------------------
|
|
' Lettura info CN 2
|
|
'----------------------------------
|
|
Public Overridable Function NcInfo2(ByRef ncInfo As CndexLinkDotNet.Cndex.GETINFO2DATA, Optional ByVal nProcess As Integer = 1) As Boolean
|
|
|
|
Dim nComOk As Short ' Se 1 lettura OK Se 0 lettura KO
|
|
|
|
' se macchina collegata e non in debug
|
|
If (Not (Debug)) Then
|
|
|
|
nComOk = Server.GetNcInfo2_C(SessionOpened, nProcess, ncInfo, ErrClass, ErrNum)
|
|
|
|
If (nComOk = ERRORE_OSAI) Then
|
|
|
|
ErrMsg = "Error on reading NcInfo2" & vbCrLf & what_happened()
|
|
Return False ' In uscita setto variabile a ERRORVALUE errore
|
|
|
|
Else
|
|
|
|
Return True
|
|
|
|
End If
|
|
|
|
' se sono in debug
|
|
Else
|
|
|
|
Return True
|
|
|
|
End If ' Endif gestione macchina collegata
|
|
|
|
End Function
|
|
|
|
'------------------------------
|
|
' Lettura process stato info Cn
|
|
'------------------------------
|
|
'
|
|
' ha causato molto dispiacere il fatto che se uso la Server.GetProcessStatus_C con winnbi < 3.1.1
|
|
' dà una UNRESOLVED a run time della GetProcessStatus_C8 ( notare l' "8" finale ) nella CNDEXLINK.DLL
|
|
'
|
|
' soluzione : con Win Nbi recenti, uso Server.GetProcessStatus_C ; con Winnbi vecchi, faccio override
|
|
' di questa funzione USANDO LA STRUTTURA NUOVA CndexLinkDotNet.Cndex.PROCDATA ( altrimenti non è possibile
|
|
' fare override; ma poi uso una variabile locale tipo vecchio ( PROCDATA ) e in caso di esito positivo,
|
|
' copio i dati risultanti.
|
|
'
|
|
' Attenzione : si ha lo stesso problema anche con la Server.GetNcInfo1_C ma curiosamente non con le funzioni
|
|
' di lettura scrittura variabili CN .... boh !!
|
|
Public Overridable Function NcProcessStatus(ByRef ncInfo As CndexLinkDotNet.Cndex.PROCDATA, Optional ByVal nProcess As Integer = 1) As Boolean
|
|
|
|
Dim nComOk As Short ' Se 1 lettura OK Se 0 lettura KO
|
|
|
|
' se macchina collegata e non in debug
|
|
If (Not (Debug)) Then
|
|
|
|
nComOk = Server.GetProcessStatus_C(SessionOpened, nProcess, ncInfo, ErrClass, ErrNum)
|
|
|
|
If (nComOk = ERRORE_OSAI) Then
|
|
|
|
ErrMsg = "Error on GetProcessStatus_C" & vbCrLf & what_happened()
|
|
Return False ' In uscita setto variabile a ERRORVALUE errore
|
|
|
|
Else
|
|
|
|
Return True
|
|
|
|
End If
|
|
|
|
' se sono in debug
|
|
Else
|
|
|
|
Return True
|
|
|
|
End If ' Endif gestione macchina collegata
|
|
|
|
End Function
|
|
|
|
' ---------------------------------
|
|
' Lettura dati assi
|
|
'----------------------------------
|
|
Public Overridable Function GetAxesValue(ByRef AxesData() As CndexLinkDotNet.Cndex.GETINTDATA, ByVal AsciiNameAxe As Byte, ByVal nTypeCoord As Integer, Optional ByVal nProcess As Integer = 1) As Boolean
|
|
|
|
Dim nComOk As Short ' Se 1 lettura OK Se 0 lettura KO
|
|
|
|
' se macchina collegata e non in debug
|
|
If (Not (Debug)) Then
|
|
|
|
nComOk = Server.GetAxesPosition_C(SessionOpened, nProcess, AsciiNameAxe, nTypeCoord, 1, AxesData, ErrClass, ErrNum)
|
|
|
|
If (nComOk = ERRORE_OSAI) Then
|
|
|
|
ErrMsg = "Error on reading Axes Data" & vbCrLf & what_happened()
|
|
Return False ' In uscita setto variabile a ERRORVALUE errore
|
|
|
|
Else
|
|
|
|
Return True
|
|
|
|
End If
|
|
|
|
' se sono in debug
|
|
Else
|
|
|
|
Return True
|
|
|
|
End If ' Endif gestione macchina collegata
|
|
|
|
End Function
|
|
|
|
' -------------------------------------------------
|
|
' Lettura stato macchina su processo passato per parametro
|
|
'--------------------------------------------------
|
|
Public Overridable Function GetMachineStatus(Optional ByVal nProcess As Integer = 1) As Byte
|
|
Dim RetVal As Short
|
|
Dim ncInfo As New CndexLinkDotNet.Cndex.GETINFO1DATA
|
|
' se macchina collegata e non in debug
|
|
|
|
If (Not (Debug)) Then
|
|
|
|
RetVal = Server.GetNcInfo1_C(SessionOpened, nProcess, ncInfo, ErrClass, ErrNum)
|
|
If RetVal > 0 Then
|
|
Return ncInfo.status
|
|
|
|
Else
|
|
ErrMsg = "Error on reading Machine Status" & vbCrLf & what_happened()
|
|
Return 0
|
|
End If
|
|
' se sono in debug
|
|
Else
|
|
Return True
|
|
End If
|
|
End Function
|
|
|
|
' -------------------------------------------------
|
|
' Lettura modalità macchina su processo passato per parametro
|
|
'--------------------------------------------------
|
|
Public Overridable Function GetModeSelected(Optional ByVal nProcess As Integer = 1) As Byte
|
|
Dim RetVal As Short
|
|
Dim ncInfo As New CndexLinkDotNet.Cndex.GETINFO1DATA
|
|
|
|
' se macchina collegata e non in debug
|
|
If (Not (Debug)) Then
|
|
|
|
RetVal = Server.GetNcInfo1_C(SessionOpened, nProcess, ncInfo, ErrClass, ErrNum)
|
|
If RetVal > 0 Then
|
|
Return ncInfo.mode_select
|
|
|
|
Else
|
|
ErrMsg = "Error on reading Machine Mode" & vbCrLf & what_happened()
|
|
Return 0
|
|
End If
|
|
' se sono in debug
|
|
Else
|
|
Return True
|
|
End If
|
|
End Function
|
|
|
|
' ---------------------------------
|
|
' CN in modalità AUTO
|
|
'----------------------------------
|
|
Public Overridable Function SetAutoMode(Optional ByVal nProcess As Integer = 1) As Boolean
|
|
|
|
Dim nComOk As Short ' Se 1 OK ; Se 0 KO
|
|
|
|
' se macchina collegata e non in debug
|
|
If (Not (Debug)) Then
|
|
|
|
nComOk = Server.SetProcessMode_C(SessionOpened, nProcess, 2, ErrClass, ErrNum)
|
|
|
|
If (nComOk = ERRORE_OSAI) Then
|
|
|
|
ErrMsg = "Error on SetAutoMode" & vbCrLf & what_happened()
|
|
Return False ' In uscita setto variabile a ERRORVALUE errore
|
|
|
|
Else
|
|
|
|
Return True
|
|
|
|
End If
|
|
|
|
' se sono in debug
|
|
Else
|
|
Return True
|
|
End If ' Endif gestione macchina collegata
|
|
|
|
End Function
|
|
|
|
' ---------------------------------
|
|
' Seleziona part program da rendere attivo
|
|
'----------------------------------
|
|
Public Overridable Function ActivateProgramOnNC(ByRef szNamePrg As String, Optional ByVal nProcess As Integer = 1) As Boolean
|
|
|
|
' returns TRUE if activate OK
|
|
|
|
Dim nComOk As Short
|
|
|
|
' se macchina collegata e non in debug
|
|
If (Not (Debug)) Then
|
|
|
|
nComOk = Server.SelectPartProgram_C(SessionOpened, nProcess, szNamePrg, ErrClass, ErrNum)
|
|
|
|
If (nComOk = ERRORE_OSAI) Then
|
|
|
|
ErrMsg = Message.msg(112) & szNamePrg & vbCrLf & what_happened()
|
|
Return False ' In uscita setto variabile a ERRORVALUE errore
|
|
|
|
Else
|
|
|
|
Return True
|
|
|
|
End If
|
|
|
|
' se sono in debug
|
|
Else
|
|
Return True
|
|
End If ' Endif gestione macchina collegata
|
|
|
|
End Function
|
|
|
|
Public Overridable Function ActivatePP(ByVal szPartPrg As String, Optional ByVal nProcess As UShort = 1) As Short
|
|
Return ActivateProgramOnNC(szPartPrg, nProcess)
|
|
End Function
|
|
|
|
' ---------------------------------
|
|
' Setta modalità CN Edit, Auto, MDI, ....
|
|
'----------------------------------
|
|
Public Overridable Function SetMode(ByVal nMode As Short, Optional ByVal nProcess As Integer = 1) As Boolean
|
|
|
|
Dim nComOk As Short ' Se 1 lettura OK Se 0 lettura KO
|
|
|
|
' se macchina collegata e non in debug
|
|
If (Not (Debug)) Then
|
|
|
|
nComOk = Server.SetProcessMode_C(SessionOpened, nProcess, nMode, ErrClass, ErrNum)
|
|
|
|
If (nComOk = ERRORE_OSAI) Then
|
|
|
|
ErrMsg = Message.msg(119) & vbCrLf & "Class: " & Str(ErrClass) & " Number: 0x" & Hex(ErrNum)
|
|
Return False ' In uscita setto variabile a ERRORVALUE errore
|
|
|
|
Else
|
|
|
|
Return True
|
|
|
|
End If
|
|
|
|
' se sono in debug
|
|
Else
|
|
|
|
Return True
|
|
|
|
End If ' Endif gestione macchina collegata
|
|
|
|
End Function
|
|
|
|
' ---------------------------------
|
|
' Stringa MDI da eseguire
|
|
'----------------------------------
|
|
Public Overridable Function SetMdiString(ByRef szString As String, Optional ByVal nProcess As Integer = 1) As Boolean
|
|
|
|
Dim nComOk As Short ' Se 1 lettura OK Se 0 lettura KO
|
|
|
|
' se macchina collegata e non in debug
|
|
If (Not (Debug)) Then
|
|
|
|
nComOk = Server.SetMdiString_C(SessionOpened, nProcess, szString, ErrClass, ErrNum)
|
|
|
|
If (nComOk = ERRORE_OSAI) Then
|
|
|
|
ErrMsg = Message.msg(120) & vbCrLf & "Class: " & Str(ErrClass) & " Number: 0x" & Hex(ErrNum)
|
|
Return False ' In uscita setto variabile a ERRORVALUE errore
|
|
|
|
Else
|
|
|
|
Return True
|
|
|
|
End If
|
|
|
|
' se sono in debug
|
|
Else
|
|
|
|
Return True
|
|
|
|
End If ' Endif gestione macchina collegata
|
|
|
|
End Function
|
|
|
|
#End Region
|
|
|
|
#Region " funzione nuove per open series, qui vuote"
|
|
|
|
|
|
|
|
Public Overridable Function GetActualTool(Optional ByVal nProcess As Integer = 1) As Double
|
|
Return 0
|
|
End Function
|
|
|
|
Public Overridable Function GetActualCorr(Optional ByVal nProcess As Integer = 1) As UShort
|
|
Return 0
|
|
End Function
|
|
|
|
Public Overridable Function GetFeedOverride(Optional ByVal nProcess As Integer = 1) As UShort
|
|
Return 0
|
|
End Function
|
|
|
|
Public Overridable Function GetRapidOverride(Optional ByVal nProcess As Integer = 1) As UShort
|
|
Return 0
|
|
End Function
|
|
|
|
Public Overridable Function GetSpeedOverride(Optional ByVal nProcess As Integer = 1) As UShort
|
|
Return 0
|
|
End Function
|
|
|
|
Public Overridable Function GetProgrammedRapid(Optional ByVal nProcess As Integer = 1) As Double
|
|
Return 0.0
|
|
End Function
|
|
|
|
Public Overridable Function GetProgrammedFeed(Optional ByVal nProcess As Integer = 1) As Double
|
|
Return 0.0
|
|
End Function
|
|
|
|
Public Overridable Function GetProgrammedSpeed(Optional ByVal nProcess As Integer = 1) As Double
|
|
Return 0.0
|
|
End Function
|
|
|
|
Public Overridable Function GetActualFeed(Optional ByVal nProcess As Integer = 1) As Double
|
|
Return 0.0
|
|
End Function
|
|
|
|
Public Overridable Function GetActualSpeed(Optional ByVal nProcess As Integer = 1) As Double
|
|
Return 0.0
|
|
End Function
|
|
|
|
Public Overridable Function GetActualToolLen(ByVal nRecord As UInteger) As Double
|
|
|
|
Dim n_ret As Short
|
|
Dim pRecordBuff As CndexLinkDotNet.Cndex.OFFSET_TABLE
|
|
|
|
If (Not (Debug)) Then
|
|
|
|
n_ret = Server.GetOffsetTabRecord_C(SessionOpened, nRecord, pRecordBuff, ErrClass, ErrNum)
|
|
|
|
If (n_ret = ERRORE_OSAI) Then
|
|
ErrMsg = Message.msg(120) & vbCrLf & "Class: " & Str(ErrClass) & " Number: 0x" & Hex(ErrNum)
|
|
Return -999998.999 ' In uscita setto variabile a ERRORVALUE errore
|
|
Else
|
|
Return pRecordBuff.tactl1
|
|
End If
|
|
Else ' se sono in debug
|
|
Return 10.0
|
|
End If ' Endif gestione macchina collegata
|
|
|
|
End Function
|
|
|
|
Public Overridable Function GetActualToolDiam(ByVal nRecord As UInteger) As Double
|
|
|
|
Dim n_ret As Short
|
|
Dim pRecordBuff As CndexLinkDotNet.Cndex.OFFSET_TABLE
|
|
|
|
If (Not (Debug)) Then
|
|
|
|
n_ret = Server.GetOffsetTabRecord_C(SessionOpened, nRecord, pRecordBuff, ErrClass, ErrNum)
|
|
|
|
If (n_ret = ERRORE_OSAI) Then
|
|
ErrMsg = Message.msg(120) & vbCrLf & "Class: " & Str(ErrClass) & " Number: 0x" & Hex(ErrNum)
|
|
Return -999997.999 ' In uscita setto variabile a ERRORVALUE errore
|
|
Else
|
|
Return pRecordBuff.tdiameter
|
|
End If
|
|
Else ' se sono in debug
|
|
Return 20.0
|
|
End If ' Endif gestione macchina collegata
|
|
|
|
End Function
|
|
|
|
Public Overridable Function GetActualToolDiam2(ByVal nRecord As UInteger) As Double
|
|
|
|
Dim n_ret As Short
|
|
Dim pRecordBuff As CndexLinkDotNet.Cndex.OFFSET_TABLE
|
|
|
|
If (Not (Debug)) Then
|
|
|
|
n_ret = Server.GetOffsetTabRecord_C(SessionOpened, nRecord, pRecordBuff, ErrClass, ErrNum)
|
|
|
|
If (n_ret = ERRORE_OSAI) Then
|
|
ErrMsg = Message.msg(120) & vbCrLf & "Class: " & Str(ErrClass) & " Number: 0x" & Hex(ErrNum)
|
|
Return -999997.999 ' In uscita setto variabile a ERRORVALUE errore
|
|
Else
|
|
Return pRecordBuff.tcacdiam
|
|
|
|
End If
|
|
Else ' se sono in debug
|
|
Return 20.0
|
|
End If ' Endif gestione macchina collegata
|
|
|
|
End Function
|
|
|
|
Public Overridable Function PutFile(ByRef szPathFile As String, ByVal szTargetPath As String, ByRef nErrClass As UInteger, ByRef nErrNum As UInteger, ByRef FileSize As Integer) As Integer
|
|
Return 0
|
|
End Function
|
|
|
|
Public Overridable Function ReadPPLines(ByVal nProcess As Integer, ByRef EightLines() As String, ByRef nErrClass As UInteger, ByRef nErrNum As UInteger) As Boolean
|
|
Return True
|
|
End Function
|
|
|
|
#End Region
|
|
|
|
#Region "Controllo win Nbi"
|
|
|
|
''' <summary>
|
|
''' Verifica se è installata la WINNBI e se è una versione compatibile con .NET
|
|
''' </summary>
|
|
''' <param name="DotNet">Versione compatibile con framework .NET</param>
|
|
Shared Function GetWinnbi(Optional ByRef DotNet As Boolean = False) As Boolean
|
|
|
|
Dim DotNetMinVersion As New System.Version("3.1.1")
|
|
Dim readValue() As String
|
|
Dim Ver As System.Version
|
|
Dim key As RegistryKey
|
|
Dim b_ret As Boolean
|
|
|
|
b_ret = False
|
|
|
|
Try
|
|
|
|
'leggo le versioni installate
|
|
key = Registry.LocalMachine.OpenSubKey("SOFTWARE\OSAI\WinNBI")
|
|
readValue = key.GetSubKeyNames
|
|
'verifico che ci sia al massimo una versione installata
|
|
If readValue.Count > 1 Then
|
|
MessageBox.Show("more versions of WinNBI found." & vbNewLine &
|
|
"Please ckeck keys in HKEY_LOCAL_MACHINE\SOFTWARE\OSAI\WinNBI",
|
|
"Error on GetWinnbi", MessageBoxButtons.OK, MessageBoxIcon.Error)
|
|
End If
|
|
|
|
'MsgBox("readValue(0) = " & readValue(0) & vbCrLf & "readValue.Count = " & readValue.Count.ToString)
|
|
|
|
' in XP la 4.0.1 mi ritorna 3.2 ....errore di lunghezza
|
|
|
|
If readValue(0).Length < 4 Then
|
|
readValue(0) = readValue(0) & "0"
|
|
End If
|
|
|
|
'La precisione di Osai nel rilasciare le versioni !!
|
|
' If readValue(0) = "3.05" Then readValue(0) = "3.0.5"
|
|
' If readValue(0) = "3.03" Then readValue(0) = "3.0.3"
|
|
|
|
If (readValue(0).Substring(0, 3) = "3.0") And (readValue(0).Substring(3, 1) <> ".") Then
|
|
readValue(0) = Replace(readValue(0), "3.0", "3.0.")
|
|
End If
|
|
|
|
|
|
For Each szVersion As String In readValue
|
|
Ver = New System.Version(szVersion)
|
|
|
|
'se versione compatibile con framework .NET
|
|
If Ver >= DotNetMinVersion Then
|
|
DotNet = True
|
|
End If
|
|
|
|
'se entro almeno una volta ho trovato almeno una versione installata
|
|
b_ret = True
|
|
|
|
Next
|
|
|
|
|
|
'DotNet = False '!!
|
|
|
|
Catch e As Exception
|
|
|
|
If Not b_force_S10WLK32 Then
|
|
MsgBox("Unable to get WinNbi version... " & e.ToString, MsgBoxStyle.Critical, "error in GetWinnbi")
|
|
End If
|
|
|
|
b_ret = False
|
|
|
|
|
|
End Try
|
|
|
|
Return b_ret
|
|
|
|
End Function
|
|
|
|
''' <summary>
|
|
''' restituisce la versione installata di WINNBI
|
|
''' </summary>
|
|
Shared Function GetWinnbi_version() As String
|
|
|
|
Dim readValue() As String
|
|
Dim key As RegistryKey
|
|
|
|
Try
|
|
'leggo le versioni installate
|
|
key = Registry.LocalMachine.OpenSubKey("SOFTWARE\OSAI\WinNBI")
|
|
readValue = key.GetSubKeyNames
|
|
|
|
'La precisione di Osai nel rilasciare le versioni !!
|
|
If readValue(0) = "3.05" Then readValue(0) = "3.0.5"
|
|
If readValue(0) = "3.03" Then readValue(0) = "3.0.3"
|
|
Return readValue(0)
|
|
|
|
Catch e As Exception
|
|
MsgBox("Unable to get WinNbi version... " & e.ToString, "error in GetWinnbi_version")
|
|
|
|
Return "0.9.99"
|
|
|
|
End Try
|
|
|
|
|
|
|
|
|
|
End Function
|
|
|
|
#End Region
|
|
|
|
#Region "Explain what happened"
|
|
|
|
' Error codes for NETBIOS class (class 3)
|
|
'
|
|
' 0x0001 Illegal buffer length
|
|
' 0x0003 Illegal command
|
|
' 0x0005 Command timed out
|
|
' 0x0006 Message incomplete, issue another command
|
|
' 0x0007 Illegal buffer address
|
|
' 0x0008 Session number out of range
|
|
' 0x0009 No resource available
|
|
' 0x000a Session closed
|
|
' 0x000b Command cancelled
|
|
' 0x000d Duplicate name
|
|
' 0x000e Name table full
|
|
' 0x000f No deletions, name has active sessions
|
|
' 0x0011 Local session table full
|
|
' 0x0012 Remote session table full
|
|
' 0x0013 Illegal name number
|
|
' 0x0014 No callname
|
|
' 0x0015 Cannot put * in NCB_NAME
|
|
' 0x0016 Name in use on remote adapter
|
|
' 0x0017 Name deleted
|
|
' 0x0018 Session ended abnormally
|
|
' 0x0019 Name conflict detected
|
|
' 0x0021 Interface busy, IRET before retrying
|
|
' 0x0022 Too many commands outstanding, retry later
|
|
' 0x0023 Ncb_lana_num field invalid
|
|
' 0x0024 Command completed while cancel occurring
|
|
' 0x0026 Command not valid to cancel
|
|
' 0x0030 Name defined by anther local process
|
|
' 0x0034 Environment undefined. RESET required
|
|
' 0x0035 Required OS resources exhausted
|
|
' 0x0036 Max number of applications exceeded
|
|
' 0x0037 No saps available for netbios
|
|
' 0x0038 Requested resources are not available
|
|
' 0x0039 Invalid ncb address or length > segment
|
|
' 0x003B Invalid NCB DDID
|
|
' 0x003C Lock of user area failed
|
|
' 0x003f NETBIOS not loaded
|
|
' 0x0040 System error
|
|
|
|
Const NETBIOS_class As Integer = 3
|
|
|
|
Const No_callname_err As Integer = 20 ' 0x0014 No callname
|
|
|
|
Const CNC_Error_class As Integer = 4
|
|
|
|
Const CL4_Syntax_error As Integer = 1
|
|
Const CL4_Format_error As Integer = 8
|
|
Const CL4_Undefined_symbol As Integer = 9
|
|
Const CL4_Duplicated_label As Integer = 53
|
|
Const CL4_Label_too_long As Integer = 55
|
|
Const CL4_Sub_Table_overflow As Integer = 56
|
|
Const CL4_Label_Table_overflow As Integer = 57
|
|
Const CL4_Part_program_handling_error As Integer = 65
|
|
Const CL4_Part_program_not_found As Integer = 66
|
|
|
|
Const CNDEX_INTERFACE_class As Integer = 10
|
|
|
|
Const ERR_SERVER_ALREADY_CREATED As Integer = 1 ' CNDEX server already created
|
|
Const ERR_CREATING_SERVER_OBJECT As Integer = 2 ' Error creating CNDEX server
|
|
Const ERR_SERVER_NOT_CREATED As Integer = 3 ' CNDEX server never created or already released
|
|
Const ERR_INVALID_PARAMETER As Integer = 4 ' Invalid value for one or more parameters
|
|
Const ERR_OPTION_NOT_ENABLED As Integer = 5 ' The COMMUNICATION option is not enabled for connected CNC
|
|
|
|
|
|
Function what_happened() As String
|
|
Dim sz_return As String
|
|
|
|
sz_return = "Class: " & Str(ErrClass) & " Number: 0x" & Hex(ErrNum)
|
|
|
|
Select Case ErrClass
|
|
|
|
Case NETBIOS_class ' --------------------------- class3 - NETBIOS -----------------
|
|
|
|
Select Case ErrNum
|
|
Case No_callname_err
|
|
sz_return = "Please verify connection ( cable etc. )" & vbCrLf & vbCrLf & "( No call name - Class 3 err 0x14 )"
|
|
|
|
End Select
|
|
|
|
Case CNC_Error_class ' --------------------------- class4 - CNC_Error -----------------
|
|
|
|
Select Case ErrNum
|
|
Case CL4_Syntax_error
|
|
sz_return = "Syntax error" & vbCrLf & vbCrLf & "( Class 4 err 1 )"
|
|
|
|
Case CL4_Format_error
|
|
sz_return = "Format error" & vbCrLf & vbCrLf & "( Class 4 err 8 )"
|
|
|
|
Case CL4_Undefined_symbol
|
|
sz_return = "Undefined symbol" & vbCrLf & vbCrLf & "( Class 4 err 9 )"
|
|
|
|
Case CL4_Duplicated_label
|
|
sz_return = "Duplicated label" & vbCrLf & vbCrLf & "( Class 4 err 53 )"
|
|
|
|
Case CL4_Label_too_long
|
|
sz_return = "Label too long" & vbCrLf & vbCrLf & "( Class 4 err 55 )"
|
|
|
|
Case CL4_Sub_Table_overflow
|
|
sz_return = "Subroutine Table overflow" & vbCrLf & vbCrLf & "( Class 4 err 56 )"
|
|
|
|
Case CL4_Label_Table_overflow
|
|
sz_return = "Label Table overflow" & vbCrLf & vbCrLf & "( Class 4 err 57 )"
|
|
|
|
Case CL4_Part_program_handling_error
|
|
sz_return = "Part_program_handling_error" & vbCrLf & vbCrLf & "( Class 4 err 65 )"
|
|
|
|
Case CL4_Part_program_not_found
|
|
sz_return = "Part_program_not_found" & vbCrLf & vbCrLf & "( Class 4 err 66 )"
|
|
|
|
End Select ' class4 - CNC_Error
|
|
|
|
|
|
|
|
Case CNDEX_INTERFACE_class ' --------------------------- class 10 - CNDEX_INTERFACE -----------------
|
|
|
|
Select Case ErrNum
|
|
Case ERR_SERVER_ALREADY_CREATED
|
|
sz_return = "CNDEX server already created ( Class 10 err 1 )"
|
|
|
|
Case ERR_CREATING_SERVER_OBJECT
|
|
sz_return = "Error creating CNDEX server ( Class 10 err 2 )"
|
|
|
|
Case ERR_SERVER_NOT_CREATED
|
|
sz_return = "CNDEX server never created or already released ( Class 10 err 3 )"
|
|
|
|
Case ERR_INVALID_PARAMETER
|
|
sz_return = "Invalid value for one or more parameters ( Class 10 err 4 )"
|
|
|
|
Case ERR_OPTION_NOT_ENABLED
|
|
sz_return = vbCrLf & "The 'A06 CndexLink communication' option is not enabled on connected CNC ( Class 10 err 5 )"
|
|
End Select
|
|
|
|
End Select
|
|
|
|
|
|
Return sz_return
|
|
|
|
End Function
|
|
|
|
#End Region
|
|
|
|
End Class
|
|
|