请选择 进入手机版 | 继续访问电脑版

思培培训,报名时说通过Quinn报名,有优惠!

NFC中国网--NFC门户网站,中国第一NFC论坛,NFC中文论坛(近场通讯技术)

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5523|回复: 3

栈协议的读写怎么做,有没有资料给点

[复制链接]
发表于 2014-10-12 08:20:41 | 显示全部楼层 |阅读模式
最是在做cpu卡的开发,无从下手,iso14443协议的文档看了,不懂,有没人给我指点下,只要告诉我android代码中要怎么发命令就行,急
回复

使用道具 举报

发表于 2014-10-13 10:37:35 | 显示全部楼层

回帖奖励 +1 金钱

ISO-DEP (ISO 14443-4)

代码如下,仅供参考  :
Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);                        
                try
                {
                        //Get an instance of the type A card from this TAG
                        IsoDep isodep = IsoDep.get(tagFromIntent);
                        isodep.connect();
                        //select the card manager applet

                        //这就是命令
                        byte[] mf = { (byte) '1', (byte) 'P',
                                        (byte) 'A', (byte) 'Y', (byte) '.', (byte) 'S', (byte) 'Y',
                                        (byte) 'S', (byte) '.', (byte) 'D', (byte) 'D', (byte) 'F',
                                        (byte) '0', (byte) '1', };
                      //发送命令和接受返回的函数:public byte[] transceive (byte[] data)
                        byte[] mfRsp = isodep.transceive(getSelectCommand(mf));
}
发送命令读取电子钱包的余额:
final byte[] cmd = { (byte) 0x80, // CLA Class
(byte) 0x5C, // INS Instruction
(byte) 0x00, // P1 Parameter 1
(byte) 0x02, // P2 Parameter 2
(byte) 0x04, // Le
};
获取到的余额数据是byte[] data, 前4字节合并成int,再除以100(两个小数点),得到的结果就是余额。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-13 12:02:34 | 显示全部楼层
先谢谢了,但我为什么返回的是6d 00 ins错误

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-13 13:46:23 | 显示全部楼层
我的代码是这样的
byte[] command=new byte[5];
            byte[] responsebyte = null;
           
           
           
            final byte[] cmd = { (byte) 0x80, // CLA Class
                            (byte) 0x5C, // INS Instruction
                            (byte) 0x00, // P1 Parameter 1
                            (byte) 0x02, // P2 Parameter 2
                            (byte) 0x04// Le
                            };

            
             try {
                            responsebyte=mfc.transceive(cmd);
                    } catch (IOException e1) {
                            // TODO Auto-generated catch block
                            e1.printStackTrace();
                    }
            
             System.out.println(bytesToHexString(responsebyte));

是否少执行了getSelectCommand这个方法,这个方法是做什么的,能否给个代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|NFC中国网new

GMT+8, 2022-10-7 15:16 , Processed in 0.037698 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表