본문 바로가기

👩‍💻 도비는 공부중/💼 하계연구연수생(2023)

Serial 통신의 Binary protocol과 Text Protocol

통신 프로토콜을 맞추기 위한 수정/보완 작업

 

- IMU 추가에 따른 프로토콜 재설계 (  기존 ASCII 전송 => Binary 통신으로 수정 )

- BLE 전송 특징에 부합하도록 설계: 어플리케이션에서 사용하는 데이터에 해당하는 ATT Payload데이터량을 고려 (반드시 244Bytes 이하로)

 

통신 환경 

- Binary 통신 (Little-Endian)

- 데이터 수집 예제 프로그램 : Insole(STM32, Little-Endian) <---> PC(x86-64, Little-Endian)

- 실시간 센서데이터 처리 프로그램 : Insole(STM32, Little-Endian) <---> Jetson Nano(ARM32, Little-Endian)

 

 

pack에 사용하는 변수형 format

 

 


 

기존  read_data() 는 ASCII 전송으로, 패킷 손실 사항이 고려되지 않아 데이터 손실이 발생하는 경우

무선 네트워크 전송 시, 프로그램이 멈추는 현상이 발생한다.

프로그램이 멈추는 문제를 해결하기 위해 ASCII 전송에서 binary 전송으로 함수를 수정/보완한다.

 

 

마지막 end point 가 '0xFB' 가 아니라면 정상적인 패킷이 아니므로 시작점을 다시 찾는다.

 

 


더보기

 

def find_SOP(pSerial_obj):
    pSOP_code = [0xFF, 0xFA]
    check_code = [0x00, 0x00]

    while not(np.array_equal(pSOP_code, check_code)) :
        check_code = np.roll(check_code,-1)     # Left shift
        try:
            read_data = pSerial_obj.read(1)
            check_code[1] = read_data[0]
        except:
            print('next signal does not exist')
            return False
    return True