微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 基于ARM的智能综合监控基站方案设计

基于ARM的智能综合监控基站方案设计

时间:11-01 来源:单片机及嵌入式系统应用 /作者:石崇林 喻晓峰 点击:

3 基站软件组成及设计

  基站的软件设计有几个版本。这里以加入视频监控,从以太网传输数据的版本为例来加以说明。

  3.1 软件主要功能

  软件的主要功能如下:

  ①实时检测和处理前端传感器发送的数据,并且通过判断来确定前端的被监控场所的情况是否正常。若出现紧急情况,则自动启动灭火、警报等装置工作,并且将有关的情况和数据通过网络和短信的形式发送给主控中心的管理者。

  ②能够实时接收网络发来的命令,在对命令的类型进行自动处理和判断后实现相应的功能(例如对传感器的查询和短信模块的控制);同时主控中心能够通过网络接收前端传感器的有关数据。

  ③能够通过视频编码模块将视频数据进行压缩处理,并且将压缩好的视频数据通过网络实时地发送到监控中心。

  ④用户能够通过短信的方式查询智能控制终端前方的传感器状态,并且可以控制门禁系统。当有紧急情况出现时,智能控制终端能够通过短信的方式进行报警。

  5)基站能够自动识别和处理门禁系统的数据,自动判断用户的权限,将用户的进出进行记录,并且将最新记录传给主控中心作记录的备份。

  3.2 软件架构

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

  这五个线程分别是:

视频传输线程,负责将压缩好的数据通过网络传给主控制中心。
网口接收线程,负责接收和处理主控中心通过网口下发的指令和数据。
传感器检测线程,负责检测前端传感器的状态,并对相应的数据进行处理。
门禁检测线程,负责对门禁系统进行控制。
GSM短信检测线程,负责对短信命令的接收,并根据命令作相应的处理。
  下面以网口接收线程为例,详细介绍此线程模块的设计,网络接收线程流程如图4所示。

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

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只需在有数据读的时间才读入,大致如下:

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

  结语

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


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top