《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > 基于3G网络的汽车防盗报警系统视频监控的设计
基于3G网络的汽车防盗报警系统视频监控的设计
来源:微型机与应用2011年第9期
斯 衡1,刘明琨2,陈红岩2
(1.杭州职业技术学院 信息电子系,浙江 杭州 310018; 2.中国计量学院 机电工程学院,浙江
摘要: 基于3G网络的视频监控具有灵活性强、可靠性高,且不受时间、地点等条件约束的优势,具有广泛的研究和应用前景。在现有的汽车防盗报警系统的基础上,通过在Inter PXA270硬件平台上构建嵌入式Windows CE操作系统,实现汽车防盗报警系统的视频监控功能,并且详细阐述了摄像头的流接口设计和通信发送端的设计实现。
Abstract:
Key words :

摘  要: 基于3G网络视频监控具有灵活性强、可靠性高,且不受时间、地点等条件约束的优势,具有广泛的研究和应用前景。在现有的汽车防盗报警系统的基础上,通过在Inter PXA270硬件平台上构建嵌入式Windows CE操作系统,实现汽车防盗报警系统的视频监控功能,并且详细阐述了摄像头的流接口设计和通信发送端的设计实现。
关键词: Windows CE;3G网络;视频监控;汽车防盗报警

 随着第三代移动通信网络的成熟发展,基于移动通信网络的视频监控技术的应用越来越广泛。本文基于3G网络覆盖率高、可靠性强、传输速率快的优势,设计实现汽车防盗报警系统的可视监控。本设计在现有的电子式汽车防盗报警器的基础上,通过扩展通用接口,实现了对于车体原有报警系统的功能扩展,其总体结构框图如图1所示。本文着重阐述该系统视频监控部分的设计实现。

 本系统视频监控部分是在Inter PXA270为核心的硬件平台上,通过构建嵌入式Windows CE操作系统的软件开发实现上层应用。该设计以流接口方式开发摄像头驱动,并利用摄像头驱动提供的接口,实现嵌入式Windows CE下实时图像的数据采集,对原始图像进行MPEG-4格式的编码压缩,同时在Windows CE端利用SOCKET编程,实现监控数据的传输。
1 硬件平台的搭建
 现有的汽车防盗报警系统的结构如图1虚线框内所示,本文着重设计实现的是此系统的视频监控部分。视频监控部分的硬件包括三个部分,采集监控数据的摄像头、多媒体处理器和通信模块。硬件搭建结构图如图2所示。视频监控部分的硬件平台是以Inter XScale微体系结构的Inter PXA270处理芯片为核心,选用SIM5218模块作为3G通信模块,采用双端口RAM技术实现视频处理和3G通信模块的双CPU之间通信。其中,Inter PXA270芯片的主频为520 Hz,同时加入WirelssMMX技术,大大提高了多媒体处理能力。此外PXA270的Inter SpeedStep动态电源管理技术,在保证CPU性能的情况下降低了设备的功耗[1];西门子公司的3G通信模块SIM5218支持高达7.2 Mb/s的数据传输率,并且提供UART、USB2.0、GPIO和I2C等丰富的外围接口,降低了设计难度;本设计中摄像头选择了网眼2000,它采用OV511芯片为核心,具有COMS 35万像素的清晰度[2],并采用USB方式通信,可以采用流接口的方式实时采集监控数据。

2 软件功能设计实现
 基于Windows CE操作系统的软件架构包括两部分:利用Platform Builder定制Windows CE系统并开发USB摄像头驱动和数据发送端的开发,本文详细介绍USB摄像头驱动的设计和发送端的程序设计。系统的软件结构图如图3所示。

 

 

 Windows CE流接口驱动程序是具有定制接口的驱动程序,表现为在用户一级的动态链接库DLL,是一般类型的设备驱动程序。流接口驱动程序中用来实现一组固定的函数称为流接口函数,这些流接口函数使得应用程序可以通过文件系统访问这些驱动程序。流接口驱动程序几乎支持任何类型的可以连接到基于Windows CE.net的平台外部设备,其中包括USB设备。流接口驱动程序的主要任务是把外设的使用传递给应用程序,这是通过把设备表示为文件系统的一个特殊文件实现。应用程序通过文件系统的API函数调用流接口函数,然后流接口驱动程序调用本机驱动或者通过设备管理器与系统内核或外围打交道。
2.1 摄像头驱动程序的流接口函数的实现
 开发摄像头驱动程序涉及到一组标准的流接口驱动程序的函数,如CAM_Init()、CAM_Deinit()、CAM_Open()、CAM_Read()等,这些函数是接口驱动程序的DLL接口,其中CAM_Init()、CAM_Open()、CAM_Read()和CAM_IOControl()最为重要。下面对这些重要函数进行详细介绍。
 (1)CAM_Init()
 CAM_Init( )函数是通过设备管理器提供的ActiveDeviceEx()函数调用。在设备初始化时通过ActiveDeviceEx()将设备句柄信息写入Drivers\Active下面,当应用程序初始化时,注册表的地址将以Context参数形式传给CAM_Init(),利用RegOpenKeyEx()、RegQueryValueEx()等函数执行打开和读写注册表操作,等执行成功后返回USB设备的句柄信息等。驱动程序的部分源代码:
DWORD CAM_ Init (DWORD dwContext, LPCVOID 1pvBusContext)
{
        PDRVCONTEXT pDrv;
              int rc
      //打开注册表
    rc=RegOpenKeyEx(HKEYLOCAL_
MACHINE,(LPTSTR)dwContext,0,0,&hKey);
      //读取注册表数据
    rc=RegQueryValueEx (hKey,
TEXT("ClientInfo"),NULL,&dwType,
          (PBYTE)&pDrv,&dwLen);
  return (DWORD)pDrv;
  }
 (2)CAM_Open()
 在对设备进行读操作之前,首先要先通过执行CeratFile()来调用CAM_Open()打开设备,CAM_Open()所需的第一个参数是应用程序初始化时由CAM_Init()返回的设备句柄等信息,然后将设备关闭的事件设为无信号状态。
 下面是部分源码:
   DWORD CAM_Open(DWORD dwContext,
 DWORD dwAccess,DWORD dwShare)
  {
      PDRVCONTEXT pDrv=(PDRVCONTEXT)dwContext;
  EnterCriticalSection(&pDrv->csDCall);
  if (pDrv->nNum0pens)         //判断是否己经打开设备
  {
                                    //如果己经打开,则返回
      LeaveCriticalSection(&pDrv->csDCall);
      SetLastError(ERROR_ACCESS_ENIED);
  return 0;
  }
  pDrv->nNum0pens++;         //打开设备
  LeaveCriticalSection(&pDrv->csDCall);
      return (DWORD)pDrv;
  }
 程序中涉及的EnterCriticalSection()和LeaveCriticalSection()两个函数的作用是保证在临界区内所有被访问的资源不被其他线程访问,直到当前线程执行完临界区代码。EnterCriticalSection()和LeaveCriticalSection()分别表示为进入临界区和退出临界区。
 (3)CAM_IOControl()
程序设计中通过CreatFile()函数调CAM_Open()打开摄像头设备,通过ReadFile()将返回值传给CAM_IOControl()流接口函数,而CAM_IOControl()则调用OV51xReadOneFrame()对USB设备数据进行读取。下面是部分源码:
 DWORD CAM_IOControl (DWORD dwOpen, DWORD dwCode, PBYTE pln, DWORD dwIn, PBYTE pout, DWORD dwOut, DWORD *pdwBytesWritten)
  {
      pDrv = (PDRVCONTEXT) dwOpen;
              startaddress = 0;
            bytesRead =
       OV51xReadOneFrame(pDrv, pout, startaddress);
  }
 对于USB总线上的数据传输,一共有四种传输类型[4],分别是控制传输、中断传输、批量传输和实时传输,这四种传输类型分别应用到不同的USB设备。其中实时传输适用于以固定速率或特定时间内传输,可以容忍偶尔错误的流数据情况[5],对于USB摄像头这种实时性要求比较高的设备一般选用实时传输,所以在CAM_Read()中就需要用到实时传输函数IssueIsochTransfer()来读取摄像头采集的数据。如果IssueIsochTransfer()执行后返回一个标示句柄,则代表执行成功,如果无返回值,则表示执行失败。
在每次得到一包数据时,查找帧开始标记,如果查找到,则复制剩余的所有数据到应用程序的缓冲中。在程序的Ov51xReadOneFrame()函数中,pDataBuff申请了9 610 B空间,dwFrameLen[10]为10次传输每次的长度,这里都设置为961。图4为Ov51ReadFrame()软件流程图。

2.2  通信发送端的设计实现
 通信发送端主要完成RTP/RTCP协议封装和解封装、网络发送与数据获取。本文所实现的是基于RTP/UDP/IP协议栈的MPEG-4实时流媒体传输,是移动视频监控系统中网络传输部分的子模块[6,7]。采用JRTPLIB库函数来实现RTP的实时传输。传输部分的系统架构如图5所示。

 该发送端的主要功能是将音视频流封装到RTP包内通过3G网络传送给接收端,同时发送和接收RTCP包进行反馈控制,以期达到最佳效果。基于Windows CE平台通过调用JRTPLIB函数库来编程实现实时流媒体传输[8,9]。由于RTP协议并不作为独立的网络层来实现,它采用应用层组帧的理念,作为应用程序代码的一部分,本文针对一个具体媒体的应用通过应用程序实现RTP封装分组,然后将RTP分组交给UDP接口,采用JTHREAD作为线程库,完成多线程的操作。利用RTP来做视频传输分2个session来完成:一个负责声音传送;另一个负责视频传送。
发送端的部分主程序如下:

class MPEG4ESVideoRTPSession: public RTPSession{……};
  //新建一个公有继承RTPSession的类
  int MPEG4ESVideoRTPSession::SendBuffer (const void *data,size_t len, uint8_t pt,bool mark, uint32_t timestampinc, unsigned int ms)
  //数据包发送
  {… …
       if (SendPacket (pbuffer,sizeof(AUHeaderSection)+size,pt,mark,timestampinc)<0)
          {     break;}
          pbuffer += size;
          bfirstpayload = false;
  }while (len>0);
  Return 0;
  void MPEG4ESVideoRTPSession::OnRTPPacket (RTPPacket *pack, const RTPTime &receivetime, const RTPAddress *senderaddress)
  //对RTP数据包的处理,如统计帧长,判断一帧视频数据
//是否准备好等
    {… …}
  … …
 本文在现有的汽车防盗报警系统的基础上,通过接口的扩展,实现了基于3G网络的视频监控功能,并详细阐述了摄像头的流接口函数和通信发送端的设计。此外,通过该系统的通用接口的扩展,该系统还可与具体行业或家庭应用相结合,实现手机对于小范围环境的可视化监控。该系统的设计实现不但对于汽车防盗产品的发展有着重要的意义,同时对于基于3G网络的可视化监控的发展提供了良好的应用前景。
参考文献
[1] 李瑞祥.基于PXA270的视频监控系统的设计与开发[J].安防科技,2008(8):12-14.
[2] 郑小龙.谈数字视频监控的集大成时代[J].电子产品世界,2010(15):19-22.
[3] Zhang Cong, Wang Ping, Ma Wanli. Implementation of EPA communication service based on WinCE[J]. Computer  Engineering, 2005,12(31):127-129.
[4] MPEG Video Group. The MPEG-4 video standard verification models [EB/OL].IEEE Ttans. Circuits and systems for video technology, 1997,7(1):35-36.
[5] Overview of the MPEG-4 standard[S]. ISO/IEC JTC1/SC29/VJG1, N4030. Singapore,2001.
[6] 胡念英,张效军.双端口RAM方式的数据通讯[J].电子世界,2005(12):27-28.
[7] 江磊,朱发楠.3G视频手机双CPU间双端口RAM的设计与实现[J].电视技术,2009(8):20-22.
[8] 李蒙,舒云星.Windows CE 驱动程序开发[J].计算机工程与设计,2004(6):125.
[9] Xie Honghua, Lu Yiqin, Lv Jin. Approach to wireless real-time video monitoring system with high quality based on 3G network[J]. Application Research of Computers, 2007,24 (10):313-317.

此内容为AET网站原创,未经授权禁止转载。