Dies Aliquanti

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

RemoteStationで複数のチューナーを制御する

 不調になった、メインの録画システムの対策で、サブ機と同じ自作のプログラムを動かして対策してみました。チューナーの制御が問題で、サブ機は


【リニューアル記念★ポイント最大6倍★7/27(月)09:59まで】バッファロー PCastTV2対応 PC用学習リモコンキット RemoteStation [PC-OP-RS1]【在庫目安:お取り寄せ】
これを使っています。もう一台買えばいいのですが、必ずしも安くないですし、同時に動作すると混信の可能性もあります。

複数のプログラムでRemoteStationを共有できたとしても、デジタル放送の選局は多くのチューナーでバンド(地上/BS,CS)+数字ですので、複数のキーに相当する赤外線信号をタイミングよく出す必要があります。つまり、あるチューナーへの複数のキーストロークと別のチューナーへの複数のキーストロークが混ざらないようにしなければなりません。

そこで、今回はdRrubyで、サーバー/クライアント型の共有をするようにしてみました。上記の「複数のキーストローク」単位で排他的にロックをかけることでキーストロークが混ざることを防げますし、サーバー/クライアント型にすることで、物理的に異なるPCでもRemoteStationを使うことができます。

dRubyでは、 サーバー/クライアント型の分散プログラミングはとても簡単にできます。通常のRubyのプログラムで、

foo1 = FOO.new
foo1.bar(...)
などと記述する場面で、サーバー側で、
foo1 = FOO.new
uri='druby://192.168.0.211:12345'

DRb.start_service( uri, foo )
sleep
と書いて(sleepはメインスレッドが停止しないようにするため)、クライアント側では
uri='druby://192.168.0.211:12345'
service = DRbObject.new_with_uri( uri )
service.bar(...)
とかけるのです.注意することは、
(1)サーバー/クライアントともRubyのバージョンが基本的に同じでなければならない。
(2)通常、Rubyでは参照渡しなのに対して、dRubyのサーバー/クライアントの間だけは、値渡しになる。
(3)サーバー/クライアント間の漢字のコードが異なる場合、明示的な変換が必要。
(4)セキュリティが弱い、というかdRubyのレベルで考える必要がある。
くらいかな.
今回は本当に「やっつけしごと」なので、すこし整理してからコードは載せます。
では、では。


コメント

コメントの投稿


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

トラックバック

トラックバック URL
http://diesaliquanti.blog.fc2.com/tb.php/681-b49c5978
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

まとめ

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。