#define a 30 #define b 8 // 8 byte(64 bits)typedef struct tagID{ unsigned short Address; // ID号在标签内存中的地址unsigned short Length; // ID号字节数unsigned char Num[a][b]; // 存放ID号的字节数组} rfs_ID;现在有这样个函数 自己DLL 的连接库提供的rfs_ReadLabelID(HANDLE hScanner, int nMax, rfs_ID *IDBuffer, int *nCounter)现在我要把rfs_ID *IDBuffer 的内容读出来COPYMEMORY 怎么写 应该
解决方案 »
- mscomm一开始发整个数组,但是鉴于单片机速率问题,分散发数据,结果出错
- 急!急!急!精通VB数据库的朋友,能联系你吗?
- 全部分求:免费打印控件
- 如何在ActiveReport执行带参数的存储过程
- 急!!求英文论文!!!
- Word存盘问题 高分 急 在线等
- ADO加锁的问题(在线)
- 如何让程序检测键盘的按键情况?------------急!!!!!
- 如何用ADO控件结合ODBC数据源把已经存在的SQL数据库中的指定内容经过查询显示到文本框中
- 双机dbf的同步问题?请高手出手!!
- [Happy new year]新年第一帖
- ★★★我自绘一个按钮,用钩子函数捕抓鼠标离开事件,但是碰到两个难,提请高手指教。
首先申明我对VC不熟。Copymemory的前两个参数本身就是指针型的,直接写应该就行了吧。
我想,IDBurrer本身就是指针变量,假设有另一个数组或结构otherBuffer,在VC里面应该可以 CopyMemory(otherBuffer,IDBurrer,数据长度)
在VB里面调用它时,因为定义CopyMemory这个API时,前两个参数要ByRef 变量名 as Any,表示传指针,然后就可以直接用数组的某个下标或结构变量名做参数。不知道我说对没有,如果错了请不要骂我。
rfs_ReadLabelID(ByVal long hScanner, ByVal nMax as long, ByRef IDBuffer as rfs_ID, ByRef nCounter as long)然后在VB中按照VC申明结构rfs_ID直接调用rfs_ReadLabelID即可。
Declare Function rfs_ReadLabelID lib"rf.dll" ( _
ByVal hScanner As Long, _
ByVal nMax As Long, _
ByRef IDBuffer As rfs_ID, _
ByRef nCounter As Long _
) As apiReturnType rfs_ID
Address As Integer 'ID号在标签内存中的地址
Length As Integer 'ID号字节数
num(b* a) As Byte '存放ID号的字节数组
End TypeDim str As Long调用后下面的
rfs_ReadLabelID m_hScanner, num, IDBuffer, nCounter
结果是 IDBuffer.Address 的值为0 应该是对的 是开始地址
IDBuffer.Length 的字节书为8 应该是对的
b的值为8Byte
nCounter的值赋给a 值 1..30 CopyMemory str, IDBuffer.num(b * a), 4 ??? 对不对?
假设 a 是30 IDBuffer.num(b * a)应该为240Byte吧 怎么一次读8byte的值?
其实问题不是 函数定义的问题
关键是 怎么把8BYTE 的读出来
我用的方法笨比较 呵呵
但基本解决了