vb调用USB7KC.DLL的问题。

来源:百度知道 编辑:UC知道 时间:2024/05/17 23:49:58
编写一个数据采集程序,用vb调用vc++编写的DLL文件实现。详细信息如下:

Usb7kC.dll是为USB7000 系列数据采集模块配制的工作在中西文Windows 95/98/2000/NT环境下的一个动态链接库,它所封装的函数可以被其它应用程序在运行时直接调用。用户可以用任何一种可以使用 DLL 链接库的编程工具来编写。所列函数的说明格式为 C++ 应用程序中调用 DLL 库函数时的常用格式,无论使用哪一种开发工具,务必请注意数据格式的匹配及函数的返回类型。
为了将对模块的操作简单化。动态链接库 (Usb7kC.dll)中所有的函数的参数均通过一个结构体(ZT_USBBOARD)来传递。现将该结构体及USB7000的有关函数说明如下:
struct ZT_USBBOARD
{
long lIndex; /* USB模块索引值,该值在安装时被系统分配*/
HANDLE hHandle; /* USB模块的操作句柄(只有涉及中断时才用)*/
short nCh; /* 通道号*/
long lData; /*输入输出数据变量*/
long* plData; /*输入输出数据指针*/
long lCode; /*设备控制字,具体含义见函数说明*/
};
 打开设备:
函数:long APIENTRY OpenUSB7kC (ZT_USBBOARD* bs)
功能:打开某一中泰研创USB7503模块
入口有效参数:lIndex USB模块索引值
出口返回参数:hHandle USB模块的操作句柄(只有涉及中断时用)
返回值: 0 打开设备成功
-1 打开设备失败

我在vb中是这样做

应该传个ZT_USBBOARD 结构体啊,传个0算什么?
tpye ZT_USBBOARD
..
..
end type

Declare Function OpenUSB7kC Lib "c:\windows\USB7kC.dll" (byref bs as ZT_USBBOARD) as long

dim bs as ZT_USBBOARD
bs.llindex=0
testnum = OpenUSB7kC(bs)

VB不会。。。
Declare Function OpenUSB7kC Lib "c:\windows\USB7kC.dll" (ByVal lIndex As Long) As Long
long APIENTRY OpenUSB7kC (ZT_USBBOARD* bs)

你这么传0,应该不对吧?
lindex = 0
testnum = OpenUSB7kC(lindex)

Usb7kC.dll 估计有依赖项目,你可以用DEPENDS.EXE检查一下。

应该改为
Declare Function OpenUSB7kC Lib "c:\windows\USB7kC.dll" (nZTUSB as ZT_USBBOARD) as long
...
nZTUSB.lIndex = 0
Call OpenUSB7kC(nZTUSB)

唉,帮不上忙了。我用的是设计软件,3D 、phto ....

心有余而力不足!帮楼主顶了!