Boost.Asioでシリアル通信してみる

にゃんにゃん.

自作の某ライブラリでhttpクライアントとして使っているBoost.Asioですが, シリアル通信もできるっぽいので, 雑にArduinoとPing-Pongしてみました.
arduino

環境

  • Arch Linux x86_64
  • Boost 1.57.0
  • clang 3.6.0
  • Arduino Uno
  • avr-gcc 4.9.2
  • avrdude 6.1

PC側

簡単ですね. Boostのドキュメント見ながらでも数分で書けました.

$ clang++ -std=c++1y -Wall -Wextra -lboost_system serial.cc
$ ./a.out

Arduino側

正直こっちのほうが時間がかかりました. 5時間位でしょうか…
まぁArduino(AVR)触ったのも2年ぶりくらいだし仕方ないね.

$ avr-g++ -std=c++1y -mmcu=atmega328p -Wall -Wextra -Os pingpong.cc
$ avr-objcopy -O ihex -j .text -j .data a.out pingpong.hex
$ avrdude -c arduino -P /dev/ttyACM0 -p m328p -b 115200 -u -e -U flash:w:pingpong.hex:a

see also