请做过智能卡发卡程序的达人帮我看看程序有什么问题?
我用握奇的智能卡向读卡器发取随机数的命令,每次都说我“发送命令或接收返回的数据失败”。请帮我看看是什么原因好吗?其中用到的函数是从wdcrwv.dll文件中调用的。代码如下:
typedef HANDLE (far pascal * SQRTPROC)(char *,unsigned int,unsigned int );
typedef unsigned (WINAPI *PICC_tsi_apiVB)(HANDLE fd,int len, unsigned char *comm,int *lenr,unsigned char *resp);
typedef unsigned char * (WINAPI *PCHexToBin)(unsigned char *bin,unsigned char *asc,unsigned int len);
typedef unsigned char * (WINAPI *PBinToCHex)(unsigned char *asc,unsigned char *bin,unsigned int len);
HINSTANCE hInstance;
VERIFY(hInstance=::LoadLibrary("wdcrwv.dll"));
SQRTPROC pFunction;
PICC_tsi_apiVB ICC_tsi_apiVB;
PCHexToBin CHexToBin;
PBinToCHex BinToCHex;
VERIFY(pFunction=(SQRTPROC)::GetProcAddress(hInstance,"CT_open"));
VERIFY(ICC_tsi_apiVB=(PICC_tsi_apiVB)::GetProcAddress(hInstance,"ICC_tsi_apiVB"));
VERIFY(CHexToBin=(PCHexToBin)::GetProcAddress(hInstance,"CHexToBin"));
VERIFY(BinToCHex=(PBinToCHex)::GetProcAddress(hInstance,"BinToCHex"));
fd=pFunction("m_combPort.GetCurSel()",9600,'E');//在头文件里定义HANDLE fd
if(fd<0)
{MessageBox("打开串口失败!", "错误!", MB_ICONERROR);
return;
}
UpdateData(TRUE); //读取编辑框内容
int lr;
unsigned char rep[256];
char buff[256];
unsigned int len=m_strTXData.GetLength();
CHexToBin((unsigned char *)buff,(unsigned char *)(LPCSTR )m_strTXData,len);//16进制转2进制
unsigned re1=ICC_tsi_apiVB(fd,len,(unsigned char *)(LPCSTR )buff,&lr,rep);//发送数据
if(re1==0xffff)
{
MessageBox("发送命令或接收返回的数据失败!", "错误!", MB_ICONERROR);
return;
}
else
{
BinToCHex((unsigned char *)buff,rep,(unsigned int)lr);//2进制转16进制
m_strRXData=(LPCSTR)buff;
}
UpdateData(FALSE); //更新编辑框内容