root/docs/yappo/20080516-yapcasia2008/yapcasia2008-device.pl

Revision 11698, 8.2 kB (checked in by yappo, 8 months ago)

add YAPC::Asia 2008 talks

Line 
1use strict;
2use warnings;
3use utf8;
4use lib 'lib';
5
6use Plusen;
7
8my $p = Plusen->bootstrap({
9    config => {
10        meta  => {
11            title => "‎Perlとリアルデバイスを繋げるって快感‎",
12            author => 'Kazuhiro Osawa - ( Yappo )',
13            email => 'yappo <at> shibuya <döt> pl',
14        },
15        plugins => [
16            { module => 'ScriptLoader::Simple' },
17            { module => 'Device::MozRepl', },
18            { module => 'Device::Term', },
19            { module => 'Device::Growl', },
20            { module => 'Device::ControlFromFile', config => { path => '/tmp/devsumi-ctl.txt' } },
21            { module => 'Device::VFD', config => { port => '/dev/tty.PL2303-0000101D' } },
22##            { module => 'Device::MissileLauncher' },
23        ],
24    },
25});
26
27__DATA__
28
29
30===
31title: who are yappo
32list:
33 - at the Infomarks Corp.
34 - YAPC::Asia 2008 のすぽんさ
35 - 'PAUSE ID: YAPPO'
36 - CodeRepos maintainer
37
38===
39title: and
40
41===
42title: 征夷大将軍
43img: seiitaishougun.jpg
44
45===
46title: ここまで3日間共通テンプレート
47
48===
49title: Termに切り替える
50
51===
52title: ここ一年くらい、いろんなデバイスをPerlから制御してきました
53
54===
55title: Make: Tokyo も開催されてデバイスが今熱いね!
56
57===
58title: 昨日はkawa.netの川崎さんがWiiRemoteしてましたね!
59
60===
61title: 僕もつかってるよ!
62
63===
64title: 今日は、そんなデバイスを繋げるだけの簡単な作業をやってて気づいた事をお話しするよ
65
66===
67title: 泥臭い話、ずるい話など
68
69===
70title: 理論的やら学術的な話は無い予定
71
72===
73title: デバイスドライバ云々とかもね
74
75===
76title: 気軽にデバイスをhackするだけの簡単なお話です
77
78===
79title: Gainerネタは川崎さんと被っちゃうし本しかかってなくて教えられないからやらないよ!
80
81===
82title: というか、なんか昨日の川崎さんの発表でDevice::Gainerやってるみたいだからやんない
83
84===
85title: とおもったけど CodeRepos にあるから弄り放題!
86
87===
88title: そうそう、今回のデバイスはMacが前提気味です><
89
90===
91title: Windows is too bad!
92
93===
94title: 本題
95
96===
97title: デバイスってなに?という定義
98list:
99 - Serial Port
100 - USB
101 - Bluetooth
102
103===
104title: LANとかVGAとかあるけど、そっちは今回扱わない。先ほどの3種類を扱います。
105
106===
107title: Serial Port
108list:
109 - シリアルポートなんです
110 - Device::SerialPort
111 - Win32::SerialPort
112 - OS依存的な何かがあります
113 - それぞれインタフェイス互換性ある
114 - Device::SerialPort::Any 欲しい?
115
116===
117title: 使い方 1/3
118code: |
119 if ($^O =~ /win/i && $^O !~ /darwin/) {
120  $SERIAL = 'Win32::SerialPort';
121 } else {
122  $SERIAL = 'Device::SerialPort';
123 }
124 eval "require $SERIAL";
125 $@ and carp "$SERIAL is not installed";
126
127===
128title: 使い方 2/3
129code: |
130 my $serial = $SERIAL->new($opts{port}) or die;
131 $serial->user_msg(1) or die;
132 $serial->error_msg(1) or die;
133 $serial->parity('none') or die;
134 $serial->databits(8) or die;
135 $serial->stopbits(1) or die;
136===
137title: 使い方 3/3
138code: |
139 $serial->baudrate(
140 $config->{baudrate} || 19200) or die;
141 $serial->handshake('none') or die;
142 $serial->read_const_time(1000) or die;
143 $serial->read_char_time(10) or die;
144 $serial->write_settings or die;
145
146===
147title: ね、簡単でしょ?
148
149===
150title: Device::VFD::GP1022 ってモジュール作るのに使った
151
152===
153title: VFDの話
154list:
155 - 秋葉原の秋月って店で売ってる
156 - 電光掲示板
157 - GP1022
158 - シリアルで自由に文字をながせる
159 - 独自プロトコル、独自仕様
160 - でも仕様が公開されてるよ
161 - 仕様どおりにコード書けば楽
162
163===
164title: コード見る?
165
166===
167title: 応用例のサイト
168
169===
170title: シリアルデバイスは楽だよ
171
172===
173title: 仕様がわからなければ、頑張ってhackだ!
174
175===
176title: でも、仕様がわかり易いのだけやればいいよ
177
178===
179title: デバイスハックのポイント1
180list:
181 - 仕様がわかるデバイスをhackしよう!
182
183===
184title: SerialPort おわり
185
186===
187title: USB
188
189===
190title: libusb を Inline::C で使えばおk
191
192===
193title: とIngyの友達の嫁の友達の取引先の弟の友人の知人の知人の知人ぐらいの人がいってた
194
195===
196title: Mac::MissileLauncher 作りたいからやった (昨年のYAPC::Asia hackathonの成果物)
197
198===
199title: Device::USB ってのがあるんだけど、なんかうまく動かないからInline::Cした
200
201===
202title: すでに Device::USB::MissileLauncher って CPAN モジュールがあるから作るのは楽でした
203
204===
205title: デバイスハックのポイント2
206list:
207 - 既に実装されてるデバイスの再実装は超簡単
208
209===
210title: コード見る?
211
212===
213title: (Ingy döt Net)++
214
215===
216title: USB おわり
217
218===
219title: Bluetooth
220
221===
222title: これがやっかい
223
224===
225title: CPANに良さげなモジュールが無い
226
227===
228title: Net::Bluetooth ?
229
230===
231title: Mac でうごかん!
232
233===
234title: そもそもOS依存し過ぎ
235
236===
237title: 自分の場合はMac OSでやりたかったのでCocoaの知識が必要でした
238
239===
240title: でもラッキーな事に僕はWii Fitの板を弄りたいだけでした
241
242===
243title: でもラッキーな事に僕はWii Fitの板を弄りたいだけでした
244
245===
246title: DarwiinRemote
247list:
248 - Mac OS X に対応した
249 - Wiiリモコン制御ソフト
250 - バランスWiiボードには対応してない
251 - ソースコード公開してる
252 - これ重要
253
254===
255title: xcode
256code: |
257 - (void) setLEDEnabled1:(BOOL) enabled1 enabled2:(BOOL) enabled2 enabled3:(BOOL) enabled3 enabled4:(BOOL) enabled4
258 {
259   unsigned char cmd[] = {0x11, 0x00};
260   if (_isVibrationEnabled)        cmd[1] |= 0x01;
261   if (enabled1)   cmd[1] |= 0x10;
262   if (enabled2)   cmd[1] |= 0x20;
263   if (enabled3)   cmd[1] |= 0x40;
264   if (enabled4)   cmd[1] |= 0x80;
265
266===
267title: 既存のコードをちょろっとpatchあててWiiFitの板が使えるようになった
268
269===
270title: でもこれは、Macのライブラリ的なFrameworksって奴しか作れなくてPerlで制御できない!
271
272===
273title: そこで CamelBones ですよ!
274
275===
276title: CamelBones
277list:
278 - Mac の Cocoa と Perl のブリッジ
279 - Ruby CoCoa の Perl 版
280 - でも型とかそういう実装あまい
281 - メンテナ頑張れ!
282
283===
284title: CamelBones使って癖を回避すれば、簡単にMac OSネィティブな実装がPerlで書ける
285
286===
287title: Mac::WiiRemote とか作ったよ
288
289===
290title: デバイスハックのポイント3
291list:
292 - 既に実装されてるデバイスの再実装は超簡単
293
294===
295title: ここで板とかのデモ
296
297===
298title: ここからデモようのダミーページ
299
300===
301title: Moose
302
303===
304title: ooseM
305
306===
307title: oseMo
308
309===
310title: seMoo
311
312===
313title: eMoos
314
315===
316title: Moose
317
318===
319title: ooseM
320
321===
322title: oseMo
323
324===
325title: seMoo
326
327===
328title: eMoos
329
330===
331title: Moose
332
333===
334title: Mooose
335
336===
337title: Moooose
338
339===
340title: Mooooose
341
342===
343title: Moooooose
344
345===
346title: Mooooooose
347
348===
349title: Moooooooose
350
351===
352title: Moose
353
354===
355title: ooseB
356
357===
358title: oseBo
359
360===
361title: seBoo
362
363===
364title: eBoos
365
366===
367title: Boose
368
369===
370title: だれ?
371
372===
373title: 例のモジュールと思った人?
374
375===
376title: いま
377
378===
379title: MoCo
380
381===
382title: の
383
384===
385title: プレゼン
386
387===
388title: ながら
389
390===
391title: だみーぺーじかいてる
392
393===
394title: 今naoyaさんがセクシーっていった
395
396===
397title: MoCoって
398
399===
400title: しなもんがモコモコしてるから
401
402===
403title: MoCoって名前かとおもった
404
405===
406title: そろそろ
407
408===
409title: でもおわりね
410
411===
412title: 10
413
414===
415title: 9
416
417===
418title: 8
419
420===
421title: 7
422
423===
424title: 6
425
426===
427title: 5
428
429===
430title: 4
431
432===
433title: 3
434
435===
436title: 2
437
438===
439title: 1
440
441===
442title: Bluetooth おわり
443
444===
445title: 携帯電話
446
447===
448title: いきなりデモ
449
450===
451title: 携帯電話 おわり
452
453===
454title: まとめ
455list:
456 - 先人の知恵や
457 - 成果物を活用して
458 - 楽にデバイスハックしよう!
459
460===
461title: おわり
462
463===
464title: One More Thing ...
465
466===
467title: Chumby Hackathon Tokyo
468img: chumby.jpg
469
470===
471title: next week にやるみたい
472
473===
474title: ようするに
475
476===
477title: Overlast企画の発注したChumbyが届いたよ!
478
479===
480title: これ!
481
482===
483title: USBの無線LANレシーバ用意してまっててね!
484
485===
486title: overlast++
487
488===
489title: 本当にこれで終わりです
490
Note: See TracBrowser for help on using the browser.