Windows Mobile上的蓝牙点对点通信
实验室做短距离通信,蓝牙是其中主要技术之一。研究生入学复试的时候,大老板跟我们说,蓝牙的起源和一位弹钢琴的人有关,因为蓝牙用到了跳频,这个和手指在各个琴键之间跳动的现象有一定的联系。各学科之间的碰撞,会出现一些奇妙的火花。
在Windows Mobile平台上,如何来实现蓝牙通信呢?有好多人已经做过这方面的工作,比如在winbile论坛的“使用C#来开发.NET CF 蓝牙通信模块”,codeproject上的“Bluetooth Connection in Windows Mobile 5.0 using InThehand - C#”和“Bluetooth Simulation in C# with Serial Ports”等等。
其实,安装了windows mobile 6.0 Professional SDK之后,自带的sample中就有蓝牙通信的例子,包括Bluetooth Device Discovery、Chatting over Bluetooth和Bluetooth Game。前面两个是C++写的,第三个是用C#来写的。Bluetooth Device Discovery是采用“Winsock 2 API”来实现蓝牙设备的发现。Chatting over Bluetooth是在两个蓝牙设备之间建立点对点的通信。Bluetooth Game是使用蓝牙技术,在两台设备之间建立连接,然后进行游戏。手头正好有两台bluetooth的设备,一台是WM5系统,一台是WM6的,所以决定试试Chatting over Bluetooth。
打开Chatting over Bluetooth工程,发现这是一个基于对话框的MFC,对蓝牙的操作主要是在“BthUtils.cpp”中完成的,包括发现设备、建立连接和发送数据等等,其主要的函数如下:
在程序启动后,首先搜索附近的蓝牙设备,搜索过程完成以后,将其设备的名字和蓝牙地址显示在下拉列表中,然后就可以进行双向的消息发送和接收了。程序运行界面如下图1所示:
图1:WM5和WM6上的程序运行界面
需要注意的是,在设置蓝牙的时候,如果没有将“对其他设备可见”选项打上勾,即只是将蓝牙打开,如下图2所示:
图2:蓝牙处于打开状态
可能无法正常通信,应用程序会提示无法发送消息。选中“对其他设备可见”之后,就能够正常通信了,如下图3所示:
图3:蓝牙处于可见状态
参考链接:
Bluetooth Connection in Windows Mobile 5.0 using InThehand - C#