728x90
반응형
CRC는 주로 RS232 관련 통신을 하다보면 데이터를 송신해주는 센서측의 Firmware에서 송신한 데이터의 끝에 CRC(Checksum) Hexcode를 00 이런식으로 보내준다.
물론 제조사별로 Firmware에서 사용하는 계산방식이 다르긴한데 일반적인경우는 아래 CRC 계산방법을 사용한다.
public static String CRC(String sTmpMsg)
{
byte[] convertArr = new byte[(sTmpMsg.length()) / 2];
for (int i = 0; i < convertArr.length; i++)
{
convertArr[i] = (byte) Integer.parseInt(sTmpMsg.substring(i * 2 , (i * 2) + 2), 16);
}
// Variable with result of your calculation.
int checksum = 0;
//Step1: Add byte values.
for (byte value : convertArr)
{
checksum += value;
}
checksum = 256 - checksum;
checksum &= 0xFF; // FFFFFF replace
return String.format("%02X ", checksum);
}
728x90
반응형
'Languages > java' 카테고리의 다른 글
[java] 간단한 소켓 서버 만들기 (멀티스레드) (0) | 2022.12.22 |
---|---|
[intellJ] runnable jar Invalid signature file digest for Manifest main attributes error (0) | 2022.09.15 |
[Java] openJDK 윈도우 설치 (0) | 2022.05.06 |
[Java] RS232 통신 예제 (0) | 2022.05.06 |
[JAVA] 난수(random number) 생성하기 기본 예제 및 응용 (0) | 2022.05.02 |