×

USB接口小区电话报警平台在VC++下的实现资料下载

消耗积分:0 | 格式:pdf | 大小:270.04KB | 2021-04-12

远不及你

分享资料个

引言在现今社会中,电话网络报警以其快捷有效的优点得到普遍的应用。已逐步成为计算机的主流接口的通用串行总线USB很好地适应了现代计算机多媒体功能的拓展。目前通用的报警平台的接口是采用PCI卡价格贵,且不能即插即用。采用USB接口代替PCI卡,不仅降低了成本,而且可以提高管理平台的易用性和可维护性。本文在VC++下实现的小区报警管理平台的主要功能为:接收从用户报警系统通过电话网络传输来的报警信息(包括用户信息以及具体警报类型等),再将报警信息通过USB接口传入监控主机,与预先存入ADO(Activex Data Objects)数据库的用户信息进行查找,确定具体用户信息,以便及时对小区内警情进行处理。系统主要由接收报警信息预处理威廉希尔官方网站 与PC机组成(如图1)。报警信息接收预处理威廉希尔官方网站 通过接收电话网络传来的报警信息,并将报警信息格式化,再通过USB接口将信息传送给PC机。PC机接收传送回来的格式化信息,进行信息分析和差错处理,确认格式正确后再与数据库(ADO)中的用户数据进行比对,将报警用户的信息通过报警对话框弹出显示。图1 系统结构框图系统硬件前端威廉希尔官方网站 主要由HT9032(FSK解调威廉希尔官方网站 )、单片机AT89C81、模拟摘挂机威廉希尔官方网站 、线路异常监测威廉希尔官方网站 和EZ-USB FX2(CY7C68013)(USB接口威廉希尔官方网站 )组成,见图2。HT9032是一种FSK解码芯片,引脚及功能与Freescale公司的MC145447及EMC公司的EM92547A相兼容。图3为其外围威廉希尔官方网站 以及与单片机的连接。图2 系统的前端威廉希尔官方网站 图3 HT9032的威廉希尔官方网站 连接图主叫识别信息数据的格式有二种:单数据消息格式(SDMF)和复合数据消息格式(MDMF),前者结构简单,也比较常用,具体格式如图4。图4 FSK的数据格式信道占用信号:由一组300个连续的“0”和“1”交替组成,第一个比特为“0”,最后一个为“1”。在通话状态下,信道占用信号不发送。接收端只在正确收到这个信号后才认为后面紧跟的为有效信号。标志信号:由180个(挂机状态下)或80个(通话状态下)标志位(逻辑1)组成,即持续的高电平消息类型字:单数据格式情况下为“04H”,表示为主叫号码传送信息。消息长度字:占一个字节,为消息字的数目。消息内容:单数据消息格式。消息字内容如下:日期、时间(月、日、时、分),共8个字节;主叫号码(如果允许显示);如果不允许显示主叫号码,将传送字符“P”;当终端交换机无法得到主机号码时,将传送字“O”。校验和:校验字的算法是将消息数据(即单数据格式的消息类型字、消息长度字和消息数据字)按256的模求和取补来得到校验字。解码后的数据经过AT89C51的提取、整理,通过CYC68013的IO口传送给68013的内部RAM后再经过USB总线传送给PC机。电话线上的直流和交流电压都高于报警主机的电压,需要在接口处加光耦,将程控交换机和报警器的电源隔离。要避免户外断线或户外非法并机,并且报警器没有摘机的情况下才报警。出现异常,光耦导通,集电极输出低电平给单片机,进行异常报警中断处理。用PNP的三极管控制继电器常开端的吸合和打开。当单片机发出摘机信号时,给三极管的基极低电平,三极管导通,继电器闭合,电话线两端的电阻降至300 nΩ左右,从而实现模拟摘机。当单片机发出挂机信号时,给三极管的基极高电平,三极管截止,继电器常开端打开,电阻上升至无穷,从而实现模拟挂机。Cypress公司的EZ-USB FX2芯片,将USB外围接口设备所需的各种功能包装成一个简洁的集成威廉希尔官方网站 。集成的USB收发器连接到USB总线中的D+和D-;串行接口引擎(SIE)进行译码、编码、错误纠正和位填充,变换USB所需的信号电平;最终,从USB接口SIE发送和接收数据。CPU采用增强8051,提高了运行速度,增强了功能。同时,该芯片采用内部RAM用于程序和数据存取。系统软件的实现下位机程序下位机程序主要由单片机89C51的中断接收发送程序,以及USB芯片68013的固件程序组成。89C51接收来自HT9032的中断信号,根据解码数据格式,获取报警电话号码以及报警时间。HT9032解调出的FSK基带信号,送入单片机捕获中断,信号码为1 200 b/s。由于采样周期不可能是理想的1200 Hz,会使采样位置渐渐偏离码元中心,造成判决错误。所以,每次下降沿捕获中断产生后,单片机计数时钟重新复位,矫正其采样相位;然后,延时0.4 ms(2.4 kHz),取码元中点,并开始按1.2 kHz速率采样,由此得到0、1比特流,将其按10 bit合成字节信启,每个字节起始位是1,结束位为0,中间8位为信息。最后根据主叫识别的单数据消息格式提取所需的消息中断处理程序。USB的固件框架包含初始化、处理标准USB设备请求以及USB挂起时的电源管理等,提供了现成的8051程序代码,只需简单的提供USB描述符及编写外设功能代码,就可以开发出一个功能完善的USB外设。上位机程序上位机程序包括USB接口驱动和客户端管理平台。EZ-USB系列芯片都具有通过下载固件和重枚举的方式来动态改变设备特性的能力。我们希望最终的产品能自动完成固件下载,以及设备重枚举。在这里,我们利用EZ-USB软件开发包提供的一个固件下载驱动程序的模板,即EZ-Loader Driver。利用这个模板,并且改写原驱动的inf文件,最后将新的VID/PID写入串行EEPROM的前7个单元中。这样将USB设备接入PC机时,固件就可以自动下载运行了。管理平台客户端在微软的VC++平台上开发,主要功能有:通信线路故障自动检测、报警用户信息显示、报警地图显示、报警类型显示、报警事件处理状态记录、报警信息存储和检索等。当通信线路或计算机与报警平台硬件之间的USB通信发生故障,PC端监控软件会自动报警,保证系统工作可靠。当收到报警信息时,小区布局图中报警客户所在楼栋图会发出红色闪光报警。图5所示为客户端主界面中的小区布局图。a)没有报警信号到来b)有报警信号到来应用程序通过I/O控制访问EZ—USB GDP。客户端应用程序首先通过调用Win32函数CreateFile()取得访问设备驱动程序的句柄。用户程序使用Win32函数DeviceIoControl()提交I/O控制码,并且为CreateFile()函数返回的设备句柄设置I/O缓冲区。用户程序在打开USB接口后建立一个新线程来等待接收USB总线发送过的报警信息。Access数据库中建立了两张表,一张是用户信息表,一张是历史记录表。用户程序通过ADO方式控制Access数据库,ADO最主要的优点是易于使用、速度快、内存支出少和磁盘遗迹小。并且,在前端和数据源之间使用最少的层数,所有这些都是为了提供轻量、高性能的接口。当等待线程接收到报警信息并进行数据整理后,通过ADO方式对用户信息表进行比对,检索出报警用户信息,在平台界面上显示,并且自动将报警信息记录在历史记录表里。结语本系统可快速、高效的监控家居安防状况。通过电话网络及时对小区内的警情进行反应以及处理,并通过数据库对住户信息进行管理。平台采用USB接口,安装方便,容错性好。监控平台具有价格低廉、安装方便、操作简便、可靠性高和误码率低的优点,经过长期测试,工作正常,性能稳定,通讯可靠。(mbbeetchina)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'USB接口小区电话报警平台在VC++下的实现资料下载',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);