基于嵌入式系统的网络视频传输系统_设计报告(北方工业大学_二队)_第1页
基于嵌入式系统的网络视频传输系统_设计报告(北方工业大学_二队)_第2页
基于嵌入式系统的网络视频传输系统_设计报告(北方工业大学_二队)_第3页
基于嵌入式系统的网络视频传输系统_设计报告(北方工业大学_二队)_第4页
基于嵌入式系统的网络视频传输系统_设计报告(北方工业大学_二队)_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

基于嵌入式系统的网络视频传输系统NETWORKVIDEOTRANSMISSIONSYSTEMBASEDONEMBEDDED2008年7月18日摘要本文设计了一个基于嵌入式WINCE操作系统的软件,它能够将USB摄像头采集到的视频数据,使用PXA270S实验箱上的服务端,经由网络传递给电脑上的客户端,并且显示出来。这里采用的通信方式是TCP通信。软件系统包括两大部分视频图像采集和视频图像传输。视频图像采集部分描述了USB摄像头驱动设计过程和实现图像采集功能的程序;而视频图像传输部分,首先简单介绍了SOCKET通信原理,并且详细论述了客户端和服务端如何使用TCP进行通信,完成视频传输的过程,然后还介绍了如何将摄像头采集到的图像数据显示出来。客户端和服务端程序分别使用VISUALC60和EMBEDDEDVISUALC进行开发。程序编写完成后,同时运行客户端和服务端并加载摄像头驱动程序,通过以太网,就可以实现视频传输的功能了。关键词PXA270SWINCEUSBCAMERA驱动;视频采集;视频传输ABSTRACTABSTRACTTHISARTICLEDESCRIBESAKINDOFSOFTWAREBASEDONEMBEDDEDWINCEOPERATINGSYSTEMTHISSOFTWARECANCOLLECTVIDEODATABYUSINGUSBCAMERATHENTHESERVERONPXA270SEXPERIMENTBOXWILLSENDTHISDATATOTHECLIENTTHROUGHNETWORKATTHESAMETIME,THISVIDEODATAWILLBEDISPLAYEDBOTHONTHESERVERANDTHECLIENTTCPCOMMUNICATIONISSUPPOSEDTOBETHEMODEOFNETWORKCOMMUNICATIONTHISSOFTWARESYSTEMCONTAINSTWOPARTS,INCLUDINGVIDEODATACOLLECTIONANDVIDEODATATRANSMISSIONTHEPARTOFVIDEODATACOLLECTIONDESCRIBESHOWTODEVELOPUSBCAMERADRIVERANDCOLLECTVIDEODATATHEPARTOFVIDEODATATRANSMISSIONDESCRIBESSOCKETSCOMMUNICATIONPRINCIPLE,ATFIRSTITALSODESCRIBESTHECLIENTHOWTOCOMMUNICATEWITHTHESERVERBYUSINGTCPCOMMUNICATION,ANDSENDDATATOEACHOTHERATLAST,ALLOFVIDEODATAWILLBEDISPLAYEDONTHESERVERANDTHECLIENTTHESERVERPROGRAMISDEVELOPEDBYUSINGEMBEDDEDVISUALC,THECLIENTPROGRAMBYUSINGVISUALC60AFTERALLABOVEHAVEBEDONE,RUNTHESERVERANDTHECLIENT,LOADTHEUSBCAMERADRIVER,THEVIDEODATAWILLBESUCCESSFULLYTRANSMITTEDKEYWORDSPXA270SWINCEUSBCAMERADRIVEVIDEODATAACQUISITIONVIDEODATATRANSMISSION目录第1章绪论6第2章系统总体设计621系统组成622设备介绍623驱动程序简介6第3章功能与指标7第4章实现原理7第5章硬件框图7第6章软件流程861WINCE下的USBCAMERA驱动8611WINDOWSCE编写的USBCAMERA驱动程序8612USBCAMERA驱动的实现862服务端视频采集963视频图像传输1064PC机上TCP客户端程序11641CTCPCLIENT_CE类概述及应用11642TCP客户端程序其他类简单概述13643WINCE上TCP服务端程序14644CTCPCUSTOM_CE类说明14645CTCPSERVER_CE类说明15646TCP服务端程序16第7章测试方案及结果1871系统测试方案1872测试设备1873测试结果18第8章实现功能19第9章特色20参考文献附录错误未定义书签。第1章绪论随着信息科学技术的高速发展,网络技术和数字视频技术都已经日趋成熟;同样的,网络视频监控系统已被广泛应用在很多场所。这里将研究视频采集与传输功能在网络视频电话中的具体应用。所使用的实验平台是PXA270S实验箱。选用的USB摄像头也是目前常用的,其输出的视频为经过JPEG压缩后的数字视频,因此无需再进行视频压缩。加上以太网不会受到网络带宽限制,所以采集到的数字视频可以直接通过以太网传输到PC机上,减少了硬件设计的复杂度。第二章系统总体设计21系统组成系统主要包括两个部分一个是USB视频图像的数据采集;另外一个就是视频图像传输系统。系统硬件架构如图1。摄像头PXA270S网线PC机图122设备介绍PXA270S开发系统,基于INTEL公司最新的XSCALE架构PXA270S,ARM系列处理器,最高主频可达624MHZ,加入了WIRELESSMMX技术,提升了多媒体处理能力;同时PXA270还加入了INTELSPEEDSTEP动态电源管理技术,在保证CPU性能的情况下,最大限度地降低移动设备功耗。USB摄像头采用罗技快看高手5000(LOGITECHQUICKCAM5000),它采用高品质CMOS图像传感器,130万像素,最大分辨率640480,高速USB20传输接口。另外,还有以太网转换器和客户端的PC机。23软件介绍软件系统由系统引导加载程序BBOOTNB0载入嵌入式WINCE内核、USBCAMERA驱动和CE端应用程序等组成。在PXA270SBSP基础上,根据具体需要,使用PLATFORMBUILDER定制将在PXA270S实验平台上使用的WINCE内核。另外使用EMBEDDEDVISUALC开发在WINCE平台下的USBCAMERA驱动和CE服务端应用程序,而PC机上客户端的程序则在VISUALC60上进行开发。第三章功能与指标我们通过USB摄像头采集到的视频经过JPEG压缩后的数字视频可以直接在以太网上传输。在PXA270S处理器的控制下,可以把USB摄像头采集到的视频通过以太网发送到远端的PC上,以达到视频对话的效果,其图像清晰,速度快捷。其中PXA270S平台上的视频采集速率为15帧,而PC机所接收到的视频采集速率也能在10帧以上且较为稳定。第四章实现原理USB系统由USB主机,一个或多个USB设备和物理总线组成。主机上又分两层较高的包含USB设备驱动程序的软件层和主机控制器硬件层。主机的用于控制对USB设备的双向数据传输。物理总线是一组USB电缆用来将控制器和外围设备连接起来。WINCE的USB系统软件由两层组成USB设备驱动程序层和底层的由WINCE实现的USB函数层。较低的USB函数层本身又由两部分组成较高的通用串行总线驱动程序(USBD)模块和较低的主控制器驱动程序(HCD)模块。HCD提供了抽象的主机控制器,且对主机控制器所见到的USB系统的数据传输进行了抽象。USBD提供一个抽象的设备,且对USBD客户和USB设备功能部件之间的数据传输进行抽象。USB设备驱动程序使用USBD接口函数与外围设备进行通信第五章硬件框图第六章软件流程61WINCE下的USBCAMERA驱动611WINDOWSCE编写的USBCAMERA驱动程序USB设备驱动程序必须输出的函数有USBDEVIECATTACH/初始化USB设备USBINSTALLDRIVER/创建一个驱动程序加载所需的注册表信息USBUNINSTALLDRIVER/释放驱动程序所占用的资源,删除注册表等。612WINCE下的USBCAMERA驱动实现首先是具体的注册表信息,在PLATFORMREG中添加以下注册项即可。HKEY_LOCAL_MACHINEDRIVERSUSBLOADCLIENTS1133_2245DEFAULTDEFAULTVIDEO_CLASS“DLL”“WEBCAMDLL”HKEY_LOCAL_MACHINEDRIVERSUSBCLIENTDRIVERSVIDEO_CLASS“PREFIX”“CAM”“DLL”“WEBCAMDLL”另外还要在USBCODECPP中针对USB摄像头的PID、VID对以下定义做修改DEFINEVID_LOGITECH1133DEFINEPID_QUICKCAMPRO50002245DEFINEPID_MIKESQUICKCAM2226在WEBCAMH文件中针对以下几项定义要做修改DEFINEDRIVER_NAMETEXT“WEBCAMDLL“DEFINEDEVICE_PREFIXTEXT“CAM“DEFINECLASS_NAME_SZTEXT“VIDEO_CLASS“DEFINECLIENT_REGKEY_SZTEXT“DRIVERSUSBCLIENTDRIVERSVIDEO_CLASS“外设插入时,首先调用USBDEVICEATTACH函数。接下来调用ACTIVATEDEVICE它用来分配,填写设备内容。USBDEVICEATTACH最后要完成的工作是在此函数内调用USBD模块的REGISTERNOTIFICATIONROUTINE函数登记注册DEVICENOTIFY函数,用于相应的善后工作。自此,系统完成外设加载。62服务端视频采集在USBCAMERA驱动成功加载之后,要对其输出的视频图像压缩数据进行分析、还原,以完成视频图像的采集过程。这些功能由我们所设计的TCP服务端来实现,具体的函数定义以及程序代码分别在文件CAMERACODEH和文件CAMERACODECPP中。在文件CAMERACODEH添加如下函数INITCAMERA/打开摄像头;SHUTDOWNCAMERA/关闭摄像头;GETVIDEOFORMATS/获取视频图像的格式GETSTILLFORMATS/获取静态图片的格式WRITEJPEG/将图像保存为一个JPEG格式的文件。63视频图像传输系统在此我们要应用到WINDOWSSOCKETS规范和TCP编程。WINDOWSSOCKETS规范的本意在于提供给应用程序开发者一套简单的API。它规范定义并记录了如何使用API与INTERNET协议族连接。实现实际的通讯工作。他们之间的工作关系如图3示。而且WINCE平台还提供了SOCKET的API函数。图3SOCKET通信具体应用流程图TCP(TRANSPORTCONTROLPROTOCOL)表示传输控制协议。他的服务端和客户端的流程图如图4示。图4TCP服务端和客户端的流程图下面将具体介绍分析WINCE上TCP服务端和PC机上TCP客户端程序。64PC机上TCP客户端程序在客户端应用程序设计中,首先要创建CTCPCLIENT_CE类,完成对TCP封装,然后调用该类与TCP服务端建立连接,并进行数据传输,最后再断开与TCP服务端的连接。下面介绍程序的具体实现过程。641CTCPCLIENT_CE类概述及应用CTCPCLIENT_CE类主要用于封装WINCESOCKETAPI函数,其使用流程如图。图5CTCPCLIENT_CE类的使用流程其具体应用及代码如下1建立私有函数PRIVATECTCPCLIENT_CEM_TCPCLIENT用于引用CTCPCLIENT_CE类。2设计IDD_PCCAMCTRL_FORM对话框。为CMAINFRAME类添加三个私有静态函数ONDISCONNECT、ONREAD、ONERROR,分别用于处理客户端连接断开事件、从客户端读取数据事件和客户端SOCKET错误事件。3为“连接”和“断开”按钮添加单击事件代码。4加入以下函数VOIDSENDCMDLONGCMD向终端发送命令信息VOIDSENDCMDDATALONGCMD,CSTRINGDATA发送命令数据VOIDPROCESSWEBCMDLONGDATASIZE处理网络命令642TCP客户端程序其他类简单概述首先要说的是CPCCAMCTRLVIEW,具体定义如下PUBLICVOIDDISPLAYFRAMEPBYTEPDATA,DWORDDWSIZE显示接收到的图片另外CPICTURECTRL类和CPICTURE类,其中分别用到了重载函数LOADIMAGE和LOAD,同时也都包含了函数GETIMAGESIZE,这些函数共同完成了对显示图片大小的控制。CPICTURECTRL类还包含了函数ONPAINT,用以绘制图片。至此TCP客户端程序就编写完毕了。TCP客户端程序具体流程图如图6。图6TCP客户端程序工作流程图643WINCE上TCP服务端程序TCP服务端将会创建CTCPSERVER_CE和CTCPCUSTOM_CE两个类CTCPSERVER_CE监听客户端的连接CTCPCUSTOM_CE与客户端进行通讯CTCPSERVER_CE类和CTCPCUSTOM_CE类的关系如图7。图7CTCPSERVER_CE类和CTCPCUSTOM_CE类的关系图644CTCPCUSTOM_CE类说明CTCPCUSTOM_CE类的实现步骤。1通过EVC主菜单创建一个新的类CTCPCUSTOM_CE,并且绑定WINSOCKLIB库。2CTCPCUSTOM_CE类具体代码如下PUBLICCTCPSERVER_CEM_PTCPSERVER_CE/引用TCP服务端监听SOCKETBOOLOPENCTCPSERVER_CEPTCPSERVER/打开SOCKET,创建通讯线程CSTRINGM_REMOTEHOST/远程主机IP地址DWORDM_REMOTEPORT/远程主机端口号SOCKETM_SOCKET/通讯SOCKET句柄BOOLSENDCTCPSERVER_CEPTCPSERVER/向客户端发送数据BOOLCLOSE/关闭SOCKET,关闭线程,释放SOCKET资源PRIVATEHANDLEM_TCPTHREADHANDLE/通讯线程句柄SOCKETTHREADFUNC/监听与客户端连接的SOCKET通讯的事件HANDLEM_EXITTHREADEVENT/通讯线程退出事件句柄645CTCPSERVER_CE类说明CTCPSERVER_CE类主要职责是负责监听并接受客户端连接。1在TCPSERVER_CEH文件中添加如下代码用于定义几种函数类型。INCLUDECLASSCTCPCUSTOM_CECLASSCTCPSERVER_CE/定义客户端连接建立事件TYPEDEFVOIDCALLBACKONCLIENTCONNECTCWND,CTCPCUSTOM_CE/定义客户端SOCKET关闭事件TYPEDEFVOIDCALLBACKONCLIENTCLOSECWND,CTCPCUSTOM_CE/定义客户端当有数据接收事件TYPEDEFVOIDCALLBACKONCLIENTREADCWND,CTCPCUSTOM_CE,N_PACKET/定义客户端SOCKET错误事件TYPEDEFVOIDCALLBACKONCLIENTERRORCWND,CTCPCUSTOM_CE,INTNERRORCODE/定义服务器端SOCKET错误事件TYPEDEFVOIDCALLBACKONSERVERERRORCWND,CTCPSERVER_CE,INTNERRORCODE2为CTCPSERVER_CE类添加一些公有成员变量,私有成员变量及成员函数,这些变量的定义如下PUBLICINTM_LOCALPORT/设置服务端口号CWNDM_POWNERWND/父窗口句柄OPEN/打开TCP服务ONCLIENTCONNECTONCLIENTCONNECT/客户端连接建立事件,回调函数ONCLIENTCLOSEONCLIENTCLOSE/客户端连接断开事件,回调函数ONCLIENTREADONCLIENTREAD/客户端接收数据事件,回调函数ONCLIENTERRORONCLIENTERROR/客户端发生错误事件,回调函数ONSERVERERRORONSERVERERROR/服务器端发生错误事件,回调函数CLOSE/关闭TCP服务PRIVATESOCKETM_SERVERSOCKET/TCP服务监听SOCKETHANDLEM_SERVERTHREADHANDLE/通讯线程句柄HANDLEM_EXITTHREADEVENT/通讯线程退出事件句柄注意,这里有一个非常重要的属性M_LOCALPORT,该属性表示TCP服务端的端口号。用户可以选择1024之后的端口。3在CTCPSERVER_CE类的构造函数和析构函数里分别创建线程退出事件和关闭线程退出事件。4在TCPSERVER_CECPP文件中添加全局静态变量M_LISTCLIENTSOCKET,用于储存客户端连接的SOCKET列表,并引用TCPCUSTOM_CEH文件和AFXTEMPLH文件。5为CTCPSERVER_CE类添加一个私有静态线程函数SOCKETTHREADFUNC。该线程用于监听服务器套接字事件。SOCKETTHREADFUNC函数定义如下PRIVATESTATICDWORDSOCKETTHREADFUNCPVOIDLPARAM/线程处理函数646TCP服务端程序1为CMAINFRAME类添加私有成员变量M_TCPSERVER,用它来实现TCP服务同时设置网络信息。具体定义如下PUBLICVOIDSENDCMDLONGCMD/向PC发送命令信息BOOLSENDCMDDATALONGCMD,CONSTCHARPBUF,INTLEN/向PC发送命令数据VOIDPROCESSWEBCMDVOID/处理网络命令N_PACKETP_RCV/包缓冲区N_PACKETP_SEND/包缓冲区PRIVATECTCPSERVER_CEM_TCPSERVER/定义CTCPSERVER_CE对象2接下来设计IDD_LGCAMCECTRL_FORM对话框,然后为CMAINFRAME类添加5个私有静态函数。ONCLIENTCONNECT/处理客户端连接建立事件ONCLIENTCLOSE/处理客户端SOCKET关闭事件ONCLIENTREAD/处理服务端收到的来自客户端的数据事件ONCLIENTERROR/处理客户端SOCKET错误事件ONSERVERERROR/处理服务端SOCKET错误事件。3为“启用网络”、“关闭网络”添加单击事件代码。单击“启用网络”按钮后,TCP服务器就开始监听,等待客户端的连接;单击“关闭网络”按钮后,将关闭处于监听状态的TCP服务器。图8服务端工作流程图第七章系统测试71测试方案首先在CE端加载摄像头驱动,再运行服务端“启用网络”,然后运行客户端“连接”,建立与服务端的连接,最后在服务端选择“开始预览”,这样服务端与客户端就能同时显示图像了。72测试设备PXA270S实验箱、USB罗技快看高手5000摄像头、PC机和以太网交换机。73测试结果客户端运行过程截图如图9所示,服务端运行过程截图如图10所示。图9客户端截图图10服务端截图第八章实现功能结合USBCAMERA罗技快看高手5000(LOGITECHQUICKCAM5000)的驱动开发,简单介绍了USB设备的驱动设计框架。同时,设计了基于WINCE操作系统和PXA270S平台的视频传输系统。此系统能够将USBCAMERA采集的视频数据压缩,然后使用实验平台与PC机之间的网络,通过TCP进行视频数据传输。其中,P

温馨提示

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

评论

0/150

提交评论