发明内容
鉴于上述现有技术的不足,本发明的目的在于提供一种在ARM系统中解DTMF码的方法及系统,旨在解决现有的在ARM系统中解DTMF码方法成本高、故障不易检修的问题。
本发明的技术方案如下:
一种在ARM系统中解DTMF码的方法,其中,包括步骤:
A、将导航仪与移动终端进行无线通讯连接,当用户通过移动终端连接入后台时,启动业务处理库;
B、导航仪上输出的DTMF信号经过放大后,输入CPU的输入端口,由OAL层对AD信号进行采样和解码,并将解码后的处理数据回调到业务处理库;
C、在业务处理库中,对处理数据进行解析获得相应的处理消息,并执行所述处理消息,所述处理消息为通知关闭开启耳机咪头、下方信息点、下发代用户拨打号码或者下发后台号码。
所述的在ARM系统中解DTMF码的方法,其中,所述步骤A中,启动业务处理库包括开启消息监听或者回调函数、执行开始函数。
所述的在ARM系统中解DTMF码的方法,其中,所述步骤C还包括:在业务处理库中,预先注册回调函数,实现下述两个功能:等待回调函数和执行开始函数。
所述的在ARM系统中解DTMF码的方法,其中,所述步骤C还包括:在用于与用户交互的地图应用程序中,通过消息监听或回调函数接收到业务处理库回调的处理消息,并执行所述处理消息。
所述的在ARM系统中解DTMF码的方法,其中,所述步骤A中,导航仪与移动终端通过蓝牙进行无线通讯连接。
所述的在ARM系统中解DTMF码的方法,其中,所述步骤B中,在OAL层,由ADC驱动以250us的时间间隔采集一次AD信号。
所述的在ARM系统中解DTMF码的方法,其中,所述步骤B中,将采集到的AD信号以通知消息或回调函数回调至DTMF解码库。
所述的在ARM系统中解DTMF码的方法,其中,所述步骤B中,在DTMF解码库中,将AD信号解码为TNC码,并将解码后的处理数据以通知消息或回调函数回调给业务处理库。
所述的在ARM系统中解DTMF码的方法,其中,还包括步骤:当导航仪与移动终端的无线通讯连接断开、移动终端挂机或者异常中断时,先在业务处理库中执行停止函数,然后在DTMF解码库中执行停止函数。
一种在ARM系统中解DTMF码的系统,其中,包括:
启动模块,用于将导航仪与移动终端进行无线通讯连接,当用户通过移动终端连接入后台时,启动业务处理库;
采样解码模块,用于导航仪上输出的DTMF信号经过放大后,输入CPU的输入端口,由OAL层对AD信号进行采样和解码,并将解码后的处理数据回调到业务处理库;
消息处理模块,用于在业务处理库中,对处理数据进行解析获得相应的处理消息,并执行所述处理消息,所述处理消息为通知关闭开启耳机咪头、下方信息点、下发代用户拨打号码或者下发后台号码。
有益效果:本发明通过增加DTMF软解码功能,从而将内置电话或手机蓝牙输出的DTMF音频信号解出指令,提供给上层应用程序作出相应处理,由于本发明是采用软件解DTMF码的方式,相对于传统的硬解码方式,本发明的制造成本低、维护成本都比较低,而且出现故障容易维修,可维护性强。
具体实施方式
本发明提供一种在ARM系统中解DTMF码的方法及系统,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1为本发明在ARM系统中解DTMF码的方法较佳实施例的流程图,如图所示,其包括步骤:
S1、将导航仪与移动终端进行无线通讯连接,当用户通过移动终端连接入后台时,启动业务处理库;
S2、导航仪上输出的DTMF信号经过放大后,输入CPU的输入端口,由OAL层对AD信号进行采样和解码,并将解码后的处理数据回调到业务处理库;
S3、在业务处理库中,对处理数据进行解析获得相应的处理消息,并执行所述处理消息,所述处理消息为通知关闭开启耳机咪头、下方信息点、下发代用户拨打号码或者下发后台号码。
在步骤S1中,首先将导航仪与移动终端(本发明以手机为例进行说明)进行无线通讯连接,例如通过蓝牙的方式进行连接,即在导航仪开机后,先配对导航仪的内置蓝牙和手机蓝牙。
在地图应用程序层,当用户点击本发明的“一键通按钮图标”(应用程序图标)时,该“一键通按钮图标”将悬浮于导航仪的UI界面的所有窗口之上,并且可以被自由地拉到任意位置,引导程序启动导航地图后,将拨打给后台。
用户可通过移动终端(手机)蓝牙拨打呼叫中电话,导航仪的UI界面显示正在拨号中,且有形式可变的语音提示,例如弹出“正在通话中,请稍后”的窗口,客户也可以在接通后台前按下手机的挂机键或者屏幕的“取消”键,挂断电话。
在用户通过手机蓝牙成功接入到后台后,可通过手机与后台话务员进行语音通话,同时,还需启动业务处理库,以实现下述两个功能:开启消息监听或者回调函数、执行Start函数(开始函数)。
在步骤S2中,导航仪上的内置蓝牙输出的DTMF信号经过放大后,输入到CPU的ADCIN端口(输入端口),并在OAL层(OEM适配层,OEM Adaptation Layer,用来引导系统核心映像和初始化、管理硬件)对AD(模拟数字变换)信号进行采样和解码,将解码后的处理数据回调到业务处理层。
在导航仪内置蓝牙输出的DTMF信号需经过运放(4558处理电路)放大,放大后电压幅值在2V范围内,DTMF解码还需加密芯片配合,进行加密处理,形成DTMF信号输入波形。CPU的ADCIN的基准电压为1.65V,输入信号围绕1.65V上下波动,BT输出的DTMF信号,经过4558处理电路放大后,接到ARM的ADCIN,电压幅值范围为2V(误差范围为0.5V)
在此步骤中,是在操作系统的OAL层,由ADC驱动以250us的时间间隔采集一次AD信号,并将采集到的AD信号以通知消息或者回调函数回调给DTMF解码库(应用程序层),在DTMF解码库中,将AD信号解码为TNC码,并将解码后的处理数据通过通知消息或者回调函数回调给业务处理库(上一层应用程序层)中。
在步骤S3中,在业务处理库中,首先需要注册DTMF回调函数,以实现需要执行的两个功能:1、等待回调函数;2、执行start()函数。同时,由DTMF解码库回调的处理数据再经过解析处理后,解析出下述处理消息的一个:通知关闭开启耳机咪头、下发信息点、下发代用户拨打号码或者下发后台号码中的一个处理消息,并将处理消息回调地图应用程序层。
在地图应用程序层,通过消息监听或回调函数接收到业务处理库回调的处理消息,执行关闭开启耳机咪头处理、导航(信息点更新导航开始)、下发代用户拨打号码或者下发后台号码,
当用户再次按下一键通图标时,返回步骤S1重复执行。在步骤S1至S3之间,若有蓝牙断开、电话挂机或异常中断发生,那么首先在业务处理库执行stop()函数(停止函数),然后在DTMF解码库执行Stop()函数。
下面介绍下DTMF的解码原理:
在DTMF信令系统中,共有8个频率,分为4个高频单音和4个低频单音,一个高频单音和一个低频单音为一个组合,共有4*4=16种组合,如下表1所示,FH代表高频单音,FL代表低频单音。
表1
在上述DTMF信令系统中,一个高频单音和一个低频单音的组合,可代表某一个特定的数字(例如0、1、2、3、4…等等),或者字符A、B、C、D、*和#。
DTMF的解码有很多算法,例如快速傅里叶变换、有限长序列离散傅里叶变换、卷积法和迭代法,各个算法都有各自的特点和优势,在本发明中,优选采用快速傅里叶变换(FFT)来对DTMF信号进行解码,其过程是:
a、先对接收到的数字拨号键值对应的两个正弦波叠加信号进行FFT分析,计算出幅度谱;
b、已知采样频率为8KHz,信号的长度n为256,那么频率分辨率为F=Fs/n=8000/256=31.5Hz;
c、从而计算出频谱图上任意点对应的频率为f=K*F,即K=f/F,K为任意点的位置;
d、例如数字8的高频、低频频率分别为fH=1336Hz,fL=852Hz,则在频谱图上对应的点为KL=fL/F=852/31.5=28,KH=FH/F=1336/31.5=44;因此,只要能找出28和44点对应的信号就是数字8。
综上,采用同样的方法算出其在频谱图上对应的点可以找到其它数字。
此外,本发明的方法同样可应用于Android等系统中,也能实现本发明的发明目的。
基于上述方法,本发明还提供一种在ARM系统中解DTMF码的系统,如图2所示,其包括:
启动模块100,用于将导航仪与移动终端进行无线通讯连接,当用户通过移动终端连接入后台时,启动业务处理库;
采样解码模块200,用于导航仪上输出的DTMF信号经过放大后,输入CPU的输入端口,由OAL层对AD信号进行采样和解码,并将解码后的处理数据回调到业务处理库;
消息处理模块300,用于在业务处理库中,对处理数据进行解析获得相应的处理消息,并执行所述处理消息,所述处理消息为通知关闭开启耳机咪头、下方信息点、下发代用户拨打号码或者下发后台号码。
本发明通过增加DTMF软解码功能,从而将内置电话或手机蓝牙输出的DTMF音频信号解出指令,提供给上层应用程序作出相应处理,由于本发明是采用软件解DTMF码的方式,相对于传统的硬解码方式,本发明的制造成本低、维护成本都比较低,而且出现故障容易维修,可维护性强。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。