CRC16값을 쉽게 넣어봅시다.

-------------------------------------------------------------------------------------------

함수본체

void *를 인자를 받아서 CRC16값을 만들기 위함

((unsigned char *)DATA)로 형변환 해줌 (char *로 형변환, 배열의 이름은 어차피주소니까 char 배열과 같음 )

CRC_PRESET과 CRC_POLYNOM은 Char형 변수로 만들지 않고 #define으로 상수로변경 


-------------------------------------------------------------------------------------------

숫자1을 누르면 DEVICE로 데이터가 ucHostComm의 데이터를 보내는데 CRC값을 자동으로 채워주자!

간단하게 정리하면 ucHostComm[0] + ucHostComm[0][0]-2 = CRC16( );

                           아래 배열의 주소 + 첫번째 값0x0D-2 == 원래 주소 +11이다.

이주소값을 다시 short *로 바꾸면 해결( CRC16함수의 반환값이 unsigned short형)

ucHostComm[0][0]이 명령어 전체길이를 알수있어서 가능한 방법



그러면 데이터 시트를 보자.


이명령어를 0~4번배열 까지만 써주면 CRC코드는 5~6번에는 자동바뀌어서 들어가게끔 해놨었다. 



결론: 이명령어를 실행하고, 트랜스폰더(ID카드)를 리더기에 대면 

   호스트에 UID(고유식별자)및 정보가 온다.


------------------------------------------------------------------------

C++



나도 알아요.



'STM32F103ZE' 카테고리의 다른 글

GPIO  (0) 2014.11.12
RCC  (0) 2014.11.12
KEIL5 컴파일러에서 ASSERT_PARAM 때문에 컴파일 못할때  (0) 2014.11.11
dfghdfh  (0) 2014.11.10
by 날라차숑 2014. 10. 16. 17:45