




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2008 第四届 博创杯 全国大学生嵌入式设计大赛 基于嵌入式系统的网络视频传输系统基于嵌入式系统的网络视频传输系统 Network Video transmission System Based on Embedded 2008 年年 7 月月 18 日日 2008 第四届 博创杯 全国大学生嵌入式设计大赛 摘 要 本文设计了一个基于嵌入式 WinCE 操作系统的软件 它能够 将 USB 摄像头采集到的视频数据 使用 PXA270 S 实验箱上的服 务端 经由网络传递给电脑上的客户端 并且显示出来 这里采 用的通信方式是 TCP 通信 软件系统包括两大部分 视频图像采 集和视频图像传输 视频图像采集部分描述了 USB 摄像头驱动设计过程和实现图 像采集功能的程序 而视频图像传输部分 首先简单介绍了 socket 通信原理 并且详细论述了客户端和服务端如何使用 TCP 进行通信 完成视频传输的过程 然后还介绍了如何将摄像头采 集到的图像数据显示出来 客户端和服务端程序分别使用 Visual C 6 0 和 eMbedded Visual C 进行开发 程序编写完成后 同时运行客户端和服务端并加载摄像头驱 动程序 通过以太网 就可以实现视频传输的功能了 关键词 关键词 PXA270 S WinCE USB Camera 驱动 视频采集 视频传输 2008 第四届 博创杯 全国大学生嵌入式设计大赛 Abstract Abstract This article describes a kind of software based on embedded wince operating system This software can collect video data by using USB Camera Then the server on PXA270 S experiment box will send this data to the client through network At the same time this video data will be displayed both on the server and the client TCP communication is supposed to be the mode of network communication This software system contains two parts including video data collection and video data transmission The part of video data collection describes how to develop USB Camera driver and collect video data The part of video data transmission describes sockets communication principle at first It also describes the client how to communicate with the server by using TCP communication and send data to each other At last all of video data will be displayed on the server and the client The server program is developed by using eMbedded Visual C the client program by using Visual C 6 0 After all above have be done run the server and the client load 2008 第四届 博创杯 全国大学生嵌入式设计大赛 the USB Camera driver the video data will be successfully transmitted Keywords PXA270 S WinCE USB Camera drive video data acquisition video data transmission 2008 第四届 博创杯 全国大学生嵌入式设计大赛 目 录 第第 1 章章 绪论绪论 6 第第 2 章章 系统总体设计系统总体设计 6 2 1 系统组成 6 6 2 2 设备介绍 6 2 3 驱动程序简介 6 第第 3 章章 功能与指标功能与指标 7 第第 4 章章 实现原理实现原理 7 第第 5 5 章章 硬件框图硬件框图 7 第第 6 章章 软件流程软件流程 8 6 1 WINCE 下的 USB CAMERA 驱动 8 6 1 1WINDOWS CE 编写的 USB CAMERA 驱动程序 8 6 1 2 USB CAMERA 驱动的实现 8 6 2 服务端视频采集 9 6 3 视频图像传输 10 6 4 PC 机上 TCP 客户端程 序 11 6 4 1 CTCPClient CE 类概述及应用 11 6 4 2 TCP 客户端程序其他类简单概述 13 6 4 3 WinCE 上 TCP 服务端程序 14 6 4 4 CTCPCustom CE 类说明 14 6 4 5 CTCPServer CE 类说明 15 6 4 6 TCP 服务端程序 16 第第 7 章章 测试方案及结果测试方案及结果 18 7 1 系统测试方案 18 7 2 测试设备 18 7 3 测试结果 18 第第 8 章章 实现功能实现功能 19 第第 9 章章 特色特色 20 参考文献参考文献 附录附录 错误 未定义书签 2008 第四届 博创杯 全国大学生嵌入式设计大赛 6 第 1 章 绪论 随着信息科学技术的高速发展 网络技术和数字视频技术都已经日趋成熟 同样的 网络视频监控系统已被广泛应用在很多场所 这里将研究视频采集与传 输功能在网络视频电话中的具体应用 所使用的实验平台是 PXA270 S 实验箱 选用的 USB 摄像头也是目前常用的 其输出的视频为经过 JPEG 压缩后的数字视 频 因此无需再进行视频压缩 加上以太网不会受到网络带宽限制 所以采集到 的数字视频可以直接通过以太网传输到 PC 机上 减少了硬件设计的复杂度 第二章 系统总体设计系统总体设计 2 1 系统组成 系统主要包括两个部分 一个是 USB 视频图像的数据采集 另外一个就是视 频图像传输系统 系统硬件架构如图 1 摄像头PXA270 S网线 PC 机 图 1 2 2 设备介绍 PXA270 S 开发系统 基于 Intel 公司最新的 XScale 架构 PXA270 S ARM 系 列处理器 最高主频可达 624MHz 加入了 Wireless MMX 技术 提升了多媒体处 理能力 同时 PXA270 还加入了 Intel Speed Step 动态电源管理技术 在保证 CPU 性能的情况下 最大限度地降低移动设备功耗 USB 摄像头采用罗技快看高手 5000 Logitech QuickCam 5000 它采用高品 质 CMOS 图像传感器 130 万像素 最大分辨率 640 480 高速 USB2 0 传输接口 另外 还有以太网转换器和客户端的 PC 机 2 3 软件介绍 软件系统由系统引导加载程序 Bboot nb0 载入嵌入式 WinCE 内核 USB Camera 驱动和 CE 端应用程序等组成 在 PXA270 S BSP 基础上 根据具体需要 2008 第四届 博创杯 全国大学生嵌入式设计大赛 7 使用 Platform Builder 定制将在 PXA270 S 实验平台上使用的 WinCE 内核 另 外使用 eMbedded Visual C 开发在 WinCE 平台下的 USB Camera 驱动和 CE 服务 端应用程序 而 PC 机上客户端的程序则在 Visual C 6 0 上进行开发 第三章 功能与指标 我们通过 USB 摄像头采集到的视频经过 JPEG 压缩后的数字视频可以直接在以 太网上传输 在 PXA270 S 处理器的控制下 可以把 USB 摄像头采集到的视频通 过以太网发送到远端的 PC 上 以达到视频对话的效果 其图像清晰 速度快捷 其中 PXA270 S 平台上的视频采集速率为 15 帧 而 PC 机所接收到的视频采集 速率也能在 10 帧以上且较为稳定 第四章 实现原理 USB 系统由 USB 主机 一个或多个 USB 设备和物理总线组成 主机上又分 两层 较高的包含 USB 设备驱动程序的软件层和主机控制器硬件层 主机的用于 控制对 USB 设备的双向数据传输 物理总线是一组 USB 电缆用来将控制器和外围 设备连接起来 WinCE 的 USB 系统软件由两层组成 USB 设备驱动程序层和底 层的由 WinCE 实现的 USB 函数层 较低的 USB 函数层本身又由两部分组成 较高的通用串行总线驱动程序 USBD 模块和较低的主控制器驱动程序 HCD 模块 HCD 提供了抽象的主机控制器 且对主机控制器所见到的 USB 系统的数据 传输进行了抽象 USBD 提供一个抽象的设备 且对 USBD 客户和 USB 设备功能部 件之间的数据传输进行抽象 USB 设备驱动程序使用 USBD 接口函数与外围设备 进行通信 第五章硬件框图 2008 第四届 博创杯 全国大学生嵌入式设计大赛 8 第六章第六章 软件流程软件流程 6 16 1 WinCEWinCE 下的下的 USBUSB cameracamera 驱动驱动 6 1 16 1 1 WindowsWindows CECE 编写的编写的 USBUSB cameracamera 驱动程序驱动程序 USB 设备驱动程序必须输出的函数有 USBDeviecAttach 初始化 USB 设备 USBInstallDriver 创建一个驱动程序加载所需的注册表信息 USBUninstallDriver 释放驱动程序所占用的资源 删除注册表等 6 1 26 1 2 WinCEWinCE 下的下的 USBUSB cameracamera 驱动实现驱动实现 首先是具体的注册表信息 在platform reg 中添加以下注册项即可 HKEY LOCAL MACHINE Drivers USB LoadClients 1133 2245 Default Default Video Class DLL webcam DLL HKEY LOCAL MACHINE Drivers USB ClientDrivers Video Class Prefix CAM 2008 第四届 博创杯 全国大学生嵌入式设计大赛 9 Dll webcam DLL 另外还要在 USBCode cpp 中针对 USB 摄像头的 PID VID 对以下定义做修改 define VID LOGITECH 1133 define PID QUICKCAMPRO5000 2245 define PID MIKESQUICKCAM 2226 在 WebCam h 文件中针对以下几项定义要做修改 define DRIVER NAME TEXT Webcam dll define DEVICE PREFIX TEXT CAM define CLASS NAME SZ TEXT Video Class defineCLIENT REGKEY SZTEXT Drivers USB ClientDrivers Video Cla ss 外设插入时 首先调用 USBDeviceAttach 函数 接下来调用 ActivateDevice 它用来分配 填写设备内容 USBDeviceAttach 最后要完成的工作是在此函数内调用 USBD 模块的 RegisterNotificationRoutine 函数登记注册 DeviceNotify 函数 用于相应的 善后工作 自此 系统完成外设加载 6 2 服务端视频采集服务端视频采集 在 USB Camera 驱动成功加载之后 要对其输出的视频图像压缩数据进行分析 还原 以完成视频图像的采集过程 这些功能由我们所设计的 TCP 服务端来实现 具体的函数定义以及程序代码分别在文件 CameraCode h 和文件 CameraCode cpp 中 在文件 CameraCode h 添加如下函数 InitCamera 打开摄像头 ShutdownCamera 关闭摄像头 GetVideoFormats 获取视频图像的格式 GetStillFormats 获取静态图片的格式 WriteJPEG 将图像保存为一个 JPEG 格式的文件 2008 第四届 博创杯 全国大学生嵌入式设计大赛 10 6 36 3 视频图像传输系统视频图像传输系统 在此我们要应用到 Windows Sockets 规范和 TCP 编程 Windows Sockets 规范的本意在于提供给应用程序开发者一套简单的 API 它 规范定义并记录了如何使用 API 与 Internet 协议族连接 实现实际的通讯工作 他们之间的工作关系如图 3 示 而且 WINCE 平台还提 供 了 Socket 的 API 函数 图 3 socket 通信具体应用流程图 TCP Transport Control Protocol 表示传输控制协议 他的服务端和客户 端的流程图如图 4 示 2008 第四届 博创杯 全国大学生嵌入式设计大赛 11 图 4 TCP 服务端和客户端的流程图 下面将具体介绍分析 WinCE 上 TCP 服务端和 PC 机上 TCP 客户端程序 6 46 4 PCPC 机上机上 TCPTCP 客户端程序客户端程序 在客户端应用程序设计中 首先要创建 CTCPClient CE 类 完成对 TCP 封装 然后调用该类与 TCP 服务端建立连接 并进行数据传输 最后再断开与 TCP 服务 端的连接 下面介绍程序的具体实现过程 6 4 16 4 1 CTCPClient CECTCPClient CE 类概述及应用类概述及应用 CTCPClient CE 类主要用于封装 WinCE socket API 函数 其使用流程如图 2008 第四届 博创杯 全国大学生嵌入式设计大赛 12 图 5 CTCPClient CE 类的使用流程 其具体应用及代码如下 1 建立私有函数 private CTCPClient CE m tcpClient 用于引用 CTCPClient CE 类 2 设计 IDD PCCAMCTRL FORM 对话框 为 CMainFrame 类添加三个私有静态函数 OnDisConnect OnRead OnError 分别用于处理客户端连接断开事件 从客户端读取数据事件和客户端 socket 错 误事件 3 为 连接 和 断开 按钮添加单击事件代码 4 加入以下函数 void SendCMD long cmd 向终端发送命令信息 void SendCMDData long cmd CString data 发送命令数据 void ProcessWebCmd long datasize 处理网络命令 2008 第四届 博创杯 全国大学生嵌入式设计大赛 13 6 4 26 4 2 TCPTCP 客户端程序其他类简单概述客户端程序其他类简单概述 首先要说的是 CPCCAMCTRLView 具体定义如下 public void DisplayFrame PBYTE pData DWORD dwSize 显示接收到的图片 另外 CPictureCtrl 类和 CPicture 类 其中分别用到了重载函数 LoadImage 和 Load 同时也都包含了函数 GetImageSize 这些函数共同完成了对显示图片 大小的控制 CPictureCtrl 类还包含了函数 OnPaint 用以绘制图片 至此 TCP 客户端程序就编写完毕了 TCP 客户端程序具体流程图如图 6 图 6 TCP 客户端程序工作流程图 2008 第四届 博创杯 全国大学生嵌入式设计大赛 14 6 4 3 WinCE 上 TCP 服务端程序 TCP 服务端将会创建 CTCPServer CE 和 CTCPCustom CE 两个类 CTCPServer CE 监听客户端的连接 CTCPCustom CE 与客户端进行通讯 CTCPServer CE 类和 CTCPCustom CE 类的关系如图 7 图 7 CTCPServer CE 类和 CTCPCustom CE 类的关系图 6 4 46 4 4 CTCPCustom CECTCPCustom CE 类说明类说明 CTCPCustom CE 类的实现步骤 1 通过 EVC 主菜单创建一个新的类 CTCPCustom CE 并且绑定 winsock lib 库 2 CTCPCustom CE 类具体代码如下 public CTCPServer CE m pTCPServer CE 引用 TCP 服务端监听 Socket bool Open CTCPServer CE pTCPServer 打开 socket 创建通讯线程 CString m RemoteHost 远程主机 IP 地址 DWORD m RemotePort 远程主机端口号 SOCKET m socket 通讯 Socket 句柄 bool Send CTCPServer CE pTCPServer 向客户端发送数据 bool Close 关闭 socket 关闭线程 释放 Socket 资源 private HANDLE m tcpThreadHandle 通讯线程句柄 2008 第四届 博创杯 全国大学生嵌入式设计大赛 15 SocketThreadFunc 监听与客户端连接的 socket 通讯的事件 HANDLE m exitThreadEvent 通讯线程退出事件句柄 6 4 56 4 5 CTCPServer CECTCPServer CE 类说明类说明 CTCPServer CE 类主要职责是负责监听并接受客户端连接 1 在 TCPServer CE h 文件中添加如下代码用于定义几种函数类型 include class CTCPCustom CE class CTCPServer CE 定义客户端连接建立事件 typedef void CALLBACK ONCLIENTCONNECT CWnd CTCPCustom CE 定义客户端 SOCKET 关闭事件 typedef void CALLBACK ONCLIENTCLOSE CWnd CTCPCustom CE 定义客户端当有数据接收事件 typedef void CALLBACK ONCLIENTREAD CWnd CTCPCustom CE N Packet 定义客户端 Socket 错误事件 typedef void CALLBACK ONCLIENTERROR CWnd CTCPCustom CE int nErrorCode 定义服务器端 Socket 错误事件 typedef void CALLBACK ONSERVERERROR CWnd CTCPServer CE int nErrorCode 2 为 CTCPServer CE 类添加一些公有成员变量 私有成员变量及成员函数 这些变量的定义如下 public int m LocalPort 设置服务端口号 CWnd m pOwnerWnd 父窗口句柄 Open 打开 TCP 服务 ONCLIENTCONNECT OnClientConnect 客户端连接建立事件 回调函数 ONCLIENTCLOSE OnClientClose 客户端连接断开事件 回调函数 ONCLIENTREAD OnClientRead 客户端接收数据事件 回调函数 ONCLIENTERROR OnClientError 客户端发生错误事件 回调函数 2008 第四届 博创杯 全国大学生嵌入式设计大赛 16 ONSERVERERROR OnServerError 服务器端发生错误事件 回调函数 Close 关闭 TCP 服务 private SOCKET m ServerSocket TCP 服务监听 socket HANDLE m serverThreadHandle 通讯线程句柄 HANDLE m exitThreadEvent 通讯线程退出事件句柄 注意 这里有一个非常重要的属性 m LocalPort 该属性表示 TCP 服务端的 端口号 用户可以选择 1024 之后的端口 3 在 CTCPServer CE 类的构造函数和析构函数里分别创建线程退出事件和 关闭线程退出事件 4 在 TCPServer CE cpp 文件中添加全局静态变量 m ListClientSocket 用 于储存客户端连接的 Socket 列表 并引用 TCPCustom CE h 文件和 afxtempl h 文件 5 为 CTCPServer CE 类添加一个私有静态线程函数 SocketThreadFunc 该 线程用于监听服务器套接字事件 SocketThreadFunc 函数定义如下 private static DWORD SocketThreadFunc PVOID lparam 线程处理函数 6 4 66 4 6 TCPTCP 服务端程序服务端程序 1 为 CMainFrame 类添加私有成员变量 m tcpServer 用它来实现 TCP 服务 同时设置网络信息 具体定义如下 public void SendCMD long cmd 向 PC 发送命令信息 bool SendCMDData long cmd const char pbuf int len 向 PC 发 送命令数据 void ProcessWebCmd void 处理网络命令 N Packet P RCV 包缓冲区 N Packet P SEND 包缓冲区 2008 第四届 博创杯 全国大学生嵌入式设计大赛 17 private CTCPServer CE m tcpServer 定义 CTCPServer CE 对象 2 接下来设计 IDD LGCAMCECTRL FORM 对话框 然后为 CMainFrame 类添加 5 个私有静态函数 OnClientConnect 处理客户端连接建立事件 OnClientClose 处理客户端 Socket 关闭事件 OnClientRead 处理服务端收到的来自客户端的数据事件 OnClientError 处理客户端 Socket 错误事件 OnServerError 处理服务端 Socket 错误事件 3 为 启用网络 关闭网络 添加单击事件代码 单击 启用网络 按 钮后 TCP 服务器就开始监听 等待客户端的连接 单击 关闭网络 按钮后 将关闭处于监听状态的 TCP 服务器 2008 第四届 博创杯 全国大学生嵌入式设计大赛 18 图 8 服务端工作流程图 第七章 系统测试 7 1 测试方案 首先在 CE 端加载摄像头驱动 再运行服务端 启用网络 然后运行客户 端 连接 建立与服务端的连接 最后在服务端选择 开始预览 这样服 务端与客户端就能同时显示图像了 7 2 测试设备 PXA270 S 实验箱 USB 罗技快看高手 5000 摄像头 PC 机和以太网交换机 7 3 测试结果 客户端运行过程截图如图 9 所示 服务端运行过程截图如图 10 所示 2008 第四届 博创杯 全国大学生嵌入式设计大赛 19 图 9 客户端截图 图 10 服务端截图 第八章 实现功能 结合 USB Camera 罗技快看高手 5000 Logitech QuickCam 5000 的驱动开 发 简单介绍了 USB 设备的驱动设计框架 同时 设计了基于 WinCE 操作系统 和 PXA270 S 平台的视频传输系统 此系统能够将 USB Camera 采集的视频数 据压缩 然后使用实验平台与 PC 机之间的网络 通过 TC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农机配件质量稳定性分析报告
- 2025年工业互联网平台数据清洗算法在智能能源管理中的应用探索报告
- 员工劳动合同
- 智能停车场系统在智慧商业街区2025年应用效果评估报告
- 医药电商平台合规运营模式下的药品质量追溯与监管政策优化研究报告
- 智能交通系统交通流量预测技术在交通流量调控中的应用与2025年发展报告
- 中医生考试题目及答案
- 新能源汽车充电基础设施建设投资策略报告:2025年行业痛点与解决方案研究
- 2025年事业单位工勤技能-安徽-安徽殡葬服务工一级(高级技师)历年参考题库含答案解析
- 2025年事业单位工勤技能-安徽-安徽广播电视天线工二级(技师)历年参考题库含答案解析
- GB/T 29651-2013锰矿石和锰精矿全铁含量的测定火焰原子吸收光谱法
- GA/T 718-2007枪支致伤力的法庭科学鉴定判据
- 千年菩提路解说词
- 高一英语必修一试卷(含答案)(适合测试)
- 护理人员档案管理模板
- 机械设备日常点检表
- 中医病症诊断疗效标准
- 危大工程巡视检查记录
- JJG 741-2022 标准钢卷尺检定规程-(高清最新版)
- 中国人民银行反洗钱调查审批表
- DB37T 536-2019 文书档案目录数据采集规范
评论
0/150
提交评论