반응형
XModem
XModem에 사용되는 16비트 CRC 계산 코드는 다음과 같다.
int calcrc(char *ptr, int count)
{
int crc;
char i;
crc = 0;
while (--count >= 0)
{
crc = crc ^ (int) *ptr++ << 8;
i = 8;
do
{
if (crc & 0x8000) crc = crc << 1 ^ 0x1021;
else crc = crc << 1;
} while(--i);
}
return (crc);
}
Modbus
Modbus에 사용되는 16비트 CRC 코드는 다음과 같다.
unsigned short CRC16 ( char *puchMsg, unsigned short usDataLen )
{
unsigned char uchCRCHi = 0xFF ;
unsigned char uchCRCLo = 0xFF ;
unsigned uIndex ;
while (usDataLen--)
{
uIndex = uchCRCLo ^ *puchMsg++ ;
uchCRCLo = uchCRCHi ^ auchCRCHi[uIndex] ;
uchCRCHi = auchCRCLo[uIndex] ;
}
return (uchCRCHi << 8 | uchCRCLo) ;
}
반응형
'컴퓨터 > 프로그래밍' 카테고리의 다른 글
Visual Studio Code의 가장 큰 단점 (0) | 2021.07.19 |
---|---|
정수형 변수 범위 (0) | 2021.07.10 |
라즈베리 파이 종류 (0) | 2021.07.03 |
Atom 에디터 컬럼 모드 키보드 변경 (0) | 2021.06.23 |
Atom 편집기에서 Save all 단축키 만들기 (0) | 2021.06.23 |
댓글