RS-232Cの制御
ruby-serialportを使って
RS-232Cの信号線としては、TxD,RxD以外に、出力としてRTS,DTRが、入力としてCTS,DSR,DCD,RIがある。これらをLinuxから制御する方法として、ioctlを使うこともできるが、rubyのserialportを使うと簡単であることが分かった。
まず、インストールをする。
aptitude install ruby-serialport
使い方は、以下のような感じである。
require 'serialport' sp=SerialPort.new('/dev/ttyUSB0',9600,8,1,SerialPort::NONE) sp.flow_control = SerialPort::NONE sp.close
ソースを見ると、methodとしては、以下のものがある。
get_modem_params set_modem_params modem_params modem_params= baud baud= data_bits data_bits= stop_bits stop_bits= parity parity= flow_control= flow_control read_timeout read_timeout= write_timeout write_timeout= break signals get_signals rts rts= dtr dtr= cts dsr dcd ri flush_input flush_output
rtsとdtrは0または1を入れると、出力ができる。入力は、それぞれの信号線の名前と同じ名前のmethodで読むことができる。 出力の数は少ないが、簡単なICの制御などには使えそうである。汎用性も高いし。