0

過去 3 日間、Mifare 1K のブロックと値のブロックを探していました。

たとえば、データを正常に書き込みました 1. この APDU でブロックします。

< FF D6 00 01 10 61 79 79 69 6C 64 69 7A 66 61 74 69 68 31 31 31 
    - Start Block 01
    - Number of Bytes to Write: 16
    - Data: ayyildizfatih111
> 90 00
    - Write Binary Block Success

次に、以下の APDU を読み取ることができます。

< FF B0 00 01 10
    - Data Read at Start Block 01
    - Number of Bytes Read: 16
> 61 79 79 69 6C 64 69 7A 66 61 74 69 68 31 31 31 90 00 
    - ASCII Mode: ayyildizfatih111
    - Read Binary Block Success

しかし、値ブロックを読み取ろうとすると、このエラーが発生します。

< FF B1 00 01 04 
    - ACR122U Read Value Block
> 63 00
    - Operation failed

だから私の質問は違いは何ですか?データを書き込むとき、バイナリ ブロックまたは値ブロックを使用する必要がありますか。どちらの方がよいですか?

4

1 に答える 1

0

ブロック 1 は値ブロックではないため、値ブロックの読み取りは失敗します。バイナリ データ ブロックと値ブロックは同じメモリを共有します。違いは、ブロックの内容をフォーマットする方法と、ブロックのアクセス許可を設定する方法だけです。

ブロック 1 を値ブロックに変えるには、ブロック アクセス ビットを設定して、値ブロック操作 (デクリメント、転送、復元、および (オプション) インクリメント) を許可します。次に、ブロックを値ブロックとして書き込みます (ACR122U V2.02 の場合: [値ブロック操作] コマンドまたは通常の [バイナリ ブロックの更新] コマンドを使用します)。

値ブロックの形式 (バイナリ データ ブロック操作を使用する場合) は次のとおりです。

     +----------+----------+----------+----+----+----+----+
Byte |   0..3   |   4..7   |   8..11  | 12 | 13 | 14 | 15 |
     +----------+----------+----------+----+----+----+----+
Data | xxxxxxxx | yyyyyyyy | xxxxxxxx | uu | vv | uu | vv |
     +----------+----------+----------+----+----+----+----+

ここxxxxxxxxで、 は 4 バイトの符号付き (2 の補数) 整数 (LSB = バイト 0)、yyyyyyyyは の反転値xxxxxxxxuuはアドレス バイト (バックアップ メカニズムの実装時に使用可能)、vvは の反転値ですuu

バイナリ データ ブロックを使用する必要があるか、値の形式を使用する必要があるかは、アプリケーションによって異なります。4 バイトの整数値を格納し、値ブロック操作を使用する場合は、値ブロック形式を使用することをお勧めします。他のデータを保存したいが、値ブロック形式の冗長性は必要なく、バイナリの読み取り/書き込み操作のみを使用したい場合は、ブロックを自由形式のバイナリ データ ブロックとして使用することをお勧めします。

于 2014-10-19T07:43:15.773 に答える