2007年9月24日 星期一

使用 wii遙控器來做PCB layout

powerpcb


前一篇有提到 ,本來興致勃勃地要拿wii控制器來玩全民打棒球 ,但是中間遇到了困難就再用google找有關線上遊戲擋外掛的資料.在過程中又激盪出一個特別的想法.


在我工作上因為人力很精簡 ,有時我要充個數去做PCB 的layout工作. 一做起碼就是一兩天跑不掉 ,整天就是左手掛在鍵盤上按快捷鍵 ,右手移動滑鼠. 如果把螢幕遮住還真跟打online game沒什麼兩樣咧 !一塊板子layout完也是腰酸背痛的. 正好在找資料的過程中看到了一盞明燈---手裡鍵



乍看之下 ,wii的控制器跟手裡鍵長得還 真像 啊 .在寫了一個glovePIE 的 script後稍微試了一下, 以後要再被抓去充數lay PCB時就可以舒服地靠在椅子上輕鬆lay囉!

另外還有一個理由跟手裡鍵的說明又是不謀而合 ,既然有了glovePIE可以寫腳本 ,那以後就不必再被PowerPCB這種很貴的商用軟體給綁住了 ,不論是用便宜的EAGLE甚至是gEDA裡的PCB ,只要改寫腳本檔都可以使用相同的方式來操作了 ,厲害吧 ?Protel 快降價吧 ,PowerPCB 快降價吧 !



// Code for using PADS PowerPCB 5.x


'debug = 'x '+ mouse.CursorPosX + 'y' + mouse.Cursorposy
'debug= 'pitch '+ wiimote.pitch


if var.init==0 then
var.init=1
var.width=10
endif


if wiimote.B==false then

key.Shift=wiimote.A

if wiimote.one then
var.xpos=mouse.CursorPosX
var.ypos=mouse.CursorPosy

key.Escape=true
wait (1ms)
key.Escape=false

mouse.CursorPos=[680, 472]
mouse.RightButton=true
wait (1ms)
mouse.RightButton=false
wait (1ms)
mouse.CursorPos=[731, 511]
mouse.LeftButton=true
wait (1ms)
mouse.LeftButton=false
mouse.CursorPos=[var.xpos,var.ypos]
wait (1s)

endif

if wiimote.two then
var.xpos=mouse.CursorPosX
var.ypos=mouse.CursorPosy


key.Escape=true
wait (1ms)
key.Escape=false

mouse.CursorPos=[680, 472]
mouse.RightButton=true
wait (1ms)
mouse.RightButton=false
wait (1ms)
mouse.CursorPos=[731, 623]
mouse.LeftButton=true
wait (1ms)
mouse.LeftButton=false
mouse.CursorPos=[var.xpos,var.ypos]

wait (1s)

endif



if wiimote.Left then
mouse.CursorPos=[14, 963]
mouse.LeftButton=true
wait (1ms)
mouse.LeftButton=false
wait (100ms)
endif

if wiimote.right then
mouse.CursorPos=[1250, 963]
mouse.LeftButton=true
wait (1ms)
mouse.LeftButton=false
wait (100ms)
endif

if wiimote.up then
mouse.CursorPos=[1265, 98]
mouse.LeftButton=true
wait (1ms)
mouse.LeftButton=false
wait (100ms)
endif
if wiimote.down then
mouse.CursorPos=[1265, 942]
mouse.LeftButton=true
wait (1ms)
mouse.LeftButton=false
wait (100ms)
endif


if wiimote.Minus then
var.width --
type 'w '+ var.width
key.Enter=true
wait (0.5ms)
key.Enter=false
wait (100ms)
endif

if wiimote.Plus then
var.width ++
type 'w '+ var.width
key.Enter=true
wait (0.5ms)
key.Enter=false
wait (100ms)

endif
else
if wiimote.a then
^Q=true
wait (1ms)
^Q=false
wait (0.5s)

end if

if wiimote.Roll > 50 then
^R=true
wait (1ms)
^R=false
wait (0.5s)

endif

if wiimote.Pitch > 50 then
type 'ss '
wait (0.5s)

endif


if wiimote.Minus then
var.width = var.width-5
type 'w '+ var.width
key.Enter=true
wait (0.5ms)
key.Enter=false
wait (1ms)
endif

if wiimote.Plus then
var.width =var.width+5
type 'w '+ var.width
key.Enter=true
wait (0.5ms)
key.Enter=false
wait (1ms)

endif

endif

if wiimote.home then
debug=' home'
type 'w '+ var.width
key.Enter=true
wait (0.5ms)
key.Enter=false
wait (0.5ms)

endif



if mouse.WheelDown then
'debug=' wheel down'
mouse.CursorPos=[640, 512]
^W=true
wait (0.5ms)
^W=false
mouse.RightButton=true
wait (0.5ms)
mouse.RightButton=false
wait (0.1s)
key.Escape=true
wait (0.1ms)
key.Escape=false

endif

if mouse.wheelup then
'debug=' wheel up'
mouse.CursorPos=[640, 512]
^W=true
wait (0.5ms)
^W=false
mouse.LeftButton=true
wait (0.5ms)
mouse.LeftButton=false
wait (0.1s)
key.Escape=true
wait (1ms)
key.Escape=false
endif

if mouse.MiddleButton
'debug=' middle'
^B=true

wait (0.5ms)
^B=false

endif
//
//



沒有留言:

張貼留言