Checksum
์ฒดํฌ์ธ์ ๋ง์ ์ ํตํด์ ์ค๋ฅ๋ฅผ ๊ฒ์ถํ๋ ๋ฐฉ๋ฒ์ผ๋ก, 1์ ๋ณด์๋ฅผ ์ด์ฉํ๋ค. ๋ง์ ๋ง ์ด์ฉํ๋ฏ๋ก ๊ต์ฅํ ๋น ๋ฅด๋ค๋ ์ฅ์ ์ด ์๋ค. Sender๋ ๋ณด๋ด๊ณ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ถ ๋ํ๊ณ 1์ ๋ณด์ํ๋ฅผ ํ์ฌ Checksum์ ๋ง๋ ๋ค. ๋ณด๋ด๊ณ ์ ํ๋ ๋ฐ์ดํฐ ๋ง์ง๋ง์ Checksum์ ๊ฐ์ด ์ค์ด์ ๋ณด๋ธ๋ค. Reciever ์ธก์์๋ ๋ฐ์ ๋ฐ์ดํฐ์ Checksum์ ๊ฐ์ ๋ํ์ฌ 0์ด ๋๋์ง ํ์ธํ๋ค. ๋ํ์ ๋ 0์ด ๋์ค์ง ์์ผ๋ฉด ์ ์ก ์ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒ์ด๋ค. ๋๋ Reciever ์ธก์์ Checksum์ ๊ฐ๊ณผ Checksum์ ์ ์ธํ ๋ฐ์ ๋ฐ์ดํฐ๋ค์ ๋ค ๋ํ ๊ฐ์ 1์ ๋ณด์ํํ ๊ฐ์ด ๊ฐ์์ง ํ์ธํ๋ ๋ฐฉ๋ฒ๋ ์๋ค.
๋ฒํผ์ ํฌ๊ธฐ๋ 7๋ก ๊ณ ์ ๋์ด ์๋ค. ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋์ด ์๊ธฐ ๋๋ฌธ์ End Flag๋ ๋์ง ์์๋ค. ์ ์ก๋๋ ๋ฐ์ดํฐ์ Header๋ 2๊ฐ๋ก ๋ชจ๋ 0xFF
์ ๊ฐ์ ๊ฐ์ง๋ฉฐ Checksum ๊ณ์ฐ์๋ ํฌํจํ์ง ์๋๋ค. ๋ค์์ ๊ฐ๋จํ Checksum ๊ตฌํ ์ฝ๋์ด๋ค.
Sender
const DATA_LEN = 7;
HEADER_LEN = 2;
var data = [START_SYS, START_SYS, CMD1, CMD2, VAL1, VAL2, VAL3];
var checksum,
sum = 0;
for (var i = HEADER_LEN; i < DATA_LEN - HEADER_LEN; i++) sum += data[i];
checksum = ~sum;
data.push(checksum);
Receiver
const DATA_LEN = 7;
HEADER_LEN = 2;
var sum = 0,
i = 0,
result;
for (i = HEADER_LEN; i < DATA_LEN - HEADER_LEN; i++) sum += recievedData[i];
sum += recievedData[i]; //์์ ๋ checksum์ ๋ํจ
result = ~sum;
if (result == 0) console.log("NO ERROR IN TRANSMISSION");
else console.log("ERROR DETECTED");