一种数据快速收发的方法及装置与流程

文档序号:12347176阅读:215来源:国知局
一种数据快速收发的方法及装置与流程

本发明实施方式涉及数据收发领域,特别是涉及一种数据快速收发的方法及装置。



背景技术:

目前无线手柄主要采用直接收发射与读取方式,无线模组必须先发射再等待接收回应。而发射出的数据必须等待接收回应都会花大量时间,应用程序只有等待该操作完成后才能够执行下一步操作。完成1个数据的收发大约为700ms左右,主应用一般都是直接调用此操作,然后应用就会提示用户等待,数据正在收射。此时用户无法进行任何操作,从而影响游戏操作的流畅程度,直接导致用户体验满意度下降。



技术实现要素:

本发明实施方式主要解决的技术问题是提供一种数据快速收发的方法及装置,能够。

为解决上述技术问题,本发明实施方式采用的一个技术方案是:提供一种游戏手柄快速收发数据的方法,游戏手柄设置有第一收发模块和第二收发模块,方法包括:为游戏手柄构建应用主线程和收发副线程;当主线程需要发送数据时,使收发副线程通过第一收发模块和第二收发模块的相互配合进行发送数据;当第一收发模块和第二收发模块接收数据时,收发副线程对第一收发模块和第二收发模块接收到的数据进行校验,并且在数据校验通过时,将数据发送至应用主线程。

其中,第一收发模块的处理优先级低于第二收发模块的处理优先;当主线程需要发送数据时,使收发副线程通过第一收发模块和第二收发模块的相互配合进行发送数据包括:当应用主线程需要发送数据时,使应用主线程发送执行消息给预设消息列表,并将数据拷贝到一级缓存;使收发副线程根据先进先出算法,从预设消息列表提取消息并将一级缓存中的与提取到的消息相对应的数据拷贝到二级缓存中,消除执行消息;使收发副线程根据第一收发模块和第二收发模块的处理优先级原则和空闲原则依次将二级缓存中的数据拷贝到第一收发模块或者第二收发模块中进行发送数据。

其中,使副线程根据第一收发模块和第二收发模块的处理优先级原则和空闲原则依次将二级缓存中的数据拷贝到第一收发模块或者第二收发模块中进行发送数据包括:从二级缓存中提取一数据,在一数据的头部加入数据编号标识,并且将一数据作为待收数据;判断第一收发模块和第二收发模块是否存在空闲;当第一收发模块和第二收发模块只存在一个空闲的收发模块,将待收数据发送至空闲的收发模块,由空闲的收发模块进行收发处理,或者,当第一收发模块和第二收发模块均空闲时,将待收数据发送至第二收发模块,由第二收发模块进行收发处理;当第一收发模块或者第二收发模块完成对一数据的接收处理之后,从二级缓存中提取下一数据,并且下一个数据的数据编号标识按照数据的数据编号标识进行递增,将一下数据作为待收数据,并且返回判断第一收发模块和第二收发模块是否存在空闲的步骤。

其中,当主线程需要发送数据时,使收发副线程通过第一收发模块和第二收发模块的相互配合进行发送数据包括:从二级缓存中提取第一数据,在第一数据头部加入数据编号标识;将第一数据分配到第二收发模块进行处理;从二级缓存中提取第二数据,在第二数据头部加入数据编号标识,其中,在第二数据头部加入的数据编号标识按照第一数据的数据编号标识进行递增;判断第二数据和第一数据是否是相同数据;如果相同,则分配到第二收发模块进行处理;如不同,则分配到第一收发模块进行处理;从二级缓存中提取第三数据,在第三数据头部加入的数据编号标识按照第二数据的数据编号标识进行递增;判断第三数据与第一数据和第二数据是否是相同数据;如与第一数据和第二数据中的其中一个是相同数据,将第三数据分配到与之相同的数据进行收发的收发模块一同收发;如与两者都不同,则等待第一收发模块和第二发收模块处于空闲再进行处理。

其中,当第一收发模块和第二收发模块接收数据时,收发副线程对第一收发模块和第二收发模块接收到的数据进行校验包括:在收发数据之前在数据的尾部均添加循环冗余校验码;第一收发模块和第二收发模块接收数据时,收发副线程对第一收发模块和第二收发模块接收到的数据进行校验。

为解决上述技术问题,本发明实施方式采用的另一个技术方案是:提供一种游戏手柄快速收发数据的装置,游戏手柄设置有第一收发模块和第二收发模块,包括:构建模块,用于为游戏手柄构建应用主线程和收发副线程;发送模块,用于当主线程需要发送数据时,使收发副线程通过第一收发模块和第二收发模块的相互配合进行发送数据;校验模块,用于当第一收发模块和第二收发模块接收数据时,收发副线程对第一收发模块和第二收发模块接收到的数据进行校验,并且在数据校验通过时,将数据发送至应用主线程。

其中,第一收发模块的处理优先级低于第二收发模块的处理优先,发送模块包括:发送单元,用于当应用主线程需要发送数据时,使应用主线程发送执行消息给预设消息列表,并将数据拷贝到一级缓存;第一提取单元,用于使收发副线程根据先进先出算法,从预设消息列表提取消息并将一级缓存中的与提取到的消息相对应的数据拷贝到二级缓存中,消除执行消息;拷贝单元,用于使收发副线程根据第一收发模块和第二收发模块的处理优先级原则和空闲原则依次将二级缓存中的数据拷贝到第一收发模块或者第二收发模块中进行发送数据。

其中,拷贝单元包括:提取子单元,用于从二级缓存中提取一数据,在一数据的头部加入数据编号标识,并且将一数据作为待收数据;判断子单元,用于判断第一收发模块和第二收发模块是否存在空闲;发送子单元,用于当第一收发模块和第二收发模块只存在一个空闲的收发模块,将待收数据发送至空闲的收发模块,由空闲的收发模块进行收发处理,或者,当第一收发模块和第二收发模块均空闲时,将待收数据发送至第二收发模块,由第二收发模块进行收发处理;提取子单元,用于当第一收发模块或者第二收发模块完成对一数据的接收处理之后,从二级缓存中提取下一数据,并且下一个数据的数据编号标识按照数据的数据编号标识进行递增,将一下数据作为待收数据,并且返回判断第一收发模块和第二收发模块是否存在空闲的步骤。

其中,发送模块包括:第二提取单元,用于从二级缓存中提取第一数据,在第一数据头部加入数据编号标识;第一分配单元,用于将第一数据分配到第二收发模块进行处理;第三提取单元,用于从二级缓存中提取第二数据,在第二数据头部加入数据编号标识,其中,在第二数据头部加入的数据编号标识按照第一数据的数据编号标识进行递增;第一判断单元,用于判断第二数据和第一数据是否是相同数据;第二分配单元,用于如果第二数据和第一数据相同,则分配到第二收发模块进行处理;第三分配单元,用于如第二数据和第一数据不同,则分配到第一收发模块进行处理;第四提取单元,用于从二级缓存中提取第三数据,在第三数据头部加入的数据编号标识按照第二数据的数据编号标识进行递增;第二判断单元,用于判断第三数据与第一数据和第二数据是否是相同数据;第四分配单元,用于如与第一数据和第二数据中的其中一个是相同数据,将第三数据分配到与之相同的数据进行收发的收发模块一同收发;第五分配单元,用于如与两者都不同,则等待第一收发模块和第二发收模块处于空闲再进行处理。

其中,校验模块还包括:添加单元,用于在收发数据之前在数据的尾部均添加循环冗余校验码;校验单元,用于第一收发模块和第二收发模块接收数据时,收发副线程对第一收发模块和第二收发模块接收到的数据进行校验。

本发明实施方式的有益效果是:区别于现有技术的情况,本发明实施方式提供一种游戏手柄快速收发数据的方法,当所述主线程需要发送数据时,使所述收发副线程通过所述第一收发模块和所述第二收发模块的相互配合进行发送所述数据可实现对数据的快速发送,提高了数据的发送效率,节省了时间,并且收发完成后还对数据进行安全校验,达到数据不丢失的效果。

附图说明

图1是本发明提供的一种数据快速收发的方法的第一实施方式的示意图

图2是本发明提供的一种数据快速收发的方法的第二实施方式的流程图;

图3是本发明提供的一种数据快速收发的方法的第二实施方式中双线程配合发送数据的流程图;

图4是本发明提供的一种数据快速收发的方法的第二实施方式中单模块收发算法的流程图;

图5是本发明提供的一种数据快速收发的方法的第二实施方式中双模块收发算法的流程图;

图6是本发明提供的一种数据快速收发的装置的第一实施方式的示意图;

图7是本发明提供的一种数据快速收发的装置的第一实施方式的示意图;

图8是本发明执行数据快速收发的方法的游戏手柄的示意图。

具体实施方式

需要说明的是,本发明实施例提供的数据快速收发的方法的执行主体是双核无线手柄。

参阅图1,图1是本发明提供的一种数据快速收发的方法的第一实施方式的流程图。游戏手柄40设置有第一收发模块41、第二收发模块42和MCU控制器43,MCU控制器43中包括主线程431和副线程432。当所述主线程431需要发送数据时,主线程431和副线程相互配合将数据分配给所述第一收发模块41和第二收发模块42,然后再通过所述第一收发模块41和第二收发模块42之间的相互配合进行发送数据至外部接收端50。当所述第一收发模块41和第二收发模块42接收数据时,所述副线程432对所述第一收发模块和第二收发模块接收到的数据进行校验,并且在所述数据校验通过时,将所述数据发送至主线程431。需要说明的是,接收端50可以是游戏手柄,也可以是服务器或是移动终端等等。

在本发明实施例中,当所述主线程需要发送数据时,使所述收发副线程通过所述第一收发模块和所述第二收发模块的相互配合进行发送所述数据可实现对数据的快速发送,提高了数据的发送效率,节省了时间,并且收发完成后还对数据进行安全校验,达到数据不丢失的效果。

请参阅图2,图2是本发明提供的一种数据快速收发的方法的第二实施方式的流程图,所述游戏手柄设置有第一收发模块和第二收发模块,数据快速收发的方法包括:

11:为所述游戏手柄构建应用主线程和收发副线程;

构建的应用主线程和收发副线程均在MCU控制器中,为了解决游戏操作等待的问题,采用构建应用主线程和收发副线程的异步收发方式,即主线程收到数据先发消息给副线程,让副线程来执行费时的操作,来提高主线程的执行效率,达到提高游戏造作流畅程度的效果。

12:当所述应用主线程需要发送数据时,使所述收发副线程通过所述第一收发模块和所述第二收发模块的相互配合进行发送所述数据;

在游戏手柄初始化时,MCU控制器通过将无线模块与模块所需最大收发空间直接传入到MCU控制器内存中,再根据各模块的配置情况,自动将模块进行划分,通过对模块的划分,可得到所述第一收发模块的处理优先级低于所述第二收发模块的处理优先,这样再进行处理数据收发时,先将数据传输给第二收发模块,如果第二收发模块没有空闲再将数据传给第一模块进行处理,这样可使数据在收发时有顺序的进行收发,可以实现快速的数据收发,需要说明的是,第一收发模块和第二收发模块是互不干扰的。

13:当所述第一收发模块和所述第二收发模块接收数据时,使所述收发副线程对所述第一收发模块和所述第二收发模块接收到的数据进行校验,并且在所述数据校验通过时,将所述数据发送至应用主线程;

不管是第一收发模块收发还是第二收发模块进行收发,都会在收发过程中,导致数据出现异常或是遭到破坏的情况,为了保护数据的完整性和健壮性,在接收到数据时,利用收发副线程进行数据的校验,而实现数据的校验是通过在数据的尾部添加循环冗余校验码,通过校验此校验码来实现数据的完整性,当数据校验不通过时,则丢弃此数据,再对其他数据进行校验,知道数据校验成功,再将成功的数据返回给上层应用,再将成功数据重写入模块中,排出数据异常,达到一个数据最新,多份数据备份的效果,充分保障数据的健壮性。

在本发明实施例中,当所述主线程需要发送数据时,使所述收发副线程通过所述第一收发模块和所述第二收发模块的相互配合进行发送所述数据可实现对数据的快速发送,提高了数据的发送效率,节省了时间,并且收发完成后还对数据进行安全校验,达到数据不丢失的效果。

请参阅图3,图3是本发明提供的一种数据快速收发的方法的第二实施方式中双线程配合发送数据的流程图,具体的,步骤12包括:

121:当所述应用主线程需要发送数据时,使所述应用主线程发送执行消息给预设消息列表,并将所述数据拷贝到一级缓存;

预设消息列表预先创建好的,用来存储主线程发送的消息的。执行消息和应用主线程要发送的数据是一一对应的,方便收发副线程通过查找到执行消息时而对应到数据。应用主线程将数据拷贝到一级缓存中,目的是为隔离应用的内存数据,降低高频收发过程中对应用内存的长时间锁定。

122:使所述收发副线程根据先进先出算法,从所述预设消息列表提取消息并将所述一级缓存中的与提取到的消息相对应的所述数据拷贝到二级缓存中,消除所述执行消息;

需要说明的是,收发副线程会在空闲的时候查询预设消息列表,并不是时刻查询。收发副线程将数据从一级缓存中拷贝到二级缓存中的目的是为中转运送数据,降低底层对应用数据内存的耦合度。拷贝之后消除所述执行消息是为了保证预设消息列表一直保持着最新状态,不存在没用的消息。

123:使所述收发副线程根据第一收发模块和第二收发模块的处理优先级原则和空闲原则依次将二级缓存中的所述数据拷贝到第一收发模块或者第二收发模块中进行发送数据;

通过将一个数据从一级缓存拷贝到二级缓存,再从二级缓存中拷贝到收发模块中进行收发,达到将数据进行一个排序的过程,使数据有次序的、有时间间隔的进行完成发送,这样降低了应用主线程对收发模块的耦合度,提高了应用游戏操作的流畅程度。

在本发明实施例中,通过当所述主线程需要发送数据时,先将数据拷贝到一级缓存中,收发副线程再将数据从一级缓存中拷贝到二级缓存中,再将数据从二级缓存中拷贝到收发模块中进行处理,这样使数据在缓存中形成了中转的过程,使数据达到了一个排列的过程,这样降低了应用主线程对收发模块的耦合度,提高了应用游戏操作的流畅程度。

请参阅图4,图4是本发明提供的一种数据快速收发的方法的第二实施方式中单模块收发算法的流程图,具体的,步骤123包括:

1231:从所述二级缓存中提取一数据,在所述一数据的头部加入数据编号标识,并且将所述一数据作为待收数据;

对数据进行编号标识,是为了对数据的辨别,同时也对校验时方便对正确数据和错误数据的区分,防止混淆,丢失错误。

1232:判断所述第一收发模块和第二收发模块是否存在空闲;

1233:当所述第一收发模块和第二收发模块只存在一个空闲的收发模块,将所述待收数据发送至空闲的收发模块,由空闲的收发模块进行收发处理,或者,当所述第一收发模块和第二收发模块均空闲时,将所述待收数据发送至第二收发模块,由所述第二收发模块进行收发处理;

由于在对模块进行划分时,将第二收发模块的处理优先级设置为高于第一收发模块,所以当第二收发模块空闲时,先第二收发模块进行处理。

1234:当所述第一收发模块或者第二收发模块完成对所述一数据的接收处理之后,从所述二级缓存中提取下一数据,并且所述下一个数据的数据编号标识按照所述数据的数据编号标识进行递增,将所述一下数据作为待收数据,并且返回判断所述第一收发模块和第二收发模块是否存在空闲的步骤;

通过使用一个收发模块进行对数据的处理,避免了每次写模块都需要执行一次收发模块的操作,大大提升了数据收发速度,提高了模块的使用率。

在本发明实施例中,通过当所述主线程按顺序的将数据一个一个的发送至收发模块进行处理,并使用一个收发模块执行,这样既提高了游戏操作流畅程度,又避免了每次写模块都需要执行一次收发模块的操作,大大提升了数据收发速度,提高了模块的使用率。

请参阅图5,图5是本发明提供的一种数据快速收发的方法的第二实施方式中双模块收发算法的流程图,具体的,步骤12还包括:

124:从所述二级缓存中提取第一数据,在所述第一数据头部加入数据编号标识;

同样,对数据进行编号标识,是为了对数据的辨别,同时也对校验时方便对正确数据和错误数据的区分,防止混淆,丢失错误。

125:将所述第一数据分配到第二收发模块进行处理;

126:从所述二级缓存中提取第二数据,在所述第二数据头部加入数据编号标识,其中,在所述第二数据头部加入的数据编号标识按照第一数据的数据编号标识进行递增;

127:判断所述第二数据和所述第一数据是否是相同数据;

128:如果相同,则分配到第二收发模块进行处理;

129:如不同,则分配到第一收发模块进行处理;

120:从所述二级缓存中提取第三数据,在所述第三数据头部加入的数据编号标识按照第二数据的数据编号标识进行递增;

1201:判断所述第三数据与所述第一数据和所述第二数据是否是相同数据;

1202:如与所述第一数据和所述第二数据中的其中一个是相同数据,将所述第三数据分配到与之相同的数据进行收发的收发模块一同收发;

1203:如与两者都不同,则等待第一收发模块和第二发收模块处于空闲再进行处理;

将相同的数据使用同一个收发模块进行处理,不相同的数据分配到另一个收发模块进行处理,这样可以减少模块的写入次数,提升收发模块收发数据的速度。

在本发明实施例中,通过第一收发模块和第二收发模块之间的相互配合,在从二级缓存中提取数据时,先判断此数据和之前的数据是否相同,如有相同则分配到同一个收发模块进行处理,这样减少了模块的写入次数,提升了收发模块收发数据的速度。

请参阅图6,图6是本发明提供的一种数据快速收发的装置的第一实施方式的示意图。所述游戏手柄设置有第一收发模块和第二收发模块,游戏手柄快速收发数据的装置20包括:构建模块21、发送模块22和校验模块23。构建模块21,用于为所述游戏手柄构建应用主线程和收发副线程;发送模块22,用于当所述主线程需要发送数据时,使所述收发副线程通过所述第一收发模块和所述第二收发模块的相互配合进行发送所述数据;校验模块23,用于当所述第一收发模块和所述第二收发模块接收数据时,所述收发副线程对所述第一收发模块和所述第二收发模块接收到的数据进行校验,并且在所述数据校验通过时,将所述数据发送至应用主线程。

在本发明实施例中,当所述主线程需要发送数据时,使所述收发副线程通过所述第一收发模块和所述第二收发模块的相互配合进行发送所述数据可实现对数据的快速发送,提高了数据的发送效率,节省了时间,并且收发完成后还对数据进行安全校验,达到数据不丢失的效果。

请参阅图7,图7是本发明提供的一种数据快速收发的装置的第二实施方式的示意图,此实施方式中的模块21-23与第一实施方式中的模块21-23是相同的,此处不再一一赘述。具体的,发送模块22包括:发送单元221、第一提取单元222、拷贝单元223、第二提取单元224、第一分配单元225、第三提取单元226、第一判断单元227、第二分配单元228、第三分配单元229、第四提取单元220、第二判断单元2201、第四分配单元2202和第五分配单元2203。发送单元221,用于当所述应用主线程需要发送数据时,使所述应用主线程发送执行消息给预设消息列表,并将所述数据拷贝到一级缓存;第一提取单元222,用于使所述收发副线程根据先进先出算法,从所述预设消息列表提取消息并将所述一级缓存中的与提取到的消息相对应的所述数据拷贝到二级缓存中,消除所述执行消息;拷贝单元223,用于使所述收发副线程根据第一收发模块和第二收发模块的处理优先级原则和空闲原则依次将二级缓存中的所述数据拷贝到第一收发模块或者第二收发模块中进行发送数据;第二提取单元224,用于从所述二级缓存中提取第一数据,在所述第一数据头部加入数据编号标识;第一分配单元225,用于将所述第一数据分配到第二收发模块进行处理;第三提取单元226,用于从所述二级缓存中提取第二数据,在所述第二数据头部加入数据编号标识,其中,在所述第二数据头部加入的数据编号标识按照第一数据的数据编号标识进行递增;第一判断单元227,用于判断所述第二数据和所述第一数据是否是相同数据;第二分配单元228,用于如果所述第二数据和所述第一数据相同,则分配到第二收发模块进行处理;第三分配单元229,用于如所述第二数据和所述第一数据不同,则分配到第一收发模块进行处理;第四提取单元220,用于从所述二级缓存中提取第三数据,在所述第三数据头部加入的数据编号标识按照第二数据的数据编号标识进行递增;第二判断单元2201,用于判断所述第三数据与所述第一数据和所述第二数据是否是相同数据;第四分配单元2202,用于如与所述第一数据和所述第二数据中的其中一个是相同数据,将所述第三数据分配到与之相同的数据进行收发的收发模块一同收发;第五分配单元2203,用于如与两者都不同,则等待第一收发模块和第二发收模块处于空闲再进行处理。

具体的,所述拷贝单元223包括:第一提取子单元2231、判断子单元2232、发送子单元2233和第二提取子单元2234。第一提取子单元2231,用于从所述二级缓存中提取一数据,在所述一数据的头部加入数据编号标识,并且将所述一数据作为待收数据;判断子单元2232,用于判断所述第一收发模块和第二收发模块是否存在空闲;发送子单元2233,用于当所述第一收发模块和第二收发模块只存在一个空闲的收发模块,将所述待收数据发送至空闲的收发模块,由空闲的收发模块进行收发处理,或者,当所述第一收发模块和第二收发模块均空闲时,将所述待收数据发送至第二收发模块,由所述第二收发模块进行收发处理;第二提取子单元2234,用于当所述第一收发模块或者第二收发模块完成对所述一数据的接收处理之后,从所述二级缓存中提取下一数据,并且所述下一个数据的数据编号标识按照所述数据的数据编号标识进行递增,将所述一下数据作为待收数据,并且返回判断所述第一收发模块和第二收发模块是否存在空闲的步骤。

具体的,所述校验模块23包括:添加单元231,用于在收发数据之前在数据的尾部均添加循环冗余校验码。

在本发明实施例中,当所述主线程需要发送数据时,使所述收发副线程通过所述第一收发模块和所述第二收发模块的相互配合进行发送所述数据可实现对数据的快速发送,提高了数据的发送效率,节省了时间,并且收发完成后还对数据进行安全校验,达到数据不丢失的效果。

请参阅图8,图8是本发明执行数据快速收发的方法的游戏手柄的示意图。游戏手柄30包括:一个或多个处理器301以及存储器302,图6中以一个处理器301为例。

处理器301和存储器302可以通过总线或者其他方式连接,图8中以通过总线连接为例。

存储器302作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的数据快速收发的方法对应的程序指令/模块(例如,构建模块21、发送模块22和校验模块23)。处理器301通过运行存储在存储器302中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例数据快速收发的方法。

存储器302可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据数据快速收发的装置的使用所创建的数据等。此外,存储器302可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器302可选包括相对于处理器301远程设置的存储器,这些远程存储器可以通过网络连接至数据快速收发的装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

所述一个或者多个模块存储在所述存储器302中,当被所述一个或者多个处理器301执行时,执行上述任意方法实施例中数据快速收发的方法,例如,执行以上描述的图2中的方法步骤11至步骤13,图3中的方法步骤121至步骤123,图4中的方法步骤1231至步骤1234,图5中的方法步骤121至步骤1203,实现图6中的模块21-23。

上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。

以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1