CN112463690A - 一种实现数据传输的方法及装置 - Google Patents
一种实现数据传输的方法及装置 Download PDFInfo
- Publication number
- CN112463690A CN112463690A CN202011391577.1A CN202011391577A CN112463690A CN 112463690 A CN112463690 A CN 112463690A CN 202011391577 A CN202011391577 A CN 202011391577A CN 112463690 A CN112463690 A CN 112463690A
- Authority
- CN
- China
- Prior art keywords
- data transmission
- handle
- usb
- file descriptor
- local interface
- 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
- 230000005540 biological transmission Effects 0.000 title claims abstract description 114
- 238000000034 method Methods 0.000 title claims abstract description 49
- 230000006870 function Effects 0.000 claims description 70
- 238000003780 insertion Methods 0.000 claims description 8
- 230000037431 insertion Effects 0.000 claims description 8
- 230000000977 initiatory effect Effects 0.000 claims description 5
- 238000012546 transfer Methods 0.000 claims description 4
- 230000003993 interaction Effects 0.000 claims description 3
- 238000004891 communication Methods 0.000 description 12
- 238000004590 computer program Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000005477 standard model Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0042—Universal serial bus [USB]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Systems (AREA)
Abstract
本申请提供一种实现数据传输的方法及装置,应用于计算机领域,实现数据传输的方法包括:在设备端的安卓***开启AOA模式之后,获取安卓***对应的文件描述符;将文件描述符传输至JAVA本地接口,并获取文件描述符对应的句柄;利用句柄在JAVA本地接口中实现设备端与USB设备之间的数据传输。在上述方案中,在设备端的安卓***开启AOA模式之后,通过将文件描述符传输至JAVA本地接口,并获取对应的句柄,从而使得数据传输的过程可以通过句柄在底层的JAVA本地接口实现,绕开了中间的输入层及输出层两层,从而避免了底层操作对上层的影响,提高了在Accessory模式中,设备端与USB设备之间进行数据传输的稳定性。
Description
技术领域
本申请涉及计算机领域,具体而言,涉及一种实现数据传输的方法及装置。
背景技术
在配件模式(Accessory Mode)中,通常是利用官方文档中的标准模式实现外部USB硬件与Android设备进行交互,但是针对不同的手机厂商,其对USB***、拔出以及唤醒的速度和正确率都是不同的,因此会导致安卓设备与USB设备之间进行数据传输的稳定性较差的问题。
发明内容
本申请实施例的目的在于提供一种实现数据传输的方法及装置,用以解决在Accessory模式中,设备端与USB设备之间进行数据传输的稳定性较差的技术问题。
为了实现上述目的,本申请实施例所提供的技术方案如下所示:
第一方面,本申请实施例提供一种实现数据传输的方法,包括:在设备端的安卓***开启AOA模式之后,获取所述安卓***对应的文件描述符;将所述文件描述符传输至JAVA本地接口,并获取所述文件描述符对应的句柄;利用所述句柄在所述JAVA本地接口中实现所述设备端与USB设备之间的数据传输。在上述方案中,在设备端的安卓***开启AOA模式之后,通过将文件描述符传输至JAVA本地接口,并获取对应的句柄,从而使得数据传输的过程可以通过句柄在底层的JAVA本地接口实现,绕开了中间的输入层及输出层两层,从而避免了底层操作对上层的影响,提高了在Accessory模式中,设备端与USB设备之间进行数据传输的稳定性。
在本申请的可选实施例中,所述利用所述句柄在所述JAVA本地接口中实现所述设备端与USB设备之间的数据传输,包括:利用读取函数将用户选择的数据传输给所述句柄对应的所述USB设备。在上述方案中,可以利用读取函数在底层的JAVA本地接口实现设备端与USB设备之间的数据传输,从而避免了底层操作对上层的影响,提高了在Accessory模式中,设备端与USB设备之间进行数据传输的稳定性。
在本申请的可选实施例中,在所述利用读取函数将用户选择的数据传输给所述句柄对应的所述USB设备之后,所述方法还包括:若所述读取函数的返回值大于零,则确定所述设备端读取数据成功。在上述方案中,若读取函数的返回值大于零,表示设备端向USB设备中传输数据成功。
在本申请的可选实施例中,所述利用所述句柄在所述JAVA本地接口中实现所述设备端与USB设备之间的数据传输,包括:利用写入函数接收所述句柄对应的所述USB设备传输的数据。在上述方案中,可以利用写入函数在底层的JAVA本地接口实现设备端与USB设备之间的数据传输,从而避免了底层操作对上层的影响,提高了在Accessory模式中,设备端与USB设备之间进行数据传输的稳定性。
在本申请的可选实施例中,在所述利用写入函数接收所述句柄对应的所述USB设备传输的数据之后,所述方法还包括:若所述写入函数的返回值大于零,则确定所述设备端写入数据成功。在上述方案中,若写入函数的返回值大于零,表示设备端从USB设备中接收数据成功。
在本申请的可选实施例中,在所述利用所述句柄在所述JAVA本地接口中实现所述设备端与USB设备的交互之后,所述方法还包括:若读取函数以及写入函数的返回值均大于零,则确定所述设备端读写数据成功。在上述方案中,若读取函数及写入函数的返回值均大于零,表示设备端与USB设备之间的传输数据成功。
在本申请的可选实施例中,所述获取所述文件描述符对应的句柄,包括:获取所述文件描述符对应的成员变量;将所述成员变量转换为所述文件描述符对应的句柄。在上述方案中,可以通过获取文件描述符对应的成员变量来获取对应的句柄,从而使得数据传输的过程可以通过句柄在底层的JAVA本地接口实现,绕开了中间的输入层及输出层两层,从而避免了底层操作对上层的影响,提高了在Accessory模式中,设备端与USB设备之间进行数据传输的稳定性。
在本申请的可选实施例中,在所述获取所述***对应的文件描述符之前,所述方法还包括:若接收到表征所述USB设备***的指令,向所述***发起AOA模式查询;若接收到表征用户确认开启所述AOA模式的指令,开启所述AOA模式。在上述方案中,在USB设备***之后且用户确认开启AOA模式之后,设备端可以开启AOA模式,以实现设备端与USB设备之间的数据传输。
第二方面,本申请实施例提供一种实现数据传输的装置,包括:第一获取模块,用于在设备端的安卓***开启AOA模式之后,获取所述安卓***对应的文件描述符;第二获取模块,用于将所述文件描述符传输至JAVA本地接口,并获取所述文件描述符对应的句柄;数据传输模块,用于利用所述句柄在所述JAVA本地接口中实现所述设备端与USB设备之间的数据传输。在上述方案中,在设备端的安卓***开启AOA模式之后,通过将文件描述符传输至JAVA本地接口,并获取对应的句柄,从而使得数据传输的过程可以通过句柄在底层的JAVA本地接口实现,绕开了中间的输入层及输出层两层,从而避免了底层操作对上层的影响,提高了在Accessory模式中,设备端与USB设备之间进行数据传输的稳定性。
在本申请的可选实施例中,所述数据传输模块还用于:利用读取函数将用户选择的数据传输给所述句柄对应的所述USB设备。在上述方案中,可以利用读取函数在底层的JAVA本地接口实现设备端与USB设备之间的数据传输,从而避免了底层操作对上层的影响,提高了在Accessory模式中,设备端与USB设备之间进行数据传输的稳定性。
在本申请的可选实施例中,所述实现数据传输的装置还包括:第一确定模块,用于若所述读取函数的返回值大于零,则确定所述设备端读取数据成功。在上述方案中,若读取函数的返回值大于零,表示设备端向USB设备中传输数据成功。
在本申请的可选实施例中,所述数据传输模块还用于:利用写入函数接收所述句柄对应的所述USB设备传输的数据。在上述方案中,可以利用写入函数在底层的JAVA本地接口实现设备端与USB设备之间的数据传输,从而避免了底层操作对上层的影响,提高了在Accessory模式中,设备端与USB设备之间进行数据传输的稳定性。
在本申请的可选实施例中,所述实现数据传输的装置还包括:第二确定模块,用于若所述写入函数的返回值大于零,则确定所述设备端写入数据成功。在上述方案中,若写入函数的返回值大于零,表示设备端从USB设备中接收数据成功。
在本申请的可选实施例中,所述实现数据传输的装置还包括:第三确定模块,用于若读取函数以及写入函数的返回值均大于零,则确定所述设备端读写数据成功。在上述方案中,若读取函数及写入函数的返回值均大于零,表示设备端与USB设备之间的传输数据成功。
在本申请的可选实施例中,所述第二获取模块还用于:获取所述文件描述符对应的成员变量;将所述成员变量转换为所述文件描述符对应的句柄。在上述方案中,可以通过获取文件描述符对应的成员变量来获取对应的句柄,从而使得数据传输的过程可以通过句柄在底层的JAVA本地接口实现,绕开了中间的输入层及输出层两层,从而避免了底层操作对上层的影响,提高了在Accessory模式中,设备端与USB设备之间进行数据传输的稳定性。
在本申请的可选实施例中,所述实现数据传输的装置还包括:查询模块,用于若接收到表征所述USB设备***的指令,向所述***发起AOA模式查询;开启模块,用于若接收到表征用户确认开启所述AOA模式的指令,开启所述AOA模式。在上述方案中,在USB设备***之后且用户确认开启AOA模式之后,设备端可以开启AOA模式,以实现设备端与USB设备之间的数据传输。
第三方面,本申请实施例提供一种电子设备,包括:处理器、存储器和总线;所述处理器和所述存储器通过所述总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如第一方面中的实现数据传输的方法。
第四方面,本申请实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如第一方面中的实现数据传输的方法。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举本申请实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种实现数据传输的方法的流程图;
图2为本申请实施例提供的步骤S102的具体实施方式的流程图;
图3为本申请实施例提供的另一种实现数据传输的方法的流程图;
图4为本申请实施例提供的一种实现数据传输的装置的结构框图;
图5为本申请实施例提供的一种电子设备的结构框图。
具体实施方式
安卓(Android)从3.1版本可开始引进了对安卓开放配件协议(Android OpenAccessory Protocol,AOA)的支持,其中,AOA协议是一种允许外部通用串行总线(Universal Serial Bus,USB)硬件与Android设备进行交互信的协议。该协议拓展了Android设备USB接口的功能,为基于Android***的智能设备应用于数据采集和设备控制领域提供了条件。
Android***支持多种USB***设备。根据Android设备在USB通信中充当的角色,可以将Android设备与USB设备之间的通信分为主机模式(Host Mode)和配件模式(Accessory Mode)两种模式。
Accessory模式是指Android设备充当USB设备的从机,外部设备充当主机并为总线供电。此模式下,外部USB设备称为Android配件。该模式为不具备主机功能的Android设备提供与USB设备交互的能力。其中,在Accessory模式中,Android设备和Android配件都必须支持AOA协议。
但这种标准模式有很多弊端,例如:由于手机厂商不同造成的USB设备***、拔出、唤醒的速度及正确率不同,从而导致很多时候Android应用端拿到安卓手机***返回的配件是缓存的;或者,由于Android设备拿到的Usb Accessory对象在调用标准代码的过程中常常会报错,以至于要开启很多遍;或者,部分Android设备USB拔出状态返回的很慢,在快速插拔的时候,会错过初始化的时机等。上述弊端均会导致Android设在设备端与USB设备之间进行数据传输的稳定性较差的问题。
基于上述分析,本申请实施例提供一种实现数据传输的方法,该实现数据传输的方法应用于Android设备端,在设备端的安卓***开启AOA模式之后,通过将文件描述符传输至JAVA本地接口,并获取对应的句柄,从而使得数据传输的过程可以通过句柄在底层的JAVA本地接口实现,绕开了中间的输入层及输出层两层,从而避免了底层操作对上层的影响,提高了在Accessory模式中,设备端与USB设备之间进行数据传输的稳定性。
下面将结合本申请实施例中的附图,对本申请实施例提供的实现数据传输的方法进行详细的介绍。
请参照图1,图1为本申请实施例提供的一种实现数据传输的方法的流程图,该实现数据传输的方法可以包括如下步骤:
步骤S101:在设备端的安卓***开启AOA模式之后,获取安卓***对应的文件描述符。
步骤S102:将文件描述符传输至JAVA本地接口,并获取文件描述符对应的句柄。
步骤S103:利用句柄在JAVA本地接口中实现设备端与USB设备之间的数据传输。
在可选的实施方式中,设备端的安卓***开启AOA模式(将在后续实施例中对安卓***开启AOA模式的方式进行详细的介绍)之后,设备端可以获取安卓***对应的文件描述符(ParcelFileDescriptor fileDescriptor),其中,该文件描述符为一个JAVA对象。作为一种实施方式,当设备端成功开启AOA模式之后,安卓***会向设备端返回一个文件描述符。
然后,设备端可以将上述文件描述符传输至JAVA本地接口(Java NativeInterface,JNI)以执行后续的步骤。在将文件描述符传输至JNI之后,可以根据文件描述符获取到对应的句柄。
作为一种实施方式,请参照图2,图2为本申请实施例提供的步骤S102的具体实施方式的流程图,上述步骤S102可以包括如下步骤:
步骤S201:获取文件描述符对应的成员变量。
步骤S202:将成员变量转换为文件描述符对应的句柄。
设备端可以首先在JNI中获取到文件描述符对应的成员变量(FileDescriptor),然后将上述成员变量转成Linux***能用的句柄(Fd句柄)。这样,设备端与USB设备之间便可以在JNI中开启读写功能。也就是说,可以利用句柄在JNI中实现设备端与USB设备之间的数据传输。
因此,在设备端的安卓***开启AOA模式之后,通过将文件描述符传输至JAVA本地接口,并获取对应的句柄,从而使得数据传输的过程可以通过句柄在底层的JAVA本地接口实现,绕开了中间的输入层及输出层两层,从而避免了底层操作对上层的影响,提高了在Accessory模式中,设备端与USB设备之间进行数据传输的稳定性。
其中,根据不同的需求,上述步骤S103有多种实现方式,例如:设备端向USB设备传输数据,即实现设备端的数据读取功能;或者,USB设备向设备端传输数据(设备端接收USB设备传输的数据),即实现设备端的数据写入功能;或者,设备端与USB设备之间的交互,即实现设备端的数据读写功能等。本申请实施例对上述步骤S103的实施方式以及每种实施方式的实施时间或者实施条件不作具体的限定,本领域技术人员可以根据实际情况进行合适的调整。
下面举例对步骤S103的多种实现方式进行详细的介绍。
第一种实施方式,上述步骤S103可以包括如下步骤:
利用读取函数将用户选择的数据传输给句柄对应的USB设备。
在该种实施方式中,设备端可以利用读取函数(unistd.h的头文件中的“read(……);”函数)在底层的JAVA本地接口实现设备端与USB设备之间的数据传输,从而避免了底层操作对上层的影响,提高了在Accessory模式中,设备端与USB设备之间进行数据传输的稳定性。
在上述步骤之后,本申请实施例提供的实现数据传输的方法还可以包括如下步骤:
若读取函数的返回值大于零,则确定设备端读取数据成功。
在上述方案中,若读取函数的返回值大于零,表示设备端向USB设备中传输数据成功,传输数据成功就意味着设备端和USB设备已经建立了连接可以发送数据。
第二种实施方式,上述步骤S103可以包括如下步骤:
利用写入函数接收句柄对应的USB设备传输的数据。
在该种实施方式中,设备端可以利用写入函数(unistd.h的头文件中的“write(……);”函数)在底层的JAVA本地接口实现设备端与USB设备之间的数据传输,从而避免了底层操作对上层的影响,提高了在Accessory模式中,设备端与USB设备之间进行数据传输的稳定性。
在上述步骤之后,本申请实施例提供的实现数据传输的方法还可以包括如下步骤:
若写入函数的返回值大于零,则确定设备端写入数据成功。
在上述方案中,若写入函数的返回值大于零,表示设备端从USB设备中接收数据成功,接收数据成功就意味着设备端和USB设备已经建立了连接可以接收数据。
第三种实施方式,上述步骤S103可以包括如下步骤:
利用读取函数将用户选择的数据传输给句柄对应的USB设备以及利用写入函数接收句柄对应的USB设备传输的数据。
在该种实施方式中,设备端可以分别利用读取函数以及写入函数在底层的JAVA本地接口实现设备端与USB设备之间的数据传输,从而避免了底层操作对上层的影响,提高了在Accessory模式中,设备端与USB设备之间进行数据传输的稳定性。
在上述步骤之后,本申请实施例提供的实现数据传输的方法还可以包括如下步骤:
若读取函数以及写入函数的返回值均大于零,则确定设备端读写数据成功。
在上述方案中,若读取函数及写入函数的返回值均大于零,表示设备端与USB设备之间的传输数据成功,传输数据成功就意味着设备端和USB设备已经建立了连接可以收发数据。
综上所述,在本申请实施例提供的实现所数据传输的方法中,可以通过获取文件描述符对应的成员变量来获取对应的句柄,从而使得数据传输的过程可以通过句柄在底层的JAVA本地接口实现,绕开了中间的输入层及输出层两层,从而避免了底层操作对上层的影响,提高了在Accessory模式中,设备端与USB设备之间进行数据传输的稳定性。
进一步的,请参照图3,图3为本申请实施例提供的另一种实现数据传输的方法的流程图,在该实现数据传输的方法中,在上述步骤S101之后,还可以包括以下步骤:
步骤S301:若接收到表征USB设备***的指令,向***发起AOA模式查询。
步骤S302:若接收到表征用户确认开启AOA模式的指令,开启AOA模式。
在可选的实施方式中,首先,可以在AndroidManifest.xml文件中,找到要绑定的Activity,将本申请提供的实现数据传输的方法对应的部分代码加入进去。其中,AndroidManifest是指应用清单,每个应用的根目录中都必须包含一个,并且文件名必须一模一样。这个文件中包含了APP的配置信息,安卓***需要根据里面的内容运行APP的代码,显示界面。而Activity是一个Android应用程序组件(也称为Android四大组件之一),它提供了一个屏幕,用户可以通过该屏幕进行交互以执行某些操作,例如拨打电话,拍照,发送电子邮件或查看地图。
然后,设备端可以采用动态注册或者静态注册的方式创建广播接收器,用于接收来自安卓***的一些广播。其中,需要接收的广播可以有多种类型,本申请实施例对此不作具体的限定,例如:可以监听USB设备***与拨出的状态的广播(com.android.example.USB_PERMISSION)、获取USB设备使用权限的广播(android.hardware.usb.action.USB_STATE)等。
作为一种实施方式,本申请实施例提供的实现数据传输的方法中可以接收两种广播(分别命名为广播1以及广播2),其中,广播1用于监听USB设备***与拨出的状态,广播2用于获取USB设备使用权限。
当安卓设备接收到广播1中的值为true时(即接收到表征USB设备***的指令时,)可以认为USB设备***进来了,因此设备端可以发起AOA模式的查询。其中,设备端发起AOA模式查询之后,可以在显示屏上弹出提示窗口,询问用户是否开启AOA模式,若用户确认开启AOA模式,则安卓***会向设备端发出广播2。当设备端接收到广播2中的内容是表征用户确认开启AOA模式时,设备端可以开启AOA模式。
在上述方案中,在USB设备***之后且用户确认开启AOA模式之后,设备端可以开启AOA模式,以实现设备端与USB设备之间的数据传输。
请参照图4,图4为本申请实施例提供的一种实现数据传输的装置的结构框图,该实现数据传输的装置400可以包括:第一获取模块401,用于在设备端的安卓***开启AOA模式之后,获取所述安卓***对应的文件描述符;第二获取模块402,用于将所述文件描述符传输至JAVA本地接口,并获取所述文件描述符对应的句柄;数据传输模块403,用于利用所述句柄在所述JAVA本地接口中实现所述设备端与USB设备之间的数据传输。
在本申请实施例中,在设备端的安卓***开启AOA模式之后,通过将文件描述符传输至JAVA本地接口,并获取对应的句柄,从而使得数据传输的过程可以通过句柄在底层的JAVA本地接口实现,绕开了中间的输入层及输出层两层,从而避免了底层操作对上层的影响,提高了在Accessory模式中,设备端与USB设备之间进行数据传输的稳定性。
进一步的,所述数据传输模块403还用于:利用读取函数将用户选择的数据传输给所述句柄对应的所述USB设备。
在本申请实施例中,可以利用读取函数在底层的JAVA本地接口实现设备端与USB设备之间的数据传输,从而避免了底层操作对上层的影响,提高了在Accessory模式中,设备端与USB设备之间进行数据传输的稳定性。
进一步的,所述实现数据传输的装置400还包括:第一确定模块,用于若所述读取函数的返回值大于零,则确定所述设备端读取数据成功。
在本申请实施例中,若读取函数的返回值大于零,表示设备端向USB设备中传输数据成功。
进一步的,所述数据传输模块403还用于:利用写入函数接收所述句柄对应的所述USB设备传输的数据。
在本申请实施例中,可以利用写入函数在底层的JAVA本地接口实现设备端与USB设备之间的数据传输,从而避免了底层操作对上层的影响,提高了在Accessory模式中,设备端与USB设备之间进行数据传输的稳定性。
进一步的,所述实现数据传输的装置400还包括:第二确定模块,用于若所述写入函数的返回值大于零,则确定所述设备端写入数据成功。
在本申请实施例中,若写入函数的返回值大于零,表示设备端从USB设备中接收数据成功。
进一步的,所述实现数据传输的装置400还包括:第三确定模块,用于若读取函数以及写入函数的返回值均大于零,则确定所述设备端读写数据成功。
在本申请实施例中,若读取函数及写入函数的返回值均大于零,表示设备端与USB设备之间的传输数据成功。
进一步的,所述第二获取模块402还用于:获取所述文件描述符对应的成员变量;将所述成员变量转换为所述文件描述符对应的句柄。
在本申请实施例中,可以通过获取文件描述符对应的成员变量来获取对应的句柄,从而使得数据传输的过程可以通过句柄在底层的JAVA本地接口实现,绕开了中间的输入层及输出层两层,从而避免了底层操作对上层的影响,提高了在Accessory模式中,设备端与USB设备之间进行数据传输的稳定性。
进一步的,所述实现数据传输的装置400还包括:查询模块,用于若接收到表征所述USB设备***的指令,向所述***发起AOA模式查询;开启模块,用于若接收到表征用户确认开启所述AOA模式的指令,开启所述AOA模式。
在本申请实施例中,在USB设备***之后且用户确认开启AOA模式之后,设备端可以开启AOA模式,以实现设备端与USB设备之间的数据传输。
请参照图5,图5为本申请实施例提供的一种电子设备的结构框图,该电子设备500包括:至少一个处理器501,至少一个通信接口502,至少一个存储器503和至少一个通信总线504。其中,通信总线504用于实现这些组件直接的连接通信,通信接口502用于与其他节点设备进行信令或数据的通信,存储器503存储有处理器501可执行的机器可读指令。当电子设备500运行时,处理器501与存储器503之间通过通信总线504通信,机器可读指令被处理器501调用时执行上述实现数据传输的方法。
例如,本申请实施例的处理器501通过通信总线504从存储器503读取计算机程序并执行该计算机程序可以实现如下方法:步骤S101:在设备端的安卓***开启AOA模式之后,获取安卓***对应的文件描述符。步骤S102:将文件描述符传输至JAVA本地接口,并获取文件描述符对应的句柄。步骤S103:利用句柄在JAVA本地接口中实现设备端与USB设备之间的数据传输。
处理器501可以是一种集成电路芯片,具有信号处理能力。上述处理器501可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。其可以实现或者执行本申请实施例中公开的各种方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器503可以包括但不限于随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。
可以理解,图5所示的结构仅为示意,电子设备500还可包括比图5中所示更多或者更少的组件,或者具有与图5所示不同的配置。图5中所示的各组件可以采用硬件、软件或其组合实现。于本申请实施例中,电子设备500可以是,但不限于台式机、笔记本电脑、智能手机、智能穿戴设备、车载设备等实体设备,还可以是虚拟机等虚拟设备。另外,电子设备500也不一定是单台设备,还可以是多台设备的组合,例如服务器集群,等等。于本申请实施例中,实现数据传输的方法中的设备端可以采用图5示出的电子设备500实现。
本申请实施例还提供一种计算机程序产品,包括存储在非暂态计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被计算机执行时,计算机能够执行上述实施例中实现数据传输的方法的步骤,例如包括:在设备端的安卓***开启AOA模式之后,获取所述安卓***对应的文件描述符;将所述文件描述符传输至JAVA本地接口,并获取所述文件描述符对应的句柄;利用所述句柄在所述JAVA本地接口中实现所述设备端与USB设备之间的数据传输。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种实现数据传输的方法,其特征在于,包括:
在设备端的安卓***开启AOA模式之后,获取所述安卓***对应的文件描述符;
将所述文件描述符传输至JAVA本地接口,并获取所述文件描述符对应的句柄;
利用所述句柄在所述JAVA本地接口中实现所述设备端与USB设备之间的数据传输。
2.根据权利要求1所述的实现数据传输的方法,其特征在于,所述利用所述句柄在所述JAVA本地接口中实现所述设备端与USB设备之间的数据传输,包括:
利用读取函数将用户选择的数据传输给所述句柄对应的所述USB设备。
3.根据权利要求2所述的实现数据传输的方法,其特征在于,在所述利用读取函数将用户选择的数据传输给所述句柄对应的所述USB设备之后,所述方法还包括:
若所述读取函数的返回值大于零,则确定所述设备端读取数据成功。
4.根据权利要求1所述的实现数据传输的方法,其特征在于,所述利用所述句柄在所述JAVA本地接口中实现所述设备端与USB设备之间的数据传输,包括:
利用写入函数接收所述句柄对应的所述USB设备传输的数据。
5.根据权利要求4所述的实现数据传输的方法,其特征在于,在所述利用写入函数接收所述句柄对应的所述USB设备传输的数据之后,所述方法还包括:
若所述写入函数的返回值大于零,则确定所述设备端写入数据成功。
6.根据权利要求1所述的实现数据传输的方法,其特征在于,在所述利用所述句柄在所述JAVA本地接口中实现所述设备端与USB设备的交互之后,所述方法还包括:
若读取函数以及写入函数的返回值均大于零,则确定所述设备端读写数据成功。
7.根据权利要求1-6任一项所述的实现数据传输的方法,其特征在于,所述获取所述文件描述符对应的句柄,包括:
获取所述文件描述符对应的成员变量;
将所述成员变量转换为所述文件描述符对应的句柄;
在所述获取所述***对应的文件描述符之前,所述方法还包括:
若接收到表征所述USB设备***的指令,向所述***发起AOA模式查询;
若接收到表征用户确认开启所述AOA模式的指令,开启所述AOA模式。
8.一种实现数据传输的装置,其特征在于,包括:
第一获取模块,用于在设备端的安卓***开启AOA模式之后,获取所述安卓***对应的文件描述符;
第二获取模块,用于将所述文件描述符传输至JAVA本地接口,并获取所述文件描述符对应的句柄;
数据传输模块,用于利用所述句柄在所述JAVA本地接口中实现所述设备端与USB设备之间的数据传输。
9.一种电子设备,其特征在于,包括:处理器、存储器和总线;
所述处理器和所述存储器通过所述总线完成相互间的通信;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1-7任一项所述的实现数据传输的方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令被计算机运行时,使所述计算机执行如权利要求1-7任一项所述的实现数据传输的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011391577.1A CN112463690A (zh) | 2020-12-01 | 2020-12-01 | 一种实现数据传输的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011391577.1A CN112463690A (zh) | 2020-12-01 | 2020-12-01 | 一种实现数据传输的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112463690A true CN112463690A (zh) | 2021-03-09 |
Family
ID=74805272
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011391577.1A Pending CN112463690A (zh) | 2020-12-01 | 2020-12-01 | 一种实现数据传输的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112463690A (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100174833A1 (en) * | 2009-01-05 | 2010-07-08 | Roderick David Earle Filer | Method and Apparatus for Identifying a Device Handle in a Computer System |
US20140330992A1 (en) * | 2012-03-21 | 2014-11-06 | Huawei Device Co., Ltd. | USB Device Communication Method, Device and System |
JP2015049600A (ja) * | 2013-08-30 | 2015-03-16 | Necソリューションイノベータ株式会社 | 周辺機器制御装置、周辺機器制御方法および周辺機器制御プログラム |
CN106844275A (zh) * | 2016-12-30 | 2017-06-13 | 百度在线网络技术(北京)有限公司 | 数据传输方法及装置 |
CN106936869A (zh) * | 2015-12-30 | 2017-07-07 | 沈阳美行科技有限公司 | 一种基于aoa协议的车机联网方法及*** |
US20180060251A1 (en) * | 2016-08-29 | 2018-03-01 | Hyundai Motor Company | Usb communication control method for usb accessory |
US20180267907A1 (en) * | 2017-03-15 | 2018-09-20 | Sling Media Pvt Ltd | Methods and apparatus for communication between mobile devices and accessory devices |
WO2020103680A1 (zh) * | 2018-11-19 | 2020-05-28 | 炬星科技(深圳)有限公司 | 一种数据通信方法及人机交互*** |
CN111371851A (zh) * | 2020-02-21 | 2020-07-03 | 苏州浪潮智能科技有限公司 | 一种连接方法、装置及电子设备和存储介质 |
-
2020
- 2020-12-01 CN CN202011391577.1A patent/CN112463690A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100174833A1 (en) * | 2009-01-05 | 2010-07-08 | Roderick David Earle Filer | Method and Apparatus for Identifying a Device Handle in a Computer System |
US20140330992A1 (en) * | 2012-03-21 | 2014-11-06 | Huawei Device Co., Ltd. | USB Device Communication Method, Device and System |
JP2015049600A (ja) * | 2013-08-30 | 2015-03-16 | Necソリューションイノベータ株式会社 | 周辺機器制御装置、周辺機器制御方法および周辺機器制御プログラム |
CN106936869A (zh) * | 2015-12-30 | 2017-07-07 | 沈阳美行科技有限公司 | 一种基于aoa协议的车机联网方法及*** |
US20180060251A1 (en) * | 2016-08-29 | 2018-03-01 | Hyundai Motor Company | Usb communication control method for usb accessory |
CN106844275A (zh) * | 2016-12-30 | 2017-06-13 | 百度在线网络技术(北京)有限公司 | 数据传输方法及装置 |
US20180267907A1 (en) * | 2017-03-15 | 2018-09-20 | Sling Media Pvt Ltd | Methods and apparatus for communication between mobile devices and accessory devices |
WO2020103680A1 (zh) * | 2018-11-19 | 2020-05-28 | 炬星科技(深圳)有限公司 | 一种数据通信方法及人机交互*** |
CN111371851A (zh) * | 2020-02-21 | 2020-07-03 | 苏州浪潮智能科技有限公司 | 一种连接方法、装置及电子设备和存储介质 |
Non-Patent Citations (2)
Title |
---|
CONOWEN: "Android的NDK开发(5)-Android JNI层实现文件的read、write与seek操作", pages 1 - 9, Retrieved from the Internet <URL:https://blog.csdn.net./conowen/article/details/7525837> * |
位恒曦;段晋军;韩晓红;常晓明;: "基于AOA协议实现Android设备的USB通信", 电子技术应用, vol. 39, no. 09, 6 September 2013 (2013-09-06), pages 31 - 37 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10380050B2 (en) | Electronic device configured to communicate with an external electronic device using a USB connector | |
CN109902053B (zh) | 一种基于双控制器的spi通信方法、终端设备及存储介质 | |
CN111314799A (zh) | 终端***构架、通信***及通信方法、存储介质 | |
US20210055939A1 (en) | Master-slave configuration communication protocol, method for improving compatibility, and electronic device | |
CN110377369B (zh) | 一种运行小程序的方法、设备和计算机存储介质 | |
CN108287804B (zh) | 一种i2c控制器驱动方法及*** | |
US11166141B2 (en) | Electronic device and method for displaying inquiry list of external electronic device in Bluetooth™ network environment | |
US9948732B2 (en) | Method for providing status messaging service in electronic device and the electronic device thereof | |
CN108933968B (zh) | 一种消息格式的转换方法、装置、存储介质及安卓终端 | |
KR20200042798A (ko) | 이종 운영체제의 실행을 제어하기 위한 방법, 이를 위한 전자 장치 및 저장 매체 | |
US20190107929A1 (en) | Method and device for loading content of page, and electronic device | |
CN111488207A (zh) | 应用进程保活方法、装置、网络设备及存储介质 | |
US20120144084A1 (en) | Data management device and method thereof | |
CN112818336A (zh) | 一种数据访问方法、数据访问装置及计算机可读存储介质 | |
CN112463690A (zh) | 一种实现数据传输的方法及装置 | |
CN112003928B (zh) | 多功能屏幕同步控制方法、装置及设备 | |
CN108563492B (zh) | 数据获取方法、虚拟机以及电子设备 | |
CN114327647A (zh) | 一种服务器开机方法、***、设备及计算机可读存储介质 | |
CN110109707B (zh) | 终端启动方法、装置及终端 | |
CN112651212A (zh) | 一种远程获取字库的方法及终端 | |
CN111124907A (zh) | 一种***测试方法、装置和服务器 | |
CN116974631B (zh) | 硬件遥测数据获取方法、装置、设备及存储介质 | |
CN105867954B (zh) | 一种***数据更新方法、第一电子设备及*** | |
CN112887389B (zh) | 一种基于版本的设备互操作方法、***、装置和存储介质 | |
CN115309415B (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 |