基于波特率的串口通讯方法和多串口芯片与流程

文档序号:26050369发布日期:2021-07-27 15:25阅读:144来源:国知局
基于波特率的串口通讯方法和多串口芯片与流程
本发明属于数据通信
技术领域
,尤其涉及一种基于波特率的串口通讯方法和多串口芯片。
背景技术
:随着计算机技术的飞速发展,越来越多的电子设备利用串口芯片进行通讯,例如,电动汽车及其充电桩中的电源模块,会使用串口芯片进行模块控制及监控。随着功能要求越来越复杂,时常使用多串口芯片。然而,目前的多串口芯片中各个串口只能够处理同一种波特率的数据,应用场景单一。技术实现要素:有鉴于此,本发明实施例提供了一种基于波特率的串口通讯方法和多串口芯片,能够丰富多串口芯片的应用场景。本发明实施例的第一方面提供了一种基于波特率的串口通讯方法,该方法应用于多串口芯片,多串口芯片包括多个串口、底层配置模块和协议解析模块,该方法包括:底层配置模块接收目标串口的第一目标数据;底层配置模块在多个底层对象中确定与目标串口对应的目标底层对象;其中,底层对象预先基于面向对象的原理构造得到,且每个底层对象唯一对应一个串口,每个底层对象对应的串口不同;目标底层对象将第一目标数据发送至协议解析模块;协议解析模块根据预先设置的底层对象和协议对象的协议槽,在多个底层对象中确定目标底层对象对应的目标协议对象;其中,协议对象预先基于面向对象的原理构造得到;目标协议对象接收第一目标数据。本发明实施例的第二方面提供了一种多串口芯片,包括多个串口、底层配置模块和协议解析模块,其中:底层配置模块,用于接收目标串口的第一目标数据,并在多个底层对象中确定与目标串口对应的目标底层对象;其中,底层对象预先基于面向对象的原理构造得到,且每个底层对象唯一对应一个串口,每个底层对象对应的串口不同;目标底层对象,用于将第一目标数据发送至协议解析模块;协议解析模块,用于根据预先设置的底层对象和协议对象的协议槽,在多个底层对象中确定目标底层对象对应的目标协议对象;其中,协议对象预先基于面向对象的原理构造得到;目标协议对象,用于接收第一目标数据。本发明实施例的第三方面提供了一种多串口芯片,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述方法的步骤。本发明实施例与现有技术相比存在的有益效果是:在本发明实施例中,多串口芯片的底层配置模块接收目标串口的第一目标数据后,可以在多个底层对象中确定与目标串口对应的目标底层对象。之后,目标底层对象将第一目标数据发送至协议解析模块。接着,协议解析模块根据预先设置的底层对象和协议对象的协议槽,在多个底层对象中确定目标底层对象对应的目标协议对象。最后,目标协议对象接收第一目标数据。如此,为多串口芯片的每个串口创建了一组底层对象和协议对象,当某串口外接硬件时,该硬件的数据可以被该串口对应的底层对象和协议对象处理,完成了该硬件与多串口芯片的串口通讯。这样,多串口芯片可以处理不同种类波特率的数据,从而丰富了多串口芯片的应用场景。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的一种多串口芯片的架构示意图;图2为本发明实施例提供的一种基于波特率的串口通讯方法的步骤流程图;图3为本发明实施例提供的一种多串口通讯架构信号流向示意图;图4为本发明实施例提供的一种对象构造流程图;图5为本发明实施例提供的一种底层配置模块的数据接收流程示意图;图6为本发明实施例提供的一种底层配置模块的发送处理流程示意图;图7为本发明实施例提供的一种多串口芯片的示意图;图8为本发明实施例提供的一种多串口芯片的示意图。具体实施方式以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。如
背景技术
中所描述的,目前的多串口芯片,其各个串口只能够处理同一种波特率的数据,应用场景单一,这极大地限制了多串口芯片的使用前景。为了解决现有技术问题,本发明实施例提供了一种基于波特率的串口通讯方法和多串口芯片。下面首先对本发明实施例所提供的多串口芯片进行介绍。基于波特率的串口通讯方法的执行主体,可以是多串口芯片,如图1所示,示出了一种多串口芯片的架构示意图,该多串口芯片可以是具备多个串口(串口1-n)的芯片,例如数字信号处理(digitalsignalprocessing,dsp)芯片、现场可编程门阵列(fieldprogrammablegatearray,fpga)芯片等,每个串口均可以外接硬件,如电动汽车的充电模块、充电桩的电源模块、监控装置等。此外,该多串口芯片还包括底层配置模块和协议解析模块等软件处理模块,其中,底层配置模块可以将各个串口输入的数据发送至协议解析模块,协议解析模块可以解析出各数据所对应的协议(协议0-n),并将数据发送至相应的协议单元处理。如图2所示,本发明实施例提供的基于波特率的串口通讯方法可以包括以下步骤:步骤s210、底层配置模块接收目标串口的第一目标数据。在一些实施例中,多串口芯片的各个串口在接收到外部输入的数据后,将汇集在底层配置模块。其中,目标串口可以是多个串口中的任意串一个串口,经由目标串口传输的数据可以称为第一目标数据。步骤s220、底层配置模块在多个底层对象中确定与目标串口对应的目标底层对象。其中,底层对象预先基于面向对象的原理构造得到,且每个底层对象唯一对应一个串口,每个底层对象对应的串口不同。下面对构造对象的具体实现方式进行介绍。对象可以分为底层对象和协议对象,每个对象构造请求中携带有串口号、波特率、缓冲区长度以及总计数值,其中,串口号或波特率是区分不同对象的关键,且串口号和波特率同样是唯一对应。对象的构造方式可以如下:接收对象构造请求;根据串口号、波特率、缓冲区长度以及总计数值,构造对象构造请求对应的底层对象和协议对象。在构造过程中,可以通过信号槽机制,将底层对象和协议对象进行关联通信。构造算法可以采用c++编程语言。这样,底层配置模块可以根据目标串口,在多个底层对象中确定出与目标串口对应的目标底层对象。步骤s230、目标底层对象将第一目标数据发送至协议解析模块。在一些实施例中,在确定出目标底层对象后,将由目标底层对象对第一目标数据进行发送处理。可选的,当多串口芯片的串口具备处理不同波特率数据的功能时,由于不同波特率数据的数据长度以及数据打包时间也不相同,因此,可以针对不同波特率数据的特点,为各类波特率数据设置相应的数据长度和数据打包时间,该设置过程可以在对象构造阶段完成,即上述对象构造请求中的缓冲区长度以及总计数值。具体的,目标底层对象以缓冲区长度为单位分批将第一目标数据写入缓冲区,并对每批写入缓冲区中的数据进行打包计数;当打包计算的数值等于总计数值时,将打包得到的数据发送至协议解析模块,直至将第一目标数据发送至协议解析模块,可以避免一帧数据没有接收完成就进行发送的问题。如此,可以避免采用固定的数据长度和打包时间带来的无效内存占用较大的问题,优化了内存使用率。此外,还可以引入定时发送机制,当打包时间超过定时时间时,可以将打包得到数据发送至协议解析模块,如此,可以为那些想要自行设置打包时间的用户,提供了渠道,进而可以提升使用体验。步骤s240、协议解析模块根据预先设置的底层对象和协议对象的协议槽,在多个底层对象中确定目标底层对象对应的目标协议对象;其中,协议对象预先基于面向对象的原理构造得到。步骤s250、目标协议对象接收第一目标数据。在一些实施例中,在确定出目标协议对象后,将由目标协议对象接收第一目标数据,并按照协议内容对第一目标数据进行处理。可选的,在目标协议对象接收第一目标数据之后,还可以进行如下处理:目标协议对象将第一目标数据对应的第二目标数据发送至底层配置模块;底层配置模块将第二目标数据发送至目标串口。在一些实施例中,与发送第一目标数据的过程类似,目标协议对象可以以缓冲区长度为单位分批将第二目标数据写入缓冲区,并对每批写入缓冲区中的数据进行打包计数;当打包计算的数值等于总计数值时,将打包得到的数据发送至底层配置模块,直至将第二目标数据发送至底层配置模块。具体的,第二目标数据携带有目标串口的串口号。如此,底层配置模块能够根据目标串口的串口号,将第二目标数据发送至目标串口。以充电桩场景为例,电动汽车的通讯线路可以与多串口芯片的目标串口连接,并下发开始充电指令,即第一目标数据。通过上述通讯处理后,目标协议对象可以生成与充电指令相应的响应数据,即第二目标数据,并可以将响应数据通过目标串口返回给电动汽车。此外,目标协议对象还可以生成触发充电桩充电的指令,并通过与充电桩相连接的串口,将触发充电桩充电的指令发送至充电桩,以使充电桩对电动汽车充电。为了更好的理解本发明实施例提供的基于波特率的串口通讯方法,可以认为执行基于波特率的串口通讯方法的多串口芯片为具备不同串口对应不同波特率的芯片,即具备多个串口,每个串口可以对应不同波特率。如表一所示,表一示出了单串口芯片和多串口芯片的区别。表一可以发现,上述多个串口对应多个不同波特率协议的架构,重点在于串口与协议如何关联。为此,可以基于面向对象的方法,如c++,设计多串口通讯架构,该架构具备如下功能:功能1、将信号槽机制应用在串口通讯架构中,使整个串口通讯的底层配置和协议解析模块功能解耦。功能2、将串口通讯整体架构划分为底层配置模块、协议解析模块两个部分,模块之间相互隔离,互不干扰。功能3、底层配置模块,可以针对面向不同波特率需求的厂家,为多串口芯片创建不同配置,实现数据的接收和发送,具体的:第一、可以选择不同的串口号,同时可与协议解析模块的槽链接。第二、可以根据不同厂家协议要求的不同协议波特率,配合串口号进行配置。第三、根据不同厂家协议要求的不同数据长度,动态设计发送缓冲区、接收缓冲区长度以及打包发送给协议解析模块的时间。功能4、协议解析模块,可以预先根据需要,利用串口号的不同创建不同的协议,实现串口号与协议的一一对应,避免了协议解析模块耦合性强的问题。如图3所示,提供了一种多串口通讯架构信号流向示意图。对于底层配置模块,可以根据串口号选择不同的寄存器;根据波特率设计不同波特率寄存器;根据不同数据长度,设计接收缓冲区长度、发送缓冲区长度、打包发送给协议解析模块的时间。其中,可以根据不同厂家的协议波特率、数据长度不同,选择唯一的串口号创建唯一的底层对象,如表二所示;表二厂家波特率数据长度串口号创建底层对象厂家09600100usart0厂家119200121usart1厂家2480082usart2如此,构造出不同的串口号对应不同波特率(数据长度可以相同也可以不同)的底层对象,创建出来的底层对象,根据协议波特率等要求不同的厂家具有唯一性,即一个厂家对应一个底层对象。此外,底层配置模块无需修改,只需在创建时选择相应的串口号、波特率、接收数据长度即可,对象的具体构造过程可以如图4所示。相应的,如图5和图6,分别提供了底层配置模块的数据接收和发送处理流程。具体的,对于接收流程,根据构造初始化流程的设定,接收缓冲区长度及打包发送总计数值已确定,将接收寄存器内的数据写入接收缓冲区中,同时进行计数,当计数值达到打包发送总计数值或者定时时间到,对协议解析模块进行信号发送。对于发送流程,接收到协议解析模块的信号,将协议解析模块的数据拷贝到串口底层配置模块的发送缓冲区中,然后将发送缓冲区中的数据通过发送寄存器发送出去。如此,将串口号、波特率、数据长度等信息融合进底层配置模块,只需要将该模块与协议解析模块各个协议的信号槽连接,并将协议解析模块将各个协议之间解耦,即可实现彻底的解耦,并不需要修改代码,以达到通用性的目的。另外,为了实现程序的彻底解耦,还需要将协议解析模块进行解耦,若协议解析模块不能够区分出各个协议,而是将所有协议糅合在一起,将需要对所有协议进行一一查找,占用很多运行空间。可以通过串口号区分协议,具体的,区分串口号的根本是:不同厂家要求的波特率不同,因此,可以根据不同的串口号构建各个协议对象。如表三所示:表三串口号创建底层对象创建协议对象0usart0prol01usart1prol1nusartnproln容易理解的是,通过串口号,可以构建多个底层对象,也可以构建多个协议对象,只需要将底层对象与协议对象一一连接,即可区分出不同串口对应的协议。需要说明的是,底层配置模块与协议解析模块的信号槽连接是关键,具体如下:1、数据接收:底层配置模块信号与协议解析模块的槽连接,底层配置模块发送信号时,携带数据长度(包括接收长度、发送长度)一起发送给协议解析模块,使协议解析模块能够根据接收和发送的数据长度申请接收、发送缓冲区。2、数据发送:协议解析模块的信号与底层配置模块的槽连接,协议解析模块自行控制自身协议的发送周期,只需定时发送信号给底层配置模块即可,底层配置模块收到信号后进行发送。在本发明实施例中,多串口芯片的底层配置模块接收目标串口的第一目标数据后,可以在多个底层对象中确定与目标串口对应的目标底层对象。之后,目标底层对象将第一目标数据发送至协议解析模块。接着,协议解析模块根据预先设置的底层对象和协议对象的协议槽,在多个底层对象中确定目标底层对象对应的目标协议对象。最后,目标协议对象接收第一目标数据。如此,为多串口芯片的每个串口创建了一组底层对象和协议对象,当某串口外接硬件时,该硬件的数据可以被该串口对应的底层对象和协议对象处理,完成了该硬件与多串口芯片的串口通讯。这样,多串口芯片可以处理不同种类波特率的数据,从而丰富了多串口芯片的应用场景。基于上述实施例提供的基于波特率的串口通讯方法,相应地,本发明还提供了应用于该基于波特率的串口通讯方法的多串口芯片的具体实现方式。请参见以下实施例。如图7所示,提供了一种多串口芯片700,包括多个串口710、底层配置模块720和协议解析模块730,其中:底层配置模块720,用于接收目标串口的第一目标数据,并在多个底层对象中确定与目标串口对应的目标底层对象;其中,底层对象预先基于面向对象的原理构造得到,且每个底层对象唯一对应一个串口,每个底层对象对应的串口不同;目标底层对象,用于将第一目标数据发送至协议解析模块730;协议解析模块730,用于根据预先设置的底层对象和协议对象的协议槽,在多个底层对象中确定目标底层对象对应的目标协议对象;其中,协议对象预先基于面向对象的原理构造得到;目标协议对象,用于接收第一目标数据。在一些实施例中,多串口芯片还包括构造模块,用于:接收对象构造请求;其中,对象构造请求中携带有串口号、波特率、缓冲区长度以及总计数值;根据串口号、波特率、缓冲区长度以及总计数值,构造对象构造请求对应的底层对象和协议对象。在一些实施例中,目标底层对象还用于:以缓冲区长度为单位分批将第一目标数据写入缓冲区,并对每批写入缓冲区中的数据进行打包计数;当打包计算的数值等于总计数值时,将打包得到的数据发送至协议解析模块,直至将第一目标数据发送至协议解析模块。在一些实施例中,目标协议对象还用于:将第一目标数据对应的第二目标数据发送至底层配置模块;相应的,底层配置模块还用于:将第二目标数据发送至目标串口。可选的,目标协议对象还用于:以缓冲区长度为单位分批将第二目标数据写入缓冲区,并对每批写入缓冲区中的数据进行打包计数;当打包计算的数值等于总计数值时,将打包得到的数据发送至底层配置模块,直至将第二目标数据发送至底层配置模块。可选的,第二目标数据携带有目标串口的串口号;相应的,底层配置模块还用于:根据目标串口的串口号,将第二目标数据发送至目标串口。在本发明实施例中,多串口芯片的底层配置模块接收目标串口的第一目标数据后,可以在多个底层对象中确定与目标串口对应的目标底层对象。之后,目标底层对象将第一目标数据发送至协议解析模块。接着,协议解析模块根据预先设置的底层对象和协议对象的协议槽,在多个底层对象中确定目标底层对象对应的目标协议对象。最后,目标协议对象接收第一目标数据。如此,为多串口芯片的每个串口创建了一组底层对象和协议对象,当某串口外接硬件时,该硬件的数据可以被该串口对应的底层对象和协议对象处理,完成了该硬件与多串口芯片的串口通讯。这样,多串口芯片可以处理不同种类波特率的数据,从而丰富了多串口芯片的应用场景。图8是本发明一实施例提供的多串口芯片的示意图。如图8所示,该实施例的多串口芯片8包括:处理器80、存储器81以及存储在所述存储器81中并可在所述处理器80上运行的计算机程序82。所述处理器80执行所述计算机程序82时实现上述各个基于波特率的串口通讯方法实施例中的步骤。或者,所述处理器80执行所述计算机程序82时实现上述各多串口芯片实施例中各模块/单元的功能。示例性的,所述计算机程序82可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器81中,并由所述处理器80执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序82在所述多串口芯片8中的执行过程。例如,所述计算机程序82可以被分割成底层配置模块和协议解析模块,各模块具体功能如下:底层配置模块,用于接收目标串口的第一目标数据,并在多个底层对象中确定与目标串口对应的目标底层对象;其中,底层对象预先基于面向对象的原理构造得到,且每个底层对象唯一对应一个串口,每个底层对象对应的串口不同;目标底层对象,用于将第一目标数据发送至协议解析模块;协议解析模块,用于根据预先设置的底层对象和协议对象的协议槽,在多个底层对象中确定目标底层对象对应的目标协议对象;其中,协议对象预先基于面向对象的原理构造得到;目标协议对象,用于接收第一目标数据。所述多串口芯片8可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述多串口芯片可包括,但不仅限于,处理器80、存储器81。本领域技术人员可以理解,图8仅仅是多串口芯片8的示例,并不构成对多串口芯片8的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述多串口芯片还可以包括输入输出设备、网络接入设备、总线等。所称处理器80可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。所述存储器81可以是所述多串口芯片8的内部存储单元,例如多串口芯片8的硬盘或内存。所述存储器81也可以是所述多串口芯片8的外部存储设备,例如所述多串口芯片8上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器81还可以既包括所述多串口芯片8的内部存储单元也包括外部存储设备。所述存储器81用于存储所述计算机程序以及所述多串口芯片所需的其他程序和数据。所述存储器81还可以用于暂时地存储已经输出或者将要输出的数据。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述多串口芯片的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1