明华读卡器函数rf_card调用出错,是不是函数定义出错?

zhangcg 2008-11-22 07:14:12

#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);

}
...全文
494 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
TripH0101 2008-11-22
  • 打赏
  • 举报
回复
单步调试,进入到函数内部
萧霖 2008-11-22
  • 打赏
  • 举报
回复
没搞过,学习。
hnzlk 2008-11-22
  • 打赏
  • 举报
回复
你自己可以设置断点去检查,看各个函数有没有调用成功,一步一步的来嘛。
zhangcg 2008-11-22
  • 打赏
  • 举报
回复
函数头文件定义原形:
HANDLE __stdcall rf_init(__int16 port,long baud);
__int16 __stdcall rf_beep(HANDLE icdev,unsigned short _Msec);
__int16 __stdcall rf_card(HANDLE icdev,unsigned char _Mode,unsigned long *_Snr);
hnzlk 2008-11-22
  • 打赏
  • 举报
回复
明华有自带的库函数。
hnzlk 2008-11-22
  • 打赏
  • 举报
回复
明华的读卡器,我也用过。
jxw1987628 2008-11-22
  • 打赏
  • 举报
回复

// 你这些接口函数没有说明么?

// rf_card返回0表示啥呢,成功还是失败呢。

// 这些东东应该有说明吧,不然就是黑盒子了
mgsg 2008-11-22
  • 打赏
  • 举报
回复
一般都有DEMO的吧.你试从DEMO那里看一下.

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧