视频的容积 发表于 2015-9-30 11:15:07

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

  恰好以前购买的一个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;
      while (true)
      {
            if (socket != null)
            {
                if (socket.Available > 0)
                {
                  //接收数据
                  socket.Receive(buff, socket.Available, SocketFlags.None);
                  switch (buff)
                  {
                        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来控制智能小车了。
  相关控制视频如下:

  http://video.sina.com.cn/v/b/40292055-1804832611.html
  (1)、小车底盘
  http://item.taobao.com/item.htm?id=7218838776
  (2)、四路直流电机驱动器
  http://item.taobao.com/item.htm?id=7218717808
  (3)、.NET Micro Framework开发板
  http://item.taobao.com/item.htm?id=7117999726
  注:需要红牛开发板固件在 V1.0.0以上
  本文源码1:http://www.sky-walker.com.cn/yefan/MFV40/SourceCode/PCZigbee_Socket.rar
  本文源码2:http://www.sky-walker.com.cn/yefan/MFV40/SourceCode/PDASocket_wifi.rar
  MF快速参考: .NET Micro Framework 快速入门
  MF中文讨论组:http://space.cnblogs.com/group/MFSoft/
  微软官方论坛:MSDN微软中文技术论坛(.NET Micro Framework)
  开发板简明手册:http://blog.sina.com.cn/s/blog_6b938f630100kh0k.html
  【低价开发板】http://item.taobao.com/item.htm?id=7117999726
  
页: [1]
查看完整版本: 【STM32 .Net MF开发板学习-17】Wifi遥控智能小车