最近调试一个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,都是成功的,并且也有回调函数,就是这个读取用户数据的函数不能执行到回调函数。
请达人指教,告知一下可能存在的问题,为什么会不执行到回调?

解决方案 »

  1.   

    RFID是MATRICS公司的,那位有这方便的资料请告知,十分感谢!
    补充一下:我调试的时候ReaderCommReadTagData函数返回成功,但是没有读出数据。
      

  2.   

    回调函数是dll中定义的,我只是定义个静态函数再把函数指针传递过去,这个需要我注册吗?
    我对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,再把他的指针传过去
      

  3.   

    ReaderCommReadTagData = 
    (pReaderCommReadTagData)GetProcAddress(LoadLibrary("ReaderComm5dll.dll"),"ReaderCommReadTagData");确认一下得到的ReaderCommReadTagData是不是NULL
      

  4.   

    不是NULL,获得函数地址成功!
    ReaderCommReadTagData函数,事例中说是int型,成功返回就是0,否则为其他值;但是我调试的时候他是成功返回0的,就是不执行回调函数,所以我得不到数据。我已经被搞得找不到北了!
      

  5.   

    达人们,救救啊!
    VB6的事列程序能够读出数据,但是我的VC怎么也进不去回调函数!~