基于嵌入式系统的网络视频传输系统设计报告北方工业大学二队Word文档下载推荐.docx
- 文档编号:19916030
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:15
- 大小:140.78KB
基于嵌入式系统的网络视频传输系统设计报告北方工业大学二队Word文档下载推荐.docx
《基于嵌入式系统的网络视频传输系统设计报告北方工业大学二队Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于嵌入式系统的网络视频传输系统设计报告北方工业大学二队Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
目录
第1章绪论6
第2章系统总体设计6
2.1系统组成………………………………………………………………………6
2.2设备介绍…………………………………………………………………………6
2.3驱动程序简介……………………………………………………………………6
第3章功能与指标7
第4章实现原理7
第5章硬件框图………………………………………………………………7
第6章软件流程8
6.1WinCE下的USBcamera驱动……………………………………………………8
6.1.1windowsCE编写的USBcamera驱动程序………………………………8
6.1.2USBcamera驱动的实现…………………………………………………8
6.2服务端视频采集……………………………………………………………………9
6.3视频图像传输………………………………………………………………………10
6.4PC机上TCP客户端程序……………………………………………………………11
6.4.1CTCPClient_CE类概述及应用……………………………………………11
6.4.2TCP客户端程序其他类简单概述…………………………………………13
6.4.3WinCE上TCP服务端程序…………………………………………………14
6.4.4CTCPCustom_CE类说明……………………………………………………14
6.4.5CTCPServer_CE类说明……………………………………………………15
6.4.6TCP服务端程序……………………………………………………………16
第7章测试方案及结果18
7.1系统测试方案…..…………………………………………………...…………18
7.2测试设备……..………………………………………………………………..18
7.3测试结果……………………………………………………………………..18
第8章实现功能19
第9章特色20
参考文献
附录错误!
未定义书签。
第1章绪论
随着信息科学技术的高速发展,网络技术和数字视频技术都已经日趋成熟;
同样的,网络视频监控系统已被广泛应用在很多场所。
这里将研究视频采集与传输功能在网络视频电话中的具体应用。
所使用的实验平台是PXA270-S实验箱。
选用的USB摄像头也是目前常用的,其输出的视频为经过JPEG压缩后的数字视频,因此无需再进行视频压缩。
加上以太网不会受到网络带宽限制,所以采集到的数字视频可以直接通过以太网传输到PC机上,减少了硬件设计的复杂度。
第二章系统总体设计
2.1系统组成
系统主要包括两个部分:
一个是USB视频图像的数据采集;
另外一个就是视频图像传输系统。
系统硬件架构如图1。
摄像头PXA270—S网线PC机
图1
2.2设备介绍
PXA270—S开发系统,基于Intel公司最新的XScale架构PXA270-S,ARM系列处理器,最高主频可达624MHz,加入了WirelessMMX技术,提升了多媒体处理能力;
同时PXA270还加入了IntelSpeedStep动态电源管理技术,在保证CPU性能的情况下,最大限度地降低移动设备功耗。
USB摄像头采用罗技快看高手5000(LogitechQuickCam5000),它采用高品质CMOS图像传感器,130万像素,最大分辨率640*480,高速USB2.0传输接口。
另外,还有以太网转换器和客户端的PC机。
2.3软件介绍
软件系统由系统引导加载程序Bboot.nb0载入嵌入式WinCE内核、USBCamera驱动和CE端应用程序等组成。
在PXA270—SBSP基础上,根据具体需要,使用PlatformBuilder定制将在PXA270—S实验平台上使用的WinCE内核。
另外使用eMbeddedVisualC++开发在WinCE平台下的USBCamera驱动和CE服务端应用程序,而PC机上客户端的程序则在VisualC++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接口函数与外围设备进行通信
第五章硬件框图
第六章软件流程
6.1WinCE下的USBcamera驱动
6.1.1WindowsCE编写的USBcamera驱动程序
USB设备驱动程序必须输出的函数有:
USBDeviecAttach()//初始化USB设备
USBInstallDriver()//创建一个驱动程序加载所需的注册表信息
USBUninstallDriver()//释放驱动程序所占用的资源,删除注册表等。
6.1.2WinCE下的USBcamera驱动实现
首先是具体的注册表信息,在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”
“Dll”=“webcam.DLL”
另外还要在USBCode.cpp中针对USB摄像头的PID、VID对以下定义做修改:
#defineVID_LOGITECH1133
#definePID_QUICKCAMPRO50002245
#definePID_MIKESQUICKCAM2226
在WebCam.h文件中针对以下几项定义要做修改:
#defineDRIVER_NAMETEXT("
Webcam.dll"
)
#defineDEVICE_PREFIXTEXT("
CAM"
#defineCLASS_NAME_SZTEXT("
Video_Class"
#defineCLIENT_REGKEY_SZTEXT("
Drivers\\USB\\ClientDrivers\\Video_Class"
外设插入时,首先调用USBDeviceAttach()函数。
接下来调用ActivateDevice()它用来分配,填写设备内容。
USBDeviceAttach()最后要完成的工作是在此函数内调用USBD模块的RegisterNotificationRoutine函数登记注册DeviceNotify函数,用于相应的善后工作。
自此,系统完成外设加载。
6.2服务端视频采集
在USBCamera驱动成功加载之后,要对其输出的视频图像压缩数据进行分析、还原,以完成视频图像的采集过程。
这些功能由我们所设计的TCP服务端来实现,具体的函数定义以及程序代码分别在文件CameraCode.h和文件CameraCode.cpp中。
在文件CameraCode.h添加如下函数:
InitCamera()//打开摄像头;
ShutdownCamera()//关闭摄像头;
GetVideoFormats//获取视频图像的格式
GetStillFormats//获取静态图片的格式
WriteJPEG()//将图像保存为一个JPEG格式的文件。
6.3视频图像传输系统
在此我们要应用到WindowsSockets规范和TCP编程。
WindowsSockets规范的本意在于提供给应用程序开发者一套简单的API。
它规范定义并记录了如何使用API与Internet协议族连接。
实现实际的通讯工作。
他们之间的工作关系如图3示。
而且WINCE平台还提供
了Socket的API函数。
图3socket通信具体应用流程图
TCP(TransportControlProtocol)表示传输控制协议。
他的服务端和客户端的流程图如图4示。
图4TCP服务端和客户端的流程图
下面将具体介绍分析WinCE上TCP服务端和PC机上TCP客户端程序。
6.4PC机上TCP客户端程序
在客户端应用程序设计中,首先要创建CTCPClient_CE类,完成对TCP封装,然后调用该类与TCP服务端建立连接,并进行数据传输,最后再断开与TCP服务端的连接。
下面介绍程序的具体实现过程。
6.4.1CTCPClient_CE类概述及应用
CTCPClient_CE类主要用于封装WinCEsocketAPI函数,其使用流程如图。
图5CTCPClient_CE类的使用流程
其具体应用及代码如下:
1)建立私有函数
private:
CTCPClient_CEm_tcpClient;
\\用于引用CTCPClient_CE类。
2)设计IDD_PCCAMCTRL_FORM对话框。
为CMainFrame类添加三个私有静态函数OnDisConnect、OnRead、OnError,分别用于处理客户端连接断开事件、从客户端读取数据事件和客户端socket错误事件。
3)为“连接”和“断开”按钮添加单击事件代码。
4)加入以下函数:
voidSendCMD(longcmd);
\\向终端发送命令信息
voidSendCMDData(longcmd,CStringdata);
\\发送命令数据
voidProcessWebCmd(longdatasize);
\\处理网络命令
6.4.2TCP客户端程序其他类简单概述
首先要说的是CPCCAMCTRLView,具体定义如下:
public:
voidDisplayFrame(PBYTEpData,DWORDdwSize);
\\显示接收到的图片
另外CPictureCtrl类和CPicture类,其中分别用到了重载函数LoadImage和Load,同时也都包含了函数GetImageSize,这些函数共同完成了对显示图片大小的控制。
CPictureCtrl类还包含了函数OnPaint,用以绘制图片。
至此TCP客户端程序就编写完毕了。
TCP客户端程序具体流程图如图6。
图6TCP客户端程序工作流程图
6.4.3WinCE上TCP服务端程序
TCP服务端将会创建CTCPServer_CE和CTCPCustom_CE两个类:
CTCPServer_CE\\监听客户端的连接
CTCPCustom_CE\\与客户端进行通讯
CTCPServer_CE类和CTCPCustom_CE类的关系如图7。
图7CTCPServer_CE类和CTCPCustom_CE类的关系图
6.4.4CTCPCustom_CE类说明
CTCPCustom_CE类的实现步骤。
1)通过EVC主菜单创建一个新的类CTCPCustom_CE,并且绑定winsock.lib库。
2)CTCPCustom_CE类具体代码如下:
CTCPServer_CE*m_pTCPServer_CE;
//引用TCP服务端监听Socket
boolOpen(CTCPServer_CE*pTCPServer);
//打开socket,创建通讯线程
CStringm_RemoteHost;
//远程主机IP地址
DWORDm_RemotePort;
//远程主机端口号
SOCKETm_socket;
//通讯Socket句柄
boolSend(CTCPServer_CE*pTCPServer);
//向客户端发送数据
boolClose();
//关闭socket,关闭线程,释放Socket资源
HANDLEm_tcpThreadHandle;
//通讯线程句柄
SocketThreadFunc;
//监听与客户端连接的socket通讯的事件
HANDLEm_exitThreadEvent;
//通讯线程退出事件句柄
6.4.5CTCPServer_CE类说明
CTCPServer_CE类主要职责是负责监听并接受客户端连接。
1)在TCPServer_CE.h文件中添加如下代码用于定义几种函数类型。
#include<
winsock.h>
classCTCPCustom_CE;
classCTCPServer_CE;
//定义客户端连接建立事件
typedefvoid(CALLBACK*ONCLIENTCONNECT)(CWnd*,CTCPCustom_CE*);
//定义客户端SOCKET关闭事件
typedefvoid(CALLBACK*ONCLIENTCLOSE)(CWnd*,CTCPCustom_CE*);
//定义客户端当有数据接收事件
typedefvoid(CALLBACK*ONCLIENTREAD)(CWnd*,CTCPCustom_CE*,N_Packet*);
//定义客户端Socket错误事件
typedefvoid(CALLBACK*ONCLIENTERROR)(CWnd*,CTCPCustom_CE*,intnErrorCode);
//定义服务器端Socket错误事件
typedefvoid(CALLBACK*ONSERVERERROR)(CWnd*,CTCPServer_CE*,intnErrorCode);
2)为CTCPServer_CE类添加一些公有成员变量,私有成员变量及成员函数,这些变量的定义如下:
intm_LocalPort;
//设置服务端口号
CWnd*m_pOwnerWnd;
//父窗口句柄
Open()//打开TCP服务
ONCLIENTCONNECTOnClientConnect;
//客户端连接建立事件,回调函数
ONCLIENTCLOSEOnClientClose;
//客户端连接断开事件,回调函数
ONCLIENTREADOnClientRead;
//客户端接收数据事件,回调函数
ONCLIENTERROROnClientError;
//客户端发生错误事件,回调函数
ONSERVERERROROnServerError;
//服务器端发生错误事件,回调函数
Close()//关闭TCP服务
SOCKETm_ServerSocket;
//TCP服务监听socket
HANDLEm_serverThreadHandle;
//通讯线程句柄
HANDLEm_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函数定义如下:
staticDWORDSocketThreadFunc(PVOIDlparam);
//线程处理函数
6.4.6TCP服务端程序
1)为CMainFrame类添加私有成员变量m_tcpServer,用它来实现TCP服务同时设置网络信息。
具体定义如下:
//向PC发送命令信息
boolSendCMDData(longcmd,constchar*pbuf,intlen);
//向PC发送命令数据
voidProcessWebCmd(void);
//处理网络命令
N_PacketP_RCV;
//包缓冲区
N_PacketP_SEND;
CTCPServer_CEm_tcpServer;
//定义CTCPServer_CE对象
2)接下来设计IDD_LGCAMCECTRL_FORM对话框,然后为CMainFrame类添加5个私有静态函数。
OnClientConnect//处理客户端连接建立事件
OnClientClose//处理客户端Socket关闭事件
OnClientRead//处理服务端收到的来自客户端的数据事件
OnClientError//处理客户端Socket错误事件
OnServerError//处理服务端Socket错误事件。
3)为“启用网络”、“关闭网络”添加单击事件代码。
单击“启用网络”按钮后,TCP服务器就开始监听,等待客户端的连接;
单击“关闭网络”按钮后,将关闭处于监听状态的TCP服务器。
图8服务端工作流程图
第七章系统测试
7.1测试方案
首先在CE端加载摄像头驱动,再运行服务端“启用网络”,然后运行客户端“连接”,建立与服务端的连接,最后在服务端选择“开始预览”,这样服务端与客户端就能同时显示图像了。
7.2测试设备:
PXA270-S实验箱、USB罗技快看高手5000摄像头、PC机和以太网交换机。
7.3测试结果:
客户端运行过程截图如图9所示,服务端运行过程截图如图10所示。
图9客户端截图
图10服务端截图
第八章实现功能
结合USBCamera罗技快看高手5000(LogitechQuickCam5000)的驱动开发,简单介绍了USB设备的驱动设计框架。
同时,设计了基于WinCE操作系统和PXA270—S平台的视频传输系统。
此系统能够将USBCamera采
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 嵌入式 系统 网络 视频 传输 设计 报告 北方工业 大学