Thanks for the reply. Previous to to VISA the software ran on the driver supplied by the mfgr of the GPIB board, Measurements Computing.
Here's the code:
Function WriteToInstrument(tq_num%, cmd$, rd_delay&) As String
'On Local Error GoTo errWrtInst
Dim vi As Long 'Session to instrument
Dim vi_status As Long
Dim rSize As Long 'return byte count for read operation
Dim strRes As String
Static viDFRM As Long 'Sessions of Default Resource Manager
Static wti_count%
'Debug.Print TQ_Model$(tq_num%) & " cmd$[" & cmd$ & "]"
If wti_count% = 0 Then
Track_VISA_Data "reset", whchInstr$, trkDFRM&, vi, trkStatus$, trkCmd$
wti_count% = 1
End If
WriteToInstrument = "OK"
sz% = -1
Select Case tq_num%
Case Is = AMM%
If TQ_Address$(AMM%) = TQ_Address$(PWS%) Then
tq_num% = PWS%
End If
If TQ_BusParameters$(tq_num%) = "GPIB" And InStr(cmd$, "?") Then
sz% = CInt((pwsPoints% + 1) * 12)
'Debug.Print RptLog$(tst_prc%) & " cmd$/sz%[" & cmd$ & "/" & sz% & "]"
strRes = String(sz%, Chr$(32))
Else
strRes = String(200, Chr$(32))
End If
Case Else
strRes = String(32, Chr$(32)) '200
End Select
If viDFRM = 0 Then
If cmd$ "release" Then
'Open the default resource manager session for valid devices
Select Case TQ_BusParameters$(tq_num%)
Case Is = "GPIB", "LAN", "LANtoGPIB", "LANtoMODBUS"
vi_status = viOpenDefaultRM(viDFRM)
Debug.Print "Open DRM " & "[" & viDFRM & "]"
If vi_status VI_SUCCESS Then
Track_VISA_Data "Open DRM", whchInstr$, viDFRM, vi, Hex(vi_status), Data_Filter(Trim(cmd$))
RptLog$(err_des%) = "Fail Open: Default Resource Manager session[" & Str(viDFRM) & "]"
WriteToInstrument = "VISA Error!"
viDFRM = 0
GoTo errWrtInst
End If
Case Else 'RS232, PCI, USB
End Select
End If
End If
If cmd$ = "release" Then
If viDFRM > 0 Then
Debug.Print "Close " & TQ_Model$(tq_num%) & "[" & viDFRM & "]"
vi_status = viClose(viDFRM)
viDFRM = 0
Exit Function
Else
Exit Function
End If
End If
Select Case TQ_BusParameters$(tq_num%)
Case Is = "GPIB"
wti_count% = wti_count% + 1
'Debug.Print RptLog$(tst_prc%) & " wti_count%[" & wti_count% & "]"
'Open the session to the resource
whchInstr$ = "GPIB1::" & TQ_Address$(tq_num%) & "::INSTR"
vi_status = viOpen(viDFRM, whchInstr$, VI_NULL, VI_NULL, vi)
trkDFRM& = viDFRM
trkStatus$ = Hex(vi_status)
trkCmd$ = Data_Filter(Trim(cmd$))
Track_VISA_Data "open", whchInstr$, trkDFRM&, vi, trkStatus$, trkCmd$
If vi_status VI_SUCCESS Then
RptLog$(err_des%) = "viOpen session Failed[" & Hex(vi_status) & "][" & Format$(vi, "0") & "]"
WriteToInstrument = "VISA Error!-tq_num%[" & Format$(tq_num%, "0") & "]"
viDFRM = 0
GoTo errWrtInst
End If
'write to device - rd_delay& = 0 Then
cmd$ = cmd$ & vbLf
vi_status = viWrite(vi, cmd$, Len(cmd$), rSize)
If vi_status VI_SUCCESS Then
RptLog$(err_des%) = "viWrite Failed[" & Hex(vi_status) & "]"
WriteToInstrument = "VISA Error!-tq_num%[" & Format$(tq_num%, "0") & "]"
'Track_VISA_Data "viWrite", whchInstr$, trkDFRM&, vi, trkStatus$, trkCmd$
viDFRM = 0
GoTo errWrtInst
End If
Else
rd_delay& = Abs(rd_delay&)
End If
'Read the results as a string.
If InStr(cmd$, "?") And rd_delay& > 0 Then '11.09.02
Sleep rd_delay&
Select Case sz% 'tq_num%
Case Is > 0 '= AMM%
vi_status = viRead(vi, strRes, sz%, rSize)
Case Else
sz% = 64
vi_status = viRead(vi, strRes, sz%, rSize)
End Select
If vi_status VI_SUCCESS Then
trkDFRM& = viDFRM
trkStatus$ = Hex(vi_status)
trkCmd$ = Data_Filter(Trim(cmd$))
Track_VISA_Data "read", whchInstr$, trkDFRM&, vi, trkStatus$, trkCmd$
'If vi_status VI_SUCCESS_MAX_CNT Then
RptLog$(err_des%) = "viRead Failed[" & Hex(vi_status) & "] byte count[" & Format$(sz%, "0") & "/" & Format$(rSize, "0") & "]"
WriteToInstrument = "VISA Error!-tq_num%[" & Format$(tq_num%, "0") & "]"
viDFRM = 0
GoTo errWrtInst
End If
'Debug.Print "strRes[" & strRes & "]"
dat_str$ = strRes
WriteToInstrument = Data_Filter(Trim(dat_str$))
End If
vi_status = viClose(vi)
If vi_status VI_SUCCESS Then
Track_VISA_Data "close vi", whchInstr$, trkDFRM&, vi, trkStatus$, trkCmd$
RptLog$(err_des%) = RptLog$(err_des%) & " Fail close:[" & Str(viDFRM) & "]"
WriteToInstrument = "VISA Error!"
End If
'If wti_count% >= 1500 Then
' vi_status = viClose(viDFRM)
' If vi_status VI_SUCCESS Then
' RptLog$(err_des%) = "Fail close:[" & Str(viDFRM) & "]"
' WriteToInstrument = "VISA Error!"
' End If
' viDFRM = 0
' wti_count% = 0
'End If
Case Is = "LAN"
wti_count% = wti_count% + 1
'Debug.Print RptLog$(tst_prc%) & " wti_count%[" & wti_count% & "]"
'Open the session to the resource
whchInstr$ = "TCPIP0::" & TQ_LanAddress$(tq_num%) & "::INSTR"
vi_status = viOpen(viDFRM, whchInstr$, VI_NULL, VI_NULL, vi)
trkDFRM& = viDFRM
trkStatus$ = Hex(vi_status)
trkCmd$ = Data_Filter(Trim(cmd$))
'Track_VISA_Data "open", whchInstr$, trkDFRM&, vi, trkStatus$, trkCmd$
If vi_status VI_SUCCESS Then
RptLog$(err_des%) = "viOpen session Failed[" & Hex(vi_status) & "][" & Format$(vi, "0") & "]"
WriteToInstrument = "VISA Error!-tq_num%[" & Format$(tq_num%, "0") & "]"
viDFRM = 0
GoTo errWrtInst
End If
'write to device - rd_delay& = 0 Then
cmd$ = cmd$ & vbLf
vi_status = viWrite(vi, cmd$, Len(cmd$), rSize)
If vi_status VI_SUCCESS Then
RptLog$(err_des%) = "viWrite Failed[" & Hex(vi_status) & "]"
WriteToInstrument = "VISA Error!-tq_num%[" & Format$(tq_num%, "0") & "]"
'Track_VISA_Data "viWrite", whchInstr$, trkDFRM&, vi, trkStatus$, trkCmd$
viDFRM = 0
GoTo errWrtInst
End If
Else
rd_delay& = Abs(rd_delay&)
End If
'Read the results as a string.
If InStr(cmd$, "?") And rd_delay& > 0 Then '11.09.02
Sleep rd_delay&
Select Case sz% 'tq_num%
Case Is > 0 '= AMM%
vi_status = viRead(vi, strRes, sz%, rSize)
Case Else
sz% = 64
vi_status = viRead(vi, strRes, sz%, rSize)
End Select
If vi_status VI_SUCCESS Then
trkDFRM& = viDFRM
trkStatus$ = Hex(vi_status)
trkCmd$ = Data_Filter(Trim(cmd$))
'Track_VISA_Data "read", whchInstr$, trkDFRM&, vi, trkStatus$, trkCmd$
'If vi_status VI_SUCCESS_MAX_CNT Then
RptLog$(err_des%) = "viRead Failed[" & Hex(vi_status) & "] byte count[" & Format$(sz%, "0") & "/" & Format$(rSize, "0") & "]"
WriteToInstrument = "VISA Error!-tq_num%[" & Format$(tq_num%, "0") & "]"
viDFRM = 0
GoTo errWrtInst
End If
'Debug.Print "strRes[" & strRes & "]"
dat_str$ = strRes
WriteToInstrument = Data_Filter(Trim(dat_str$))
End If
vi_status = viClose(vi)
If vi_status VI_SUCCESS Then
'Track_VISA_Data "close vi", whchInstr$, trkDFRM&, vi, trkStatus$, trkCmd$
RptLog$(err_des%) = RptLog$(err_des%) & " Fail close:[" & Str(viDFRM) & "]"
WriteToInstrument = "VISA Error!"
End If
Case Is = "LANtoGPIB" 'see Prologix note
DoEvents
'Open the session to the resource
whchInstr$ = "TCPIP0::" & TQ_LanAddress$(tq_num%) & "::" & TQ_LanPort$(tq_num%) & "::SOCKET"
vi_status = viOpen(viDFRM, whchInstr$, VI_NULL, VI_NULL, vi)
If vi_status VI_SUCCESS Then
RptLog$(err_des%) = "viOpen session Failed[" & Hex(vi_status) & "]"
WriteToInstrument = "VISA Error!-tq_num%[" & Format$(tq_num%, "0") & "]"
vi_status = viClose(viDFRM)
If vi_status VI_SUCCESS Then
RptLog$(err_des%) = RptLog$(err_des%) & " Fail close:[" & Str(viDFRM) & "]"
WriteToInstrument = "VISA Error!"
End If
viDFRM = 0
GoTo errWrtInst
End If
DoEvents
'write to device
For n% = 1 To 3
lan_msg$ = Choose(n%, "++addr " & TQ_Address$(tq_num%), "++auto 0", cmd$) & vbLf
vi_status = viWrite(vi, lan_msg$, Len(lan_msg$), rSize)
If vi_status VI_SUCCESS Then
RptLog$(err_des%) = "viWrite Failed[" & Data_Filter(Trim(lan_msg$)) & "/" & Hex(vi_status) & "]"
WriteToInstrument = "VISA Error!-tq_num%[" & Format$(tq_num%, "0") & "]"
vi_status = viClose(viDFRM)
If vi_status VI_SUCCESS Then
RptLog$(err_des%) = RptLog$(err_des%) & " Fail close:[" & Str(viDFRM) & "]"
WriteToInstrument = "VISA Error!"
End If
viDFRM = 0
GoTo errWrtInst
End If
DoEvents
Sleep 250
Next n%
If InStr(cmd$, "?") Then
DoEvents
Dim strLAN As String * 64
Sleep rd_delay&
lan_msg$ = "++read eoi" & vbLf
vi_status = viWrite(vi, lan_msg$, Len(lan_msg$), rSize)
If vi_status VI_SUCCESS Then
RptLog$(err_des%) = "viWrite/Read Failed[" & Data_Filter(Trim(lan_msg$)) & "/" & Hex(vi_status) & "][" & rd_delay& & "]"
WriteToInstrument = "VISA Error!-tq_num%[" & Format$(tq_num%, "0") & "]"
vi_status = viClose(viDFRM)
If vi_status VI_SUCCESS Then
RptLog$(err_des%) = RptLog$(err_des%) & " Fail close:[" & Str(viDFRM) & "]"
WriteToInstrument = "VISA Error!"
End If
viDFRM = 0
GoTo errWrtInst
End If
DoEvents
'Sleep 250
vi_status = viRead(vi, strLAN, 64, rSize)
If vi_status VI_SUCCESS Then
If vi_status VI_ERROR_TMO Then
'vi_status = viClose(vi)
viDFRM = 0
RptLog$(err_des%) = "viRead Failed[" & Hex(vi_status) & "]"
WriteToInstrument = "VISA Error!-tq_num%[" & Format$(tq_num%, "0") & "]"
vi_status = viClose(viDFRM)
If vi_status VI_SUCCESS Then
RptLog$(err_des%) = RptLog$(err_des%) & " Fail close:[" & Str(viDFRM) & "]"
WriteToInstrument = "VISA Error!"
End If
viDFRM = 0
GoTo errWrtInst
End If
End If
dat_str$ = Trim(strLAN) 'strRes
'Debug.Print " [" & Data_Filter(Trim(dat_str$)) & "]"
WriteToInstrument = Data_Filter(Trim(dat_str$))
Else
WriteToInstrument = ""
End If
vi_status = viClose(vi)
Case Is = "LANtoMODBUS"
Case Else 'RS232, PCI, USB
whchInstr$ = TQ_Model$(tq_num%)
Select Case TQ_Model$(tq_num%)
Case Is = "E3645A"
'Debug.Print "Write-TQ_Model$(tq_num%)[" & TQ_Model$(tq_num%) & "]"
dat_str$ = PWS_E3645A(cmd$)
WriteToInstrument = Data_Filter(Trim(dat_str$))
Case Is = "USB-2527", "PCI-DAS1602/12"
If cmd$ = "*IDN?" Then
WriteToInstrument = TQ_Model$(tq_num%)
End If
End Select
End Select
Exit Function
errWrtInst:
vi_status = viClose(vi) '11.09.16
RptLog$(err_src%) = "WriteToInstrument[" & whchInstr$ & "]"
RptLog$(err_idn%) = Data_Filter(Trim(cmd$))
Test_Logs "visa"
End Function
Thanks for the reply. Previous to to VISA the software ran on the driver supplied by the mfgr of the GPIB board, Measurements Computing.
Here's the code:
Function WriteToInstrument(tq_num%, cmd$, rd_delay&) As String
'On Local Error GoTo errWrtInst
Dim vi As Long 'Session to instrument
Dim vi_status As Long
Dim rSize As Long 'return byte count for read operation
Dim strRes As String
Static viDFRM As Long 'Sessions of Default Resource Manager
Static wti_count%
'Debug.Print TQ_Model$(tq_num%) & " cmd$[" & cmd$ & "]"
If wti_count% = 0 Then
Track_VISA_Data "reset", whchInstr$, trkDFRM&, vi, trkStatus$, trkCmd$
wti_count% = 1
End If
WriteToInstrument = "OK"
sz% = -1
Select Case tq_num%
Case Is = AMM%
If TQ_Address$(AMM%) = TQ_Address$(PWS%) Then
tq_num% = PWS%
End If
If TQ_BusParameters$(tq_num%) = "GPIB" And InStr(cmd$, "?") Then
sz% = CInt((pwsPoints% + 1) * 12)
'Debug.Print RptLog$(tst_prc%) & " cmd$/sz%[" & cmd$ & "/" & sz% & "]"
strRes = String(sz%, Chr$(32))
Else
strRes = String(200, Chr$(32))
End If
Case Else
strRes = String(32, Chr$(32)) '200
End Select
If viDFRM = 0 Then
If cmd$ "release" Then
'Open the default resource manager session for valid devices
Select Case TQ_BusParameters$(tq_num%)
Case Is = "GPIB", "LAN", "LANtoGPIB", "LANtoMODBUS"
vi_status = viOpenDefaultRM(viDFRM)
Debug.Print "Open DRM " & "[" & viDFRM & "]"
If vi_status VI_SUCCESS Then
Track_VISA_Data "Open DRM", whchInstr$, viDFRM, vi, Hex(vi_status), Data_Filter(Trim(cmd$))
RptLog$(err_des%) = "Fail Open: Default Resource Manager session[" & Str(viDFRM) & "]"
WriteToInstrument = "VISA Error!"
viDFRM = 0
GoTo errWrtInst
End If
Case Else 'RS232, PCI, USB
End Select
End If
End If
If cmd$ = "release" Then
If viDFRM > 0 Then
Debug.Print "Close " & TQ_Model$(tq_num%) & "[" & viDFRM & "]"
vi_status = viClose(viDFRM)
viDFRM = 0
Exit Function
Else
Exit Function
End If
End If
Select Case TQ_BusParameters$(tq_num%)
Case Is = "GPIB"
wti_count% = wti_count% + 1
'Debug.Print RptLog$(tst_prc%) & " wti_count%[" & wti_count% & "]"
'Open the session to the resource
whchInstr$ = "GPIB1::" & TQ_Address$(tq_num%) & "::INSTR"
vi_status = viOpen(viDFRM, whchInstr$, VI_NULL, VI_NULL, vi)
trkDFRM& = viDFRM
trkStatus$ = Hex(vi_status)
trkCmd$ = Data_Filter(Trim(cmd$))
Track_VISA_Data "open", whchInstr$, trkDFRM&, vi, trkStatus$, trkCmd$
If vi_status VI_SUCCESS Then
RptLog$(err_des%) = "viOpen session Failed[" & Hex(vi_status) & "][" & Format$(vi, "0") & "]"
WriteToInstrument = "VISA Error!-tq_num%[" & Format$(tq_num%, "0") & "]"
viDFRM = 0
GoTo errWrtInst
End If
'write to device - rd_delay& = 0 Then
cmd$ = cmd$ & vbLf
vi_status = viWrite(vi, cmd$, Len(cmd$), rSize)
If vi_status VI_SUCCESS Then
RptLog$(err_des%) = "viWrite Failed[" & Hex(vi_status) & "]"
WriteToInstrument = "VISA Error!-tq_num%[" & Format$(tq_num%, "0") & "]"
'Track_VISA_Data "viWrite", whchInstr$, trkDFRM&, vi, trkStatus$, trkCmd$
viDFRM = 0
GoTo errWrtInst
End If
Else
rd_delay& = Abs(rd_delay&)
End If
'Read the results as a string.
If InStr(cmd$, "?") And rd_delay& > 0 Then '11.09.02
Sleep rd_delay&
Select Case sz% 'tq_num%
Case Is > 0 '= AMM%
vi_status = viRead(vi, strRes, sz%, rSize)
Case Else
sz% = 64
vi_status = viRead(vi, strRes, sz%, rSize)
End Select
If vi_status VI_SUCCESS Then
trkDFRM& = viDFRM
trkStatus$ = Hex(vi_status)
trkCmd$ = Data_Filter(Trim(cmd$))
Track_VISA_Data "read", whchInstr$, trkDFRM&, vi, trkStatus$, trkCmd$
'If vi_status VI_SUCCESS_MAX_CNT Then
RptLog$(err_des%) = "viRead Failed[" & Hex(vi_status) & "] byte count[" & Format$(sz%, "0") & "/" & Format$(rSize, "0") & "]"
WriteToInstrument = "VISA Error!-tq_num%[" & Format$(tq_num%, "0") & "]"
viDFRM = 0
GoTo errWrtInst
End If
'Debug.Print "strRes[" & strRes & "]"
dat_str$ = strRes
WriteToInstrument = Data_Filter(Trim(dat_str$))
End If
vi_status = viClose(vi)
If vi_status VI_SUCCESS Then
Track_VISA_Data "close vi", whchInstr$, trkDFRM&, vi, trkStatus$, trkCmd$
RptLog$(err_des%) = RptLog$(err_des%) & " Fail close:[" & Str(viDFRM) & "]"
WriteToInstrument = "VISA Error!"
End If
'If wti_count% >= 1500 Then
' vi_status = viClose(viDFRM)
' If vi_status VI_SUCCESS Then
' RptLog$(err_des%) = "Fail close:[" & Str(viDFRM) & "]"
' WriteToInstrument = "VISA Error!"
' End If
' viDFRM = 0
' wti_count% = 0
'End If
Case Is = "LAN"
wti_count% = wti_count% + 1
'Debug.Print RptLog$(tst_prc%) & " wti_count%[" & wti_count% & "]"
'Open the session to the resource
whchInstr$ = "TCPIP0::" & TQ_LanAddress$(tq_num%) & "::INSTR"
vi_status = viOpen(viDFRM, whchInstr$, VI_NULL, VI_NULL, vi)
trkDFRM& = viDFRM
trkStatus$ = Hex(vi_status)
trkCmd$ = Data_Filter(Trim(cmd$))
'Track_VISA_Data "open", whchInstr$, trkDFRM&, vi, trkStatus$, trkCmd$
If vi_status VI_SUCCESS Then
RptLog$(err_des%) = "viOpen session Failed[" & Hex(vi_status) & "][" & Format$(vi, "0") & "]"
WriteToInstrument = "VISA Error!-tq_num%[" & Format$(tq_num%, "0") & "]"
viDFRM = 0
GoTo errWrtInst
End If
'write to device - rd_delay& = 0 Then
cmd$ = cmd$ & vbLf
vi_status = viWrite(vi, cmd$, Len(cmd$), rSize)
If vi_status VI_SUCCESS Then
RptLog$(err_des%) = "viWrite Failed[" & Hex(vi_status) & "]"
WriteToInstrument = "VISA Error!-tq_num%[" & Format$(tq_num%, "0") & "]"
'Track_VISA_Data "viWrite", whchInstr$, trkDFRM&, vi, trkStatus$, trkCmd$
viDFRM = 0
GoTo errWrtInst
End If
Else
rd_delay& = Abs(rd_delay&)
End If
'Read the results as a string.
If InStr(cmd$, "?") And rd_delay& > 0 Then '11.09.02
Sleep rd_delay&
Select Case sz% 'tq_num%
Case Is > 0 '= AMM%
vi_status = viRead(vi, strRes, sz%, rSize)
Case Else
sz% = 64
vi_status = viRead(vi, strRes, sz%, rSize)
End Select
If vi_status VI_SUCCESS Then
trkDFRM& = viDFRM
trkStatus$ = Hex(vi_status)
trkCmd$ = Data_Filter(Trim(cmd$))
'Track_VISA_Data "read", whchInstr$, trkDFRM&, vi, trkStatus$, trkCmd$
'If vi_status VI_SUCCESS_MAX_CNT Then
RptLog$(err_des%) = "viRead Failed[" & Hex(vi_status) & "] byte count[" & Format$(sz%, "0") & "/" & Format$(rSize, "0") & "]"
WriteToInstrument = "VISA Error!-tq_num%[" & Format$(tq_num%, "0") & "]"
viDFRM = 0
GoTo errWrtInst
End If
'Debug.Print "strRes[" & strRes & "]"
dat_str$ = strRes
WriteToInstrument = Data_Filter(Trim(dat_str$))
End If
vi_status = viClose(vi)
If vi_status VI_SUCCESS Then
'Track_VISA_Data "close vi", whchInstr$, trkDFRM&, vi, trkStatus$, trkCmd$
RptLog$(err_des%) = RptLog$(err_des%) & " Fail close:[" & Str(viDFRM) & "]"
WriteToInstrument = "VISA Error!"
End If
Case Is = "LANtoGPIB" 'see Prologix note
DoEvents
'Open the session to the resource
whchInstr$ = "TCPIP0::" & TQ_LanAddress$(tq_num%) & "::" & TQ_LanPort$(tq_num%) & "::SOCKET"
vi_status = viOpen(viDFRM, whchInstr$, VI_NULL, VI_NULL, vi)
If vi_status VI_SUCCESS Then
RptLog$(err_des%) = "viOpen session Failed[" & Hex(vi_status) & "]"
WriteToInstrument = "VISA Error!-tq_num%[" & Format$(tq_num%, "0") & "]"
vi_status = viClose(viDFRM)
If vi_status VI_SUCCESS Then
RptLog$(err_des%) = RptLog$(err_des%) & " Fail close:[" & Str(viDFRM) & "]"
WriteToInstrument = "VISA Error!"
End If
viDFRM = 0
GoTo errWrtInst
End If
DoEvents
'write to device
For n% = 1 To 3
lan_msg$ = Choose(n%, "++addr " & TQ_Address$(tq_num%), "++auto 0", cmd$) & vbLf
vi_status = viWrite(vi, lan_msg$, Len(lan_msg$), rSize)
If vi_status VI_SUCCESS Then
RptLog$(err_des%) = "viWrite Failed[" & Data_Filter(Trim(lan_msg$)) & "/" & Hex(vi_status) & "]"
WriteToInstrument = "VISA Error!-tq_num%[" & Format$(tq_num%, "0") & "]"
vi_status = viClose(viDFRM)
If vi_status VI_SUCCESS Then
RptLog$(err_des%) = RptLog$(err_des%) & " Fail close:[" & Str(viDFRM) & "]"
WriteToInstrument = "VISA Error!"
End If
viDFRM = 0
GoTo errWrtInst
End If
DoEvents
Sleep 250
Next n%
If InStr(cmd$, "?") Then
DoEvents
Dim strLAN As String * 64
Sleep rd_delay&
lan_msg$ = "++read eoi" & vbLf
vi_status = viWrite(vi, lan_msg$, Len(lan_msg$), rSize)
If vi_status VI_SUCCESS Then
RptLog$(err_des%) = "viWrite/Read Failed[" & Data_Filter(Trim(lan_msg$)) & "/" & Hex(vi_status) & "][" & rd_delay& & "]"
WriteToInstrument = "VISA Error!-tq_num%[" & Format$(tq_num%, "0") & "]"
vi_status = viClose(viDFRM)
If vi_status VI_SUCCESS Then
RptLog$(err_des%) = RptLog$(err_des%) & " Fail close:[" & Str(viDFRM) & "]"
WriteToInstrument = "VISA Error!"
End If
viDFRM = 0
GoTo errWrtInst
End If
DoEvents
'Sleep 250
vi_status = viRead(vi, strLAN, 64, rSize)
If vi_status VI_SUCCESS Then
If vi_status VI_ERROR_TMO Then
'vi_status = viClose(vi)
viDFRM = 0
RptLog$(err_des%) = "viRead Failed[" & Hex(vi_status) & "]"
WriteToInstrument = "VISA Error!-tq_num%[" & Format$(tq_num%, "0") & "]"
vi_status = viClose(viDFRM)
If vi_status VI_SUCCESS Then
RptLog$(err_des%) = RptLog$(err_des%) & " Fail close:[" & Str(viDFRM) & "]"
WriteToInstrument = "VISA Error!"
End If
viDFRM = 0
GoTo errWrtInst
End If
End If
dat_str$ = Trim(strLAN) 'strRes
'Debug.Print " [" & Data_Filter(Trim(dat_str$)) & "]"
WriteToInstrument = Data_Filter(Trim(dat_str$))
Else
WriteToInstrument = ""
End If
vi_status = viClose(vi)
Case Is = "LANtoMODBUS"
Case Else 'RS232, PCI, USB
whchInstr$ = TQ_Model$(tq_num%)
Select Case TQ_Model$(tq_num%)
Case Is = "E3645A"
'Debug.Print "Write-TQ_Model$(tq_num%)[" & TQ_Model$(tq_num%) & "]"
dat_str$ = PWS_E3645A(cmd$)
WriteToInstrument = Data_Filter(Trim(dat_str$))
Case Is = "USB-2527", "PCI-DAS1602/12"
If cmd$ = "*IDN?" Then
WriteToInstrument = TQ_Model$(tq_num%)
End If
End Select
End Select
Exit Function
errWrtInst:
vi_status = viClose(vi) '11.09.16
RptLog$(err_src%) = "WriteToInstrument[" & whchInstr$ & "]"
RptLog$(err_idn%) = Data_Filter(Trim(cmd$))
Test_Logs "visa"
End Function
举报