Ich arbeite an einer Funktion für eine Anwendung, die auf JRuby ausgeführt werden muss. Aus Gewohnheit entwickle ich "Native" Ruby. Wenn ich versuche, alle Methoden aus dieser Klasse in JRuby zu laufen bekomme ich Fehlermeldungen wie:JRuby erfordern Fehler auf .so Datei
MissingSourceFile: keine solche Datei zu laden - Serialport
Ich denke, das Problem liegt in in der require ' serialport.so '. Gibt es eine Möglichkeit, dies in JRuby zu ermöglichen? Gibt es eine andere Möglichkeit, eine .so-Datei zu benötigen? Oder ein Juwel, das mit JRuby zusammenarbeiten kann, um die SerialPort-Klasse bereitzustellen? Ich habe versucht, das Ruby-Serialport-Juwel zu installieren, aber das scheint nicht richtig zu installieren (Windows nmake-Probleme).
Hier ist, was meine Klassendatei wie folgt aussieht:
require 'serialport.so'
class AlphaDisplay
#STATES
SOLID = "b"
ROTATE = "a"
BLINK = "c"
#COLORS
RED = "1"
GREEN = "2"
YELLOW = "3"
ORANGE = "7"
def self.message(address = 00, text = "ICS", color = AlphaDisplay::GREEN, state = AlphaDisplay::SOLID)
address = address.to_s
if address.length == 1
address = "0#{address}"
end
string = 1.chr + 90.chr + address + 2.chr + 65.chr + 65.chr + 27.chr + 26.chr + state + 28.chr + color + text + 4.chr
return string
end
def self.test(address = 00, text = "ICS", color = AlphaDisplay::GREEN, state = AlphaDisplay::SOLID)
sp = SerialPort.new(0, 9600, 8, 1, SerialPort::NONE)
sp.write(message(address,text,color,state))
sp.close
end
end
def SerialPort::new(port, *params)
sp = create(port)
begin
sp.set_modem_params(*params)
rescue
sp.close
raise
end
return sp
end
def SerialPort::open(port, *params)
sp = create(port)
begin
sp.set_modem_params(*params)
if (block_given?)
yield sp
sp.close
return nil
end
rescue
sp.close
raise
end
return sp
end
Sie können die systemeigenen Java-Methoden nicht für den Zugriff auf die serielle Schnittstelle verwenden? –