CN113950033A - 数据传输方法和设备 - Google Patents
数据传输方法和设备 Download PDFInfo
- Publication number
- CN113950033A CN113950033A CN202010690693.7A CN202010690693A CN113950033A CN 113950033 A CN113950033 A CN 113950033A CN 202010690693 A CN202010690693 A CN 202010690693A CN 113950033 A CN113950033 A CN 113950033A
- Authority
- CN
- China
- Prior art keywords
- queue
- data
- sent
- receiving
- application
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 68
- 230000005540 biological transmission Effects 0.000 title claims abstract description 49
- 230000015654 memory Effects 0.000 claims abstract description 115
- 238000004891 communication Methods 0.000 claims abstract description 30
- 238000004590 computer program Methods 0.000 claims description 6
- 238000005516 engineering process Methods 0.000 abstract description 5
- 238000007726 management method Methods 0.000 description 39
- 238000012545 processing Methods 0.000 description 25
- 230000006870 function Effects 0.000 description 23
- 230000008569 process Effects 0.000 description 15
- 230000003287 optical effect Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000002093 peripheral effect Effects 0.000 description 6
- 230000002457 bidirectional effect Effects 0.000 description 5
- 230000003993 interaction Effects 0.000 description 4
- 229920001621 AMOLED Polymers 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000013529 biological neural network Methods 0.000 description 1
- 210000000988 bone and bone Anatomy 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 239000002096 quantum dot Substances 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/80—Services using short range communication, e.g. near-field communication [NFC], radio-frequency identification [RFID] or low energy communication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W76/00—Connection management
- H04W76/10—Connection setup
- H04W76/11—Allocation or use of connection identifiers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W76/00—Connection management
- H04W76/10—Connection setup
- H04W76/14—Direct-mode setup
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Telephone Function (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请涉及近场通信技术领域,尤其涉及一种数据传输方法和设备。其中,所述数据传输方法应用于第一设备和第二设备建立USB通信连接并且切换到配件模式的场景,所述方法包括:第一设备为应用程序层中的待发送数据分配队列标识;第一设备将携带有队列标识的待发送数据放入共享写内存中;第一设备中的写线程从所述共享写内存中获取携带有队列标识的待发送数据,并且将待发送数据与其携带的队列标识封装为待发送消息包;所述写线程将所述待发送消息包发送给内核文件节点,以通过内核文件节点将所述待发送消息包发送给第二设备。基于本申请实施例,能够在配件模式下实现安卓设备和USB配件之间的多通道数据传输。
Description
技术领域
本申请涉及近场通信技术领域,尤其涉及一种数据传输方法和设备。
背景技术
安卓***作为一种基于开源Linux的智能操作***,被广泛应用于手机、平板电脑等设备中。在安卓设备提供的各种接口中,通用串行总线(universal serial bus,USB)接口是常见接口。安卓设备通过USB接口可以支持多种USB***设备,例如支持鼠标、键盘、打印机等。在安卓开放配件(Android Open Accessory,AOA)协议中,根据安卓设备在USB通信中充当的角色,可以将安卓设备的USB通信分为主机模式(Host Mode)和配件模式(Accessory Mode)两种模式。
在主机模式中,安卓设备充当USB主机并且为连接到其总线上的USB***设备供电。但是市场上的部分安卓设备没有USB主机所需的硬件,而且安卓设备通常电量有限难以持续为USB***设备供电。因此,主机模式虽然扩展了安卓设备的连接能力,但很难应用到应用程序开发中。
在配件模式中,安卓设备充当USB从机,安卓设备所连接的USB***设备充当主机并为总线供电。在配件模式下,USB***设备成为安卓配件。该模式为不具备主机功能的安卓设备提供与USB设备交互的能力。
在配件模式下,安卓设备和USB配件之间可以基于AOA协议进行数据传输。但在基于AOA协议的数据传输过程中,只有一个通道即AOA通道。基于该一个通道,安卓设备和USB配件之间无法支持多通道的数据传输。
发明内容
本申请提供了一种数据传输方法和设备,能够在配件模式下实现安卓设备和USB配件之间的多通道数据传输。
第一方面,本技术方案提供了一种数据传输方法。该方法应用于第一设备和第二设备建立USB通信连接并且切换到配件模式的场景中。其中,在执行该方法时第一设备可以为安卓设备,第二设备为USB配件;可选的,第一设备也可以为USB配件,第二设备为安卓设备。具体的,该方法包括:
第一设备为应用程序层中的待发送数据分配队列标识。第一设备将携带有队列标识的待发送数据放入共享写内存中。共享写内存中的待发送数据可以供第一设备中的写线程读取。写线程从共享内存中获取携带有队列标识的待发送数据,并且将待发送数据与其携带的队列标识封装为待发送消息包。之后,写线程将待发送消息包发送给内核文件节点,以通过内核文件节点将待发送消息包发送给第二设备。
本申请实施例中,第一设备和第二设备在配件模式下传输数据时,可以为应用程序层中的待发送数据分配队列标识。当为待发送的数据分配的队列标识为多个时,可以认为对应着多个数据发送通道。其中,为了区分各个应用的待发送数据,待发送数据携带有对列标识。进一步,第一设备将携带有队列标识的待发送数据放入共享写内存中。共享写内存中的待发送数据再通过写线程发送给内核文件节点,即共享写内存中的待发送数据通过AOA通道发送给第二设备。可见,本申请实施例方案中,通过为待发送数据分配队列标识以及将携带有队列标识的待发送数据放入共享写内存的方式实现多通道的复用。
结合第一方面,在第一方面的某些实现方式中,第一设备不仅支持对应用程序层数据进行多通道发送,而且支持多通道接收数据。具体的,第一设备创建接收队列和接收线程,并为创建的接收队列分配队列标识。可选的,接收队列的队列标识为第二设备应用程序层所发送消息的队列标识。需要说明的是,在配件模式下,第二设备发送数据的方式与第一设备发送数据的方式相同,其所发送的消息数据包中也携带有相应的队列标识,例如为Channel ID 01。则,第一设备为接收该消息数据包所创建的接收队列的队列标识也为Channel ID 01。第二设备发送的消息数据包首先通过AOA通道放入内核文件节点。第一设备的读线程从内核文件节点接收第二设备发送的消息数据包。读线程解析获取的所述消息数据包,并根据解析的结果将携带有队列标识的接收数据放入共享读内存中。接收线程根据接收数据所携带的队列标识将接收数据从共享读内存放入对应的接收队列。进一步,接收线程从接收队列将对应的接收数据提供给应用程序层的应用,由此实现应用程序层数据的接收。
本申请实施例中,将应用程序层的待发送数据放入共享写内存中,将接收的数据放入共享读内存中,基于该方式第一设备和第二设备之间可以在配件模式下实现双向多通道数据传输,比如,第一设备向第二设备发送地图数据和语音数据;第二设备向第一设备发送位置数据和图像数据等。
结合第一方面,在第一方面的某些实现方式中,第一设备创建接收队列,包括:第一设备为应用程序层中待接收数据的至少一个应用创建接收队列,其中,不同应用的接收队列的队列标识不同。本申请实施例中,当应用程序层中有一个或者多个应用需要接收消息时,可以为待接收数据的各个应用创建接收队列,其中,不同应用的接收队列的队列标识不同。基于此,第一设备可以通过多个接收通道实现对多应用数据的接收。
结合第一方面,在第一方面的某些实现方式中,第一设备创建接收队列,包括:第一设备为同一个应用创建至少一个接收队列,同一个应用对应的各个接收队列的队列标识不同。在此方式下,可以通过多个数据通道接收同一个应用的数据。
结合第一方面,在第一方面的某些实现方式中,所述方法还包括:第一设备根据队列标识分配方案为接收队列分配队列标识。其中,队列标识分配方案可以预先存储在第一设备和第二设备中。可选的,第一设备在与第二设备通过交互切换至配件模式的过程中协商确定队列标识分配方案。
在本申请实施例中,第一设备和第二设备可以在切换至配件模式的交互过程中确定队列标识分配方案,第一设备和第二设备可以根据所述队列标识分配方案确定各应用可用的队列标识。基于此,第一设备在创建接收队列时,可以根据已获取的各应用的队列标识确定所创建的接收队列的队列标识。
结合第一方面,在第一方面的某些实现方式中,第一设备为应用程序层中的待发送数据分配队列标识,包括:第一设备为应用程序层中的至少一个应用的待发送数据分配队列标识,其中,不同应用的待发送数据的队列标识不同。
结合第一方面,在第一方面的某些实现方式中,第一设备为应用程序层中的至少一个应用的待发送数据分配队列标识,包括:第一设备根据待发送数据的数据类型为同一个应用分配多个队列标识。可选的,第一设备根据队列标识分配方案为待发送数据分配队列标识。
结合第一方面,在第一方面的某些实现方式中,所述方法还包括:第一设备为待发送数据的队列标识设置优先级;相应的,第一设备中的写线程根据待发送数据的队列标识的优先级确定将共享写内存中的待发送数据发送给内核文件节点的先后顺序;
第一设备为接收队列设置优先级;相应的,第一设备中的读线程根据接收队列的优先级确定将所述消息数据包放入共享读内存的先后顺序,和/或,所述接收线程根据所述接收队列的优先级确定将接收数据放入对应接收队列的先后顺序,和/或,所述接收线程根据所述接收队列的优先级确定将所述接收队列中的接收数据提供给应用程序层应用的先后顺序。
第二方面,本技术方案提供了一种电子设备,包括:
显示屏;一个或多个处理器;存储器;以及一个或多个计算机程序,其中所述一个或多个计算机程序被存储在所述存储器中,所述一个或多个计算机程序包括指令,当所述指令被所述设备执行时,使得所述设备在与第二设备建立USB通信连接并切换到配件模式的场景下执行以下步骤:为应用程序层中的待发送数据分配队列标识;将携带有队列标识的待发送数据放入共享写内存中;写线程从所述共享写内存中获取携带有队列标识的待发送数据,并且将待发送数据与其携带的队列标识封装为待发送消息包;所述写线程将所述待发送消息包发送给内核文件节点,以通过内核文件节点将所述待发送消息包发送给第二设备。
结合第二方面,在第二方面的某些实现方式中,当所述指令被所述设备执行时,使得所述设备还执行以下步骤:创建接收队列和接收线程,并且为所述接收队列分配队列标识;读线程从内核文件节点接收第二设备发送的消息数据包,所述消息数据包中封装有队列标识;所述读线程解析所述消息数据包,并根据解析的结果将携带有队列标识的接收数据放入共享读内存中;所述接收线程根据接收数据携带的队列标识,将接收数据放入对应的接收队列;所述接收线程进一步从所述接收队列中将接收数据提供给应用程序层的应用。
结合第二方面,在第二方面的某些实现方式中,当所述指令被所述设备执行时,使得所述设备执行以下步骤:为应用程序层中待接收数据的至少一个应用创建接收队列,其中,不同应用的接收队列的队列标识不同。
结合第二方面,在第二方面的某些实现方式中,当所述指令被所述设备执行时,使得所述设备执行以下步骤:为应用程序层中的至少一个应用的待发送数据分配队列标识,其中,不同应用的待发送数据的队列标识不同。
结合第二方面,在第二方面的某些实现方式中,当所述指令被所述设备执行时,使得所述设备执行以下步骤:根据待发送数据的数据类型为同一个应用分配多个队列标识。
结合第二方面,在第二方面的某些实现方式中,当所述指令被所述设备执行时,使得所述设备执行以下步骤:根据队列标识分配方案为待发送数据分配队列标识和/或根据队列标识分配方案为接收队列分配队列标识。
结合第二方面,在第二方面的某些实现方式中,当所述指令被所述设备执行时,使得所述设备执行以下步骤:
为待发送数据的队列标识设置优先级;相应的,写线程根据待发送数据的队列标识的优先级确定将共享写内存中的待发送数据发送给内核文件节点的先后顺序;
为接收队列设置优先级;相应的,读线程根据接收队列的优先级确定将所述消息数据包放入共享读内存的先后顺序,和/或,所述接收线程根据所述接收队列的优先级确定将接收数据放入对应接收队列的先后顺序,和/或,所述接收线程根据所述接收队列的优先级确定将所述接收队列中的接收数据提供给应用程序层应用的先后顺序。
第三方面,本技术方案提供了一种电子设备,所述设备包括存储介质和中央处理器,所述存储介质可以是非易失性存储介质,所述存储介质中存储有计算机可执行程序,所述中央处理器与所述非易失性存储介质连接,并执行所述计算机可执行程序以实现所述第一方面的任一可能的实现方式中的方法。
第四方面,本技术方案提供了一种芯片,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,执行第一方面的任一可能的实现方式中的方法。
可选的,作为一种实现方式,所述芯片还可以包括存储器,所述存储器中存储有指令,所述处理器用于执行所述存储器上存储的指令,当所述指令被执行时,所述处理器用于执行第一方面的任一可能的实现方式中的方法。
第五方面,本技术方案提供了一种计算机可读存储介质,所述计算机可读介质存储用于设备执行的程序代码,所述程序代码包括用于执行第一方面的任一可能的实现方式中的方法的指令。
附图说明
图1是本申请实施例提供的电子设备的一种结构示意图;
图2是本申请实施例提供的电子设备的一种软件结构图;
图3是本申请实施例提供的手机和车机设备切换至AOA配件模式的流程图;
图4是本申请实施例中读线程和写线程的执行流程图;
图5是本申请实施例中多通道管理服务的接口示意图;
图6是本申请实施例中安卓设备向安卓配件发送数据的流程图;
图7是本申请实施例中安卓设备接收安卓配件所发送数据的流程图;
图8是本申请实施例中电子设备的另一种结构示意图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
本申请实施例提供了一种数据传输方法。该方法在AOA协议的基础上,对数据传输方案进行扩展。该方法在应用程序层面支持多通道复用,实现安卓设备和安卓配件之间的双向多通道数据传输。具体的,该方法设置共享写内存,当第一设备需要向第二设备发送数据时,第一设备为待发送数据分配队列标识。第一设备将携带有队列标识的待发送数据放入共享写内存中,写线程将共享写内存中的待发送数据写入内核文件节点,以通过AOA通道将待发送数据发送给第二设备。可见,本申请实施例通过为待发送数据分配队列标识的方式可以在应用层实现多数据通道的复用。
进一步,第一设备在接收数据时,创建接收队列和接收线程,并且为接收队列分配队列标识。第二设备发送的消息数据包首先通过AOA通道传输至第一设备的内核文件节点。第一设备中的读线程从内核文件节点获取消息数据包。读线程将从内核文件节点获取的消息数据包放入共享读内存中。接收线程根据消息数据包的队列标识将共享读内存中的数据放入对应的接收队列中,并将接收队列中的接收数据提供给应用程序层的应用。可见,本申请实施例通过创建接收队列和为接收队列分配队列标识的方式可以实现多队列数据的接收。
同理,第二设备向第一设备发送数据的方式,参见第一设备发送数据的方式;第二设备接收第一设备发送数据的方式,参见第一设备接收数据的方式。因此,在本申请实施例中,第一设备和第二设备之间可以进行双向多通道传输数据。即在AOA协议的基础上进一步扩展了数据的传输方式,在基于AOA通道传输数据的基础上实现了应用程序层的多通道复用。
其中,上述第一设备可以为安卓设备,则第二设备为安卓配件;可选的,上述第一设备可以为安卓配件,则第二设备为安卓设备。
在一个示例中,第一设备为安卓设备,其可以是手机、平板电脑、电视、可穿戴设备、智能家居设备、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备等电子设备。本申请实施例对电子设备的具体类型不作任何限制。
示例性的,图1示出了本申请实施例提供的电子设备100的一种结构示意图。如图1所示,电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本发明实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了***的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与***设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备、车载设备等。
可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星***(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的正整数。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作***,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行电子设备100的各种功能应用以及数据处理。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
在一个示例中,第二设备为安卓配件,其可以是车载设备、机器人、可穿戴设备、智能家居设备、AR/VR设备等电子设备。本申请实施例对电子设备的具体类型不作任何限制。示例性的,第二设备可以包括处理器、存储器、通信处理模块、输入模块和输出模块等。这些部件可以通过总线连接。其中,处理器可用于读取和执行计算机可读指令。具体实现中,处理器可主要包括控制器、运算器和寄存器。其中,控制器主要负责指令译码,并为指令对应的操作发出控制信号。运算器主要负责执行定点或浮点算数运算操作、移位操作以及逻辑操作等,也可以执行地址运算和转换。寄存器主要负责保存指令执行过程中临时存放的寄存器操作数和中间操作结果等。具体实现中,处理器的硬件架构可以是专用集成电路(Application Specific Integrated Circuits,ASIC)架构、MIPS架构、ARM架构或者NP架构等等。
存储器与处理器耦合,用于存储各种软件程序和/或多组指令。具体实现中,存储器可包括高速随机存取的存储器,并且也可包括非易失性存储器,例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备。存储器可以存储操作***,例如windows、Android等嵌入式操作***。存储器还可以存储通信程序,该通信程序可用于与第一设备,一个或多个服务器,或附加设备进行通信。
通信处理模块可以包括蓝牙通信处理模块、WLAN通信处理模块和USB通信模块中的一项或多项。例如,在本申请实施例中,第二设备通过USB通信模块与第一设备进行数据的传输。
在本申请实施例中,第一设备和第二设备的软件***可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的Android***为例,示例性说明第一设备和第二设备的软件结构。图2是本申请实施例提供的电子设备的一种软件结构框图。分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android***分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和***库,以及内核层。
应用程序层可以包括一系列应用程序包。如图2所示,应用程序包可以包括:通话、地图、导航、WLAN,蓝牙,音乐,视频,等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。如图2所示,应用程序框架层可以包括为实现本申请实施例的数据传输方法所设置的多通道管理服务。通过多通道管理服务可以在应用程序层需要发送数据时,为待发送数据分配队列标识,以及将携带有队列标识的待发送数据放入共享写内存中。多通道管理服务还可以在应用程序层需要接收数据时,创建接收队列和接收线程,并为接收队列分配队列标识,以及从共享读内存中携带有队列标识的接收数据提供给应用程序层的对应应用。
进一步,应用程序框架层可以包括窗口管理器,内容提供器,视图***,电话管理器,资源管理器,通知管理器等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。例如,多通道管理服务的待发送数据和接收的数据可以通过内容提供器供应用程序访问。
视图***包括可视控件,例如显示文字的控件,显示图片的控件等。视图***可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供电子设备的通信功能。例如通话状态的管理(包括接通,挂断等)。资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓***的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
***库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动,USB驱动等。在本申请实施例中,通过USB驱动可以使电子设备实现USB数据传输功能。进一步,本申请实施例中的AOA协议可以包含在内核层中,在AOA协议中可以包含本申请实施例的内核文件节点。
以下将结合上述介绍的电子设备对本申请实施例的数据传输方法进行说明。在一个示例中,第一设备为手机,第二设备为车机设备。手机和车机设备均支持AOA协议。手机和车机设备在执行本申请实施例数据传输方法之前,首先建立USB通信连接并且切换到AOA配件模式。
图3是本申请实施例提供的手机和车机设备切换至AOA配件模式的流程图。如图3所示,基于该流程,手机和车机设备可以切换至AOA配件模式。其中,手机称为安卓设备,车机设备称为安卓配件。安卓设备和车机设备建立USB通信连接之后,如图3所示,包括:
101,安卓配件向安卓设备发起设备枚举。
102,安卓设备向安卓配件发送设备描述信息,其中安卓设备返回的设备描述信息包括设备描述符和配置描述符等信息。此时安卓设备上报的通常是U盘或者MTP设备。
103,安卓配件向安卓设备发起第一控制传输命令。其中,该第一控制传输命令可以用于询问安卓设备是否支持AOA协议。在具体实施时,安卓配件可以基于AOA协议向安卓设备发起51号命令(ACCESSORY_GET_PROTOCOL)。在AOA协议中51号指令即为用于询问安卓设备是否支持AOA协议的命令。
104,安卓设备如果支持AOA协议,则向安卓配件发送其所支持的AOA协议版本号。
105,安卓配件确定所连接的设备为安卓设备并且支持AOA协议之后,安卓配件发送认证信息给安卓设备,并发送开始通信的指令。具体的,安卓配件可以基于AOA协议向安卓设备发起52号命令(ACCESSORY_SEND_STRING),并附带一些认证信息。所述认证信息可以包括制造商名称、型号名称、描述、版本等信息。安卓设备接收到这些认证信息之后,可以确定与配件对应的应用程序;如果安卓设备中没有与认证信息匹配的应用程序,可以弹出对话框,提示用户下载对应的应用程序。
106,如果安卓配件是音频设备,安卓配件还向安卓设备发起开启音频支持的命令。具体的,安卓配件可以基于AOA协议向安卓设备发送58号命令(SET_AUDIO_MODE)以开启音频功能。
107,安卓配件向安卓设备发送开启配件模式的请求。具体的,安卓配件可以基于AOA协议向安卓设备发送53号命令(ACCESSORY_START),通知安卓设备切换到配件模式。
108,安卓设备接收到开启配件模式的请求之后,将安卓设备的USB通信模式切换到AOA模式。具体的,安卓设备接收到开启配件模式的请求之后,安卓设备会自动复位USB总线。USB总线复位之后,安卓配件重新向安卓设备发起设备枚举。安卓设备会向安卓配件发送新的设备信息,这些信息为配件模式下的USB信息。之后安卓配件和安卓设备在AOA配件模式下交互数据。
安卓设备和安卓配件切换至AOA配件模式之后,安卓设备和安卓配件在硬件层面可以基于AOA通道进行数据传输。具体的,安卓设备和安卓配件可以基于内核文件节点进行数据传输。该内核文件节点即为安卓设备和安卓配件之间通信的公共通道,本申请实施例基于该通道复用出多通道进行数据传输。其中,为了在安卓设备和安卓配件之间进行大数据量多通道的数据传输,本申请实施例利用了跨进程的共享内存技术,以有效解决跨进程消息队列通信的性能较低的问题。如图4所示,本申请实施例创建了两块共享内存,分别是共享写内存和共享读内存。其中,共享写内存主要用于向内核文件节点写数据使用,共享读内容主要用于从内核文件节点读数据。本申请实施例中,将读进程和写进程分开,可以更加高效地在安卓设备和安卓配件之间传输数据。
如图4所示,安卓设备和安卓配件在成功启动AOA配件模式之后,均启动AOA的读线程和写线程。其中,读线程的处理流程包括:读线程从内核节点获取消息数据包;解析消息数据包得到接收数据和队列标识;将携带有队列标识的接收数据放入共享读内存中,以供上层应用从共享读内存中获取接收数据。
如图4所示,写线程的处理流程包括:写线程从共享写内存中获取待发送数据,将待发送数据与队列标识封装后,将待发送消息包发送到内核文件节点,以通过内核文件节点将待发送消息包发送给接收设备(如发送给第二设备)。
图4所示的读线程和写线程可以理解为是在应用框架层和内核层之间传递数据的过程。其最终目的是向上层应用程序层提供多通道应用接口。为此,本申请实施例实施例方案中,在应用程序框架层设置多通道管理服务。多通道管理服务可以向应用程序层提供多通道应用接口。具体的包括:队列的创建、删除、查询接口;以及发送消息、接收消息的接口等。
如图5所示,当应用程序层中的至少一个应用需要发送数据时,可以通过多通道管理服务中的创建队列接口创建发送队列,可以理解的是,基于创建队列接口创建发送队列可以是创建真正的数据队列。在本申请实施例中,创建发送队列也可以是为待发送数据分配队列标识。携带有不同队列标识的数据之间形成多个发送队列。在***内部并不真正执行创建队列的步骤。当应用程序层中的至少一个应用需要接收数据时,可以通过多通道管理服务中的创建队列接口创建接收队列和接收线程,并根据队列标识配置为接收队列分配队列标识。当发送业务、接收业务完毕时,可以通过删除队列接口删除相应的队列,以释放队列资源。进一步,还可以通过查询队列接口查询已经创建的队列信息。
基于发送消息接口进行消息发送之前,首先通过创建队列接口为待发送数据分配队列标识。即为应用程序层的待发送数据分配队列标识。之后可以通过发送消息接口将携带有队列标识的待发送数据进一步放入共享写内存中。之后通过图4中所示的写线程将共享写内存中的待发送数据发送至内核文件节点中。其中,应用程序层的待发送数据放入共享写内存的过程中,无需创建独立的线程,可以在需要发送数据时直接调用发送消息接口即可。
对于接收消息,在基于接收消息接口接收消息之前,首先通过创建队列接口创建接收队列,并为接收队列分配队列标识。对于接收消息业务,可以利用图4所示的读线程循环地从内核文件节点接收消息数据包并放入到共享读内存中。在应用层面,多通道管理服务需要针对当前的接收业务创建独立的接收线程,以通过接收线程将共享读内存中的携带有队列标识的接收数据发送对对应的应用。
基于图4和图5的设置,在安卓设备和安卓配件切换到配件模式之后,安卓设备和安卓配件之间可以实现双向多通道数据传输。在数据传输的过程中,根据数据的流向可以分为:安卓设备向安卓配件发送数据的流程,安卓设备接收安卓配件所发送数据的流程,安卓配件向安卓设备发送数据的流程,安卓配件接收安卓设备所发送数据的流程。其中,安卓设备向安卓配件发送数据的流程,与安卓配件向安卓设备发送数据的流程相同,本申请实施例中仅以安卓设备向安卓配件发送数据的流程为例进行说明。同理,安卓设备接收安卓配件所发送数据的流程,与安卓配件接收安卓设备所发送数据的流程相同,本申请实施例中仅以安卓设备接收安卓配件所发送数据的流程为例进行说明。
如图6所示,安卓设备向安卓配件发送数据的处理流程包括:
201,为待发送数据分配队列标识。安卓设备为应用程序层中的待发送数据分配队列标识。
当安卓设备应用程序层中的至少一个应用需要向安卓配件发送数据时,可以调用应用框架层中的多通道管理服务。多通道管理服务调用创建队列接口并根据队列标识配置中的队列标识分配方案为待发送数据分配队列标识。其中,多通道管理服务可以分别为需要发送数据的各个应用创建发送队列。其中,不同应用的待发送数据的队列标识不同。进一步,多通道管理服务在为其中一个应用的待发送数据分配队列标识时,可以为该应用分配至少一个队列标识。例如,在实际场景中,当手机需要将导航界面投屏到车机设备时,手机中的导航应用需要将导航界面数据和导航音频数据发送给车机设备。此时,导航应用可以拉起多通道管理服务,多通道管理服务为导航应用待发送的导航界面数据和导航音频数据分配队列标识。其中,多通道管理服务可以为导航应用中的待发送数据分配一个队列标识。可选的,多通道管理服务也可以根据数据类型为待发送数据分配多个队列标识。例如,多通道管理服务可以为导航界面数据分配一个队列标识(如为Channel ID 01),为导航音频数据分配一个队列标识(Channel ID 02),携带有不同队列标识的数据在传输过程中形成不同的数据通道。
具体的,多通道管理服务可以根据已经获取的队列标识分配方案为各发送队列分配队列标识。其中,队列标识分配方案可以在于安卓配件交互以切换至配件模式的过程中获取。在队列标识分配方案中可以包含各个应用可用的队列标识。队列标识分配方案可以作为队列标识配置文件进行存储。
202,安卓设备将携带有队列标识的待发送数据放入共享写内存中。
为了基于AOA协议实现多通道数据复用,多通道管理服务将携带有队列标识的待发送数据放入共享写内存中。例如,在导航应用需要将导航界面数据和导航音频数据发送给车机设备的场景中,可以携带有Channel ID 01的导航界面数据和携带有Channel ID 02的导航音频数据放入共享写内存中。放入共享写内存中的数据均携带有各自的队列标识。共享写内存中可以放入携带有不同队列标识的待发送数据。
203,写线程对待发送数据及其携带的队列标识进行封装。安卓设备中的写线程从共享写内存中获取携带有队列标识的待发送数据,并且将待发送数据与其携带的队列标识封装为待发送消息包。
本申请实施例中,安卓设备切换至AOA配件模式之后,启动***中的写线程。写线程检测到共享写内存中的待发送数据之后,写线程从共享写内存中获取带有队列标识的待发送数据,并且将待发送数据与其携带的队列标识封装为待发送消息包。
204,写线程将待发送消息包发送给内核文件节点,以通过内核文件节点将所述待发送消息包发送给安卓配件。
在本申请实施例中,安卓设备和安卓配件之间可以共享队列标识的分配方案。例如,安卓设备和安卓配件可以在切换至配件模式的交互过程中为各应用分配可用的队列标识。基于此,安卓设备在创建发送队列时,根据队列标识的分配方案为所创建的发送队列分配队列标识。安卓配件作为接收方,在接收安卓设备发送的数据时,可以根据队列标识分配方案为接收队列分配队列标识。如,安卓设备发送的数据中携带的队列标识为0A,则安卓配件创建的接收该数据的接收队列的队列标识也可以为0A,或者是与0A具有映射关系的其它标识。
如图7所示,安卓设备接收安卓配件所发送数据的处理流程包括:
205,安卓设备创建接收队列和接收线程,并为创建的接收队列分配队列标识。
其中,当安卓设备应用程序层中的至少一个应用需要接收数据时,该应用通过多通道管理服务创建接收队列和接收线程。例如,当安卓设备的导航应用向安卓配件发送了导航界面数据和导航音频数据之后,导航应用需要接收安卓配件反馈的车辆位置数据。此时导航应用可以通过多通道管理服务创建接收队列和接收线程,并为接收队列分配队列标识。
多通道管理服务可以为应用程序层中的至少一个应用创建接收队列,其中,不同应用的接收队列的队列标识不同。对于同一个应用,多通道管理服务可以为其创建至少一个接收队列,并且同一个应用的各个接收队列的队列标识也不相同。
具体的,多通道管理服务可以根据已经获取的队列标识分配方案为各接收队列分配队列标识。其中,队列标识分配方案可以在于安卓配件交互以切换至配件模式的过程中获取。在队列标识分配方案中可以包含各个应用可用的队列标识。队列标识分配方案可以作为队列标识配置文件进行存储。
206,读线程从内核文件节点接收安卓配件发送的消息数据包,其中,消息数据包中封装有队列标识。
本申请实施例中,安卓设备切换至AOA配件模式之后,启动***中的读线程。读线程检测到内核文件节点中有待接收的消息数据包时,读线程从内核文件节点中获取消息数据包。
207,读线程解析消息数据包得到队列标识和接收数据,将携带有队列标识的接收数据放入共享读内存中。
读线程对从内核文件节点获取的消息数据包进行解析,得到接收数据和对应的队列标识。读线程将携带有队列标识的接收数据放入共享读内存中。
208,接收线程将共享读内存中的接收数据提供给对应的应用。
内核文件节点中所接收的消息数据包均携带有队列标识。读线程解析从内核文件节点获取的消息数据包,获取消息数据包的队列标识。读线程根据消息数据包的队列标识,将携带有队列标识的接收数据放入共享读内存中。多通道管理服务所创建的接收线程可以根据共享读内存中的数据所携带的队列标识,将接收数据放入对应的接收队列,接收线程进一步可以将接收队列中的接收数据提供给应用程序层的对应应用,以实现数据的接收。
本申请实施例中,当某应用需要接收数据时,多通道管理服务为该应用的接收数据业务创建接收线程。该接收线程对共享读内存进行监测,当共享读内存中放入接收数据时,接收线程从共享读内存中获取接收数据并放入对应的接收队列中。
本申请实施例中,多通道管理服务还可以为应用程序层中的数据发送和接收设置优先级。具体的,多通道管理服务为待发送数据的队列标识设置优先级。则,写线程在将待发送数据发送给内核文件节点时,可以根据待发送数据的队列标识的优先级确定将共享写内存中的待发送数据发送给内核文件节点的先后顺序。
进一步,多通道管理服务还可以为所创建的接收队列设置优先级。则,读线程在将内核文件节点的消息数据包放入共享读内存时,可以根据接收队列的优先级确定消息数据包放入共享读内存的先后顺序。另外,接收线程还可以根据接收队列的优先级确定将共享读内存中的接收数据放入接收队列的先后顺序。进一步,接收线程还可以根据接收队列的优先级确定将接收队列中的接收数据提供给对应应用的先后顺序。
本申请实施可以应用于双向音视频数据传输场景中,例如,安卓设备向车机设备发送导航地图和导航语音、安卓设备在车机设备上播放音乐、播放视频的场景;车机设备向安卓设备发送汽车摄像头拍摄的音视频数据、汽车行驶数据等场景。
本申请实施例的数据传输方法,在现有AOA协议的基础上进行扩展,在不增加和改动***硬件、不改动***顶层服务和驱动的基础上,实现了多通道的数据传输。并且同时保留了AOA模式下,安卓配件给安卓设备充电的优点。另外,该方案因为对***改动较小,实现该方案的改造成本较低。
本申请实施例采用共享内存技术,解决了多通道数据传输方案中的大数据量传输性能低下的问题,能够有效支撑多路音视频数据的传输。
本申请实施例的数据传输方法,与底层的硬件传输通道分离,即本申请基于AOA协议实现的多通道技术,后续如果基于其它的传输媒介,本方案仍然可以适用。
可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件和/或软件模块。结合本文中所公开的实施例描述的各示例的步骤,本申请能够以硬件或者硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能。
本实施例可以根据上述方法示例对电子设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或者两个以上的功能集成在一个处理模块中。上述集成的模块可以采用硬件的形式实现。需要说明的是,本实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图8示出了上述实施例中涉及的电子设备的一种结构示意图。如图8所示,该电子设备包括:
队列创建单元301,用于为应用程序层中的待发送数据分配队列标识;
消息发送单元302,用于将携带有队列标识的待发送数据放入共享写内存中;通过写线程从所述共享写内存中获取携带有队列标识的待发送数据,并且将待发送数据与其携带的队列标识封装为待发送消息包;通过写线程将所述待发送消息包发送给内核文件节点,以通过内核文件节点将所述待发送消息包发送给第二设备。
队列创建单元301,还用于创建接收队列和接收线程,并为所述接收队列分配队列标识;
还包括消息接收单元303,用于通过读线程从内核文件节点接收第二设备发送的消息数据包,所述消息数据包中封装有队列标识;通过读线程解析所述消息数据包,并将携带有队列标识的接收数据放入共享读内存中;通过接收线程携带有队列标识的接收数据放入对应的接收队列,并从所述接收队列将对应的接收数据提供给应用程序层的应用。
本申请实施例中的队列创建单元301、消息发送单元302和消息接收单元303还可以实现本申请实施例中第一设备执行的对应功能,此处不再赘述。
应理解,这里的电子设备以功能单元的形式体现。这里的术语“单元”可以通过软件和/或硬件形式实现,对此不作具体限定。例如,“单元”可以是实现上述功能的软件程序、硬件电路或二者结合。所述硬件电路可能包括应用特有集成电路(application specificintegrated circuit,ASIC)、电子电路、用于执行一个或多个软件或固件程序的处理器(例如共享处理器、专有处理器或组处理器等)和存储器、合并逻辑电路和/或其它支持所描述的功能的合适组件。
本申请还提供了一种电子设备,所述设备包括存储介质和中央处理器,所述存储介质可以是非易失性存储介质,所述存储介质中存储有计算机可执行程序,所述中央处理器与所述非易失性存储介质连接,并执行所述计算机可执行程序以实现上述图3至图7中所示的数据传输方法。
本申请还提供了一种芯片,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,执行上述图3至图7中所示的数据传输方法。
可选的,作为一种实现方式,所述芯片还可以包括存储器,所述存储器中存储有指令,所述处理器用于执行所述存储器上存储的指令,当所述指令被执行时,所述处理器用于执行上述各实施例中的数据传输方法。
第六方面,本技术方案提供了一种计算机可读存储介质,所述计算机可读介质存储用于设备执行的程序代码,所述程序代码包括用于执行上述数据传输方法可能的实现方式中的方法的指令。
存储器可以是只读存储器(read-only memory,ROM)、可存储静态信息和指令的其它类型的静态存储设备、随机存取存储器(random access memory,RAM)或可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备,或者还可以是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质等。
本申请实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示单独存在A、同时存在A和B、单独存在B的情况。其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项”及其类似表达,是指的这些项中的任意组合,包括单项或复数项的任意组合。例如,a,b和c中的至少一项可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
本领域普通技术人员可以意识到,本文中公开的实施例中描述的各单元及算法步骤,能够以电子硬件、计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,任一功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。本申请的保护范围应以所述权利要求的保护范围为准。
Claims (15)
1.一种数据传输方法,其特征在于,所述方法应用于第一设备和第二设备建立USB通信连接并且切换到配件模式的场景,所述方法包括:
第一设备为应用程序层中的待发送数据分配队列标识;
第一设备将携带有队列标识的待发送数据放入共享写内存中;
第一设备中的写线程从所述共享写内存中获取携带有队列标识的待发送数据,并且将待发送数据与其携带的队列标识封装为待发送消息包;
所述写线程将所述待发送消息包发送给内核文件节点,以通过内核文件节点将所述待发送消息包发送给第二设备。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
第一设备创建接收队列和接收线程,并且为所述接收队列分配队列标识;
第一设备中的读线程从内核文件节点接收第二设备发送的消息数据包,所述消息数据包中封装有队列标识;
所述读线程解析所述消息数据包得到队列标识和接收数据,所述读线程将携带有队列标识的接收数据放入共享读内存中;
所述接收线程根据所述接收数据的队列标识将接收数据放入对应的接收队列,并从所述接收队列将对应的接收数据提供给应用程序层的应用。
3.根据权利要求2所述的方法,其特征在于,第一设备创建接收队列,包括:
第一设备为应用程序层中待接收数据的至少一个应用创建接收队列,其中,不同应用的接收队列的队列标识不同。
4.根据权利要求1所述的方法,其特征在于,第一设备为应用程序层中的待发送数据分配队列标识,包括:
第一设备为应用程序层中的至少一个应用的待发送数据分配队列标识,其中,不同应用的待发送数据的队列标识不同。
5.根据权利要求4所述的方法,其特征在于,第一设备为应用程序层中的至少一个应用的待发送数据分配队列标识,包括:
第一设备根据待发送数据的数据类型为同一个应用分配多个队列标识。
6.根据权利要求1或2所述的方法,其特征在于,第一设备分配队列标识,包括:
第一设备根据队列标识分配方案为待发送数据分配队列标识和/或第一设备根据队列标识分配方案为接收队列分配队列标识。
7.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:第一设备为待发送数据的队列标识设置优先级;相应的,第一设备中的写线程根据待发送数据的队列标识的优先级确定将共享写内存中的待发送数据发送给内核文件节点的先后顺序;
第一设备为接收队列设置优先级;相应的,第一设备中的读线程根据接收队列的优先级确定将所述消息数据包放入共享读内存的先后顺序,和/或,所述接收线程根据所述接收队列的优先级确定将所述接收数据放入对应接收队列的先后顺序,和/或,所述接收线程根据所述接收队列的优先级确定将所述接收队列中的接收数据提供给应用程序层应用的先后顺序。
8.一种电子设备,其特征在于,包括:
显示屏;一个或多个处理器;存储器;以及一个或多个计算机程序,其中所述一个或多个计算机程序被存储在所述存储器中,所述一个或多个计算机程序包括指令,当所述指令被所述设备执行时,使得所述设备在与第二设备建立USB通信连接并切换到配件模式的场景下执行以下步骤:
为应用程序层中的待发送数据分配队列标识;
将携带有队列标识的待发送数据放入共享写内存中;
写线程从所述共享写内存中获取携带有队列标识的待发送数据,并且将待发送数据与其携带的队列标识封装为待发送消息包;
所述写线程将所述待发送消息包发送给内核文件节点,以通过内核文件节点将所述待发送消息包发送给第二设备。
9.根据权利要求8所述的设备,其特征在于,当所述指令被所述设备执行时,使得所述设备还执行以下步骤:
创建接收队列和接收线程,并且为所述接收队列分配队列标识;
读线程从内核文件节点接收第二设备发送的消息数据包,所述消息数据包中封装有队列标识;
所述读线程解析所述消息数据包得到队列标识和接收数据,所述接收线程将携带有队列标识的接收数据放入共享读内存中;
所述接收线程根据所述接收数据的队列标识将接收数据放入对应的接收队列,并从所述接收队列将对应的接收数据提供给应用程序层的应用。
10.根据权利要求9所述的设备,其特征在于,当所述指令被所述设备执行时,使得所述设备执行以下步骤:
为应用程序层中待接收数据的至少一个应用创建接收队列,其中,不同应用的接收队列的队列标识不同。
11.根据权利要求8所述的设备,其特征在于,当所述指令被所述设备执行时,使得所述设备执行以下步骤:
为应用程序层中的至少一个应用的待发送数据分配队列标识,其中,不同应用的待发送数据的队列标识不同。
12.根据权利要求11所述的设备,其特征在于,当所述指令被所述设备执行时,使得所述设备执行以下步骤:
根据待发送数据的数据类型为同一个应用分配多个队列标识。
13.根据权利要求8或9所述的设备,其特征在于,当所述指令被所述设备执行时,使得所述设备执行以下步骤:
根据队列标识分配方案为待发送数据分配队列标识和/或根据队列标识分配方案为接收队列分配队列标识。
14.根据权利要求8或9所述的设备,其特征在于,当所述指令被所述设备执行时,使得所述设备执行以下步骤:
为待发送数据的队列标识设置优先级;相应的,写线程根据待发送数据的队列标识的优先级确定将共享写内存中的待发送数据发送给内核文件节点的先后顺序;
为接收队列设置优先级;相应的,读线程根据接收队列的优先级确定将所述消息数据包放入共享读内存的先后顺序,和/或,所述接收线程根据所述接收队列的优先级确定将所述接收数据放入对应接收队列的先后顺序,和/或,所述接收线程根据所述接收队列的优先级确定将所述接收队列中的接收数据提供给应用程序层应用的先后顺序。
15.一种计算机存储介质,其特征在于,包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1至7中任一项所述的数据传输方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010690693.7A CN113950033B (zh) | 2020-07-17 | 2020-07-17 | 数据传输方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010690693.7A CN113950033B (zh) | 2020-07-17 | 2020-07-17 | 数据传输方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113950033A true CN113950033A (zh) | 2022-01-18 |
CN113950033B CN113950033B (zh) | 2023-11-28 |
Family
ID=79326640
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010690693.7A Active CN113950033B (zh) | 2020-07-17 | 2020-07-17 | 数据传输方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113950033B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116204337A (zh) * | 2023-03-03 | 2023-06-02 | 广州市易鸿智能装备有限公司 | 一种图像传输方法、装置、设备和计算机存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105549821A (zh) * | 2015-12-18 | 2016-05-04 | 东软集团股份有限公司 | 移动设备与车机的互联方法、装置和*** |
US20170332227A1 (en) * | 2015-01-30 | 2017-11-16 | Huawei Technologies Co., Ltd. | Data processing method and device |
CN107926075A (zh) * | 2015-08-14 | 2018-04-17 | 深圳市大疆创新科技有限公司 | 支持异构环境下的数据通信的***和方法 |
CN109766177A (zh) * | 2019-01-08 | 2019-05-17 | 深圳市网心科技有限公司 | 一种安卓app保活方法、***及相关设备 |
CN110557616A (zh) * | 2019-09-18 | 2019-12-10 | 深圳市华宝电子科技有限公司 | 车载视频监控数据传输方法、设备、服务器和存储介质 |
WO2020087523A1 (zh) * | 2018-11-02 | 2020-05-07 | 阿里巴巴集团控股有限公司 | 网络通信的方法、装置及电子设备 |
-
2020
- 2020-07-17 CN CN202010690693.7A patent/CN113950033B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170332227A1 (en) * | 2015-01-30 | 2017-11-16 | Huawei Technologies Co., Ltd. | Data processing method and device |
CN107926075A (zh) * | 2015-08-14 | 2018-04-17 | 深圳市大疆创新科技有限公司 | 支持异构环境下的数据通信的***和方法 |
CN105549821A (zh) * | 2015-12-18 | 2016-05-04 | 东软集团股份有限公司 | 移动设备与车机的互联方法、装置和*** |
WO2020087523A1 (zh) * | 2018-11-02 | 2020-05-07 | 阿里巴巴集团控股有限公司 | 网络通信的方法、装置及电子设备 |
CN109766177A (zh) * | 2019-01-08 | 2019-05-17 | 深圳市网心科技有限公司 | 一种安卓app保活方法、***及相关设备 |
CN110557616A (zh) * | 2019-09-18 | 2019-12-10 | 深圳市华宝电子科技有限公司 | 车载视频监控数据传输方法、设备、服务器和存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116204337A (zh) * | 2023-03-03 | 2023-06-02 | 广州市易鸿智能装备有限公司 | 一种图像传输方法、装置、设备和计算机存储介质 |
CN116204337B (zh) * | 2023-03-03 | 2024-04-09 | 广州市易鸿智能装备股份有限公司 | 一种图像传输方法、装置、设备和计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113950033B (zh) | 2023-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021051989A1 (zh) | 一种视频通话的方法及电子设备 | |
CN113691842B (zh) | 一种跨设备的内容投射方法及电子设备 | |
CN113923230B (zh) | 数据同步方法、电子设备和计算机可读存储介质 | |
WO2021052415A1 (zh) | 资源调度方法及电子设备 | |
WO2021052200A1 (zh) | 一种设备能力调度方法及电子设备 | |
CN111371849A (zh) | 数据处理的方法和电子设备 | |
CN113722058A (zh) | 一种资源调用方法及电子设备 | |
CN110413383B (zh) | 事件处理方法、装置、终端及存储介质 | |
CN113950033B (zh) | 数据传输方法和设备 | |
CN112437341B (zh) | 一种视频流处理方法及电子设备 | |
CN115309547B (zh) | 处理异步binder调用的方法和装置 | |
CN114253737B (zh) | 电子设备及其内存回收方法、介质 | |
WO2022135195A1 (zh) | 显示虚拟现实界面的方法、装置、设备和可读存储介质 | |
CN114828098B (zh) | 数据传输方法和电子设备 | |
CN112783418B (zh) | 一种存储应用程序数据的方法及移动终端 | |
CN116795435A (zh) | 兼容性管控方法及相关设备 | |
CN115811719A (zh) | 蓝牙连接方法及电子设备 | |
CN114398108A (zh) | 电子设备及其驱动加载方法、介质 | |
WO2024104095A1 (zh) | 一种数据传输方法、装置及*** | |
WO2024078315A1 (zh) | 一种应用控制方法、电子设备和*** | |
CN113542315B (zh) | 通信框架、业务事件处理方法及装置 | |
WO2023051056A1 (zh) | 内存管理方法、电子设备、计算机存储介质和程序产品 | |
WO2024093703A1 (zh) | 一种实例的管理方法、装置、电子设备及存储介质 | |
WO2024093795A1 (zh) | 一种设备替换的配置方法及装置 | |
WO2022222715A1 (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 |