恰好以前購買的一個PDA含Wifi功能,是以與其用PC通過Zigbee控制智能小車,不如用PDA來控制,這樣更為友善,不過由于目前.NET MF開發闆不直接支援Wifi功能,是以我們也隻好間接控制了,也就是PDA控制PC,PC通過Zigbee控制智能小車。
對我們開發者來說,Wifi和普通的網線接口一樣,都是Socket程式設計。我們隻需用在PDA上建構一個簡單的TCP Client端,在PC建構一個TCP Server端即可,PDA發送相關指令,PC接收後通過Zigbee轉發給智能小車。
PDA ===> Wifi(TCP/IP) ===> PC ===> Zigbee(序列槽232/TTL) ===> 智能小車
我們先開發PDA上的程式(作業系統Windows Mobile 5.0),開發語言我們選擇C#,相關代碼如下:
public frmMain()
{
InitializeComponent();
Connect("192.168.1.2", 7722);
}
public void Connect(string server,int port)
sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
if (ipEndPoint != null) sock.Connect(GetEndPoint(server, port));
}
private void btnForward_Click(object sender, EventArgs e)
if (sock != null) sock.Send(new byte[] {48});
private void btnLeft_Click(object sender, EventArgs e)
if (sock != null) sock.Send(new byte[] { 49 });
private void btnRight_Click(object sender, EventArgs e)
if (sock != null) sock.Send(new byte[] { 50 });
private void btnBack_Click(object sender, EventArgs e)
if (sock != null) sock.Send(new byte[] { 51 });
private void btnStop_Click(object sender, EventArgs e)
if (sock != null) sock.Send(new byte[] { 52 });
}
編譯運作後的效果圖如下:

listener = new TcpListener(IPAddress.Parse(ip),7722);
listener.Start();
Thread thread = new Thread(new ThreadStart(StartSocketListen));
thread.IsBackground = true;
thread.Start();
private void StartSocketListen()
while (true)
{
try
{
//當接收到一個用戶端請求時,确認與用戶端的連接配接
if (listener.Pending())
{
socket = listener.AcceptSocket();
//開辟線程(啟動相關通信服務)
Thread threadServer = new Thread(new ThreadStart(ServiceRun));
threadServer.IsBackground = true;
threadServer.Start();
}
}
catch //(Exception ex)
socket = null;
Thread.Sleep(200);
}
private void ServiceRun()
//接收資料并存入buff數組中
byte[] buff = new byte[1024];
if (socket != null)
if (socket.Available > 0)
//接收資料
socket.Receive(buff, socket.Available, SocketFlags.None);
switch (buff[0])
{
case 48:
serial.Write("0");
serial.DiscardInBuffer();
break;
case 49:
serial.Write("1");
case 50:
serial.Write("2");
case 51:
serial.Write("3");
serial.DiscardInBuffer();
case 52:
serial.Write("4");
}
Thread.Sleep(100);
}
運作PC程式,建好Zigbee通道,我們就可以用PDA來控制智能小車了。
相關控制視訊如下:
<a href="http://video.sina.com.cn/v/b/40292055-1804832611.html">http://video.sina.com.cn/v/b/40292055-1804832611.html</a>
(1)、小車底盤
(2)、四路直流電機驅動器
<a href="http://item.taobao.com/item.htm?id=7218717808">http://item.taobao.com/item.htm?id=7218717808</a>
(3)、.NET Micro Framework開發闆
注:需要紅牛開發闆固件在 V1.0.0以上