利用WiiRemote透過VB.NET撰寫簡單的控制程式
[VB.NET]運用WiiRemote控制遙控車
最近一些關於動作偵測的元件與相關產品陸續的推出,讓我們的生活多了一些樂趣,而帶起這股風潮的,首推任天堂出的Wii,也因此有許多人開始對於其手把,也就是WiiRemote來做一些控制,目前網路上最強的人莫過於是Johnny Chung Lee,有興趣的可以到他的網站看看
http://www.cs.cmu.edu/~johnny/projects/wii/
那接著進入我們的主題,如何利用WiiRemote透過VB.NET撰寫簡單的控制程式,首先,我們先去這個網站下載Managed Library for Nintendo's Wiimote
http://blogs.msdn.com/coding4fun/archive/2007/03/14/1879033.aspx
http://www.codeplex.com/WiimoteLib/Release/ProjectReleases.aspx?ReleaseId=21997
裡面包含了WiimoteLib以及範例程式(VB.NET與C#兩種版本),透過WiimoteLib可以輕易的讓我們使用WiiRemote的各種事件與參數。
讓我們把範例程式開啟,此時,我們已經可以將程式進行Complete並且執行,當然在執行前,必須先將電腦的藍芽與WiiRemote做連接,而此時,我們可以透過直接修改範例程式來達到讀取WiiRemote的事件。
在遙控車方面,我們選用旗標公司出品的RoCar,介紹網頁如下:
http://www.fisp.com.tw/blog/robots/index.php?load=read&id=2
使用RoCar的原因在於,與電腦連接後,可透過RS232對RoCar做前後左右的移動。那接者,我們把SerialPort元件加入程式中。
加入SerialPort後,接下來的程式分成三部份,連結COM port、傳送資料與關閉COM port
以下為程式
02 If serialPort.IsOpen Then
03 serialPort.Close()
04 End If
05 Try
06 With serialPort
07 .PortName = cbbCOMPorts.Text
08 .BaudRate = 9600
09 .Parity = IO.Ports.Parity.Odd
10 .DataBits = 8
11 .StopBits = IO.Ports.StopBits.One
12
13 ' .Encoding = System.Text.Encoding.Unicode
14 End With
15 serialPort.Open()
16
17 lblMessage.Text = cbbCOMPorts.Text & " connected."
18 btnConnect.Enabled = False
19 btnDisconnect.Enabled = True
20
21 Catch ex As Exception
22 MsgBox(ex.ToString)
23 End Try
24 End Sub
25
26 Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
27 Try
28 serialPort.Write(TextBox1.Text & vbCrLf)
29 With txtDataReceived
30 .SelectionColor = Color.Black
31 .AppendText(TextBox1.Text & vbCrLf)
32 .ScrollToCaret()
33 End With
34 Catch ex As Exception
35 MsgBox(ex.ToString)
36 End Try
37 End Sub
38
39 Private Sub btnDisconnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisconnect.Click
40 Try
41 serialPort.Close()
42 lblMessage.Text = serialPort.PortName & " disconnected."
43 btnConnect.Enabled = True
44 btnDisconnect.Enabled = False
45 Catch ex As Exception
46 MsgBox(ex.ToString)
47 End Try
48 End Sub
最後,將此程式與上述的 WiiMote程式做整合,就可以透過 WiiRemote 控制 RoCar 遙控車