首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

VB调用VC编的DLL,BYTE* buffer怎么申明,多谢各位了,

2013-04-22 
VB调用VC编的DLL,BYTE* buffer如何申明,谢谢各位了,急!VC编写的DLL库函数:读取设备数据功能,BOOL MCA_Get(

VB调用VC编的DLL,BYTE* buffer如何申明,谢谢各位了,急!
VC编写的DLL库函数:读取设备数据功能,BOOL MCA_Get(int DeviceID,BYTE* buffer,WORD bufflength),在VB中调用时需申明,BYTE* buffer如何申明?buffer是输出参数,bufferlength是缓存大小=50(相当于200个字节的缓冲字节),如何在VB中编程按照每4个字节提取Buffer,也就是提取出50个数据?急!!!!
[解决办法]
BOOL MCA_Get(int DeviceID,BYTE* buffer,WORD bufflength);

Public Declare Function MCA_Get Lib "xxxx.dll" (Byval DeviceID As Long, Byref buffer As Byte, Byval bufflegnth As Integer) As Long

调用时:

ret = MCA_Get(DeviceID, yourBuffer(0), length)

每 4 个字节提取 Buffer 是什么意思?Buffer 中的数据是大端还是小端格式?可能需要另外处理。比如用 CopyMemory 函数复制到一个 Long 型数组。要看实际情况。
[解决办法]
如果是字符串的话,用strconv(yourBuffer,vbunicode)转换就OK了。
所以,我估计不是字符串,而是50个整数。整数的话,就按照低位在前,高位在后的原则,每4个字节构成一个整数。比如,第一个整数: "&H" & hex(yourBuffer(3))  & hex((yourBuffer(2))  & hex(yourBuffer(1))  & hex(yourBuffer(0)),以此类推。
[解决办法]
可以简化成这样。

Public Declare Function MCA_Get Lib "xxxx.dll" (ByVal DeviceID As Long, ByRef buffer As Long, ByVal bufflegnth As Integer) As Long

ret = MCA_Get(DeviceID, receive(0), length)

[解决办法]
指针仅仅是指针。
说 Byte指针、Long指针 是为了进行限定。
[解决办法]
引用:
呵呵,循环程序搞错了,新手

for i=0 to 49
  receive(i)="&H" & hex(yourBuffer(4*i+3))  & hex((yourBuffer(4*i+2))  & hex(yourBuffer(4*i+1))  & hex(yourBuffer(4*i))
next i


正确!

热点排行