多语言展示
当前在线:351今日阅读:113今日分享:31

在安卓(Android)下如何选择和开发IC卡读卡器

本文主要介绍在安卓(Android)系统下如何选择合适的IC卡读卡器,并且能够开发出其对应的app应用
工具/原料
1

开发工具adt

2

IC卡读卡器YW-605HA或者NFC读写器YW-607

3

OTG数据线一根

4

测试用android手机一部

方法/步骤
1

打开adt软件,新建一个Android工程。

2

在菜单build path下引入IC卡读卡器android的开发包YowoRFIDreader.jar

3

在主界面中设计读写的界面,防止相应的控件

4

开始写主程序了,在读和写按钮分别写入以下的程序:Button button = (Button) findViewById(R.id.btnreadCard); button.setOnClickListener(new View.OnClickListener() {             public void onClick(View v) {             txtCardNo.setText('');             edtData.setText('');                           int BlockID = MainActivity.ValidInt( edtBlockID.getText().toString() , 63);             if(BlockID<0)             {             MainActivity.dialog('块号必须是0-63',M1.this);             return;             }                           if(!MainActivity.ValidHexString(edtKey.getText().toString(), 6))             {             MainActivity.dialog('密钥必须是6字节16进制',M1.this);             return;             }             if( MainActivity.rfidreader.ISO14443A.YW_RequestCard(MainActivity.rfidreader.ISO14443A.REQUESTMODE_ALL)<0)return;                           byte[] CardNo=MainActivity.rfidreader.ISO14443A.YW_AntiCollideAndSelect(MainActivity.rfidreader.ISO14443A.MULTIMODE_ONE);                           if(CardNo==null)return;             txtCardNo.setText('卡号:' + MainActivity.bytesToHexString(CardNo));                           byte KeyMode=MainActivity.rfidreader.ISO14443A.Key_B;             if(rbKeyA.isChecked())KeyMode=MainActivity.rfidreader.ISO14443A.Key_A;             if(MainActivity.rfidreader.ISO14443A.YW_KeyAuthorization(KeyMode, BlockID, MainActivity.HexStringtoBytes( edtKey.getText().toString()))<0)             {             MainActivity.dialog('密钥认证错误',M1.this);             return;                           }                           byte[] Data = MainActivity.rfidreader.ISO14443A.YW_ReadaBlock(BlockID);             if(Data==null)             {             MainActivity.dialog('读取块失败',M1.this);             return;             }                           edtData.setText(MainActivity.bytesToHexString(Data));             MainActivity.rfidreader.ReaderHardware.YW_Buzzer(5, 5, 1);              } }); Button button2 = (Button) findViewById(R.id.btnwritedata); button2.setOnClickListener(new View.OnClickListener() {             public void onClick(View v) {             txtCardNo.setText('');                                         int BlockID = MainActivity.ValidInt( edtBlockID.getText().toString() , 63);             if(BlockID<0)             {             MainActivity.dialog('块号必须是0-63',M1.this);             return;             }                           if(!MainActivity.ValidHexString(edtKey.getText().toString(), 6))             {             MainActivity.dialog('密钥必须是6字节16进制',M1.this);             return;             }                           if(!MainActivity.ValidHexString(edtData.getText().toString(), 16))             {             MainActivity.dialog('数据必须是16字节16进制',M1.this);             return;             }                                         if( MainActivity.rfidreader.ISO14443A.YW_RequestCard(MainActivity.rfidreader.ISO14443A.REQUESTMODE_ALL)<0)return;                           byte[] CardNo=MainActivity.rfidreader.ISO14443A.YW_AntiCollideAndSelect(MainActivity.rfidreader.ISO14443A.MULTIMODE_ONE);                           if(CardNo==null)return;             txtCardNo.setText('卡号:' + MainActivity.bytesToHexString(CardNo));                           byte KeyMode=MainActivity.rfidreader.ISO14443A.Key_B;             if(rbKeyA.isChecked())KeyMode=MainActivity.rfidreader.ISO14443A.Key_A;             if(MainActivity.rfidreader.ISO14443A.YW_KeyAuthorization(KeyMode, BlockID, MainActivity.HexStringtoBytes( edtKey.getText().toString()))<0)             {             MainActivity.dialog('密钥认证错误',M1.this);             return;                           }                           byte[] Data = MainActivity.HexStringtoBytes(edtData.getText().toString());                           if(MainActivity.rfidreader.ISO14443A.YW_WriteaBlock(BlockID, Data)>0)             {             MainActivity.dialog('数据写入成功',M1.this);             MainActivity.rfidreader.ReaderHardware.YW_Buzzer(5, 5, 1);              }             else             MainActivity.dialog('数据写入失败',M1.this);             } }); }

5

写好后,编译,生成apk安装包,在手机上插上OTG数据线和IC卡读卡器YW-605HA或者NFC读写器YW-607,出现如下界面:

注意事项
1

注意运行app时会提示是否允许USB设备,点击是

2

需要选择支持安卓(Android)的IC卡读卡器YW-605HA或者NFC读写器YW-607

推荐信息