[Nanopb] Basic type proto sample

Posted by [하늘이]
2020. 1. 30. 13:43 IT/C, C++
반응형

[Nanopb for Google protobuf] Basic type proto sample


※ 관련글

  • Google Protobuf
  1. [Google Protobuf] For Java in Android Studio - 설치 및 proto 파일 컴파일
  2. [Google Protobuf] For Java in Android Studio - Gen Java 파일 Android Studio 적용
  3. [Google Protobuf] For Java in Android Studio - Basic example code 기본 소스 코드 사용 샘플
  4. [Google Protobuf] For C++ in Linux - Settings C++ 빌드 환경 만들기
  5. [Google Protobuf] For C++ in Linux - Basic example code 기본 소스 코드 사용 샘플
  • Nanopb Basic type value example
  1. [Nanopb for Google protobuf] Basic type proto sample
  2. [Nanopb for Google protobuf] Basic type proto sample - Sample proto file
  3. [Nanopb for Google protobuf] Basic type proto sample - Encode sample code
  4. [Nanopb for Google protobuf] Basic type proto sample - Decode sample code
  • Nanopb String / bytes value example
  1. [Nanopb for Google protobuf] String/Bytes type proto
  2. [Nanopb for Google protobuf] String/Bytes type proto - Sample proto file 
  3. [Nanopb for Google protobuf] String/Bytes type proto - Encode example code 1
  4. [Nanopb for Google protobuf] String/Bytes type proto - Encode example code 2
  5. [Nanopb for Google protobuf] String/Bytes type proto - Decode example code
  • Nanopb basic submsg example
  1. [Nanopb for Google protobuf] Sub message - Example proto file
  2. [Nanopb for Google protobuf] Sub message - Encode example code
  3. [Nanopb for Google protobuf] Sub message - Decode example code
  • Nanopb array submsg value example
  1. [Nanopb for Google protobuf] Array Sub message - Example proto file
  2. [Nanopb for Google protobuf] Array Sub message - Encode example code
  3. [Nanopb for Google protobuf] Array Sub message - Decode example code

Nanopb for Google protobuf

32bit MCU 또는 8 bit MCU에서는 Google proto buffer를 적용하면 메모리 사이즈 증가로 사용할 수 없거나 힘듭니다.

이것을 해결하기 위한 여러가지 해결책 중 Nanopb 라는 api 가 있습니다.

Nanopb 를 사용하기 위한 샘플 자료이고 아두이노 우노로 테스트 함.

Used IDE : Eclips + Aduino plugin


 

# Nanopb download site

https://jpa.kapsi.fi/nanopb/download/

 

* API Ref

https://jpa.kapsi.fi/nanopb/docs/reference.html

 

* Ref : https://techtutorialsx.com/2018/10/19/esp32-esp8266-arduino-protocol-buffers/


 Nanopb 를 받은 후 압축해제한 후 

# 아두이노 소스 컴파일에 필요한 소스

  • pb.h
  • pb_common.h
  • pb_common.c
  • pb_encode.h
  • pb_encode.c
  • pb_decode.h
  • pb_decode.c

위 파일들을 lib 폴더로 복사하여 사용한다.

Ex) C:\Users\#yourUserName#\Documents\Arduino\libraries

 

* 샘플 파일들 있는 위치 (압축 해제 후)

Nanopb\nanopb-0.4.0-windows-x86\tests

 

# *.profo 파일을 빌드 시킨다.

압축 해제된 폴더의 \generator-bin 폴더에 컴파일 시킬 수 있는 파일이 있다.

cmd :

protoc --nanopb_out=. #pathToProtoFile#

#pathToProtoFile# : *.proto 파일이 존재하는 경로

컴파일 완료 되면 Cpp / h 파일이 생성된다. 이것을 아두이노 소스에 사용하면 된다.

 

# 소스에 적용 방법.[이클립스로 아두이노 소스 빌드하는 기준으로 설명한다.]

[아래 소스는 periodicPos.proto 샘플 파일을 기준으로 설명한다. 파일 코드는 아래쪽 참조 바람]

 

* 라이브러리를 프로젝트에 등록한다.

이클립스의 경우 라이브러리 등록 후 nanopb 를 위한 header 파일을 include 한다.

#include "pb_common.h"

#include "pb.h"

#include "pb_encode.h"

 

* test.proto 파일로 빌드된 *.h 파일을 include 한다.

#include "periodicPos.pb.h"

여기까지 되었으면 일단 한번 빌드를 돌려본다. 문제가 없다면 빌드가 완료 된다.


반응형