arduino serial monitor implemented in ruby


require "rubygems"
require 'serialport'

#params for CSV file
time0 = Time.new
date_and_time = time0.to_s.gsub(':','-').gsub(' -0700','').gsub(' ','_')
if ARGV.length>0
file_to_write = File.open("CSV/"+date_and_time+'_'+ARGV[0]+'.csv','w')
else
file_to_write = File.open("CSV/"+date_and_time+'.csv','w')
end

#params for serial port
port_str = "/dev/cu.ARDUINOBT-BluetoothSeri" #may be different for you
baud_rate = 115200
data_bits = 8
stop_bits = 1
parity = SerialPort::NONE

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

# recieve part
Thread.new do
while TRUE do
while (i = sp.gets) do
puts i
file_to_write.puts i
end
end
end

# send part
loop_condition = TRUE
begin
while loop_condition do
keyboard_input = STDIN.gets.chomp
sp.print keyboard_input
if keyboard_input == "exit"
loop_condition = FALSE
end
end
rescue Interrupt
sp.close
puts "file closed"
puts #insert a newline character after ^C
end

file_to_write.close if !file_to_write.closed?
sp.close if !sp.closed?