一种基于串口实现时钟同步的方法、智能终端及存储介质与流程

文档序号:19413576发布日期:2019-12-14 00:41阅读:335来源:国知局
一种基于串口实现时钟同步的方法、智能终端及存储介质与流程

本发明涉及计算机应用技术领域,尤其涉及一种基于串口实现时钟同步的方法、智能终端及存储介质。



背景技术:

在大部分网络产品中,要求对整网设备或者整个机框上的单板都设置成相同的时间,准确的时间才能体现时间的意义;在现有技术中,一般由ntp/sntp协议(网络时钟同步协议)获取时间,还有1588的ptp协议(网络测量和控制系统的精密时钟同步协议标准,通过一个同步信号周期性的对网络中的所有节点的时钟进行校正同步,可以使基于以太网分布式系统达到精确同步),这些协议一般都是基于以太网/ip来实现的,如果在没有以太网的环境下,如何把自己的时间发送给其它需要设置时间的设备和获取时间是比较困难的事情。

因此,现有技术还有待于改进和发展。



技术实现要素:

本发明的主要目的在于提供一种基于串口实现时钟同步的方法、智能终端及存储介质,旨在解决现有技术的上述缺陷。

为实现上述目的,本发明提供一种基于串口实现时钟同步的方法,所述基于串口实现时钟同步的方法包括如下步骤:

主控板和至少一个业务板之间通过串口协议连接,并通过串口自定义命令,主控板记录自己发命令的时间以及获取所述业务板收到命令并回复的时间;

当所述主控板和所述业务板在进行预设次数的时间发送之后,计算所述主控板与所述业务板之间的传输延时;

所述主控板将当前时间和所述传输延时发送给所述业务板,所述业务板按照所述当前时间和所述传输延时设置系统时间以完成和所述主控板的时间同步。

可选地,所述的基于串口实现时钟同步的方法,其中,所述命令包括同步命令和授时命令;

所述同步命令用于业务板将自身的当前时间通知对方;

所述授时命令用于控制对方获取命令中带的时间,并设置成对方的时间。

可选地,所述的基于串口实现时钟同步的方法,其中,所述当所述主控板和所述业务板在进行预设次数的时间发送之后,计算所述主控板与所述业务板之间的传输延时,具体包括:

所述主控板记录当前时间t1,并通过所述同步命令发送给所述业务板,以此获取所述业务板的时间;

所述业务板接收到同步命令后,将当前时间t2发送给所述主控板;

所述主控板接收到t2后,在t3时刻继续发送同步命令给所述业务板;

所述业务板接收到所述同步命令后,将当前时间t4发送给所述主控板;

所述主控板在t5的时间点收到t4,计算所述主控板与所述业务板之间的传输延时td。

可选地,所述的基于串口实现时钟同步的方法,其中,所述传输延时td=[(t5-t1)-(t4-t2)]/2。

可选地,所述的基于串口实现时钟同步的方法,其中,所述主控板将当前时间和所述传输延时发送给所述业务板,所述业务板按照所述当前时间和所述传输延时设置系统时间以完成和所述主控板的时间同步,具体包括:

所述主控板将当前时间t6和所述传输延时td发送给所述业务板;

所述业务板按照所述当前时间t6和所述传输延时td计算系统时间tc,并将所述系统时间tc设置为当前时间,所述业务板完成和所述主控板的时间同步。

可选地,所述的基于串口实现时钟同步的方法,其中,所述系统时间tc=t6+td。

可选地,所述的基于串口实现时钟同步的方法,其中,所述传输延时为所述主控板传输命令所花的时间。

可选地,所述的基于串口实现时钟同步的方法,其中,所述主控板根据不同业务板的地址进行时间同步。

此外,为实现上述目的,本发明还提供一种智能终端,其中,所述智能终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于串口实现时钟同步的程序,所述基于串口实现时钟同步的程序被所述处理器执行时实现如上所述的基于串口实现时钟同步的方法的步骤。

此外,为实现上述目的,本发明还提供一种存储介质,其中,所述存储介质存储有基于串口实现时钟同步的程序,所述基于串口实现时钟同步的程序被处理器执行时实现如上所述的基于串口实现时钟同步的方法的步骤。

本发明中,主控板和至少一个业务板之间通过串口协议连接,并通过串口自定义命令,主控板记录自己发命令的时间以及获取所述业务板收到命令并回复的时间;当所述主控板和所述业务板在进行预设次数的时间发送之后,计算所述主控板与所述业务板之间的传输延时;所述主控板将当前时间和所述传输延时发送给所述业务板,所述业务板按照所述当前时间和所述传输延时设置系统时间以完成和所述主控板的时间同步。本发明通过串口实现主控板和业务板的时间同步,适用范围广,操作简单。

附图说明

图1是本发明基于串口实现时钟同步的方法的较佳实施例的流程图;

图2是本发明基于串口实现时钟同步的方法的较佳实施例中主控板和业务板进行交互的示意图;

图3为本发明智能终端的较佳实施例的运行环境示意图。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明较佳实施例所述的基于串口实现时钟同步的方法,如图1和图2所示,所述基于串口实现时钟同步的方法包括以下步骤:

步骤s10、主控板和至少一个业务板之间通过串口协议连接,并通过串口自定义命令,主控板记录自己发命令的时间以及获取所述业务板收到命令并回复的时间;

步骤s20、当所述主控板和所述业务板在进行预设次数的时间发送之后,计算所述主控板与所述业务板之间的传输延时;

步骤s30、所述主控板将当前时间和所述传输延时发送给所述业务板,所述业务板按照所述当前时间和所述传输延时设置系统时间以完成和所述主控板的时间同步。

具体地,在一个设备(例如某一个智能终端)里面,用来控制其它业务单板的控制单元,一般做成一个单板叫做主控板,给用户提供配置功能,管理功能等;业务板就是具体实现某种业务的单板,例如gpon,adsl等。

其中,所述命令包括同步命令和授时命令;所述同步命令用于业务板将自身的当前时间通知对方;所述授时命令用于控制对方获取命令中带的时间,并设置成对方的时间。

其中,所述预设次数可以是4次、6次、8次,这样算的板间的延时平均数更加接近于实际延时,次数越多,越准确,但是设置过程花的时间也越久,因此本发明优选为4次。

进一步地,当所述预设次数为4次(两个来回)时,所述主控板记录当前时间t1,并通过所述同步命令发送给所述业务板,以此获取所述业务板的时间;所述业务板接收到同步命令后,将当前时间t2发送给所述主控板;所述主控板接收到t2后,在t3时刻继续发送同步命令给所述业务板;所述业务板接收到所述同步命令后,将当前时间t4发送给所述主控板;所述主控板在t5的时间点收到t4,计算所述主控板与所述业务板之间的传输延时td,td即图2中的t(delay)。

其中,所述传输延时td=[(t5-t1)-(t4-t2)]/2。

所述传输延时为所述主控板传输命令所花的时间,即从所述主控板到所述业务板,传输命令花的时间。

其中,所述主控板根据不同业务板的地址进行时间同步,每个业务板都有其自己的地址,业务板可以是多个,当一个主控板对一个业务板完成授时同步后,继续根据下一个业务板的地址进行授时同步。

所述主控板将当前时间t6和所述传输延时td发送给所述业务板;所述业务板按照所述当前时间t6和所述传输延时td计算系统时间tc,tc即图2中的t(current),并将所述系统时间tc设置为当前时间,所述业务板完成和所述主控板的时间同步。

其中,所述系统时间tc=t6+td。

进一步地,主控板和业务板之间的串口协议采用一对多的协议模型,并遵循以下2个命令格式;主控板通过以下2条命令向所有的业务板分别同步主控板的时间。

时间同步命令格式如下(主控板发送命令时,para的值可以为全0,但不能去掉,为了保证双方命令的长度与耗时都是一样的,而业务板发送该命令时,para的值则为当前时间):

时间授权命令格式如下:

下面以一个举例来说明通过串口实现多设备时钟同步的方法。

假设存在三个业务板需要同步主控板的系统时间,三个业务单板分别为业务板a、业务板b和业务板c,他们各自的地址分别是0x01、0x02和0x03。

假设系统初始时间为1970年1月1日00:00:00;主控板发出0xa0命令时的时间t1为1970年1月1日00:00:03,距系统初始时间有3秒;业务板收到0xa0命令,立即向主控板发出业务板的当前t2时间,为1970年1月1日00:00:17,距系统初始时间有17秒(业务板时间因为与主控板时间不同步,所以随便假设一个时间点);主控板收到业务板发过来的t2时间的那一刻,记录当前自己系统的时间点t3为1970年1月1日00:00:05,距系统初始时间有5秒,同时再给业务板发出0xa0命令;业务板收到0xa0命令,马上向主控板发出业务板的当前t4时间为1970年1月1日00:00:19,距系统初始时间有19秒;主控板收到业务板发过来的t4时间的那一刻,记录当前自己系统的t5时间点为1970年1月1日00:00:07,距系统初始时间有7秒;主控板发送t6和t(delay)的时间点为1970年1月1日00:00:10。

授时过程如下:主控板记录当前的系统时间t1(0x00000003),然后准备同步业务板a的系统时间,向串口总线发出命令,0x01,0x06,0xa0,0x00000000,crc;当三块业务板同时收到该命令的第一个字节(带第8位)时,判断该地址是否为自己的地址,如果是的话,则继续接收数据,如果不是的话则关闭接收,直至收到下一次的地址字节(带第8位);此时业务板a收到了该命令0xa0,则马上记录当前自己系统的时间t2(0x00000011),并向主控板发送自己当前系统时间秒数的命令,0x01,0x06,0xa0,0x00000011,crc(十进制17的十六进制为0x11);主控板收到了业务板回复的t2时间之后,保存t2的时间(0x00000011)同时马上记录自己当前系统的时间t3(0x00000005),并向业务板a发送命令,0x01,0x06,0xa0,0x00000000,crc;业务板a收到了该命令0xa0,则马上记录当前自己系统的时间t4(0x00000013),并向主控板发送自己当前系统时间秒数的命令,0x01,0x06,0xa0,0x00000013,crc(十进制19的十六进制为0x13);主控板收到了业务板回复的t4时间之后,保存t4的时间(0x00000013)同时马上记录自己当前系统的时间t5(0x00000007);此时主控板根据t1、t2、t3、t4和t5这5个数据的值,可计算出主控板发送数据到业务板的延时时间为t(delay)=((t5-t1)-(t4-t2))/2=((0x00000007-0x00000003)-(0x00000013-0x00000011))/2=1;主控板于t6时刻(0x0000000a,十进制10的十六进制为0x0a)向业务板a发送t6和t(delay)数据,命令如下:0x01,0x0a,0xa1,0x0000000a,0x00000001,crc;业务板a收到了0xa1命令,则马上将自己当前系统的时间设置为t(current)=t6+t(delay)=(0x0000000a)+(0x00000001)=0x0000000b,换算为具体时间为1970年1月1日00:00:11;至此业务板a的时间已同步,主控板则将业务板地址改为0x02,继续向业务板b进行授时同步(业务板b完成授时同步后继续向业务板c进行授时同步)。

进一步地,如图3所示,基于上述基于串口实现时钟同步的方法,本发明还相应提供了一种智能终端,所述智能终端包括处理器10、存储器20及显示器30。图3仅示出了智能终端的部分组件,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。

所述存储器20在一些实施例中可以是所述智能终端的内部存储单元,例如智能终端的硬盘或内存。所述存储器20在另一些实施例中也可以是所述智能终端的外部存储设备,例如所述智能终端上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器20还可以既包括所述智能终端的内部存储单元也包括外部存储设备。所述存储器20用于存储安装于所述智能终端的应用软件及各类数据,例如所述安装智能终端的程序代码等。所述存储器20还可以用于暂时地存储已经输出或者将要输出的数据。在一实施例中,存储器20上存储有基于串口实现时钟同步的程序40,该基于串口实现时钟同步的程序40可被处理器10所执行,从而实现本申请中基于串口实现时钟同步的方法。

所述处理器10在一些实施例中可以是一中央处理器(centralprocessingunit,cpu),微处理器或其他数据处理芯片,用于运行所述存储器20中存储的程序代码或处理数据,例如执行所述基于串口实现时钟同步的方法等。

所述显示器30在一些实施例中可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organiclight-emittingdiode,有机发光二极管)触摸器等。所述显示器30用于显示在所述智能终端的信息以及用于显示可视化的用户界面。所述智能终端的部件10-30通过系统总线相互通信。

在一实施例中,当处理器10执行所述存储器20中基于串口实现时钟同步的程序40时实现以下步骤:

主控板和至少一个业务板之间通过串口协议连接,并通过串口自定义命令,主控板记录自己发命令的时间以及获取所述业务板收到命令并回复的时间;

当所述主控板和所述业务板在进行预设次数的时间发送之后,计算所述主控板与所述业务板之间的传输延时;

所述主控板将当前时间和所述传输延时发送给所述业务板,所述业务板按照所述当前时间和所述传输延时设置系统时间以完成和所述主控板的时间同步。

所述命令包括同步命令和授时命令;

所述同步命令用于业务板将自身的当前时间通知对方;

所述授时命令用于控制对方获取命令中带的时间,并设置成对方的时间。

所述当所述主控板和所述业务板在进行预设次数的时间发送之后,计算所述主控板与所述业务板之间的传输延时,具体包括:

所述主控板记录当前时间t1,并通过所述同步命令发送给所述业务板,以此获取所述业务板的时间;

所述业务板接收到同步命令后,将当前时间t2发送给所述主控板;

所述主控板接收到t2后,在t3时刻继续发送同步命令给所述业务板;

所述业务板接收到所述同步命令后,将当前时间t4发送给所述主控板;

所述主控板在t5的时间点收到t4,计算所述主控板与所述业务板之间的传输延时td。

所述传输延时td=[(t5-t1)-(t4-t2)]/2。

所述主控板将当前时间和所述传输延时发送给所述业务板,所述业务板按照所述当前时间和所述传输延时设置系统时间以完成和所述主控板的时间同步,具体包括:

所述主控板将当前时间t6和所述传输延时td发送给所述业务板;

所述业务板按照所述当前时间t6和所述传输延时td计算系统时间tc,并将所述系统时间tc设置为当前时间,所述业务板完成和所述主控板的时间同步。

所述系统时间tc=t6+td。

所述传输延时为所述主控板传输命令所花的时间。

所述主控板根据不同业务板的地址进行时间同步。

本发明还提供一种存储介质,其中,所述存储介质存储有基于串口实现时钟同步的程序,所述基于串口实现时钟同步的程序被处理器执行时实现如上所述的基于串口实现时钟同步的方法的步骤。

综上所述,本发明提供一种基于串口实现时钟同步的方法、智能终端及存储介质,所述方法包括:主控板和至少一个业务板之间通过串口协议连接,并通过串口自定义命令,主控板记录自己发命令的时间以及获取所述业务板收到命令并回复的时间;当所述主控板和所述业务板在进行预设次数的时间发送之后,计算所述主控板与所述业务板之间的传输延时;所述主控板将当前时间和所述传输延时发送给所述业务板,所述业务板按照所述当前时间和所述传输延时设置系统时间以完成和所述主控板的时间同步。本发明通过串口实现主控板和业务板的时间同步,适用范围广,操作简单。

当然,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关硬件(如处理器,控制器等)来完成,所述的程序可存储于一计算机可读取的存储介质中,所述程序在执行时可包括如上述各方法实施例的流程。其中所述的存储介质可为存储器、磁碟、光盘等。

应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

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