具体实施方式
参阅图1,所示为本发明通用串行总线驱动装置16的应用环境及一实施方式的模块图。在本实施方式中,通用串行总线驱动装置16设置于数据接收方12内,用于驱动通用串行总线14,数据接收方12通过通用串行总线14与数据传输方10相连,数据接收方12内的应用程序18通过通用串行总线驱动装置16驱动通用串行总线14从数据传输方10接收数据。在本实施方式中,数据接收方12为采用通用串行总线14与外界通信的网络通信设备,如宽带路由器、网络网关等设备。
通用串行总线驱动装置16包括参数处理模块160、请求处理模块162、队列存取模块166及信息处理模块164。
参数处理模块160用于预设最大有效交易数及设置有效交易数的初始值,并判断有效交易数是否小于最大有效交易数。在本实施方式中,最大有效交易数是用户预设的一个常量,即恒定不变的数值,代表数据传输方10所能同时处理数据请求的最大数;有效交易数是变量,代表应用程序18通过通用串行总线驱动装置16已缴交给数据传输方10的数据请求的个数,有效交易数会随着数据传输方10处理的数据请求的数量而变更,其初始值可设为0。在其它实施方式中,有效交易数的初始值也可以设置为其它数值。在本实施方式中,若有效交易数小于最大有效交易数,说明数据传输方10尚能处理更多数据请求,若有效交易数不小于最大有效交易数,说明数据传输方10已经达到处理数据请求的极限,不能再处理更多数据请求。
请求处理模块162用于从数据接收方12的应用程序18接收一个或多个数据请求,并当参数处理模块160判断出有效交易数小于最大有效交易数时,驱动通用串行总线14缴交数据请求给数据传输方10。在本实施方式中,数据传输方10在收到数据请求后会传回完成信息及数据。当应用程序18需要接收数据时,即发出一个数据请求,请求处理模块162接收应用程序18发出的数据请求,若有效交易数为其初始值或小于最大有效交易数,则直接驱动通用串行总线14缴交数据请求给数据传输方10。数据传输方10收到数据请求后,就根据数据请求准备数据接收方12的应用程序18所需要的数据,并在准备好数据后,先通过通用串行总线14发送完成信息给通用串行总线驱动装置16,再通过通用串行总线14将所准备好的数据传送给应用程序18。
队列存取模块166用于当参数处理模块160判断出有效交易数不小于最大有效交易数时,将请求处理模块162所接收的数据请求放入队列。在本实施方式中,队列用于临时存取数据请求。在本实施例中,有效交易数不小于最大有效交易数表示数据传输方10已经不能再处理更多数据请求,此时,队列存取模块166将请求处理模块162收到的数据请求放入队列。
信息处理模块164用于从数据传输方10接收完成信息,并驱动通用串行总线14将数据传输方10准备好的数据传输给数据接收方12的应用程序18。
参数处理模块160还用于在请求处理模块162缴交数据请求给数据传输方10以及在信息处理模块164传输数据给数据接收方12之后更新有效交易数。在本实施方式中,当请求处理模块162缴交数据请求后,则参数处理模块160增加有效交易数,如将有效交易数加1。当信息处理模块164传输数据后,则参数处理模块160减少有效交易数,如将有效交易数减1。
队列存取模块166还用于在信息处理模块164传输数据给数据接收方12之后从队列中读取数据请求。信息处理模块164传输数据给数据接收方12之后,数据传输方10就可以处理新数据请求,所以队列存取模块166从队列中读取数据请求,再通过请求处理模块162驱动通用串行总线14缴交队列存取模块166所读取的数据请求给数据传输方10进行处理。
当队列存取模块166判断出队列中没有数据请求时,参数处理模块160还用于判断当前有效交易数是否为其初始值。若有效交易数为初始值,表示数据传输方10已经处理完应用程序18所发出的数据请求;若有效交易数不为初始值,表示数据传输方10中还有数据请求未处理完,则信息处理模块164继续从数据传输方10接收完成信息。
参阅图2A及图2B,所示为本发明通用串行总线驱动方法一实施方式的流程图。在本实施方式中,通用串行总线驱动方法通过图1中的功能模块来实施。
在步骤S200,参数处理模块160预设最大有效交易数。
在步骤S202,参数处理模块160设置有效交易数的初始值。在本实施方式中,参数处理模块160设置有效交易数为0。
在步骤S204中,请求处理模块162从数据接收方12的应用程序18接收数据请求。
在步骤S206中,请求处理模块162驱动通用串行总线14缴交数据请求给数据传输方10。数据传输方10在收到请求处理模块162缴交的数据请求后,会准备应用程序18所发出的数据请求所请求的数据,并在数据准备好之后,先通过通用串行总线14发送完成信息给通用串行总线驱动装置16,再通过通用串行总线14将所准备好的数据传送给数据接收方12的应用程序18。
在步骤S208,参数处理模块160增加有效交易数。在本实施方式中,参数处理模块160将有效交易数加1。
在步骤S210,参数处理模块160判断有效交易数是否小于最大有效交易数。
若有效交易数小于最大有效交易数,表示数据传输方10尚能处理更多数据请求,则返回步骤S204,请求处理模块162继续从数据接收方12的应用程序18接收数据请求。
若有效交易数不小于最大有效交易数,表示数据传输方10已不能处理更多数据请求,则在步骤S212,请求处理模块162判断是否继续从数据接收方12的应用程序18接收到数据请求。
若请求处理模块162继续接收到数据请求,则在步骤S214,队列存取模块166将请求处理模块162接收的数据请求放入队列,再返回步骤S212,请求处理模块162重新判断是否继续从数据接收方12的应用程序18接收到数据请求。
若请求处理模块162未继续接收到数据请求,则数据请求处理流程运行结束。在本实施方式中,数据请求处理流程是指对数据接收方12的应用程序18所发出的数据请求的处理,包括步骤S204至S214。
在数据请求处理流程运行到步骤S208之后,通用串行总线驱动装置16会运行完成信息处理流程,具体请参阅图2B。在本实施方式中,完成信息处理流程是指对数据传输方10所发出的完成信息及其准备好的数据的处理。在本实施方式中,数据请求处理流程与完成信息处理流程可通过中断或多线程等方式运行。具体而言,若采用中断方式,则一直执行步骤S204至步骤S214,当信息处理模块164从数据传输方10接收到完成信息时,就中断数据请求处理流程,转去执行完成信息处理流程,并在执行完完成信息处理流程后回到原断点继续执行数据请求处理流程;若采用多线程方式,则先启动主线程,一直执行数据请求处理流程,当信息处理模块164从数据传输方10接收到完成信息时,启动子线程来执行完成信息处理流程。
在步骤S216,信息处理模块164从数据传输方10接收到完成信息。在本实施方式中,完成信息表示数据传输方已准备好应用程序18发出的数据请求所请求的数据。
在步骤S218,信息处理模块164驱动通用串行总线14从数据传输方10接收其准备好的数据,并将所接收的数据传输给数据接收方12的应用程序18。
在步骤S220,参数处理模块160减少有效交易数。在本实施方式中,参数处理模块160将有效交易数减1,有效交易数减少后,其当前值就小于最大有效交易数,所以此时数据传输方10可处理新数据请求。
在步骤S222,队列存取模块166判断队列中是否有数据请求。
若队列存取模块166判断出队列中有数据请求,则在步骤S224,队列存取模块166从队列中读取数据请求,再返回到图2A中步骤S206,请求处理模块162继续驱动通用串行总线14缴交队列存取模块166从队列中读取的数据请求给数据传输方10。
若队列存取模块166判断出队列中没有数据请求,则在步骤S226,参数处理模块160判断有效交易数是否为其初始值。在本实施方式中,有效交易数不为其初始值,表示数据传输方10还没有处理完通用串行总线驱动装置16缴交的所有数据请求。
若参数处理模块160判断出有效交易数不为其初始值,则返回步骤S216,信息处理模块164继续从数据传输方10接收完成信息。
在本实施方式中,每当数据接收方12的应用程序18发出数据请求,就会触发通用串行总线驱动装置16开始执行数据请求处理流程;每当数据传输方10发出完成信息,就会触发通用串行总线驱动装置16开始执行完成信息处理流程,即步骤S216至S226及S206至S208。
本发明实施方式所提供的通用串行总线驱动装置16及通用串行总线驱动方法通过向数据传输方10同时提交多笔数据请求并将多余的数据请求排队的机制,使得数据传输方10同时处理多笔有效交易,从而有效增加通用串行总线驱动装置16的数据接收效率,满足网络通信设备对于数据接收效率日益增长的需求。