一种控制485收发方向切换的方法、装置、设备及介质

文档序号:115484 发布日期:2021-10-19 浏览:19次 >En<

阅读说明:本技术 一种控制485收发方向切换的方法、装置、设备及介质 (Method, device, equipment and medium for controlling 485 receiving and transmitting direction switching ) 是由 张玉良 江燕良 徐富军 张功 于 2021-05-19 设计创作,主要内容包括:本申请公开了一种控制485收发方向切换的方法,包括接收收发方向切换的指令;根据指令,利用应用层中的管理函数调用串口的485配置函数;485配置函数在驱动层为串口注册完成;根据485配置函数,利用应用层中的电平参数处理函数控制串口的电平在发送数据起始时刻和接收数据结束时刻为第一电平,并控制串口的电平在发送数据结束时刻和接收数据起始时刻为第二电平;第一电平、第二电平为高电平、低电平中的一种,且第一电平、第二电平不同。由于485配置函数在驱动层中注册完成,在切换时可以精确估计系统延迟时间,使得收发状态可以及时完成切换,避免数据丢失,提升通信稳定性和可靠性。本申请还提供具有上述优点的装置、设备及介质。(The application discloses a method for controlling 485 receiving and transmitting direction switching, which comprises the steps of receiving an instruction of receiving and transmitting direction switching; calling a 485 configuration function of the serial port by using a management function in the application layer according to the instruction; the 485 configuration function is registered for the serial port in the driving layer; according to a 485 configuration function, a level parameter processing function in an application layer is utilized to control the level of a serial port to be a first level at the data sending starting time and the data receiving ending time, and control the level of the serial port to be a second level at the data sending ending time and the data receiving starting time; the first level and the second level are one of a high level and a low level, and the first level and the second level are different. Because the 485 configuration function is registered in the driving layer, the delay time of the system can be accurately estimated during switching, so that the receiving and transmitting states can be switched in time, data loss is avoided, and the communication stability and reliability are improved. The present application also provides devices, apparatuses, and media having the above advantages.)

一种控制485收发方向切换的方法、装置、设备及介质

技术领域

本申请涉及通信技术领域,特别是涉及一种控制485收发方向切换的方法、装置、设备及计算机可读存储介质。

背景技术

485通讯属于半双工通讯,数据可以沿两个方向传送,但同一时刻一个信道只允许单方向传送,即收发过程不能同时进行。通常由CPU(Central Processing Unit,中央处理器)引出三根管脚,包括两个UART管脚(记作PIN_RX、PIN_TX)和一个485收发方向控制管脚(记作PIN_DIR),这三根管脚会接在板上的RS485芯片上,485芯片再向板外引出“D+、D-”两根差分信号总线。当CPU基于Linux系统控制485芯片收发方向进行切换时,在物理上数据已传输完毕时,由于Linux系统自身存在延迟,导致数据发送或者接收完成后,收发方向不能及时切换,进而直接导致数据丢失,影响通信稳定性和可靠性。

因此,如何解决上述技问题应是本领域技术人员重点关注的。

发明内容

本申请的目的是提供一种控制485收发方向切换的方法、装置、设备及计算机可读存储介质,以及时切换收发方向,避免数据丢失。

为解决上述技术问题,本申请提供一种控制485收发方向切换的方法,包括:

接收收发方向切换的指令;

根据所述指令,利用应用层中的管理函数调用串口的485配置函数;所述485配置函数在驱动层为所述串口注册完成;

根据所述485配置函数,利用所述应用层中的电平参数处理函数控制所述串口的电平在发送数据起始时刻和接收数据结束时刻为第一电平,并控制所述串口的电平在发送数据结束时刻和接收数据起始时刻为第二电平;

其中,所述第一电平、所述第二电平为高电平、低电平中的一种,且所述第一电平、所述第二电平不同。

可选的,所述根据所述指令,利用应用层中的管理函数调用串口的485配置函数之前,还包括:

初始化所述串口;

判断所述串口是否使能485模式;

若所述串口使能485模式,则判断所述串口是否支持485模式;

若所述串口支持485模式,则进入根据所述指令,利用应用层中的管理函数调用串口的485配置函数的步骤。

可选的,所述利用应用层中的管理函数调用串口的485配置函数之前,还包括:

在所述应用层中打开所述串口。

可选的,控制所述串口的电平在发送数据结束时刻为第二电平,其中,所述第二电平为低电平包括:

调用在所述应用层中已完成注册的中断处理函数;

根据所述中断处理函数,调用所述电平处理函数,以拉低所述串口的电平。

本申请还提供一种控制485收发方向切换的装置,包括:

接收模块,用于接收收发方向切换的指令;

第一调用模块,用于根据所述指令,利用应用层中的管理函数调用串口的485配置函数;所述485配置函数在驱动层为所述串口注册完成;

调整模块,用于根据所述485配置函数,利用所述应用层中的电平参数处理函数控制所述串口的电平在发送数据起始时刻和接收数据结束时刻为第一电平,并控制所述串口的电平在发送数据结束时刻和接收数据起始时刻为第二电平;

其中,所述第一电平、所述第二电平为高电平、低电平中的一种,且所述第一电平、所述第二电平不同。

可选的,还包括:

初始化模块,用于初始化所述串口;

第一判断模块,用于判断所述串口是否使能485模式;

第二判断模块,用于若所述串口使能485模式,则判断所述串口是否支持485模式;

转入模块,用于若所述串口支持485模式,则进入接收收发方向切换的指令的步骤。

可选的,还包括:

打开模块,用于在所述应用层中打开所述串口。

可选的,还包括:

第二调用模块,用于调用在所述应用层中已完成注册的中断处理函数;

第三调用模块,用于根据所述中断处理函数,调用所述电平处理函数,以拉低所述串口的电平。

本申请还提供一种控制485收发方向切换的设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现上述任一种所述控制485收发方向切换的方法的步骤。

本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一种所述控制485收发方向切换的方法的步骤。

本申请所提供的一种控制485收发方向切换的方法,包括:接收收发方向切换的指令;根据所述指令,利用应用层中的管理函数调用串口的485配置函数;所述485配置函数在驱动层为所述串口注册完成;根据所述485配置函数,利用所述应用层中的电平参数处理函数控制所述串口的电平在发送数据起始时刻和接收数据结束时刻为第一电平,并控制所述串口的电平在发送数据结束时刻和接收数据起始时刻为第二电平;其中,所述第一电平、所述第二电平为高电平、低电平中的一种,且所述第一电平、所述第二电平不同。

可见,本申请中当需要进行收发方向切换时,通过应用层中的管理函数调用串口的485配置函数,进而根据485配置函数调用位于应用层中的电平参数处理函数,利用电平参数处理函数调整串口在发送数据起始时刻和接收数据结束时刻为第一电平,在发送数据结束时刻和接收数据起始时刻为第二电平,第一电平和第二电平中一个为高电平,另一个为低电平,完成串口的接收和发送方向的切换,由于485配置函数在驱动层中注册完成,在切换时可以精确估计系统延迟时间,使得收发状态可以及时完成切换,避免数据丢失,提升通信稳定性和可靠性。

此外,本申请还提供一种具有上述优点的装置、设备及计算机可读存储介质。

附图说明

为了更清楚的说明本申请实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例所提供的一种控制485收发方向切换的方法的流程图;

图2为本申请实施例所提供的另一种控制485收发方向切换的方法的流程图;

图3为本申请实施例提供的控制485收发方向切换装置的结构框图;

图4为本申请实施例所提供的控制485收发方向切换设备的结构框图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

正如背景技术部分所述,目前,当CPU基于Linux系统控制485芯片收发方向进行切换时,在物理上数据已传输完毕时,由于Linux系统自身存在延迟,导致数据发送或者接收完成后,收发方向不能及时切换,进而直接导致数据丢失,影响通信稳定性和可靠性。

有鉴于此,本申请提供一种控制485收发方向切换的方法,请参考图1,图1为本申请实施例所提供的一种控制485收发方向切换的方法的流程图,该方法包括:

步骤S101:接收收发方向切换的指令。

步骤S102:根据所述指令,利用应用层中的管理函数调用串口的485配置函数;所述485配置函数在驱动层为所述串口注册完成。

管理函数是在应用层,管理函数可以为ioctl()函数。

需要指出的是,接收收发方向切换的指令之后,利用应用层中的管理函数调用串口的485配置函数之前,串口已经打开且处于使能485模式状态,并且支持485模式。

还需要指出的是,485配置函数在驱动层注册之前,已在驱动层编写完成,即485配置函数在驱动层编写并注册。

485配置函数中包括两个参数,为便于描述分别称为第一参数、第二参数。第一参数关联具体的串口设备,例如,当第一参数为A时,对应A串口设备,当第一参数为B时,对应B串口设备;将第二参数RS485保存在第一参数up里,第二参数表示串口的使能/禁用状态,判断第二参数是否使能了485模式,例如,若使能,则将485方向设置为接收或者发送(一般情况下串口默认设置为接收),然后注册中断底半部电平参数处理函数,电平参数处理函数可以为tasklet处理函数。

步骤S103:根据所述485配置函数,利用所述应用层中的电平参数处理函数控制所述串口的电平在发送数据起始时刻和接收数据结束时刻为第一电平,并控制所述串口的电平在发送数据结束时刻和接收数据起始时刻为第二电平;其中,所述第一电平、所述第二电平为高电平、低电平中的一种,且所述第一电平、所述第二电平不同。

应用层中的电平参数处理函数可以为tasklet处理函数。

需要说明的是,在控制电平为高电平或者低电平时,具体的过程是利用电平参数处理函数拉高或者拉低电平参数PIN_DIR,从而实现对电平的拉高或者拉低。

一般情况下,串口在接收数据时,电平为低电平,在发送数据时,电平为高电平,所以此种情况下,第一电平为高电平,第二电平为低电平。但是,本申请对此并不做具体限定,当设定接收数据的电平为高电平、发送数据的电平为低电平时,第一电平为低电平,第二电平为高电平。

以串口默认设置为接收方向,串口在接收数据时,电平为低电平,在发送数据时,电平为高电平为例,对串口的切换情况进行阐述。第一种情况,串口处于初始默认的接收方向或者在收发过程中,当前处于接收方向,即电平处于低电平,进行切换时,发送数据起始时刻拉高电平至高电平,在发送数据结束时刻拉低电平至低电平;第二情况,串口处于发送方向,即电平处于高电平,进行切换时,在接收数据的起始时刻拉低电平至低电平,在接收数据的结束时刻拉高电平至高电平。

本申请中当需要进行收发方向切换时,通过应用层中的管理函数调用串口的485配置函数,进而根据485配置函数调用位于应用层中的电平参数处理函数,利用电平参数处理函数调整串口在发送数据起始时刻和接收数据结束时刻为第一电平,在发送数据结束时刻和接收数据起始时刻为第二电平,第一电平和第二电平中一个为高电平,另一个为低电平,完成串口的接收和发送方向的切换,由于485配置函数在驱动层中注册完成,在切换时可以精确估计系统延迟时间,使得收发状态可以及时完成切换,避免数据丢失,提升通信稳定性和可靠性。用示波器测试485通信收发信号波形,485收发方向切换非常准时,仅有微秒级别的延迟。

在上述实施例的基础上,在本申请的一个实施例中,所述根据所述指令,利用应用层中的管理函数调用串口的485配置函数之前,还包括:

初始化所述串口;

判断所述串口是否使能485模式;

若所述串口使能485模式,则判断所述串口是否支持485模式;

若所述串口支持485模式,则进入根据所述指令,利用应用层中的管理函数调用串口的485配置函数的步骤。

需要指出的是,当判断串口是否使能485模式的判定结果为串口禁用485模式,则返回初始化串口的步骤。

当判断所述串口是否支持485模式的判定结果为串口不支持485模式,则返回初始化串口的步骤。

进一步的,所述利用应用层中的管理函数调用串口的485配置函数之前,还包括:

在所述应用层中打开所述串口。

具体的,利用应用层中的open()函数打开串口。

在上述任一实施例的基础上,在本申请的一个实施例中,在当串口在接收数据时,电平为低电平,在发送数据时,电平为高电平的条件下,所述控制所述串口的电平在发送数据结束时刻为第二电平,其中,所述第二电平为低电平包括:

调用在所述应用层中已完成注册的中断处理函数;

根据所述中断处理函数,调用所述电平处理函数,以拉低所述串口的电平。

电平处理函数是嵌套在中断处理函数中的。串口的类型包括但不限于8250,16550。

本实施例中,在串口在发送数据结束时刻,收发数据是通过中断方式实现的,串口的结束时刻在中断处理程序中判断,中断方式的优先级高,可以避免其他中断处理引入的附加周期,缩短时间。

下面以一具体情况对本申请中的制485收发方向切换的方法进行介绍。请参考图2,图2为本申请实施例所提供的另一种控制485收发方向切换的方法的流程图,该方法包括:

步骤1、接收收发方向切换的指令;

步骤2、初始化串口;其中,串口默认设置为接收方向;

步骤3、判断串口是否使能485模式;

步骤4、若串口禁用485模式,则返回初始化串口的步骤;

步骤5、若串口使能485模式,则判断串口是否支持485模式;

步骤6、若串口不支持485模式,则返回初始化串口的步骤;

步骤7、若串口支持485模式,则驱动层编写并注册485配置函数;

步骤8、应用层中的open()函数打开串口;

步骤9、应用层中的ioctl()函数使能串口485模式时,ioctl()函数调用485配置函数;

步骤10、应用层中的tasklet处理函数在数据发送过程的起始时刻拉高PIN_DIR;

步骤11、应用层注册中断处理函数;

步骤12、调用中断处理函数;

步骤13、在serial8250_tx_chars()中调用底半部机制tasklet处理函数;

步骤14、tasklet处理函数在发送过程的结束时刻拉低PIN_DIR。

下面对本申请实施例提供的控制485收发方向切换装置进行介绍,下文描述的控制485收发方向切换装置与上文描述的控制485收发方向切换方法可相互对应参照。

图3为本申请实施例提供的控制485收发方向切换装置的结构框图,参照图3控制485收发方向切换装置可以包括:

接收模块100,用于接收收发方向切换的指令;

第一调用模块200,用于根据所述指令,利用应用层中的管理函数调用串口的485配置函数;所述485配置函数在驱动层为所述串口注册完成;

调整模块300,用于根据所述485配置函数,利用所述应用层中的电平参数处理函数控制所述串口的电平在发送数据起始时刻和接收数据结束时刻为第一电平,并控制所述串口的电平在发送数据结束时刻和接收数据起始时刻为第二电平;

其中,所述第一电平、所述第二电平为高电平、低电平中的一种,且所述第一电平、所述第二电平不同。

本实施例的控制485收发方向切换装置用于实现前述的控制485收发方向切换方法,因此控制485收发方向切换装置中的具体实施方式可见前文中的控制485收发方向切换方法的实施例部分,例如,接收模块100,第一调用模块200,调整模块300,分别用于实现上述控制485收发方向切换方法中步骤S101,S102,S103,所以,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再赘述。

可选的,控制485收发方向切换的装置还包括:

初始化模块,用于初始化所述串口;

第一判断模块,用于判断所述串口是否使能485模式;

第二判断模块,用于若所述串口使能485模式,则判断所述串口是否支持485模式;

转入模块,用于若所述串口支持485模式,则进入接收收发方向切换的指令的步骤。

可选的,控制485收发方向切换的装置还包括:

打开模块,用于在所述应用层中打开所述串口。

可选的,控制485收发方向切换的装置还包括:

第二调用模块,用于调用在所述应用层中已完成注册的中断处理函数;

第三调用模块,用于根据所述中断处理函数,调用所述电平处理函数,以拉低所述串口的电平。

本申请控制485收发方向切换的装置中,当需要进行收发方向切换时,通过应用层中的管理函数调用串口的485配置函数,进而根据485配置函数调用位于应用层中的电平参数处理函数,利用电平参数处理函数调整串口在发送数据起始时刻和接收数据结束时刻为第一电平,在发送数据结束时刻和接收数据起始时刻为第二电平,第一电平和第二电平中一个为高电平,另一个为低电平,完成串口的接收和发送方向的切换,由于485配置函数在驱动层中注册完成,在切换时可以精确估计系统延迟时间,使得收发状态可以及时完成切换,避免数据丢失,提升通信稳定性和可靠性。

下面对本申请实施例提供的控制485收发方向切换设备进行介绍,下文描述的控制485收发方向切换设备与上文描述的控制485收发方向切换方法可相互对应参照。

图4为本申请实施例所提供的控制485收发方向切换设备的结构框图,包括:

存储器11,用于存储计算机程序;

处理器12,用于执行所述计算机程序时实现上述任一实施例所述控制485收发方向切换的方法的步骤。

下面对本申请实施例提供的计算机可读存储介质进行介绍,下文描述的计算机可读存储介质与上文描述的控制485收发方向切换方法可相互对应参照。

一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述控制485收发方向切换的方法的步骤。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

以上对本申请所提供的控制485收发方向切换的方法、装置、设备及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

13页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:工业现场的人机交互终端及控制系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!