Skip to content

sp.gets working in irb, but not as ruby script #57

@s2tephen

Description

@s2tephen

I am trying to set up serial communication between a Ruby on Rails app and an Arduino Mega. In Ruby, I am writing an array of strings to the serial, which the Arduino is then supposed to read, process and write corresponding output back to the serial.

For some reason, when I use irb and run the script line by line, everything works and I get the desired result, but when I use ruby sample.rb or run the code from inside Rails, it just gets stuck in the while loop and never returns anything. Would love any guidance on how to get this working.

# sample.rb
require 'serialport'

port_str = '/dev/tty.usbmodem1411'
baud_rate = 9600
data_bits = 8
stop_bits = 1
parity = SerialPort::NONE

sp = SerialPort.new(port_str, baud_rate, data_bits, stop_bits, parity)

seq = ['[h:0,0,120,5]', '[t:0,1,6,7,4]', '[t:-1,2,5,-1,3]', '[t:-1,0,2,-1,-1]', '[l:1,1,0.5,0.5,1]']

seq.each do |i|
  puts 'laptop> ' + i
  sp.write i
end

while(true)
  while (o = sp.gets.chomp) do
    puts 'arduino> ' + o
  end
end

For reference, I am running Ruby 2.1.2, Rails 4.1.4, and serialport 1.3.1.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions