티스토리 뷰

 요즘 자바기반에서 시리얼통신을 하는 경우가 많은데요. 이런 경우 CRC 또는 LRC 체크를 위해서 전송하는 전문(대부분 byte[] 를 전송합니다.)의 CRC, LRC 값을 생성하는 메소드를 만들어보았습니다.


 기기마다 요구하는 부분이 조금씩 차이가 있으므로 참고하시고 기기에 맞는 LRC를 생성하는 코드는 직접 코딩하여 테스트이후 사용하시기 바랍니다.


/**
 * LRC값을 생성하는 메소드
 * 파라메터로 전달되는 data 의 idx 0 에서 부터
 * length - 2 의 idx 까지 byte 값을 exclusive or 연산으로
 * LRC값을 구하고 length -1 의 index 에 해당 byte 값을 assign 한다.
 * 
 * 인자로 전달된 byte[] data 는 value of reference 이므로 별도의 리턴값을
 * 가지지 않는다.
 * 
 * @param data
 */
private static void MakeLRC(byte[] data) {
	if (data == null || data.length == 0) {
		return;
	}

	byte LRC = data[0];

	final int LENGTH = data.length;
	for (int i = 1; i < LENGTH - 1; i++) {
		LRC = (byte) (LRC ^ data[i]);
	}

	data[LENGTH - 1] = LRC;
}
댓글
댓글쓰기 폼