zoukankan      html  css  js  c++  java
  • 阶段4-独挡一面项目-基于视频压缩的实时监控系统Sprint1-基于Epoll架构的采集端程序框架设计第2课-基于Epoll的采集端程序框架设计

    回顾之前的整个程序架构

    把epoll机制应用到这个架构上去

    下面主要去分析我们的系统中有没有需要等待的事件,先看看采集子系统

    在采集子系统当中,摄像头有数据,摄像头采集到图像数据可以作为一个等待事件

    再看看输出子系统,关于socket有没有什么可以等待呢:socket可读和socket可写可以作为等待事件。

    那么存在这些等待事件,就可以用epoll来设计这些等待事件了

    下面去编写代码

    需要进行模型实例化或者叫做模型代码化

    把上面四个模块编写成代码之前,需要对每一个模块创建一个结构,来表明对应的模块。

    定义主程序模型:

     它的模型一般不把它放到.c文件里面,一般单独建一个头文件来定义,

    然后打开main.h,把主程序代码化,这个主程序叫做server

    也把其它子系统的结构定义好,如下

    每一个结构就对应相应的模块,这节课主要关注主程序的结构。

    模型代码化如下

     

    有了这个模型,就可以去设计主程序了,那么主程序应该怎么设计呢,其流程如何呢,主程序采用epoll的流程来处理。

    main.c代码

    然后编写一个Makefile代码

    BIN =wcamsrv  表示这个程序最终产生的可执行文件的名字

    INC = -Iinclude/是一个编译选项,把当前目录下的include目录作为头文件寻找的标准目录

    SRC = $(wildcard *.c)找出所有的.c文件,或者列出所有的.c文件,使用wildcard把以.c结尾的文件列成一个列表

    OBJS = (patsubst %.c,%.o,$(SRC))列出所有的.c对应的.o文件,patsubst它的作用是把SRC里面的所有.c文件换成.o文件,所以OBJS就是一个.o文件的列表

    cc=arm-linux-gcc

    CFLAGS = $(INC) -g   ;CFLAGS它为编译选项里面有两项

    规则

    $(BIN):$(OBJS)

        $(CC) -o $@ $^

    clean:

         rm $(OBJS) $(BIN)

  • 相关阅读:
    JQuery帮助文档整理
    将table信息导出到excel
    jquery 选择器
    程序不小心出现死锁的解决方法
    兼容IE firefox 的全英文自动换行
    第三周2
    Jquery操作Select集锦
    Silverlight初学之:如果调用Silverlight项目中不同的控件
    【转载】很好的解决了asp.net页面ViewState过大的问题
    js得到url的各个部分【转】
  • 原文地址:https://www.cnblogs.com/gary-guo/p/6035205.html
Copyright © 2011-2022 走看看