24小时论文定制热线

热门毕设:土木工程工程造价桥梁工程计算机javaasp机械机械手夹具单片机工厂供电采矿工程
您当前的位置:论文定制 > 代做毕业设计 >
快速导航
毕业论文定制
关于我们
我们是一家专业提供高质量代做毕业设计的网站。2002年成立至今为众多客户提供大量毕业设计、论文定制等服务,赢得众多客户好评,因为专注,所以专业。写作老师大部分由全国211/958等高校的博士及硕士生设计,执笔,目前已为5000余位客户解决了论文写作的难题。 秉承以用户为中心,为用户创造价值的理念,我站拥有无缝对接的售后服务体系,代做毕业设计完成后有专业的老师进行一对一修改与完善,对有答辩需求的同学进行一对一的辅导,为你顺利毕业保驾护航
代做毕业设计
常见问题

LED和视频服务器远程控制系统设计(Linux Web程序)

添加时间:2018/07/10 来源:未知 作者:admin
随着网络技术的快速发展, Web技术[1]广泛应用在控制领域, 客户端只需连接互联网获取相应的权限, 就可查询现场的有关信息, 并对服务器进行相应的控制操作, 从而大大方便了系统的管理和维护。目前, 国内已经进行了很多嵌入式远程控制监控系统的研究。
以下为本篇论文正文:

  摘要:为了实现远程视频的多角度监控以及LED的远程控制, 设计了基于Linux Web服务器的远程控制系统。该系统以Cortex-A8处理器为核心组成硬件平台, 在硬件平台上开发视频服务器进行图像采集、传输;将JavaScript与XML相结合, 在HTML中使用JavaScript解析XML文件、调用控制服务器状态的Shell程序, 完成对视频服务器的控制;同时利用CGI技术, 完成客户端和服务器之间的动态数据交互。测试结果表明, 用户登录账户密码无误, 可以成功进入监控系统实时观看远程的多角度监控, 同时可以控制LED和视频服务器的运行状态, 整个系统运行稳定。

  关键词:远程控制; 视频监控; JavaScript; CGI; XML;

  Abstract:A long-distance control system based on Linux-Web server is designed for achieving remote control of LED and multi-angle monitoring.The hardware platform is composed by Cortex-A8 processor as the core in the system, and in which a video server is developed for capturing image and transmission.Integrated JavaScript with XML, XML file is parsed with JavaScript and Shell program which controls the server status in HTML is called to accomplish the control of video server.Simultaneously, the dynamic data interaction between the client-side and the server is completed by CGI technology.Test results show that the monitoring system will be logged in successfully with the correct account and password by users to inspect remote multi-angle monitoring in real time and control the operating status of LED and video server in a stable system.

  Keyword:remote monitoring; video surveillance; JavaScript; CGI; XML;

  随着网络技术的快速发展, Web技术[1]广泛应用在控制领域, 客户端只需连接互联网获取相应的权限, 就可查询现场的有关信息, 并对服务器进行相应的控制操作, 从而大大方便了系统的管理和维护。目前, 国内已经进行了很多嵌入式远程控制监控系统的研究。曹淑名[2]提出一种基于3G网络的远程移动视频监控系统, 该系统采用H.264标准对采集的视频进行压缩编码, 利用分发服务器解决多个客户同时请求连接带来的竞争压力, 并提出一种网络自适应的策略改善网络传输状况。但3G网络本身存在不稳定性, 而且容易受到外界因素影响;由于网络带宽的限制, 3G只适合传输图片, 4G才适合用来传输视频, 但目前国内4G的布局还未完善, 要建立稳定的视频传输系统, 仅仅依赖3G网络传输不是一个好的选择。郭翠然[3]实现了一种远程控制系统, 采用在嵌入式硬件平台上移植Web服务器GoAhead, 利用CGI编程技术和RS485总线技术, 完成对现场温度与日光灯的远程控制, 但未涉及视频监控。姜超[4]实现了一种基于Web的视频监控系统, 其采用在嵌入式终端上移植Web服务器的方案, 视频编码采用压缩编码器FFmpeg, 视频传输采用基于视频数据压缩库JRTPLIB编程, 但系统实现功能比较单一。

  为了使控制系统达到稳定、功能多样、交互性强的目标, 设计了一种基于Linux Web服务器的远程控制系统, 可对LED和视频服务器进行远程控制, 同时可在客户端观看实时多角度的视频监控画面。

  1、系统整体方案

  本系统主要由3个部分组成:1) 嵌入式前端视频监控设备、LED灯;2) 嵌入式Web服务器、视频服务器;3) 网络客户端。视频监控设备采用USB摄像头, 其输出的数据经过DSP压缩为MJPEG格式并传输到视频服务器的缓冲区, 通过网络接口发送到网络客户端。在HTML中使用JavaScript[5]做前端的开发, JS脚本解析XML文件, 利用Shell[6]开启视频服务器, 通过执行CGI程序, 实现远程控制LED。系统结构如图1所示。

图1 系统结构
图1 系统结构

  2、嵌入式硬件设计

  嵌入式系统硬件结构如图2所示。采用CortexA8架构, 1GHz主频的SAMSUNG S5PV210主处理器, 其内存为512 MB DDR2, 带LCD控制器、NAND控制器, 其中Flash为1GB SLC NandFlash, 支持4路USB2.0 HOST、1路SPI。在此硬件平台上移植版本号为Linux-2.6.35的Linux内核, 该内核支持USB摄像头, 支持UVC驱动。

  制作电路板, 搭建嵌入式的软件平台, 通过在Windows上安装虚拟机VMware搭载运行Ubunt9.10系统, 安装交叉编译工具、移植U-Boot并制作根文件系统。

图2 嵌入式系统硬件结构
图2 嵌入式系统硬件结构

  3、系统软件的实现

  3.1、USB摄像头驱动实现

  系统的视频采集模块由摄像头模组OV7740组成硬件电路完成图像数据的采集, 输出YUV格式数据, 经过DSP芯片iP2970压缩后, 通过USB接口传输到Cortex-A8存储器中处理。该USB接口驱动与内核自带的摄像头驱动程序不符, 需要修改内核的UVC驱动程序。

  在UVC_driver.c中的static struct usb_device_id uvc_ids[]数组结构添加如下代码[7-8]:

在此位置添加代码

  在uvc_video.c程序的static int uvc_video_decode_start函数中, 将Static_u8fid改为static类型, 删除fid=data[1]&UVC_STREAM_FID, 并在此位置添加如下代码:

在此位置添加代码

  在uvc_video.c程序的static void uvc_video_decode_data函数中, 代码“buf→buf.bytesused+=nbytes;”的后面添加如下代码段:

添加如下代码

  使用修改的uvc_video.c、UVC_driver.c生成UImage_new, 将这个镜像文件作为硬件平台启动的内核。

  3.2、Boa服务器在Linux平台的实现

  嵌入式Web服务器[1]的种类很多, 但在Linux平台应用的主要有HTTPD、THTTPD和Boa。其中Boa是一个非常小巧的服务器, 而且稳定安全, 所以选择Boa作为嵌入式Web服务器进行移植。在Cortex-A8平台上移植Boa的步骤为:

  1) 通过网络下载boa-0.94.13.tar.gz, 将其拷贝至虚拟机的/work/project/boa目录下并解压。

  2) 生成Makefile。进入boa-0.94.13/src目录, 执行./configure, 然后执行make命令生成Makefile。

  3) 根据本机Linux系统的交叉编译工具修改Makefile。进入Makefile, 将原来的交叉编译工具CC=gcc和CPP=gcc-E分别改为CC=arm-linuxgcc和CPP=arm-linux-gcc-E, 并执行make命令生成可执行程序boa。

  4) 配置服务器。将解压压缩包后得到的boa.conf拷贝到Cortex-A8启动文件系统/etc/boa目录下;进入boa.conf中, 修改User nobody User0, Group nogroup为Group0;设置html文件目录:DocumentRoot/var/www;设置默认首页:DirectoryIndex index.html;设置cgi脚本目录:ScriptAlias/cgi-bin/var/www/cgi-bin。

  5) 建立相关文件夹。启动嵌入式硬件平台, 在var文件夹下建立www文件, 进入www文件, 并在此目录下存放html文件, 建立cgi-bin文件夹, 存放cgi脚本。

  按照步骤移植完成Boa后, 在/var/www文件下运行可执行应用程序boa, 在Firefox浏览器中输入网址进行测试, 结果可以成功显示index.html网页。

  3.3、视频服务器的实现

  在嵌入式视频服务器的开发中, 图像的采集通过调用Linux内核提供的V4L2[7-8]应用程序编程接口函数实现。定义buffer指针存储图像数据, 创建线程cam_thread采集图像, 图像采集线程程序流程如图3所示。

图3 图像采集线程程序流程
图3 图像采集线程程序流程

  uvcgrab函数首先从视频缓冲区队列中取出已经存有的一帧数据[9], 判断视频缓冲区中数据格式。若为V4L2_PIX_FMT_MJPEG, 则复制到tmpbuffer;若为V4L2_PIX_FMT_YUYV, 说明摄像头输出的不是MJPEG格式, 则复制到framebuffer, 调用格式转换函数compress_yuyv_to_jpeg, 在这个函数中利用libjpeg库对图像进行压缩处理, 将YUV格式图像转换成RGB格式再转换成JPEG格式。最后, 投放一个空的视频缓冲区到视频缓冲区队列中。图像采集完成后执行以下程序:

执行以下程序

  发出一个数据更新的信号, 通知发送通道提取数据, 并对全局缓冲区进行解锁。

  在图像的传输部分设计一个并发服务器响应客户端连接请求。并发服务器程序流程如图4所示。

图4 并发服务器程序流程
图4 并发服务器程序流程

  对server_thread编程实现了并发服务器[9-10], 当客户端连接时, 创建客户端线程函数client_thread负责解析客户端的请求, 然后执行send_stream函数发送图片, 而服务器则继续监听其他客户端的请求。

  3.4、CGI在Web控制中的实现

  CGI是通用的接口标准, 在这种接口标准下开发程序, 在Boa服务器上运行, 使浏览器和服务器可以动态交互。CGI程序的触发由浏览器完成[11], 其基本原理为:当客户端向嵌入式Web服务器发送一个包含表单HTTP请求, Web服务器提取表单信息, 运行指定的CGI程序, CGI程序读取请求信息, 获取传来的参数, 并执行相关处理操作;CGI程序执行结束后会生成HTML文档, Web服务器将HTML文档送回给用户端的Firefox浏览器, Firefox浏览器解析HTML文件并显示。CGI结构如图5所示。

图5 CGI结构
图5 CGI结构

  CGI提交数据的方式有2种:1) “get”方式提交;2) “post”方式提交[11-12]。本系统所用的均为“get”方式提交, 可从服务器上获得数据且不改变服务器数据。在CGI输入程序中获取提交数据的函数为getenv;getenv ("REQUEST_METHOD") 用于判断提交方法是get还是post;getenv ("QUERY_STRING") 用来获取数据;在CGI程序中首先编写的是输出的HTTP响应的头标志, 其语句为printf ("Content-type:text/html\n\n") , 然后再调用其他程序。本系统使用C语言作工具编写CGI程序, 调用LED的应用程序, 在HTML中使用JavaScript脚本语言调用CGI程序, 并将参数传递给CGI程序, 从而实现LED的远程控制。LED控制程序的调用层级关系如图6所示。

图6 LED控制程序的调用层级关系
图6 LED控制程序的调用层级关系

  3.5、LED驱动程序设计

  嵌入式Linux软件系统可分为应用程序、库、操作系统 (内核) 、驱动程序。以LED的控制亮灯为例, Linux软件系统的层次关系[7]如图7所示。

图7 Linux软件系统的层次关系
图7 Linux软件系统的层次关系

  应用程序直接使用库函数open打开LED的设备文件;库根据open函数传入的参数执行“swi”指令, 进入内核;内核根据传入参数找到对应驱动程序, 返回句柄给库, 然后返回给应用程序;应用程序根据得到的句柄调用库函数write或ioctl发出控制命令;库根据write或ioctl传入参数进入内核并调用驱动程序相关函数, 从而进行LED灯的控制。LED驱动的主要函数如图8所示。

图8 LED驱动的主要函数
图8 LED驱动的主要函数

  应用层调用open函数对应执行的函数为static int leds_open (struct inode*inode, struct file*filp) , 在这个函数中设置S5PV210的GPIO引脚功能为输出;应用层调用的ioctl函数对应执行的函数为static int leds_ioctl (struct inode*inode, struct file*filp, unsigned int cmd, unsigned long arg) , 应用程序通过cmd参数调用其他函数设置输出引脚电平的高低, 达到控制LED的要求。

  3.6、软件测试实现

  Cortex-A8硬件系统上电, 安装USB摄像头, U-Boot引导启动Linux内核, 进入后台, 在var/www/文件下运行可执行应用程序boa, 在PC机的Firefox浏览器中进入管理系统, 输入账户和密码后进入监控系统。多角度视频监控测试结果如图9所示。

图9 多角度视频监控
图9 多角度视频监控

  视频输出大小为640×480, 视频输出流畅, 无卡顿现象。测试远程控制视频服务器与LED系统, 点击“关闭”或者“开启”按钮可以几乎无延时地关闭或开启LED灯, 同时也可以控制是否开启视频监控。远程控制LED测试结果如图10所示。

图10 远程控制
图10 远程控制

  4、结束语

  本系统在嵌入式Web服务器的基础上, 进行动态HTML的开发, 运用一套基础技术完成设计目标, 运用JavaScript、DOM、CSS、XML (eXtensible Markup Language) 、CGI等, 在Cortex-A8单板的底层操作系统中结合Shell脚本, 开发了Web控制监控系统。经过测试表明, 本系统可以实现远程多角度视频监控以及对监控终端的控制, 系统稳定, 图像画面清晰, 延时约为200ms, 交互性良好。下一步的研究将重点实现对湿度、温度等数据实时显示及报警功能, 同时增加数据库, 对信息进行保存。

  参考文献
  [1]梁银会, 杨家仕, 王天宝.基于ARM-LINUX的嵌入式Web服务器设计[J].成都信息工程学院报, 2008, 23 (5) :481-484.
  [2]曹淑明.电信“天翼景象”监控平台的研究与实现[D].杭州:浙江理工大学, 2012:2-60.
  [3]郭翠然.基于Linux的嵌入式Web视频服务器的实现与应用[D].苏州:苏州大学, 2012:1-55.
  [4]姜超.基于ARM-Linux的嵌入式Web视频监控系统研究与实现[D].西安:长安大学, 2012:2-57.
  [5]POWELL T, SCHNEIDER F.JavaScript完全手册[M].北京:电子工业出版社, 2002:120-790.
  [6]张根宝, 胡杰.Linux集群环境下监控Web服务器的Shell脚本设计[J].化工自动化及仪表, 2010, 37 (10) :99-101.
  [7]韦东山.嵌入式Linux应用开发完全手册[M].北京:人民邮电出版社, 2008:240-360.
  [8]张辉.基于V4L2的嵌入式视频驱动程序开发与实现[D].合肥:安徽大学, 2010:37-60.
  [9]陈书益, 黄永慧.开源视频服务器软件MJPG-Stremer的研究和应用[J].电子设计工程, 2012, 20 (5) :172-176.
  [10]于艳萍, 朱晓智, 王中训.基于ARM9和USB摄像头的网络视频采集系统设计[J].现代电子术, 2011, 34 (24) :49-51.
  [11]李勇.CGI在嵌入式Web服务器中的应用和实现[J].微计算机信息, 2008 (9) :110-111.
  [12]何克右.用CGI方式进行网页交互[J].交通与计算机, 2000, 18 (1) :22-24.

相关内容
相关标签:Linux毕业设计
好优论文定制中心主要为您提供代做毕业设计及各专业毕业论文写作辅导服务。 网站地图
所有论文、资料均源于网上的共享资源以及一些期刊杂志,所有论文仅免费供网友间相互学习交流之用,请特别注意勿做其他非法用途。
如有侵犯您的版权或其他有损您利益的行为,请联系指出,论文定制中心会立即进行改正或删除有关内容!