CN111475318B - 一种支持多用户访问的串口通信装置、方法及系统 - Google Patents

一种支持多用户访问的串口通信装置、方法及系统 Download PDF

Info

Publication number
CN111475318B
CN111475318B CN202010355609.6A CN202010355609A CN111475318B CN 111475318 B CN111475318 B CN 111475318B CN 202010355609 A CN202010355609 A CN 202010355609A CN 111475318 B CN111475318 B CN 111475318B
Authority
CN
China
Prior art keywords
user application
application program
sender
data
equipment
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.)
Active
Application number
CN202010355609.6A
Other languages
English (en)
Other versions
CN111475318A (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.)
National Defense Technology Innovation Institute PLA Academy of Military Science
Original Assignee
National Defense Technology Innovation Institute PLA Academy of Military Science
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 National Defense Technology Innovation Institute PLA Academy of Military Science filed Critical National Defense Technology Innovation Institute PLA Academy of Military Science
Priority to CN202010355609.6A priority Critical patent/CN111475318B/zh
Publication of CN111475318A publication Critical patent/CN111475318A/zh
Application granted granted Critical
Publication of CN111475318B publication Critical patent/CN111475318B/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明提供了一种支持多用户访问的串口通信装置、方法及系统,所述装置包括至少两台设备,其中一台设备为发送方,其余设备为接收方,接收方设备与发送方设备通讯连接;每台设备均包括串行通信接口、存储器和微处理器,以及以插件的形式存储的多个用户应用程序,各用户应用程序通过串行通信接口与任一设备通信;所述发送方设备和接收方设备均利用微处理器执行存储于存储器上的执行程序对各自的串行通信接口实现相同的初始化设置,以及对各用户应用程序进行黑白名单设置。本发明实现对使用串行通信接口的多个用户应用程序的深度隔离和黑白名单设置,从而高效便捷地实现对使用串行通信接口的用户应用程序的扩展和动态权限配置。

Description

一种支持多用户访问的串口通信装置、方法及系统
技术领域
本发明涉及通信技术领域,具体涉及一种支持多用户访问的串口通信装置、方法及系统。
背景技术
随着通信技术的快速发展及广泛应用,通信设备的功能越来越多,设备内部与设备之间的通信方式也越来越多样化,包括串行通信等常见方式。有时因串行通信接口数量有限及不同应用需要,多个应用程序或用户需要同时使用同一个串行通信接口。但因对同一个串行通信接口,如果多个应用程序或用户各自都对其进行初始化设置和写操作,则会导致设置混乱和通信错误;如果对串行通信接口只进行一次共同的初始化设置,而多个应用程序或用户在同一个源文件中对串行通信接口进行读写操作,则对多个应用程序或用户无法进行隔离,且无法对应用程序或用户的黑白名单进行设置,这为应用程序或用户的扩展和动态权限配置带来了不便,因此需要采用一种支持多用户深度隔离和黑白名单设置的串口通信方法。
发明内容
为了解决现有技术中所存在的上述不足,本发明提供一种支持多用户访问的串口通信装置,包括:至少两台设备,其中一台设备为发送方,其余设备为接收方,接收方设备与发送方设备通讯连接;
每台设备均包括串行通信接口、存储器和微处理器,以及以插件的形式存储的多个用户应用程序,各用户应用程序通过串行通信接口与任一设备通信;
所述发送方设备和接收方设备均利用微处理器执行存储于存储器上的执行程序对各自的串行通信接口实现相同的初始化设置,以及对各用户应用程序进行黑白名单设置。
优选的,所述存储器上的执行程序包括:
供发送方设备和接收方设备调用的串口初始化设置模块和黑白名单设置模块,以及存放各用户应用程序的应用程序库;
所述串口初始化设置模块,用于对串行通信接口实现相同的初始化设置;
所述黑白名单设置模块,用于为用户提供将用户应用程序库中存储的用户应用程序设置为黑名单或白名单。
优选的,所述串口初始化设置模块,具体用于利用通信协议设置串行通信接口的串口波特率、数据位、奇偶校验位和停止位。
优选的,所述发送方设备和接收方设备可以相互转换,但同一时刻只有一个发送方设备;
当所述接收方设备只有一个时,发送方设备和接收方设备的串行通信接口通过收、发数据线直接连接;
当所述接收方设备有多个时,发送方设备和接收方设备的串行通信接口通过收、发数据线均分别与总线相连接。
优选的,所述存储器上的执行程序还包括:供发送方设备和接收方设备调用的用户应用程序初始化设置模块;
所述用户应用程序初始化设置模块用于:
当设备为发送方时为每个用户应用程序分配一个互不相同的整数或字符串;
当设备为接收方时为每个用户应用程序分配一个与发送方上对应的用户应用程序相同的整数或字符串;
每个用户应用程序的整数或字符串用于当发送方设备的用户应用程序与接收方设备的用户应用程序通信时进行身份验证。
优选的,所述存储器上的执行程序还包括:供发送方设备和接收方设备调用的用户应用程序加载模块;
所述用户应用程序加载模块,用于基于用户应用程序黑白名单设置模块中设置的黑白名单加载用户应用程序库中的用户应用程序;
所述用户应用程序加载模块仅加载出现在白名单中的用户应用程序。
优选的,所述存储器上的执行程序还包括:供发送方设备和接收方设备加载的用户应用程序调用的串口发送接收模块;
所述串口发送接收模块,用于为需要通信的用户应用程序提供发送和接收数据服务。
优选的,所述发送方设备加载的各用户应用程序,包括:
第一序列化处理单元,用于将需要向接收方设备发送的数据进行序列化处理,得到字符型数组;
组装单元,用于调用预先存储在存储器中的数据结构,将所述字符型数组存放在所述数据结构的数组中,并将发送方设备为当前应用程序分配的整数或字符串存放在所述数据结构的变量中;
第二序列化处理单元,用于将所述数据结构中存放的数据序列化,将序列化得到的数据发送给发送方设备的串口发送接收模块;
其中,所述数据结构的变量类型为整型或字符串类型,所述数据结构的数组可动态增容。
优选的,所述发送方设备的串口发送接收模块,具体用于:
当接收到发送方设备加载的用户应用程序发送的数据后,在所述数据前面添加与接收方设备预先协商好的帧头和帧长度字段,并根据与接收方设备协商好的校验和算法计算所述数据的校验和;
将所述校验和字段添加在所述数据的后面;
将添加完校验和字段的数据通过发送方设备的串行通信接口发送给接收方设备的串行通信接口。
优选的,所述接收方设备的串口发送接收模块,具体用于:
当接收到发送方设备的串口发送接收模块发送的数据时,基于与发送方设备协商好的帧头和帧长度提取出发送方设备加载的用户应用程序发送的数据;
对所述数据按与发送方协商好的校验和算法进行校验和计算,当接收方设备计算得到的校验和与接收到的数据中的校验和一致时,则将接收到的数据发送给接收方设备加载的各个用户应用程序,否则丢弃所述数据。
优选的,所述接收方设备加载的各用户应用程序,包括:
反序列单元,用于对接收方设备的串口发送接收模块发送的数据,进行反序列化得到数据中存放的整数或字符串;
判断单元,用于当所述整数或字符串与接收方为当前用户应用程序分配的整数或字符串相同时,则将所述数据中的数组进行反序列化,得到发送方设备中用户应用程序发送给接收方设备中用户应用程序的数据;否则不再进行处理。
基于同一发明构思,本发明还提供了一种支持多用户访问的串口通信方法,包括:
将接收方设备与发送方设备的串行通信接口通讯连接;
以插件的形式在接收方设备与发送方设备的存储器中存储多个用户应用程序,各用户应用程序通过串行通信接口与任一设备通信;
发送方设备和接收方设备均利用微处理器执行存储于存储器上的执行程序对各自的串行通信接口实现相同的初始化设置,以及对各用户应用程序进行黑白名单设置;
其中所述设备至少有两台,一台设备为发送方,其余设备为接收方。
优选的,所述发送方设备和接收方设备利用存储器上的串口初始化设置模块对串行通信接口实现相同的初始化设置;
利用存储器上的黑白名单设置模块为用户提供将用户应用程序库中存储的用户应用程序设置为黑名单或白名单。
优选的,所述发送方设备和接收方设备利用存储器上的串口初始化设置模块对串行通信接口实现相同的初始化设置,包括:
发送方设备和接收方设备利用通信协议设置串行通信接口的串口波特率、数据位、奇偶校验位和停止位。
优选的,所述发送方设备和接收方设备利用存储器上的用户应用程序初始化设置模块执行:
当设备为发送方时为每个用户应用程序分配一个互不相同的整数或字符串;
当设备为接收方时为每个用户应用程序分配一个与发送方上对应的用户应用程序相同的整数或字符串;
每个用户应用程序的整数或字符串用于当发送方设备的用户应用程序与接收方设备的用户应用程序通信时进行身份验证。
优选的,所述发送方设备和接收方设备利用存储器上的用户应用程序加载模块,基于用户应用程序黑白名单设置模块中设置的黑白名单加载用户应用程序库中的用户应用程序,且仅加载出现在白名单中的用户应用程序。
优选的,所述发送方设备和接收方设备加载的用户应用程序利用存储器上的串口发送接收模块,为需要通信的用户应用程序提供发送和接收数据服务。
优选的,所述发送方设备加载的各用户应用程序,包括:
利用第一序列化处理单元将需要向接收方设备发送的数据进行序列化处理,得到字符型数组;
利用组装单元调用预先存储在存储器中的数据结构,将所述字符型数组存放在所述数据结构的数组中,并将发送方设备为当前应用程序分配的整数或字符串存放在所述数据结构的变量中;
利用第二序列化处理单元将所述数据结构中存放的数据序列化,将序列化得到的数据发送给发送方设备的串口发送接收模块;
其中,所述数据结构的变量类型为整型或字符串类型,所述数据结构的数组可动态增容。
优选的,所述发送方设备加载的用户应用程序利用存储器上的串口发送接收模块,具体包括:
当接收到发送方设备加载的用户应用程序发送的数据后,在所述数据前面添加与接收方设备预先协商好的帧头和帧长度字段,并根据与接收方设备协商好的校验和算法计算所述数据的校验和;
将所述校验和字段添加在所述数据的后面;
将添加完校验和字段的数据通过发送方设备的串行通信接口发送给接收方设备的串行通信接口。
优选的,所述接收方设备加载的用户应用程序利用存储器上的串口发送接收模块,具体包括:
当接收到发送方设备的串口发送接收模块发送的数据时,基于与发送方设备协商好的帧头和帧长度提取出发送方设备加载的用户应用程序发送的数据;
对所述数据按与发送方协商好的校验和算法进行校验和计算,当接收方设备计算得到的校验和与接收到的数据中的校验和一致时,则将接收到的数据发送给接收方设备加载的各个用户应用程序,否则丢弃所述数据。
优选的,所述接收方加载的各用户应用程序,包括:
利用反序列单元对接收方设备的串口发送接收模块发送的数据,进行反序列化得到数据中存放的整数或字符串;
利用判断单元当所述整数或字符串与接收方为当前用户应用程序分配的整数或字符串相同时,则将所述数据中的数组进行反序列化,得到发送方设备中用户应用程序发送给接收方设备中用户应用程序的数据;否则不再进行处理。
基于同一发明构思,本发明还提供了一种支持多用户访问的串口通信系统,包括:
连接模块,用于将接收方设备与发送方设备的串行通信接口通讯连接;
存储模块,用于以插件的形式在接收方设备与发送方设备的存储器中存储多个用户应用程序,各用户应用程序通过串行通信接口与任一设备通信;
设置模块,用于发送方设备和接收方设备均利用微处理器执行存储于存储器上的执行程序对各自的串行通信接口实现相同的初始化设置,以及对各用户应用程序进行黑白名单设置;
其中所述设备至少有两台,一台设备为发送方,其余设备为接收方。
本发明提供的技术方案具有以下有益效果:
本发明提供的支持多用户访问的串口通信装置,包括至少两台设备,其中一台设备为发送方,其余设备为接收方,接收方设备与发送方设备通讯连接;每台设备均包括串行通信接口、存储器和微处理器,以及以插件的形式存储的多个用户应用程序,各用户应用程序通过串行通信接口与任一设备通信;所述发送方设备和接收方设备均利用微处理器执行存储于存储器上的执行程序对各自的串行通信接口实现相同的初始化设置,以及对各用户应用程序进行黑白名单设置。该装置通过对发送方设备和接收方设备的串行通信接口进行一次共同的初始化设置,避免了多个用户应用程序各自都对其进行初始化设置导致串口设置混乱和通信错误的问题;通过对各个用户应用程序采用插件的方式进行实现,实现了多个用户应用程序之间的有效隔离,且为用户应用程序的扩展带来了便捷,同时通过设置用户应用程序的黑白名单,实现了对用户应用程序的动态加载。
本发明提供的支持多用户访问的串口通信方法,将接收方设备与发送方设备的串行通信接口通讯连接;以插件的形式在接收方设备与发送方设备的存储器中存储多个用户应用程序,各用户应用程序通过串行通信接口与任一设备通信;发送方设备和接收方设备均利用微处理器执行存储于存储器上的执行程序对各自的串行通信接口实现相同的初始化设置,以及对各用户应用程序进行黑白名单设置;其中所述设备至少有两台,一台设备为发送方,其余设备为接收方。该方法通过对发送方设备和接收方设备的串行通信接口进行相同的初始化设置,避免了多个用户应用程序各自都对其进行初始化设置导致串口设置混乱和通信错误的问题;该方法还实现了多个用户应用程序之间的有效隔离和对用户应用程序的动态加载。
附图说明
图1为本申请对于一种支持多用户访问的串口通信装置的结构框图;
图2为本申请对于一个主机、一个从机的实施例系统结构框图;
图3为本申请对于一个主机、多个从机的实施例系统结构框图;
图4为本申请实施例中对于一种支持多用户访问的串口通信方法的步骤流程图;
图5为本申请实施例中对于一种支持多用户访问的串口通信装置中主机运行的步骤流程图;
图6为本申请实施例中对于一种支持多用户访问的串口通信装置中从机运行的步骤流程图;
图7为本申请实施例中支持多用户访问的串口通信方法在无人平台集群无线通信中的应用。
具体实施方式
为了更好地理解本发明,下面结合说明书附图和实例对本发明的内容做进一步的说明。
如图1所示,本发明提供了一种支持多用户访问的串口通信装置,包括:至少两台设备,其中一台设备为发送方,其余设备为接收方,接收方设备与发送方设备通讯连接;
每台设备均包括串行通信接口、存储器和微处理器,以及以插件的形式存储的多个用户应用程序,各用户应用程序通过串行通信接口与任一设备通信;
所述发送方设备和接收方设备均利用微处理器执行存储于存储器上的执行程序对各自的串行通信接口实现相同的初始化设置,以及对各用户应用程序进行黑白名单设置。
本发明实施例利用本发明提供的一种支持多用户访问的串口通信装置对支持的多用户访问的串口通信方法,进行具体介绍:
[1]如图2所示,本发明装置包括一个主机、一个或多个从机,主机为发送方,从机为接收方,主机和从机可以相互转换且同一设备可以同时作为主机和从机运行,但同一时刻只有一个主机,所述主机和从机的硬件均包括串行通信接口、存储器和微处理器;
[2]主机和从机的TXD发数据线、RXD收数据线相互交叉连接。当只有一个从机时,所述主机和从机的收、发数据线直接连接;图3示出了本申请的另一种实施例的系统结构框图,当具有多个从机时,所述主机和从机的收、发数据线均分别与总线相连接;主机的TXD发数据线和所有从机的RXD收数据线都与总线相连接。主机和从机的硬件模块包括微处理器和串行通信接口,存储器中的软件模块包括串口初始化设置模块、黑白名单设置模块、用户应用程序初始化设置模块、应用程序加载模块、用户应用程序库和串口发送接收模块,但图2和图3中均未示出用户应用程序初始化设置模块。
[3]所述主机和从机的存储器中的软件模块包括串口初始化设置模块、用户应用程序黑白名单设置模块、用户应用程序初始化设置模块、用户应用程序加载模块、用户应用程序库、串口发送接收模块,用户应用程序采用插件的方式进行实现。
[4]定义一种数据结构,所述数据结构供各个用户应用程序使用,所述数据结构的第一部分是一个整型或字符串类型的变量,第二部分是一个字符型的可以动态增容的数组;对于不同的用户应用程序,所述整型或字符串类型的变量取值不同,用于区分数据是否属于某个用户应用程序;所述字符型的可以动态增容的数组用于存放用户应用程序中将待发送数据进行序列化后得到的字符型数组;
[5]主机和从机采用串口初始化设置模块对各自的串行通信接口实现相同的初始化设置,具体包括设置串口波特率、数据位、奇偶校验位、停止位等;
[6]主机采用用户应用程序初始化设置模块为每个用户应用程序分配一个互不相同的整数或字符串,从机采用用户应用程序初始化设置模块为每个用户应用程序分配一个与主机上对应的用户应用程序相同的整数或字符串;
[7]主机和从机分别采用用户应用程序黑白名单设置模块,将允许加载的用户应用程序模块的名称加入白名单,将禁止加载的用户应用程序模块的名称加入黑名单;
[8]主机和从机的用户应用程序加载模块根据步骤[7]中得到的白名单加载用户应用程序库,如果一个应用程序同时出现在白名单和黑名单中,不对其进行加载;
[9]步骤[8]中所述的主机加载的各个用户应用程序将需要向从机发送的数据进行序列化,得到一个字符型数组,将该字符型数组中的数据存放在步骤[4]中的所述数据结构中的字符型的可以动态增容的数组中,并将步骤[6]中主机为自己分配的整数或字符串存放在步骤[4]中的所述数据结构中的整型或字符串类型的变量中,然后将得到的步骤[4]中的所述数据结构中存放的数据序列化,将序列化得到的字符型数组发送给主机的串口发送接收模块;
[10]主机的串口发送接收模块接收到步骤[9]中主机加载的用户应用程序发送的字符型数组后,在该数组前面添加帧头和帧长度字段,并根据校验和算法计算校验和,然后在该数组后面添加校验和字段,最后将添加完上述字段后的字符型数组通过主机的串行通信接口发送出去。
[11]从机的串口发送接收模块接收到步骤[10]中主机的串口发送接收模块发送的字符型数组后,根据帧头和帧长度提取出主机加载的用户应用程序发送的字符型数组,并采用与主机相同的校验和算法计算校验和。如果计算得到的校验和与接收到的校验和一致,则将提取出的字符型数组发送给从机加载的各个用户应用程序;否则,则将提取出的字符型数组丢弃掉。
[12]从机加载的各个用户应用程序接收到步骤[11]中从机的串口发送接收模块发送的字符型数组后,进行第一次反序列化得到步骤[4]中的所述数据结构存放的数据。如果该数据的第一部分与从机为自己分配的的整数或字符串相同,则将该数据的第二部分反序列化,得到主机上对应的用户应用程序发送给自己的数据;否则,该数据的第二部分不是发送给自己的数据,将其丢弃不再对其处理。
基于同一发明构思,本发明实施例还提供了一种支持多用户深度隔离和黑白名单设置的串口通信装置,所述装置包括一个主机、一个或多个从机,主机为发送方,从机为接收方。
[13]主机和从机的硬件均包括串行通信接口和微处理器,串行通信接口用于从收、发数据线上接收和发送数据,微处理器用于运行存储器上的软件模块;
[14]当只有一个从机时,所述主机和从机的收、发数据线直接连接;当具有多个从机时,所述主机和从机的收、发数据线均分别与总线相连接;
[15]主机和从机的软件模块包括串口初始化设置模块、用户应用程序黑白名单设置模块、用户应用程序初始化设置模块、用户应用程序加载模块、用户应用程序库、串口发送接收模块;
[16]串口初始化设置模块,执行步骤[5],用于实现对串行通信接口的初始化设置,具体包括设置串口波特率、数据位、奇偶校验位、停止位等;
[17]用户应用程序黑白名单设置模块,执行步骤[7],用于实现将允许加载的用户应用程序模块的名称加入白名单,将禁止加载的用户应用程序模块的名称加入黑名单;
[18]用户应用程序加载模块,执行步骤[8],用于根据步骤[7]中得到的白名单加载用户应用程序库,如果一个应用程序同时出现在白名单和黑名单中,不对其进行加载;
[19]用户应用程序库,存放用户开发的需要通过串行通信接口通信的应用程序,所述应用程序采用插件的方式进行实现;
[20]主机的用户应用程序初始化设置模块为每个用户应用程序分配一个互不相同的整数或字符串,从机的用户应用程序初始化设置模块为每个用户应用程序分配一个与主机上对应的用户应用程序相同的整数或字符串,主机和从机上分配相同整数或字符串的用户应用程序是需要通过串行通信接口相互通信的用户应用程序;主机加载的各个用户应用程序将需要向串行通信接口发送的数据进行序列化,得到一个字符型数组,将该字符型数组中的数据存放在步骤[4]中的所述数据结构中的字符型的可以动态增容的数组中,并将步骤[6]中主机为自己分配的整数或字符串存放在步骤[4]中的所述数据结构中的整型或字符串类型的变量中,然后将得到的步骤[4]中的所述数据结构中存放的数据序列化,将序列化得到的字符型数组发送给主机的串口发送接收模块;从机加载的各个用户应用程序接收到步骤[11]中从机的串口发送接收模块发送的字符型数组后,进行第一次反序列化得到步骤[4]中的所述数据结构存放的数据。如果该数据的第一部分与从机为自己分配的的整数或字符串相同,则将该数据的第二部分反序列化,得到主机上对应的用户应用程序发送给自己的数据;否则,该数据的第二部分不是发送给自己的数据,将其丢弃不再对其处理。
[21]串口发送接收模块,用于通过串行通信接口发送和接收数据;主机的串口发送接收模块接收到步骤[9]中主机加载的用户应用程序发送的字符型数组后,在该数组前面添加帧头和帧长度字段,并根据校验和算法计算校验和,然后在该数组后面添加校验和字段,最后将添加完上述字段后的字符型数组通过主机的串行通信接口发送出去;从机的串口发送接收模块接收到步骤[10]中主机的串口发送接收模块发送的字符型数组后,根据帧头和帧长度提取出主机加载的用户应用程序发送的字符型数组,并采用与主机相同的校验和算法计算校验和。如果计算得到的校验和与接收到的校验和一致,则将提取出的字符型数组发送给从机加载的各个用户应用程序;否则将提取出的字符型数组丢弃掉。
本发明通过对同一个串行通信接口只进行一次共同的初始化设置,避免了多个用户应用程序各自都对其进行初始化设置导致串口设置混乱和通信错误的问题;通过对各个用户应用程序采用插件的方式进行实现,实现了多个用户应用程序之间的有效隔离,且为用户应用程序的扩展带来了便捷。
如图4、图5和图6分别展示了串口通信方法的综合步骤、串口通信装置中主机运行的步骤流程图和串口通信装置中从机运行的步骤流程图。
本发明提供的支持多用户深度隔离和黑白名单设置的串口通信方法及装置可广泛应用于各类工业设备中,具体用于同一台设备中两个子设备之间的串口通信。
本发明提供的支持多用户深度隔离和黑白名单设置的串口通信方法及装置可广泛应用于无人平台集群中无人平台之间的无线通信中。如图7所示为本申请在无人平台集群中无人平台之间的无线通信中的一种最佳实施例。每个无人平台中的微处理器通过串行通信接口与一个无线通信终端连接,从而使得无人平台之间能够通过无线通信终端实现相互通信。每个无人平台通过本申请可以实现对多个用户应用程序之间的深度隔离,可以设置用户应用程序黑白名单,并根据设置的用户应用程序黑白名单加载用户应用程序库,最终实现了无人平台集群中无人平台之间的双向无线通信,包括一个无人平台对多个无人平台的无线通信以及多个无人平台对多个无人平台的无线通信。
本实施例通过下列方面进一步分析本发明提供的技术方案:
1、本申请对于一个主机、一个从机实施例的系统结构,即具有一个主机、一个从机,主机为发送方,从机为接收方。主机和从机可以相互转换,且同一设备可以同时作为主机和从机运行。所述主机和从机的软件模块包括串口初始化设置模块、用户应用程序黑白名单设置模块、用户应用程序加载模块、用户应用程序库、串口发送接收模块。
2、本申请的用户应用程序采用插件的方式进行实现,实现对多用户应用程序之间的深度隔离。
3、本申请对于一个主机、多个从机实施例的系统结构,即具有一个主机、多个从机,主机为发送方,从机为接收方。主机的TXD发数据线和所有从机的RXD收数据线都与总线相连接。主机和从机的硬件模块包括微处理器和串行通信接口,软件模块包括串口初始化设置模块、黑白名单设置模块、应用程序加载模块、用户应用程序库、串口发送接收模块。
4、本申请定义了一种数据结构用于区分不同的用户应用程序,以及存放用户应用程序需要发送的数据。所述数据结构的第一部分是一个整型或字符串类型的变量,第二部分是一个字符型的可以动态增容的数组;对于不同的用户应用程序,所述整型或字符串类型的变量取值不同,用于区分数据是否属于某个用户应用程序;所述字符型的可以动态增容的数组用于存放用户应用程序中将待发送数据进行序列化后得到的字符型数组。
5、主机和从机采用串口初始化设置模块对各自的串行通信接口实现相同的初始化设置,具体包括设置串口波特率、数据位、奇偶校验位、停止位等,从而避免多个用户应用程序对同一串口进行多次不同的初始化导致串口通信错误。
6、主机和从机分别采用用户应用程序黑白名单设置模块,将允许加载的用户应用程序模块的名称加入白名单,将禁止加载的用户应用程序模块的名称加入黑名单,实现对用户应用程序的动态加载。
基于同一发明构思,本发明还提供了一种支持多用户访问的串口通信系统,包括:
连接模块,用于将接收方设备与发送方设备的串行通信接口通讯连接;
存储模块,用于以插件的形式在接收方设备与发送方设备的存储器中存储多个用户应用程序,各用户应用程序通过串行通信接口与任一设备通信;
设置模块,用于发送方设备和接收方设备均利用微处理器执行存储于存储器上的执行程序对各自的串行通信接口实现相同的初始化设置,以及对各用户应用程序进行黑白名单设置;
其中所述设备至少有两台,一台设备为发送方,其余设备为接收方。
实施例中,所述存储器上的执行程序包括:
供发送方设备和接收方设备调用的串口初始化设置模块和黑白名单设置模块,以及存放各用户应用程序的应用程序库;
所述串口初始化设置模块,用于对串行通信接口实现相同的初始化设置;
所述黑白名单设置模块,用于为用户提供将用户应用程序库中存储的用户应用程序设置为黑名单或白名单。
实施例中,所述串口初始化设置模块,具体用于利用通信协议设置串行通信接口的串口波特率、数据位、奇偶校验位和停止位。
实施例中,所述发送方设备和接收方设备可以相互转换,但同一时刻只有一个发送方设备;
当所述接收方设备只有一个时,发送方设备和接收方设备的串行通信接口通过收、发数据线直接连接;
当所述接收方设备有多个时,发送方设备和接收方设备的串行通信接口通过收、发数据线均分别与总线相连接。
实施例中,所述存储器上的执行程序还包括:供发送方设备和接收方设备调用的用户应用程序初始化设置模块;
所述用户应用程序初始化设置模块用于:
当设备为发送方时为每个用户应用程序分配一个互不相同的整数或字符串;
当设备为接收方时为每个用户应用程序分配一个与发送方上对应的用户应用程序相同的整数或字符串;
每个用户应用程序的整数或字符串用于当发送方设备的用户应用程序与接收方设备的用户应用程序通信时进行身份验证。
实施例中,所述存储器上的执行程序还包括:供发送方设备和接收方设备调用的用户应用程序加载模块;
所述用户应用程序加载模块,用于基于用户应用程序黑白名单设置模块中设置的黑白名单加载用户应用程序库中的用户应用程序;
所述用户应用程序加载模块仅加载出现在白名单中的用户应用程序。
实施例中,所述存储器上的执行程序还包括:供发送方设备和接收方设备加载的用户应用程序调用的串口发送接收模块;
所述串口发送接收模块,用于为需要通信的用户应用程序提供发送和接收数据服务。
实施例中,所述发送方设备加载的各用户应用程序,包括:
第一序列化处理单元,用于将需要向接收方设备发送的数据进行序列化处理,得到字符型数组;
组装单元,用于调用预先存储在存储器中的数据结构,将所述字符型数组存放在所述数据结构的数组中,并将发送方设备为当前应用程序分配的整数或字符串存放在所述数据结构的变量中;
第二序列化处理单元,用于将所述数据结构中存放的数据序列化,将序列化得到的数据发送给发送方设备的串口发送接收模块;
其中,所述数据结构的变量类型为整型或字符串类型,所述数据结构的数组可动态增容。
实施例中,所述发送方设备的串口发送接收模块,具体用于:
当接收到发送方设备加载的用户应用程序发送的数据后,在所述数据前面添加与接收方设备预先协商好的帧头和帧长度字段,并根据与接收方设备协商好的校验和算法计算所述数据的校验和;
将所述校验和字段添加在所述数据的后面;
将添加完校验和字段的数据通过发送方设备的串行通信接口发送给接收方设备的串行通信接口。
实施例中,所述接收方设备的串口发送接收模块,具体用于:
当接收到发送方设备的串口发送接收模块发送的数据时,基于与发送方设备协商好的帧头和帧长度提取出发送方设备加载的用户应用程序发送的数据;
对所述数据按与发送方协商好的校验和算法进行校验和计算,当接收方设备计算得到的校验和与接收到的数据中的校验和一致时,则将接收到的数据发送给接收方设备加载的各个用户应用程序,否则丢弃所述数据。
实施例中,所述接收方设备加载的各用户应用程序,包括:
反序列单元,用于对接收方设备的串口发送接收模块发送的数据,进行反序列化得到数据中存放的整数或字符串;
判断单元,用于当所述整数或字符串与接收方为当前用户应用程序分配的整数或字符串相同时,则将所述数据中的数组进行反序列化,得到发送方设备中用户应用程序发送给接收方设备中用户应用程序的数据;否则不再进行处理。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上仅为本发明的实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均包含在申请待批的本发明的权利要求范围之内。

Claims (8)

1.一种支持多用户访问的串口通信装置,其特征在于,包括:至少两台设备,其中一台设备为发送方,其余设备为接收方,接收方设备与发送方设备通讯连接;
每台设备均包括串行通信接口、存储器和微处理器,以及以插件的形式存储的多个用户应用程序,各用户应用程序通过串行通信接口与任一设备通信;
所述发送方设备和接收方设备均利用微处理器执行存储于存储器上的执行程序对各自的串行通信接口实现相同的初始化设置,以及对各用户应用程序进行黑白名单设置;
所述存储器上的执行程序包括:
供发送方设备和接收方设备调用的串口初始化设置模块和黑白名单设置模块,以及存放各用户应用程序的应用程序库;
所述串口初始化设置模块,用于对串行通信接口实现相同的初始化设置;
所述黑白名单设置模块,用于为用户提供将用户应用程序库中存储的用户应用程序设置为黑名单或白名单;
所述串口初始化设置模块,具体用于利用通信协议设置串行通信接口的串口波特率、数据位、奇偶校验位和停止位;
所述发送方设备和接收方设备可以相互转换,但同一时刻只有一个发送方设备;
当所述接收方设备只有一个时,发送方设备和接收方设备的串行通信接口通过收、发数据线直接连接;
当所述接收方设备有多个时,发送方设备和接收方设备的串行通信接口通过收、发数据线均分别与总线相连接;
所述存储器上的执行程序还包括:供发送方设备和接收方设备调用的用户应用程序初始化设置模块;
所述用户应用程序初始化设置模块用于:
当设备为发送方时为每个用户应用程序分配一个互不相同的整数或字符串;
当设备为接收方时为每个用户应用程序分配一个与发送方上对应的用户应用程序相同的整数或字符串;
每个用户应用程序的整数或字符串用于当发送方设备的用户应用程序与接收方设备的用户应用程序通信时进行身份验证;
所述存储器上的执行程序还包括:供发送方设备和接收方设备调用的用户应用程序加载模块;
所述用户应用程序加载模块,用于基于用户应用程序黑白名单设置模块中设置的黑白名单加载用户应用程序库中的用户应用程序;
所述用户应用程序加载模块仅加载出现在白名单中的用户应用程序;
所述存储器上的执行程序还包括:供发送方设备和接收方设备加载的用户应用程序调用的串口发送接收模块;
所述串口发送接收模块,用于为需要通信的用户应用程序提供发送和接收数据服务;
所述发送方设备加载的各用户应用程序,包括:
第一序列化处理单元,用于将需要向接收方设备发送的数据进行序列化处理,得到字符型数组;
组装单元,用于调用预先存储在存储器中的数据结构,将所述字符型数组存放在所述数据结构的数组中,并将发送方设备为当前应用程序分配的整数或字符串存放在所述数据结构的变量中;
第二序列化处理单元,用于将所述数据结构中存放的数据序列化,将序列化得到的数据发送给发送方设备的串口发送接收模块;
其中,所述数据结构的变量类型为整型或字符串类型,所述数据结构的数组可动态增容。
2.如权利要求1所述的装置,其特征在于,所述发送方设备的串口发送接收模块,具体用于:
当接收到发送方设备加载的用户应用程序发送的数据后,在所述数据前面添加与接收方设备预先协商好的帧头和帧长度字段,并根据与接收方设备协商好的校验和算法计算所述数据的校验和;
将所述校验和字段添加在所述数据的后面;
将添加完校验和字段的数据通过发送方设备的串行通信接口发送给接收方设备的串行通信接口。
3.如权利要求2所述的装置,其特征在于,所述接收方设备的串口发送接收模块,具体用于:
当接收到发送方设备的串口发送接收模块发送的数据时,基于与发送方设备协商好的帧头和帧长度提取出发送方设备加载的用户应用程序发送的数据;
对所述数据按与发送方协商好的校验和算法进行校验和计算,当接收方设备计算得到的校验和与接收到的数据中的校验和一致时,则将接收到的数据发送给接收方设备加载的各个用户应用程序,否则丢弃所述数据。
4.如权利要求3所述的装置,其特征在于,所述接收方设备加载的各用户应用程序,包括:
反序列单元,用于对接收方设备的串口发送接收模块发送的数据,进行反序列化得到数据中存放的整数或字符串;
判断单元,用于当所述整数或字符串与接收方为当前用户应用程序分配的整数或字符串相同时,则将所述数据中的数组进行反序列化,得到发送方设备中用户应用程序发送给接收方设备中用户应用程序的数据;否则不再进行处理。
5.一种支持多用户访问的串口通信方法,其特征在于,包括:
将接收方设备与发送方设备的串行通信接口通讯连接;
以插件的形式在接收方设备与发送方设备的存储器中存储多个用户应用程序,各用户应用程序通过串行通信接口与任一设备通信;
发送方设备和接收方设备均利用微处理器执行存储于存储器上的执行程序对各自的串行通信接口实现相同的初始化设置,以及对各用户应用程序进行黑白名单设置;
其中所述设备至少有两台,一台设备为发送方,其余设备为接收方;
所述发送方设备和接收方设备利用存储器上的串口初始化设置模块对串行通信接口实现相同的初始化设置;
利用存储器上的黑白名单设置模块为用户提供将用户应用程序库中存储的用户应用程序设置为黑名单或白名单;
所述发送方设备和接收方设备利用存储器上的串口初始化设置模块对串行通信接口实现相同的初始化设置,包括:
发送方设备和接收方设备利用通信协议设置串行通信接口的串口波特率、数据位、奇偶校验位和停止位;
所述发送方设备和接收方设备利用存储器上的用户应用程序初始化设置模块执行:
当设备为发送方时为每个用户应用程序分配一个互不相同的整数或字符串;
当设备为接收方时为每个用户应用程序分配一个与发送方上对应的用户应用程序相同的整数或字符串;
每个用户应用程序的整数或字符串用于当发送方设备的用户应用程序与接收方设备的用户应用程序通信时进行身份验证;
所述发送方设备和接收方设备利用存储器上的用户应用程序加载模块,基于用户应用程序黑白名单设置模块中设置的黑白名单加载用户应用程序库中的用户应用程序,且仅加载出现在白名单中的用户应用程序;
所述发送方设备和接收方设备加载的用户应用程序利用存储器上的串口发送接收模块,为需要通信的用户应用程序提供发送和接收数据服务;
所述发送方设备加载的各用户应用程序,包括:
利用第一序列化处理单元将需要向接收方设备发送的数据进行序列化处理,得到字符型数组;
利用组装单元调用预先存储在存储器中的数据结构,将所述字符型数组存放在所述数据结构的数组中,并将发送方设备为当前应用程序分配的整数或字符串存放在所述数据结构的变量中;
利用第二序列化处理单元将所述数据结构中存放的数据序列化,将序列化得到的数据发送给发送方设备的串口发送接收模块;
其中,所述数据结构的变量类型为整型或字符串类型,所述数据结构的数组可动态增容。
6.如权利要求5所述的方法,其特征在于,所述发送方设备加载的用户应用程序利用存储器上的串口发送接收模块,具体包括:
当接收到发送方设备加载的用户应用程序发送的数据后,在所述数据前面添加与接收方设备预先协商好的帧头和帧长度字段,并根据与接收方设备协商好的校验和算法计算所述数据的校验和;
将所述校验和字段添加在所述数据的后面;
将添加完校验和字段的数据通过发送方设备的串行通信接口发送给接收方设备的串行通信接口。
7.如权利要求6所述的方法,其特征在于,所述接收方设备加载的用户应用程序利用存储器上的串口发送接收模块,具体包括:
当接收到发送方设备的串口发送接收模块发送的数据时,基于与发送方设备协商好的帧头和帧长度提取出发送方设备加载的用户应用程序发送的数据;
对所述数据按与发送方协商好的校验和算法进行校验和计算,当接收方设备计算得到的校验和与接收到的数据中的校验和一致时,则将接收到的数据发送给接收方设备加载的各个用户应用程序,否则丢弃所述数据。
8.如权利要求7所述的方法,其特征在于,所述接收方加载的各用户应用程序,包括:
利用反序列单元对接收方设备的串口发送接收模块发送的数据,进行反序列化得到数据中存放的整数或字符串;
利用判断单元当所述整数或字符串与接收方为当前用户应用程序分配的整数或字符串相同时,则将所述数据中的数组进行反序列化,得到发送方设备中用户应用程序发送给接收方设备中用户应用程序的数据;否则不再进行处理。
CN202010355609.6A 2020-04-29 2020-04-29 一种支持多用户访问的串口通信装置、方法及系统 Active CN111475318B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010355609.6A CN111475318B (zh) 2020-04-29 2020-04-29 一种支持多用户访问的串口通信装置、方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010355609.6A CN111475318B (zh) 2020-04-29 2020-04-29 一种支持多用户访问的串口通信装置、方法及系统

Publications (2)

Publication Number Publication Date
CN111475318A CN111475318A (zh) 2020-07-31
CN111475318B true CN111475318B (zh) 2021-02-23

Family

ID=71764428

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010355609.6A Active CN111475318B (zh) 2020-04-29 2020-04-29 一种支持多用户访问的串口通信装置、方法及系统

Country Status (1)

Country Link
CN (1) CN111475318B (zh)

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002084288A (ja) * 2000-09-07 2002-03-22 Sharp Corp 信号処理回路および信号処理方法
EP1917583A1 (en) * 2005-08-23 2008-05-07 Moore Computer Consultants, Inc. Connection of peripherals to operating systems
CN101213582A (zh) * 2005-06-29 2008-07-02 西姆毕恩软件有限公司 遥控框架
CN101470688A (zh) * 2007-12-28 2009-07-01 希姆通信息技术(上海)有限公司 单端串口实现多功能复用的方法
CN101751291A (zh) * 2009-12-30 2010-06-23 广东威创视讯科技股份有限公司 应用程序共享同一串口的方法与装置
CN101795270A (zh) * 2010-01-12 2010-08-04 山东高效能服务器和存储研究院 一种基于串口的服务器控制方法
CN103347033A (zh) * 2012-12-11 2013-10-09 深圳市合正汽车电子有限公司 车载通信方法及系统
CN104503852A (zh) * 2014-12-26 2015-04-08 河南信安通信技术有限公司 一种多进程串口通信方法
CN106130759A (zh) * 2016-06-22 2016-11-16 白杨 面向服务的模块化系统体系架构
CN106649186A (zh) * 2016-12-12 2017-05-10 青岛海信电器股份有限公司 应用程序与串口外设的通信方法及装置
CN107391421A (zh) * 2017-06-23 2017-11-24 歌尔股份有限公司 通过串口传输数据的方法、客户端装置及数据转发装置
CN107465669A (zh) * 2017-07-21 2017-12-12 北京奇安信科技有限公司 一种多用户的设备安全隔离方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8090955B2 (en) * 2007-10-17 2012-01-03 Micron Technology, Inc. Boot block features in synchronous serial interface NAND
CN104113390A (zh) * 2014-06-20 2014-10-22 广州市集智信息科技有限公司 一种移动网络数据序列化方法
CN107688486A (zh) * 2017-08-10 2018-02-13 深圳市证通电子股份有限公司 基于共享服务的串口共享方法、共享装置及存储介质
CN110244638B (zh) * 2019-06-27 2021-03-19 宁波三星医疗电气股份有限公司 数据监控装置及方法

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002084288A (ja) * 2000-09-07 2002-03-22 Sharp Corp 信号処理回路および信号処理方法
CN101213582A (zh) * 2005-06-29 2008-07-02 西姆毕恩软件有限公司 遥控框架
EP1917583A1 (en) * 2005-08-23 2008-05-07 Moore Computer Consultants, Inc. Connection of peripherals to operating systems
CN101470688A (zh) * 2007-12-28 2009-07-01 希姆通信息技术(上海)有限公司 单端串口实现多功能复用的方法
CN101751291A (zh) * 2009-12-30 2010-06-23 广东威创视讯科技股份有限公司 应用程序共享同一串口的方法与装置
CN101795270A (zh) * 2010-01-12 2010-08-04 山东高效能服务器和存储研究院 一种基于串口的服务器控制方法
CN103347033A (zh) * 2012-12-11 2013-10-09 深圳市合正汽车电子有限公司 车载通信方法及系统
CN104503852A (zh) * 2014-12-26 2015-04-08 河南信安通信技术有限公司 一种多进程串口通信方法
CN106130759A (zh) * 2016-06-22 2016-11-16 白杨 面向服务的模块化系统体系架构
CN106649186A (zh) * 2016-12-12 2017-05-10 青岛海信电器股份有限公司 应用程序与串口外设的通信方法及装置
CN107391421A (zh) * 2017-06-23 2017-11-24 歌尔股份有限公司 通过串口传输数据的方法、客户端装置及数据转发装置
CN107465669A (zh) * 2017-07-21 2017-12-12 北京奇安信科技有限公司 一种多用户的设备安全隔离方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种适用VB编程环境的串口通信服务器;刘宁远;《电测与仪表》;20021225;全文 *

Also Published As

Publication number Publication date
CN111475318A (zh) 2020-07-31

Similar Documents

Publication Publication Date Title
CN105260337B (zh) 一种单片机的自动编址方法及系统
CN107133188B (zh) 菊花链连接的主从通信分配地址方法、系统和从机、主机
CN104579695B (zh) 一种数据转发装置和方法
US8347008B2 (en) Method and system for hardware based implementation of USB 1.1 over a high speed link
US6697366B1 (en) Ethernet memory management system and methods for operation thereof
US11474853B2 (en) Storage device operation method and physical server
CN105190530A (zh) 传输硬件渲染的图形数据
CN108829529A (zh) 虚拟机内存共享方法、装置、计算机设备及存储介质
CN115357535A (zh) 一种虚拟串口设计方法及装置
CN108600294A (zh) 一种云终端屏幕共享系统及方法
CN103812953A (zh) 一种微控制单元与 arm 处理器的通信接口系统
CN104092661B (zh) 虚拟机串口的通信方法及装置
CN101582057B (zh) 一种控制人机接口设备通信传输的方法、设备和系统
CN111475318B (zh) 一种支持多用户访问的串口通信装置、方法及系统
CN104484205B (zh) 一种io设备固件的升级装置及方法
CN111404793B (zh) 一种控制物理can口和虚拟can口进行映射的方法,系统,设备及可读存储介质
CN107643938A (zh) 数据传输方法、装置及存储介质
CN104570967A (zh) 基于Android系统的远程控制方法及系统
US8954623B2 (en) Universal Serial Bus devices supporting super speed and non-super speed connections for communication with a host device and methods using the same
CN100493018C (zh) 一种通过网络中的总线接口进行通信的方法和系统
CN106959620A (zh) 一种车载can总线数据通讯装置及其设计方法
CN110971696B (zh) 一种实现虚拟电子卡通讯的系统和方法
CN106909331A (zh) 一种bms参数扩展及显示系统
CN107643990B (zh) 可配置架构的通信设备
CN114579166A (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
GR01 Patent grant
GR01 Patent grant