本文讲述如何在仿真环境下,调试JAVA card 的APPLET。
通过JCOP在Eclipse进行仿真调试,启动JCOP调试器,我们可以看到如下图:
要仿真调试,就是在命令输入框里面输入JCOP相关的指令,通过阅读JCOP的帮助文档,我们看到JCOP提供的命令不算繁多,大约40个。
下面我挑选常用的几个来说明:
1. 复位卡片:“
/atr”,如果不加任何参数,表示立即复位。
2. 发送指令:“
/send”,这是最直观的调试指令。可以逐个指令发送给仿真器,类似真实环境里面读卡器与卡片的交互。Send指令后面的参数,不能加空格,如果不加任何控制符,JCOP默认为十六进制。加入“|”,可字符转化为十六进制,加入“#”,可计算后面字符的长度的值。比如:
/send 00A404000E315041592E5359532E4444463031 (不加任何控制符的情况)
/send "0102|ab|03 04|cd" ==> /send 01 02 61 62 03 04 63 64
/send "01#(|ab|#{FE FF})" ==> /send 01 05 61 62 02 FE FF
3. 查看版本:“
version”。
以上是逐个指令输入的情况,可以结合Eclipse的断点功能,查看程序运行过程中的变量值的变化。
如果我们有多条指令需要一起执行,可以直接让仿真器执行脚本。比如个人化,或者进行稳定性测试的情况下,可采用下面的方法:
1. 设置内部变量:“
/set-var”。设置脚本执行的路径,比如在命令输入框输入:
/set-var path "E:JCOP_Script"
2. 在“E:JCOP_Script”这个路径下,编写相应脚本,比如我这么写:
请留意几点:
a. 我写文件的名称是“perso1.jcsh”,后缀必须是.jcsh;
b. 注释请以“#”开始;
c. 内容就是各条JCOP指令组成。
3. 由于我写的文件名称是perso1.jcsh,在指令框中直接输入
perso1,即可。
图中可以看到JCOP逐条已经执行文件里面的指令。
脚本的使用还在不断学习中,有新的想法,会在本文更新。
说明:《JAVA card 应用开发》系列博文是我在学习Java卡过程中的记录,有不对的地方,请指出。