当前位置:文档之家› 基于蓝牙无线通信的远程操作的研究

基于蓝牙无线通信的远程操作的研究

基于蓝牙无线通信的远程操作的研究施宇光1,刘晓鸿1,李文婷21北京邮电大学计算机科学与技术学院,北京(100876)2中国矿业大学(北京)机电与信息工程学院,北京(100083)E-mail:sygsyg1982@摘要:本文通过研究蓝牙链接的通信过程以及计算机键盘信号的模拟方法,提出了一种基于蓝牙通信的远程操作模式,以实现利用基于Windows Mobile操作系统的移动设备对个人电脑进行特定的远程操作。

关键词:蓝牙,Windows Mobile,远程操作,.Net Compact Framework1.引言蓝牙技术从成立到现在已经近十年的时间,从蓝牙诞生开始,全世界就对它寄予了无限的希望。

虽然蓝牙的商业化在之后的发展中并不像人们预期的那样顺利,但是随着2005年之后智能手机(基于Symbian和Windows Mobile操作系统的)和其他智能设备的大范围兴起,我们看到支持蓝牙技术的设备开始真正走入了我们的生活。

蓝牙诞生的目的就是要提供一种低成本,近距离的无线通信方式,工程固定与移动设备通信环境中的个人网络,使得近距离内各种设备能够实现无缝资源共享[4]。

蓝牙技术定义了电路交换和分组交换的数据传输类型,能够同时支持语音和数据信息的传输[4]。

而在支持蓝牙功能的设备之间建立链接后,还可以利用这条通信线路来实现一些扩展功能,如利用小型化的移动设备对个人电脑进行特定的远程操作。

2.蓝牙及Windows Mobile简介本文研究的是利用就Windows Mobile操作系统的移动设备,通过蓝牙通信的方式对个人电脑进行远程控制,所以下边分别对蓝牙和移动设备这两个部分的情况进行简单的介绍。

2.1 蓝牙(Bluetooth)简介蓝牙(Bluetooth),是1998年推出的一种新的无线传输方式,实际上就是取代数据电缆的短距离无线通信技术,通过低带宽电波实现点对点,或点对多点连接之间的信息交流[5]。

蓝牙定义了两种链路类型:SCO(面向链接的同步链路)和ACL(面向无链接的异步链路)。

蓝牙技术工作在全球通用的2.4GHz的ISM频段,无须申请许可证,并且采用PLUG&PLAY 功能,可以解释成“即插即用”[4]。

作为一种新技术,蓝牙的主要优点是:可以方便地建立无线连接,代替传统的有线电缆连接;移植性较强,使用面广;安全性较高而且每一台蓝牙设备的地址全球唯一;与其他通信设备相比,设计开发较为容易[5]。

蓝牙技术支持1个异步数据通道或3个并发的同步话音通道,或1个同时传送异步数据和同步话音的通道。

每一个话音通道支持64kb/s的同步话音;异步通道支持最大速率为721kb/s、反向应答速率为57.6kb/s的非对称连接,或者是432.6kb/s的对称连接[5]。

2.2 Windows Mobile操作系统简介Windows Mobile是微软公司为智能移动终端设备设计的操作系统,Windows Mobile将桌面Windows功能扩展到了移动设备上。

基于Windows Mobile操作系统的智能设备终端设备分为Smartphone和Pocket PC两个大类。

Windows Mobile自2003版开始在设备ROM中内置.Net Compact Framework(.Net Framework的精简版本),使得开发人员可以使用C#和Microsoft Visual 等语言为基于Windows Mobile的移动设备开发应用程序。

在通信方面,Windows Mobile加入了蓝牙管理程序,使得基于该操作系统的智能终端设备可以使用蓝牙技术以无线通信的方式来进行数据交换[2]。

在移动设备上,现阶段特别是在Windows Mobile智能终端平台上,开发出适合具体行业移动工作需要的应用软件,从而使移动设备真正为实际工作服务。

Windows Mobile移动设备与传统的固定设备之间在统一的标准化通信方式及数据库模式下结合,为使用者提供了更加现金全面的多级移动解决方案,从而加速了移动解决方案在行业中的垂直应用。

2.3 .Net Compact Framework开发简介微软开发.NET Compact Framework的目的是在智能设备商快速的开发应用程序。

这里所说的应用程序是指用来现实、手机、处理和转发消息的应用程序,也就是那些能够促使用户携带某个设备的应用程序。

.NET Compact Framework简化了在智能设备商开发应用程序的过程。

我们可以使用微软提供的开发工具Visual Studio .NET开创建针对.NET Compact Framework的应用程序,在这个过程使用的工具语言是C#或者Visual Basic。

.NET Compact Framework有两个主要组件:公共语言运行库和.NET Compact Framework类库[1]。

.NET Compact Framework的类库为程序员在Windows Mobile的移动设备上进行开发提供了所有必要的支持,所以Visual Studio .NET也成了开发移动设备应用程序的主流选择工具。

但是.NET Compact Framework目前本身并不支持蓝牙这样接近底层的通信方式。

用户在实现蓝牙的时候可以通过串行端口通信或者第三方的API的调用来使用蓝牙所提供的功能。

3.基于蓝牙无线通信的远程操作的系统化设计随着越来越多的个人消费类电子产品开始加入对蓝牙功能的支持,移动设备和固定设备之间的通信和数据传输已经成为了业界开发的下一个重点。

我们可以利用移动设备的便利性来实现一些除了数据或语音传输之外更为智能化的功能,比如远程操作,这将为很多消费产品的功能带来锦上添花的效果。

3.1 远程操作的概念和系统设计本次设计旨在实现一个可以通过智能移动终端(基于Windows Mobile操作系统)对个人电脑进行远程操作的应用程序,受控段和控制端分别对应运行于需要被控制的个人电脑和控制端的移动终端之上。

首先要做的是在两端建立可以发送和接收消息的端,两端之间的发送途径需要用蓝牙的方式来构建;然后在定义好双方可以理解的消息格式,以便远程的操作信号可以被明确的传输;最后要在受控端对接收到的消息进行理解,将不同的消息翻译成本机可以识别的操作信号,从而实现对受控端的操作。

实现远程控制的操作,通常来说有三个方面的问题是必须解决的。

第一是远程链接的建立途径,第二是链接建立之后消息的发送方式,第三是受控端在受到控制端消息后如何将其转化为可以控制本机运行的操作信号。

其中第二部分,在建立链接以后,只要定义好消息格式,然后按照链接制定的方法将内容发送到套接字就可以了。

这个过程中更低层次的容错和安全考虑已经被链接的协议所屏蔽。

所以我们着重需要考虑的是在Windows Mobile这种特定操作系统上与个人电脑建立链接的实现方法以及个人电脑在受到消息后如何将其转化为本机的操作信号。

此系统的总体构架入下图所示:图2 远程操作的模块化结构分析整个远程控制系统分为需要在个人电脑上运行的受控端和需要在Windows Mobile终端上运行的控制端这两大部分构成。

其中在控制端分为“用户界面”、“蓝牙控制”和“消息机制”三个子模块。

用户界面是智能客户端与用户交互的直接媒介,由于基于Windows Mobiles的智能设备跟普通的桌面系统相比不仅屏幕非常的小,而且往往不具有全键盘输入功能,所以用户界面的设计显得更为重要,在用户界面的设计上需要遵循一下几条原则:更为人性化功能布局和视觉优化;更具识别性的图标及其它元素;更具可操控性和扩充性。

蓝牙控制模块主要具有三个功能,第一是寻找周围可用蓝牙链接设备,并对各类设备发出的蓝牙请求进行应答;第二是将基于Windows Mobile的智能设备和被控制的主机建立稳定可用的蓝牙连接;另外还要考虑在C#号下为了实现较低层的功能而使用的C++非托管代码的封装。

在消息机制模块中,控制端和受控端需要设置一定的消息格式,以便受控端可以对控制者的指令进行准确而快速的理解,从而正确的激发“受控操作”模块的功能。

受控端的受控操作模块需要将消息机制传达过来的信息转换成对应的操作信号发给受控的操作系统或者其他应用软件。

软件的输入输出控制一般来说是由鼠标键盘等外设来完成的,但是在Windows API中有这一整套供程序员使用的,可以模拟鼠标和键盘操作的接口函数,只要正确的调用这些函数,就可以达到脱离鼠标键盘实现内部控制的目的。

4. 远程操作的基本实现及难点分析本系统在实现过程中需主要解决的问题有两个方面,第一是在控制端的智能移动设备上调用较为底层的蓝牙功能,这个部分的实现需要考虑两方面的问题,首先是在Windows Mobile的基础上需要用C#的托管代码编程,其中底层用以建立蓝牙链接的代码是C++实现,这样就涉及到对非托管代码的调用过程,其次就是在C++下如何调用相应的API来实现蓝牙的连接;第二是在受控端将接收到的控制命令转化为实际的控制信号发给相应的受控程序。

4.2.1 托管代码调用非托管代码的方法.NET Compact Framework的类库为程序员在Windows Mobile的移动设备上进行开发提供了所有必要的支持,所以Visual Studio .NET也成了开发移动设备应用程序的主流选择工具。

但是.NET Compact Framework目前本身并不支持蓝牙这样接近底层的通信方式。

用户在实现蓝牙的时候可以通过串行端口通信或者第三方的API的调用来使用蓝牙所提供的功能。

.NET Compact Framework毕竟是一种从.NET Framework的子集,它实现了移动设备上所必须的功能,这占到了.NET Framework的30%左右。

而基于此的程序代码都是托管代码。

所以.NET程序员在享受.NET组件便利的同时,如果遇到不被.NET支持的问题,就必须使用C++来完成功能,而C++是非托管的。

Windows的动态链接库(DLL)就是一个很好的非托管代码的例子。

如果我们遇到需要访问的Windows API未被.NET类库托管封装的话,就需要调用非托管的Windows API来访问这些未被托管的功能。

这就引入了.NET平台调用的Windows API的平台调用服务(P/Invoke)服务,这项服务允许托管代码调用驻留在DLL中的非托管函数。

这样一来我们就可以在实现过程中使用到Windows CE的API所提供的蓝牙相关功能了。

平台调用服务条用非托管函数是,它将依次执行以下操作[1]:l查找包含该函数的DLL。

l将该DLL加载到内存中。

l查找函数在内存中的地址并将其参数推到堆栈上,以封送所需的数据。

l将控制权移交给非托管函数。

相关主题