结题报告技术文档正文.docx_第1页
结题报告技术文档正文.docx_第2页
结题报告技术文档正文.docx_第3页
结题报告技术文档正文.docx_第4页
结题报告技术文档正文.docx_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于手机的多媒体教学控制技术的研究团队成员:仇桦 顾晓萍 乔君指导老师:闫之烨摘要 由于教学的需要,多媒体设备现在被大量使用,这样老师经常需要站在电脑前面,以便操作鼠标来控制PPT的播放,使上课会有一定的局限性,与学生互动性变差,对教学效果有一定的影响。本项目就是为解决此问题,在分析了蓝牙无线技术、JAVA技术等相关技术的基础上,利用智能手机和电脑的蓝牙连接制作无线教辅工具,利用手机无线控制PPT文件播放。本报告重点阐述了基于手机的控制系统的软件设计方案、实现过程中的遇到的关键问题和相应的解决办法,最终进行了测试。测试结果表明:用手机进行多媒体控制具有一定的可行性。关键词 蓝牙 PPT 控制一、 引言随着多媒体技术应用的发展,如今高校教师上课时基本上都利用多媒体技术进行教学,其中最为典型的就是利用PPT放映幻灯片,PPT能够更好的利用教学资源,实现资源的重复利用,而且能够更加直观贴切的表达文义。而多媒体教室的电脑一般都位于教室的正中间,屏幕则位于黑板的旁边。教师在上课的时候,一般都需要站在电脑前面不远处,以方便操作电脑,因此其活动范围有限。如果老师在教室中间和学生互动的时候需要结合大屏幕显示的内容时,他就需要在教室中间和放电脑的讲台之间频繁往返,这样致使教师上课的连贯性变差,影响教学效果。目前市场上已经存在上述问题的解决方案,有专门针对PPT演示使用的红外演示仪。这种系统的优点是已经有市场化的较为成熟的产品,缺点主要有以下几点:一、在红外线的传输距离教短,发射器和接收器之间的距离不能太远;二、红外线在遇到障碍物的时候,衰减很严重,会导致无法响应。三、需要携带设备才能进行通信。基于上述情况,利用现有的电子设备,如手机,在与服务器端蓝牙模块配对后,利用手机客户端的控制程序,就可以远程控制电脑服务器端的PPT播放。这样就会更加方便教师在课堂中间与学生互动,且可以自如切换幻灯片。此项目利用的是蓝牙传输技术,蓝牙的有效工作范围及传输速率均比红外线高,可以有效克服红外线的缺点,且现在的手机基本都配备了蓝牙传输模块,可以很方便的与笔记本的蓝牙进行配对,且不用携带额外设备。此项目所涉及的设备主要包括带蓝牙模块的手机和电脑。因此,需要分别在这两个设备上开发相应的程序,能够让客户端发来的信息,经电脑接收后,反馈到PPT的实时播放,并能将PPT的播放内容,传输回手机的界面上。此项目经过反复研究,先收集相关资料,制定出相应方案,并编程实现,经过调试之后,最终形成研究成果,此研究成果不但可以应用在课堂,尤其适用于开会或者其他使用多媒体设备的场合。二、 本论1、 调查结果及课题意义本项目的研究意义在于利用我们身边常用的设备,来进行电脑的远程控制,实现远程控制PPT播放,以扩大老师的活动空间,更利于学生与老师的互动,创造良好的教学氛围。一方面,方便了老师上课,另一方面,也提高我们解决问题的能力。/2、研究内容、研究方法及研究过程 2.1 总体设计思路系统本系统包括两部分,一部分是客户端,一部分是服务器端,两部分的关系如下图所示: 图1 系统内部关系示意图整个系统主要采用两种技术,一是蓝牙技术,是作为客户端和服务器端通信的媒介,客户端发出的所有信息,均要在服务器端有所反馈,以及服务器端演示的PPT内容也将返回到客户端界面,所有这些信息均采用蓝牙传输。二是软件技术,是作为客户端和服务器端通信的具体实现,要使用两种语言来实现,在客户端采用的是JAVA语言,在服务器端采用的是C#语言,各自完成相应界面设计,以及各自信息的定义。在整个系统中,PC端服务器开蓝牙虚拟串口,手机做客户端,搜索PC,并主动连接,连接之后,客户端利用J2ME使用普通的输入输出流,PC就有普通的串口读写。2.2 蓝牙技术蓝牙技术(Bluetooth)是一种使用电波的、近距离的无线数据通信技术,是无线数据和语音传输的开放式标准,它是为有线电缆的无线化而开发的。利用“蓝牙”技术能够有效地简化现代电子技术,例如平板电脑、笔记本电脑和移动电话等移动通信终端设备之间的通信,从而使这些现代通信设备之间的数据传输变得更加迅速高效,为无线通信拓宽道路。蓝牙的传输距离为10cm10m,如果增加功率或是加上某些外设便可达到100m的传输距离。它采用2.4GHz ISM频段和调频、跳频技术,使用权向纠错编码、ARQ、TDD和基带协议。蓝牙技术功耗低、对人体危害小,而且应用简单、容易实现,所以易于推广。蓝牙技术的系统结构分为三大部分:底层硬件模块、中间协议层和高层应用。 底层硬件部分包括无线跳频(RF)、基带(BB)和链路管理(LM)。无线跳频层通过2.4GHz无需授权的ISM频段的微波,实现数据位流的过滤和传输,本层协议主要定义了蓝牙收发器在此频带正常工作所需要满足的条件。基带负责跳频以及蓝牙数据和信息帧的传输。链路管理负责连接、建立和拆除链路并进行安全控制。中间协议层包括逻辑链路控制和适应协议、服务发现协议、串口仿真协议和电话通信协议。逻辑链路控制和适应协议具有完成数据拆装、控制服务质量和复用协议的功能,该层协议是其它各层协议实现的基础。服务发现协议层为上层应用程序提供一种机制来发现网络中可用的服务及其特性。串口仿真协议层具有仿真9针RS232串口的功能。电话通信协议层则提供蓝牙设备间话音和数据的呼叫控制指令。 主机控制接口层(HCI)是蓝牙协议中软硬件之间的接口,它提供了一个调用基带、链路管理、状态和控制寄存器等硬件的统一命令接口。蓝牙设备之间进行通信时,HCI以上的协议软件实体在主机上运行,而HCI以下的功能由蓝牙设备来完成,二者之间通过一个对两端透明的传输层进行交互。在蓝牙协议栈的最上部是各种高层应用框架。点对点协议(Point-to-PointProtocol,PPP);传输控制协议/网络层协议(TCP/IP);用户数据包协议(UserDatagram Protocol,UDP);对象交换协议(ObjectExchang Protocol,OBEX);无线应用协议(WirelessApplication Protocol,WAP);无线应用环境(WirelessApplication Environment,WAE);我们应用的就是OBEX协议,支持设备间的数据交换,采用客户/服务器模式提供与HTTP(超文本传输协议)相同的基本功能。可用于交换的电子商务卡、个人日程表、消息和便条等格式。现在的智能手机大多采用android系统,Android蓝牙系统分为四个层次,内核层、BlueZ库、BlueTooth的适配库、BlueTooth的JNI部分、Java框架层、应用层。基本框架与之前没有什么太多变化,对于本系统,蓝牙的利用,只是负责发送信号,和接受信号,将蓝牙作为传输媒介,在系统运行之前,是会由客户端和服务器端之间,进行配对,因此本系统不会涉及到底层的内容,主要是设计到应用层的协议,调用库文件。2.3 客户端在客户端,主要包含以下几个方面,一是界面设计,包括PPT翻页控制按钮,以及显示窗口,负责显示服务器端传来的PPT页面;二是功能设定,我们要将页面上按钮定义为向前翻或者是向后翻,并将按钮设定为具体函数,并将此函数结果发送到服务器端,页面中间为显示区域,同样,要将此部分也要定义成函数,负责显示来自服务器端的反馈信息。客户端程序的编写主要采用的JAVA语言,利用java调用API来编写。下图,为播放PPT的服务器端界面,中间显示的为服务器端显示的PPT页面,右边下面的2个按钮上面有2个箭头,向右的为翻到下一页,向左的为翻到上一页。如果,没有连接上,页面也会显示相应提示信息。图 2 客户端界面演示图客户端采用的是JAVA语言,下面将简单介绍下此语言。Java语言由C+发展而来,因此继承了C+面向对象的全部特征,同时它还对C+语言中一些复杂的特性剔除,讲Java打造成为一种纯正的面向对象方法的程序设计语言。Java语言是一种简单的、面向对象的、分布式的、健壮的、安全性的、平台无关的、可移植的、解释性的、高性能的、多线程的、动态的程序设计语言。 面向对象:其实是现实世界模型的自然延伸。现实世界中任何实体都可以看作是对象。对象之间通过消息相互作用。另外,现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实例。如果说传统的过程式编程语言是以过程为中心以算法为驱动的话,面向对象的编程语言则是以对象为中心以消息为驱动。用公式表示,过程式编程语言为:程序=算法+数据;面向对象编程语言为:程序=对象+消息。 所有面向对象编程语言都支持三个概念:封装、多态性和继承,Java也是如此。现实世界中的对象均有属性和行为,映射到计算机程序上,属性则表示对象的数据,行为表示对象的方法(其作用是处理数据或同外界交互)。所谓封装,就是用一个自主式框架把对象的数据和方法联在一起形成一个整体。可以说,对象是支持封装的手段,是封装的基本单位。Java语言的封装性较强,因为Java无全程变量,无主函数,在Java中绝大部分成员是对象,只有简单的数字类型、字符类型和布尔类型除外。而对于这些类型,Java也提供了相应的对象类型以便与其他对象交互操作。 可移植性:就是在这个系统上作的程序经过一次编译后可以移植到别的系统上解释执行,只要经过简单的粘贴和复制就行了,不影响程序的效果安全性:在 iSeries 服务器上运行的大多数 Java(TM) 程序是应用程序,而不是 applet,所以“砂箱”安全性模型对它们不起限制作用。从安全性的观点看,Java 应用程序所受的安全性限制与 iSeries 服务器上的任何其它程序相同。要在 iSeries 服务器上运行 Java 程序,您必须对集成文件系统中的类文件具有权限。程序一旦启动,它就在该用户权限控制下运行。 您可以使用沿用权限来访问具有运行程序的用户的权限和程序拥有者权限的对象。沿用权限临时地将用户原先无权访问的对象的权限授予用户。并发性:JAVA支持多线程技术,就是多个线程并行机制,多线程是Java的一个重要方法,特别有利于在程序中实现并发任务.Java提供Thread线程类,实现了多线程的并发机制.然而,程序的并发执行必定会出现多个线程互斥访问临界资源的局面,因而并发系统解决的关键就是对临界资源的管理和分配问题,而在进行临界资源分配时有两方面需要考虑,即安全性和公平性。还有些特性,本结题报告就不累述了。下面给出的是部分程序:- - - - - 。BluetoothDevice 类,此为对应的远程蓝牙 Device createRfcommSocketToServiceRecord() :创建该 Device 的 socket 。BluetoothSocket 类connect() :请求连接蓝牙。getInputStream() :得到输入流,用于接收远程方信息。getOutputStream() :得到输出流,发送给远程方的信息。close() :关闭蓝牙连接。InputStream 类:read(byte) :以阻塞方式读取输入流。OutputStream 类:write(byte) :将信息写入该输出流,发送给远程。2.4 服务器端服务器端主要包括以下几个方面,一是powerpoint的打开;二是以及蓝牙连接状态显示;三是PPT播放,以及将播放内容以文件流的形式发送到客户端。服务器端是采用C#语言编写的。服务器端程序运行之后,会打开2个界面一个是蓝牙状态窗口,一个powerpoint程序窗口,如下图3所示,图3 服务器端运行后打开的窗口示意图其中,大的窗口为powerpoint程序窗口,在程序运行之后会自动打开,图中的小窗口为状态窗口,反应了服务器端与客户端的状态,主要有3种情况,不支持蓝牙技术,客户端没有连接,客户端连接。图4为其中的一种状态。图4 主窗口蓝牙状态窗口服务器端采用的是C#语言,下面将简单介绍下C#的特点。C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。C#是一种安全的、稳定的、简单的、优雅的,由C和C+衍生出来的面向对象的编程语言。它在继承C和C+强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C+的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 .NET windows网络框架的主角。C#的语言特点是使用了为人熟知的语法实现了方法,以至于很多人认为C#和Java、C+等面向对象语言“非常相像”,这使得从使用其他面向对象语言转到使用C#的过程非常简单。此外,C#还通过无参数列表的方法声名语法,结合get/set访问器实现了优雅的属性语法。其中的get访问器相当于获取属性值的方法,可以通过一些运算返回最终的结果,而不是简单地返回一个变量的值;而set访问器相当于设置属性值的方法,在其中可以进行一系列检测,最后将属性值赋给相应的变量。同时,通过同时提供get和set访问器、只提供get访问器和只提供set访问器,还可以很方便地实现可写、只读和只写的属性。C#的这种属性语法,使得一个属性在提供该属性的类的内部看来,非常像一组方法;而对于外部调用类看来,访问一个对象的属性和访问它的公共域没有任何区别。通过委托(稍后介绍),结合关键字event,C#提供了优雅的事件概念。使用+=运算符,开发者可以非常方便地将一个事件处理器关联到一个事件上,这个过程称之为“订阅”一个事件。由于委托内部封装了一个调用链表,因此可以方便地为一个事件添加多个事件处理器,这些处理器会自动地依次调用。多年的开发语言进化证明,函数指针是非常重要也是非常危险的语言特征之一。同时,基于函数指针的回调机制也Windows 核心概念之一。然而,由于函数指针很难验证参数的类型准确性,因此C#(确切地说是CLI)提出了“委托”的概念,这是一种类型安全的函数指针链表。这意味着,C#不仅可以提供回调机制,同时调用回调的一方还无需在其内部维护函数指针列表,所要做的仅仅是声名一个具有恰当委托类型的公共成员即可;而提供回调的一方也只需通过构造一个带有指定方法的相应委托实例,并通过“+=”运算符添加到回调列表即可。下面即是服务器端的部分源程序,这是BluetoothServer.cs程序部分using System;using System.Collections.Generic;using System.Linq;using System.Text;using InTheHand.Net.Bluetooth;using System.Threading;using InTheHand.Net.Sockets;using System.ComponentModel;using droidRemotePPT.Server.PPTMessages;namespace droidRemotePPT.Server public class BluetoothServer : IDisposable, INotifyPropertyChanged /unique service identifier public static Guid ServiceGUID = new Guid(ABF32797-4DAE-4890-A23D-33DC8E3E2111); private BluetoothRadio br; private BluetoothListener bl; private Thread thread; public delegate void MessageReceivedEventHandler(PPTMessage msg); public event MessageReceivedEventHandler MessageReceived; protected void OnMessageReceived(PPTMessage msg) MessageReceivedEventHandler temp = MessageReceived; if (temp != null) temp(msg); private bool _NotSupported = true; public bool NotSupported get return _NotSupported; set _NotSupported = value; OnPropertyChanged(NotSupported); private bool _Listening = false; public bool Listening get return _Listening; set _Listening = value; OnPropertyChanged(Listening); private bool _ClientConnected = false; public bool ClientConnected get return _ClientConnected; set _ClientConnected = value; OnPropertyChanged(ClientConnected); public BluetoothServer() ClientConnected = false; Listening = false; br = BluetoothRadio.PrimaryRadio; if (br = null) NotSupported = true; else NotSupported = false; public void StartBluetooth() Listening = true; try bl = new BluetoothListener(ServiceGUID); bl.Start(); catch NotSupported = true; return; thread = new Thread(new ThreadStart(ListenLoop); thread.Start(); public void StopBluetooth() if (bl != null) Listening = false; ClientConnected = false; bl.Stop(); /thread.Abort(); private BigEndianReader sr; private BigEndianWriter sw; private void ListenLoop() while (Listening) BluetoothClient bc; ClientConnected = false; try bc = bl.AcceptBluetoothClient(); var s = bc.GetStream(); sr = new BigEndianReader(new System.IO.BinaryReader(s); sw = new BigEndianWriter(new System.IO.BinaryWriter(s); catch (Exception ex) System.Diagnostics.Debug.WriteLine(ex.ToString(); break; ClientConnected = true; /keep connection open while (Listening) byte msgID; try msgID = sr.ReadByte(); catch /connection lost break; PPTMessage msg = PPTMessage.CreateMessage(PPTMessage.MessageKind)msgID); msg.ReadMessage(sr); OnMessageReceived(msg); try bc.Close(); catch / Dont care public void SendMessage(PPTMessage msg) sw.Write(byte)msg.Kind); msg.WriteMessage(sw); #region IDisposable Members public void Dispose() #endregion #region INotifyPropertyChanged Members public event PropertyChangedEventHandler PropertyCh

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论