有IC卡开发经验都请进(100分)

  • 主题发起人 主题发起人 xtqiqi
  • 开始时间 开始时间
X

xtqiqi

Unregistered / Unconfirmed
GUEST, unregistred user!
兄弟最近正在搞IC的二次开发,用的是RD600的读卡器、sle4442的IC卡.在校验密码时总是出问题。在网上查到IC卡的初始密码是ffffff。但老不正确。我写的代码如下:
var
SPID: longint;
ErrorCount: integer;
mValue, m16: Pchar;
mypwd: string;
begin
Memo1.Clear;
SPID := IC_InitComm(100);
if SPID <= 0 then
begin
Memo1.Lines.Add('错误');
end
else
begin
Memo1.Lines.Add('设备初始化成功');
end;
if IC_Check_4442(SPID) = 0 then
begin
Memo1.Lines.Add('卡型:4442');
end
else
begin
Memo1.Lines.Add('未知卡型');
end;

//初始化设备
if IC_inittype(SPID, 16) = 0 then
begin
Memo1.Lines.Add('设备初始化成功');
end
else
begin
Memo1.Lines.Add('设备初始化失败');
exit;
end;

// 校验密码
// mypwd := 'ffffff';
if IC_CheckPass_sle4442(SPID, Pchar(mypwd)) = 0 then
begin
Memo1.Lines.Add('密码校验成功');
end
else
begin
if IC_exitcomm(SPID) >= 0 then
begin
Memo1.Lines.Add('正常关闭');
end
else
begin
Memo1.Lines.Add('非正常关闭');
end;
Memo1.Lines.Add('密码校验失败');
exit;
end;
end;

if IC_exitcomm(SPID) >= 0 then
begin
Memo1.Lines.Add('正常关闭');
end
else
begin
Memo1.Lines.Add('非正常关闭');
end;
end;
望各位高手帮助,不胜感激!
 
IC_CheckPass_sle4442
改为
IC_CheckPass_4442hex
 
如果你用的是明华的Mwic_32.dll动态链接库,我认为你应该用csc_4442来检测卡密码.
int csc_4442(int icdev, int len, unsigned char* p_string)
说明: 核对卡密码
调用: icdev: 通讯设备标识符
len: 密码个数,其值为3
p_string: 密码字符串指针
返回: <0 错误
=0 密码正确
 
分太少啊,哈哈
 
程序顺序写得不对,设备初始化还没初始化,怎么检验有没有卡啊。
 
我觉得你的密码错了,应该是“# $ FF # $ FF # $ FF”,三个字符,不是6个
 
谢谢各位了,本人的问题已解决,但有一点不太明白:
IC_CheckPass_sle4442

IC_CheckPass_4442hex
有何区别呀?
 
后退
顶部