スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
【--/--/-- --:--】 | スポンサー広告 | page top↑
RubyでGainerがMODE6にできない問題(解決)
GAINER4 私の環境(MacOS X 10.6.1 Snow Leopard, Ruby 1.8.7)では、GainerをFunnel経由Rubyで動作モードを6にすることができなかった。
Funnel本家のサイト(http://funnel.cc/Software/Ruby)のExampleに
gio = Gainer.new(Gainer::MODE1)
と書いていたので、
gio = Gainer.new(Gainer::MODE6)
としてみると、警告が出た後、エラーになるのだった。
funnel/gainer.rb を読んでみると、:mode と明示する必要があるようなので
gio = Gainer.new(:mode=>Gainer::MODE6)
としてみると、警告がでなくはなったが、実行時に
/funnel/gainer.rb:62:in `initialize': undefined method `each' for nil:NilClass (NoMethodError)
というエラーになる。
 そこで、更に gainer.rb の62行目を確認すると、そこはデジタル入力ピンにフィルターを設定している部分のようだ。MODE6はデジタル入力が存在しない設定(nil)だ。(デジタル入力が設定されるのは、MODE1, MODE3, そして MODE4 の場合だけ)そこで、この部分を case 文で、上記の場合だけ設定するように修正してみたら、見事MODE6で動作した!
ちなみに、:mode=>Gainer::MODE6 は、:mode=>6 と書いても良い。

【funnel/gainer.rbの修正箇所】
62行目の

        config.din_pins.each do |i|
@system.io_module(0).pin(i).filters = [SetPoint.new(0.5, 0)]
end


を、次のように変更

      case mode
when MODE1, MODE3, MODE4 then
config.din_pins.each do |i|
@system.io_module(0).pin(i).filters = [SetPoint.new(0.5, 0)]
end
end


【MODE6での動作を確認したプログラム】
# 0~31 までを順に16進で表示して終了

require 'funnel'
include Funnel
# 0,1,2,3,4,5,6,7,8,9,A,b,C,d,E,F
A=[1,0,1,1,0,1,1,1,1,1,1,0,1,0,1,1]
B=[1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0]
C=[1,1,0,1,1,1,1,1,1,1,1,1,0,1,0,0]
D=[1,0,1,1,0,1,1,0,1,1,0,1,1,1,1,0]
E=[1,0,1,0,0,0,1,0,1,0,1,1,1,1,1,1]
F=[1,0,0,0,1,1,1,1,1,1,1,1,1,0,1,1]
G=[0,0,1,1,1,1,1,0,1,1,1,1,0,1,1,1]
gio = Gainer.new(:mode=>6) ####### Set MODE to 6
for i in 0..31
if i > 15 then
i = i - 16
gio.dout(15).value = 1
else
gio.dout(15).value = 0
end
gio.dout(8).value = A[i]
gio.dout(9).value = B[i]
gio.dout(10).value = C[i]
gio.dout(11).value = D[i]
gio.dout(12).value = E[i]
gio.dout(13).value = F[i]
gio.dout(14).value = G[i]

sleep(0.5)
end



スポンサーサイト
【2009/10/31 16:08】 | Gainer関係 | トラックバック(0) | コメント(0) | page top↑
<<XcodeでActionScript3を使う設定 | ホーム | 3本目のiPhoneアプリをリリース>>
コメント
コメントの投稿














管理者にだけ表示を許可する

トラックバック
トラックバックURL
→http://ynomura.blog47.fc2.com/tb.php/640-6c0afe81
この記事にトラックバックする(FC2ブログユーザー)
| ホーム |
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。