ruby-serialportで送受信
前:ruby-serialportインストール、シリアルポートを読む - 橋本詳解
ruby-serialterm.rb
# -*- coding: utf-8 -*- require 'serialport' if ARGV.size < 1 puts 'ruby ruby-serialterm.rb /dev/tty/tty-usbdevice' exit 1 end sp = SerialPort.new(ARGV.shift, 9600, 8, 1, SerialPort::NONE) # 9600bps, 8bit, ストップビット1, パリティ無し Thread.new{ loop do line = sp.readline # 改行コード毎に読み込み puts line end } loop do line = gets sp.write line end sp.close
読み込みは、ruby-serialportのサンプルでやっている通り1文字ずつ読むならsp.getcでいいがasciiコードで返ってくるので
[sp.getc].pack('c')
シリアルポートへの書き込みは
sp.write "hello\r\n"
改行コードダブルクォートで、使っているマイコンに合わせて自由に。
line = getsの時点でgetsで末尾に改行コードが入っている事を忘れていてしばらくハマった。