FMCOS文件系统应注意文件标识符的合理规划

根据FMCOS 2.0手册中的描述,选择文件(SELECT)命令,有两种使用方法,分别时按文件标识符选择(P1=00)和按目录名选择(P1=04)。

其中P1=00时,表示选择当前目录下基本文件或子目录文件;P1=04时,表示选择当前目录的平级目录、当前目录的子目录。

在实际开发中笔者观察到,SELECT命令P1=00时,会存在一些手册中未描述的异常反应。

现在以FM1208-10(7K+1K M1)卡片做示范,卡片内文件结构如下:
 

3F00(MF)

        ┗1000(一级DF),目录名01 10 00 FF FF
                ┗1000(二进制)(无法选择,无法读取)
                ┗2000(二级DF),目录名02 20 00 FF FF(正常选择)

        ┗1001(一级DF),目录名01 10 01 FF FF
                ┗1000(二级DF),目录名02 10 00 FF FF(正常选择)
                        ┗0020(二进制)(正常选择,正常读取)
                ┗1100(二进制)(正常选择,正常读取)

        ┗1100(一级DF),目录名01 11 00 FF FF
                ┗1100(二级DF),目录名02 11 00 FF FF(只能用目录名选择)
                        ┗0010(二进制)(正常选择,正常读取)

        ┗1111(二进制)(正常选择,正常读取)

现象一:SELECT命令会无条件地选中当前DF本身

在3F00\1000中 ,执行select 1000,会选中3F00\1000本身,而不会选中3F00\1000\1000(二进制)。

在3F00\1001中,执行select 1001命令,会选中3F00\1001本身,而不会返回6A82(文件找不到)状态码。

在3F00\1100中,执行select 1100,会选中3F00\1100本身,而不会选中3F00\1100\1100(二级DF)。

现象二:如果当前DF下没有要找的文件,SELECT命令会选中与当前DF同级的其他DF

在3F00\1000中,执行select 1001,会选中3F00\1001,而不会返回6A82(文件找不到)状态码。

在3F00\1100中,执行select 1000,会选中3F00\1000,而不会返回6A82(文件找不到)状态码。

在3F00\1001中,执行select 1100,会选中3F00\1001\1100(二进制),这是正常且符合预期的表现。

现象三(正常现象):SELECT命令【不会】选中与当前DF同级的其他EF

在3F00\1100中,执行select 1111,会返回6A82(文件找不到)状态码,这是正常且符合预期的表现。

补充:

一 、子目录与父目录的文件标识符相同,可以使用目录名选择子目录。前提是子目录的目录名有别于父目录;

注意,这个特性只能在一部分卡片上实现,目前发现有的卡片不支持这个特性——这意味着子目录与父目录的文件标识符相同,子目录永远无法被选中。

二、EF与父目录的文件标识符相同,EF无法被选中。

因此,设计FMCOS文件结构时,应注意合理规划文件标识符。特别是应避免使用父目录的文件标识符、父目录平级目录的文件标识符。

新建DF时,目录名一定要起一个有意义的名字,而且所有DF的目录名不要设置为相同的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
7. FMCOS 命令 ........................................................................................................51 7.1. 外部认证 EXTERNAL AUTHENTICATE.................................................................................51 7.1.1. 定义和范围 ...........................................................................................................................51 7.1.2. 命令报文 ...............................................................................................................................51 7.1.3. 命令报文数据域 ...................................................................................................................51 7.1.4. 响报文数据域 ...................................................................................................................51 7.1.5. 响报文状态码 ...................................................................................................................51 7.2. 取随机数 GET CHALLENGE....................................................................................................53 7.2.1. 定义和范围 ...........................................................................................................................53 7.2.2. 命令报文 ...............................................................................................................................53 7.2.3. 命令报文数据域 ...................................................................................................................53 7.2.4. 响报文数据域 ...................................................................................................................53 7.2.5. 响报文状态码 ...................................................................................................................53 7.3. 内部认证 INTERNAL AUTHENTICATE..................................................................................54 7.3.1. 定义和范围 ...........................................................................................................................54 7.3.2. 命令报文 ...............................................................................................................................54 7.3.3. 命令报文数据域 ...................................................................................................................54 7.3.4. 响报文数据域 ...................................................................................................................54 7.3.5. 响报文状态码 ...................................................................................................................54 7.4. 选择文件 SELECT......................................................................................................................56 7.4.1. 定义和范围 ...........................................................................................................................56 7.4.2. 命令报文 ...............................................................................................................................56 7.4.3. 命令报文数据域 ...................................................................................................................56 7.4.4. 响报文数据域 ...................................................................................................................56
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值