当前位置:首页 > 技术与方案 > 监控安防相关

智能综合监控基站方案设计(四)

(2012-09-01 19:29:21)

3.2 软件架构 

  整个软件采用嵌入式操作系统Linux作为基站功能实现上的主要载体。Linux是多任务操作系统,在软件整体划分上主要分五个线程,系统上电起动后五个线程并行工作。五个线程之间的关系如图3所示。 

3

  这五个线程分别是: 

  视频传输线程,负责将压缩好的数据通过网络传给主控制中心。 

  网口接收线程,负责接收和处理主控中心通过网口下发的指令和数据。 

  传感器检测线程,负责检测前端传感器的状态,并对相应的数据进行处理。 

  门禁检测线程,负责对门禁系统进行控制。
GSM短信检测线程,负责对短信命令的接收,并根据命令作相应的处理。
 

  下面以网口接收线程为例,详细介绍此线程模块的设计,网络接收线程流程如图4所示。

3

 

  网络接收线程起始处于接收状态,当它接收到信息时,根据所定义的信息标识来确定接收到的是数据还是命令,如果判定是命令,则根据命令的定义来区分命令的种类并作相应的处理,在网络接收线程的设计中使用了select函数作为接收和处理函数。select()机制中提供fd_set的数据结构,实际上是一个long类型的数组,每一个数组元素都能与一个打开的文件句柄(不管是Socket句柄,还是其他文件或者命名管道或者设备句柄)建立联系。建立联系的工作由程序员完成,当调用Select()时,由内核根据I/O状态修改fd_set的内容,由此来通知执行了select()进程的哪一个Socket或文件可读。具体解释为:

3

 

 

  ndfs:select需要监视的文件句柄数,视进程中打开的文件数而定,一般设为需要监视件中的最大文件号加1。

readfds:select()监视的可读文件句柄集合。 

  writefds:select()监视的可写文件句柄集合。 

  exceptfds:select()监视的异常文件句柄集合。 

  timeout:本次select()的超时结束时间。(见/usr/sys/select.h,可精确至百万分之一秒。) 

  当readfds或writefds中映象的文件可读或可写或超时,本次select()就结束返回。程序员利用一组系统提供的宏在select()结束时便可判断哪一文件可读或可写。对Socket编程特别有用的就是readfds。 

  几个相关的宏解释如下: 

  FD_ZERO(fd_set*fdset):清空fdset与所有文件句柄的联系。 

  FD_SET(int fd,fd_set*fdset):建立文件句柄fd与fdset的联系。 

  FD_CLR(int fd,fd_set*fdset):清除文件句柄fd与fdset的联系。 

  FD_ISSET(int fd,fdset*fdset):检查fdset联系的文件句柄fd是否可读写,>0表示可读写。(关于fd_set及相关宏的定义见/usr/include/sys/types.h) 

  这样,socket只需在有数据读的时间才读入,大致如下: 

5

 

  所以一个FD_ISSET(sockfd)就相当于通知了sockfd可读。 

  结语 

  基于AT91RM9200的智能综合监控基站具有性能稳定可靠,集成化智能化程度高,无需专人看管,可扩展性好,资源利用率高等明显优点。因此,开发基于AT91RM9200的智能综合监控基站具有较高的技术先进性和广阔的市场前景,是一件非常有意义的事情。

 

更多
关闭窗口 打印 
网站首页    -    联系我们    -   收藏本站    -    网站地图                                                               客户服务热线:0571-85023000
本网站所有网页信息已申请知识产权和著作权保护,版权归四海光纤公司所有,未经授权禁止任何人复制或镜像,违者必究。
公司主营:杭州光纤光缆视频会议系统,是专业的通信网络工程、视频会议系统建设专家

中华人民共和国备案号:浙ICP备10018243号