M1卡做电子钱包使用时,要将某个块按规定格式初始化为数值块
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
数值 | 数值 | 数值 | Adr | Adr | Adr | Adr |
0字节是数值最低字节。
初始数值块是用写命令把数据写到块,例如第8块初始化为数值块,数值为0,用写块命令写入
0×00 0×00 0×00 0×00 0xff 0xff 0xff 0xff 0×00 0×00 0×00 0×00 0×08 0xf7 0×08 0xf7
然后可以用DECREMENT INCREMENT TRANSFER RESTORE命令对数值块进行操作。
INCREMENT 对存储在数值块中的数值做加法操作,并将结果存到临时数据寄存器
DECREMENT 对存储在数值块中的数值做减法操作,并将结果存到临时数据寄存器
TRANSFER 将临时数据寄存器的内容写入数值块
RESTORE 将数值块内容存入临时数据寄存器
电子钱包增值函数流程
询卡-防冲突-选卡-密码验证-增值-传送-挂起
电子钱包减值函数流程
询卡-防冲突-选卡-密码验证-减值-传送-挂起
RESTORE命令是在一个扇区内数值块进行拷贝时用的,一般钱包数据需要备份在同一扇区的不同块中,则备份和恢复时都要用到RESTORE命令。
数值时一个带符号4字节值,这个值的最低一个字节保存在最低的地址中,所以增加1时,4字节增加的值数组应该是0×01 0×00 0×00 0×00,不是0×00 0×00 0×00 0×01