恰好以前购买的一个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) ===> 智能小车
pc通过zigbee控制智能小车,在我的上篇博文《
zigbee遥控智能小车
》已有介绍,所以这里就略过不提了。
我们先开发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 });
}
编译运行后的效果图如下:
完成pda上的编程,我们改造一下《
zigbee遥控智能小车
》中提到的pc zigbee通信程序,我们把相关tcp服务代码加入其中,相关代码如下:
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];
while (true)
{
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);
serial.discardinbuffer();
break;
case 50:
serial.write(2);
serial.discardinbuffer();
break;
case 51:
serial.write(3);
serial.discardinbuffer();
break;
case 52:
serial.write(4);
serial.discardinbuffer();
break;
}
}
}
thread.sleep(100);
}
}
运行pc程序,建好zigbee通道,我们就可以用pda来控制智能小车了。
相关控制视频如下:
[URL=http://video.sina.com.cn/v/b/40292055-1804832611.html]
http://video.sina.com.cn/v/b/40292055-1804832611.html
[/URL]
(1)、小车底盘
[URL=http://item.taobao.com/item.htm?id=7218838776]
http://item.taobao.com/item.htm?id=7218838776
[/URL]
(2)、四路直流电机驱动器
[URL=http://item.taobao.com/item.htm?id=7218717808]
http://item.taobao.com/item.htm?id=7218717808
[/URL]
(3)、.net micro framework开发板
[URL=http://item.taobao.com/item.htm?id=7117999726]
http://item.taobao.com/item.htm?id=7117999726
[/URL]
注:需要红牛开发板固件在 v1.0.0以上
本文源码1:
[URL=http://www.sky-walker.com.cn/yefan/mfv40/sourcecode/pczigbee_socket.rar]
http://www.sky-walker.com.cn/yefan/mfv40/sourcecode/pczigbee_socket.rar
[/URL]
本文源码2:
[URL=http://www.sky-walker.com.cn/yefan/mfv40/sourcecode/pdasocket_wifi.rar]
http://www.sky-walker.com.cn/yefan/mfv40/sourcecode/pdasocket_wifi.rar
[/URL]
mf快速参考:
.net micro framework 快速入门
mf中文讨论组:
[URL=http://space.cnblogs.com/group/mfsoft/]
http://space.cnblogs.com/group/mfsoft/
[/URL]
微软官方论坛:
msdn微软中文技术论坛(.net micro framework)
开发板简明手册:
[URL=http://blog.sina.com.cn/s/blog_6b938f630100kh0k.html]
http://blog.sina.com.cn/s/blog_6b938f630100kh0k.html
[/URL]
【低价开发板】
[URL=http://item.taobao.com/item.htm?id=7117999726]
http://item.taobao.com/item.htm?id=7117999726
[/URL]
----------------------------------------------
此篇文章从博客转发
原文地址: Http://blog.gkong.com/more.asp?id=128319&Name=yefanqiu