使用Windows Embedded Source Tools for Bluetooth Technology简化蓝牙开发

    “Windows Mobile上的蓝牙点对点通信”介绍如何在两台Windows Mobile设备上建立点对点的蓝牙通信,继续这个话题,WM6SDK中,给出了另外一个蓝牙通信的例子,那就是SpaceWar2DSpaceWar2D使用了Windows Embedded Source Tools for Bluetooth Technology来做蓝牙通信,在两台WM设备间建立连接,然后进行简单的游戏。

      Windows Embedded Source Tools for Bluetooth Technology20055月就已经出来了,最早是Bill Gates在“Microsoft Mobile & Embedded DevCon 2005”上宣布的。在Fox23BlogMike HallBlog上,都曾推荐了这个托管代码封装库。说起这个Windows Embedded Source Tools for Bluetooth Technology的作者Anil Dhawan,我还和他有过一面之缘。20081月底在Sigma大厦举行的“MSRA Students Winter Camp 2008”上,Anil DhawanSamuel Phung给我们带来了精彩的CE机器人演示。由于之前在webcast上见过他,当时VS2008差不多刚发布,所以就和他聊了聊一些VS2005VS2008mobile开发的细节。当时给我的感觉就是,这哥们儿真是活力四射!

      Windows Embedded Source Tools for Bluetooth Technology中,对dll进行了封装,提供给SpaceWar2D使用。主要包括:

      CE Bluetooth Radio Functions

ContractedBlock.gif ExpandedBlockStart.gif Code
 1          [DllImport(BTHUTIL_DLL)]
 2 
 3          public static extern int BthGetMode(ref BluetoothRadioMode mode);
 4 
 5  
 6 
 7          [DllImport(BTHUTIL_DLL)]
 8 
 9          public static extern int BthSetMode(BluetoothRadioMode mode);
10 

       Bluetooth Utility Functions

ContractedBlock.gif ExpandedBlockStart.gif Code
 1          [DllImport(BTDRT_DLL)]
 2 
 3          public static extern int BthSetPIN(byte[] btAddr, int pinLength, byte[] pin);
 4 
 5  
 6 
 7          [DllImport(BTDRT_DLL)]
 8 
 9          public static extern int BthRevokePIN(byte[] btAddr);
10 
11  
12 
13          [DllImport(BTDRT_DLL)]
14 
15          public static extern int BthReadLocalAddr(byte[] btAddr);
16 
17  
18 
19          [DllImport(BTDRT_DLL)]
20 
21          public static extern int BthAuthenticate( byte[] pba );
22 
23          
24 
25          [DllImport(BTDRT_DLL)]
26 
27          public static extern int BthSetEncryption( byte[] btAddr, int encryptOn );
28 

       CE Winsock functions

ContractedBlock.gif ExpandedBlockStart.gif Code
 1         [DllImport(WINSOCK_DLL)]
 2 
 3          public static extern int WSAStartup(ushort version, byte[] wsaData);
 4 
 5  
 6 
 7          [DllImport(WINSOCK_DLL)]
 8 
 9          public static extern int WSACleanup();
10 
11  
12 
13          [DllImport(WINSOCK_DLL)]
14 
15          public static extern int WSALookupServiceBegin(byte[] querySet, int flags, ref int lookupHandle);
16 
17  
18 
19          [DllImport(WINSOCK_DLL)]
20 
21          public static extern int WSALookupServiceNext(int lookupHandle, int flags, ref int bufferLen, byte[] results);
22 
23  
24 
25          [DllImport(WINSOCK_DLL)]
26 
27          public static extern int WSALookupServiceEnd(int lookupHndle);
28 
29  
30 
31          [DllImport(WINSOCK_DLL, SetLastError=true)]
32 
33          public static extern int WSASetService(byte[] regInfo, int op, int flags);
34 
35  
36 
37          [DllImport(WINSOCK_DLL, SetLastError=true)]
38 
39          public static extern int WSAGetLastError();
40 
41 

 

    需要注意的是,在SpaceWar2D中必须添加对Microsoft.WindowsMobile.SharedSource.Bluetooth的引用。

    运行程序前,必须将两个设备建立蓝牙合作关系,具体的方法就是在蓝牙设置中,点击“添加新设备”,然后让设备自动扫描附近的蓝牙设备,找到以后,点击完成。这时,就会在设备中显示刚刚添加的蓝牙设备,如下图1所示:

1:添加的蓝牙设备

    运行程序以后,就可以在两台设备上来操作了,画面会同步显示在各自的屏幕上,在WM6设备屏幕上,看到的界面如下图2所示:

2WM6设备上的游戏界面

    两个物体可以做顺时针旋转、逆时针旋转、发射子弹和加速等动作,如果挨子弹,那么上面的计数会增加,如果相撞的话,同时计数。

    游戏的视频地址如下:http://www.youtube.com/watch?v=2kuA_EskjA4

 

参考链接:

Windows Mobile上的蓝牙点对点通信

Microsoft Mobile & Embedded DevCon 2005

Fox23’ Blog

Mike Hall’ Blog

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值