CN109445957A - 一种同步和异步通信控制方法、系统及装置 - Google Patents
一种同步和异步通信控制方法、系统及装置 Download PDFInfo
- Publication number
- CN109445957A CN109445957A CN201811126551.7A CN201811126551A CN109445957A CN 109445957 A CN109445957 A CN 109445957A CN 201811126551 A CN201811126551 A CN 201811126551A CN 109445957 A CN109445957 A CN 109445957A
- Authority
- CN
- China
- Prior art keywords
- communication
- handle
- timer
- end value
- chained list
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/40006—Architecture of a communication node
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L2012/40208—Bus networks characterized by the use of a particular bus standard
- H04L2012/40215—Controller Area Network CAN
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种同步和异步通信控制方法、系统及装置,通过将各个线程生成的数据传输通信句柄添加到链表中用于对异步通信进行控制;当定时器超时前接收到回复消息,则根据回复信息将结果值设置为成功或失败并将该通信句柄从链表中删除;当定时超时仍未接收到回复消息,根据回复信息将结果值设置为超时;同时支持取消操作,从而终止线程并结束本次异步通信。本发明与常见的轮询或回调方式相比较,代码更简洁,逻辑更清晰,用户使用更方便,适合于在大型项目中的应用。此外,将通信句柄按面向对象思想进行封装,符合面向对象和组件开发的概念,有效分离业务和复杂的底层技术,开发效率高,代码耦合性低,程序稳定可靠。
Description
技术领域
本发明涉及通信技术领域,尤其涉及的是一种基于Linux C的同步和异步通信控制方法、系统及装置。
背景技术
技术随着Linux操作系统的普及,从桌面到嵌入式和移动设备,到处都涉及Linux操作系统。特别是在嵌入式自动控制领域,Linux系统的应用极其广泛。信息通信方式分为同步和异步方式,同步方式是发送后一直等待结果,在结果未收到之前不能做其它的工作;异步方式是同时可以做多项任务,在之后的某时刻可以等待全部或部分结果。很显然异步通信的效率更高,但复杂度也会成倍增加。Linux系统异步通信需要考虑执行效率,同时还需要等待回复结果的处理和超时问题。传统的做法难以实现或者实现过于复杂,维护成本高,对开发人员底层控制能力要求高,稍有疏忽会导致出错和稳定性下降。这种做法的缺点如下:
1、应用程序通信过程中线程处理函数、定时器超时处理函数、回复消息处理函数彼此分离,互相通信困难。
2、为了记录每次的通信状态,需要大量的全局变量来记录,程序耦合性极高,维护难度极大。
3、应用的业务逻辑和底层数据通信处理混杂在一起,互相干扰,程序复杂,编写难度大。对于复杂的业务应用处理,业务处理和数据处理部分程序互相影响,程序很难达到稳定。
4、因为多线程的异步特性,导致每次通信都是互相独立的处理过程。而实际复杂的业务应用中需要同时进行多次通信并且各通信处理流程间实现同步,此时全局变量数量和回调函数数量急剧增长。实现同步化难度更大,甚至对于经验缺乏者是不可能的。
5、同步和异步的处理方式差异较大,对于同时需要同步和异步的情况很难支持。
因此,现有技术有待于进一步的改进。
发明内容
鉴于上述现有技术中的不足之处,本发明的目的在于提供一种基于Linux C的同步和异步通信控制方法、系统及装置,克服现有技术中异步传输实现复杂,维护成本高,对开发人员底层控制能力要求高,出错率和稳定性差的缺陷。
本发明提供的第一实施例为一种基于Linux C的同步和异步通信控制方法,其中,包括:
启动多线程通信数据传输,将数据传输的结果值设置为初始值,并同时启动定时器;
将各个线程生成的数据传输通信句柄添加到链表中;
当接收到回复消息,查找所述链表中是否含有与所述回复消息相匹配的通信句柄,若含有并且该通信句柄所对应的结果值为初始值,则删除该通信句柄并停止定时器,以及根据回复信息将结果值设置为成功或失败;
否则,当定时超时仍未接收到回复消息,查找所述链表中是否含有与该定时器句柄中包含的通信句柄相匹配的通信句柄,若含有并且该通信句柄所对应的结果值为初始值,则删除该通信句柄并停止定时器,以及根据回复信息将结果值设置为超时。
可选的,包括:
所述定时器超时的回调函数采用线程方式,且返回的通信句柄为结构体指针。
可选的,所述将各个线程数据传输生成的通信句柄添加到链表中的步骤包括:
按照异步调用的顺序将通信句柄插入到链表末尾。
可选的,所述方法还包括:
将通信句柄添加到链表中之后将所述通信句柄返回到客户端。
可选的,所述方法还包括:
当接收到用户查询指令,则判断所述查询指令所对应数据传输的结果值是否为初始值;
若不是,则直接输出相对应的结果值;
若是,则阻塞查询调用线程,输出等待提醒,当判断出所述查询结果状态指令所对应的结果值不为初始值时,输出相对应的结果值。
可选的,所述方法还包括:
在停止定时器对通信句柄定时的同时,同步删除定时器中对该通信句柄进行定时的定时器句柄。
本发明提供的第二实施例为一种基于Linux C的同步和异步通信控制系统,其中,包括:通信组件和定时器模块;
所述信通信组件,用于启动多线程通信数据传输,并将数据传输的结果值设置为初始值;所述定时器模块,用于在多线程通信数据传输启动的同时,启动定时器;
所述通信组件,还用于将各个线程数据传输生成的通信句柄添加到链表中;
所述通信组件,还用于当接收到回复消息,查找所述链表中是否含有与所述回复消息相匹配的通信句柄,若含有并且该通信句柄所对应的结果值为初始值,则删除该通信句柄以及根据回复信息将结果值设置为成功或失败;所述定时器模块同步停止定时器对该通信句柄定时;
以及,所述通信组件,还用于当定时超时仍未接收到回复消息,查找所述链表中是否含有与该次定时相对应的定时器句柄相匹配的通信句柄,若含有并且该通信句柄所对应的结果值为初始值,则删除该通信句柄,以及根据回复信息将结果值设置为超时;所述定时器模块同步停止定时器对该通信句柄定时。
同时,可以在任何时候取消异步通信,该操作同时取消线程执行并将结果值设置为取消。此时,如果有回复消息到达或者定时器超时,都不会对结果产生任何影响,结果始终为取消。
可选的,所述定时器的超时回调函数采用线程方式,且返回的通信句柄为结构体指针。
本发明提供的第三实施例为一种计算机通信设备,其中,包括:PC机、主控板和多个单片机;
所述PC机与主控板之间采用以太网通信,所述主控板与多个单片机之间通过CAN总线进行多线程通信;
其中,所述主控板上设置所述的多线程通信控制系统。
有益效果,本发明提供了一种多线程通信的控制方法、系统及装置,通过将各个线程数据传输生成的通信句柄添加到链表中;当定时未超时,且接收到回复消息,则根据回复信息将结果值设置为成功或失败并将该通信句柄从链表中删除;当定时超时仍未接收到回复消息,根据回复信息将结果值设置为超时。本发明所提供的方法、系统及装置,采用了与常见的异步回调方式相比较,代码更简洁,逻辑更清晰,用户使用更方便,有助于大型项目的使用。同时将通信句柄进行封装,符合面向对象的思想和组件开发的概念,可以有效分离业务和复杂的底层技术,开发效率高,代码耦合性低,程序稳定可靠。
附图说明
图1是本发明所提供的基于Linux C的同步和异步通信控制方法的步骤流程图;
图2是本发明所提供的所述方法的具体应用实施例中的示意图;
图3是本发明所提供的方法应用实施例中分杯设备的物理拓扑图;
图4是本发明所提供的方法应用实施例中分杯设备硬件结构示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用于解释本发明,并不用于限定本发明。
本发明提供的第一实施例为一种基于Linux C的同步和异步通信控制方法,如图1所示,包括:
步骤S1、启动多线程通信数据传输,将数据传输的结果值设置为初始值,并同步启动定时器。
终端首先启动本次多线程通信数据传输,首先将数据传输的结果值设置为初始值,以及启动定时器,对每个启动的线程通信数据传输的时间进行定时。
具体的,终端的通信组件启动多线程通信,该多线程通信可以为同步传输或异步传输。同步时每次通信都等待结果返回后才继续执行,异步可以同时启动多个异步通信,并在某处依次等待全部结果返回,之后才继续执行。每个启动的传输线程均通过定时器对其进行定时。
步骤S2、将各个线程数据传输生成的通信句柄添加到链表中。
链表中保存通信句柄,方便后期收到回复或超时再进行处理。因为回复消息必须携带与发送时的消息相同的ID,当接收到回复消息或定时器超时发生时,在链表中按ID查找对应的通信句柄。如果找到通信句柄,则将该通信句柄中的结果值进行更改,同时从链表中删除该通信句柄。
本步骤中,按异步调用的顺序将通信句柄插入到链表末尾,对此链表的操作需要加锁,保证并发操作的原子性和正确性。
步骤S3、当接收到回复消息,查找所述链表中是否含有与所述回复消息相匹配的通信句柄,若含有并且该通信句柄所对应的结果值为初始值,则删除该通信句柄并停止定时器对该通信句柄定时,以及根据回复信息将结果值设置为成功或失败。
步骤S4、若当定时超时仍未接收到回复消息,查找所述链表中是否含有与该定时器句柄中包含的通信句柄相匹配的通信句柄,若含有并且该通信句柄所对应的结果值为初始值,则删除该通信句柄并停止定时器,以及根据回复信息将结果值设置为超时。
为了实现更加准确的查询结果,所述方法还包括:
在停止定时器对通信句柄定时的同时,同步删除定时器中对该通信句柄进行定时的定时器句柄。
较佳的,所述定时器超时的回调函数采用线程方式,且返回的通信句柄为结构体指针。
为了便于客户根据通信句柄查询数据信息传输的结果,所述方法还包括:
将通信句柄添加到链表中之后将所述通信句柄返回到客户端。
进一步的,所述方法还包括:
当接收到用户查询指令,则判断所述查询指令所对应数据传输的结果值是否为初始值;
若不是,则直接输出相对应的结果值;
若是,则阻塞查询调用线程,客户端等待结果,当判断出所述查询结果状态指令所对应的结果值不为初始值时,输出相对应的结果值。
具体的,结合图2所示,对上述方法做更加详细的说明。在具体应用实施例中包括以下实现过程:
1、首先客户端调用通信组件异步执行任务,通信组件启动线程进行通信数据的发送,同时启动定时器。
2、通信组件将通信句柄添加到链表中,之后将通信句柄返回给客户端。客户端记录该次调用的句柄,用于随后的通信结果查询。
3、对于需要并发执行的通信过程,则依次执行步骤1和步骤2的过程。
4、如果此时有通信回复消息到达,则在链表中寻找匹配的通信句柄。如果找到则将该通信句柄对应的结果值根据返回结果设置为成功或失败,同时从链表中删除该通信句柄。同时,停止该句柄对应的定时器。
5、否则,还没有收到通信回复消息,但定时器超时时间到达,则在链表中寻找匹配的通信句柄。如果找到则将该通信句柄对应的结果值设置为超时,同时从链表中删除该通信句柄。
6、客户端应用可以随时调用通信组件接口,来查询结果状态。如果通信句柄的结果值不等于初始值,表示已经收到回复消息或超时了,则直接返回结果值。否则,阻塞调用线程并等待结果,直到通信结果不为初始值才返回。返回的结果可以为成功、失败或超时等。
所述第1步中的定时器时钟为高精度时钟,定时器的超时回调函数采用线程方式,保证定时器与通信流程并行执行,互相不必阻塞等待。返回的通信句柄为结构体指针,其中包含唯一的ID值、结果值、信号量、定时器句柄、参数信息。初始启动时结果值为默认的初始值,表示未收到最终的结果。信号量为无信号状态,用来阻塞客户端获得结果。
第4步中对通信句柄中的结果值和信号量进行修改,修改的条件为收到回复消息或者定时器超时。如果是回复消息,则根据回复消息中返回的结果值进行对通信句柄的结果值设置,回复结果可以为成功和失败,同时还可以包括其它参数,结果值和回复参数都可以保存到通信句柄中。当收到回复消息后立即停止并删除通信句柄对应的定时器句柄,保证尽早回收资源,减少资源浪费并提高性能。可能客户端随时会取消该通信任务,此时结果设置为取消。
第5步中收到定时器超时,会根据定时器的句柄在链表中搜索对应的通信句柄。如果找到对应的通信句柄,那么将通信句柄的结果值改为超时。同时,从链表中删除该通信句柄。后续会有回复消息到达时,因为在链表中查找不到对应的通信句柄,从而不会对结果造成影响。
第6步中,此时通信句柄中已经包含最终的结果。客户端可以根据持有的通信句柄随时获得通信句柄的结果值。因为客户端获得结果的时机不确定,有可能是通信句柄的结果值已经被设置,或者还未进行设置。为了实现客户端的同步调用,需要进行阻塞等待,直到结果被设置时信号量变为有信号为止。阻塞采用信号量解决,获得结果时等待信号量有信号,如果无信号则阻塞等待。当回复消息或超时到达时,设置结果值的同时设置信号量为有信号状态,则客户端可立即获得结果。
本发明的技术方案是按以下方式实现的,采用多线程启动异步通信任务并发送数据消息,设置结果为初始状态,并记录该次异步通信的句柄。后续收到回复消息时判断与该句柄是否匹配,如果匹配并且结果为初始状态则将结果设置为成功或失败。如果定时器到达超时时间,但结果是初始状态,则将结果设置为超时。
实际项目中采用此组件可以有效分离业务和复杂的底层技术,开发效率高,代码耦合性低,程序稳定可靠。
本发明提供的第二实施例为一种基于Linux C的同步和异步通信控制系统,所示通信控制系统包括:通信组件和定时器模块;
所述信通信组件,用于启动多线程通信数据传输,并将数据传输的结果值设置为初始值;所述定时器模块,用于在多线程通信数据传输启动的同时,启动定时器;
所述通信组件,还用于将各个线程数据传输生成的通信句柄添加到链表中;
所述通信组件,还用于当接收到回复消息,查找所述链表中是否含有与所述回复消息相匹配的通信句柄,若含有并且该通信句柄所对应的结果值为初始值,则删除该通信句柄以及根据回复信息将结果值设置为成功或失败;所述定时器模块同步停止定时器对该通信句柄定时;
以及,所述通信组件,还用于当定时超时仍未接收到回复消息,查找所述链表中是否含有与该定时器句柄中所包含的通信句柄相匹配的通信句柄,若含有并且该通信句柄所对应的结果值为初始值,则删除该通信句柄,以及根据回复信息将结果值设置为超时;所述定时器模块同步停止定时器对该通信句柄定时。
具体的,所述定时器的超时回调函数采用线程方式,且返回的通信句柄为结构体指针。
本发明提供的第三实施例为一种计算机通信设备,包括:PC机、主控板和多个单片机;
所述PC机与主控板之间采用以太网通信,所述主控板与多个单片机之间通过CAN总线进行多线程通信;
其中,所述主控板上设置有所述的多线程通信控制系统。
下面以所述计算机通信设备为分杯设备为例,介绍所述计算机通信设备中通信组件的具体应用。首先保证链表初始化一次,链表是组件公用变量,采用局部静态变量。之后,接收输入参数并同时启动异步通信线程和定时器,异步通信线程进行后续的通信处理,而定时器只是计时,直到超时为止。如图2所示,左边的流程为通信处理部分,右侧为定时器处理部分,两部分同时并行执行。
左侧通信处理流程首先启动线程进行数据发送并生成通信句柄,之后将通信句柄添加到链表并返回给客户端。客户端会根据该句柄获得通信结果,在没有将结果改变为非初始值之前,客户端线程只能阻塞等待。直达有回复消息到达,并根据回复的结果设置通信结果值是成功还是失败,并停止定时器,防止定时器再次超时而无端的浪费资源。另一种可能就是回复消息未到达时,右边流程的定时器超时时间到达,此时通信结果设置为超时。无论哪种情况都会执行下面的公共流程,即从链表删除通信句柄。之后如果有客户端获取结果,则立即返回结果,并结束本次通信处理流程。
图3是分杯设备的物理拓扑图。PC机与主控板采用以太网通信,主控板与机械手控制单片机、轨道控制单片机、落料控制单片机、吸样控制单片机通过CAN总线进行通信。主控板为控制中心,与PC机和单片机通信都是通过异步通信组件来完成。
图4是通信组件在分杯设备的应用硬件示意图。
首先PC机发送开始命令给主控板,主控板调用异步通信组件,向机械手控制板发送夹取样本命令,并启动定时器设置超时时间为10秒。之后通信组件等待机械手返回结果,机械手成功夹起样本后返回成功,夹取失败返回失败。如果机械手控制板出现故障,则无法向主控板发送结果数据,10秒后结果为超时,发送报警信息给PC机,同时结束处理流程。
其次,主控板调用异步通信组件,向机械手控制板发送将样本放到轨道上命令,并启动定时器设置超时时间为6秒。之后通信组件等待机械手返回结果,机械手成功将样本放到轨道上后返回成功,任何错误都将返回失败。如果机械手控制板出现故障,则无法向主控板发送结果数据,6秒后结果为超时,发送报警信息给PC机,同时结束处理流程。成功后,机械手会将样本放到图3中输入位的位置。
第3步,主控板调用异步通信组件,向轨道控制板发送运输样本命令,并启动定时器设置超时时间为15秒。之后通信组件等待轨道返回结果,轨道成功将样本运到吸样位置后返回成功,任何错误都将返回失败。如果轨道控制板出现故障,则无法向主控板发送结果数据,15秒后结果为超时,发送报警信息给PC机,同时结束处理流程。成功后,样本会从图3中输入位到达吸样位的位置。
第4步,主控板调用异步通信组件,向落料控制板发送准备分杯试管命令,并启动定时器设置超时时间为30秒。之后通信组件等待落料机构返回结果,落料成功并准备分杯试管后返回成功,任何错误都返回失败。如果落料控制板出现故障,则无法向主控板发送结果数据,30秒后结果为超时,发送报警信息给PC机,同时结束处理流程。成功后,分样试管会在图3中吐样位的位置。
最后,主控板调用异步通信组件,向分杯控制板发送吸样并吐样命令,并启动定时器设置超时时间为30秒。之后通信组件等待分杯返回结果,成功吸取样本并吐到分杯试管后返回成功,任何错误都将返回失败。如果分杯控制板出现故障,则无法向主控板发送结果数据,30秒后结果为超时,发送报警信息给PC机,同时结束处理流程。
本发明与现有技术相比的优势和有效性是:
本发明对于通信的处理封装为组件,对外只提供启动通信和获取通信结果接口,将复杂性封装在组件中。发送和接收采用异步方式,但对于结果的获取支持同步和异步方式。与常见的异步回调方式相比较,代码更简洁,逻辑更清晰,用户使用更方便,有助于大型项目的使用。同时将通信句柄进行封装,符合面向对象的思想和组件开发的概念。此外,本组件与硬件和嵌入式系统有关,但是经过适当的扩展,可以作为通用的组件和机制,适用于其它通信场景。
上述具体实施方式仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述具体实施方式,任何符合本发明的异步和同步数据通信的方法的权利要求书的且任何所属技术领域的普通技术人员对其所做的适当变化或替换,皆应落入本发明的专利保护范围。
Claims (9)
1.一种基于Linux C的同步和异步通信控制方法,其特征在于,包括:
启动多线程进行通信数据传输,将数据传输的结果值设置为初始值,并同时启动定时器;
将各个线程数据传输生成的通信句柄添加到链表中;
当接收到回复消息,查找所述链表中是否含有与所述回复消息相匹配的通信句柄,若含有并且该通信句柄所对应的结果值为初始值,则删除该通信句柄并停止定时器,以及根据回复信息将结果值设置为成功或失败;
否则,当定时超时仍未接收到回复消息,查找所述链表中是否含有与该定时器句柄中包含的通信句柄相匹配的通信句柄,若含有并且该通信句柄所对应的结果值为初始值,则删除该通信句柄并停止定时器,以及根据回复信息将结果值设置为超时。
2.根据权利要求1所述的基于Linux C的同步和异步通信控制方法,其特征在于,包括:
所述定时器超时的回调函数采用线程方式,且返回的通信句柄为结构体指针。
3.根据权利要求1所述的基于Linux C的同步和异步通信控制方法,其特征在于,所述将各个线程数据传输生成的通信句柄添加到链表中的步骤包括:
按照异步调用的顺序将通信句柄插入到链表末尾。
4.根据权利要求1所述的基于Linux C的同步和异步通信控制方法,其特征在于,所述方法还包括:
将通信句柄添加到链表中之后将所述通信句柄返回到客户端。
5.根据权利要求4所述的基于Linux C的同步和异步通信控制方法,其特征在于,所述方法还包括:
当接收到用户查询指令,则判断所述查询指令所对应数据传输的结果值是否为初始值;
若不是,则直接输出相对应的结果值;
若是,则阻塞查询调用线程,输出等待提醒,当判断出所述查询结果状态指令所对应的结果值不为初始值时,输出相对应的结果值。
6.根据权利要求1所述的基于Linux C的同步和异步通信控制方法,其特征在于,所述方法还包括:
在停止定时器对通信句柄定时的同时,同步删除定时器中对该通信句柄进行定时的定时器句柄。
7.一种基于Linux C的同步和异步通信控制系统,其特征在于,包括:通信组件和定时器模块;
所述信通信组件,用于启动多线程通信数据传输,并将数据传输的结果值设置为初始值;所述定时器模块,用于在多线程通信数据传输启动的同时,启动定时器;
所述通信组件,还用于将各个线程数据传输生成的通信句柄添加到链表中;
所述通信组件,还用于当接收到回复消息,查找所述链表中是否含有与所述回复消息相匹配的通信句柄,若含有并且该通信句柄所对应的结果值为初始值,则删除该通信句柄以及根据回复信息将结果值设置为成功或失败;所述定时器模块同时停止定时器对该通信句柄定时;
以及,所述通信组件,还用于当定时超时仍未接收到回复消息,查找所述链表中是否含有与该次定时相对应的定时器句柄相匹配的通信句柄,若含有并且该通信句柄所对应的结果值为初始值,则删除该通信句柄,以及根据回复信息将结果值设置为超时;所述定时器模块同步停止定时器对该通信句柄定时。
8.根据权利要求7所述的基于Linux C的同步和异步通信控制系统,其特征在于,所述定时器超时的回调函数采用线程方式,且返回的通信句柄为结构体指针。
9.一种基于Linux C的同步和异步通信控制装置,其特征在于,包括:PC机、主控板和多个单片机;
所述PC机与主控板之间采用以太网通信,所述主控板与多个单片机之间通过CAN总线进行多线程通信;
其中,所述主控板上设置有如权利要求7所述的多线程通信控制系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811126551.7A CN109445957A (zh) | 2018-09-26 | 2018-09-26 | 一种同步和异步通信控制方法、系统及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811126551.7A CN109445957A (zh) | 2018-09-26 | 2018-09-26 | 一种同步和异步通信控制方法、系统及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109445957A true CN109445957A (zh) | 2019-03-08 |
Family
ID=65544385
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811126551.7A Pending CN109445957A (zh) | 2018-09-26 | 2018-09-26 | 一种同步和异步通信控制方法、系统及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109445957A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109960659A (zh) * | 2019-03-29 | 2019-07-02 | 百度国际科技(深圳)有限公司 | 用于检测应用程序的方法和装置 |
CN110569131A (zh) * | 2019-08-22 | 2019-12-13 | 北京华捷艾米科技有限公司 | 一种信号量管理系统及信号量管理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102751785A (zh) * | 2012-05-21 | 2012-10-24 | 中国电力科学研究院 | 一种模块化顺序控制系统及其实现方法 |
CN103037011A (zh) * | 2012-12-26 | 2013-04-10 | 泉州豪杰信息科技发展有限公司 | 基于iocp的海量终端设备接入系统 |
CN106254179A (zh) * | 2016-08-05 | 2016-12-21 | 深圳先进技术研究院 | 一种心跳包异步控制方法及装置 |
CN106571973A (zh) * | 2016-09-28 | 2017-04-19 | 杭州鸿雁智能科技有限公司 | 心跳包超时管理方法及系统 |
-
2018
- 2018-09-26 CN CN201811126551.7A patent/CN109445957A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102751785A (zh) * | 2012-05-21 | 2012-10-24 | 中国电力科学研究院 | 一种模块化顺序控制系统及其实现方法 |
CN103037011A (zh) * | 2012-12-26 | 2013-04-10 | 泉州豪杰信息科技发展有限公司 | 基于iocp的海量终端设备接入系统 |
CN106254179A (zh) * | 2016-08-05 | 2016-12-21 | 深圳先进技术研究院 | 一种心跳包异步控制方法及装置 |
CN106571973A (zh) * | 2016-09-28 | 2017-04-19 | 杭州鸿雁智能科技有限公司 | 心跳包超时管理方法及系统 |
Non-Patent Citations (7)
Title |
---|
ROBERT LOVE: "《LINUX系统编程》", 31 July 2009, 东南大学出版社 * |
丁新民,主编: "《Java程序设计教程》", 28 February 2006, 人民邮电出版社 * |
徐克宝,等: "基于Socket的Windows与Linux平台异步通信", 《计算机系统应用》 * |
朱晓凤: "基于SOCKET编程实现的组态软件与控制器的网络通讯", 《设计参考》 * |
李怀俊: "嵌入式工业以太网控制技术的研究与实现", 《中国优秀硕士学位论文全文数据库信息科技辑(季刊)》 * |
赵向兵,等: "Linux平台即时通信系统的研究与开发", 《软件》 * |
陈学锋: "教学型移动机器人嵌入式控制开发平台设计", 《中国优秀硕士学位论文全文数据库信息科技辑(月刊)》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109960659A (zh) * | 2019-03-29 | 2019-07-02 | 百度国际科技(深圳)有限公司 | 用于检测应用程序的方法和装置 |
CN109960659B (zh) * | 2019-03-29 | 2022-11-01 | 阿波罗智联(北京)科技有限公司 | 用于检测应用程序的方法和装置 |
CN110569131A (zh) * | 2019-08-22 | 2019-12-13 | 北京华捷艾米科技有限公司 | 一种信号量管理系统及信号量管理方法 |
CN110569131B (zh) * | 2019-08-22 | 2022-03-15 | 北京华捷艾米科技有限公司 | 一种信号量管理系统及信号量管理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2891994A1 (en) | Method for achieving automatic synchronization of multisource heterogeneous data resources | |
CN104809202B (zh) | 一种数据库同步的方法和装置 | |
US4823304A (en) | Method of providing synchronous message exchange in an asychronous operating environment | |
CN102306197B (zh) | 保证跨数据源操作结果一致性的装置和方法 | |
CN104809201B (zh) | 一种数据库同步的方法和装置 | |
EP2972983B1 (en) | Dynamically managing memberships in replicated state machines within a distributed computing environment | |
US20180081956A1 (en) | Method for automatically synchronizing multi-source heterogeneous data resources | |
CN106528275A (zh) | 数据任务的处理方法及任务调度器 | |
CN110489086B (zh) | 流程执行控制方法、装置、计算机设备及存储介质 | |
CN109445957A (zh) | 一种同步和异步通信控制方法、系统及装置 | |
Moon et al. | A compositional model to reason about end-to-end QoS in stochastic Reo connectors | |
CN108920260B (zh) | 一种异构系统的交互方法及其装置 | |
Carvalho et al. | A CSP timed input-output relation and a strategy for mechanised conformance verification | |
EP1410168B1 (en) | An efficient timer management system | |
CN110825758B (zh) | 一种交易处理的方法及装置 | |
JPS62285170A (ja) | 分散処理システムの入力メッセージ整合化方法 | |
CN109245979B (zh) | 一种CANopen主从站可靠性控制方法及其统筹管理器 | |
Boigelot et al. | Model checking in practice: An analysis of the access. bus™ protocol using spin | |
Wang et al. | Improved time bounds for linearizable implementations of abstract data types | |
CN109450757A (zh) | 一种CANopen主站的启动方法及其统筹管理器 | |
CN112261512B (zh) | 非平衡轮询协议的主站遥控方法、装置、存储介质和设备 | |
CN112115118A (zh) | 数据库压测的优化方法及装置、存储介质、电子设备 | |
CN110245148B (zh) | 一种数据存储方法、装置、系统及介质 | |
CN114546670A (zh) | 一种基于协程的函数式异步数据分发系统及方法 | |
CN112162840A (zh) | 一种基于中断重入机制的协程处理及管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190308 |
|
RJ01 | Rejection of invention patent application after publication |