2012年6月22日金曜日
ruby(i386-mingw32) + serialport gem RS-232Cターミナル
RS-232C 9pin D-SUBのSD-RDをLOOPしてテストしてみた。
C:\rubyapi\ci-v>ruby -v
ruby 1.9.3p194 (2012-04-20) [i386-mingw32]
C:\rubyapi\ci-v>gem list
*** LOCAL GEMS ***
archive-tar-minitar (0.5.2)
bigdecimal (1.1.0)
io-console (0.3)
json (1.7.3)
linecache19 (0.5.13)
minitest (3.1.0)
rake (0.9.2.2)
rdoc (3.12)
ruby_core_source (0.1.5)
rubygems-update (1.8.24)
serialport (1.1.0)
C:\rubyapi\ci-v>type civ_com53_20120622.rb
# -*- encoding: Shift_JIS -*-
require 'serialport'
require 'dl/import'
require "thread"
module MSVCRT #ruby-list:42280 kara
extend DL::Importer
dlload "MSVCRT.DLL"
extern "int _kbhit()"
extern "int _getch()"
end
sp = SerialPort.new("COM1",115200)
sp.flow_control=0 # NONE:0 HARD:1 SOFT:2
sp.read_timeout=10
sp.write_timeout=0
p sp.get_modem_params
p sp.get_signals
p sp.flow_control
p sp.read_timeout
p sp.write_timeout
tx_data = Queue.new
tx = Thread.new{
loop do
if tx_data.empty? then
Thread.stop
else
sp.write(tx_data.pop)
end
end
}
loop do
rx_data = sp.read
unless rx_data.empty?
print rx_data
if rx_data == "\r"
print "\n"
end
end
if MSVCRT._kbhit != 0
ch = MSVCRT._getch
tx_data.push(ch.chr)
tx.run
end
sleep 0.01
end
sp.close
C:\rubyapi\ci-v>ruby civ_com53_20120622.rb
{"baud"=>115200, "data_bits"=>8, "stop_bits"=>1, "parity"=>0}
{"cts"=>0, "dsr"=>0, "dcd"=>0, "ri"=>0}
0
10
0
01234567890
abcdefghijklmnopqrstuvwxyz
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿