초보의 아웅다웅 설계하기/Back Data 수집하기

통신 프로토콜

로망와니 2018. 4. 20. 22:41

 

홈네트워크 통신연동할 때 쓴 후로 통신 프로토콜 짤 때 기본으로 잡고 가장 많이 썼던 구조입니다.(홈넷 통신 프로토콜과는 약간 다름)

간단하면서도 필요한 부분은 다 있어서 괜찮았습니다.

 

데이터 무결성차원에서 Check Sum과 Check Xor 자리에 CRC16을 사용하기도 하였고 HMAC을 사용하기도 하였습니다.(HMAC의 경우 앞 바이트만 잘라서 사용)

 

Byte

1

1

1

N

1

1

1

Data

0x02

Var.

Var.

Var.

Var.

Var.

0x03

Field

Start

Cmd

Length

Data N

Sum

Xor

End

 

 

Host쪽에서 CMD에서 0x01를 보내면 Slave쪽에서 최상위 비트에 1을 넣어서 0x81로 데이터를 보내는 방식을 사용하였고, CMD 1바이트로 부족한 경우가 많아 Data N 전까지의 데이터를 Header로 잡아 짝수 바이트로 맞추고 데이터 처리를 주로 하였습니다.

간단한 Return에는 Data에 값을 넣기보다 Header에 값을 넣어 처리해주는 게 더 간단해서(프로그램 짜기가 간단해서 ㅎㅎㅎ) 그렇게 자주 사용하였습니다. 

구조체로 잡아서 처리하는 경우 packed를 하지 않으면 데이터가 연달아 붙지 않아서 고생하는 경우가 생깁니다.