Quantcast
Channel: Instrument Control (GPIB, Serial, VISA, IVI) topics
Viewing all articles
Browse latest Browse all 5625

VB6 crashes after viRead() or viGetAttribbute() functions from visa32.dll

$
0
0

Hi everyone,

 

I use VB6 and visa32.dll functions.
The issue is that VB6 crashes (closing all VB6 windows) after returning from "reading functiong" : viRead() or viGetAttribute().

Others functions cause no problem (viOpenDefaultRM(), viOpen, viWrite(), viClose), VB6 does not crash.

 

Can someone help ?

 

Thanks
Mathieu

 

Below are informations: 

System :

  • Windows 10 LTSC IOT 64-bit
  • Ni-VISA 2023 Q2
  • VB6 SP3

Visa32.dll functions declarations in VB6 (Global Module)


'*********** Liens vers les fonctions VISA de visa32.dll ****************
Public Declare Function Vi_opendefaultRM Lib _
"visa32" Alias "viOpenDefaultRM" (ByRef sens As Long) As Long

Public Declare Function Vi_open Lib _
"visa32" Alias "viOpen" _
(ByVal sesn As Long, ByVal rsrcName As String, ByVal accesMode As Long, ByVal timeOut As Long, ByRef vi As Long) _
As Long

Public Declare Function Vi_read Lib _
"visa32" Alias "viRead" _
(ByVal vi As Long, ByRef bufout As String, ByVal count As Long, ByRef retcount As Long) _
As Long

Public Declare Function Vi_write Lib _
"visa32" Alias "viWrite" _
(ByVal vi As Long, ByVal bufIn As String, ByVal count As Long, ByRef retcount As Long) _
As Long

Public Declare Function Vi_setAtt Lib _
"visa32" Alias "viSetAttribute" _
(ByVal vi As Long, ByVal attrib As Long, ByVal attribState As Long) _
As Long

Public Declare Function Vi_getAtt Lib _
"visa32" Alias "viGetAttribute" _
(ByVal vi As Long, ByVal attrib As Long, ByRef attribState As String) _
As Long

Public Declare Function Vi_close Lib _
"visa32" Alias "viClose" _
(ByVal vi As Long) _
As Long

 

'************* Déclaration des variables globales *************
Public Vi_RMSession As Long

Public Vi_accesMode As Integer
Public Vi_timeOut As Integer
Public Vi_retcount As Long
Public Vi_CMD As String
Public Vi_Rep As String
Public Vi_re As String
Public Vi_attribState As String

Public Vi_status As Long

functions calling in VB6 (main Form)

Option Explicit


Public Vi_SessionSynthe_1 As Long
Public rsrcSynthe1 As String

 

Private Sub cmdGo_Click()

rsrcSynthe1 = "TCPIP0::typeyouripadress::inst1::INSTR"


Vi_status = Vi_opendefaultRM(Vi_RMSession)
Debug.Print "Vi_RMSession = " & Vi_RMSession & " with status code : " & Vi_status
'this is ok (status =0 and RM ID is given)


Vi_accesMode = 0
Vi_timeOut = 0
Vi_status = Vi_open(Vi_RMSession, rsrcSynthe1, Vi_accesMode, Vi_timeOut, Vi_SessionSynthe_1)
Debug.Print "Vi_Session Synthe1 = " & Vi_SessionSynthe_1 & " with status code : " & Vi_status

'this is ok (status =0 and RM ID is given)

Vi_CMD = ":FREQ:CW 7 GHZ"
Vi_status = Vi_write(Vi_SessionSynthe_1, Vi_CMD, 15, Vi_retcount)
Debug.Print "Vi CMD" & Vi_CMD & " on Synthé 1 with status code : " & Vi_status

'This is ok : Freq is modify and status =0

Vi_CMD = "*IDN?"
Vi_status = Vi_write(Vi_SessionSynthe_1, "*IDN?", 5, Vi_retcount)
Debug.Print "Vi CMD : " & Vi_CMD & " on Synthé 1 with status code : " & Vi_status
'This is ok : Freq is modify and status =0


Vi_status = Vi_read(Vi_SessionSynthe_1, Vi_Rep, 1024, Vi_retcount)

'VB6 Crashes before calling Debug.Print function below


'Debug.Print "Vi read" & Vi_Rep & " on Synthe 1 with status code : " & Vi_status

Vi_close (Vi_SessionSynthe_1)
Debug.Print "Fermeture de la session Synthé. 1 Numéro : " & Vi_SessionSynthe_1 & " with status : " & Vi_status
Vi_close (Vi_RMSession)
Debug.Print "Fermeture du Ressource Manager Numéro : " & Vi_RMSession & " with status code : " & Vi_status
Debug.Print "************ All sessions are closed ***************"

End Sub

 

 

 


Viewing all articles
Browse latest Browse all 5625

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>