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_MACHINESOFTWAREMicrosoftBluetoothDevice 下存储了蓝牙设备的设 备名称、16 位字符的ID 号以及设备的CLASS , 而 HKEY_LOCAL_MACHINESOFTWAREMicrosoftBluetoothSerialPorts 下则存储了蓝牙连 接所使用的虚拟串口号,但不包含系统保留的串口标识。在这个键值下系统为每一个匹配的 设备都设定了一个蓝牙串口号,而且可以通过指定"New Outgoing Port"值设定设备的新虚拟 串口号。
利用这种新的机制就不在需要使用传统的RegisterDevice()方法去注册虚拟串口号 然后使用,而是通过查询或设定注册表进行使用,而不与别的串口相冲突。 通过对以上方法获得设备及虚拟串口号的信息后,再利用这些信息实现 SmartPhone 端 和PC 端的蓝牙通信。通信过程的流程图如图2 所示:
3.3 Powerpoint 控制解决方案
系统采用方便灵活的Microsoft Office 自动化方法将 Office 功能并入自定义解决方案 中。Office 基于 COM,因此必须使用 COM 的编程方式。.NET Framework 中使用COM Interop 集实现与早期 COM 的通信。COM Interop 的作用是在 .NET 代码与COM 对象之 间添加一个“填充程序”。在项目中添加对 COM 服务器的引用时,.NET 使用类型信息生 成运行库可调用包装 (RCW) 的代码。这些托管代码将被编译到单独的Interop 程序集中, 并由 .NET Framework 访问,RCW 充当托管代码与 COM 服务器之间的媒介。
由于 OFFICE COM 服务器能够支持 .NET,它可以提供一个安装并注册到全局程序集缓 存中的主 Interop 程序集 (PIA)。这些程序集都是共享程序集,PIA 被视为在 .NET 项目中 引用早期 COM 服务器的最佳方法。
从类型库创建的 Interop 程序集使用早期绑定与 COM 项目进行通信。为了让绑定细节保持通用状态,除了绑定外,另一个重要问题是对象实例化。如果使用 Interop 程序集, Office 应用程序的 RCW 将在使用 New 运算符时控制对象实例化。RCW 隐含调用相应的 COM 例程来创建该应用程序的新实例供代码使用。
本系统通过引用互操作程序集 Microsoft.Office.Interop.PowerPoint 实现Office 自动化过 程,利用.NET 编写应用程序来实现在PC 端控制Powerpoint 应用程序。PC 端通过蓝牙通信 接收SmartPhone 端发来的指令,利用 Powerpoint 的自动化功能实现文档的打开、关闭、缩 放、播放等控制功能,并且将获得的Powerpoint 的总页数、当前播放页等信息返回给 SmartPhone 端进行显示。理论上来说通过用户界面手动执行的操作几乎都可以通过该解决 方案来执行。主要控制代码如下:
4.结束语
本文就蓝牙遥控系统提出了相应解决方案,进行了设计与开发, 系统完成后经过测 试运行良好,可方便快捷的实现对Powerpoint 进行遥控控制。按照以上给出的设计框架和 方法,对系统进行扩展后,完全可以实现对其它多种应用软件的遥控,实现通用蓝牙遥控器 系统。
本文创新点是系统采用了一种全新的方法以获得蓝牙通信所需的参数,与传统方法 相比更加简单、方便,不易出错。并且系统使用了Office 自动化技术实现对powerpoint 的 全面控制,该系统不需要购买额外的硬件设备,只需利用已有设备,在SmartPhone 平台 中具有广泛的应用前景。