hdmi能2560 1440.59流量能使几天

博客访问: 2451261
博文数量: 824
博客积分: 13014
博客等级: 上将
技术积分: 10244
注册时间:
认证徽章:
APP发帖 享双倍积分
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: LINUX
【摘 要】为了降低视频监控系统的成本,提高系统布防的简易性,使其具有较好的稳定性和实时性,利用QT 设计了一款基于嵌入式视频服务器的监控系统。系统采用三星公司的S3C2440 微处理器芯片为核心的ARM9 开发板为硬件平台,在其上搭建LINUX 系统的网络视频服务器,用QT 为用户图形界面开发了客户端软件,并运用了多线程技术。实验结果表明,该系统很好的达到了预期目标,可以稳定实时地显示一路或多路视频监控图像,降低了采用模拟摄像头的很大一部分成本,布防简单。
【关键词】视频监控;微控制器;操作系统;多线程
& &&近年来,随着科技的不断发展,特别是计算机、网络以及图像处理的飞速发展,计算机处理能力和存储能力的迅速提高,视频监控技术也有了长足的发展。同时随着经济的发展,公安、交通、金融、仓储、楼宇等领域对视频监控的需求越来越大,要求越来越高。而随着嵌入式处理器性能的不断提高,嵌入式操作系统的不断完善以及网络、通信、多媒体技术的快速发展,基于嵌入式技术的网络视频监控系统必然以其低廉的价格和便携性成为未来视频监控的一个发展方向。
1 系统总体设计
1.1 视频监控系统组成
& &&网络视频监控系统主要包括远程视频采集和本地视频显示2 大部分。远程采集端通过采集到数据后通过网络传递给本地客户端,进行实时的显示和分析报警。
1.2 远程视频采集模块
& &&系统采用以S3C2440 微处理器芯片为核心的ARM9 开发板为硬件平台[1],操作系统选用LINUX 操作系统[2],采集终端使用的是市面上出售的USB 摄像头。 在视频采集端,我们需要搭建一个简易通用性好的视频网络服务器,这里我们使用mipg-streamer 软件包并对它做一些修改使之适合我们的上位机的需求。因为它是LINUX 下一个开源的支持V4L2 芯片的视频服务软件,可以很方便的修改和编译。我们的视频服务软件使用TCP 协议发送图像数据。
1.2.1 嵌入式linux 交叉开发环境的建立
& &&交叉开发环境是嵌入式应用软件开发时一个显著特点,由宿主机和目标机实现。这里我们的宿主机使用的是2.6 内核的fedora 13 发行版的linux 系统,目标机开发板中的内核是2.6.31 内核本,之间通过串口相连。使用minicom 做串口控制终端,对开发板进行控制。电脑主机编译的程序要在开发板上运行,还必须使用交叉编译工具,这里使用的是ARM-LINUX-GCC 4.3.1 版本。
1.2.2 网络视频服务器的编译和移植
& &&系统以现有开源的基于LINUX[3-5]的视频服务软件mjpg-streamer 为基础,这里我们做了一些必要的修改。因为原版的服务器只能采集一个摄像头的图像,我们把源程序的图像采集部分做了一个循环,使之可以采集多个摄像头的图像,并在相应的网络发送部分做了修改,来达到我们多路视频监控的要求。最后进行交叉编译移植到开发板上,就可以使用了。
& &&将生成的可执行文件uvc-streamer 通过NFS 挂载的方式传到开发板上,然后在minicom 运行./ uvc-streamer –h 可以看到选项 来进行服务器端的一些基本参数的设置,这样网络视频服务器就搭建好了。
1.3 基于QT 的视频显示界面的设计
& &&Qt 是一个支持多操作系统平台的应用程序开发框架[6],它的开发语言是C++ 。Qt 与其他图形用户接口(GUI,Graphical User Interface) 最大的不同就在于它提供了“信号与插槽”机制。这一机制提供了对象间的通信机制,它易于理解和使用,并完全被Qt 图形设计器所支持。它完全可以取代原始的回调和消息映射机制;程序员通过建立一个函数(称作一个插槽),然后调用connect()函数把这个插槽和一个信号连接起来,这样就完成了一个事件和响应代码的连接。信号与插槽机制并不要求类之间互相知道细节,这样就可以相对容易的开发出代码可高重用的类。一个对象的信号可以被多个不同的插槽连接,而多个信号也可以被连接到相同的插槽。
& &&系统的QT 视频显示界面主要分2 个部分:①显示视频图像的用户操作界面,②通过TCP 传输的来自远端视频数据的接收。这里我们采用了多线程技术,主线程在主窗口绘图,实时显示监控视频;次线程建立TCP 连接,接收来自服务器的数据,当接收够一帧的数据后发射信号给主线程,让主线程来绘图。整个客户端软件的设计流程如图1 所示。
1.3.1 视频图像显示界面的设计
& &&首先用QT Creator 创建文件,利用QT 设计师画好整体的主界面,首先建立一个主窗口,然后在这个主窗口上放置一个行编辑框用来输入服务器IP,一个行编辑器用来输入端口号,一个开始按钮,一个关闭按钮,并用画笔在当前窗口的适当位置画了一根黑线,来标示视频显示的区域。
& &QT 的二维图形引擎是基于QPainter 类的,QPainter 既可以绘制几何形状,也可以绘制像素映射、图形和文字。QPainter 可以画在绘画设备上,如QPixmap、Qwidght、QImage上。在主窗口里,我们定义了2 个QPainter,一个用来画标示视频图像的显示范围,一个用来在QImage 上绘制视频图像。通过调用QPainter 类的公有函数begin( ), drawImage( ),&end( )函数来实现绘图事件。主线程通过接受子线程的senddata 信号来绘制图形以及调用updata( )函数来重绘。如图2 所示。
& &&这里我们实现的是四路视频监控画面的显示设计,主要是把当前界面划分成4 个区域,并在不同的部分绘制接受到的来自不同摄像头的图像。通过接受的服务器端的数据辨别是第几个设备的图像就在相应的部分绘图。并且每一个按键都做了一个槽函数来进行可以全屏切换。由于条件限制,这里只有2 个摄像头做的演示。如图3 所示。
1.3.2 数据接收线程的设计
& &&为了提高绘图事件的效率,满足实时显示画面的要求,我们另外开辟了一个线程专门用来接收图像数据提供给主线程绘图。这里使用了QT 自有的线程类QThread。因为服务器使用的是TCP 协议来传输图像数据的,我们这里也要使用TCP 协议来建立网络连接和数据传输。QT 自有的QTcpSocket 类可以用来实现TCP 客户端。当调用QThread类的start()函数时,会自动运行子线程的run()函数,我们的tcp 连接和数据的接受都在这个run()函数里执行。在这个run()函数里,我们首先初始化并建立一个TCP 连接,当连接出错时,返回错误并提示。然后通过QTcpSocket 类的bytesAvailable()函数来判断是否有数据可读,若可读则通过该函数的返回值来判断这一帧有多少数据需要读。在读数据之前我们利用QTcpSocket 类的waitForReadyRead()函数做了一个开关函数,限定在3 ms 内若不可读就断开连接,防止在读之前连接断开造成接受数据的误读。然后读这个建立起来的套接字传输过来的一帧数据并存到已经定义好的缓冲区。然后发送senddata 信号告诉主线程数据已经读好,开始绘图。然后编译链接运行,可以看到主界面已经显示出来。这里我们输入服务器的IP 和端口号,点击开始按钮,可以看到来自摄像头的监控画面已经显示出来了。
& &&通过实验,我们的系统很好的实现了多路视频的实时监控。我们的监控系统可以很方便的携带和布防,成本也相比传统的监控系统要低廉很多,在未来的安防领域肯定会有很大的发展,成为未来监控系统的主流。但是我们的监控系统实现的功能还很单一,并不能实现运动目标的检测和报警,不能达到智能监控的目的,这还需要做进一步的开发和设计。最终做到多路视频的智能监控,自动实现运动目标的检测和报警。
[1] 王黎明,陈双桥,阎晓玲,等. ARM9 嵌入式系统开发与实践[M].北京:北京航空航天大学出版社,.
[2] 李新峰,何广生,赵秀文. 基于ARM9 的嵌入式Linux 开发技术[M].北京:电子工业出版社,.
[3] 杜华. Linux 编程技术详解[M].北京:人民邮电出版社,2007:322-379.
[4] 杨宗德,邓玉春. Linux 高级程序设计[M].北京:人民邮电出版社,.
[5] 罗鸿彦,薛质.Linux 下缓冲区溢出的分析与利用[J].信息安全与通信保密,3-135.
[6] Jasmin Blanchette,Mark Summerfield.C++ GUI Qt4 编程[M].北京:电子工业出版社,, 214-232.
[7] 成洁,卢紫毅.Linux 窗口程序设计-Qt4 精彩实例分析[M].北京:清华大学出版社,.
[8] 陈周国,王胜银,付国晴,等.基于Linux QT 技术的远程监控GUI设计[J].通信技术,):234-236.
阅读(6623) | 评论(3) | 转发(5) |
相关热门文章
给主人留下些什么吧!~~
代码可以发一份给我吗&我用这个项目入门的&@qqcom多谢
博主,我在arm上同时打开两个摄像头老出现错误,请问这个问题怎么解决啊
请登录后评论。君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于QT的嵌入式终端界面开发毕业设计
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口成为一名嵌入式Linux开发工程师需要学习哪些知识? - ARM技术论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
成为一名嵌入式Linux开发工程师需要学习哪些知识?
09:35:36  
12465&查看
& & 随着嵌入式行业的迅猛发展,嵌入式Linux凭借其系统发展的成熟度、市场应用的高份额也受到更多工程师朋友的青睐,越来越多的企业和研发机构都转向嵌入式Linux的开发和研究,这使得嵌入式Linux在新兴的嵌入式操作系统领域内也获得了飞速发展和广泛应用。面对如此火热的行业,如何才能成为嵌入式Linux开发工程师?成为一名合格的嵌入式Linux开发工程师需要学习哪些知识?
  一:C语言  嵌入式Linux工程师的学习需要具备一定的C语言基础,C语言是嵌入式领域最重要也是最主要的编程语言,通过大量编程实例重点理解C语言的基础编程以及高级编程知识。包括:基本数据类型、数组、指针、结构体、链表、文件操作、队列、栈等。
  二:Linux基础  Linux操作系统的概念、安装方法,详细了解Linux下的目录结构、基本命令、编辑器VI ,编译器GCC,调试器GDB和 Make 项目管理工具, Shell Makefile脚本编写等知识,嵌入式开发环境的搭建。
  三:Linux系统编程  重点学习标准I/O库,Linux多任务编程中的多进程和多线程,以及进程间通信(pipe、FIFO、消息队列、共享内存、signal、信号量等),同步与互斥对共享资源访问控制等重要知识,主要提升对Linux应用开发的理解和代码调试的能力。
  四:Linux网络编程  计算机网络在嵌入式Linux系统应用开发过程中使用非常广泛,通过Linux网络发展、TCP/IP协议、socket编程、TCP网络编程、UDP网络编程、Web编程开发等方面入手,全面了解Linux网络应用程序开发。重点学习网络编程相关API,熟练掌握TCP协议服务器的编程方法和并发服务器的实现,了解HTTP协议及其实现方法,熟悉UDP广播、多播的原理及编程方法,掌握混合C/S架构网络通信系统的设计,熟悉HTML,Javascript等Web编程技术及实现方法。
  五:数据结构与算法  数据结构及算法在嵌入式底层驱动、通信协议、及各种引擎开发中会得到大量应用,对其掌握的好坏直接影响程序的效率、简洁及健壮性。此阶段的学习要重点理解数据结构与算法的基础内容,包括顺序表、链表、队列、栈、树、图、哈希表、各种查找排序算法等应用及其C语言实现过程。
  六:C++ 、QT  C++是Linux应用开发主要语言之一,本阶段重点掌握面向对象编程的基本思想以及C++的重要内容。图形界面编程是嵌入式开发中非常重要的一个环节。由于QT具有跨平台、面向对象、丰富API、支持2D/3D渲染、支持XML、多国语等强大功能,在嵌入式领域的GUI开发中得到了广范的应用,在本阶段通过基于QT图形库的学习使学员可以熟练编写GUI程序,并移植QT应用程序到Cortex-A8平台。包括IDE使用、QT部件及布局管理器、信息与槽机制的应用、鼠标、键盘及绘图事件处理及文件处理的应用。
  七:Cortex A8 、Linux 平台开发  通过基于ARM Cortex-A8处理s5pv210了解芯片手册的基本阅读技巧,掌握s5pv210系统资源、时钟控制器、电源管理、异常中断控制器、nand flash控制器等模块,为底层平台搭建做好准备。Linux平台包括内核裁减、内核移植、交叉编译、GNU工具使用、内核调试、Bootloader介绍、制作与原理分析、根文件系统制作以及向内核中添加自己的模块,并在s5pv210实验平台上运行自己制作的Linux系统,集成部署Linux系统整个流程。同时了解Android操作系统开发流程。Android系统是基于Linux平台的开源操作系统,该平台由操作系统、中间件、用户界面和应用软件组成,是首个为移动终端打造的真正开放和完整的移动软件,目前它的应用不再局限于移动终端,还包括数据电视、机顶盒、PDA等消费类电子产品。
  八:驱动开发  驱动程序设计是嵌入式Linux开发工作中重要的一部分,也是比较困难的一部分。本阶段的学习要熟悉Linux的内核机制、驱动程序与用户级应用程序的接口,掌握系统对设备的并发操作。熟悉所开发硬件的工作原理,具备ARM硬件接口的基础知识,熟悉ARM Cortex-A8处理器s5pv210各资源、掌握Linux设备驱动原理框架,熟悉工程中常见Linux高级字符设备、块设备、网络设备、USB设备等驱动开发,在工作中能独立胜任底层驱动开发。
  以上就是列出的关于一名合格嵌入式Linux开发工程师所必学的理论知识,其实,作为一个嵌入式开发人员,专业知识和项目经验同样重要,所以在我们的理论学习中也要有一定的项目实践,锻炼自己的项目开发能力。尤其是对于一些刚毕业的应届大学生们实际项目操作经验更是严重缺乏锻炼,这时,选择一个好的嵌入式培训机构至关重要,学习完整的linux开发课程,最重要的是很多的阶段性的大项目来自用人单位的真实开发案例,这样才能真正掌握企业需要的一部份嵌入式系统开发知识。&&
资料来源:天嵌科技论坛
22:59:15  
{:20:}{:20:}
Powered by基于Qt的嵌入式终端程序应用本科毕业设计――记事本与电子相册_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于Qt的嵌入式终端程序应用本科毕业设计――记事本与电子相册
上传于||文档简介
&&开​发​平​台​为​A​R​M21,​软​硬​件​齐​全​。
阅读已结束,如果下载本文需要使用5下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩43页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢当前位置: >
> 嵌入式设计及Linux驱动开发指南:基于ARM9处理器(第2版) PDF扫描版[17MB]
嵌入式设计及Linux驱动开发指南:基于ARM9处理器(第2版) PDF扫描版[17MB]
嵌入式设计及Linux驱动开发指南:基于A
书籍大小:17.83MB
软件语言:简体中文
书籍类型:
书籍授权:免费软件
更新时间:
书籍类别:Linux_unix
购买链接:&&
应用平台:
网友评分:
内容介绍热点排行下载地址相关内容
Shell是用户与内核进行交互操作的一种接口,是Linux最重要的软件之一。目前最流行的Shell称为bash Shell,bash Shell脚本编程以其简洁、高效而著称,多年来成为Linux程序员linux命令行和shell脚本编程宝典,简要介绍shell一些知识和技巧本书内容全面,实例丰富,操作性强,语言通俗易懂,适合广大Linux开发人员、嵌入式工程师参考使用《UNIX网络编程》(第1卷)(套接口API第3版)第1版和第2版由已故UNIX网络专家W. Richard Stevens博士独自编写。《UNIX网络编程》(第1卷)(套接口API第3版)是3版,由世界著名网书是被誉为UNIX编程“圣经”的Advanced Programming in the UNIX Environment一书的更新版。在本书第1版出版后的十几年中,UNIX行业已经有了巨大的变化,特别是影响UNIX编《鸟哥的Linux私房菜》是一本非常畅销的Linux入门书籍,由台湾的VBird大侠一字一字地编写出来的。最初是在他的网站上发布,后来就出版成书了。让 X-Force 十分敬佩的是,VB本书循序渐进,内容全面,适合linux初学者使用,同时对于有一定基础的linux用户,也有很好的参考价值&linux 常用命令全集 chm版,linux中最常用到的就是命令《深入理解linux内核》第三版将引领你畅游内核中用到的最主要数据结构、算法和编程技巧。如果你的确想了解计算机内部的实现机理,那么作者透过现象探寻本质,提供了颇有价一本经典的Linux基础入门教程 鸟哥的Linux私房菜:基础学习篇(第三版) pdf,学习Linux入门的推荐书籍。含有丰富全面的Linux指令集锦。而且本书的清淅度相当高,阅读轻松。
嵌入式设计及Linux驱动开发指南:基于ARM9处理器(第2版) PDF扫描版[17MB]
CopyRight &
JB51.Net , All Rights Reserved}

我要回帖

更多关于 2560x1440 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信