最近调试一个RFID,商家只给个dll文件,没有文档,有一个源码VB6的事例程序,我在VC6下使用dll,并且dll文件是用VC6编写的。下面是我的定义,请达人帮忙,小弟不胜感激!
函数定义:
typedef (WINAPI*pReaderCommReadTagData)
(RCB_TYPE *lprcb, BYTE nodeAddress, BYTE antanna,int* idLen,
BYTE idtype,BLOCK_DATA_TYPE* idData, BYTE startBit,BYTE bitLen,
int* TagCount, PVOID);
pReaderCommReadTagData ReaderCommReadTagData = NULL;
ReaderCommReadTagData =
(pReaderCommReadTagData)GetProcAddress(LoadLibrary("ReaderComm5dll.dll"),"ReaderCommReadTagData");
我的回调函数定义:
static void WINAPI ReadTagDataCallback(RCB_TYPE *lpRCB,BYTE noteaddress,
BYTE antena_index,BYTE tagType,
BLOCK_DATA_TYPE *tagData,BYTE userDataLen,BLOCK_DATA_TYPE *tagUserData);说明:BLOCK_DATA_TYPE , RCB_TYPE 为自定义结构。
我运行程序读取电子标签的数据,就是不进入回调函数,不知道为什么。此前还有几个函数的声明跟这个差不多,如读取电子标签的Tag ID,都是成功的,并且也有回调函数,就是这个读取用户数据的函数不能执行到回调函数。
请达人指教,告知一下可能存在的问题,为什么会不执行到回调?
函数定义:
typedef (WINAPI*pReaderCommReadTagData)
(RCB_TYPE *lprcb, BYTE nodeAddress, BYTE antanna,int* idLen,
BYTE idtype,BLOCK_DATA_TYPE* idData, BYTE startBit,BYTE bitLen,
int* TagCount, PVOID);
pReaderCommReadTagData ReaderCommReadTagData = NULL;
ReaderCommReadTagData =
(pReaderCommReadTagData)GetProcAddress(LoadLibrary("ReaderComm5dll.dll"),"ReaderCommReadTagData");
我的回调函数定义:
static void WINAPI ReadTagDataCallback(RCB_TYPE *lpRCB,BYTE noteaddress,
BYTE antena_index,BYTE tagType,
BLOCK_DATA_TYPE *tagData,BYTE userDataLen,BLOCK_DATA_TYPE *tagUserData);说明:BLOCK_DATA_TYPE , RCB_TYPE 为自定义结构。
我运行程序读取电子标签的数据,就是不进入回调函数,不知道为什么。此前还有几个函数的声明跟这个差不多,如读取电子标签的Tag ID,都是成功的,并且也有回调函数,就是这个读取用户数据的函数不能执行到回调函数。
请达人指教,告知一下可能存在的问题,为什么会不执行到回调?
解决方案 »
- 怎么让多个组件共用一个结构体
- 关于CFormview资源问题
- 关于c++ primer 第三版中一些头文件的问题。请高手指教一下
- 有关SQL SEVER 2000扩展存储过程的问题~
- 如何终止正在连接中和正在下栽中的线程,我用的是CHttpConnection和CHttpFile(不能强制退出,因为有许多资源要释放)
- 如何遍历MDI中CMDIFrameWnd的各个子框架!
- 请问哪里有《远程控制编程技术》的电子文档下载!重分酬谢!或者相关的电子文档!
- 语音卡问题
- 使用MAPI能否取指定邮件服务器的邮件
- 关于文件结束符EOF一问
- gdi+中如何优化去除粗画笔画的线段和图形的边角毛刺现象?
- 编译错误,请大家帮忙看看
补充一下:我调试的时候ReaderCommReadTagData函数返回成功,但是没有读出数据。
我对VC不是很熟悉,只是偶尔用一下!此前的几个函数我都是这么定义的,没有发生这种情况.
typedef (WINAPI*pReaderCommReadTagData)
(RCB_TYPE *lprcb, BYTE nodeAddress, BYTE antanna,int* idLen,
BYTE idtype,BLOCK_DATA_TYPE* idData, BYTE startBit,BYTE bitLen,
int* TagCount, PVOID);//PVOID 是回调函数的指针,我写了个函数ReadTagDataCallback,再把他的指针传过去
(pReaderCommReadTagData)GetProcAddress(LoadLibrary("ReaderComm5dll.dll"),"ReaderCommReadTagData");确认一下得到的ReaderCommReadTagData是不是NULL
ReaderCommReadTagData函数,事例中说是int型,成功返回就是0,否则为其他值;但是我调试的时候他是成功返回0的,就是不执行回调函数,所以我得不到数据。我已经被搞得找不到北了!
VB6的事列程序能够读出数据,但是我的VC怎么也进不去回调函数!~