CN115695592A - 一种at命令处理方法、装置及设备 - Google Patents
一种at命令处理方法、装置及设备 Download PDFInfo
- Publication number
- CN115695592A CN115695592A CN202211338610.3A CN202211338610A CN115695592A CN 115695592 A CN115695592 A CN 115695592A CN 202211338610 A CN202211338610 A CN 202211338610A CN 115695592 A CN115695592 A CN 115695592A
- Authority
- CN
- China
- Prior art keywords
- message
- thread
- state machine
- module
- command processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开一种AT命令处理方法、装置及设备,本发明涉及通信领域,用于解决现有技术中消息处理效率低的问题。包括:获取用户发送的AT命令;并确定AT命令处理系统的通信模式;生产者线程基于通信模式分配消息资源,并将消息资源中包含的消息放入消息队列;消费者线程从消息队列中取出对应的消息并进行处理,等待全局状态机的同步锁;解析者线程接收到WiFi模组发来的应答并解析,确定取出的消息的发送状态;基于发送状态释放所述全局状态机的同步锁,等待下一次WiFi模组的应答。本发明适用于阻塞通信模式以及非阻塞通信模式,在处理消息的过程中基于多线程以及全局状态机对消息进行处理解析,确保消息处理的及时性,提高消息处理效率。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种AT命令处理方法、装置及设备。
背景技术
嵌入式WiFi模组是一种低功耗、低成本的物联网通信解决方案,旨在为嵌入式设备提供快速入网的能力。主控与WiFi模组之间一般通过UART(异步收发传输器)或SPI(串行外设接口)进行通信:主控向模组发送AT命令,模组回复AT应答,以指示命令是否成功。AT命令可以操作WiFi模组完成一系列事务,其中包括:获取AT固件版本消息、接入WiFi、建立TCP(传输控制协议)连接、发送/接收TCP数等。
因此,亟需提供一种更为可靠的AT命令处理方案。
发明内容
本发明的目的在于提供一种AT命令处理方法、装置及设备,用于解决现有技术中消息处理效率低的问题。
为了实现上述目的,本发明提供如下技术方案:
第一方面,本发明提供一种AT命令处理方法,所述AT命令处理方法应用于AT命令处理系统,所述AT命令处理系统包括消费者线程、生产者线程、解析者线程以及全局状态机;方法包括:
获取用户发送的AT命令;并确定AT命令处理系统的通信模式;所述通信模式包括阻塞模式以及非阻塞模式;
所述生产者线程基于所述通信模式分配消息资源,并将所述消息资源中包含的消息放入消息队列;
所述消费者线程从所述消息队列中取出对应的消息并进行处理,等待所述全局状态机的同步锁;
所述解析者线程接收到模组发来的应答并解析,确定取出的消息的发送状态;
基于所述发送状态释放所述全局状态机的同步锁,等待下一次模组的应答。
第二方面,本发明提供一种AT命令处理装置,所述AT命令处理装置应用于AT命令处理系统,所述AT命令处理系统包括消费者线程、生产者线程、解析者线程以及全局状态机;装置包括:
通信模式获取模块,用于获取用户发送的AT命令;并确定AT命令处理系统的通信模式;所述通信模式包括阻塞模式以及非阻塞模式;
消息资源分配模块,用于所述生产者线程基于所述通信模式分配消息资源,并将所述消息资源中包含的消息放入消息队列;
消息处理模块,用于所述消费者线程从所述消息队列中取出对应的消息并进行处理,等待所述全局状态机的同步锁;
解析模块,用于所述解析者线程接收到模组发来的应答并解析,确定取出的消息的发送状态;
同步锁释放模块,用于基于所述发送状态释放所述全局状态机的同步锁,等待下一次模组的应答。
第三方面,本发明提供一种AT命令处理设备,所述AT命令处理设备应用于AT命令处理系统,所述AT命令处理系统包括消费者线程、生产者线程、解析者线程以及全局状态机;设备包括:
通信单元/通信接口,用于获取用户发送的AT命令;并确定AT命令处理系统的通信模式;所述通信模式包括阻塞模式以及非阻塞模式;
处理单元/处理器,用于所述生产者线程基于所述通信模式分配消息资源,并将所述消息资源中包含的消息放入消息队列;
所述消费者线程从所述消息队列中取出对应的消息并进行处理,等待所述全局状态机的同步锁;
所述解析者线程接收到模组发来的应答并解析,确定取出的消息的发送状态;
基于所述发送状态释放所述全局状态机的同步锁,等待下一次模组的应答。
第四方面,本发明提供一种计算机存储介质,所述计算机存储介质中存储有指令,当所述指令被运行时,实现上述的AT命令处理方法。
与现有技术相比,本发明提供AT命令处理方法、装置及设备,方法包括:获取用户发送的AT命令;并确定AT命令处理系统的通信模式;通信模式包括阻塞模式以及非阻塞模式;生产者线程基于通信模式分配消息资源,并将消息资源中包含的消息放入消息队列;消费者线程从消息队列中取出对应的消息并进行处理,等待全局状态机的同步锁;解析者线程接收到模组发来的应答并解析,确定取出的消息的发送状态;基于发送状态释放所述全局状态机的同步锁,等待下一次模组的应答。本方案的方法适用于阻塞通信模式以及非阻塞通信模式,在处理消息的过程中基于消费者线程、生产者线程、解析者线程以及全局状态机对消息进行处理解析,确保消息处理的及时性,提高消息处理效率。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明提供的一种AT命令处理方法流程示意图;
图2为本发明提供的阻塞模式通信示意图;
图3为本发明提供的非阻塞模式通信示意图;
图4为本发明提供的AT命令处理方法中全局状态机的工作示意图;
图5为本发明提供的AT命令处理方法中解析者解析过程示意图;
图6为本发明提供的一种AT命令处理装置结构示意图;
图7为本发明提供的一种AT命令处理设备结构示意图。
具体实施方式
为了便于清楚描述本发明实施例的技术方案,在本发明的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。例如,第一阈值和第二阈值仅仅是为了区分不同的阈值,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
需要说明的是,本发明中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本发明中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本发明中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,a和b的结合,a和c的结合,b和c的结合,或a、b和c的结合,其中a,b,c可以是单个,也可以是多个。
现有技术中,在进行消息处理过程中,当前消息未处理结束或者发生异常无法处理时,当前消息会被挂起,从而影响后面消息的处理进度。因此,亟需提供一种能够加快消息处理效率的方案。
对此,本发明提供一种AT命令处理方案。
接下来,结合附图对本说明书实施例提供的方案进行说明:
本方案提供的AT命令处理方法应用于AT命令处理系统,其中,AT命令处理系统包括消费者线程、生产者线程、解析者线程以及全局状态机。本方案中主要是主控与模组之间的消息交互。
基于RTOS(实时操作系统),AT命令处理系统中的以下几个角色对应的功能为:
消费者线程:该线程从消息队列中获取消息进行处理。
生产者线程:该线程将消息放入消息队列。
解析者线程:该线程接收WiFi模组发来的应答并解析。
全局状态机:指示当前处理的命令类型,持有消息的引用,同时持有消费者线程和解析的全局同步锁。
上述系统还包括OS接口以及可自定义的AT命令类型和解析接口。其中,OS接口负责线程、消息队列、互斥锁的管理等。
应用于上述系统的AT命令处理方法的具体实现结合图1进行说明:
图1为本发明提供的一种AT命令处理方法流程示意图,如图1所示,该流程可以包括以下步骤:
步骤110:获取用户发送的AT命令;并确定AT命令处理系统的通信模式;所述通信模式包括阻塞模式以及非阻塞模式。
AT即Attention,AT指令集是从终端设备(Terminal Equipment,TE)或数据终端设备(Data Terminal Equipment,DTE)向终端适配器(Terminal Adapter,TA)或数据电路终端设备(Data Circuit Terminal Equipment,DCE)发送的。通过TA,TE发送AT指令来控制移动台(Mobile Station,MS)的功能,与GSM网络业务进行交互。用户可以通过AT指令进行呼叫、短信、电话本、数据业务、传真等方面的控制。
阻塞模式可以是指调用结果返回之前,当前线程会被挂起,线程进入非可执行状态,在这个状态下,cpu不会给线程分配时间片,即线程暂停运行。函数只有在得到结果之后才会返回。
非阻塞模式可以指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。
步骤120:所述生产者线程基于所述通信模式分配消息资源,并将所述消息资源中包含的消息放入消息队列。
生产者线程会分配消息资源,并把消息放入消息队列中,等待后续的传输。
步骤130:所述消费者线程从所述消息队列中取出对应的消息并进行处理,等待所述全局状态机的同步锁。
步骤140:所述解析者线程接收到模组发来的应答并解析,确定取出的消息的发送状态。
本方案中,主控与WiFi模组之间也可以通过UART(异步收发传输器)或SPI(串行外设接口)进行通信:主控向模组发送AT命令,模组回复AT应答,以指示命令是否成功。AT命令可以操作WiFi模组完成一系列事务,其中包括:获取AT固件版本消息、接入WiFi、建立TCP(传输控制协议)连接、发送/接收TCP数等。解析者线程可以接收WiFi模组发来的应答并解析,解析完成之后,确定消息的发送状态。在本方案中,会按照预先设置从消息队列中取出需要发送的消息,发送成功与否,可以基于发送状态来判断。
步骤150:基于所述发送状态释放所述全局状态机的同步锁,等待下一次模组的应答。
图1中的方法,获取用户发送的AT命令;并确定AT命令处理系统的通信模式;通信模式包括阻塞模式以及非阻塞模式;生产者线程基于通信模式分配消息资源,并将消息资源中包含的消息放入消息队列;消费者线程从消息队列中取出对应的消息并进行处理,等待全局状态机的同步锁;解析者线程接收到WiFi模组发来的应答并解析,确定取出的消息的发送状态;基于发送状态释放所述全局状态机的同步锁,等待下一次WiFi模组的应答。本方案的方法适用于阻塞通信模式以及非阻塞通信模式,在处理消息的过程中基于消费者线程、生产者线程、解析者线程以及全局状态机对消息进行处理解析,确保消息处理的及时性,提高消息处理效率。
基于图1的方法,本说明书实施例还提供了该方法的一些具体实施方式,下面进行说明。
接下来,分别以阻塞模式以及非阻塞模式下的消息处理进行说明:
阻塞模式下的信息通信可以结合图2进行说明:图2为本发明提供的阻塞模式通信示意图。如图2所示,相关主体包括用户、生产者线程、消费者线程以及解析者线程。具体操作过程如下:
用户发起AT命令生产者线程分配消息资源,将消息放入消息队列,等待消息的互斥锁(blocking_time)。
消费者线程从消息队列中取出消息,设置状态机的消息引用;对消息进行处理,等待全局状态机的同步锁。
解析者线程接收到WiFi模组发来的应答并解析。解析完毕后,根据状态机的消息引用设置消息的状态(该条命令发送成功或是发送失败);释放全局状态机的同步锁,等待下一次WiFi模组的应答。
消费者线程继续执行,置全局状态机的消息引用为空;释放消息的互斥锁,等待取出下一个消息。
生产者线程继续执行,获取消息的状态(成功/失败)。若在blocking_time时间内互斥锁不能释放,则生产者线程设置返回状态为超时。最后,生产者线程释放消息资源,完毕。
非阻塞模式下的信息通信可以结合图3进行说明:图3为本发明提供的非阻塞模式通信示意图。如图3所示,相关主体包括用户、生产者线程、消费者线程以及解析者线程。具体操作过程如下:
生产者线程分配消息资源,设置消息类型,将消息放入消息队列,完毕。
消费者线程从消息队列中取出消息,设置状态机的消息引用;对消息进行处理,等待全局状态机的同步锁。
解析者线程接收到WiFi模组发来的应答并解析。解析完毕后,根据状态机的消息引用设置消息的状态(该条命令发送成功或是发送失败);释放全局状态机的同步锁,等待下一次WiFi模组的应答。
消费者线程继续执行,获取消息的状态(成功/失败),调用消息回调函数以通知生产者线程;置全局状态机的消息引用为空,释放消息资源,等待取出下一个消息。
可选的,所述解析者线程接收到模组发来的应答并解析,确定取出的消息的发送状态之前,还可以包括:
设置所述全局状态机的消息引用;
所述解析者线程接收到模组发来的应答并解析,确定取出的消息的发送状态,具体包括:
根据所述全局状态机的消息引用设置消息的发送状态;所述发送状态包括发送成功或发送失败。
可选的,全局状态机的工作流程可以结合图4进行说明。图4为本发明提供的AT命令处理方法中全局状态机的工作示意图。如图4所示,接收到开始命令之后,全局状态机的消息引用为空,消费者线程取出消息之后,消息被引用,消费者线程等待同步锁,同步锁锁定,解析者线程释放同步锁,同步锁被释放之后,消费者线程置状态机的消息引用为空。
进一步地,解析者的对外接口可以为:resolver_parse_received(data,len)。其中data为收到的AT应答,len为该应答的长度。解析者的解析过程可以结合图5进行说明。图5为本发明提供的AT命令处理方法中解析者解析过程示意图。如图5所示,所述解析者线程接收到模组发来的应答并解析之前,还可以包括:
所述解析者线程获取当前接收的消息;
判断当前接收的消息是否为TCP数据,得到判断结果;
若所述判断结果表示当前接收的消息为TCP数据,则将当前接收的消息加入TCP缓冲区,接收完毕后调用用户接收回调函数;
若所述判断结果表示当前接收的消息不是TCP数据,则将数据加入接收缓冲区。
所述解析者线程接收到模组发来的应答并解析,具体可以包括:
当所述解析者线程接收到特定指令时,从所述全局状态机得到当前接收的消息对应的消息引用以及消息类型;
根据所述特定指令中的关键字,设置消息的状态;
根据所述消息类型,对缓冲区中的消息进行解析,得到解析结果并保存;所述解析结果中至少包括IP地址以及端口号;
重置接收缓冲区。然后释放状态机的同步锁。
其中,特定指令可以是"\r\n",关键字可以是例如"OK","ERROR","ready"等。接收结果可以包括如fd,IP地址,端口号等信息。
上述本发明提供的技术方案,适用于阻塞通信模式以及非阻塞通信模式,在处理消息的过程中基于消费者线程、生产者线程、解析者线程以及全局状态机对消息进行处理解析,确保消息处理的及时性,提高消息处理效率。进一步提高主控与模组之间的实时性、可靠性以及可编程性。
基于同样的思路,本发明还提供一种AT命令处理装置,所述AT命令处理装置应用于AT命令处理系统,所述AT命令处理系统包括消费者线程、生产者线程、解析者线程以及全局状态机,图6为本发明提供的一种AT命令处理装置结构示意图。如图6所示,所述装置可以包括:
通信模式获取模块610,用于获取用户发送的AT命令;并确定AT命令处理系统的通信模式;所述通信模式包括阻塞模式以及非阻塞模式;
消息资源分配模块620,用于所述生产者线程基于所述通信模式分配消息资源,并将所述消息资源中包含的消息放入消息队列;
消息处理模块630,用于所述消费者线程从所述消息队列中取出对应的消息并进行处理,等待所述全局状态机的同步锁;
解析模块640,用于所述解析者线程接收到模组发来的应答并解析,确定取出的消息的发送状态;
同步锁释放模块650,用于基于所述发送状态释放所述全局状态机的同步锁,等待下一次模组的应答。
基于图6中的装置,还可以包括一些具体的实施单元:
可选的,当所述通信模式为阻塞模式时,所述装置,还可以包括:
互斥锁等待模块,用于等待所述消息资源中包含的消息的互斥锁。
可选的,所述装置,还可以包括:
互斥锁释放模块,用于所述消费者线程继续执行,置所述全局状态机的消息引用为空;释放所述互斥锁,等待取出下一个消息;
消息资源释放模块,用于所述生产者线程继续执行,基于所述发送状态,所述生产者线程释放所述消息资源;在阻塞时间内所述互斥锁不能释放,此时,所述生产者线程设置返回状态为超时。
可选的,当所述通信模式为非阻塞模式时,所述装置,还可以包括:
消费者线程执行模块,用于所述消费者线程继续执行,基于所述发送状态,调用消息回调函数以通知生产者线程;置状态机的消息引用为空,释放消息资源,等待取出下一个消息。
可选的,所述装置,还可以包括:
当前接收信息获取模块,用于所述解析者线程获取当前接收的消息;
判断模块,用于判断当前接收的消息是否为TCP数据,得到判断结果;
TCP数据缓存模块,用于若所述判断结果表示当前接收的消息为TCP数据,则将当前接收的消息加入TCP缓冲区,接收完毕后调用用户接收回调函数;
数据缓存模块,用于若所述判断结果表示当前接收的消息不是TCP数据,则将数据加入接收缓冲区。
可选的,所述解析模块640,具体可以包括:
消息引用以及消息类型接收单元,用于当所述解析者线程接收到特定指令时,从所述全局状态机得到当前接收的消息对应的消息引用以及消息类型;
消息状态设置单元,用于根据所述特定指令中的关键字,设置消息的状态;
解析单元,应用根据所述消息类型,对缓冲区中的消息进行解析,得到解析结果并保存;所述解析结果中至少包括IP地址以及端口号;
缓冲区重置单元,用于重置接收缓冲区。
可选的,所述装置,还可以包括:
消息引用设置模块,应用设置所述全局状态机的消息引用;
所述解析模块640,具体可以包括:
发送状态设置单元,用于根据所述全局状态机的消息引用设置消息的发送状态;所述发送状态包括发送成功或发送失败。
基于同样的思路,本说明书实施例还提供了一种AT命令处理设备。图7为本发明提供的一种AT命令处理设备结构示意图。可以包括:
通信单元/通信接口,用于获取用户发送的AT命令;并确定AT命令处理系统的通信模式;所述通信模式包括阻塞模式以及非阻塞模式;
处理单元/处理器,用于所述生产者线程基于所述通信模式分配消息资源,并将所述消息资源中包含的消息放入消息队列;
所述消费者线程从所述消息队列中取出对应的消息并进行处理,等待所述全局状态机的同步锁;
所述解析者线程接收到模组发来的应答并解析,确定取出的消息的发送状态;
基于所述发送状态释放所述全局状态机的同步锁,等待下一次模组的应答。
如图7所示,上述终端设备还可以包括通信线路。通信线路可包括一通路,在上述组件之间传送消息。存储器可以是只读存储器(read-only memory,ROM)或可存储静态消息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储消息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过通信线路与处理器相连接。存储器也可以和处理器集成在一起。
可选的,本发明实施例中的计算机执行指令也可以称之为应用程序代码,本发明实施例对此不作具体限定。
在具体实现中,作为一种实施例,如图7所示,处理器可以包括一个或多个CPU,如图7中的CPU0和CPU1。
在具体实现中,作为一种实施例,如图7所示,终端设备可以包括多个处理器,如图7中的处理器。这些处理器中的每一个可以是一个单核处理器,也可以是一个多核处理器。
基于同样的思路,本说明书实施例还提供了上述实施例对应的计算机存储介质,计算机存储介质中存储有指令,当所述指令被运行时,实现上述实施例中的方法。
上述主要从各个模块之间交互的角度对本发明实施例提供的方案进行了介绍。可以理解的是,各个模块为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件单元。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本发明能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
本发明实施例可以根据上述方法示例进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
本说明书中的处理器还可以具有存储器的功能。存储器用于存储执行本发明方案的计算机执行指令,并由处理器来控制执行。处理器用于执行存储器中存储的计算机执行指令,从而实现本发明实施例提供的方法。
存储器可以是只读存储器(read-only memory,ROM)或可存储静态消息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储消息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过通信线路与处理器相连接。存储器也可以和处理器集成在一起。
可选的,本发明实施例中的计算机执行指令也可以称之为应用程序代码,本发明实施例对此不作具体限定。
上述本发明实施例揭示的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(digital signal processing,DSP)、ASIC、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的消息,结合其硬件完成上述方法的步骤。
一种可能的实现方式中,提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当指令被运行时,用于实现上述实施例中的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机程序或指令。在计算机上加载和执行所述计算机程序或指令时,全部或部分地执行本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、终端、用户设备或者其它可编程装置。所述计算机程序或指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机程序或指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是集成一个或多个可用介质的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,例如,软盘、硬盘、磁带;也可以是光介质,例如,数字视频光盘(digital video disc,DVD);还可以是半导体介质,例如,固态硬盘(solid state drive,SSD)。
尽管在此结合各实施例对本发明进行了描述,然而,在实施所要求保护的本发明过程中,本领域技术人员通过查看附图、公开内容、以及所附权利要求书,可理解并实现公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
尽管结合具体特征及其实施例对本发明进行了描述,显而易见的,在不脱离本发明的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本发明的示例性说明,且视为已覆盖本发明范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
Claims (10)
1.一种AT命令处理方法,其特征在于,AT命令处理方法应用于AT命令处理系统,所述AT命令处理系统包括消费者线程、生产者线程、解析者线程以及全局状态机;方法包括:
获取用户发送的AT命令;并确定AT命令处理系统的通信模式;所述通信模式包括阻塞模式以及非阻塞模式;
所述生产者线程基于所述通信模式分配消息资源,并将所述消息资源中包含的消息放入消息队列;
所述消费者线程从所述消息队列中取出对应的消息并进行处理,等待所述全局状态机的同步锁;
所述解析者线程接收到模组发来的应答并解析,确定取出的消息的发送状态;
基于所述发送状态释放所述全局状态机的同步锁,等待下一次模组的应答。
2.根据权利要求1所述的方法,其特征在于,当所述通信模式为阻塞模式时,所述生产者线程基于所述通信模式分配消息资源,并将所述消息资源中包含的消息放入消息队列之后,还包括:
等待所述消息资源中包含的消息的互斥锁。
3.根据权利要求2所述的方法,其特征在于,所述基于所述发送状态释放所述全局状态机的同步锁,等待下一次模组的应答之后,还包括:
所述消费者线程继续执行,置所述全局状态机的消息引用为空;释放所述互斥锁,等待取出下一个消息;
所述生产者线程继续执行,基于所述发送状态,所述生产者线程释放所述消息资源;在阻塞时间内所述互斥锁不能释放,此时,所述生产者线程设置返回状态为超时。
4.根据权利要求1所述的方法,其特征在于,当所述通信模式为非阻塞模式时,所述基于所述发送状态释放所述全局状态机的同步锁,等待下一次模组的应答之后,还包括:
所述消费者线程继续执行,基于所述发送状态,调用消息回调函数以通知生产者线程;置状态机的消息引用为空,释放消息资源,等待取出下一个消息。
5.根据权利要求1所述的方法,其特征在于,所述解析者线程接收到模组发来的应答并解析之前,还包括:
所述解析者线程获取当前接收的消息;
判断当前接收的消息是否为TCP数据,得到判断结果;
若所述判断结果表示当前接收的消息为TCP数据,则将当前接收的消息加入TCP缓冲区,接收完毕后调用用户接收回调函数;
若所述判断结果表示当前接收的消息不是TCP数据,则将数据加入接收缓冲区。
6.根据权利要求5所述的方法,其特征在于,所述解析者线程接收到模组发来的应答并解析,具体包括:
当所述解析者线程接收到特定指令时,从所述全局状态机得到当前接收的消息对应的消息引用以及消息类型;
根据所述特定指令中的关键字,设置消息的状态;
根据所述消息类型,对缓冲区中的消息进行解析,得到解析结果并保存;所述解析结果中至少包括IP地址以及端口号;
重置所述接收缓冲区。
7.根据权利要求1所述的方法,其特征在于,所述解析者线程接收到模组发来的应答并解析,确定取出的消息的发送状态之前,还包括:
设置所述全局状态机的消息引用;
所述解析者线程接收到模组发来的应答并解析,确定取出的消息的发送状态,具体包括:
根据所述全局状态机的消息引用设置消息的发送状态;所述发送状态包括发送成功或发送失败。
8.一种AT命令处理装置,其特征在于,所述AT命令处理装置应用于AT命令处理系统,所述AT命令处理系统包括消费者线程、生产者线程、解析者线程以及全局状态机;装置包括:
通信模式获取模块,用于获取用户发送的AT命令;并确定AT命令处理系统的通信模式;所述通信模式包括阻塞模式以及非阻塞模式;
消息资源分配模块,用于所述生产者线程基于所述通信模式分配消息资源,并将所述消息资源中包含的消息放入消息队列;
消息处理模块,用于所述消费者线程从所述消息队列中取出对应的消息并进行处理,等待所述全局状态机的同步锁;
解析模块,用于所述解析者线程接收到模组发来的应答并解析,确定取出的消息的发送状态;
同步锁释放模块,用于基于所述发送状态释放所述全局状态机的同步锁,等待下一次模组的应答。
9.一种AT命令处理设备,其特征在于,所述AT命令处理设备应用于AT命令处理系统,所述AT命令处理系统包括消费者线程、生产者线程、解析者线程以及全局状态机;设备包括:
通信单元/通信接口,用于获取用户发送的AT命令;并确定AT命令处理系统的通信模式;所述通信模式包括阻塞模式以及非阻塞模式;
处理单元/处理器,用于所述生产者线程基于所述通信模式分配消息资源,并将所述消息资源中包含的消息放入消息队列;
所述消费者线程从所述消息队列中取出对应的消息并进行处理,等待所述全局状态机的同步锁;
所述解析者线程接收到模组发来的应答并解析,确定取出的消息的发送状态;
基于所述发送状态释放所述全局状态机的同步锁,等待下一次模组的应答。
10.一种计算机存储介质,其特征在于,所述计算机存储介质中存储有指令,当所述指令被运行时,实现权利要求1~7任一项所述的AT命令处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211338610.3A CN115695592A (zh) | 2022-10-28 | 2022-10-28 | 一种at命令处理方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211338610.3A CN115695592A (zh) | 2022-10-28 | 2022-10-28 | 一种at命令处理方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115695592A true CN115695592A (zh) | 2023-02-03 |
Family
ID=85046890
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211338610.3A Pending CN115695592A (zh) | 2022-10-28 | 2022-10-28 | 一种at命令处理方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115695592A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116112911A (zh) * | 2023-02-10 | 2023-05-12 | 迈普通信技术股份有限公司 | At指令处理方法、装置、终端设备和存储介质 |
-
2022
- 2022-10-28 CN CN202211338610.3A patent/CN115695592A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116112911A (zh) * | 2023-02-10 | 2023-05-12 | 迈普通信技术股份有限公司 | At指令处理方法、装置、终端设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111756811B (zh) | 一种分布式系统的主动推送的方法、系统、设备及介质 | |
CN110958281B (zh) | 基于物联网的数据传输方法及通信装置 | |
CN108124003B (zh) | 网络管理设备连接处理方法、装置及系统 | |
US8732694B2 (en) | Method and system for performing services in server and client of client/server architecture | |
CN111737022A (zh) | 一种基于微服务的接口调用方法、系统、设备及介质 | |
CN111597061A (zh) | 一种客户端或服务端进行远程过程调用方法及装置 | |
CN109819023B (zh) | 分布式事务处理方法及相关产品 | |
CN115695592A (zh) | 一种at命令处理方法、装置及设备 | |
CN115269213A (zh) | 数据接收方法、数据发送方法、装置、电子设备及介质 | |
CN106959900B (zh) | 一种防止多线程死锁的方法及装置 | |
CN110750365A (zh) | 一种远程过程调用方法、系统、终端及存储介质 | |
CN108737397B (zh) | 一种实现路由器中业务与协议栈之间数据交互的方法 | |
WO2021238259A1 (zh) | 一种数据传输方法、装置、设备及计算机可读存储介质 | |
CN110245027B (zh) | 一种进程间通信的方法和设备 | |
CN114253792A (zh) | 日志跟踪方法、装置、设备和存储介质 | |
CN108830724B (zh) | 一种资源数据包处理方法及终端设备 | |
CN114138371B (zh) | 配置动态加载方法、装置及计算机设备、存储介质 | |
CN102693434B (zh) | 射频识别设备接口层的通信装置及方法 | |
CN110311936B (zh) | 客户端之间的通讯方法、装置、电子设备及存储介质 | |
CN115712493A (zh) | 请求处理方法、设备及系统 | |
US9509780B2 (en) | Information processing system and control method of information processing system | |
EP3669523B1 (en) | A method of, and a message broker function for, detecting race conditions in a service based communication architecture network | |
CN113572701A (zh) | 服务接口流控方法、装置、设备及存储介质 | |
CN113765819A (zh) | 资源访问方法、装置、电子设备及存储介质 | |
CN112615916A (zh) | 文件部署方法、装置、电子设备以及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |