新闻  |   论坛  |   博客  |   在线研讨会
USB接口小区电话报警平台在VC++下的实现
rss200904 | 2009-06-22 15:55:56    阅读:966   发布文章

引言

    在现今社会中,电话网络报警以其快捷有效的优点得到普遍的应用。已逐步成为计算机的主流接口的通用串行总线USB很好地适应了现代计算机多媒体功能的拓展。目前通用的报警平台的接口是采用PCI卡价格贵,且不能即插即用。采用USB接口代替PCI卡,不仅降低了成本,而且可以提高管理平台的易用性和可维护性。本文在VC++下实现的小区报警管理平台的主要功能为:接收从用户报警系统通过电话网络传输来的报警信息(包括用户信息以及具体警报类型等),再将报警信息通过USB接口传入监控主机,与预先存入ADO(ActivexDataObjects)数据库的用户信息进行查找,确定具体用户信息,以便及时对小区内警情进行处理。系统主要由接收报警信息预处理电路与PC机组成。报警信息接收预处理电路通过接收电话网络传来的报警信息,并将报警信息格式化,再通过USB接口将信息传送给PC机。PC机接收传送回来的格式化信息,进行信息分析和差错处理,确认格式正确后再与数据库(ADO)中的用户数据进行比对,将报警用户的信息通过报警对话框弹出显示。

   点此在新窗口浏览图片

 系统结构框图

    系统硬件

    前端电路主要由HT9032(FSK解调电路)、单片机AT89C81、模拟摘挂机电路、线路异常监测电路和EZ-USBFX2(CY7C68013)(USB接口电路)组成,见图2。HT9032是一种FSK解码芯片,引脚及功能与Freescale公司的MC145447及EMC公司的EM92547A相兼容。图3为其外围电路以及与单片机的连接。

 点此在新窗口浏览图片

   系统的前端电路

    点此在新窗口浏览图片  

HT9032的电路连接图

    主叫识别信息数据的格式有二种:单数据消息格式(SDMF)和复合数据消息格式(MDMF),前者结构简单,也比较常用。

  点此在新窗口浏览图片

  FSK的数据格式

    信道占用信号:由一组300个连续的“0”和“1”交替组成,第一个比特为“0”,最后一个为“1”。在通话状态下,信道占用信号不发送。接收端只在正确收到这个信号后才认为后面紧跟的为有效信号。

    标志信号:由180个(挂机状态下)或80个(通话状态下)标志位(逻辑1)组成,即持续的高电平消息类型字:单数据格式情况下为“04H”,表示为主叫号码传送信息。

    消息长度字:占一个字节,为消息字的数目。

    消息内容:单数据消息格式。消息字内容如下:日期、时间(月、日、时、分),共8个字节;主叫号码(如果允许显示);如果不允许显示主叫号码,将传送字符“P”;当终端交换机无法得到主机号码时,将传送字“O”。

    校验和:校验字的算法是将消息数据(即单数据格式的消息类型字、消息长度字和消息数据字)按256的模求和取补来得到校验字。解码后的数据经过AT89C51的提取、整理,通过CYC68013的IO口传送给68013的内部RAM后再经过USB总线传送给PC机。

    电话线上的直流和交流电压都高于报警主机的电压,需要在接口处加光耦,将程控交换机和报警器的电源隔离。要避免户外断线或户外非法并机,并且报警器没有摘机的情况下才报警。出现异常,光耦导通,集电极输出低电平给单片机,进行异常报警中断处理。

    用PNP的三极管控制继电器常开端的吸合和打开。当单片机发出摘机信号时,给三极管的基极低电平,三极管导通,继电器闭合,电话线两端的电阻降至300nΩ左右,从而实现模拟摘机。当单片机发出挂机信号时,给三极管的基极高电平,三极管截止,继电器常开端打开,电阻上升至无穷,从而实现模拟挂机。

    Cypress公司的EZ-USBFX2芯片,将USB外围接口设备所需的各种功能包装成一个简洁的集成电路。集成的USB收发器连接到USB总线中的D+和D-;串行接口引擎(SIE)进行译码、编码、错误纠正和位填充,变换USB所需的信号电平;最终,从USB接口SIE发送和接收数据。CPU采用增强8051,提高了运行速度,增强了功能。同时,该芯片采用内部RAM用于程序和数据存取。

    系统软件的实现

    下位机程序

    下位机程序主要由单片机89C51的中断接收发送程序,以及USB芯片68013的固件程序组成。89C51接收来自HT9032的中断信号,根据解码数据格式,获取报警电话号码以及报警时间。HT9032解调出的FSK基带信号,送入单片机捕获中断,信号码为1200b/s。由于采样周期不可能是理想的1200Hz,会使采样位置渐渐偏离码元中心,造成判决错误。所以,每次下降沿捕获中断产生后,单片机计数时钟重新复位,矫正其采样相位;然后,延时0.4ms(2.4kHz),取码元中点,并开始按1.2kHz速率采样,由此得到0、1比特流,将其按10bit合成字节信启,每个字节起始位是1,结束位为0,中间8位为信息。最后根据主叫识别的单数据消息格式提取所需的消息中断处理程序。

    USB的固件框架包含初始化、处理标准USB设备请求以及USB挂起时的电源管理等,提供了现成的8051程序代码,只需简单的提供USB描述符及编写外设功能代码,就可以开发出一个功能完善的USB外设。

    上位机程序

    上位机程序包括USB接口驱动和客户端管理平台。EZ-USB系列芯片都具有通过下载固件和重枚举的方式来动态改变设备特性的能力。我们希望最终的产品能自动完成固件下载,以及设备重枚举。在这里,我们利用EZ-USB软件开发包提供的一个固件下载驱动程序的模板,即EZ-LoaderDriver。利用这个模板,并且改写原驱动的inf文件,最后将新的VID/PID写入串行EEPROM的前7个单元中。这样将USB设备接入PC机时,固件就可以自动下载运行了。
管理平台客户端在微软的VC++平台上开发,主要功能有:通信线路故障自动检测、报警用户信息显示、报警地图显示、报警类型显示、报警事件处理状态记录、报警信息存储和检索等。当通信线路或计算机与报警平台硬件之间的USB通信发生故障,PC端监控软件会自动报警,保证系统工作可靠。当收到报警信息时,小区布局图中报警客户所在楼栋图会发出红色闪光报警。图5所示为客户端主界面中的小区布局图。

    点此在新窗口浏览图片   

软件界面示意图:没有报警信号到来

    点此在新窗口浏览图片   

软件界面示意图:有报警信号到来

    应用程序通过I/O控制访问EZ—USBGDP。客户端应用程序首先通过调用Win32函数CreateFile()取得访问设备驱动程序的句柄。用户程序使用Win32函数DeviceIoControl()提交I/O控制码,并且为CreateFile()函数返回的设备句柄设置I/O缓冲区。用户程序在打开USB接口后建立一个新线程来等待接收USB总线发送过的报警信息。Access数据库中建立了两张表,一张是用户信息表,一张是历史记录表。用户程序通过ADO方式控制Access数据库,ADO最主要的优点是易于使用、速度快、内存支出少和磁盘遗迹小。并且,在前端和数据源之间使用最少的层数,所有这些都是为了提供轻量、高性能的接口。当等待线程接收到报警信息并进行数据整理后,通过ADO方式对用户信息表进行比对,检索出报警用户信息,在平台界面上显示,并且自动将报警信息记录在历史记录表里。

    结语

    本系统可快速、高效的监控家居安防状况。通过电话网络及时对小区内的警情进行反应以及处理,并通过数据库对住户信息进行管理。平台采用USB接口,安装方便,容错性好。监控平台具有价格低廉、安装方便、操作简便、可靠性高和误码率低的优点,经过长期测试,工作正常,性能稳定,通讯可靠。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客