摘要:本文介绍蓝牙遥控系统的设计与实现,给出了基于SmartPhone的系统解决方案,成功实现了对幻灯片的遥控播放和控制,系统采用了一种全新的方法以获得实现蓝牙通信所需的参数,并且使用了Office自动化过程实现对powerpoint的全面控制,系统完成后经过测试运行良好。与目前市场上的产品相比,不需要购买额外的硬件设备,在SmartPhone平台中具有广泛的应用前景。
1.引言
蓝牙技术是一种解决短距离无线通信的技术,它的优势在于可摆脱设备间的电缆连接 的束缚,并且能使10 一l00m 距离内具有蓝牙接口的不同设备之间实现互连,因此蓝牙在 短技术短距数据传输中具有非常广阔的应用。
Windows Mobile 系统是Microsoft 公司为智能移动终端设备设计的嵌入式操作系统, Windows Mobile 系统主要针对两大手持设备领域:Pocket Pc 和Smartphone,随着技术的发 展,以Windows Mobile for Smartphone 为系统的智能手机使用越来越广泛,而且广泛内嵌蓝 牙模块,为开发基于SmartPhone 的蓝牙应用系统提供了必要条件。
本文在 Windows Mobile 5.0 平台和.NET CF 环境下,设计并实现SmartPhone 蓝牙遥 控器系统,成功实现了Smartphone 对PC(或笔记本)中幻灯片的遥控播放和控制,与市场 上目前的产品相比,该系统不需要购买额外的硬件设备,只需利用已有设备,在SmartPhone 平台中具有广泛的应用前景。
2.Windows Mobile 中蓝牙通信协议栈
Windows Mobile 系统下的蓝牙通信协议栈底层部分包括无线跳频、基带(Base Band)和 链路管理(Link Manager)。Base Band 负责跳频和蓝牙数据及信息帧的传输,确保Piconet 网 内各蓝牙设备单元之间由射频构成的物理连接,该层使用查询和寻呼进程来使不同设备间的 发送频率和时钟同步,基带数据分组提供同步定向连接SCO 和异步无定向连接ACL 两种物 理连接方式,在同一射频上可实现多路数据传输。Link Manager Protocol 负责蓝牙组件间连 接的建立和拆除以及身份鉴别和加密等链路安全和控制。其结构如图1 所示。
HCI(Host Controller Interface)分为硬件和软件部分,硬件部分用来传递HCI 命令至蓝 牙的硬件核心层,软件部分是访问蓝牙设备的基本接口,能够控制蓝牙的连接和传输。逻辑 链路控制适应协议(L2CAP)是高层协议和低层协议之间的一个适配协议,通过协议的复用、 分用及重组为高层提供数据业务和分类提取。SDP 协议用来查询设备的信息、服务及服务 特征,并在查询后建立蓝牙设备间的连接。在应用层实现蓝牙通信时有两种方式可以选择: 一是利用模拟串口,在Windows Mobile 中不是真正的串口而是虚拟串口,这种虚拟串口建 立在RFCOMM 通道上,虚拟串口是用来仿真RS-232 控制和数据信号的串行仿真协议,操 作虚拟串口时如同操作真正的串口。第二种通信方式则利用Winsock 协议,Winsock 对蓝牙 的支持依赖于设备中安装的Winsock 协议栈。使用虚拟串口实现蓝牙设备间的通信,在数据 通信量不大的情况下更加方便快捷,所以本设计采用的第一种通信方式。
3.系统设计与实现
3.1 系统结构
系统分为 SmartPhone 端和PC 端。首先SmartPhone 端与PC 端通过虚拟串行口建立蓝牙 的通信连接,然后SmartPhone 端通过键盘或触摸屏向PC 端发送文件打开、幻灯片播放、 翻页、关闭、窗口放大、窗口缩小、文件关闭等指令,PC 端在收到指令后调用后台Office Powerpoint 控制程序,实现对Powerpoint 对应的操作,同时PC 端传回Powerpoint 播放的状 态信息在SmartPhone 端进行显示。
3.2 蓝牙设备间的数据传输
SmartPhone 端在利用蓝牙模块与PC 端进行通信前,首先要对PC 端的蓝牙设备进行查 询搜索,来获得设备的名称、地址、所提供的服务等相关信息。在以往的系统设计中,设备 查询需要调用相关的蓝牙API 函数来遍历取得通信范围内的蓝牙设备信息,并将结果信息 存入系统定义的WSAQUERYSET 数据结构中,然后再通过注册虚拟串口,实现设备间的蓝 牙串行通信,整个过程复杂并且容易出错,或者有的系统干脆采用手工指定的方式。本系统 则采取一种新的方法,通过读取系统的注册表,来查询相关的蓝牙设备名称、服务以及使用 的虚拟串口号。在Windows Mobile 5.0 平台中, 注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Bluetooth\Device 下存储了蓝牙设备的设 备名称、16 位字符的ID 号以及设备的CLASS , 而 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Bluetooth\Serial\Ports 下则存储了蓝牙连 接所使用的虚拟串口号,但不包含系统保留的串口标识。在这个键值下系统为每一个匹配的 设备都设定了一个蓝牙串口号,而且可以通过指定"New Outgoing Port"值设定设备的新虚拟 串口号。
利用这种新的机制就不在需要使用传统的RegisterDevice()方法去注册虚拟串口号 然后使用,而是通过查询或设定注册表进行使用,而不与别的串口相冲突。 通过对以上方法获得设备及虚拟串口号的信息后,再利用这些信息实现 SmartPhone 端 和PC 端的蓝牙通信。通信过程的流程图如图2 所示: