2014-10-18 5 views
0

지난 3 일 동안 Mifare 1K에 대한 블록 및 값 블록을 찾고있었습니다.Mifare 1K 블록을 쓰지만 값 블록을 읽을 수 없습니다

< 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 다음과 같이 읽을 수 있습니다 :

예를 들어,이 APDU 성공적으로 1 블록에 데이터를 쓴

< 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 

제 질문은 무엇입니까? 데이터를 쓰고있을 때 이진 블록이나 값 블록을 사용해야합니까? 어느 것이 더 낫습니까?

답변

0

블록 1이 값 블록이 아니기 때문에 값 블록 읽기가 실패합니다. 이진 데이터 블록과 값 블록은 동일한 메모리를 공유하지만 차이점은 블록의 내용을 형식화하는 방법과 블록에 대한 사용 권한을 설정하는 방법뿐입니다.

블록 1을 값 블록으로 바꾸려면 값 블록 작업 (감소, 전송, 복원 및 (선택 사항) 증가)을 허용하도록 블록 액세스 비트를 설정합니다. 그런 다음 블록을 값 블록 (ACR122U V2.02 : 값 블록 연산 명령을 사용하거나 일반 이진 블록 업데이트 명령 사용)으로 씁니다.

값 블록의 형식 (이진 데이터 블록의 동작을 사용하는 경우하기)이다 xxxxxxxx는 4 서명 바이트 (2의 보수) 정수 (LSB = 0 바이트)이다

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

, yyyyyyyy는 반전 xxxxxxxxuu은 주소 바이트 (백업 메커니즘을 구현할 때 사용할 수 있음)이고 vvuu의 반전 된 값입니다.

이진 데이터 블록을 사용해야하거나 값 형식을 사용해야하는 경우 응용 프로그램에 따라 다릅니다. 값 블록 연산을 사용하기 위해 4 바이트 정수 값과 와트를 저장하려면 값 블록 형식을 사용하는 것이 좋습니다. 다른 데이터를 저장하려는 경우 값 블록 형식의 중복을 필요로하지 않고 2 진 읽기/쓰기 연산 만 사용하려는 경우 자유 형식 2 진 데이터 블록으로 블록을 사용하는 것이 좋습니다.