应用于安卓系统运行层处理串口命令的方法及装置与流程

文档序号:11691013阅读:290来源:国知局
应用于安卓系统运行层处理串口命令的方法及装置与流程

本申请涉及安卓系统技术领域,尤其涉及一种应用于安卓系统运行层处理串口命令的方法及装置。



背景技术:

随着工业自动化技术的发展,在安卓设备,例如安卓智能电视的生产过程中,利用安卓设备上的串行接口使得安卓设备与串口设备之间建立串口通信连接,并在串行设备上安装上位机软件,以实现通过串行设备控制安卓设备已得到越来越广泛的应用,通过上述所描述的串口控制功能可以提高对安卓设备控制的及时性、安全性。

在现有技术中,由于串口控制功能是基于工厂生产的应用场景进行开发设计的,当安卓设备接收到串行设备发送的串口命令后,该串口命令将依次通过安卓系统架构中的linux核心层、系统运行层、应用程序框架层,最终传输到应用程序层,由应用程序层的指定应用实现对该串口命令的业务处理。

然而,随着业务的扩展,在越来越多的应用场景下都期望能支持串口控制功能,而不同应用场景下,安卓系统架构中应用程序层中运行的应用不同,那么,针对不同的应用,都需要增加对串口命令进行业务处理的功能,从而将不可避免地增加应用开发者的工作量,增加应用开发的难度。



技术实现要素:

有鉴于此,本申请提供一种应用于安卓系统运行层处理串口命令的方法及装置,通过在安卓系统运行层预置串口控制功能,以满足多种应用场景下的串口控制需求,同时降低应用开发的难度,减轻应用开发者的工作负担。

具体地,本申请是通过如下技术方案实现的:

根据本申请实施例的第一方面,提供一种应用于安卓系统运行层处理串口命令的方法,所述方法包括:

当接收到的串口命令携带有预设标识时,在预存的命令处理函数中查找到与所述串口命令相匹配的命令处理函数;

根据所述相匹配的命令处理函数执行所述串口命令,并根据执行结果向用于发送所述串口命令的串口设备发送应答消息。

根据本申请实施例的第二方面,提供一种应用于安卓系统运行层处理串口命令的装置,所述装置包括:

查找模块,用于当接收到的串口命令携带有预设标识时,在预存的命令处理函数中查找到与所述串口命令相匹配的命令处理函数;

执行模块,用于根据所述相匹配的命令处理函数执行所述串口命令,并根据执行结果向用于发送所述串口命令的串口设备发送应答消息。

由上述实施例可见,通过在安卓系统运行层中预置串口控制功能,以及预置命令处理函数,可以实现在系统运行层执行串口命令,也即安卓系统运行层在接收到串口命令后,不需要上抛给应用程序层,由于不再需要应用程序层中的应用对串口命令进行业务处理,从而在满足多种应用场景下的串口控制需求时,不再需要为各种应用增加对串口命令进行业务处理的功能,从而可以降低应用开发的难度,减轻应用开发者的工作负担。

附图说明

图1a为本申请实施例实现应用于安卓系统运行层处理串口命令的方法的一个应用场景示意图;

图1b为安卓系统架构的示意图;

图2a为本申请应用于安卓系统运行层处理串口命令的方法的一个实施例流程图;

图2b为串口命令模式的一个示例;

图3为向用户发送显示消息的一个实施例流程图;

图4为本申请应用于安卓系统运行层处理串口命令的装置的一个实施例框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

请参见图1a,为本申请实施例实现应用于安卓系统运行层处理串口命令的方法的一个应用场景示意图,图1b,为安卓系统架构的示意图。图1a中包括串口设备11、安卓设备12,安卓设备13,其中,以安卓设备12与安卓设备13为安卓智能电视为例,该两台安卓设备可以通过各自的串行接口(图1a中并未示出)与串口设备11之间分别建立串口通信连接;串口设备11上可以安装有上位机软件(图1a中并未示出),串口设备11可以通过该上位机软件向安卓设备12以及安卓设备13发送串口命令。需要说明的是,图1a中仅以包括两台安卓设备为例,在实际应用中,串口设备11可以同时与多台安卓设备之间建立有串口通信连接,具体可同时建立串口通信连接的安卓设备的数量可以由串口设备11的硬件性能决定,本申请对此并不作限制。

以安卓设备12为例,该安卓设备12上的安卓系统的架构可以如图1b所示。在图1b中,按照从底层到顶层的顺序,安卓系统的架构依次包括linux内核层、系统运行层、应用框架层,以及应用程序层。

其中,linux内核层作为硬件与软件栈之间的抽象层,其服务依赖于linux2.6内核。系统运行层包括系统库和android运行库,系统库包括九个子系统,分别是图层管理、媒体库、sqlite、openglestate、freetype、webkit、sgl、ssl和libc;android运行库包括核心库和dalvik虚拟机,核心库既兼容了大多数java语言所需要调用的功能函数,又包括了android的核心库,比如android.os、android.net、android.media等等;dalvik虚拟机是一种基于寄存器的java虚拟机,其主要是完成对生命周期的管理、堆栈的管理、线程的管理、安全和异常的管理以及垃圾回收等重要功能。应用程序框架层是android应用开发的基础,其包括十个部分,分别为活动管理器、窗口管理器、内容提供者、视图系统、包管理器、电话管理器、资源管理器、位置管理器、通知管理器和xmpp服务。应用程序层提供一些核心应用程序包,例如电子邮件、短信、日历、地图、浏览器和联系人管理等,同时,开发者可以利用java语言设计和编写属于自己的应用程序。

在现有技术中,结合图1a所示例的应用场景,以及图1b所示例的安卓系统架构的示意图,串口设备11向安卓设备12发送串口命令后,该串口命令首先被传输至linux内核层,之后再传输至系统运行层,在系统运行层中,til(tvinterfacelayer,tv接口层)模块用于监听串口,那么,当该串口命令传输至系统运行层时,til模块可以监听到该串口命令,并对该串口命令进行合法性检测,当确定该串口命令合法时,将该串口命令传输至应用框架层,再从应用框架层传输至应用程序层,应用程序层中的指定应用(图1b中未示出)识别该串口命令对应的功能,确定安卓设备12是否支持该串口命令对应的功能,当确定安卓设备12支持该串口命令对应的功能时,该应用通过调用应用框架层提供的功能接口(图1b中未示出),再由应用框架层调用系统运行层中的c接口(图1b中未示出),将该串口命令传输至系统运行层,由系统运行层中的中间件模块(图1b中未示出)执行该串口命令,得到执行结果,中间件模块将该执行结果上传至应用框架层,之后再从应用框架层上传至应用程序层中的指定应用,该指定应用根据执行结果生成应答消息,之后,该应答消息依次通过应用框架层、系统运行层、linux内核层,最终传输至串口设备11。

由上述所描述的处理串口命令的过程可见,由指定应用调用接口或位于其他架构层的命令处理函数处理串口命令,不仅过程较为繁杂,而且针对不同的应用,都需要增加对串口命令进行业务处理的功能,从而将不可避免地增加应用开发者的工作量,增加应用开发的难度。

有鉴于此,本申请提供一种应用于安卓系统运行层处理串口命令的方法及装置,通过在安卓系统运行层预置串口控制功能,以满足多种应用场景下的串口控制需求,同时降低应用开发的难度,减轻应用开发者的工作负担以提高安卓设备与串口设备之间进行串口通信的效率。

如下,列举下述实施例说明本申请提供的应用于安卓系统运行层处理串口命令的方法。

请参考图2a,为本申请应用于安卓系统运行层处理串口命令的方法的一个实施例流程图,该方法可以应用于安卓设备,例如图1a中所示例的安卓设备12或安卓设备13上,该方法可以包括以下步骤:

步骤s201:当接收到的串口命令携带有预设标识时,在预存的命令处理函数中查找到与串口命令相匹配的命令处理函数。

以安卓设备12为例,根据安卓设备12所支持的串口协议不同,串口命令的模式不同,例如,如图2b所示,为串口命令模式的一个示例。在该图2b所示例的串口命令模式中,串口命令可以包括起始码、命令长度、命令码、数据、校验和、结束码。

在本申请中,串口设备11向安卓设备12发送串口命令后,该串口命令通过linux内核层传输至系统运行层,系统运行层中的til模块监听到串口命令时,可以首先检测该串口命令是否携带有预设标识,该预设标识可以为串口协议规范的串口命令的起始码和结束码,例如,检测该串口命令的起始码是否为“ddff”,结束码是否为“bbcc”。

若起始码和结束码符合串口协议规范,til模块可以继续确定该串口命令是否合法,例如确定串口命令中的命令长度字段是否跟数据字段相符,确定校验和字段中的值是否正确。

在本申请中,可以在til模块中注册中间件模块的一个listener,例如“d1->registerfsmlistener(&fsm,&listener)”,当til模块检测该串口命令合法时,可以调用listener的命令处理函数。具体的,当til模块检测该串口命令合法时,识别该串口命令中的命令码字段,例如,如图2b所示例的串口命令中,命令码字段为“a1090000”,在listener的预存的命令处理函数中查找到与该命令码字段相匹配的命令处理函数。

此外,在本申请中,当til模块检测到串口命令不合法时,可以直接丢弃该串口命令。

步骤202:根据相匹配的命令处理函数执行串口命令,并根据执行结果向用于发送串口命令的串口设备发送应答消息。

在本申请中,在系统运行层根据相匹配的命令处理函数执行串口命令,并根据执行结果向串口设备11发送应答消息,该应答消息可以由系统运行层,通过linux内核层传输至串口设备11。

在一示例性应用场景中,假设串口命令对应的功能为读取安卓设备12当前的音量值,那么,执行该串口命令后,执行的结果可以为所读取到的安卓设备12当前的音量值,此时,可以将安卓设备12当前的音量值携带在应答消息中,将应答消息发送至串口设备11。

在一示例性应用场景中,假设串口命令对应的功能为切换安卓设备12当前的信号源,那么,执行该串口命令对应的功能后,执行的结果可以为信号源切换成功,或者信号源切换失败,此时,可以将该执行的结果携带在应答消息中,将应答消息发送至合法性检测模块。

需要说明的是,如上应用场景仅仅作为示例,说明安卓设备12是如何根据串口命令的执行结果向串口设备11发送应答消息的,本申请对比不作限制。

由上述实施例可见,通过在安卓系统运行层中预置串口控制功能,以及预置命令处理函数,可以实现在系统运行层执行串口命令,也即安卓系统运行层在接收到串口命令后,不需要上抛给应用程序层,由于不再需要应用程序层中的应用对串口命令进行业务处理,从而在满足多种应用场景下的串口控制需求时,不再需要为各种应用增加对串口命令进行业务处理的功能,从而可以降低应用开发的难度,减轻应用开发者的工作负担。

此外,根据用户的需求,可以根据执行串口命令的执行结果,在安卓设备12的ui显示界面上向用户发送显示消息,如图3所示,为向用户发送显示消息的一个实施例流程图,该流程包括如下步骤:

步骤301:将执行结果发送至位于安卓应用程序层中的目标应用。

在系统运行层中调用相匹配的命令处理函数执行串口命令后,可以将执行结果发送至应用程序层,应用程序层中的目标应用可以监听到该执行结果。

在一实施例中,可以预先在系统运行层中为位于安卓应用程序层中的目标应用注册回调函数,并将该回调函数的回调指针注册给系统运行层,将得到串口命令的执行结果注册为调用该回调函数的特定事件,那么,在系统运行层中执行串口命令,得到执行结果后,可以调用该回调函数,将执行结果发送至应用程序层中的目标应用。

步骤302:目标应用显示执行结果。

在一示例性应用场景中,假设串口命令对应的功能为读取安卓设备12当前的音量值,那么,在系统运行层执行该串口命令后,得到的执行结果可以为所读取到的安卓设备12当前的音量值,此时,目标应用可以显示该执行结果,即显示安卓设备12当前的音量值。

在一示例性应用场景中,假设串口命令对应的功能为切换安卓设备12当前的信号源,那么,在系统运行层执行该串口命令后,得到的执行结果可以为信号源切换成功,或者信号源切换失败。当执行结果为信号源切换成功时,目标应用可以显示信号源切换成功的执行结果,还可以显示当前的信号源,例如为hdmi1。

需要说明的是,如上应用场景仅仅作为示例,说明安卓设备12是如何根据串口命令的执行结果发送显示消息的,本申请对比不作限制。

由上述实施例可见,通过根据执行串口命令得到的执行结果,生成显示消息,并可以通过ui界面向用户发送该显示消息,可以使得用户直观清楚地获知安卓设备执行串口命令对应的功能的执行结果,从而可以提升用户体验。

与前述应用于安卓系统运行层处理串口命令的方法的实施例相对应,本申请还提供了应用于安卓系统运行层处理串口命令的装置的实施例。

请参见图4,为本申请应用于安卓系统运行层处理串口命令的装置的一个实施例框图,该装置可以包括查找模块41、执行模块42。

其中,该查找模块41,可以用于当接收到的串口命令携带有预设标识时,在预存的命令处理函数中查找到与所述串口命令相匹配的命令处理函数;

该执行模块42,可以用于根据所述相匹配的命令处理函数执行所述串口命令,并根据执行结果向用于发送所述串口命令的串口设备发送应答消息。。

在一实施例中,该装置还可以包括(图4中并未示出):

发送模块,可以用于将所述执行结果发送至位于安卓应用程序层中的目标应用,以使所述目标应用显示所述执行结果。

在一实施例中,该发送模块可以具体用于:通过调用预设的回调函数,将所述执行结果发送至位于安卓应用程序层中的目标应用。

在一实施例中,该查找模块41可以包括(图4中并未示出):第一确定子模块、识别子模块、第二确定子模块。

其中,该第一确定子模块,可以用于确定所述串口命令是否合法;

该识别子模块,可以用于当确定所述串口命令合法时,识别所述串口命令中的命令码字段;

该第二确定子模块,可以用于在预存的命令处理函数中查找到与所述命令码字段相匹配的命令处理函数。

在一实施例中,所述装置还可以包括(图4中并未示出):

处理模块,可以用于当接收到的串口命令未携带有预设标识时,丢弃所述串口命令。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1