본문 바로가기
코스웨어/12년 내장형하드웨어

[RFID] 10.16 업무일지 - 정철 (쓰기와 읽기)

by 알 수 없는 사용자 2012. 10. 16.
728x90
반응형

10.16

우리가 쓰는 카드 태그는 자체적으로 전원이 안들어오고 전자파도 약함
수동적 태그

칩에 배터리 + 주파수 대역이 높다. 자체적으로 전원이 들어오고
멀리서도 추적이 가능해 진다.
액티브 태그

NFC는 13.56Mhz. (니얼 필드)



* UID식별하기


RFID카드는 고유의 번호를 가지고 있다. (그래서 ID가 붙는다. 식별자)



스펙에서 8~15번째 byte에 UID정보가 담겨있다고 나와있다.



전에 하던 코딩에 이어서 for문을 이용해 배열의 7번째 (즉 8번째 byte) 부터 읽었다.



3개의 카드를 대조해본 결과이다.

각 카드는 각자 고유의 번호를 가지고 있다는 것을 확인하였다.



* Write Multiple Blocks



이번에는 카드에 정보를 쓰는 방법입니다.

1,2,3 번 블럭은 기본설정을 사용합니다.

4번은 쓰기명령 번호인 0x24번이 들어 갑니다.

5번은 모드선택입니다.


카드 고유번호를 식별할것인지 아닌지를 물어봅니다. (스펙 p.10참고)


여기서 adress모드를 사용할경우 6번부터 UID를 써줘야합니다.

물론 non-address모드를 사용할 경우는 UID를 생략합니다.


이후 DB-ADR에 어디서 부터 쓸것인가 (곧, 주소!)

DB-N에 몇 블럭을 쓸것인가?

DB-SIZE에 한블럭에 사이즈는 얼마로 정의 할 것인가?

에 대한것들을 설정 해줘야 합니다.


--여기서 잠깐


데이터 사이즈의 경우에는 딱히 정해진것이 없이 스펙의 챕터 9.1을 보라고 되어 있습니다.

챕터 9.1에는 각 프로토콜마다 정해진 규약을 제시합니다.

우선은 카드가 어떤 규약에 의해서 사용되는지 알아야 하는데,

제조사 홈페이지를 들어가 봤습니다.


카드에 있는 그림과 동일합니다.

그럼 어떤 규약을 사용하는지 알아보도록 합시다.


저기에 뭔지모르지만 스펙이 제시한 

9.1.9. Texas Instruments (Tag-it HF-I)

항목과 매우 흡사한 항목이 보이는 군요.

우리가 사용하는 카드는 Texas Instruments (Tag-it HF-I)를 사용합니다.



이 카드는 이러이렇게 쓰고, 이러이런 기능이 가능하다라고 설명되어 있습니다.

저기 블럭사이즈가 4byte라고 되어있습니다.

그래서 DB-SIZE는 0x04로 정해주었습니다.



결과적으로 메세지 세팅은 위와 같이 하면 됩니다.

호스트 명령에 쓰기명령을 사용하고,

우리가 사용하는 카드번호를 제시하였고,

쓰기 시작할 주소, 블럭 갯수, 블럭 사이즈,

그리고 쓸 데이터, 그리고 CRC가 붙어서 가겠네요.



실행결과도 아주 잘 나옵니다.



* Read Multiple Blocks


이번에는 카드로부터 데이터를 읽어보도록 하겠습니다.



전체적인 흐름은 쓰기와 비슷합니다.

address모드를 할 경우에는 UID를 표시해줘야하고,

non-address모드를 할 경우에는 UID가 필요 없습니다.


DB-SIZE의 경우 돌아오는 RESPONSE-DATA에 카드의 규약에 따라

정해지기 때문에 설정해줄 필요가 없습니다.


시작주소와 블럭갯수만 지정해주면 됩니다.


이렇게 메세지를 보내면 리더기로 부터 정보가 오게 됩니다.

8번 부터 데이터가 실려 있습니다.



결과값을 확인할 수 있습니다.

728x90