2015年
3月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

setup diary

2007|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|06|08|11|
2015|01|02|03|04|05|06|07|08|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|

2015-03-26 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の制御などには使えそうである。汎用性も高いし。