C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[63403] Re:CRC를 계산 하는 방법을 알려주세요
남병철.레조 [lezo] 7543 읽음    2011-01-04 17:39
안녕하세요. 레조입니다.

잘 무리 하셨는지 모르겠네요. 저도 본의?아니게 FA쪽 통신을 하다보니 CRC 채크를 손데게 되어서 찾아보니 괜찮은게 있어서 여기에 적습니다. (포럼에 좋은 소스도 있어서 같이 링크! ㅎㅎ)

FA쪽 통신에 대한 느낌을 이해하시려면 아래 동영상을 한번 보시는게 좋을것 같습니다.
http://forum.falinux.com/zbxe/?mid=network_programming&listStyle=list&document_srl=406038

한마디로 보자면... 보내고자 하는 데이타를 XOR해서 그 결과를 패킷 뒤에 붙이거나... 더해서 그 결과를 뒤에 붙이거나... CRC 처럼 계산해서 뒤에 붙이거나... --;;;
결국 무슨짓?을 해서 뒤에 붙이는 방식입니다.
또한 모두 100% 안전성을 보장하지 않지만 CRC-16 이상이면 좋은 성능과 결과를 얻을 수 있는것 같습니다.
(TCP 같은 경우는 이렇게 하지 않아도 잘 서비스 되기 때문에 흠;;)
학부 디지털디자인 시간에 오류 복원 코드를 배웠는데... 흠... 이게 동영상에서 말하는 그 코드인지 모르겠네요.
책 구석에 원리를 끄적여서 정리했던 기억은 나는데 원리는 어렴풋이만 -_ -;;;

아무튼 원리는 RFC 문서같은 공식 문서를 보는게 좋을듯하니 따로 찾아보시면 될듯하고...


CRC에 대한 간단한 설명은 아래 블로그(여기저기 퍼나른 흔적이 많네요; 같은 문서가 계속.. ㅋ)를 참고해 보세요.
http://www.boog.co.kr/studyroom/bacsumu/t=note&nid=&page=&no=2093?PHPSESSID=582b4dea203ef6487206c7d3ddef27b6


그리고 결정적인 CRC 소스!
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_res&no=199

빈센트님이 예~전에 올려주셨네요. ㅎㅎ
(8~9년이 지났지만.. 뒤늦게 감사드립니다. ^^;)

사용법은 데이타 버퍼의 포인터를 넘겨주고 데이타 길이 넘겨주면 CRC-16, CCITT의 경우 2바이트 결과가 나옵니다.
이걸 붙여서 보낸후 받는쪽도 데이타 부분만 채크해서 보낸 CRC와 같은지 비교합니다.



민정현 님이 쓰신 글 :
: 01 06 00 9B 05 46 7A 87
:
:
: 전송 하게되는 자료인데요
:
: 01 06 00 9B 05 46             7A 87
:
: 6비트의 CRC계산이 뒤에 수 입니다
:
: 에러방지 차원에서 쓰는것 같던데 검색 해봐도 안나오네요설명이 미비 하거나
:
: 온도감지기 본사에 전화해서 통신 잘하다가 CRC 구하는곳에서 드디어 막혀 버렸네요 ㅠㅠ
:
: 부탁드립니다.

+ -

관련 글 리스트
62329 CRC를 계산 하는 방법을 알려주세요 민정현 2802 2010/09/03
63403     Re:CRC를 계산 하는 방법을 알려주세요 남병철.레조 7543 2011/01/04
62331     Re:CRC를 계산 하는 방법을 알려주세요 망치 3785 2010/09/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.