




已阅读5页,还剩66页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
I 目录 目录目录 I 摘要摘要 III 第第 1 1 章章 绪论绪论 4 1 1视频监控系统的发展概况 4 1 2嵌入式 WINDOWS CE 操作系统 2 1 2 1Windows CE6 0 的体系结构 3 1 3面向对象编程 6 1 3 1从结构化到面对对象 6 1 3 2面向对象程序设计 7 第第 2 2 章章 嵌入式网络视频监控系统总体设计嵌入式网络视频监控系统总体设计 8 2 1 系统总体框图 8 2 2 视频图像采集模块 8 2 3 ARM 处理器模块 9 2 4 视频图像传输模块 9 2 5 客户端接收模块 9 第第 3 3 章章 嵌入式网络视频系统服务端软件系统设计嵌入式网络视频系统服务端软件系统设计 10 3 1 搭建开发环境 10 3 1 1 软件开发平台 10 3 2 PLATFORM BULIDER 6 0 简介 10 3 3 定制 WINDOWS CE6 0 11 3 3 1 目标设备的准备 11 3 3 2 模拟器 12 3 3 3 创建 Windows Embedded CE6 0 12 3 3 4 编辑和修改 Windows Embedded CE6 0 工程 16 3 3 5 生成 Windows Embedded CE6 0 映像 17 3 3 6 运行 Windows Embedded CE6 0 17 3 4 服务器应用程序设计 18 3 4 1 服务端视频图像采集模块 19 3 4 2 服务端视频图像发送模块 20 第第 4 4 章章 嵌入式网络视频监控系统客户端软件系统设计嵌入式网络视频监控系统客户端软件系统设计 23 4 1 SOCKET 编程基础 23 II 4 1 1 SOCKET 协议 23 4 1 2 Windows Sockets API 23 4 1 3 DOT Netframework 对 Socket 功能的实现 24 4 2 客户端仿真程序设计与实现 26 4 2 1 仿真程序模块划分 27 4 2 2 连接服务模块 27 4 2 3 图像采集模块 30 4 2 4 视频采集模块 34 4 2 5 播放视频模块 36 4 2 6 界面显示模块 36 4 2 7 信息显示模块 40 4 2 8 监控效果 40 第第 5 5 章章 系统调试与性能分析系统调试与性能分析 42 第第 6 6 章章 结论结论 44 5 1 结论 44 5 2 系统的不足与展望 44 参考文献参考文献 46 附录附录 A 网络视频监控服务端主要代码网络视频监控服务端主要代码 47 附录附录 B B 网络视频监控客户端部分主要代码网络视频监控客户端部分主要代码 52 III 摘要 为了实现电力设备的远程监控 融合网络技术 通信及计算机技术 采用面 向对象的程序设计方法 基于 Visual Studio 2005 程序设计工具 使用 C 高 级编程语言 设计并开发了基于 ARM 和 Windows Embedded CE6 0 的网络视频监 控系统的软件系统 该系统包括了服务端应用程序和客户端应用程序二大部分 服务端实现了对远程现场的视频数据采与传输 客户端实现了视频数据的接收 存储 处理与显示等功能 整个系统经过与系统的仿真 性能稳定 界面友好 操作简单 基本能满足对网络设备的远程监控的要求 具有广泛的应用前景 关键词 ARM 视频监控 Windows CE IV 第 1 章 绪论 1 1 视频监控系统的发展概况 近年来 随着现代科学技术的不断发展特别是网络带宽 计算机处理能力 和存储容量的迅速提高以及各种实用视频信息处理技术的出现 视频监控技术 也有长足的发展 视频监控进入了全数字化的网络时代 日益受到人们的重视 和关注 视频监控系统的发展基本上是从早期的模拟闭路电视监控系统向数模 结合的视频监控系统和现在的数字视频监控系统演变的过程 而现在的数字视 频监控系统根据技术的发展又分为三个阶段 数字监控的多媒体阶段 数字监 控的 DVR 阶段和数字监控的网络阶段 随着多媒体技术 视频压缩编码技术 网络通讯技术的发展 数字视频监控系统迅速崛起 现今市场上有两种数字视 频监控系统类型 一种是以数字录像设备为核心的视频监控系统 另一种是以 嵌入式视频 Web 服务器为核心的视频监控系统 数字视频压缩编码技术日益成熟 计算机的普及化 为基于 PC 机的多媒体 监控创造了条件 这种新型视频监控系统的迅速崛起 部分地取代了以视频矩 阵图像分割器 录像机为核心 辅以其它传送器的模拟视频监控模式 但随着 基于 PC 机的视频监控录像系统的发展 在实际工程使用过程中 也暴露出一些 不足 主要是系统工作的不稳定性 基于 PC 的视频监控录像系统的组成结构为 兼容 工控 PC 机 视频采集卡 普通 较可靠的操作平台 应用软件 嵌入式系统是以应用为中心 软硬件可裁减的 适应应用系统对功能 可 靠性 成本 体积等综合性严格要求的专用计算机系统 亦即为监控系统量体 裁衣的专用计算机系统 嵌入式系统主要由嵌入式处理器 相关支撑硬件 嵌入式操作系统及应用 软件系统等组成 它是集软硬件于一体的可独立工作的 器件 嵌入式操作系 统是一种实时的 支持嵌入式系统应用的操作系统软件 它是嵌入式系统极为 重要的组成部分 通常包括与硬件相关的底层驱动软件 系统内核 设备驱动 接口 通信协议 图形界面 标准化浏览器等 嵌入式操作系统在系统实时高 效性 硬件的相关依靠性 软件固态化及应用的专用性等方面具有较为突出的 特点 2 嵌入式视频 Web 服务器方式 视频服务器内置一个嵌入式 Web 服务器 采 用嵌入式实时多任务操作系统 摄像机送来的视频信号数字化后由高效压缩芯 片压缩 通过内部总线送到内置的 Web 服务器 网络上用户可以直接用浏览器 观看 Web 服务器上的摄像机图像 授权用户还可以控制摄像机 云台 镜头的 动作或对系统配置进行操作 由于把视频压缩和 Web 功能集中到一个体积很小的设备内 可以直接连入 局域网 达到即插即看 省掉多种复杂的电缆 安装方便 仅需设置一个 IP 地 址 用户也无需安装任何硬件设备 仅用浏览器即可观看 视频监控发展的最 大两个特点就是数字化各网络化 1 数字化 数字化是 21 世纪的特征 是以信息技术为核心的电子技术发展的必然 数 字化是迈向成长的通行证 随着时代的发展 生存环境将变得越来越数字化 视频监控系统的数字化首先应该是系统中信息流从模拟状态转为数字状态 这 将彻底打破 经典闭路电视系统是以摄像机成像技术为中心 的结构 根本上改 变视频监控系统从信息采集 数据处理 传输 系统控制等的方式和结构形式 信息流的数字化 编码压缩 开放式的协议 使视频监控系统与安防系统中 其它各子系统间实现无缝连接 并在统一的操作平台上实现管理和控制 这也 是系统集成化的含义 2 网络化 视频监控系统的网络化将意味着系统的结构将由集总式向集散式系统过渡 集散式系统采用多层分级的结构形式 具有微内核技术的实时多任务 多用 户 分布式操作系统以实现抢先任务调度算法的快速响应 组成集散式监控系 统的硬件和软件采用标准化 模块化和系列化的设计 系统设备的配置具有通 用性强 开放性好 系统组态灵活 控制功能完善 数据处理方便 人机界面 友好以及系统安装 调试和维修简单化 系统运行互为热备份 容错可靠等优 点 系统的网络化在某种程度上打破了布控区域和设备扩展的地域和数量界限 系统网络化将使整个网络系统硬件和软件资源的共享以及任务和负载的共享 这也是系统集成的一个重要概念 从以上可以看出 视频技术的发展大致经 历了模拟视频 PC 视频 网络视频三个阶段 并以网络 通信技术为依托和传 输平台 1 2 嵌入式 Windows CE 操作系统 微软公司从 1990 年开始准备构建移动设备中的 Windows 但先后因为市场 和硬件技术问题搁浅了 随着经验的积累和各种条件的成熟 1996 年微软发布 3 了 Windows CE 1 0 从而使微软公司在嵌入式操作系统中迈出了第一步 Windows Embedded CE 在嵌入式领域算得上是一个后起之秀 尤其在其 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 使其在更广阔的领域被更多的得到应用 在通用计算机桌面操作系统领域 微软公司有着自己面向不同时期不同应 用的产品线 在时间上 先后发布了 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 1Windows CE6 0 的体系结构 Windows CE 采用了典型的分层结构 在 Windows Embedded CE 6 0 中划分 为 User Mode 用户模式 和 Kernel Mode 内核模式 两个 层 CoreDLL 等 DLL 同时出现在两个层中 驱动程式也能够被加入到内核中 以前的 exe 可 执行模块基本上都变成了 dll 体系结构的变化相对较大 Windows Embedded CE 6 0 的体系结构如图 1 所示 图图 1 1 Windows Embedded CE6 0 体系结构 4 Windows Embedded CE6 0 将任何系统需要提供的服务部分 转移 到系统 内核的虚拟机 Kernel s Virtual Machine 这样做的好处是当发生系统调 用时 已变成了进程内的一个调用 这样做也引入了一些不稳定机制 比如驱 动程式被加入到内核 Windows Embedded CE6 0 默认情况下就是将驱动运行在 内核模式 虽然提高了系统的效率 但假如驱动程式不稳定 将对系统的整体 稳定性产生很严重的影响 这也是我们所不愿意看到的 当然 并不是任何的 驱动程式都是在内核运行的 在 Windows Embedded CE6 0 安装完成之后的驱动 程式是在用户模式下运行的 这样更有利于系统的安全 但以牺牲设备的性能 为代价 Windows Embedded CE6 0 里的系统模块如图 2 所示 图图 2 2 Windows Embedded CE6 0 系统模块 NK exe 中仅仅包含一些 OAL 代码和确保兼容性的程式 这样做的好处是使 得 OEMs 和 ISVs 厂商定制的代码和微软提供的 Windows Embedded CE6 0 的代码 进行了分离 使得内核代码的升级更加容易且更加方便 1 硬件 硬件是一个嵌入式系统存在的必要条件 也是嵌入式设备的处在体现 是 嵌入式操作系统运行的基础 在通用计算机领域 一般都是 X86 体系结构的 IB M PC 及其兼容机 早期 IBM 和英特尔的压倒性趋势 使得现在的通用计算机领 域硬件体系结构基本一致 都有定义良好的接口 而在嵌入式领域 由于设备 制造商都是由不同领域不同应用的厂商发展起来的 所以硬件结构相对复杂 公 CPU 体系结构就有多种 硬件的复杂性会加大程序开发的难度 因此出现了 BSP 来解决体系结构的差别问题 Platform Builder CE6 0 为很多常用的 SDB 软件开发板 提供了 BSP 这结 BSP 基本包括了所有 Windows CE6 0 所支持 的 CPU 可有效减少嵌入式设备的开发周期 2 OAL 层 5 OAL 处在 Windows CE6 0 和嵌入式设备的硬件层之间 连接到内核的库中 便可以创建内核可执行程序 它主根提供中断处理 时钟 电源管理 总线抽 象 通用 I 0 控制等服务 在建立一个以 Windows CE6 0 为操作系统的硬件平 台的过程中 创建 OAL 可能是最复杂的事情之一 通常情况下 最简便的方法 是对已有的 OAL 进行修改以适应自己的硬件平台 3 KITL 层 KITL Kernel Indepent Transport Layer 是为了调试工作更加方便而设 计的 它削弱了通信协议与通信硬件之间的直接依赖 降低了硬件传输层相关 的开发工作量 硬传输层在 KITL 的下层 使得 KITL 可以支持不同类型的通信 4 内核层 内核为 Windows CE6 0 设备提供最基本的底层功能 这些功能包括进程 线程 内存管理 还包括一些文件管理功能 进程和线程的调度 实时支持 系统调用 内核电源管理等 NK EXE 是 OAL 进程 内核 KERNEL DLL 是伴随着 O ALY 启动的 NE EXE 是 Windows CE6 0 的核心 5 ExFAT 文件系统 Windows CE 6 0 采用了 ExFAT 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 进行通信和相关的操作 GWES 所支持的 Windows CE6 0 的用户接口元素非常丰富 几乎可以和桌面 Windows 相比 包括窗口 对话框 菜单和其它资源 7 设备管理器 设备管理器是被内核加载的 而且只要 Windows Embedded CE6 0 还在运行 设备管理器就不会停止工作 当设备管理器被加载时 I O 资源管理器也将被 加载 用它从注册表中读取一个有效的可用资源列表 设备管理器通过 GUID Globally Unique Identifier 来发现和管理设备 设备管理器通过 device dll 来实现的 设备管理器与注册表的配合非常紧密 它运行和管理的 大多数数据都来自注册表 8 驱动程序 6 驱动程序是一种抽象了物理或者虚拟设备功能的软件或者代码 相应设备 被其驱动程序管理的操作 物理设备比较常见 像 USB 存储器 打印机等 虚 拟设备如文件系统 虚拟光驱等 在 Windows CE6 0 中 驱动程序有两种模式 一种是内核模式另外一种为用户模式 在默认的情况下 驱动程序运行在内核 模式下 这有利于设备性能的提高 但也增加了影响系统各个方面性能的不确 定因素 如果不稳定的驱动程序被加载到内核 将会对嵌入式系统的可靠性 稳定性等多方面的性能产生致使的影响 这使得驱动程序在发布和认证时必须 有严格的性能合格证措施 9 NET Compact Framework 平台 Windows CE6 0 提供了对 NET Compact Framework 的支持 使得开发应用 程序有了良好的编程接口 开发 CE6 0 的应用程序 可以使用现有的开发工具 和环境 也可以仅仅使用一些 SDK Software Development Kit Windows CE6 0 支持 Unicode 超大字符集 NLS National Language Support 的支持使 得开发国际化的软件更加方便 对已有的国际化和本地化也更容易实现 1 3 面向对象编程 1 3 1从结构化到面对对象 结构化程序设计方法本质上是面向过程的 它不能直接反映人们解决问题 的思路 因此这种模式存在着固有的缺陷 主要体现在如下两个方面 1 程序的可重用性差 目前的应用程序变得越来越大 越来越复杂 但其中有很多重复性的工作 代码重用成为提高编程效率的关键 采用传统的 SP 结构化编程 模式 每开 发一个新的应用程序 程序员几乎都要从零开始做起 并且要针对具体问题做 大量重复而烦琐的工作 即使重用代码 也只是进行简单的拷贝 要实现的功 能稍有不同 就会导致对代码逐行进行修改 也就是说 这种模式不能对已编 好的应用程序的某些部分直接继承引用 2 维护程序的一致性差 应用传统的 SP 模式开发应用程序时 数据和方法是分开的 这很可能产生 问题空间和方法空间在结构上的不一致 对程序运行起重要作用的数据一般要 做全局处理 若为了新的需要改变某一数据结构 则所有的处理数据的过程都 要进行重新考虑 做出必要的修改 以保证与数据的一致性 因此 要花费大 量的精力来维护数据和数据处理过程的一致性 而且还可能产生不少错误 结构化的程序开发已经不能满足软件发展的需求了 这个时候 出现了面 7 向对象的编程思想 简称为 OO Object Oriented 面向对象的程序开发被称 为 OOP Object Oriented Programming 在介绍面向对象的思想之前 应该 明确指出 面向对象是一种编程的思想 而与具体的语言无关 比较流行的支 持面向对象的语言有 C C 和 Java 1 3 2面向对象程序设计 采用面向对象模式建立起来的程序由许多不同类型的对象组成 各对象既 是独立的实体 又可以通过各自的接口相互作用 对象中的方法决定要向哪个 对象发送消息 发送什么样的消息以及收到消息后如何处理等 也就是说 OOP 模式是以对象为中心的 由于对象反映了应用领域中具有完整的特征和行为的 实体或单元 从程序设计的角度我们可以把它看成模块 因此 对象具有一定 的稳定性 可以被当作一个控件去构成更复杂的应用 又由于对象一般封装的 是某一具体的实际工作的各种成分 因此某一对象改变时 对整个系统几乎没 有影响 为了描述功能相似的对象 OOP 中引用了 类 的概念 类与类之间的关 系是层次结构 属于某个类的对象除了具有该类的全部特征外 还具有层次结 构中该类上层所有类的全部性质 这种机制称为继承 面向对象程序设计方法的继承性和模块性 使得新的应用程序可以在原来 对象的基础上通过重用和扩展来进行 而不必从头做起或者拷贝原有代码 这 大大提高了程序开发的效率 减少了重新编写代码的工作量 同时降低了程序 设计过程中出错的可能性 面向对象方法的实质是强调从客观世界中的固有规律出发来构造系统 用 人类在现实生活中常用的思维方式来认识 理解和描述客观事物 编写面向对 象的程序设计使开发人员能够重复使用工作成果并使程序维护更为容易 并且 不易出错 8 第 2 章 嵌入式网络视频监控系统总体设计 2 1 系统总体框图 本系统主要由操作系统定制 视频图像采集 视频图像传输三部分组成 系统首先通过 USB 摄像头采集现场实时视频信息 并对其进行压缩 然后 使 用以太网卡在 ARM 开发板与客户机之间构建一个网络 从而将压缩的视频图像 数据传输到主机端应用程序 终端用户即可在主机端通过客户端软件程序查看 远程视频影像 视频监控系统总体结构如图 3 所示 2 2 视频图像采集模块 图像采集模块的硬件资源选用了当前市面上应用最广泛的 USB 接口的中星 微摄像头 该款摄像头造价低廉 成像效果好 用于本系统中体现出了较高的 性价比 在视频图像采集模块中 本系统使用的是中星微 ZC030X 系列 中星微 摄像头采用了中星微 301PLUS 快速主控芯片 该芯片是一款高性能图像压缩芯 片 输出 MIPEG 视频流数据 MIPEG Motion JPEG 主要是基于静态视频压缩发 展起来的技术 特点是基本不考虑视频流中不同帧之间的变化 只单独对某一 帧进行压缩 通常可达到 6 1 的压缩率 它的误差稳定性非常好 可以获取清 晰度很高的视频图像 而且还可以灵活设置各路视频清晰度 压缩帧数 本系 统直接从摄像头驱动中获取 MJPEG 视频流数据 视频采集模块ARM 处理器网络传输模块 客户显示模块 网络 图图 3 3 系统总体框架 9 2 3 ARM 处理器模块 嵌入式系统开发与其它软件开发最大的区别之一就是需要一个专门的目标 设备平台 这个区别的主要原因是一般进行的开发都是在通用计算机上运行的 所以开发和调试工作在一台计算机上完成即可 但嵌入式开发需要应用在实际 的嵌入式设备中的 而且 当今嵌入式设备中的很多结构没有统一 加上嵌入 式设备一般都有较高的可靠性要求 因此需要专门的设备进行调试就不足为奇 了 虽然有模拟器软件 但这并不能完全展现软件在设备上的表现 所以使用 目标设备平台进行测试是必要的 由于 ARM 处理器的性能及价格上的优势且支 持 Windows CE 所以该系统选用以 ARM 为核心的三星 S3C2410 作为开发的硬件 平台 在本软件系统中 使用 Windows Embedded CE6 0 的模拟器作为硬件平台 2 4 视频图像传输模块 目前采用的最广泛的传输机制是 Socket 编程 通过 Socket 我们能对数据 流通信进行底层和最高级的控制 通过视频图像采集模块得到的视频图像存储 在缓冲区中 缓冲区由服务端应用程序申请获得 之后等待任何一个客户端连接 到服务器 一旦客户连接到服务器 服务端应用程序就为每一个客户端建立一个 线程用于传输视频图像数据 这样不同客户应用程序的通信就不会相互影响 且效率更高 增加了服务器的吞吐量 通信模块采用 Windows Socket 编程机制 编程语言使用强大的面向对象的 C 语言 2 5 客户端接收模块 在客户端连接服务器成功后 服务器为每一个客户生成一个 Socket 对象 为了保证数据传输的实时性和视频的连续性 每接受到一帧图像后 隔一段时 间就向服务器发出一个确认请求 这样就保证了客户端不会出现拥塞 客户端 通过一帧一帧地显示图像来达到实时监控的效果 由于网络中传输的是数据流 为了将其转换为图像 我们需要一个特殊的类 Image 来进行对字节流到图像 流的转换 并且可以将接收到的视频数据予以保存 10 第 3 章 嵌入式网络视频系统服务端软件系统设计 3 1 搭建开发环境 作为一个开发人员 必需的开发环境必不可少 进行 Windows CE6 0 的开 发主要有两用人才大方面 操作系统和应用程序的开发 操作系统开发包括操 作系统的定制 驱动开发以及其它需要完成的底层工作 应用程序开发主根是 与实际应用结合较紧密的程序开发 要搭建这样一个开发环境 到少需要两个 方面 第一是硬件平台 第二是软件平台 硬件平台除了我们平常大多数开发 需要使用的计算机外 还需要目标设备平台 目标设备平台最好是专门的开发 板或者目标机 也可以使用现有的 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 2005 是一款集成开发环境 不仅支持一般性的桌面应用程 序开发 同时支持嵌入式设备的相关开发 包括针对 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 操作系统的开发就是一个为目标设备定制操 作系统的过程 这一过程包括在已有的操作系统模块中选择需要的模块 专门 为目标设备定制模块 编译链接和调试 在安装过程中最好将其安装在默认的 11 根目录下 Platform Builder for CE6 0 包括如下 一些文件夹 1 CRC 文件夹 主要提供关于 Platform Builder for CE6 0 安装时的校 验信息 2 OSDesigns 文件夹 开发人员建立的 Windows CE6 0 操作系统的默认存 储文件夹 3 OTHERS 文件夹 存储运行时文件 映像生成的二进制文件 注册表文 件 批处理文件等需要加入到映像中的文件 4 LATFORM 文件夹 与特定硬件相关的文件如 BSP 等 5 PRIVATE 文件夹 Windows CE6 0 的源代码文件夹 6 PUBLIC 文件夹 主要存储与硬件平台无关的源代码文件 7 SDK 文件夹 用以支持 Platform Builder for CE6 0 的 SDK 工具和库 文件 3 3 定制 Windows CE6 0 对于定制 Windows CE6 0 来讲 按照实际需要对其进行一些组件的添加或 者删除操作 对操作系统的修改告一段落后 就可以进行映像生成了 紧接着 将映像下载到目标设备上进行测试 当然 先期可以在模拟器上进行测试 测 试 需要不停的反馈 并将反馈的结果反应到系统的修改中 再进行生成操作并 下载到目标设备测试 直到满足实际要求 这一过程的逻辑关系如图 4 3 3 1 目标设备的准备 目标设备主要是指定制 的 Windows CE6 O 需要工作的硬件环境 对于目标 设备 可以大致分为三类 1 使用开发机模拟一个硬件平台 2 使用现有的 PC 机来代替 图图 4 4 创建系统镜像 测试 创建 生成修改 下载到目标设备 发布 反馈 12 3 开发板 在本系统中我们首先使用模拟器来开发系统然后进行开发板上的测试 3 3 2 模拟器 模拟器 Emulator 是 Windows Embedded CE 开发一直以来被广大开发人员 所使用的一个软件工具 到了 Visual Studio 2005 模拟器得到了长足的进步 以前在 Windows Embedded CE5 0 中使用模拟器时 可能会出现模拟器上运行良 好 但在实际设备上却不能运行或者运行出错的情况 这是因为以前的模拟器 都要是在 X86 构架的开发机上模拟的 X86 处理器 而很多真实设备都是 ARM 系 列的 最典型的情况就是 ARM 处理器在处理网络数据时是 4 字节对齐的 而 X86 是 2 字节 到了 Windows Embedded CE6 0 模拟器已经真正在 X86 的开发机 上模拟 ARM 处理器 从本质上解决了很多问题 但这并不代表模器里的情况就 是真实设备的情况 不过可以肯定的是 模拟器可以为开发人员节省很多开发 时间 Visual Studio 2005 提供了很多模拟器如 Windows Embedded CE6 0 模 拟器 Pocket PC 模拟器 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 5 创建 Windows Embedded CE6 0 1 13 当 Visual Studio 2005 完成项目的创建工作后 会自动启动 Windows Embedded CE6 0 的创建向导 如图 6 图图 6 6 创建 Windows Embedded CE6 0 2 该图告诉你向导到底完成那些工作 步骤如何等信息 单击下一步进入 BSP 选择的页面 向导会显示当前系统中所包含的 BSP 由于我们要进行的是在 S3C4210 上的开发 而 Device Emulator 提供的正是 S3C4210 的 BSP 所以我们 在这里选择 Device Emulator ARMV4I 如图 7 图图 7 7 创建 Windows Embedded CE6 0 3 14 接下来进入设计模板的选择 如下图所示 设计模板是减轻工开发人员工 作量的一种方式 这些设计模板都是微软公司的工作人员进行了尤其是的调查 和分析之后建立的 这里只是设计模板选择的第一步 相当于选择目标设备的 应用领域 选择一个领域后 在向导的右侧可以查看关于它的说明 在这里我 们选择 PDA Device 然后下一步 图图 8 8 创建 Windows Embedded CE6 0 4 进入设计模板的第二步 如图 9 所示 在这里我们选择 Enterprise Web Pad 然后下一步 15 图图 9 9 创建 Windows Embedded CE6 0 5 进入应用程序和多媒体组件选择对话框 按照本系统的一些需要我们可以 去掉不需要的模块 添加需要的模块 如图 10 图图 1 10 0 创建 Windows Embedded CE6 0 6 单击下一步进入网络与通信模块对话框 如图 11 在此我们选择了 TCP IP T 和 WAN 16 图图 1111 创建 Windows Embedded CE6 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 建立 BootLoader 7 配置和建立已经定制的 Windows Embedded CE6 0 相应的 SDK 由于嵌入式系统的存储空间有限 因此 组件和模块的添加一定要依据最 小化的原则 能不添加的模块一律不添加 需要添加的模块也要考虑将其用得 比较少的功能进行剔除 17 3 3 5 生成 Windows Embedded CE6 0 映像 生成映像有两种版本 一种是 Debug 版 含有较多的调试信息 在没有正 式发布的时候 一般使用这种版本 可以给开发人员提供很多方便 另一种是 Release 版本 它比较适合于系统的正式发布 当确保所有的配置都完成后 就可以开始生成一个映像文件了 这将是一个比较漫长的过程 在此期间我们 可以从 输出 和 错误 两个子窗口中了解相关的信息 3 3 6 运行 Windows Embedded CE6 0 当映像生成后 我们就可以先在模拟器上运行了 然后再下载映像到目标 设备进行运行测试 在模拟器上运行系统的步骤如下 1 在 Target 菜单中选择 Connectivity Options 命令 打开 目标设备连接选择 对话框 设置如图 12 图图 1 12 2 配置 Windows Embeded CE6 0 2 然后启动目标设备 随后 模拟器会在开发机上下载映像文件 直到 出现 Windows Embedded CE6 0 的桌面 如图 13 18 图图 1 13 3 运行 Windows Embedded CE6 0 3 4 服务器应用程序设计 通过摄像头采集的数据发送到监控端进行显示 我们必须在服务端和客户端 建立相应的通信机制 但前提是我们已经获得了摄像头采集到的视频数据 该部 分的功能由视频图像采集模块完成 之后图像发送模块将采集到的数据通过发送 模块发送到客户端 由客户端将接收到的数据通过一定的机制解码当前获得的数 据流从而达到监控的目的 系统启动后 Windows Embedded CE6 0 操作系统会 自动检测摄像头是否连接好 本系统在定制 Windows Embedded CE6 0 操作系统 时 通过修改操作系统配置和注册表 可以使系统自动加载摄像头在 WinCE 下 的驱动程序 ZC030 x dll 系统自动加载驱动程序时 首先要将驱动程序复制 到 WINDOWS 文件夹下 然后向注册表中写入摄像头的驱动信息 HKEY LOCAL M ACHINE Drivers BuiltIn CAMERA Index dword 1 Prefix CAM Dll zc030 x dll Order dword 100 HKEY LOCAL MACHINE Drivers USB LocalClients 2760 12315 Default Default Prefix CAM DLL zc030 x dll HEKY LOCAL MACHINE Drivers USB LocalClients 2760 12315 Default Default 19 DLL zc030 x 其中 prefix 为设备文件名 D11 为驱动的文件名 Order 为设备文件名 索引 硬件配置完成后启动操作系统 就可以自动加载驱动 运行应用程序进 行图像采集了 服务启动的流程图如图 14 如果成功打开了摄像头 则可以进行服务端口的设置 成功启动服务器后 确定的端口将用来等待客户端进行连接 一旦连接上 便开始发送视频数据 如果打开摄像头失败 程序会提示信息给用户 3 4 1 服务端视频图像采集模块 在视频图像采集模块中 本系统使用的是中星微 ZC030X 系列 中星微摄像 头采用了中星微 301PLUS 快速主控芯片 该芯片是一款高性能图像压缩芯片 输出 MIPEG 视频流数据 MIPEG Motion JPEG 主要是基于静态视频压缩发展起 来的技术 特点是基本不考虑视频流中不同帧之间的变化 只单独对某一帧进 行压缩 通常可达到 6 1 的压缩率 它的误差稳定性非常好 可以获取清晰度 很高的视频图像 而且还可以灵活设置各路视频清晰度 压缩帧数 本系统直 接从摄像头驱动中获取 MJPEG 视频流数据 图像采集模块用到的主要函数有 1 capInitCamera 用来初始化视频设备 并获取当前可用的视频设备 数目 2 capSetVideoFormat 设置视频格式和分辨率 本系统使用的视频格 式为 RGB24 图 14 服务器启动流程图 启动摄像头 启动服务器 成功 提示信息 是 等待客户端连接 否 20 3 capGrabFrsme 从驱动中抓取 1 帧图像 并存储在缓存 lpFrameBuffer 中 4 capGetLastJpeg 将抓取的 MJPEG 格式的图像转换成 JPEG 格式 送 到无线发送模块 5 capCloseCamera 关闭视频设备 视频采集部分还有查询视频采集格式 设置明暗度 设置对比度等相关函 数 3 4 2 服务端视频图像发送模块 该模块主要是通过 Windows Socket 编程将系统通过摄像头驱动程序采集 到的视频图像数据流转换为网络数据字节流发送到客户端 在这个过程中 服 务端必须首先建立一个用于服务多个客户端的 Socket 并且指定一个当前系统 没有被正在使用的端口 该端口必须确定好 因为在编写客户端应用程序的时 候必须要使用这个端口号来绑定服务端 在建立该 Socket 的时候 同时必须指 定用于通信的寻址模式 套接字的类型 套接字支持的通信协议类型 然后将该 套接字绑定到服务端的 IP 地址和上面提到的端口号 之后就开始侦听该端口 为了提高服务器的性能 该部分将侦听部分放到一个专用的线程中 一旦一个 客户端连接到服务器 服务器自动为每一个连接到的客户端建立一个 Socket 用 于服务器和客户端的视频数据传输 同样为了提高性能 我们将接收和发送数 据建立一个专用的线程 这样侦听线程和用于每个服务器和客户端的线程能够 不相干扰地高效工作 一旦客户端断开连接 服务器就关闭用于两者用于通信 的 Socket 这样及时释放不需要的资源 提高系统性能 在服务器每发送一帧 视频图像后就等待客户端发出新的请求 如果没有接收到请求服务器就不发送 视频图像数据 为此该部分我们设定一个循环一直用来检测是否有请求发送来 当然如果客户端由于某种原因一直都没有发送请求或者由于网络原因请求丢失 了 会使服务器一直处于忙碌状态 这样可能会导致系统假死 所以一旦检测 不到客户端发送的请求我们可使系统的当前接收和发送数据的线程睡眠一小段 时间 一旦接收到客户端的请求 如果检测到当前网络套接字可写 便开始发 送视频图像数据 发送数据部分主要是调用中星微的摄像头驱动程序获取图像 然后通过 NetworkStream 流的写方法将视频数据发送到客户端 发送数据流程 如图 15 21 其中 打开摄像头是通过操作系统调用摄像头的驱动程序来发现摄像头硬件 设备 在这里我们通过摄像头驱动程序提供的接口来对视频数据进行捕获 然后 将捕获到的一帧帧视频数据通过网络发送到每一个连接到服务器的客户端 在 这里由于使用的中芯微摄像头已经对采集到的视频数据进行了适当的压缩 所以 我们可以节省一定的成本 而不用再使用视频数据压缩卡 在打开摄像头后我们 并没有启动用于与客户端的连接所以在没有启动服务前客户端是接收不到视频 数据的 因此要想进行双向通信 我们必须启动服务器 当不需要进行监控的 时候可以直接关闭摄像头即可 整个过程的主要代码为 Clipboard Clear 清空剪切板 VideoAPI SendMessage this showVideo lwndC VideoAPI WM CAP COPYDIB 0 0 将一帧视频数据写入剪切板 dataobject Clipboard GetDataObject 从剪切板中读 if dataobject GetDataPresent DataFormats Bitmap 取一帧数据 bitmap Bitmap dataobject GetData DataFormats Bitmap else 线程休眠 发送完成 网络流可写 读取请求 连接上 发送数据 是 是 是 否 线程休眠 否 否 等待客户端连接 网络流可读 图 15 数据发送流程 22 bitmap null memoryStream Flush 清穿内存缓冲区 memoryStream Seek 0 SeekOrigin Begin 定位读取位置为缓冲区起始 处 binaryFormatter Serialize memoryStream bitmap 将视频数据序列 化为内存流 bytesToSend new byte memoryStream Length 建立字节数组 memoryStream Seek 0 SeekOrigin Begin memoryStream Read bytesToSend 0 bytesToSend Length 将视频数 据写入数组 networkStream Write bytesToSend 0 bytesToSend Length 将数所 发送到网络 关键接收和发送数据的代码见附录 C 23 第 4 章 嵌入式网络视频监控系统客户端软件系统设计 4 1 SOCKET 编程基础 4 1 1 SOCKET 协议 Socket 实质上提供了进程通信的端点 进程通信之前 双方首先必须各自 创建一个端点 否则是没有办法建立联系并相互通信的 正如打电话之前 双 方必须各自拥有一台电话机一样 在网间网内部 每一个 Socket 用一个半相关 描述 协议 本地地址 本地端口 一个完整的 Socket 有一个本地唯一的 Socket 号 由操作系统分配 最重要的是 Socket 是面向客户 服务器模型而 设计的 针对客户和服务器程序提供不同的 Socket 系统调用 客户随机申请 一个 Socket 系统为之分配一个 Socket 号 服务器拥有全局公认的 Socket 任何客户都可以向它发出连接请求和信息请求 Socket 利用客户 服务器模 式巧妙地解决了进程之间建立通信连接的问题 服务器 Socket 半相关为全局 所公认非常重要 Socket 接口是访问 Internet 使用得最广泛的方法 在 Internet 上有很多这样的主机 这些主机一般运行了多个服务软件 同 时提供几种服务 每种服务都打开一个 Socket 并绑定到一个端口上 不同的 端口对应于不同的服务 Socket 正如其英文原意那样 象一个多孔插座 客户 软件将插头插到不同编号的插座 就可以得到不同的服务 什么是 Socket 所谓 Socket 通常也称作 套接字 用于描述 IP 地址和 端口 是一个通信链的句柄 应用程序通常通过 套接字 向网络发出请求或者 应答网络请求 在连接成功时 应用程序两端都会产生一个 Socket 实例 操作 这个实例 完成所需的会话 对于一个网络连接来说 套接字是平等的 并没 有差别 不因为在服务器端或在客户端而产生不同级别 4 1 2 Windows Sockets API Windows 嵌套字是由软件厂商和传输控制协议 因特网协议 TCP IP 厂商 如 Microsoft 和 Sun Microsystems 组成的一个工作组开发的 它是作为一种 可以将市场上的基于 PC 的不一致性的 TCP IP 产品连在一起的标准 这个规范 也称为 Windows 传输协议 Windows Transmit Protocol 它允许 Windows 应用 24 程序可以不论下面是什么协议都可以进行通信 这个规范是在 1992 年宣布的 后来对开发人员免费提供 它的设计是为了保证任何联网厂商的 TCP IP 软件 以及任何访问底层协议栈的 Windows 或 Windows NT 应用程序之间都具有互操作 性 已经出现了对 Windows 嵌套字的需求 这是因为许多厂商使用它们自己的 应用程序编程接口 API 为 PC 环境开发 TCP IP 协议栈 由于可以使用许多不同 的 TCP IPAPI 产品开发人员在他们的产品中就不得不选择一种 API 或以很高 的代价支持所有可用的 API Windows 嵌套字是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理服务方法
- 网络文学作品影视改编权合作与分成协议
- 虚拟游戏装备交易平台分割及收益协议
- 花园围栏翻新与维护责任协议
- 谵妄个案护理
- 夫妻忠诚保证及共同债务处理协议
- 外籍技术顾问驻场咨询与技术服务协议
- 生物医药数据出境安全审查及合规操作协议
- 知识产权代理机构股权合作与知识产权战略布局协议
- 智慧社区智能安防系统服务与物业管理平台合作协议
- T∕CACM 1078-2018 中医治未病技术操作规范 拔罐
- 糖尿病膳食指南2024
- 腹腔穿刺术评分表
- 2024届上海市闵行区三年级英语第二学期期中监测模拟试题含答案
- 电气一次主接线图课件
- 创新创业教育的课程设计与实施研究
- 2024年重庆环卫集团有限公司招聘笔试参考题库含答案解析
- 手机摄影培训摄像教程拍照技巧技术含内容两篇
- 【运动康复专业病例分析报告:腰间盘突出症的术后康复运动疗法设计5700字(论文)】
- Unit5Ourdreams(课件)重大版英语六年级下册
- 光伏电站运行规程(完整版)
评论
0/150
提交评论