Я переместил свой исходный вопрос в конец, так как он больше не относится к проблеме.
Я не могу найти serialport.so, который мне может потребоваться следующим образом:
$ rvmree@global
$ irb
> require 'serialport.so'
=> true
(список драгоценных камней возвращает emtpy)
Обновление:
require 'serialport'
при выполнении в сеансе irb оба требуют возврата true, даже когда я удаляю гем.Таким образом, кажется, что требуется другой драгоценный камень через "require 'serialport" ".Я искал в своей системе любые другие версии этого драгоценного камня безрезультатно.
Как я могу гарантировать, что требуется правильный драгоценный камень?
Обновление:
[Удален список драгоценных камней]
Когда я удаляю все драгоценные камни в глобальном пространстве имен rvm, мне все равно может потребоваться 'serialport' и получить значение true.
Теперь мой вывод списка драгоценных камней полностьюempty и require 'serialport' все еще возвращает true изнутри irb.
Я использую rvm, я опустошил глобальные драгоценные камни и все драгоценные камни в наборе драгоценных камней, которые я использую.Не существует системных гемов с именем, содержащим «serialport», я искал файлы, которые были бы включены в каталог гемов, такие как serialport.o, serialport.so и ничего не нашел.
IЯ в растерянности из-за того, что могло бы отвечать на запрос 'serialport'
require 'serialport.so'
также возвращает true и
sudo find / -name 'serialport.so' -print
ничего не возвращает.
Есть идеи?
Оригинальное сообщение:
Я использую gem serialport (1.0.4).
Документация находится на http://rubydoc.info/gems/serialport/1.0.4/
Вот моя реализация.rb:
require 'rubygems'
require 'serialport'
port_str = "/dev/cu.usbserial" # Serialport mount point
baud_rate = 9600
data_bits = 8
stop_bits = 1
parity = 0
sp = SerialPort.new(port_str, data_bits, stop_bits, baud_rate, parity)
while barcode = sp.gets do
puts barcode
end
sp.close
При запуске ruby creation.rb я получаю:
implementation.rb:14:in `initialize': wrong number of arguments (5 for 2) (ArgumentError)
from implementation.rb:14:in `open'
from implementation.rb:14
Это странно, поскольку, похоже, нигде не существует метода инициализации (возможно, ruby внутренне называет SerialPort :: new как initialize?).
Рубиновая часть камня выглядит так:
require 'serialport.so'
class SerialPort
private_class_method(:create)
# Creates a serial port object.
#
# <tt>port</tt> may be a port number
# or the file name of a defice.
# The number is portable; so 0 is mapped to "COM1" on Windows,
# "/dev/ttyS0" on Linux, "/dev/cuaa0" on Mac OS X, etc.
#
# <tt>params</tt> can be used to configure the serial port.
# See SerialPort#set_modem_params for details
def SerialPort::new(port, *params)
sp = create(port)
begin
sp.set_modem_params(*params) # Calls C extension
rescue
sp.close
raise
end
return sp
end
# SerialPort::open removed as its the same thing as new() with a block
end
Это работало на днях, и я не могу придумать ничего, что могло бы измениться.
Я тожеПолучите ту же ошибку с гемом ruby-serialport (0.7.0), который выглядит одинаково при быстром взгляде на оба источника.
Пример реализации находится в http://www.sfc.wide.ad.jp/~mitsuya/4U/ruby-serialport-macosx.html
Последний гем (ruby-serialport) находится по адресу http://rubyforge.org/projects/ruby-serialport/ (документация по http://ruby -serialport.rubyforge.org / )
Есть идеи?Спасибо.