




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
重庆科技学院重庆科技学院 嵌入式嵌入式 Linux 应用与开发技术应用与开发技术 大作业大作业 学 院 电气与信息工程学院 专业班级 计科 09 02 学生姓名 付作辉 学 号 2009441644 设计地点 单位 I315 设计题目 自习室视频监控系统 完成日期 2012 年 6 月 25 日 指导教师评语 成绩 五级记分制 指导教师 签字 I 摘要摘要 视频监控是安全防范系统的重要组成部分 它是一种防范能力 较强的综合系统 视频监控以其直观 准确 及时和信息内容丰富 而广泛应用于许多场合 本作品是基于 C S 模式的网络摄像头 TQ2440 开发板作为服务器采集图像 利用多进程技术 通过 TCP 协 议向客户端发送数据 客户端使用 QTCreator 设计图形界面用来显 示获取的连续图像 关键词 关键词 视频监控视频监控 多进程多进程 TCPTCP 协议协议 QTCreatorQTCreator II 目录目录 1 1 设计内容及要求设计内容及要求 1 2 2 需求分析需求分析 1 3 3 概要设计概要设计 2 3 1 客户端设计 2 3 2 服务端设计 2 4 4 详细设计详细设计 3 4 1 搭建 QTCREATOR开发平台 3 4 1 1 Qt4 和 QTCreator 的获取 3 4 1 2 编译 PC 版本的 Qt4 3 4 1 3 编译 ARM 版本的 QT4 3 4 1 4 QtCreator 的使用 3 4 2 安装 GCC 交叉编译环境 4 4 3 SOCKET编程 4 4 3 1 socket 基础知识 4 4 4 多进程编程 6 5 5 程序测试程序测试 9 5 1 客户端测试 9 5 2 服务端测试 9 总结总结 10 致谢致谢 11 参考文献参考文献 12 1 1 设计内容及要求 系统基于客户 服务器结构 ARM2410S 嵌入式开发板作为摄像头服务端 PC 机为视频监控客户端 客户端在 Linux 下开发 客户端和服务端之间通过 Socket 通信 1 视频图像采集结构 根据 Video4Linux 标准视频接口进行编程时所采 用的结构体 包括视频采集部分的 4 个关键结构体 video capability video picture video mbuf video mmap 2 键盘驱动 file operations 数据结构 缩减基本键盘驱动功能建立的 键盘驱动结构体 如 open close read 等等 3 自习室结构 可提示用户在键盘输入需要监控的自习室号码 系统检 查号码合法性 并确定是否打开视频监控 该功能也可在 QT 界面上用下拉框选 择 4 Socket 网络传输结构 选用的网络传输协议 客户机 IP 客户机进 程端口号 服务器端 IP 和服务器端进程端口号 5 缓冲区结构 图像缓冲区为 JPEG 文件 电梯缓冲区为电梯数据结构 体 Socket 网络传输缓冲区是长度为 1000 个字节的字符数组 6 QT 界面显示结构 在监控中心接收服务器端传送过来的图像和自习室 信息后利用 QT 界面进行显示 QT 界面上分成两个区 左半区采用 Qframe 控 件用于视频图像的显示 右半区采用为多个自习室号码按钮 下拉框也可 便 于选择 2 需求分析 本系统实现远程网络视频监控 可根据 IP 访问同一局域网内的摄像头服务 器 获取实时视频 或者使用 VPN 技术远程访问摄像头 服务器端架设在 tq2440 开发板上 主要用来采集图像 利用多进程技术 通过 TCP 协议向客户 端发送数据 摄像头是天嵌配套的一款 130 万像素的 coms 摄像头 客户端使用 QTCreator 进行开发 设计了 IP 和端口输入框 可输入远程服务器的 IP 和端 口号 以及图像显示框 服务器通过套接字监听是否有客户端请求 并调用摄 像头驱动模块获取实时视频发送给客户端 客户端可以稳定的接收服务器发送 来的数据 并提供友好的界面 2 3 概要设计 3 13 1 客户端设计客户端设计 首先在 linux 平台搭建 QTCreator 开发环境 建立工程 设计用户界面 利用 socket 技术编写代码 设计界面如下图 图 3 1 3 23 2 服务端设计服务端设计 编写服务端程序需要安装交叉编译器 crosstools 4 4 3 softfloat 将 程序用 arm linux gcc 编译成适合 TQ2440 开发板下运行的程序 可以修改文件 系统中的 etc init d rc 文件 使 server 程序开机启动 在程序后面加上 then pathmunge sbin pathmunge usr sbin pathmunge usr local sbin pathmunge opt EmbedSky opt EmbedSky 4 3 3 bin fi 添加完后 source etc profile 使他生效 4 在控制台执行以下命令 cp opt EmbedSky opt EmbedSky 4 3 3 bin usr local arm 总结 第 3 步和第 4 步这两步少了一步就会出现以下错误 arm none linux gnueabi gcc error trying to exec cc1 execvp No such file or directory 经验 若在解压时 用下面的命令 tar xjvf EABI 4 3 3 EmbedSky 20100610 tar bz2 C 就可以省去第四步 C 的意识是解压到指定目录 这里指根目录 由于该压缩包内部的目录结 构本身包含 usr local arm 所以解压到根目录实际上就是把文件解压到 usr local arm 文件夹下 4 34 3 socketsocket 编程编程 4 3 14 3 1 socketsocket 基础知识基础知识 struct sockaddr unsigned short sa family char sa data 14 上面是通用的 socket 地址 具体到 Internet socket 用下面的结构 二者可 以进行类型转换 struct sockaddr in short int sin family 5 unsigned short int sin port struct in addr sin addr unsigned char sin zero 8 struct in addr 就是 32 位 IP 地址 struct in addr union struct u char s b1 s b2 s b3 s b4 S un b struct u short s w1 s w2 S un w u long S addr S un define s addr S un S addr inet addr 是将一个点分制的 IP 地址 如 192 168 0 1 转换为上述结构中需 要的 32 位 IP 地址 0 xC0A80001 填值的时候使用 sockaddr in 结构 而作为 函数 如 socket listen bind 等 的参数传入的时候转换成 sockaddr 结构 就行了 毕竟都是 16 个字符长 通常的用法是 int sockfd struct sockaddr in my addr sockfd socket AF INET SOCK STREAM 0 my addr sin family AF INET my addr sin port htons MYPORT my addr sin addr s addr inet addr 192 168 0 1 bzero bind sockfd struct sockaddr 可以用 C 做个不太准确的假设 sockaddr 是 base class sockaddr in 等是 derived class 如此一来 bind connect sendto recvfrom 等函数就可以使用 base class 来处理多种不同的 derived class 了 但是实际上 这是没有继承关系数据结构 C 语言写的 fd set 所以需要强制 造型来转换数据类型 正因为如此 在 sendto 的时候需要给出 len 长度 因为 不同的 sockaddr xx 实现长度并不相同 6 4 44 4 多进程编程多进程编程 4 4 14 4 1 理解理解 LinuxLinux 下进程的结构下进程的结构 Linux 下一个进程在内存里有三部份的数据 就是 数据段 堆栈段 和 代码段 其实学过汇编语言的人一定知道 一般的 CPU 象 I386 都有上 述三种段寄存器 以方便操作系统的运行 代码段 顾名 思义 就是存放了程序代码的数据 假如机器中有数个进程运行相同的一个程 序 那么它们就可以使用同一个代码段 堆栈段存放的就是子程序的返回地址 子程序的参数以及程序的局部变量 而数据段则存放程序的全局变量 常数以及动态数据分配的数据空间 比如用 malloc 之类的函数取得的空间 这其中有许多细节问题 系统如果同时运行 数个相同的程序 它们之间就不能使用同一个堆栈段和数据段 4 4 24 4 2 如何使用如何使用 forkfork 在 Linux 下产生新的进程的系统调用就是 fork 函数 这个函数名是英文中 分叉 的意思 为什么取这个名字呢 因为一个进程在运行中 如果使用了 fork 就产生了另一个进程 于是进程就 分叉 了 所以这个名字取得很形 象 下面就看看如何具体使用 fork 这段程序演示了使用 fork 的基本框架 void main int i if fork 0 子进程程序 for i 1 i 1000 i printf This is child process n else 父进程程序 for i 1 i fgets command 256 stdin command strlen command 1 0 if fork 0 子进程执行此命令 execlp command command 如果 exec 函数返回 表明没有正常执行命令 打印错误信息 perror command exit errorno else 父进程 等待子进程结束 并打印子进程的返回值 wait printf child process return d n rtn 此程序从终端读入命令并执行之 执行完成后 父进程继续等待从终端读入命 令 其使用方法是类似的 5 程序测试 9 5 15 1 客户端测试客户端测试 在 IP 和端口分别输入服务器 IP 172 19 72 8 port 6666 点击连接按钮 然后在点击监听按钮 效果图如下 图 5 1 5 25 2 服务端测试服务端测试 服务端显示了客户端 IP 端口号等 如下图 图 5 2 10 总结 通过本次大作业 使我对 linux 应用程序开发有了更加深入的了解 以及 开发过程中的耐心和毅力 在经历无数次修改 编译 烧写 失败后仍能保存 冷静的心态 坚持不懈 不断总结发现规律 锻炼了自己解决问题的能力 掌 握了很多专业知识 如 QTCreator 编程 socket 编程技术等 11 致谢致谢 感谢学校给我们提供了一个很好的学习平台 也感谢学校为我们所做的一 切 另外很感谢各位老师对我们的教育和指导 你们的辛勤教育才有了万千学 子的成才 我们不会辜负你对我们的期望 也感激我的父母 他们为我的默默 付出和奉献 他们为了我而所做的一切 我相信我会成功的 我相信在不久的 将来 我们将会成为国家的栋梁 签名 付作辉 2012 6 26 12 参
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年咨询工程师真题及参考答案详解(培优A卷)
- 2024-2025学年度注册公用设备工程师预测复习含答案详解(培优B卷)
- 2024年土木工程建筑施工考前冲刺练习题附参考答案详解【综合题】
- 2025年苏州工业职业技术学院单招《物理》考试彩蛋押题附参考答案详解(综合卷)
- 2024-2025学年中医助理医师自我提分评估及答案详解【全优】
- 传染病患者排泄护理与感染防控要点
- 2023年度高升专通关考试题库【名校卷】附答案详解
- 2025年城市公共自行车智能化改造项目的智能化管理方案报告
- 中班科学领域教案《奇妙的磁铁》反思
- 上海市2025-2026学年八年级语文上学期第一次月考复习试卷(含答案)
- 国际地图语言学研究进展
- AIOT智能物联产业学院建设方案
- 闭合性颅脑损伤重型个案护理
- 紫金矿业员工工作手册
- 消费者市场与购买行为课件
- 民政信访业务培训课件
- 行政检查业务培训课件
- 个人独资企业章程样本
- 土石方价值评估报告
- 16-CNC绕线机设置培训资料
- 员工利益冲突管理制度
评论
0/150
提交评论