EDN China > 设计实例 > 嵌入式系统 > 开发工具 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

(多图) 基于ARM的智能综合监控基站方案设计

来源:单片机及嵌入式系统应用/作者:石崇林 喻晓峰?? 2007年11月30日 ?? 收藏0

  2.3视频压缩模块

  视频压缩模块原本和基站是集成在一起的。考虑到实际应用时,某些场合没有以太网,只能通过电话网络和监控中心连接,在这种情况下视频传输是没有意义的,所以把视频压缩模块独立出来,能够应用并且需要应用视频监控的场合,就将视频压缩模块挂载到基站的USB主口上。

  为了缩短开发周期,视频压缩模块采用美国WIS公司的支持多格式的MPEG24视频编码芯片GO7007SB。GO7007SB采用多种WIS专利技术,可方便地实现多种格式、多种标准的音/视频压缩及报警、动态检测、OSD(On Screen Display)、内嵌web服务器等功能。通过适当的配置,视频流的输出格式可以是MPEG一1、MPEG一2、MPEG一4、H.263、MJPEG格式。GO7007SB可以无须胶合地与CMOS/CCD图像感光芯片相连,同时,提供了EEPROM、SDRAM、USB等控制通道以及HPI等丰富的外围接口。

  GO7007SB只支持数字视频接口,而模拟摄像头成本较低,可以采用Philips公司的视频解码芯片SAA711A将模拟摄像头传过来的模拟视频数据转换成数字视频数据流送给GO7007SB进行压缩编码。

  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的智能综合监控基站具有较高的技术先进性和广阔的市场前景,是一件非常有意义的事情。


上一页12下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

ARM? 监控基站? AT91RM9200?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈