中国自动化学会专家咨询工作委员会指定宣传媒体
免费注册 登录 广告服务 | 客服中心
您现在所在的是:

嵌入式系统

抖音 德嘉 泓格论坛 FLIR红外热像论坛
工控论坛首页 嵌入式系统 → 浏览主题: 【STM32 .Net MF开发板学习-17】Wifi遥控智能小车
发表新帖 回复该主题
回帖:0个,阅读:491 [上一页] [1] [下一页]
* 帖子主题:

【STM32 .Net MF开发板学习-17】Wifi遥控智能小车

分享到
884
yefanqiu
文章数:33
年度积分:50
历史总积分:884
注册时间:2004/8/19
发站内信
发表于:2010/11/4 23:41:13
#0楼
恰好以前购买的一个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
工控学堂推荐视频:

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

46.8003