CN113626219A - 一种基于注册回调机制的线程间数据分发方法 - Google Patents

一种基于注册回调机制的线程间数据分发方法 Download PDF

Info

Publication number
CN113626219A
CN113626219A CN202110900211.0A CN202110900211A CN113626219A CN 113626219 A CN113626219 A CN 113626219A CN 202110900211 A CN202110900211 A CN 202110900211A CN 113626219 A CN113626219 A CN 113626219A
Authority
CN
China
Prior art keywords
data
subscriber
publisher
subscribers
thread
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.)
Granted
Application number
CN202110900211.0A
Other languages
English (en)
Other versions
CN113626219B (zh
Inventor
张小刚
齐乐
陈华
程伟远
王绍源
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hunan University
Original Assignee
Hunan University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hunan University filed Critical Hunan University
Priority to CN202110900211.0A priority Critical patent/CN113626219B/zh
Publication of CN113626219A publication Critical patent/CN113626219A/zh
Application granted granted Critical
Publication of CN113626219B publication Critical patent/CN113626219B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

一种基于注册回调机制的线程间数据分发方法,包括以下步骤:(1)数据发布者注册;(2)数据订阅者注册;(3)数据发布者发布数据;其中,步骤(3)中,数据发布者发布数据的方法如下:数据发布者根据数据订阅者的优先级,调用数据订阅者的回调函数接口或数据插入接口;对于优先级最高的数据订阅者,调用其回调函数接口处理数据;对于其他优先级的数据订阅者,调用其数据插入接口,将数据插入到数据订阅者私有数据链表中,唤醒该数据订阅者按顺序取出数据链表中的数据,并调用该数据订阅者的回调函数依次处理数据链表中取出的数据。本发明数据传输耗时极少,能够应用于线程间数据频繁交互且实时性要求较高的场合。

Description

一种基于注册回调机制的线程间数据分发方法
技术领域
本发明涉及线程间数据分发方法,具体是涉及一种基于注册回调机制的线程间数据分发方法。
背景技术
目前,分布式实时数据分发服务中间件(Data Distribution Service,DDS)强调以数据为中心,提供丰富的QoS(Quality of Service,服务质量)策略,保证数据进行实时、高效、灵活的分发,可满足各种分布式实时通信应用需求。但发明人在实际测试过程中发现,使用DDS在线程间进行数据传输,其传输时延会达到上百微妙,无法充分发挥线程间通信的优势,在机器人通信中间件中某些线程间时序要求比较苛刻,有些优先级高的需要实现10us以内响应。例如处于高速移动状态的机器人,控制器分析传感器信息下发控制指令,控制命令从产生线程传输到执行线程时,其时延应该尽可能小。
在现有技术中,实现线程间通信主要利用带锁队列或无锁队列实现;带锁队列通过锁机制配合临界资源,实现过程中涉及调用操作系统接口,时间开销比较大;无锁队列的传输方式,通信时延较低,但依赖CPU支持原子操作,需要技术人员手动编写实现,对技术人员要求较高,且实现复杂。
发明内容
本发明所要解决的技术问题是,克服上述背景技术的不足,提供一种基于注册回调机制的线程间数据分发方法,数据传输耗时极少,能够应用于线程间数据频繁交互且实时性要求较高的场合。
本发明解决其技术问题采用的技术方案是,一种基于注册回调机制的线程间数据分发方法,包括以下步骤:
(1)数据发布者注册;
(2)数据订阅者注册;
(3)数据发布者发布数据;
其中,步骤(3)中,所述数据发布者发布数据的方法如下:
数据发布者根据数据订阅者的优先级,调用数据订阅者的回调函数接口或数据插入接口;对于优先级最高的数据订阅者,调用其回调函数接口处理数据;对于其他优先级的数据订阅者,调用其数据插入接口,将数据插入到数据订阅者私有数据链表中,唤醒该数据订阅者按顺序取出数据链表中的数据,并调用该数据订阅者的回调函数依次处理数据链表中取出的数据。
进一步,步骤(1)中,所述数据发布者注册的方法如下:
(1-1)线程1向注册中心注册,获得注册中心句柄;
(1-2)在线程1中创建数据发布者,向注册中心提交数据发布者的注册信息;
(1-3)注册中心接收数据发布者的注册请求,将该数据发布者添加到注册中心持有的数据发布者容器中;
(1-4)注册中心将已注册的数据订阅者与数据发布者进行匹配,将所有匹配的数据订阅者添加到数据发布者持有的数据订阅者容器中,并向数据发布者传递所有匹配的数据订阅者的回调函数接口,判断各数据订阅者的优先级,将优先级最高的数据订阅者的回调函数接口绑定至数据发布者。
进一步,步骤(1-2)中,所述数据发布者的注册信息包括主题类型、主题名称以及域。
进一步,步骤(1-4)中,所述数据订阅者与数据发布者匹配的标准为:同一域内,相同主题类型,相同主题名称的数据订阅者与数据发布者相匹配。
进一步,步骤(2)中,所述数据订阅者注册的方法如下:
(2-1)线程2向注册中心注册,获得注册中心句柄;
(2-2)在线程2中创建数据订阅者的回调函数接口;
(2-3)在线程2中创建数据订阅者,向注册中心提交数据订阅者的注册信息;
(2-4)注册中心接收数据订阅者的注册信息,将该数据订阅者添加到注册中心持有的数据订阅者容器中;
(2-5)注册中心将已注册的所有数据发布者与新注册的数据订阅者进行匹配,将新注册的数据订阅者添加到所有匹配的数据发布者持有的数据订阅者容器中,并向所有匹配的数据发布者传递数据订阅者的回调函数接口,判断新注册数据订阅者的优先级,若新注册数据订阅者的优先级高于匹配的数据发布者持有的数据订阅者容器中已有的数据订阅者,将匹配的数据发布者绑定的回调函数接口修改为新注册数据订阅者的回调函数接口。
进一步,步骤(2-3)中,所述数据订阅者的注册信息包括主题类型、主题名称、域、回调函数接口以及数据插入接口。
进一步,步骤(2-5)中,所述数据发布者与数据订阅者匹配的标准为:同一域内相同主题类型,相同主题名称的数据发布者与数据订阅者相匹配。
与现有技术相比,本发明的优点如下:
(1)本发明在机器人中间件本地进程中,提供一个注册中心,记录不同线程中注册的数据发布者和数据订阅订阅者,建立线程间的数据通信通道,使得数据发布者所在线程数据可以在同一时间发布到不同数据订阅者所在线程,简化线程间通信建立过程;数据发布者和数据订阅者多对多存在时,对于优先级最高的数据订阅者,利用注册回调机制,由数据发布者直接调用数据订阅者的回调函数处理数据,数据传输耗时极少,实时响应在10us以内,能够应用于线程间数据频繁交互且实时性要求较高的场合;对于优先级低的数据订阅者,利用发布/订阅通信方式,数据发布者调用数据订阅者的数据插入接口,将数据插入到数据订阅者的数据链表中,实现数据分发功能。
(2)本发明以模块化的方式封装注册中心、数据发布者和数据订阅者,使用过程中可以直接调用提供的注册中心类、数据发布者类和数据订阅者类,快速实现多线程间通信;该方法采用C++标准库实现,支持跨平台使用。
附图说明
图1是本发明实施例数据发布者注册的流程图。
图2是本发明实施例数据订阅者注册的流程图。
图3是本发明实施例数据分发的流程图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步详细描述。
本实施基于注册回调机制的线程间数据分发方法包括线程1:数据发布者所在线程和线程2:数据订阅者所在线程。
本实施基于注册回调机制的线程间数据分发方法包括以下步骤:
101:线程1向注册中心注册,获得注册中心句柄;
102:在线程1中创建数据发布者,向注册中心提交数据发布者的注册信息;数据发布者的注册信息包括主题类型、主题名称以及域;
103:注册中心接收数据发布者的注册请求,将该数据发布者添加到注册中心持有的数据发布者容器中;
104:注册中心将已注册的数据订阅者与数据发布者进行匹配,将所有匹配的数据订阅者添加到数据发布者持有的数据订阅者容器中,并向数据发布者传递所有匹配的数据订阅者的回调函数接口,判断各数据订阅者的优先级,将优先级最高的数据订阅者的回调函数接口绑定至数据发布者;数据订阅者与数据发布者匹配的标准为:同一域内,相同主题类型,相同主题名称的数据订阅者与数据发布者相匹配;主题类型用于标识数据发布者与数据订阅者进行数据交互时传输的数据类型;主题名称用于标识数据发布者与数据订阅者关注的主题;域用于将不同的数据发布者和数据订阅者产生隔离,使不同域中的数据不会产生重叠,避免数据发布者和数据订阅者的数据交互产生混乱,
105:线程2向注册中心注册,获得注册中心句柄;
106:在线程2中创建数据订阅者的回调函数接口;
107:在线程2中创建数据订阅者,向注册中心提交数据订阅者的注册信息;数据订阅者的注册信息包括主题类型、主题名称、域、回调函数接口以及数据插入接口;
108:注册中心接收数据订阅者的注册信息,将该数据订阅者添加到注册中心持有的数据订阅者容器中;
109:注册中心将已注册的所有数据发布者与新注册的数据订阅者进行匹配,将新注册的数据订阅者添加到所有匹配的数据发布者持有的数据订阅者容器中,并向所有匹配的数据发布者传递数据订阅者的回调函数接口,判断新注册数据订阅者的优先级,若新注册数据订阅者的优先级高于匹配的数据发布者持有的数据订阅者容器中已有的数据订阅者,将匹配的数据发布者绑定的回调函数接口修改为新注册数据订阅者的回调函数接口;数据发布者与数据订阅者匹配的标准为:同一域内相同主题类型,相同主题名称的数据发布者与数据订阅者相匹配;
110:线程1的数据发布者发布数据;
111:数据发布者根据数据订阅者的优先级,调用数据订阅者的回调函数接口或数据插入接口;对于优先级最高的数据订阅者,调用其回调函数接口处理数据;对于其他优先级的数据订阅者,调用其数据插入接口,将数据插入到数据订阅者私有数据链表中,唤醒该数据订阅者按顺序取出数据链表中的数据,并调用该数据订阅者的回调函数依次处理数据链表中取出的数据。
本实施基于注册回调机制的线程间数据分发方法包括数据发布者注册、数据订阅者注册和数据分发三部分,参照图1,其中数据发布者注册方法如下:
201:线程1向注册中心注册,获得注册中心句柄;
202:线程1根据主题类型和主题名称创建数据发布者,向注册中心提交数据发布者的注册信息;数据发布者的注册信息包括主题类型、主题名称以及域;
203:注册中心接收数据发布者的注册请求,将该数据发布者添加到注册中心持有的数据发布者容器中;
204:注册中心判断是否有与该数据发布者相匹配的数据订阅者;如果是,执行步骤205,如果否,则执行步骤208;
205:将匹配的数据订阅者添加到数据发布者持有的数据订阅者容器中,并向数据发布者传递匹配的数据订阅者的回调函数接口,
206:判断匹配的数据订阅者的优先级是否大于现有数据订阅者的优先级,如果是,执行步骤207,如果否,则执行步骤208;
207:将优先级最高的数据订阅者的回调函数接口绑定至数据发布者;
208:等待数据发布。
参照图2,其中,数据订阅者注册方法如下:
301:线程2向注册中心注册,获得注册中心句柄;
302:创建数据订阅者的回调函数接口;
303:线程2根据主题类型和主题名称创建数据订阅者,向注册中心提交数据订阅者的注册信息;数据订阅者的注册信息包括主题类型、主题名称、域、回调函数接口以及数据插入接口;
304:注册中心接收数据订阅者的注册信息,将该数据订阅者添加到注册中心持有的数据订阅者容器中;
305:注册中心判断是否有与该数据订阅者相匹配的数据发布者;如果是,执行步骤306,如果否,则执行步骤309;
306:将数据订阅者添加到匹配的数据发布者持有的容器中,并向匹配的数据发布者传递数据订阅者的回调函数接口;
307:判断新注册数据订阅者的优先级是否高于匹配的数据发布者持有容器中已有的数据订阅者,如果是,执行步骤308,如果否,则执行步骤309;
308:将匹配的数据发布者绑定的回调函数接口修改为新注册数据订阅者的回调函数接口;
309:判断该数据订阅者的私有数据链表是否为空,如果是,执行步骤311,如果否,则执行步骤310;
310:按顺序取出数据链表中的数据,并调用回调函数依次处理取出的数据;
311:线程挂起,等待数据发布者唤醒。
参照图3,其中,数据分发方法如下:
401:线程1调用数据发布者的数据发布接口;
402:调用该数据发布者绑定的回调函数接口处理数据;
403:获得该数据发布者的数据订阅者容器;
404:判断是否遍历完数据订阅者容器,如果是,执行步骤408,如果否,则执行步骤405;
405:从数据发布者的数据订阅者容器中获得数据订阅者;
406:判断当前数据订阅者的回调函数接口是否与数据发布者绑定的数据回调接口相同,如果是,执行步骤404,如果否,则执行步骤407;
407:调用当前数据订阅者的数据插入接口,将数据插入到数据订阅者私有数据链表中;
408:唤醒该数据发布者持有数据订阅者容器中的所有数据订阅者;
409:等待下一次数据发布。
本发明插入和取出数据用锁机制。本发明利用注册回调机制,实现数据在线程间快速传输;利用锁机制配合数据链表设计线程间的发布/订阅通信方式,实现数据在多个线程间分发。
本发明在机器人中间件本地进程中,提供一个注册中心,记录不同线程中注册的数据发布者和数据订阅订阅者,建立线程间的数据通信通道,使得数据发布者所在线程数据可以在同一时间发布到不同数据订阅者所在线程,简化线程间通信建立过程;数据发布者和数据订阅者多对多存在时,对于优先级最高的数据订阅者,利用注册回调机制,由数据发布者直接调用数据订阅者的回调函数处理数据,数据传输耗时极少,实时响应在10us以内,能够应用于线程间数据频繁交互且实时性要求较高的场合;对于优先级低的数据订阅者,利用发布/订阅通信方式,数据发布者调用数据订阅者的数据插入接口,将数据插入到数据订阅者的数据链表中,实现数据分发功能。本发明以模块化的方式封装注册中心、数据发布者和数据订阅者,使用过程中可以直接调用提供的注册中心类、数据发布者类和数据订阅者类,快速实现多线程间通信;该方法采用C++标准库实现,支持跨平台使用。
本领域的技术人员可以对本发明进行各种修改和变型,倘若这些修改和变型在本发明权利要求及其等同技术的范围之内,则这些修改和变型也在本发明的保护范围之内。
说明书中未详细描述的内容为本领域技术人员公知的现有技术。

Claims (7)

1.一种基于注册回调机制的线程间数据分发方法,其特征在于,包括以下步骤:
(1)数据发布者注册;
(2)数据订阅者注册;
(3)数据发布者发布数据;
其中,步骤(3)中,所述数据发布者发布数据的方法如下:
数据发布者根据数据订阅者的优先级,调用数据订阅者的回调函数接口或数据插入接口;对于优先级最高的数据订阅者,调用其回调函数接口处理数据;对于其他优先级的数据订阅者,调用其数据插入接口,将数据插入到数据订阅者私有数据链表中,唤醒该数据订阅者按顺序取出数据链表中的数据,并调用该数据订阅者的回调函数依次处理数据链表中取出的数据。
2.如权利要求1所述的基于注册回调机制的线程间数据分发方法,其特征在于:步骤(1)中,所述数据发布者注册的方法如下:
(1-1)线程1向注册中心注册,获得注册中心句柄;
(1-2)在线程1中创建数据发布者,向注册中心提交数据发布者的注册信息;
(1-3)注册中心接收数据发布者的注册请求,将该数据发布者添加到注册中心持有的数据发布者容器中;
(1-4)注册中心将已注册的数据订阅者与数据发布者进行匹配,将所有匹配的数据订阅者添加到数据发布者持有的数据订阅者容器中,并向数据发布者传递所有匹配的数据订阅者的回调函数接口,判断各数据订阅者的优先级,将优先级最高的数据订阅者的回调函数接口绑定至数据发布者。
3.如权利要求2所述的基于注册回调机制的线程间数据分发方法,其特征在于:步骤(1-2)中,所述数据发布者的注册信息包括主题类型、主题名称以及域。
4.如权利要求3所述的基于注册回调机制的线程间数据分发方法,其特征在于:步骤(1-4)中,所述数据订阅者与数据发布者匹配的标准为:同一域内,相同主题类型,相同主题名称的数据订阅者与数据发布者相匹配。
5.如权利要求1或2所述的基于注册回调机制的线程间数据分发方法,其特征在于:步骤(2)中,所述数据订阅者注册的方法如下:
(2-1)线程2向注册中心注册,获得注册中心句柄;
(2-2)在线程2中创建数据订阅者的回调函数接口;
(2-3)在线程2中创建数据订阅者,向注册中心提交数据订阅者的注册信息;
(2-4)注册中心接收数据订阅者的注册信息,将该数据订阅者添加到注册中心持有的数据订阅者容器中;
(2-5)注册中心将已注册的所有数据发布者与新注册的数据订阅者进行匹配,将新注册的数据订阅者添加到所有匹配的数据发布者持有的数据订阅者容器中,并向所有匹配的数据发布者传递数据订阅者的回调函数接口,判断新注册数据订阅者的优先级,若新注册数据订阅者的优先级高于匹配的数据发布者持有的数据订阅者容器中已有的数据订阅者,将匹配的数据发布者绑定的回调函数接口修改为新注册数据订阅者的回调函数接口。
6.如权利要求5所述的基于注册回调机制的线程间数据分发方法,其特征在于:步骤(2-3)中,所述数据订阅者的注册信息包括主题类型、主题名称、域、回调函数接口以及数据插入接口。
7.如权利要求6所述的基于注册回调机制的线程间数据分发方法,其特征在于:步骤(2-5)中,所述数据发布者与数据订阅者匹配的标准为:同一域内相同主题类型,相同主题名称的数据发布者与数据订阅者相匹配。
CN202110900211.0A 2021-08-06 2021-08-06 一种基于注册回调机制的线程间数据分发方法 Active CN113626219B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110900211.0A CN113626219B (zh) 2021-08-06 2021-08-06 一种基于注册回调机制的线程间数据分发方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110900211.0A CN113626219B (zh) 2021-08-06 2021-08-06 一种基于注册回调机制的线程间数据分发方法

Publications (2)

Publication Number Publication Date
CN113626219A true CN113626219A (zh) 2021-11-09
CN113626219B CN113626219B (zh) 2022-11-22

Family

ID=78383237

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110900211.0A Active CN113626219B (zh) 2021-08-06 2021-08-06 一种基于注册回调机制的线程间数据分发方法

Country Status (1)

Country Link
CN (1) CN113626219B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104360904A (zh) * 2014-10-16 2015-02-18 四川长虹电器股份有限公司 基于事件总线的模块间消息传递机制
US20160248871A1 (en) * 2015-02-20 2016-08-25 Convida Wireless, Llc Message bus service directory
CN107729161A (zh) * 2017-09-28 2018-02-23 平安普惠企业管理有限公司 信息通知方法、系统、设备及计算机可读存储介质
CN111698308A (zh) * 2020-06-05 2020-09-22 电子科技大学 一种基于soa和dds的服务模型和分布式数据通信方法
CN111737622A (zh) * 2020-06-18 2020-10-02 上海英方软件股份有限公司 一种订阅行情信息流的方法及装置
CN112989123A (zh) * 2021-04-21 2021-06-18 知行汽车科技(苏州)有限公司 一种基于dds的动态数据类型通信方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104360904A (zh) * 2014-10-16 2015-02-18 四川长虹电器股份有限公司 基于事件总线的模块间消息传递机制
US20160248871A1 (en) * 2015-02-20 2016-08-25 Convida Wireless, Llc Message bus service directory
CN107729161A (zh) * 2017-09-28 2018-02-23 平安普惠企业管理有限公司 信息通知方法、系统、设备及计算机可读存储介质
CN111698308A (zh) * 2020-06-05 2020-09-22 电子科技大学 一种基于soa和dds的服务模型和分布式数据通信方法
CN111737622A (zh) * 2020-06-18 2020-10-02 上海英方软件股份有限公司 一种订阅行情信息流的方法及装置
CN112989123A (zh) * 2021-04-21 2021-06-18 知行汽车科技(苏州)有限公司 一种基于dds的动态数据类型通信方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
邵壮: "兼容ROS的嵌入式实时机器人通信系统的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Also Published As

Publication number Publication date
CN113626219B (zh) 2022-11-22

Similar Documents

Publication Publication Date Title
US20090165003A1 (en) System and method for allocating communications to processors and rescheduling processes in a multiprocessor system
US6557046B1 (en) Method and system for providing an event system infrastructure
US7194569B1 (en) Method of re-formatting data
US5448734A (en) Selective distribution of messages using named pipes
US8108571B1 (en) Multithreaded DMA controller
EP0006216A1 (en) Improvements in digital data processing systems
CN101960825B (zh) 发布/订阅消息中介
CN110351342A (zh) 业务指令处理方法、装置、计算机设备和存储介质
US8848532B2 (en) Method and system for processing data
US10031773B2 (en) Method to communicate task context information and device therefor
CA2536037A1 (en) Fast and memory protected asynchronous message scheme in a multi-process and multi-thread environment
JPS63201860A (ja) ネツトワーク管理システム
CN106293918A (zh) 一种调度进程的方法、系统及计算机
US10013293B2 (en) Queueing messages related by affinity set
CN101470636B (zh) 一种消息的读写方法和装置
US10768974B2 (en) Specifying an order of a plurality of resources in a transaction according to distance
CN108874566A (zh) 页面通信方法、装置、设备及存储介质
CN113626219B (zh) 一种基于注册回调机制的线程间数据分发方法
CN113157465A (zh) 基于指针链表的消息发送方法及装置
CN116821187A (zh) 基于数据库的数据处理方法、装置、介质和电子设备
US20050246715A1 (en) Distributed object processing system and method
CN101155370A (zh) 一种移动通讯系统多流应用中事务的串行处理方法及系统
JP2004517424A (ja) サーバーアーキテクチャー
US6877160B2 (en) Method, apparatus and program storage device for enabling the reading of data from a named pipe while minimizing the use of system resources
CN117331655A (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
CB03 Change of inventor or designer information

Inventor after: Zhang Xiaogang

Inventor after: Qi Le

Inventor after: Wang Yaonan

Inventor after: Chen Hua

Inventor after: Cheng Weiyuan

Inventor after: Wang Shaoyuan

Inventor before: Zhang Xiaogang

Inventor before: Qi Le

Inventor before: Chen Hua

Inventor before: Cheng Weiyuan

Inventor before: Wang Shaoyuan

CB03 Change of inventor or designer information
GR01 Patent grant
GR01 Patent grant