のりつぐのメモ

アクセスカウンタ

help RSS USB-IO Rubyからの制御

<<   作成日時 : 2006/07/23 21:38   >>

面白い ブログ気持玉 2 / トラックバック 0 / コメント 2

『手作りUSB機器』に載っている USB-IO をスクリプト言語 Ruby で制御するスクリプトを書き、 LED を点灯させることができた。

以前、USB-IO 作成では、LED の点灯を ActiveBasic を使って行った。
今回は、スクリプト言語 Ruby で制御してみた。

動作環境



  • Windows XP
  • テクノキット 汎用USB-I/Oキット USBIOV8/K
  • LED 1つ
  • 抵抗 270Ω
  • USBケーブル(ストレート)
  • ruby 1.8.4 mswin32
  • vbausbio.dll

準備


まず、以下を用意する

以下を実行する

  • ruby-1.8.4-i386-mswin32.zip を展開する
  • 制御用のスクリプトを置くディレクトリに vbausbio.dll を置く
  • コマンドプロンプト(DOS窓)で制御用のスクリプトを置くディレクトリに移動する(例: cd c:\tmp)


Win32API モジュールを使ったスクリプト


ActiveBasic を用いた制御で使った bas_vbausbio.bas に書いてある出力関数の定義は、以下のようになっていた。
Declare Function uio_out Lib "vbausbio.dll" (ByVal Port As Long, ByVal OutDat As Long, ByVal p3 As Long) As Long

そこで、以下のようなスクリプトを書いた


require 'optparse'
require 'Win32API'

USAGE = "ruby usb_io1.rb [--on|--off] [-h]"

opt_onoff = :ON

ARGV.options {|opt|
opt.on( '--on') { opt_onoff = :ON }
opt.on( '--off') { opt_onoff = :OFF }
opt.on('-h', '--help') { puts USAGE; exit 0 }

opt.parse!
}


def led_off(f)
f.call(1, 255, 0)
end

def led_on(f)
f.call(1, 0, 0)
end

uio_out = Win32API.new('vbausbio.dll', 'uio_out', %w(I I I), 'I')

if opt_onoff == :ON
led_on(uio_out)
else
led_off(uio_out)
end


dl モジュールを使ったスクリプト


Win32API モジュールは古いらしいので、dl モジュールを使ったスクリプトも書いてみた。


require 'optparse'
require 'dl/import'

USAGE = "ruby usb_io2.rb [--on|--off] [-h]"

opt_onoff = :ON

ARGV.options {|opt|
opt.on( '--on') { opt_onoff = :ON }
opt.on( '--off') { opt_onoff = :OFF }
opt.on('-h', '--help') { puts USAGE; exit 0 }

opt.parse!
}

module USB_IO
extend DL::Importable
dlload "vbausbio.dll"
extern "long uio_out(long, long, long)"
end

if opt_onoff == :ON
USB_IO.uio_out(1, 0, 0)
else
USB_IO.uio_out(1, 255, 0)
end


動作確認



どちらのスクリプトも以下を実行すると、LED が点灯する(スクリプト名は usb_io.rb)

> D:\tmp\soft\ruby-1.8.4-i386-mswin32\bin\ruby.exe usb_io.rb


どちらのスクリプトも以下を実行すると、LED が消える

> D:\tmp\soft\ruby-1.8.4-i386-mswin32\bin\ruby.exe usb_io.rb --off


まとめ



  • テクノキット 汎用USB-IOキットに接続した LED の点灯を ruby から制御するスクリプトを書いた
  • LED の点灯を制御することができた

  • 今度 GUI のついたスクリプトを書いてみよう〜

手作りUSB機器―USB‐IOで作る電子ルーレットからWebカメラまで

テーマ

関連テーマ 一覧

月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ
気持玉数 : 2
面白い
ナイス

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(2件)

内 容 ニックネーム/日時
RubyでUSB-IOを制御できないかな?とおもって検索していたらこちらのBlogを見つけました。早速USB-IOも注文してしまったので参考にさせていただきます。
http://ameblo.jp/2st-rider/
2st-rider
2007/11/23 14:21
参考になれば幸いです
のりつぐ
2007/11/24 13:40

コメントする help

ニックネーム
本 文
USB-IO Rubyからの制御 のりつぐのメモ/BIGLOBEウェブリブログ
[ ]