<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tipset &#187; 赤外線リモコン</title>
	<atom:link href="http://hasumi.info/~h2/tag/%e8%b5%a4%e5%a4%96%e7%b7%9a%e3%83%aa%e3%83%a2%e3%82%b3%e3%83%b3/feed/" rel="self" type="application/rss+xml" />
	<link>http://hasumi.info/~h2</link>
	<description>MacやiPhone/iPod Touch関連のTipsを書くハズが発散してるページ</description>
	<lastBuildDate>Thu, 04 Mar 2010 16:52:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>学習リモコンPC-OP-RS1をLinuxで使う</title>
		<link>http://hasumi.info/~h2/2009/07/17/%e5%ad%a6%e7%bf%92%e3%83%aa%e3%83%a2%e3%82%b3%e3%83%b3pc-op-rs1%e3%82%92linux%e3%81%a7%e4%bd%bf%e3%81%86/</link>
		<comments>http://hasumi.info/~h2/2009/07/17/%e5%ad%a6%e7%bf%92%e3%83%aa%e3%83%a2%e3%82%b3%e3%83%b3pc-op-rs1%e3%82%92linux%e3%81%a7%e4%bd%bf%e3%81%86/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 09:45:11 +0000</pubDate>
		<dc:creator>h2</dc:creator>
				<category><![CDATA[PC]]></category>
		<category><![CDATA[赤外線リモコン]]></category>

		<guid isPermaLink="false">http://hasumi.info/~h2/?p=877</guid>
		<description><![CDATA[BUFFALO PC-OP-RS1を買ってみた
PC-OP-RS1は玄人志向KURO-RSの姉妹品で中身は同じだが，Windows用のソフトが付いてくるかわりにSDKが付いてない
正直Windows用のソフトよりSDKの [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://buffalo.jp/products/catalog/item/p/pc-op-rs1/">BUFFALO PC-OP-RS1</a>を買ってみた</p>
<p>PC-OP-RS1は<a href="http://www.kuroutoshikou.com/modules/display/?iid=928">玄人志向KURO-RS</a>の姉妹品で中身は同じだが，Windows用のソフトが付いてくるかわりにSDKが付いてない</p>
<p>正直Windows用のソフトよりSDKの方がうれしいのだが，なぜか完成版のソフト付きの方が安い<br />
KURO-RSならLinux用のドライバなんかも付いてるらしいが，なんとかなるやろうということで，購入</p>
<p>とりあえずUbunutu 9.04 (64bit) につないでみたところ問題なく認識された</p>
<pre class="brush: text;">
% dmesg
[3794059.200020] usb 6-1: new full speed USB device using uhci_hcd and address 2
[3794059.408711] usb 6-1: configuration #1 chosen from 1 choice

% lsusb
・・・
Bus 006 Device 002: ID 0411:00b3 MelCo., Inc. PC-OP-RS1 RemoteStation
・・・

% cat /proc/bus/usb/devices
・・・
T:  Bus=06 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=00(&gt;ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0411 ProdID=00b3 Rev= 4.00
S:  Manufacturer=BUFFALO
S:  Product=BUFFALO RemoteStation PC-OP-RS1
S:  SerialNumber=000020b6
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=ftdi_sio
E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
・・・
</pre>
<p>どうやら，FTDIのチップを使ってUSBシリアルデバイスに見せてるようだ<br />
FTDIのドライバなら公式サイトに各プラットフォームのものがあるので，LinuxのみならずMacなどでも使える<br />
というかFTDIのチップはあちこちで使われてるので，マウスとか使ってたら既にドライバが入っていてもおかしくない</p>
<p>実際，ドライバを組み込んで見たところ何の問題もなくデバイスファイルが作成された</p>
<pre class="brush: text;">
% sudo modprobe ftdi_sio vendor=0x0411 product=0x00b3
</pre>
<p>一般ユーザとしてデバイスファイルを使えないのはちょっと不便なので，パーミッションを変えておく（デバイスファイルの名前は環境によって多少変わるのでヨロシク）</p>
<pre class="brush: text;">
% sudo chmod 666 /dev/ttyUSB0
</pre>
<p>ということで問題なく使えるっぽい</p>
<p>で，問題のプログラム・・・<br />
SDKがないのでどんなコマンドを送ればいいのか分からない（爆）</p>
<p>ググったところ，<a href="http://su-u.jp/juju/%CA%AC%B2%F2%A4%B7%A4%C6%A4%DF%A4%E8%A4%A6/PC-OP-RS1.html">スーの道具箱</a>というサイトに詳しく書かれていた</p>
<p>C#のプログラムが公開されているが，C#はキライだ<br />
よくみたら仙石氏がPerlで書いたものも公開されているようだ<br />
単にシリアルポートにコマンドを送るだけなので，Rubyでさらっと書いてみることにする</p>
<blockquote><p>リモコン送信コマンド発行中にリモコンデータを受信しない状態で終了すると、リモコンデータを送信できなくなる。<br />
その場合、一旦LEDコマンド発行すると送信可能になる。その場合、LEDコマンドの戻り値は 0&#215;59 でLEDは点灯しない。</p></blockquote>
<p>とのことなので，毎回アクセスLEDを点灯させてます</p>
<p>あと，ruby-serialport使ってるのでgemで突っ込んでください<br />
UbuntuとかDebian系の人はruby-devパッケージがないとgemでエラー吐きます</p>
<p>以下，アホっぽいコードだが見直しやすいということでご容赦頂きたい</p>
<pre class="brush: ruby;">
require 'rubygems'
require 'serialport'
sp = SerialPort.new(&quot;/dev/ttyUSB0&quot;, 115200, 8, 1, SerialPort::NONE)

ledBlink = [0x69].pack(&quot;C*&quot;)
receive  = [0x72].pack(&quot;C*&quot;)
send     = [0x74].pack(&quot;C*&quot;)
chAY     = [0x31].pack(&quot;C*&quot;)
chAB     = [0x32].pack(&quot;C*&quot;)
chBY     = [0x33].pack(&quot;C*&quot;)
chBB     = [0x34].pack(&quot;C*&quot;)

puts &quot;--&gt; 0x69 #LED BLINK&quot;
sp.write(ledBlink)
print &quot;&lt;-- &quot;, sp.read(1).unpack(&quot;H*&quot;), &quot;\n&quot;

puts &quot;--&gt; 0x72 #RECEIVE&quot;
sp.write(receive)
print &quot;&lt;-- &quot;, sp.read(1).unpack(&quot;H*&quot;), &quot;\n&quot;
print &quot;&lt;-- &quot;,  sp.read(1).unpack(&quot;H*&quot;), &quot;\n&quot;
data = sp.read(240)
puts  data.unpack(&quot;H*&quot;)
print &quot;&lt;-- &quot;,  sp.read(1).unpack(&quot;H*&quot;), &quot;\n&quot;

sleep(2)

puts &quot;--&gt; 0x74 #SEND&quot;
sp.write(send)
print &quot;&lt;-- &quot;, sp.read(1).unpack(&quot;H*&quot;), &quot;\n&quot;
puts &quot;--&gt; 0x31 #CHANNEL A-Yellow&quot;
sp.write(chAY)
print &quot;&lt;-- &quot;, sp.read(1).unpack(&quot;H*&quot;), &quot;\n&quot;
puts &quot;--&gt; DATA&quot;
sp.write(data)
print &quot;&lt;-- &quot;, sp.read(1).unpack(&quot;H*&quot;), &quot;\n&quot;

sp.close
 </pre>
<p>そのへんのリモコンの信号を受信して，PC-OP-RS1で送り直すという単純なリレープログラムです<br />
Apple RemoteのMenuボタンだとこんな感じになります</p>
<pre class="brush: text;">
--&gt; 0x69 #LED BLINK
&lt;-- 4f
--&gt; 0x72 #RECEIVE
&lt;-- 59
&lt;-- 53
ffffffffffffffffffffff0f00000000007ee00700f00300f801007ce00700f00300f80100fc00007e00003f00801ff8c00ffcc00f00e00700f00100f8c00ffcc0077ee0077e00001ff8811ff8c10ffc00007e00003f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e0ffffffffffffffffffff7f0000c00f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
&lt;-- 45
--&gt; 0x74 #SEND
&lt;-- 59
--&gt; 0x31 #CHANNEL A-Yellow
&lt;-- 59
--&gt; DATA
&lt;-- 45
</pre>
]]></content:encoded>
			<wfw:commentRss>http://hasumi.info/~h2/2009/07/17/%e5%ad%a6%e7%bf%92%e3%83%aa%e3%83%a2%e3%82%b3%e3%83%b3pc-op-rs1%e3%82%92linux%e3%81%a7%e4%bd%bf%e3%81%86/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
