System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 用于与数据处理组件逐块地交换数据的方法技术_技高网

用于与数据处理组件逐块地交换数据的方法技术

技术编号:40178873 阅读:20 留言:0更新日期:2024-01-26 23:45
描述了用于与数据处理组件逐块地交换数据的方法,其具有:创建具有缓冲区的数据流缓冲区对象,该缓冲区是用于缓冲要从数据流被输入到数据处理组件中的数据的输入缓冲区,和/或是用于缓冲要从数据处理组件被输出到数据流中的数据的输出缓冲区;数据流缓冲区对象具有下溢方法,其在缓冲区下溢的情况下被执行,如果缓冲区是输出缓冲区,则调整该下溢方法,使得当其被执行时,其触发将块从数据处理组件读到缓冲区中,和/或具有上溢方法,其在缓冲区上溢的情况下被执行,如果缓冲区是输入缓冲区,则调整该上溢方法,使得当其被执行时,其触发将包含在缓冲区中的数据作为块写到数据处理组件中,而且借助数据流缓冲区对象,与数据处理组件交换数据。

【技术实现步骤摘要】

本公开涉及用于与数据处理组件逐块地交换数据的方法


技术介绍

1、在数据处理装置中,用于特定组件或应用程序的数据通常以流(即数据流)的形式来被传输。

2、流是一种抽象,该抽象表示支持输入和输出操作的组件(设备或装置)。流通常与字符的物理来源或者物理目的地相关联,诸如在硬盘上的文件、键盘或控制台,使得从流中被接收或者被写到流中的字符以物理方式被输入到相应的物理组件(流对该物理组件进行抽象)中或者由该物理组件输出。

3、在面向对象的编程语言的情况下,流缓冲区是与这种流相关的对象。流将所有读和写操作委托给该流的相关的流缓冲区对象,该流缓冲区对象是该流与其受控的输入和输出序列之间的中介(vennittler)。

4、然而,现在可能出现如下情况:该物理组件期望数据以逐块的形式——而不是作为流。值得希望的是:即使在这种情况下,也能够通过相关的流缓冲区对象来实现高效的交换。


技术实现思路

1、按照各种实施方式,提供了一种用于与数据处理组件逐块地交换数据的方法,该方法具有:创建具有缓冲区的数据流缓冲区对象,该缓冲区是用于对要从数据流被输入到数据处理组件中的数据进行缓冲的输入缓冲区,和/或是用于对要从数据处理组件被输出到数据流中的数据进行缓冲的输出缓冲区;其中该数据流缓冲区对象具有下溢方法,该下溢方法在该缓冲区的缓冲区下溢的情况下被执行,其中,如果该缓冲区是输出缓冲区,则调整该下溢方法,使得当该下溢方法被执行时,该下溢方法触发将块从数据处理组件读到该缓冲区中,并且该数据流缓冲区对象具有上溢方法,该上溢方法在该缓冲区的缓冲区上溢的情况下被执行,其中,如果该缓冲区是输入缓冲区,则调整该上溢方法,使得当该上溢方法被执行时,该上溢方法触发将包含在该缓冲区中的数据作为块写到该数据处理组件中,而且借助于该数据流缓冲区对象,与数据处理组件交换数据。

2、上述方法使得能够与数据处理组件逐块地交换数据,这些数据应该在使用数据流(即流)缓冲区对象、诸如c++类streambuf(更确切地说std::streambuf)的对象的情况下来自流(在该交换是发送给数据处理组件、即输入到数据处理组件中的情况下)或者被读入到流中(在该交换是从数据处理组件接收、即通过数据处理组件来输出的情况下)。这是通过相对应地调整(例如重载)该类的上溢方法或下溢方法、例如这些方法的相对应的基础版本来完成的,与在streambuf的情况一样,这些基础版本例如什么都没做。

3、在下文说明了各种实施例。

4、实施例1是一种用于与数据处理组件逐块地交换数据的方法,如上所述。

5、实施例2是根据实施例1所述的数据处理组件,该数据处理组件具有:执行驱动程序,用于写到数据处理组件中和/或用于从数据处理组件中读;而且如果该缓冲区是输出缓冲区,则调整该下溢方法,使得当该下溢方法被执行时,该下溢方法促使该驱动程序从数据处理组件读块并且将该块写到该缓冲区中;而且如果该缓冲区是输入缓冲区,则调整该上溢方法,使得当该上溢方法被执行时,该上溢方法促使该驱动程序将包含在该缓冲区中的数据作为块写到数据处理组件中。

6、换言之,可被视为钩子(hook)函数的经过调整的下溢方法和/或经过调整的上溢方法形成该数据流缓冲区对象与该驱动程序之间的接口。

7、实施例3是根据实施例2所述的数据处理组件,该数据处理组件具有:创建该数据流缓冲区对象,使得该缓冲区具有与该驱动程序所支持的用于写和/或读的最大块大小相对应的缓冲区大小。

8、借此,可以从数据流中高效地写到该数据处理组件中或者从该数据处理组件中高效地读到数据流中。

9、实施例4是根据实施例1至3中任一项所述的数据处理组件,其中该数据流缓冲区对象是c++的streambuf类的对象,其中该上溢方法是overflow(上溢出)方法并且该下溢方法是underflow(下溢出)方法。

10、借此,c++中的streambuf类可以被用于借助于数据流来与数据处理组件逐块交换。

11、实施例5是根据实施例1至4中任一项所述的数据处理组件,该数据处理组件具有:如果该缓冲区是输出缓冲区,则借助于对该下溢方法的重载来调整该下溢方法;而且如果该缓冲区是输入缓冲区,则借助于对该上溢方法的重载来调整该上溢方法。

12、这使得能够花费少地调整现有方法,使得这些方法能够实现数据的逐块交换。

13、实施例6是一种数据处理系统,该数据处理系统被设立为执行根据实施例1至5中任一项所述的方法。

14、实施例7是一种计算机程序,该计算机程序具有指令,当这些指令由处理器执行时,这些指令引起:该处理器执行根据实施例1至5中任一项所述的方法。

15、实施例8是一种计算机可读介质,该计算机可读介质存储指令,当这些指令由处理器执行时,这些指令引起:该处理器执行根据实施例1至5中任一项所述的方法。

本文档来自技高网...

【技术保护点】

1.一种用于与数据处理组件逐块地交换数据的方法,所述方法具有:

2.根据权利要求1所述的数据处理组件,所述数据处理组件具有:执行驱动程序,用于写到所述数据处理组件中和/或用于从所述数据处理组件中读;而且如果所述缓冲区是输出缓冲区,则调整所述下溢方法,使得当所述下溢方法被执行时,所述下溢方法促使所述驱动程序从所述数据处理组件读块并且将所述块写到所述缓冲区中;而且如果所述缓冲区是输入缓冲区,则调整所述上溢方法,使得当所述上溢方法被执行时,所述上溢方法促使所述驱动程序将包含在所述缓冲区中的数据作为块写到所述数据处理组件中。

3.根据权利要求2所述的数据处理组件,所述数据处理组件具有:创建所述数据流缓冲区对象,使得所述缓冲区具有与所述驱动程序所支持的用于写和/或读的最大块大小相对应的缓冲区大小。

4.根据权利要求1至3中任一项所述的数据处理组件,其中所述数据流缓冲区对象是C++的streambuf类的对象,其中所述上溢方法是overflow方法并且所述下溢方法是underflow方法。

5.根据权利要求1至4中任一项所述的数据处理组件,所述数据处理组件具有:如果所述缓冲区是输出缓冲区,则借助于对所述下溢方法的重载来调整所述下溢方法;而且如果所述缓冲区是输入缓冲区,则借助于对所述上溢方法的重载来调整所述上溢方法。

6.一种数据处理系统,所述数据处理系统被设立为执行根据权利要求1至5中任一项所述的方法。

7.一种计算机程序,所述计算机程序具有指令,当所述指令由处理器执行时,所述指令引起:所述处理器执行根据权利要求1至5中任一项所述的方法。

8.一种计算机可读介质,所述计算机可读介质存储指令,当所述指令由处理器执行时,所述指令引起:所述处理器执行根据权利要求1至5中任一项所述的方法。

...

【技术特征摘要】

1.一种用于与数据处理组件逐块地交换数据的方法,所述方法具有:

2.根据权利要求1所述的数据处理组件,所述数据处理组件具有:执行驱动程序,用于写到所述数据处理组件中和/或用于从所述数据处理组件中读;而且如果所述缓冲区是输出缓冲区,则调整所述下溢方法,使得当所述下溢方法被执行时,所述下溢方法促使所述驱动程序从所述数据处理组件读块并且将所述块写到所述缓冲区中;而且如果所述缓冲区是输入缓冲区,则调整所述上溢方法,使得当所述上溢方法被执行时,所述上溢方法促使所述驱动程序将包含在所述缓冲区中的数据作为块写到所述数据处理组件中。

3.根据权利要求2所述的数据处理组件,所述数据处理组件具有:创建所述数据流缓冲区对象,使得所述缓冲区具有与所述驱动程序所支持的用于写和/或读的最大块大小相对应的缓冲区大小。

4.根据权利要求1至3中任一项所述的数据处理组件,其中所...

【专利技术属性】
技术研发人员:D·J·P·拉贾拉提南T·扎瓦尔特凯
申请(专利权)人:罗伯特·博世有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1