读书人

读卡器在寻卡时识别不出IC卡,该怎么处

发布时间: 2012-04-26 14:01:31 作者: rapoo

读卡器在寻卡时识别不出IC卡
我用的是明华KRF-35读卡器,M1卡。按照接口文档上的寻卡函数格式

int rf_card(int icdev,unsigned char _Mode,unsigned long *_Snr);
功 能:寻卡,能返回在工作区域内某张卡的序列号
参 数:icdev:通讯设备标识符
_Mode:寻卡模式mode_card(0表示单卡模式,1多卡模式,2指定卡模式)
_Snr:返回的卡序列号
返 回:成功则返回 0
例:int st;
unsigned long snr;
st=rf_card(icdev,0,&snr);
注:选择IDLE模式,在对卡进行读写操作,执行rf_halt()rf_halt指令中止卡操作后,只有当该卡离开并再次进入操作区时,读写器才能够再次对它进行操作。

我写的代码是

C# code
 if (rf_card(icDev, 0, ref _Snr) == 0) {//操作}


但返回值总是1.错误代码里1表示“无卡”。确实我把卡拿走返回值是1,可我把卡放的好好的还是返回1,还有奇怪的是虽然返回1表示“无卡”,但是输出参数_Snr(卡序列号)却是有值的。。
太郁闷了。。搞了一上午还没弄好,各位大侠帮帮忙啊!这个不搞定下面的读卡工作也做不了啊。。


[解决办法]
官方程序

C# code
private void btnSeekCard_Click(object sender, System.EventArgs e)        {                        UInt16 tagtype=0;            byte size=0;            uint snr=0;                        mifareone.rf_reset(icdev, 3);            st = mifareone.rf_request(icdev,1,out tagtype);            if(st!=0)            {                lbResult.Text="request error!";                return;            }                        st = mifareone.rf_anticoll(icdev,0,out snr);            if(st!=0)            {                lbResult.Text="anticoll error!";                return;            }            string snrstr="";            snrstr=snr.ToString("X");            lbSnr.Text=snrstr;                        st = mifareone.rf_select(icdev,snr,out size);            if(st!=0)            {                lbResult.Text="select error!";                return;            }            lbResult.Text="寻卡成功!";        }
[解决办法]
mifareone.rf_reset(icdev, 3);

你不会是没有执行这个吧?
这个貌似是卡片复位。

读书人网 >C#

热点推荐