在前后台方式设计中无线通讯模块多种返回状态处理方法

文档序号:7888774阅读:238来源:国知局
专利名称:在前后台方式设计中无线通讯模块多种返回状态处理方法
在前后台方式设计中无线通讯模块多种返回状态处理方法
技术领域
本发明涉及通讯技术领域,尤其涉及一种在前后台方式设计中无线通讯模块多种返回状态处理方法。
背景技木近年来,随着M2M技术(增强机器设备通信和网络能力的技术的总称)的发展和应用,无线通讯模块(这里指通过移动运营商网络接入的模块,包括GPRS/EDGE/CDMA2000/WCDMA等模块)在嵌入式系统中的使用越来越頻繁。无线通讯模块可以看作是ー个手机的缩影,集成了手机电话,短信,GPRS(即无线通讯),电话簿,网络设置等功能。嵌入式系统可通过AT命令与无线通讯模块进行数据和状态的交互。AT命令是ー种调制解调器命令语言,终端设备发送AT指令来控制移动台(Mobile Station,MS)的功能,与GSM或CDMA网络业务进行交互。用户可以通过AT指令进行呼叫、短信、电话本、数据业务、传真等方面的控 制。通过无线通讯模块,嵌入式系统具有了电话功能,短信功能,甚至可以通过Socket或其他方式连接进入互联网。通过运营商网络将设备与其他设备有机的结合在一起,为实现了设备之间信息的交互,提供了物理基础。目前,嵌入式系统多运行于嵌入式操作系统之上,可以通过多个任务或者进程来处理无线通讯模块返回的各种信息和状态。但是仍然有一定数量的设备,由于成本等其他因素的制约而无法使用嵌入式操作系统,而使用了前后台方式进行程序开发。而这ー类的終端设备要接入互联网或者进行短信等方式的交流,就意味着要在唯一的进程中处理无线通讯模块的多种返回状态。一般来说,这种前后台方式设计会采取ー问ー答的方式进行。但是由于无线通讯模块会自动上报ー些网络信息,基站信息等信息,有可能出现“所问非所答”的情況。例如当我们需要向无线通讯模块询问信号強度,在发获取信号強度的AT命令过成中(命令发送一半)服务器下发了ー个数据信息,这时无线通讯模块会先将数据信息返回给系统,再返回信号強度,于是系统在判断信号強度吋,实际上先获取的是数据信息,这种情况下如果不加处理,可能会丢失ー些重要的状态信息甚至引起通讯错误。在本前后台设计方案中,代码为驱动层和应用层两部分,驱动层为应用层提供功能API函数,应用层不再关心硬件和驱动实现,只关心API函数提供的功能接ロ。无线通讯模块是通过UART接ロ与嵌入式系统的处理器进行连接的。

发明内容本发明要解决的技术问题,在于提供一种在前后台方式设计中无线通讯模块多种返回状态处理方法,解决了前后台方式的单进程中一问ー答的工作模式带来的所问非所答的问题。本发明是这样实现的一种在前后台方式设计中无线通讯模块多种返回状态处理方法,在前后台方式中设计三个处理流程串口中断服务程序处理、功能API函数中的AT缓存命令解析函数以及状态查询函数中的状态信息处理;
所述状态信息将存放于前后台方式的驱动层定义的状态信息标志结构体中,所述结构体中參数包括新短消息标志、新GPRS消息标志、新来电标志、对方挂机标志、主叫状态信息标志、对方断开连接标志、SIM卡被拔出标志、GPRS网络错误标志以及SIM卡需要输入PIN码标志;所述各參数赋值为O或I,初始值为O ;所述串口中断服务程序处理过程为在所述无线通讯模块软件接ロ中将接收到的无线通讯模块返回的信息数据进行区分;所述信息数据包括无线通讯模块返回的AT返回值和无线通讯模块返回的GPRS数据返回值,所述无线通讯模块返回的AT返回值包括AT命令返回值和状态信息返回;将区分开的无线通讯模块返回的AT返回值和无线通讯模块返回的GPRS数据返回值分别存入驱动层中的AT缓存区和数据缓存区;所述AT缓存命令解析函数是在功能API函数中被调用的,用于对AT返回值进行处理,该处理的过程为在前后台方式的应用层调用驱动层提供的功能API函数时,在功能API函数中调用ー AT缓存命令解析函数对AT缓存区中的数据进行解析,并判断所述AT缓存区中的数据是状态信息还是所需要的AT命令返回值;是状态信息,则根据该状态信息将所述状态信息标志结构体中对应的状态信息标志进行置位成1,供所述功能API函数中的 状态查询功能API函数调用时使用;是AT命令返回值,则正常退出并返回AT返回值;所述状态查询函数中的状态信息处理过程为驱动层向应用层提供所述状态查询函数,状态查询函数从AT缓存区中读取状态信息或AT命令返回值并对该条状态信息或AT命令返回值进行解析,若是状态信息,则根据该状态信息将所述状态信息标志结构体中对应的状态信息标志进行置位成1,且状态查询函数最終返回时将各状态信息带回给应用层;若是AT命令返回值,则表示是错误的AT命令返回值,进行丢弃。本发明具有如下优点本发明在前后台方式设计中无线通讯模块多种返回状态处理方法,包括串口中断服务程序处理、功能API函数中的AT缓存命令解析函数以及状态查询函数中的状态信息处理三个处理流程;通过三个处理流程的组合使用;解决了前后台方式的单进程中一问ー答的工作模式带来的所问非所答的问题,这种机制使得在前后台构架中依然能具有复杂信息条件的处理能力,保证所有信息的准确性和完整性。

图I为本发明的串口中断服务程序处理的流程示意图。图2为本发明的各种功能API函数工作的流程框架示意图。图3为本发明的AT命令解析函数工作流程示意图。图4为本发明的状态查询函数具体工作的流程示意图。
具体实施方式本发明的一种在前后台方式设计中无线通讯模块多种返回状态处理方法,在前后台方式中设计三个处理流程串口中断服务程序处理、功能API函数中的AT缓存命令解析函数以及状态查询函数中的状态信息处理;所述状态信息将存放于前后台方式的驱动层定义的状态信息标志结构体中,所述结构体中參数包括新短消息标志、新GPRS消息标志、新来电标志、对方挂机标志、主叫状态信息标志、对方断开连接标志、SIM卡被拔出标志、GPRS网络错误标志以及SIM卡需要输Λ PIN码标志;所述各參数赋值为O或1,初始值为O ;所述串口中断服务程序处理过程为在所述无线通讯模块软件接ロ中将接收到的无线通讯模块返回的信息数据进行区分;所述信息数据包括无线通讯模块返回的AT返回值和无线通讯模块返回的GPRS数据返回值,所述无线通讯模块返回的AT返回值包括AT命令返回值和状态信息返回;将区分开的无线通讯模块返回的AT返回值和无线通讯模块返回的GPRS数据返回值分别存入驱动层中的AT缓存区和数据缓存区;所述AT缓存命令解析函数是在功能API函数中被调用的,用于对AT返回值进行处理,该处理的过程为在前后台方式的应用层调用驱动层提供的功能API函数时,在功能API函数中调用ー AT缓存命令解析函数对AT缓存区中的数据进行解析,并判断所述AT缓存区中的数据是状态信息还是所需要的AT命令返回值;是状态信息,则根据该状态信息将所述状态信息标志结构体中对应的状态信息标志进行置位成1,供所述功能API函数中的状态查询功能API函数调用时使用;是AT命令返回值,则正常退出并返回AT返回值;所述状态查询函数中的状态信息处理过程为驱动层向应用层提供所述状态查询函数,状态查询函数从AT缓存区中读取状态信息或AT命令返回值并对该条状态信息或AT命令返回值进行解析,若是状态信息,则根据该状态信息将所述状态信息标志结构体中对应的状态信息标志进行置位成1,且状态查询函数最終返回时将各状态信息带回给应用层;若是AT命令返回值,则表示是错误的AT命令返回值,进行丢弃。(因为在没有主动发出AT命令时,无线通讯模块只返回状态信息,如果在这里出现了 AT命令返回值就一定是错误信息);因此状态查询函数中的状态信息处理主要是处理AT缓冲区中的状态信息,AT命令返回值在此流程中不做相应处理。本发明的应用层根据业务需要,在需要无线通讯模块执行某项功能时通过调用驱动层提供的功能API函数执行具体的功能操作;功能API函数中2次调用AT命令解析函数,分别执行清空AT缓存区和等待AT返回的操作,保证状态信息和AT返回值都能正常的被处理到。其AT缓存命令解析函数毎次从所述AT缓存区中读取一条AT命令返回值或状态信息,并由AT缓存命令解析函数进行解析;若AT缓存命令解析函数解析后判断是状态信息,则根据该状态信息将所述状态信息标志结构体中对应的状态信息标志进行置位成1,供所述功能API函数中的状态查询功能API函数调用时使用;若在判定是状态信息并标志结构体中的状态信息标志之后,AT缓存命令解析函数将读取AT缓存区中的下一条AT命令返回值或状态信息,重复进行处理,直到处理到AT命令返回值或处理超时时间到时为止才退出,AT缓存命令解析函数可通过參数配置为读空缓存或等待AT返回功能,来分别执行清空AT缓存区和等待AT返回的操作。。当应用层需要获取无线通讯模块状态时调用驱动层提供的所述状态查询函数进行状态查询,可查询的状态信息有SIM卡是否被拔出、是否接收到新数据、是否接收到新短消息、是否有新来电、GPRS数据链路是否被服务器断开、电话通话中对方是否进行挂机操作、以及主叫时的各种主叫状态;状态查询函数仅处理状态信息,并将状态信息组合成16bit数据返回给应用层,应用层根据16bit返回值做相应的处理;状态查询函数处理到AT返回值直接视为错误信息丢弃。
在本发明中无线通讯模块返回的所有AT返回值和GPRS数据信息均由所述串ロ中断服务程序进行接收并分别存放到驱动层所开辟的AT缓存区与数据缓存区中,其中,所述AT缓存区和数据缓存区均为环形队列形式的缓存区,这样的缓存区使得所有数据能按顺序进入,保证数据不会丢失;状态查询函数和AT缓存命令解析函数对同一个AT缓存区进行操作,并都对状态返回做相应的处理,从而保证了所有数据不遗漏不被重复的被处理,且状态信息被独立的处理,不影响AT返回值的正常返回。其中,所述功能API函数为各种不同功能的功能API函数,这些功能API函数在所述应用层需要时被调用,该些功能API函数实现了 AT命令发送与接收AT命令返回值并进行处理的功能函数;所述功能API函数包括通话主叫功能API函数、来电接听功能API函数、来电挂断功能API函数、短消息读取功能API函数、GPRS链路建立功能API函数、GPRS数据发送功能API函数、GPRS数据读取功能API函数、GPRS链路挂断功能API函数、获取信号強度的功能API函数、状态查询功能API函数。上述各部分组合使用方式如下I、如图I所示,无线通讯模块返回的所有AT返回值和GPRS数据信息均由串口中断服务程序进行接收并做初歩区分。在串ロ終端服务程序中定义一局部变量,用来标识当 前接收的数据是AT返回值还是GPRS数据信息,该变量可称之为当前包类型标识,默认设置0,标识为AT返回值;设置为I时表示当前接收包为GPRS数据信息。由于无线通讯模块返回的AT返回值有自己的数据包结构,数据包由0x0d,0x0a数据为起始,将包起始的OxOd,OxOa数据称之为AT头;GPRS数据信息也同样有自己的包结构,且不同模块的包结构不同,可根据模块实际的GPRS数据信息包的起始数据判断当前包为GPRS数据信息,将GPRS数据信息包起始数据称之为数据头;根据不同的数据包起始信息可将AT返回值与GPRS数据信息进行区分,并标志当前包类型标识为AT返回值或GPRS数据信息,在当前包接收完成之后将当前包类型标识设置为AT返回值。串口中断服务程序接收到完整的AT返回值或GPRS数据信息返回值后,将所接收到的AT返回值或GPRS数据信息分别存放到驱动层所开辟的AT缓存区与数据缓存区中,接收完成后,将变量重新初始化,其中,所述AT缓存区和数据缓存区均为环形队列形式的缓存区,这样的缓存区使得所有数据能按顺序进入,保证数据不会丢失。2、如图2所示,应用层根据业务需要,在需要无线通讯模块执行某项具体功能时通过调用驱动提供的功能API函数执行具体的功能操作。功能API函数首先调用AT命令解析函数,并设置AT命令解析函数的參数为读空状态,以清除AT缓存中的状态和无效的AT数据。清空后,根据不同的功能API函数的作用,发送不同的AT命令给无线通讯模块,使无线通讯模块完成相关的操作,在发送完成后,功能API函数再次调用AT命令解析函数并设置參数为等待AT返回状态用于等待接收无线通讯模块操作后的返回值。当AT命令解析函数获取到一条完成的AT命令返回值时,将该返回值传递给功能API函数,由功能API函数对返回值进行处理,并将处理后的最終結果返回给应用层,使应用层获取应用所需的相关信息。3、功能API函数通过调用AT缓存命令解析函数毎次从所述AT缓存区中读取一条AT命令返回值或状态信息并由AT缓存命令解析函数进行解析;若AT缓存命令解析函数解析后判断是状态信息,则根据该状态信息将所述状态信息标志结构体中对应的状态信息标志进行置位成1,供所述功能API函数中的状态查询功能API函数调用时使用;若读取的信息为状态信息,在判定是状态信息并标志结构体中的状态信息标志之后,AT缓存命令解析函数将读取AT缓存区中的下一条AT命令返回值或状态信息,重复进行处理,直到处理到AT命令返回值或处理超时时间到时退出;功能API函数提供ー个输入參数,用于设置工作状态,參数可设置为进行读空操作(数值O)或设置为等待AT返回操作(数值I)当參数设置为读空AT缓存区,且AT缓存命令解析函数进行解析吋,只有AT缓存区被读空时才退出,读空操作仅处理状态信息,而自动丢弃AT返回值信息。读空操作结束后功能API函数可进行AT命令的发送,然后功能API函数再次调用AT缓存命令解析函数等待AT命令的返回值,该AT命令的返回值存于所述AT缓存区; 当參数设置为等待AT命令返回,且AT缓存命令解析函数进行解析吋,只有判断到非状态信息或返回超时时,AT缓存命令解析函数将判断的该条AT命令返回值给调用该条AT命令返回值的功能API函数,由功能API函数进行处理,并读取处理后的结果或应用层需 要的数据返回给应用层。如图3所示,所述AT命令解析函数具体工作方式如下首先进入AT缓存命令解析函数入ロ,判断參数设置是否为读空AT缓存区,是,则读空AT缓存区操作,然后判断是否已读空,是已读空则退出,未读空则判断是否超时操作,是超时操作,则超时退出并返回错误,不是超时操作,则继续返回判断參数设置是否为读空AT缓存区;參数设置不是读空AT缓存区,则读取一条AT返回值或者状态信息,判断读取的是否为AT返回值,否,则表明为状态信息,处理状态信息并标志数据结构体中的參数,然后继续返回判断參数设置是否为读空AT缓存区;是,则正常退出并返回AT返回值。4、如图4所示,当应用层需要获取无线通讯模块状态时调用驱动层提供的状态查询函数进行状态查询。可查询的状态有SIM卡是否被拔出、是否接收到新数据、是否接收到新短消息、是否有新来电、GPRS数据链路是否被服务器断开、电话通话中对方是否进行挂机操作、以及主叫时的各种主叫状态(详细參见状态信息组合成16bit的返回值定义)所述状态查询函数一次从AT缓存区中读取一条状态信息或AT命令返回值并对该条状态信息或AT命令返回值进行解析,解析后是状态信息则根据该状态信息将所述状态信息标志结构体中对应的状态信息參数进行置位成I ;如果AT缓存区中不存在状态信息,则进入所述状态返回功能API函数;在状态返回功能API函数中,将所述结构体中的状态信息參数置位为I的状态信息组合成16bit的返回值,其用位表示状态标志,将该组合成16bit的返回值 带回给应用层;同时将结构体的各状态信息參数赋值为O ;解析后是AT命令返回值,则表示是错误的AT命令返回值,进行丢弃(因为在没有主动发出AT命令时,无线通讯模块只返回状态信息,如果在这里出现了 AT命令返回值就一定是错误信息);因此状态查询函数中的状态信息处理主要是处理AT缓冲区中的状态信息,AT命令返回值在此流程中不会做相应处理。5、由于所述AT缓存区和数据缓存区均为环形队列形式的缓存区,这样的缓存区使得所有数据能按顺序进入,保证数据不会丢失。状态查询函数和AT缓存命令解析函数对同一个AT缓存区进行操作,并都对状态返回做相应的处理,从而保证了所有数据不遗漏不被重复的被处理,且状态信息被独立的处理,不影响AT返回值的正常返回。从根本上解决所问非所答的问题,又保证了所有状态数据不会丢失。本发明的ー实施例,如应用层定时调用状态查询函数,处理各种无线通信模块上报的信息,并根据信息做相应的处理I、应用层通过调用状态查询函数发现有新来电标志置位时,应用层可调用来电接
听功能API函数或来电挂断功能API函数进行处理。2、当检测到新短消息标志置位时,应用层可调用短消息读取功能API函数进行短
消息内容读取。3、当检测到新GPRS消息标志时,应用可调用GPRS数据读取功能API函数,该函数 通过读取数据缓存将数据缓存的内容返回给应用层。4、在数据通讯过程中,等待数据返回时调用状态查询函数,进行网络状态监测,当
检测到GPRS网络错误标志置位是可进行相应的异常处理。这里值得一提的是结构体定义与状态返回接ロ 16bit数据结构定义结构体定义
权利要求
1.一种在前后台方式设计中无线通讯模块多种返回状态处理方法,其特征在于在前后台方式中设计三个处理流程串口中断服务程序处理、功能API函数中的AT缓存命令解析函数以及状态查询函数中的状态信息处理; 所述状态信息将存放于前后台方式的驱动层定义的状态信息标志结构体中,所述结构体中參数包括新短消息标志、新GPRS消息标志、新来电标志、对方挂机标志、主叫状态信息标志、对方断开连接标志、SM卡被拔出标志、GPRS网络错误标志以及SM卡需要输入PIN码标志;所述各參数赋值为O或I,初始值为O ; 所述串口中断服务程序处理过程为在所述无线通讯模块软件接ロ中将接收到的无线通讯模块返回的信息数据进行区分;所述信息数据包括无线通讯模块返回的AT返回值和无线通讯模块返回的GPRS数据返回值,所述无线通讯模块返回的AT返回值包括AT命令返回值和状态信息返回;将区分开的无线通讯模块返回的AT返回值和无线通讯模块返回的GPRS数据返回值分别存入驱动层中的AT缓存区和数据缓存区; 所述AT缓存命令解析函数是在功能API函数中被调用的,用于对AT返回值进行处理,该处理的过程为在前后台方式的应用层调用驱动层提供的功能API函数时,在功能API函数中调用ー AT缓存命令解析函数对AT缓存区中的数据进行解析,并判断所述AT缓存区中的数据是状态信息还是所需要的AT命令返回值;是状态信息,则根据该状态信息将所述状态信息标志结构体中对应的状态信息标志进行置位成1,供所述功能API函数中的状态查询功能API函数调用时使用;是AT命令返回值,则正常退出并返回AT返回值; 所述状态查询函数中的状态信息处理过程为驱动层向应用层提供所述状态查询函数,状态查询函数从AT缓存区中读取状态信息或AT命令返回值并对该条状态信息或AT命令返回值进行解析,若是状态信息,则根据该状态信息将所述状态信息标志结构体中对应的状态信息标志进行置位成1,且状态查询函数最終返回时将各状态信息带回给应用层;若是AT命令返回值,则表示是错误的AT命令返回值,进行丢弃。
2.根据权利要求I所述的在前后台方式设计中无线通讯模块多种返回状态处理方法,其特征在于无线通讯模块返回的所有AT返回值和GPRS数据信息均由所述串口中断服务程序进行接收并分别存放到驱动层所开辟的AT缓存区与数据缓存区中,其中,所述AT缓存区和数据缓存区均为环形队列形式的缓存区,这样的缓存区使得所有数据能按顺序进入,保证数据不会丢失;状态查询函数和AT缓存命令解析函数对同一个AT缓存区进行操作,并都对状态返回做相应的处理,从而保证了所有数据不遗漏不被重复的被处理,且状态信息被独立的处理,不影响AT返回值的正常返回。
3.根据权利要求I所述的在前后台方式设计中GPRS模块多种返回状态处理方法,其特征在于所述功能API函数为各种不同功能的功能API函数,这些功能API函数在所述应用层需要时被调用,该些功能API函数实现了 AT命令发送与接收AT命令返回值并进行处理的功能函数;所述功能API函数包括通话主叫功能API函数、来电接听功能API函数、来电挂断功能API函数、短消息读取功能API函数、GPRS链路建立功能API函数、GPRS数据发送功能API函数、GPRS数据读取功能API函数、GPRS链路挂断功能API函数、获取信号強度的功能API函数、状态查询功能API函数。
4.根据权利要求I所述的在前后台方式设计中无线通讯模块多种返回状态处理方法,其特征在干应用层根据业务需要,在需要无线通讯模块执行某项功能时通过调用驱动层提供的功能API函数执行具体的功能操作;功能API函数中2次调用AT命令解析函数,分别执行清空AT缓存区和等待AT返回的操作,保证状态信息和AT返回值都能正常的被处理至IJ。
5.根据权利要求4所述的在前后台方式设计中无线通讯模块多种返回状态处理方法,其特征在于AT缓存命令解析函数毎次从所述AT缓存区中读取一条AT命令返回值或状态信息,并由AT缓存命令解析函数进行解析;若AT缓存命令解析函数解析后判断是状态信息,则根据该状态信息将所述状态信息标志结构体中对应的状态信息标志进行置位成1,供所述功能API函数中的状态查询功能API函数调用时使用;若在判定是状态信息并标志结构体中的状态信息标志之后,AT缓存命令解析函数将读取AT缓存区中的下一条AT命令返回值或状态信息,重复进行处理,直到处理到AT命令返回值或处理超时时间到时为止才退 出,AT缓存命令解析函数可通过ー參数配置为读空缓存或等待AT返回功能,来分别执行清空AT缓存区和等待AT返回的操作。
6.根据权利要求I所述的在前后台方式设计中无线通讯模块多种返回状态处理方法,其特征在于当应用层需要获取无线通讯模块状态时调用驱动层提供的所述状态查询函数进行状态查询,可查询的状态信息有SIM卡是否被拔出、是否接收到新数据、是否接收到新短消息、是否有新来电、GPRS数据链路是否被服务器断开、电话通话中对方是否进行挂机操作、以及主叫时的各种主叫状态;状态查询函数仅处理状态信息,并将状态信息组合成16bit数据返回给应用层,应用层根据16bit返回值做相应的处理;状态查询函数处理到AT返回值直接视为错误信息丢弃。
全文摘要
本发明提供一种在前后台方式设计中无线通讯模块多种返回状态处理方法,包括串口中断服务程序处理、功能API函数中的AT缓存命令解析函数、状态查询函数中的状态信息处理;所述串口中断服务程序处理为在无线通讯模块软件接口中接收无线通讯模块返回的信息数据并进行区分,将区分开的AT返回值和GPRS数据返回值分别存入驱动层中的AT缓存区和数据缓存区;然后通过功能API函数中的AT缓存命令解析函数和状态查询函数中的状态信息处理的组合使用,对AT缓存区的AT返回值中的AT命令返回值和状态信息返回进行处理,解决了前后台方式的单进程中一问一答的工作模式带来的所问非所答的问题,保证所有信息都能被完整且正确的解析。
文档编号H04W88/02GK102665298SQ201210025710
公开日2012年9月12日 申请日期2012年2月6日 优先权日2012年2月6日
发明者林晋伟, 黄海峰 申请人:福建三元达软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1