读书人

visa32.dll 有关问题

发布时间: 2013-01-02 13:08:44 作者: rapoo

visa32.dll 问题
在VB中声明以下函数
Declare Function viOpenDefaultRM Lib "VISA32.DLL" Alias "#141" (sesn As Long) As Long
Declare Function viFindRsrc Lib "VISA32.DLL" Alias "#129" (ByVal sesn As Long, ByVal expr As String, vi As Long, retCount As Long, ByVal desc As String) As Long
调用时 Call viOpenDefaultRM(defrm)
Call viFindRsrc(defrm, "USB?*", list, nmatches, matches)
能发现设备 nmatches=1
而用delphi做以下声明
function viOpenDefaultRM(var sesn: integer): Integer; stdcall;external 'visa32.dll' ;
function viFindRsrc(sesn: integer; expr: string; vi: integer; var retCount: integer; var desc: string): integer; stdcall; external 'visa32.dll';
调用时
viopendefaultrm(rm);
viFindRsrc(rm,'usb?*',list,nmatches, matches);
没发现设备 nmatches=0
请问哪错了。请各位大侠指点一下吧!


[解决办法]
function viOpenDefaultRM(var sesn: integer): Integer; stdcall;external 'visa32.dll' ;
function viFindRsrc(sesn: integer; expr: PChar; vi: integer; var retCount: integer; desc: PChar): integer; stdcall; external 'visa32.dll';
调用时
s := 'usb?*';
viopendefaultrm(rm);
viFindRsrc(rm,PChar(s),list,nmatches, PChar(matches));
[解决办法]
matches定义为Array[0..254] of Char;试下
[解决办法]
#2那个读错误,我个人认为是string处出错,因为VB的string是UNICODE,而低版本DELPHI是ANSI

读书人网 >.NET

热点推荐