rubyserial
RubySerial is a simple Ruby gem for reading from and writing to serial ports.
Unlike other Ruby serial port implementations, it supports all of the most popular Ruby implementations (MRI, JRuby, & Rubinius) on the most popular operating systems (OSX, Linux, & Windows). And it does not require any native compilation thanks to using RubyFFI https://github.com/ffi/ffi.
The interface to RubySerial should be (mostly) compatible with other Ruby serialport gems, so you should be able to drop in the new gem, change the require
and use it as a replacement. If not, please let us know so we can address any issues.
Installation
$ gem install rubyserial
Usage
require 'rubyserial'
serialport = Serial.new '/dev/ttyACM0' # Defaults to 9600 baud, 8 data bits, and no parity
serialport = Serial.new '/dev/ttyACM0', 57600
serialport = Serial.new '/dev/ttyACM0', 19200, 8, :even
Methods
write(data : String) -> Int
Returns the number of bytes written.
Emits a RubySerial::Error
on error.
read(length : Int) -> String
Returns a string up to length
long. It is not guaranteed to return the entire
length specified, and will return an empty string if no data is
available. Emits a RubySerial::Error
on error.
getbyte -> Fixnum or nil
Returns an 8 bit byte or nil if no data is available.
Emits a RubySerial::Error
on error.
RubySerial::Error
A wrapper error type that returns the underlying system error code and inherits from IOError.
Running the tests
The test suite is written using rspec, just use the rspec
command.
Test dependencies
To run the tests on OS X and Linux, you must also have the socat
utility program installed.
Installing socat on OS X
brew install socat
Installing socat on Linux
sudo apt-get install socat
Test on Windows
To run the tests on Windows requires com0com which can be downloaded from here:
https://github.com/hybridgroup/rubyserial/raw/appveyor_deps/setup_com0com_W7_x64_signed.exe
License
Apache 2.0. See LICENSE
for more details.