基于网络视频监控系统的设计.doc

上传人:asd****56 文档编号:70471038 上传时间:2023-01-19 格式:DOC 页数:70 大小:2.89MB
返回 下载 相关 举报
基于网络视频监控系统的设计.doc_第1页
第1页 / 共70页
基于网络视频监控系统的设计.doc_第2页
第2页 / 共70页
点击查看更多>>
资源描述

《基于网络视频监控系统的设计.doc》由会员分享,可在线阅读,更多相关《基于网络视频监控系统的设计.doc(70页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、目录目录I摘要III第1章 绪论41.1视频监控系统的发展概况41.2嵌入式Windows CE操作系统21.2.1Windows CE6.0的体系结构31.3面向对象编程61.3.1从结构化到面对对象61.3.2面向对象程序设计7第2章 嵌入式网络视频监控系统总体设计82.1 系统总体框图82.2 视频图像采集模块82.3 ARM处理器模块92.4 视频图像传输模块92.5 客户端接收模块9第3章 嵌入式网络视频系统服务端软件系统设计103.1 搭建开发环境103.1.1 软件开发平台103.2 Platform Bulider 6.0 简介103.3 定制Windows CE6.0113.

2、3.1 目标设备的准备113.3.2 模拟器123.3.3 创建Windows Embedded CE6.0123.3.4 编辑和修改Windows Embedded CE6.0工程163.3.5 生成Windows Embedded CE6.0映像173.3.6 运行Windows Embedded CE6.0173.4 服务器应用程序设计183.4.1 服务端视频图像采集模块193.4.2 服务端视频图像发送模块20第4章 嵌入式网络视频监控系统客户端软件系统设计234.1 SOCKET编程基础234.1.1 SOCKET协议234.1.2 Windows Sockets API234.1

3、.3 DOT Netframework对Socket功能的实现244.2 客户端仿真程序设计与实现264.2.1 仿真程序模块划分274.2.2 连接服务模块274.2.3 图像采集模块304.2.4 视频采集模块344.2.5 播放视频模块364.2.6 界面显示模块364.2.7 信息显示模块404.2.8 监控效果40第5章 系统调试与性能分析42第6章 结论445.1 结论445.2 系统的不足与展望44参考文献46附录A 网络视频监控服务端主要代码47附录B 网络视频监控客户端部分主要代码52摘要为了实现电力设备的远程监控,融合网络技术、通信及计算机技术,采用面向对象的程序设计方法,

4、基于Visual Studio 2005程序设计工具,使用C#高级编程语言,设计并开发了基于ARM和Windows Embedded CE6.0的网络视频监控系统的软件系统。该系统包括了服务端应用程序和客户端应用程序二大部分。服务端实现了对远程现场的视频数据采与传输,客户端实现了视频数据的接收、存储、处理与显示等功能。整个系统经过与系统的仿真,性能稳定,界面友好,操作简单。基本能满足对网络设备的远程监控的要求,具有广泛的应用前景。关键词: ARM;视频监控;Windows CE 67第1章 绪论1.1 视频监控系统的发展概况近年来,随着现代科学技术的不断发展特别是网络带宽、计算机处理能力和存储

5、容量的迅速提高以及各种实用视频信息处理技术的出现,视频监控技术也有长足的发展,视频监控进入了全数字化的网络时代,日益受到人们的重视和关注。视频监控系统的发展基本上是从早期的模拟闭路电视监控系统向数模结合的视频监控系统和现在的数字视频监控系统演变的过程,而现在的数字视频监控系统根据技术的发展又分为三个阶段:数字监控的多媒体阶段、数字监控的DVR阶段和数字监控的网络阶段。随着多媒体技术、视频压缩编码技术、网络通讯技术的发展、数字视频监控系统迅速崛起,现今市场上有两种数字视频监控系统类型,一种是以数字录像设备为核心的视频监控系统,另一种是以嵌入式视频Web服务器为核心的视频监控系统。数字视频压缩编码

6、技术日益成熟,计算机的普及化,为基于PC机的多媒体监控创造了条件。这种新型视频监控系统的迅速崛起,部分地取代了以视频矩阵图像分割器、录像机为核心,辅以其它传送器的模拟视频监控模式,但随着基于PC机的视频监控录像系统的发展,在实际工程使用过程中,也暴露出一些不足,主要是系统工作的不稳定性。基于PC的视频监控录像系统的组成结构为:兼容/工控PC机+视频采集卡+普通/较可靠的操作平台+应用软件。嵌入式系统是以应用为中心,软硬件可裁减的,适应应用系统对功能、可靠性、成本、体积等综合性严格要求的专用计算机系统,亦即为监控系统量体裁衣的专用计算机系统。嵌入式系统主要由嵌入式处理器、相关支撑硬件、嵌入式操作

7、系统及应用软件系统等组成,它是集软硬件于一体的可独立工作的器件。嵌入式操作系统是一种实时的,支持嵌入式系统应用的操作系统软件,它是嵌入式系统极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等,嵌入式操作系统在系统实时高效性、硬件的相关依靠性、软件固态化及应用的专用性等方面具有较为突出的特点嵌入式视频Web服务器方式,视频服务器内置一个嵌入式Web服务器,采用嵌入式实时多任务操作系统。摄像机送来的视频信号数字化后由高效压缩芯片压缩,通过内部总线送到内置的Web服务器,网络上用户可以直接用浏览器观看Web服务器上的摄像机图像,授权用户还

8、可以控制摄像机、云台、镜头的动作或对系统配置进行操作。由于把视频压缩和Web功能集中到一个体积很小的设备内,可以直接连入局域网,达到即插即看,省掉多种复杂的电缆,安装方便(仅需设置一个IP地址),用户也无需安装任何硬件设备,仅用浏览器即可观看。视频监控发展的最大两个特点就是数字化各网络化。 1) 数字化。数字化是21世纪的特征,是以信息技术为核心的电子技术发展的必然,数字化是迈向成长的通行证,随着时代的发展,生存环境将变得越来越数字化。视频监控系统的数字化首先应该是系统中信息流从模拟状态转为数字状态,这将彻底打破经典闭路电视系统是以摄像机成像技术为中心的结构,根本上改变视频监控系统从信息采集、

9、数据处理、传输、系统控制等的方式和结构形式。信息流的数字化、编码压缩、开放式的协议,使视频监控系统与安防系统中其它各子系统间实现无缝连接,并在统一的操作平台上实现管理和控制,这也是系统集成化的含义。2) 网络化。视频监控系统的网络化将意味着系统的结构将由集总式向集散式系统过渡。集散式系统采用多层分级的结构形式,具有微内核技术的实时多任务、多用户、分布式操作系统以实现抢先任务调度算法的快速响应。组成集散式监控系统的硬件和软件采用标准化、模块化和系列化的设计,系统设备的配置具有通用性强、开放性好、系统组态灵活、控制功能完善、数据处理方便、人机界面友好以及系统安装、调试和维修简单化,系统运行互为热备

10、份,容错可靠等优点。系统的网络化在某种程度上打破了布控区域和设备扩展的地域和数量界限。系统网络化将使整个网络系统硬件和软件资源的共享以及任务和负载的共享,这也是系统集成的一个重要概念。从以上可以看出,视频技术的发展大致经历了模拟视频、PC视频、网络视频三个阶段,并以网络、通信技术为依托和传输平台。1.2 嵌入式Windows CE操作系统微软公司从1990年开始准备构建移动设备中的Windows,但先后因为市场和硬件技术问题搁浅了,随着经验的积累和各种条件的成熟,1996年微软发布了Windows CE 1.0,从而使微软公司在嵌入式操作系统中迈出了第一步。Windows Embedded C

11、E 在嵌入式领域算得上是一个后起之秀。尤其在其Windows CE.NET 发布以后,才真正使得其被应用到嵌入式领域。而Windows Embedded CE5.0则成为了广大开发人员接触得最多的Windows Embedded CE版本,2006年年底,微软公司推出了Windows Embedded CE6.0 ,新的版本在集成开发环境,硬件支持,数据库支持等方面更胜一筹,配合Visual Studio 2005和Microsoft SQL Server Management Studio和开发工具,并支持SQL Server Mobile,使其在更广阔的领域被更多的得到应用。在通用计算机桌

12、面操作系统领域,微软公司有着自己面向不同时期不同应用的产品线。在时间上,先后发布了Windows 95,Windows 98,Windows Me, Windows 2000,Windows XP, Windows Vista等,在嵌入式操作系统领域,微软公司同样有着丰富的产品线,先后有着Windows CE 1.0,Windows CE 2.0,Windows CE 3.0,Windows CE 4.X,Windows CE 5.0及最新的Windows CE 6.0。1.2.1 Windows CE6.0的体系结构Windows CE采用了典型的分层结构。在Windows Embedded

13、 CE 6.0中划分为User Mode(用户模式)和Kernel Mode(内核模式)两个“层”,CoreDLL等DLL同时出现在两个层中,驱动程式也能够被加入到内核中,以前的.exe可执行模块基本上都变成了.dll。体系结构的变化相对较大。Windows Embedded CE 6.0的体系结构如图1所示。图1 Windows Embedded CE6.0体系结构Windows Embedded CE6.0将任何系统需要提供的服务部分“转移”到系统内核的虚拟机(Kernels Virtual Machine),这样做的好处是当发生系统调用时,已变成了进程内的一个调用。这样做也引入了一些不稳

14、定机制,比如驱动程式被加入到内核,Windows Embedded CE6.0默认情况下就是将驱动运行在内核模式。虽然提高了系统的效率,但假如驱动程式不稳定,将对系统的整体稳定性产生很严重的影响,这也是我们所不愿意看到的。当然,并不是任何的驱动程式都是在内核运行的,在Windows Embedded CE6.0安装完成之后的驱动程式是在用户模式下运行的,这样更有利于系统的安全,但以牺牲设备的性能为代价。Windows Embedded CE6.0里的系统模块如图2所示。图2 Windows Embedded CE6.0系统模块NK.exe中仅仅包含一些OAL代码和确保兼容性的程式,这样做的好处

15、是使得OEMs和ISVs厂商定制的代码和微软提供的Windows Embedded CE6.0的代码进行了分离,使得内核代码的升级更加容易且更加方便。1) 硬件。硬件是一个嵌入式系统存在的必要条件,也是嵌入式设备的处在体现,是嵌入式操作系统运行的基础,在通用计算机领域,一般都是X86体系结构的IBM-PC及其兼容机,早期IBM和英特尔的压倒性趋势,使得现在的通用计算机领域硬件体系结构基本一致,都有定义良好的接口,而在嵌入式领域,由于设备制造商都是由不同领域不同应用的厂商发展起来的,所以硬件结构相对复杂,公CPU体系结构就有多种,硬件的复杂性会加大程序开发的难度,因此出现了BSP来解决体系结构的

16、差别问题。Platform Builder CE6.0为很多常用的SDB(软件开发板)提供了BSP,这结BSP基本包括了所有Windows CE6.0所支持的CPU,可有效减少嵌入式设备的开发周期。2) OAL层。OAL处在Windows CE6.0 和嵌入式设备的硬件层之间,连接到内核的库中便可以创建内核可执行程序。它主根提供中断处理,时钟,电源管理,总线抽象,通用I/0控制等服务。在建立一个以Windows CE6.0 为操作系统的硬件平台的过程中,创建OAL可能是最复杂的事情之一。通常情况下,最简便的方法是对已有的OAL进行修改以适应自己的硬件平台。3) KITL层。KITL(Kerne

17、l Indepent Transport Layer)是为了调试工作更加方便而设计的,它削弱了通信协议与通信硬件之间的直接依赖,降低了硬件传输层相关的开发工作量,硬传输层在KITL的下层,使得KITL可以支持不同类型的通信。4) 内核层。内核为Windows CE6.0设备提供最基本的底层功能,这些功能包括进程,线程,内存管理,还包括一些文件管理功能,进程和线程的调度,实时支持,系统调用,内核电源管理等。NK.EXE是OAL进程,内核KERNEL.DLL是伴随着OALY启动的,NE.EXE是Windows CE6.0 的核心。 5) ExFAT文件系统。Windows CE 6.0采用了 Ex

18、FAT(Extended File Allocation Table System),ExFAT不仅解决了大容量文件存储的限制问题,还使得Windows CE6.0设备与桌面PC 机之间的文件传输更方便更容易。而且ExFAT还提供了对以前文件系统的支持。6) GWES 接口。GWES(Graphic, Windowing , Events, Subsystem)集Win32 API, User Interface, Graphic Device Interface于一体,是用户,应用程序和Windows Embedded CE6.0之间的一个共同接口,三者通过GEWS进行通信和相关的操作。GW

19、ES所支持的Windows CE6.0的用户接口元素非常丰富,几乎可以和桌面Windows 相比,包括窗口,对话框,菜单和其它资源。7) 设备管理器。设备管理器是被内核加载的,而且只要Windows Embedded CE6.0还在运行,设备管理器就不会停止工作,当设备管理器被加载时,I/O资源管理器也将被加载,用它从注册表中读取一个有效的可用资源列表。设备管理器通过GUID(Globally Unique Identifier)来发现和管理设备。设备管理器通过device.dll来实现的。设备管理器与注册表的配合非常紧密,它运行和管理的大多数数据都来自注册表。8) 驱动程序。驱动程序是一种抽

20、象了物理或者虚拟设备功能的软件或者代码,相应设备被其驱动程序管理的操作,物理设备比较常见,像USB存储器,打印机等,虚拟设备如文件系统,虚拟光驱等。在Windows CE6.0 中,驱动程序有两种模式,一种是内核模式另外一种为用户模式,在默认的情况下,驱动程序运行在内核模式下,这有利于设备性能的提高,但也增加了影响系统各个方面性能的不确定因素,如果不稳定的驱动程序被加载到内核,将会对嵌入式系统的可靠性,稳定性等多方面的性能产生致使的影响。这使得驱动程序在发布和认证时必须有严格的性能合格证措施。9) .NET Compact Framework 平台。Windows CE6.0提供了对.NET

21、Compact Framework的支持,使得开发应用程序有了良好的编程接口。开发CE6.0的应用程序,可以使用现有的开发工具和环境,也可以仅仅使用一些SDK(Software Development Kit)。Windows CE6.0支持Unicode超大字符集,NLS(National Language Support)的支持使得开发国际化的软件更加方便,对已有的国际化和本地化也更容易实现。1.3 面向对象编程1.3.1 从结构化到面对对象结构化程序设计方法本质上是面向过程的,它不能直接反映人们解决问题的思路,因此这种模式存在着固有的缺陷,主要体现在如下两个方面。(1) 程序的可重用性差

22、。目前的应用程序变得越来越大,越来越复杂,但其中有很多重复性的工作,代码重用成为提高编程效率的关键。采用传统的SP(结构化编程)模式,每开发一个新的应用程序,程序员几乎都要从零开始做起,并且要针对具体问题做大量重复而烦琐的工作。即使重用代码,也只是进行简单的拷贝,要实现的功能稍有不同,就会导致对代码逐行进行修改,也就是说,这种模式不能对已编好的应用程序的某些部分直接继承引用。(2) 维护程序的一致性差。应用传统的SP模式开发应用程序时,数据和方法是分开的,这很可能产生问题空间和方法空间在结构上的不一致。对程序运行起重要作用的数据一般要做全局处理,若为了新的需要改变某一数据结构,则所有的处理数据

23、的过程都要进行重新考虑,做出必要的修改,以保证与数据的一致性。因此,要花费大量的精力来维护数据和数据处理过程的一致性,而且还可能产生不少错误。结构化的程序开发已经不能满足软件发展的需求了。这个时候,出现了面向对象的编程思想,简称为OO(Object Oriented)。面向对象的程序开发被称为OOP(Object Oriented Programming)。在介绍面向对象的思想之前,应该明确指出,面向对象是一种编程的思想,而与具体的语言无关。比较流行的支持面向对象的语言有C+、C#和Java。1.3.2 面向对象程序设计采用面向对象模式建立起来的程序由许多不同类型的对象组成,各对象既是独立的实

24、体,又可以通过各自的接口相互作用。对象中的方法决定要向哪个对象发送消息、发送什么样的消息以及收到消息后如何处理等。也就是说,OOP模式是以对象为中心的。由于对象反映了应用领域中具有完整的特征和行为的实体或单元,从程序设计的角度我们可以把它看成模块。因此,对象具有一定的稳定性,可以被当作一个控件去构成更复杂的应用。又由于对象一般封装的是某一具体的实际工作的各种成分,因此某一对象改变时,对整个系统几乎没有影响。为了描述功能相似的对象,OOP中引用了“类”的概念。类与类之间的关系是层次结构,属于某个类的对象除了具有该类的全部特征外,还具有层次结构中该类上层所有类的全部性质,这种机制称为继承。面向对象

25、程序设计方法的继承性和模块性,使得新的应用程序可以在原来对象的基础上通过重用和扩展来进行,而不必从头做起或者拷贝原有代码。这大大提高了程序开发的效率,减少了重新编写代码的工作量,同时降低了程序设计过程中出错的可能性。面向对象方法的实质是强调从客观世界中的固有规律出发来构造系统,用人类在现实生活中常用的思维方式来认识、理解和描述客观事物。编写面向对象的程序设计使开发人员能够重复使用工作成果并使程序维护更为容易,并且不易出错。第2章 嵌入式网络视频监控系统总体设计2.1 系统总体框图本系统主要由操作系统定制、视频图像采集、视频图像传输三部分组成。系统首先通过USB摄像头采集现场实时视频信息,并对其

26、进行压缩。然后,使用以太网卡在ARM开发板与客户机之间构建一个网络,从而将压缩的视频图像数据传输到主机端应用程序,终端用户即可在主机端通过客户端软件程序查看远程视频影像。视频监控系统总体结构如图3所示。视频采集模块ARM处理器网络传输模块客户显示模块网络图3 系统总体框架2.2 视频图像采集模块图像采集模块的硬件资源选用了当前市面上应用最广泛的USB接口的中星微摄像头。该款摄像头造价低廉,成像效果好,用于本系统中体现出了较高的性价比。在视频图像采集模块中,本系统使用的是中星微ZC030X系列。中星微摄像头采用了中星微301PLUS快速主控芯片。该芯片是一款高性能图像压缩芯片,输出MIPEG视频

27、流数据。MIPEG(Motion JPEG)主要是基于静态视频压缩发展起来的技术,特点是基本不考虑视频流中不同帧之间的变化,只单独对某一帧进行压缩,通常可达到6:1的压缩率。它的误差稳定性非常好,可以获取清晰度很高的视频图像,而且还可以灵活设置各路视频清晰度,压缩帧数。 本系统直接从摄像头驱动中获取MJPEG视频流数据。2.3 ARM处理器模块嵌入式系统开发与其它软件开发最大的区别之一就是需要一个专门的目标设备平台,这个区别的主要原因是一般进行的开发都是在通用计算机上运行的,所以开发和调试工作在一台计算机上完成即可。但嵌入式开发需要应用在实际的嵌入式设备中的,而且,当今嵌入式设备中的很多结构没

28、有统一,加上嵌入式设备一般都有较高的可靠性要求,因此需要专门的设备进行调试就不足为奇了,虽然有模拟器软件,但这并不能完全展现软件在设备上的表现,所以使用目标设备平台进行测试是必要的。由于ARM处理器的性能及价格上的优势且支持Windows CE,所以该系统选用以ARM为核心的三星S3C2410作为开发的硬件平台。在本软件系统中,使用Windows Embedded CE6.0的模拟器作为硬件平台。2.4 视频图像传输模块目前采用的最广泛的传输机制是Socket编程,通过Socket我们能对数据流通信进行底层和最高级的控制。通过视频图像采集模块得到的视频图像存储在缓冲区中,缓冲区由服务端应用程序

29、申请获得,之后等待任何一个客户端连接到服务器,一旦客户连接到服务器,服务端应用程序就为每一个客户端建立一个线程用于传输视频图像数据。这样不同客户应用程序的通信就不会相互影响,且效率更高,增加了服务器的吞吐量。通信模块采用Windows Socket编程机制。编程语言使用强大的面向对象的C#语言。2.5 客户端接收模块在客户端连接服务器成功后,服务器为每一个客户生成一个Socket对象。为了保证数据传输的实时性和视频的连续性,每接受到一帧图像后,隔一段时间就向服务器发出一个确认请求,这样就保证了客户端不会出现拥塞,客户端通过一帧一帧地显示图像来达到实时监控的效果,由于网络中传输的是数据流,为了将

30、其转换为图像,我们需要一个特殊的类Image来进行对字节流到图像流的转换。并且可以将接收到的视频数据予以保存。第3章 嵌入式网络视频系统服务端软件系统设计3.1 搭建开发环境作为一个开发人员,必需的开发环境必不可少,进行Windows CE6.0的开发主要有两用人才大方面:操作系统和应用程序的开发。操作系统开发包括操作系统的定制,驱动开发以及其它需要完成的底层工作。应用程序开发主根是与实际应用结合较紧密的程序开发。要搭建这样一个开发环境,到少需要两个方面,第一是硬件平台,第二是软件平台。硬件平台除了我们平常大多数开发需要使用的计算机外,还需要目标设备平台。目标设备平台最好是专门的开发板或者目标

31、机,也可以使用现有的PC机进行搭建。软件平台包括操作系统,开发软件和应用程序开发软件。在Windows CE6.0开发中,微软公司将这些开发软件都集成到了Visual Studio 2005中。本文的硬件平台为模拟器。3.1.1 软件开发平台在Windows CE早版本的操作系统开发中,一般用到一个专门的定制工具:Platform Builder,每个版本的Windows CE都有与之对应的Platform Builder。到了Windows CE6.0微软公司通过战略性的调整,把Platform Builder做成了Visual Studio 2005的插件。Visual Studio 20

32、05是一款集成开发环境,不仅支持一般性的桌面应用程序开发,同时支持嵌入式设备的相关开发,包括针对Windows CE操作系统的开发,使用Visual Studio 2005可以自由地选择自己喜欢的语言。Windows CE6.0支持.NET Compact Framework2.0,它是.NET Framework2.0 的一个子集,因此只要符合.NET Compact Framework2.0,那么它开发的应用程序就可以在Windows CE6.0 上运行。3.2 Platform Bulider 6.0 简介从本质上讲,Windows CE6.0操作系统的开发就是一个为目标设备定制操作系统

33、的过程。这一过程包括在已有的操作系统模块中选择需要的模块,专门为目标设备定制模块,编译链接和调试。在安装过程中最好将其安装在默认的根目录下。Platform Builder for CE6.0包括如下 一些文件夹:1) CRC文件夹。主要提供关于Platform Builder for CE6.0安装时的校验信息。2) OSDesigns文件夹。开发人员建立的Windows CE6.0操作系统的默认存储文件夹。3) OTHERS文件夹。存储运行时文件,映像生成的二进制文件,注册表文件,批处理文件等需要加入到映像中的文件。4) LATFORM文件夹。与特定硬件相关的文件如BSP等。5) PRIV

34、ATE文件夹。Windows CE6.0的源代码文件夹。6) PUBLIC文件夹。主要存储与硬件平台无关的源代码文件。7) SDK文件夹。用以支持Platform Builder for CE6.0 的SDK工具和库文件。3.3 定制Windows CE6.0对于定制Windows CE6.0来讲,按照实际需要对其进行一些组件的添加或者删除操作,对操作系统的修改告一段落后,就可以进行映像生成了,紧接着将映像下载到目标设备上进行测试,当然,先期可以在模拟器上进行测试,测试 需要不停的反馈,并将反馈的结果反应到系统的修改中,再进行生成操作并下载到目标设备测试直到满足实际要求。这一过程的逻辑关系如图

35、4。测试创建生成修改下载到目标设备发布反馈反馈图 4 创建系统镜像3.3.1 目标设备的准备目标设备主要是指定制 的Windows CE6.O需要工作的硬件环境。对于目标设备,可以大致分为三类:1) 使用开发机模拟一个硬件平台。2) 使用现有的PC机来代替。3) 开发板。在本系统中我们首先使用模拟器来开发系统然后进行开发板上的测试3.3.2 模拟器模拟器(Emulator)是Windows Embedded CE 开发一直以来被广大开发人员所使用的一个软件工具,到了Visual Studio 2005模拟器得到了长足的进步,以前在Windows Embedded CE5.0中使用模拟器时,可能

36、会出现模拟器上运行良好,但在实际设备上却不能运行或者运行出错的情况,这是因为以前的模拟器都要是在X86构架的开发机上模拟的X86处理器,而很多真实设备都是ARM系列的,最典型的情况就是ARM处理器在处理网络数据时是4字节对齐的,而X86是2字节。到了Windows Embedded CE6.0,模拟器已经真正在X86的开发机上模拟ARM处理器,从本质上解决了很多问题,但这并不代表模器里的情况就是真实设备的情况,不过可以肯定的是,模拟器可以为开发人员节省很多开发时间。Visual Studio 2005提供了很多模拟器如:Windows Embedded CE6.0模拟器,Pocket PC模拟

37、器,Windows Mobile 模拟器。相对而言Windows Embedded CE6.0 的模拟器还不够完善。3.3.3 创建Windows Embedded CE6.0创建一个可以在模拟器上运行的Windows Embedded CE6.0,Platform Builder for CE6.0提供了友好的Windows Embedded CE6.0创建向导如图5。图 5 创建Windows Embedded CE6.0-1当Visual Studio 2005完成项目的创建工作后,会自动启动Windows Embedded CE6.0的创建向导,如图6。图6 创建Windows Emb

38、edded CE6.0-2该图告诉你向导到底完成那些工作,步骤如何等信息。单击下一步进入BSP选择的页面,向导会显示当前系统中所包含的BSP,由于我们要进行的是在S3C4210上的开发,而Device Emulator提供的正是S3C4210的BSP所以我们在这里选择Device Emulator:ARMV4I如图7。图7 创建Windows Embedded CE6.0-3接下来进入设计模板的选择,如下图所示,设计模板是减轻工开发人员工作量的一种方式,这些设计模板都是微软公司的工作人员进行了尤其是的调查和分析之后建立的,这里只是设计模板选择的第一步,相当于选择目标设备的应用领域。选择一个领域

39、后,在向导的右侧可以查看关于它的说明,在这里我们选择PDA Device然后下一步。图8 创建Windows Embedded CE6.0-4进入设计模板的第二步,如图9所示,在这里我们选择Enterprise Web Pad然后下一步。图9 创建Windows Embedded CE6.0-5进入应用程序和多媒体组件选择对话框,按照本系统的一些需要我们可以去掉不需要的模块,添加需要的模块。如图10。图10 创建Windows Embedded CE6.0-6单击下一步进入网络与通信模块对话框,如图11,在此我们选择了TCP/IPT和WAN。图11 创建Windows Embedded CE6

40、.0-7到此,Windows Embedded CE6.O的创建工作基本完成了。3.3.4 编辑和修改Windows Embedded CE6.0工程在上一节中我们完成了Windows Embedded CE6.0操作系统的创建工作,在实际的工作中这只是操作系统开发中的很小的一步,也是非常简单的一步。为了适应不同的应用和不同设备的不同需求,我们必须要对操作系统进行进一步的修改工作。一般情况下,对一个已经建立的操作系统会有如下几个方面的编辑和修改:1) 添加/删除Catalog Items。2) 添加子项目。3) 添加BSP。4) 添加设备驱动程序。5) 建立OAL。6) 建立BootLoade

41、r。7) 配置和建立已经定制的Windows Embedded CE6.0相应的SDK。由于嵌入式系统的存储空间有限,因此,组件和模块的添加一定要依据最小化的原则,能不添加的模块一律不添加,需要添加的模块也要考虑将其用得比较少的功能进行剔除。3.3.5 生成Windows Embedded CE6.0映像生成映像有两种版本,一种是Debug版,含有较多的调试信息,在没有正式发布的时候,一般使用这种版本,可以给开发人员提供很多方便。另一种是Release版本,它比较适合于系统的正式发布。当确保所有的配置都完成后,就可以开始生成一个映像文件了。这将是一个比较漫长的过程,在此期间我们可以从“输出”和

42、“错误”两个子窗口中了解相关的信息。3.3.6 运行Windows Embedded CE6.0当映像生成后,我们就可以先在模拟器上运行了,然后再下载映像到目标设备进行运行测试。在模拟器上运行系统的步骤如下:1) 在“Target”菜单中选择“Connectivity Options”命令,打开”目标设备连接选择“对话框,设置如图12。图12 配置Windows Embeded CE6.02) 然后启动目标设备,随后,模拟器会在开发机上下载映像文件,直到出现Windows Embedded CE6.0的桌面。如图13。图 13 运行Windows Embedded CE6.03.4 服务器应用

43、程序设计通过摄像头采集的数据发送到监控端进行显示,我们必须在服务端和客户端建立相应的通信机制,但前提是我们已经获得了摄像头采集到的视频数据,该部分的功能由视频图像采集模块完成,之后图像发送模块将采集到的数据通过发送模块发送到客户端,由客户端将接收到的数据通过一定的机制解码当前获得的数据流从而达到监控的目的。系统启动后,Windows Embedded CE6.0操作系统会自动检测摄像头是否连接好。本系统在定制Windows Embedded CE6.0操作系统时,通过修改操作系统配置和注册表。可以使系统自动加载摄像头在WinCE下的驱动程序ZC030xdll。系统自动加载驱动程序时,首先要将驱

44、动程序复制到WINDOWS文件夹下,然后向注册表中写入摄像头的驱动信息HKEY_LOCAL_MACHINEDriversBuiltInCAMERA“Index”=dword:1“Prefix=”CAM”;“Dll”=”zc030x.dll”“Order”=dword:100;HKEY_LOCAL_MACHINEDriversUSBLocalClients2760_12315DefaultDefault“Prefix”=”CAM”“DLL”=”zc030x.dll”HEKY_LOCAL_MACHINEDriversUSBLocalClients2760_12315DefaultDefault“D

45、LL”=”zc030x” 其中,prefix为设备文件名,D11为驱动的文件名,Order为设备文件名索引。硬件配置完成后启动操作系统,就可以自动加载驱动,运行应用程序进行图像采集了。服务启动的流程图如图14。启动摄像头启动服务器成功?提示信息是等待客户端连接否图14 服务器启动流程图如果成功打开了摄像头,则可以进行服务端口的设置,成功启动服务器后,确定的端口将用来等待客户端进行连接,一旦连接上,便开始发送视频数据。如果打开摄像头失败,程序会提示信息给用户。3.4.1 服务端视频图像采集模块在视频图像采集模块中,本系统使用的是中星微ZC030X系列。中星微摄像头采用了中星微301PLUS快速主

46、控芯片。该芯片是一款高性能图像压缩芯片,输出MIPEG视频流数据。MIPEG(Motion JPEG)主要是基于静态视频压缩发展起来的技术,特点是基本不考虑视频流中不同帧之间的变化,只单独对某一帧进行压缩,通常可达到6:1的压缩率。它的误差稳定性非常好,可以获取清晰度很高的视频图像,而且还可以灵活设置各路视频清晰度,压缩帧数。 本系统直接从摄像头驱动中获取MJPEG视频流数据。图像采集模块用到的主要函数有:1) capInitCamera()。用来初始化视频设备,并获取当前可用的视频设备数目。2) capSetVideoFormat()。设置视频格式和分辨率。本系统使用的视频格式为RGB24。

47、3) capGrabFrsme()。从驱动中抓取1帧图像,并存储在缓存lpFrameBuffer中。4) capGetLastJpeg()。将抓取的MJPEG格式的图像转换成JPEG格式,送到无线发送模块。5) capCloseCamera()。关闭视频设备。视频采集部分还有查询视频采集格式、设置明暗度、设置对比度等相关函数。3.4.2 服务端视频图像发送模块该模块主要是通过Windows Socket 编程将系统通过摄像头驱动程序采集到的视频图像数据流转换为网络数据字节流发送到客户端。在这个过程中,服务端必须首先建立一个用于服务多个客户端的Socket,并且指定一个当前系统没有被正在使用的端口,该端口必须确定好,因为在编写客户端应用程序的时候必须要使用这个端口号来绑定服务端。在建立该Socket的时候,同时必须指定用于通信的寻址模式,套接字的类型,套接字支持的通信协议类型。然后将该套接字绑定到服务端的IP地址和上面提到的端口号,之后就开始侦听该端口,为了提高服务器的性能

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁