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)