切换串口数据传输状态的方法及装置制造方法及图纸

技术编号:20290192 阅读:29 留言:0更新日期:2019-02-10 20:34
本发明专利技术公开了一种切换串口数据传输状态的方法及装置,该方法包括:所述串口通过设置在所述串口内的串口寄存器发送数据;创建用于判断所述串口寄存器是否为空的实时线程;若所述实时线程判断所述串口寄存器为空,则所述串口切换数据传输状态。本发明专利技术通过建立实时线程监控串口寄存器的状态,当串口寄存器为空时,切换数据的传输状态。由于实时线程具有最高优先级,因此能保证减少串口状态切换的延时时间的同时还能保证通讯能正常进行。

【技术实现步骤摘要】
【国外来华专利技术】切换串口数据传输状态的方法及装置
本专利技术涉及通讯领域,特别是涉及一种切换串口数据传输状态的方法及装置。
技术介绍
与外接的信息交换称为通讯,基本的通讯方式有并行通讯和串行通讯两种。并行通讯是指一条信息的各位数据被同时传送的通讯方式,并行通讯的特点是:各数据位同时传送,传送速度快、效率高,但有多少数据位就需多少根数据线,因此传送成本高,且只适用于近距离(相距数米)的通讯。串行通讯是指一条信息的各位数据被逐位按顺序传送的通讯方式,串行通讯的特点是:数据位传送,传按位顺序进行,最少只需一根传输线即可完成,成本低但传送速度慢。串行通讯的距离可以从几米到几千米。根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。信息只能单向传送为单工;信息能双向传送但不能同时双向传送称为半双工;信息能够同时双向传送则称为全双工。RS-485是一种典型的串行通讯标准,它和普通串口的区别是定义的电压,阻抗等不同,但不对软件协议给予定义,编程方式和普通的串口编程一样。在RS-485半双工的串口传输模式下,主站要在数据发送完成后根据串口寄存器的状态,来切换状态等待接收从站发送过来的数据,如果状态没有及时切换,就会导致数据接收不到,导致这次通讯失败。普通的Linux系统中不会发生这种情况,因为在串口的驱动计算机程序中会在发送数据时加锁,等待串口状态切换后完成后再解锁,这样保证在串口发送数据到串口完成状态切换这段时间CPU不会被抢占。但是在Linux的系统中加入了实时补丁就会破坏上述的机制,实时线程会随时抢占低优先级的线程。但很多时候,加入实时线程很有必要,因为实时线程能满足任务对时间高要求标准。在嵌入式Linux系统中为了解决实时性问题经常在原Linux系统中打入一个实时补丁,这样普通的任务可以用Linux系统的线程来实现,而对时间有严格规定的任务必须要用实时的线程来处理,我们称这样的系统为实时Linux系统。实时Linux系统中,会发生实时线程抢占Linux系统的线程的CPU使用权。系统串口收发数据是耗费时间比较长的一个任务,因此经常用Linux系统提供的线程来实现。RS-485的串口收发数据时要发生状态转换,当串口发送完数据后要切到收数据的状态时如果发生实时线程抢占CPU,导致状态切换没完成,从而导致在这一时间内发送的数据就会丢失,导致数据接收失败。
技术实现思路
本专利技术主要解决的技术问题是提供一种切换串口数据传输状态的方法及装置,优化串口通讯的数据丢失和切换延时问题,在减少串口状态切换的延时时间的同时还能保证通讯能正常进行。为解决上述技术问题,本专利技术采用的一种切换串口数据传输状态的方法,该方法包括:所述串口通过设置在所述串口内的串口寄存器发送数据;创建用于判断所述串口寄存器是否为空的实时线程;若所述实时线程判断所述串口寄存器为空,则所述串口切换数据传输状态。进一步地,所述串口通过设置在所述串口内的串口寄存器发送数据的步骤具体包括:所述串口使用Linux线程通过设置在所述串口内的串口寄存器发送数据。进一步地,若所述实时线程判断所述串口寄存器为空,则所述串口切换数据传输状态的步骤之后还包括:所述串口接收数据并存储至所述串口寄存器。进一步地,所述方法还包括:若所述实时线程判断所述串口寄存器不为空,则继续判断所述串口寄存器的状态。进一步地,所述串口为RS-485串口。进一步地,所述串口的通讯方式为半双工通讯方式。进一步地,实时线程具有最高优先级。为解决上述技术问题,本专利技术还提出了一种数据传输装置,包括处理器、设置有串口寄存器的串口以及存储器;所述存储器上存储有可在所述处理器上运行的计算机程序;所述串口通过所述寄存器收发数据;所述处理器执行所述计算机程序时实现上述切换串口数据传输状态的方法。为解决上述技术问题,一种具有存储功能的装置,其上存储有计算机程序,所述计算机程序能够被执行上述切换串口数据传输状态的方法。区别于现有技术,本专利技术提出一种切换串口数据传输状态的方法及装置,通过建立实时线程监控串口寄存器的状态,当串口寄存器为空时,切换串口的数据传输状态。由于实时线程具有最高优先级,因此能保证减少串口状态切换的延时时间的同时还能保证通讯能正常进行。附图说明图1是本专利技术提供的切换串口数据传输状态的方法实施例的流程示意图;图2是本专利技术提供的数据传输装置实施例的结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,均属于本专利技术保护的范围。参阅图1,图1是本专利技术提供的切换串口数据传输状态的方法实施例的流程示意图。该方法包括步骤如下:S101:所述串口通过设置在所述串口内的串口寄存器发送数据。在通信领域,串口通信在操作系统中使用的频率高、用途广泛,尤其在嵌入式操作系统中的使用频率很高。在一个具体的实施场景中,在嵌入式Linux系统下使用串口来进行数据的传输,即串口使用Linux线程通过设置在串口内的串口寄存器发送数据。使用串口来进行数据传输既可以是使用串口发送数据也可以是使用串口接受数据。本实施例中使用的串口为RS-485串口,但本专利技术使用的串口不限于RS-485串口,还可以是其他类型的串口,也可以是几种串口的组合。在一个具体的实施场景中,本专利技术的串口的通讯方式为半双工通讯方式。在RS-485半双工的串口传输模式下,主站要在数据发送完成后根据串口寄存器的状态,来切换状态等待接收从站发送过来的数据。S102:创建用于判断所述串口寄存器是否为空的实时线程。当串口在传输数据时,创建实时线程,实时线程具有最高优先级。只要检测到串口在传输数据,就持续判断该串口寄存器是否为空。如果不为空,说明数据还在传输,需要一直进行判断。在一个具体的实施方式中,当串口在接收数据时,创建实时线程,实时线程具有最高优先级。只要检测到串口在接收数据,就持续判断该串口寄存器是否为空。如果不为空,说明数据还在传输,需要一直进行判断。在另一个具体的实施方式中,当串口在传送数据时,创建实时线程,实时线程具有最高优先级。只要检测到串口在传送数据,就持续判断该串口寄存器是否为空。如果不为空,说明数据还在传输,需要一直进行判断。S103:若实时线程判断串口寄存器为空,则串口切换数据传输状态。实时线程的优先级最高。因此,若实时线程判断串口寄存器为空,则第一时间切换串口的数据传输状态,从而保证通讯能正常进行。串口切换至接收状态后,串口接收数据并存储至串口寄存器,进而将数据发送至主站。在一个具体的实施方式中,若判断串口寄存器为空,则通过实时线程切换串口的数据发送状态为数据接收状态。在另一个具体的实施方式中,若判断串口寄存器为空,则通过实时线程切换串口的数据接收状态为数据发送状态。在一个具体的实施场景中,采用的硬件平台为AM335X芯片和ADM2486半双工的RS-485收发器,具体地,将RS-485收发器的状态转换的管脚RE/RT连接到AM335X的一个IO管脚,通过软件输出IO的高低变化来实现RS-485芯片的状态转换。在一个具体的实施场景中,采用的软件系统是Linux3.本文档来自技高网
...

【技术保护点】
1.一种切换串口数据传输状态的方法,其特征在于,所述方法包括:所述串口通过设置在所述串口内的串口寄存器发送数据;创建用于判断所述串口寄存器是否为空的实时线程;若所述实时线程判断所述串口寄存器为空,则所述串口切换数据传输状态。

【技术特征摘要】
【国外来华专利技术】1.一种切换串口数据传输状态的方法,其特征在于,所述方法包括:所述串口通过设置在所述串口内的串口寄存器发送数据;创建用于判断所述串口寄存器是否为空的实时线程;若所述实时线程判断所述串口寄存器为空,则所述串口切换数据传输状态。2.根据权利要求1所述的切换串口数据传输状态的方法,其特征在于,所述串口通过设置在所述串口内的串口寄存器发送数据的步骤具体包括:所述串口使用Linux线程通过设置在所述串口内的串口寄存器发送数据。3.根据权利要求1所述的切换串口数据传输状态的方法,其特征在于,若所述实时线程判断所述串口寄存器为空,则所述串口切换数据传输状态的步骤之后还包括:所述串口接收数据并存储至所述串口寄存器。4.根据权利要求1所述的切换串口数据传输状态的方法,其特征在于,所述方法还包括:若所述实时线程判断所述串口寄存器不为空,则继续判断所述串口寄存器的状态。...

【专利技术属性】
技术研发人员:武小虎
申请(专利权)人:深圳配天智能技术研究院有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1