明华读卡器函数rf_card调用出错,是不是函数定义出错?
#include <vcl.h>
#pragma hdrstop
#include "testrf.h"
//定义函数
HANDLE (*rf_init)(int,int); //定义函数指针。
void (*rf_exit)(HANDLE);
int (*rf_card)(HANDLE,unsigned char,unsigned long *);
int (*rf_beep)(HANDLE,unsigned int);
HANDLE icdev;
HANDLE dllHandle;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
//以下为函数定义,不用管
void __fastcall TForm1::FormShow(TObject *Sender)
{
dllHandle = LoadLibrary("mwrf32.dll");
if(!dllHandle)
{
ShowMessage("Can not load DLL");
}
(void *)rf_init=GetProcAddress(dllHandle,"rf_init");
if(rf_init == NULL)
{
ShowMessage("error get addr rf_init");
return ;
}
(void *)rf_exit=GetProcAddress(dllHandle,"rf_exit");
if(rf_exit == NULL)
{
ShowMessage("error get addr rf_exit");
return ;
}
(void *)rf_card=GetProcAddress(dllHandle,"rf_card");
if(rf_card == NULL)
{
ShowMessage("error get addr rf_card");
return ;
}
(void *)rf_beep=GetProcAddress(dllHandle,"rf_beep");
if(rf_beep == NULL)
{
ShowMessage("error get addr rf_beep");
return ;
}
}
//---------------------------------------------------------------------------
//读卡测试,rf_card出错,不知道什么原因
void __fastcall TForm1::Button1Click(TObject *Sender)
{
icdev=rf_init(0,115200);
if(icdev<0)
ShowMessage("error");
else
ShowMessage("ok in init");
rf_beep(icdev,100);
//调用rf_beep 成功,发出声音
int st;
unsigned long snr;
st=rf_card(icdev,0,&snr);
//没有返回0值,调用rf_card失败 ,卡已经放好,是没什么问题的
ShowMessage(st);
ShowMessage(snr);
rf_exit(icdev);
}