一种智能终端与单片机通信的方法和智能终端与流程

文档序号:17126050发布日期:2019-03-16 00:27阅读:190来源:国知局
一种智能终端与单片机通信的方法和智能终端与流程

本公开涉及智能终端领域,尤其涉及一种智能终端与单片机通信的方法和智能终端。



背景技术:

单片机由于其体积小、质量轻、价格便宜的特点,已经广泛应用于多个工程控制领域。随着时代的发展,各种智能终端,比如智能手机、平板电脑,由于拥有无线通信以及智能控制方面的优势也逐渐进入到不同的工程控制领域。智能终端与单片机的稳定通信也成为必然趋势。

现有的技术方案智能终端只能与和单一的外设设备相连的单片机进行通信。



技术实现要素:

本公开的主要目的是使智能终端可以与和多个外设设备相连的单片机通信。

为了实现上述目的,本公开提供一种智能终端与单片机通信的方法,包括:

在所述智能终端的系统中启动与所述单片机通信的服务,所述服务包括服务端和客户端;

所述服务端接收所述客户端发送的至少一个请求消息;

所述服务端使用消息队列对所述请求消息解析后重新封装;

所述服务端将重新封装的请求消息发送给所述单片机,以使所述单片机将所述请求消息转发给与所述单片机连接的外设设备;

所述服务端接收所述单片机转发的所述外设设备根据所述请求消息返回的响应消息;

所述服务端将所述响应消息发送给所述客户端;

所述客户端处理所述响应消息。

可选地,所述请求消息中包括如下信息中的至少一种:与所述单片机相连的至少一个外设设备的设备标识、对所述外设设备进行的操作、需要写入所述外设设备的数据内容。

可选地,在所述服务端接收所述客户端发送的至少一个请求消息之前,所述方法还包括:所述服务判断所述单片机是否下载或升级使所述单片机和所述外设设备通信的程序。

可选地,所述服务判断所述单片机是否下载或升级使所述单片机和所述外设设备通信的程序具体包括:

所述服务和所述单片机通信并检测所述单片机是否有确认ack,如果有确认ack,进而读取所述程序的程序版本号,并和所述智能终端系统中的程序版本号做对比来区分是否需要升级所述程序,如果一致,则不升级所述程序,如果不一致,则升级所述程序;

如果没有确认ack,则下载所述程序。

可选地,所述方法还包括:

所述服务端接收所述客户端发送的程序升级请求;

所述服务端控制所述单片机进入下载模式进行程序升级。

本公开还提供一种智能终端,包括:

启动模块,用于在所述智能终端的系统中启动与单片机通信的服务,所述服务包括服务端和客户端;

所述服务端,用于接收所述客户端发送的至少一个请求消息;使用消息队列对所述请求消息解析后重新封装;将重新封装的请求消息发送给所述单片机,以使所述单片机将所述请求消息转发给与所述单片机连接的外设设备;接收所述单片机转发的所述外设设备根据所述请求消息返回的响应消息;并将所述响应消息发送给所述客户端;

所述客户端,用于处理所述响应消息。

可选地,所述请求消息中包括如下信息中的至少一种:与所述单片机相连的至少一个外设设备的设备标识、对所述外设设备进行的操作、需要写入所述外设设备的数据内容。

可选地,所述智能终端还包括:判断模块,用于判断所述单片机是否下载或升级使所述单片机和所述外设设备通信的程序。

可选地,所述判断模块具体包括:

通信检测单元,用于和所述单片机通信并检测所述单片机是否有确认ack;

读取单元,用于如果所述通信检测单元检测所述单片机有确认ack,进而读取所述程序的程序版本号;

对比单元,用于和所述智能终端系统中的程序版本号做对比来区分是否需要升级所述程序,如果一致,则不升级所述程序;

升级单元,用于所述对比单元对比的结果为不一致时,升级所述程序;

下载单元,用于所述通信检测单元检测所述单片机如果没有确认ack,下载所述程序。

可选地,所述服务端,还用于接收所述客户端发送的程序升级请求;并控制所述单片机进入下载模式进行程序升级。

本公开方案中,在所述智能终端的系统中启动与所述单片机通信的服务,所述服务包括服务端和客户端;所述服务端接收所述客户端发送的至少一个请求消息;使用消息队列对所述请求消息解析后重新封装;将重新封装的请求消息发送给所述单片机,以使所述单片机将所述请求消息转发给与所述单片机连接的外设设备;接收所述单片机转发的所述外设设备根据所述请求消息返回的响应消息;并将所述响应消息发送给所述客户端;所述客户端处理所述响应消息。如此,所述智能终端可以与多个外设设备相连的单片机通信,该多个外设设备功能可以相同,也可以不同。

本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。

附图说明

附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:

图1为本公开方案中一种智能终端与单片机通信的方法的流程示意图;

图2为本公开方案的硬件架构示意图;

图3为本公开提供的一种智能终端的结构示意图。

具体实施方式

以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。

参见图1,示出了本公开一种智能终端与单片机通信的方法的流程示意图,所述方法包括:

s1、在所述智能终端的系统中启动与所述单片机通信的服务,所述服务包括服务端和客户端;

s2、所述服务端接收所述客户端发送的至少一个请求消息;

s3、所述服务端使用消息队列对所述请求消息解析后重新封装;

s4、所述服务端将重新封装的请求消息发送给所述单片机,以使所述单片机将所述请求消息转发给与所述单片机连接的外设设备;

s5、所述服务端接收所述单片机转发的所述外设设备根据所述请求消息返回的响应消息;

s6、所述服务端将所述响应消息发送给所述客户端;

s7、所述客户端处理所述响应消息。

本公开方案中,在所述智能终端的系统中启动与所述单片机通信的服务,所述服务包括服务端和客户端;所述服务端接收所述客户端发送的至少一个请求消息;使用消息队列对所述请求消息解析后重新封装;将重新封装的请求消息发送给所述单片机,以使所述单片机将所述请求消息转发给与所述单片机连接的外设设备;接收所述单片机转发的所述外设设备根据所述请求消息返回的响应消息;并将所述响应消息发送给所述客户端;所述客户端处理所述响应消息。如此,所述智能终端可以与多个外设设备相连的单片机通信,该多个外设设备功能可以相同,也可以不同。

可选地,所述请求消息中包括如下信息中的至少一种:与所述单片机相连的至少一个外设设备的设备标识、对所述外设设备进行的操作、需要写入所述外设设备的数据内容。

可选地,在所述服务端接收所述客户端发送的至少一个请求消息之前,所述方法还包括:所述服务判断所述单片机是否下载或升级使所述单片机和所述外设设备通信的程序。

可选地,所述服务判断所述单片机是否下载或升级使所述单片机和所述外设设备通信的程序具体包括:

所述服务和所述单片机通信并检测所述单片机是否有确认ack,如果有确认ack,进而读取所述程序的程序版本号,并和所述智能终端系统中的程序版本号做对比来区分是否需要升级所述程序,如果一致,则不升级所述程序,如果不一致,则升级所述程序;

如果没有确认ack,则下载所述程序。

可选地,所述方法还包括:

所述服务端接收所述客户端发送的程序升级请求;

所述服务端控制所述单片机进入下载模式进行程序升级。

如此,本公开还可以实现单片机和所述外设设备通信的的程序的下载升级。

如图2所示,为本公开的硬件架构,其中,

h1是智能设备,通过通用输入/输出(generalpurposeinput/output,gpio)接口与单片机的boot0、boot1相连接,用于控制单片机的运行模式,比如下载程序模式、正常工作模式等;通过通用异步收发传输器(universalasynchronousreceiver/transmitter,uart)接口与单片机通信;可选地,所述智能设备也可以通过i2c接口与单片机通信。

h2是单片机,通过uart接口或i2c接口与智能设备通信,并与外设设备连接控制外设设备的工作。

h3是外设设备,用于检测工程控制中的多种信息,将信息传递给单片机,并进而传递给智能设备,由智能设备完成数据处理,本公开的外设设备的个数可以有多个。

下面对本公开的一种智能终端与单片机通信的方法进行详细描述:

s301,在所述智能终端的系统中注册与所述单片机通信的服务;

具体的,可以在init.rc中注册服务启动进程执行servicemanager的addservice函数,将服务注册到系统。

s302,启动所述服务;

具体的,例如在init.rc中添加service模块。

s303,判断所述单片机是否下载或升级使所述单片机和所述外设设备通信的程序;

具体的,所述服务和单片机通信,检测单片机是否有确认ack,如果有确认ack则说明单片机中已下载有程序,进入s3031;如果没有ack则表示单片机中无程序,需要下载程序,则进入s3032.

s3031,读取单片机中的程序版本号,并和智能终端系统中的程序版本号做对比来区分是否需要升级单片机的所述程序,如果一致则不升级所述程序,如果不一致则进入s3032。可选地,系统中的所述程序版本号可以存放于属性值中。

s3032,通过调整gpio输出,将boot0置为低电平,boot1置为高电平,进入单片机的下载模式。该步骤的主要目的是控制使单片机进入下载模式,本公开并不仅限于这一种方式,各种方式都在本公开保护范围内。

s3033,在单片机处于下载模式下,通过stm32flash命令下载所述程序,stm32flash是一种基于st提供的bootloader的一种下载流程,可以根据bootloader实现所述程序的下载。本步骤主要目的是为了完成所述程序下载,本公开并不仅限于这一种方式,各种方式都在本公开保护范围内。

s3034,通过调整gpio输出,将boot0置为高电平,boot1置为低电平,退出单片机的下载模式。该步骤的主要目的是是单片机退出下载模式,本公开并不仅限于这一种方式,各种方式都在本公开保护范围内。

s304,所述服务端接收所述客户端发送的至少一个请求消息;

所述请求消息中包括如下信息中的至少一种:所述外设设备的设备标识、对相应所述外设设备进行的操作、需要写入相应所述外设设备的数据内容。不同的请求消息可以对应不同功能的外设设备。

s305,所述服务端唤醒所述服务;

在启动所述服务并完成控制单片机的程序下载或升级后,可能并没有立即接收到所述客户端发送的请求消息,则所述服务处于休眠状态;在接收到所述客户端发送的请求消息后,则需要唤醒所述服务。

具体的,可以通过servicemanager的getservice方法唤醒所述服务。

s306,所述服务端使用消息队列对所述请求消息解析后重新封装;

具体包括:

所述服务端解析所述请求消息以便封装成所述单片机能够识别的格式;

所述服务端将所述请求消息封装成单片机能够识别的格式;

所述服务端将所述封装后的请求消息放入消息队列中按序发送给所述单片机。

如果所述请求消息不止一个,则所述服务端使用消息队列将所述请求消息放入所述消息队列中,并依次解析所述请求消息,以将不同的请求消息发送给不同的相应的外设设备。具体的,所述消息队列可以使用队列数据结构实现。消息队列只是处理消息的一种机制,并不局限于队列这一种机制,还可以使用其他数据结构,都在本公开的保护范围之内。

s307,所述服务端将重新封装的请求消息发送给所述单片机,以使所述单片机发送给与所述单片机连接的相应外设设备;

s308,所述服务端接收所述单片机转发的相应所述外设设备返回的响应消息;

s309,所述服务端将所述响应消息发送给给所述客户端;

s310,所述客户端处理所述响应消息。

可选地,本公开也可以根据客户端的请求升级单片机的程序,具体包括:

s41,所述服务端接收所述客户端发送的程序升级请求;

所述升级请求至少包括以下内容:待升级程序的代码路径、待升级程序的代码版本号。

s42,所述服务端控制所述单片机进入下载模式进行程序升级。

在控制单片机完成程序升级后,所述服务端更改系统中关于当前单片机版本号的相关信息,用于记录版本信息。

如图3所示,本公开还提供一种智能终端300,包括:

启动模块301,用于在所述智能终端的系统中启动与单片机通信的服务,所述服务包括服务端302和客户端303;

所述服务端302,用于接收所述客户端发送的至少一个请求消息;使用消息队列对所述请求消息解析后重新封装;将重新封装的请求消息发送给所述单片机,以使所述单片机将所述请求消息转发给与所述单片机连接的外设设备;接收所述单片机转发的所述外设设备根据所述请求消息返回的响应消息;并将所述响应消息发送给所述客户端;

所述客户端303,用于处理所述响应消息。

可选地,所述请求消息中包括如下信息中的至少一种:与所述单片机相连的至少一个外设设备的设备标识、对所述外设设备进行的操作、需要写入所述外设设备的数据内容。

可选地,所述智能终端还包括:判断模块,用于判断所述单片机是否下载或升级使所述单片机和所述外设设备通信的程序。

可选地,所述判断模块具体包括:

通信检测单元,用于和所述单片机通信并检测所述单片机是否有确认ack;

读取单元,用于如果所述通信检测单元检测所述单片机有确认ack,进而读取所述程序的程序版本号;

对比单元,用于和所述智能终端系统中的程序版本号做对比来区分是否需要升级所述程序,如果一致,则不升级所述程序;

升级单元,用于所述对比单元对比的结果为不一致时,升级所述程序;

下载单元,用于所述通信检测单元检测所述单片机如果没有确认ack,下载所述程序。

可选地,所述服务端,还用于接收所述客户端发送的程序升级请求;并控制所述单片机进入下载模式进行程序升级。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。

另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。

此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。

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