蓝牙手机变身小车遥控器 (2)

过生日这几天一直在腐败,今天抽时间把小车遥控器的攻略补上。这个小车遥控器一共需要四个程序,首先看看运行在笔记本上,用来接收手机指令的Web Service。

先创建一个Web Service工程,命名为 WCF_ReceivePhoneMessage:

创建 WebService 工程

创建 WebService 工程

在工程根目录里新建一个文件Web.config,并添加以下的设置:

  <appSettings>
    <add key="PortNumber" value="31718" />
  </appSettings>

这个是将来用来转发指令的Socket端口号。接下来再创建一个ping.asmx文件,这个就是传说中的Web Service的接口,代码如下:

	[WebService(Namespace = "http://www.diy-robots.com/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    public class Ping : System.Web.Services.WebService
    {
        static private int PortNumber = Convert.ToInt32(ConfigurationManager.AppSettings["PortNumber"]);

        [WebMethod]
        public void SetData(string data)
        {
            if (!string.IsNullOrEmpty(data))
            {
                try
                {
					//Here are codes to get the IP address of local computer
					//You can also set it directly
                    string ipAddress = "";
                    IPHostEntry ipHost = Dns.GetHostEntry(Dns.GetHostName());
                    foreach (IPAddress ipAddr in ipHost.AddressList)
                    {
                        ipAddress = ipAddr.ToString();
                        if (ipAddress.IndexOf(":") < 0) break;
                    }

					//Send TCP/IP data
                    TcpClient client = new TcpClient();
                    client.Connect(ipAddress, PortNumber);
                    NetworkStream stream = client.GetStream();
                    byte[] bytes = Encoding.ASCII.GetBytes(data);
                    lock (stream)
                    {
                        stream.Write(bytes, 0, bytes.Length);
                    }
                    client.Close();
                }
                catch (Exception) { }
            }
        }
    }

段代码其实很简单,就是创建一个SetData函数,把传进来的string类型的参数转成byte数组,然后转发到制定的Socket端口。为了让这个Web Service生效,还需要在IIS里面生成一个应用程序。看下面这个图:

设置IIS

设置IIS

IIS设置设置好了,咱们在浏览器里简单测试一下程序是不是部署成功,输入下面的地址:其中ComputerNames是你自己电脑的名字
http://ComputerName/service/ping.asmx?op=SetData

这个页面只要不出错就算成功了,正确的显示应该是这样:

Web Service创建成功

Web Service创建成功

本来想把手机上的程序也一起发完,不过又累又困,下回再说吧 :)

上面这个web service的源代码可以在这里下载:
http://www.diy-robots.com/Resources/XiaoI/WCF_ReceivePhoneMessage.zip



对 “蓝牙手机变身小车遥控器 (2)” 的 6 条 评论

  1. dead_lee 说:

    加油, 回頭拍個視頻放上去

  2. lechie 说:

    good

  3. 虎子哥 说:

    我用手机连接蓝牙串口控制双轴系统,不过不是arduino的,arduino一定需要pc端吗?

  4. riabox 说:

    webservices方式底层也是短连接,架在response/request上的,而且传输的数据更多,还得解释XML协议。。
    你这试验怎么会用传统方式不行,webservices倒是可以,并且还更好。。。

  5. 皆様の絶好評判を偽物スーパーコピー 時計人気専門 ショップです
    ロレックススーパーコピーなど世界中有名なスーパーコピー 時計を格安で通販しております。
    N級品スーパーコピー 時計は 業界で最高な品質に挑戦します。!
    その達成は多数のうちの1つです。
    しかし、それは、完成を求めるロレックス、および彼らのエクスプローラーをそれらの成功の主要部分と考える人々の両方をガイドする冒険心を象徴します
    スーパーコピー ヴィトン スカーフ xy https://www.raku78.com/product-3995.html

发表评论

可以使用下列 XHTML 标签:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>