首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

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

读卡器在寻卡时识别不出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);

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

热点排行