5-66
Remote Operation
Example Programs
Private Function CheckLambdaZero
(DevSessionNum As Long, Optional ErrMsg As String = "") _
As Long
’-- This function will check to see if a TLS LambdaZero is about to occur. If so, force it to
’-- happen to prevent timeouts and ensure data integrity.
’--
Dim TimeStart As Double
Dim STB As Integer
Dim Status As Long
On Error GoTo ErrorHandler
’-- Summarize Lambda Zero Pending to the status byte register (bit 7, decimal 128)
Status = viVPrintf(DevSessionNum, "STAT:OPER:ENAB 4" & Chr$(10), 0)
If Status <> 0 Then GoTo ErrorHandler
’-- Summarize Lambda Zero Complete to the status byte register (bit 3, decimal 8)
Status = viVPrintf(DevSessionNum, "STAT:QUES:ENAB 8" & Chr$(10), 0)
If Status <> 0 Then GoTo ErrorHandler
’-- Check to see if a Lambda Zero is pending
Status = viReadSTB(DevSessionNum, STB)
If Status <> 0 Then GoTo ErrorHandler
’-- If a Lambda Zero is pending, force it to occur
If (STB And 128) = 128 Then
’-- Start Lambda Zero
Status = viVPrintf(DevSessionNum, "CAL:WAV:INT" & Chr$(10), 0)
If Status <> 0 Then GoTo ErrorHandler
TimeStart = Now * 86400 ’Used to track elapsed time
’-- Wait for Lambda Zero to complete
Do
Call Sleep(5)
DoEvents
’-- Read STB to determine when Lambda Zero is complete
Status = viReadSTB(DevSessionNum, STB)
If Status <> 0 Then GoTo ErrorHandler
’-- Check for timeout (this could take over 5 minutes)
If ((Now * 86400) - TimeStart) > (LZ_TMO) Then GoTo ErrorHandler
Loop While (STB And 8) <> 8
End If
’-- Clear the Status Byte
Status = viVPrintf(DevSessionNum, "*CLS" & Chr$(10), 0)
If Status <> 0 Then GoTo ErrorHandler
’-- Summarize Lambda Zero In Progress to the status byte (bit 7, decimal 128).
’-- This can be used later to detect if an operation timed out due to a LambdaZero
Artisan Technology Group - Quality Instrumentation ... Guaranteed | (888) 88-SOURCE | www.artisantg.com