信息处理装置及其控制方法与流程

文档序号:17482531发布日期:2019-04-20 06:32阅读:169来源:国知局
信息处理装置及其控制方法与流程

本发明涉及一种信息处理装置及其控制方法。



背景技术:

当开发用于执行信息处理的软件时,经常同时使用对开发效率具有重要性的编程语言(例如,语言)和对处理速度具有重要性的程序语言(例如,c语言或c++语言)。例如,对开发效率具有重要性的编程语言用于开发频繁更新的程序(例如,应用程序)。另一方面,对处理速度具有重要性的编程语言用于开发用来进行复杂算术运算的程序(例如,图像处理程序)。这可以实现如下布置:在提高频繁更新的程序的开发效率的同时,能够使进行复杂算术运算的程序高速运行。当像java语言这样的具有存储器管理自动化的功能(对程序中使用的存储器区域自动进行管理的功能)的语言被用作对开发效率具有重要性的程序语言时,能够轻负荷地进行安装,并且能够进一步提高开发效率。

作为如上所述同时使用不同编程语言的技术,日本特开第2013-178606号公报公开了一种在嵌入式系统的软件开发环境中同时使用图形化编程语言和诸如c语言的文本格式编程语言的技术。在日本特开第2013-178606号公报中,以一种编程语言开发的执行程序和以其他编程语言开发的执行程序在同一执行环境中运行,从而允许在执行程序之间进行调用。

然而,在允许在不同编程语言之间调用的通用调用机制中,调用程序和被调用程序共享逻辑存储器空间。如果发生逻辑存储器空间的共享,则被调用程序的存储器操作中的错误可能影响调用程序的运行。

在以不具有存储器管理自动化的功能的程序语言开发的程序中可能发生上述存储器操作中的错误。例如,从应用程序(应用)调用以不具有存储器管理自动化的功能的编程语言开发的图像处理程序,并且在该图像处理程序的存储器操作中可能发生错误。当应用所使用的存储器区域受到存储器操作的错误影响时,在该应用的运行中发生异常。例如,发生诸如由应用管理的客户数据的擦除以及由应用控制的打印处理的意外结束之类的异常。在安装有应用的装置本身的操作中引起问题。



技术实现要素:

鉴于上述问题而作出了本发明。本发明提供了如下的技术:在以不同编程语言开发的程序之间,防止一个程序的存储器操作的错误对其他程序的运行的影响。

根据本发明的一个方面,提供一种信息处理装置,所述信息处理装置包括:客户端,其被构造为根据来自在对应于第一编程语言的第一执行环境中执行的第一程序的请求,发送用于请求使用在对应于第二编程语言的第二执行环境中执行的第二程序来执行信息处理的处理请求,客户端在第一执行环境中操作;以及服务器,其被构造为接收从客户端发送的处理请求,并根据接收到的处理请求通过执行第二程序来执行信息处理,服务器在第二执行环境中操作,其中,服务器在使用与第一执行环境中使用的存储器空间相独立的存储器空间的进程(process)上运行。

根据本发明的另一方面,提供一种信息处理装置的控制方法,所述控制方法包括:在第一执行环境中操作客户端,以根据来自在对应于第一编程语言的第一执行环境中执行的第一程序的请求,发送用于请求使用在对应于第二编程语言的第二执行环境中执行的第二程序来执行信息处理的处理请求;以及在第二执行环境中操作服务器,以接收从客户端发送的处理请求,并根据接收到的处理请求通过执行第二程序来执行信息处理,其中,服务器在使用与第一执行环境中使用的存储器空间相独立的存储器空间的进程上运行。

根据本发明,在以不同编程语言开发的程序之间能够防止一个程序的存储器操作的错误对其他程序的运行的影响。

根据下面(参照附图)对示例性实施例的描述,本发明的其他特征将变得清楚。

附图说明

图1示出了图像形成系统的布置示例;

图2是示出图像形成装置的硬件布置示例的框图;

图3是示出图像形成装置的软件布置示例的框图;

图4是示出图像处理插件应用的处理过程的流程图;

图5是示出本地服务器(nativeserver)的处理过程的流程图;

图6是示出本地服务器的处理过程的流程图;以及

图7示出了图像形成装置中的图像处理系统的布置示例。

具体实施方式

在下文中,将参照附图详细描述本发明的实施例。应该注意,以下实施例并不意图限制所附权利要求的范围,并且并非实施例中描述的特征的所有组合对于本发明的解决手段都是必要的。

将在以下的第一至第四实施例中描述将本发明应用于图像形成装置的示例。注意,本发明可适用于任何装置,即使是信息处理装置。本发明不仅适用于诸如打印装置、复印机、多功能外围设备或传真装置等的图像形成装置,而且还适用于诸如pc、便携式电话或智能电话等的信息处理终端。

[第一实施例]

<图像形成系统>

首先,下面将描述第一实施例。图1示出了根据本实施例的图像形成系统的布置示例。图像形成系统包括图像形成装置101和102、信息处理终端103和104以及服务器105。图像形成装置101和102、信息处理终端103和104以及服务器105经由网络106彼此连接和通信。网络106是诸如lan(局域网)或因特网之类的网络,通过该网络,图像形成系统中的装置可以相互通信。

图1例示了布置两个图像形成装置101和102的示例。然而,可以在图像形成系统中布置任意数量(一个或更多个)的图像形成装置。在本实施例中,图像形成装置101和102是mfp(多功能外围设备),但是可以是例如mfp、打印装置、复印机和传真装置中的任何一者。在以下描述中,假设图像形成装置101和102具有相同的布置,并且将省略对图像形成装置102的详细描述。

图像形成装置101包括打印机和扫描器,并且例如可以从信息处理终端103和104接收打印请求(打印数据)并使打印机进行打印。图像形成装置101还可以使扫描器读取原稿图像以生成图像数据。图像形成装置101可以使打印机基于由扫描器生成的图像数据进行打印,并且可以存储从信息处理终端103和104接收的打印数据。另外,图像形成装置101可以进行由扫描器生成的图像数据向信息处理终端103和104的发送,使用服务器105进行图像处理,并打印存储在服务器105中的文档。图像形成装置101还使用打印机和扫描器提供各种服务,并且可以被布置为使得可以添加新服务(功能)。更具体地,可以通过在图像形成装置101中安装附加的插件应用来实现新服务的添加。

<图像形成装置的硬件布置>

图2是示出根据本实施例的图像形成装置101的硬件布置示例的框图。图像形成装置101包括控制器201、打印机202、扫描器203和操作单元204。控制器201包括cpu211、ram212、hdd213、网络接口(i/f)214、打印机i/f215、扫描器i/f216、操作单元i/f217和扩展i/f218。cpu211可以与ram212、hdd213、网络i/f214、打印机i/f215、扫描器i/f216、操作单元i/f217和扩展i/f218交换数据。另外,cpu211将从hdd213读出的程序(指令)加载到ram212中并执行加载到ram212中的程序。

可由cpu211执行的程序、在图像形成装置101中使用的设置值、与用户请求的处理相关联的数据等可以存储在hdd213中。ram212用于临时存储由cpu211从hdd213读出的程序。ram212用于存储执行程序所需的各种数据。网络i/f214是用于经由网络106与图像形成系统中的其他装置通信的接口。网络i/f214可以向cpu211通知数据的接收并将ram212上的数据发送到网络106。

打印机i/f215可以将从cpu211接收的打印数据发送到打印机202,并且向cpu211通知从打印机202通知的打印机202的状态。扫描器i/f216可以向扫描器203发送从cpu211接收到的图像读取指令,并且向cpu211发送从扫描器203接收的图像数据。扫描器i/f216可以向cpu211通知从扫描器203通知的扫描器203的状态。

操作单元i/f217可以向cpu211通知用户在操作单元204上输入的指令,并且向操作单元204发送接受用户操作的操作画面的画面信息。扩展i/f218是能够将外部设备连接到图像形成装置101的接口。扩展i/f218是例如具有usb(通用串行总线)形式的接口。如果诸如usb存储器的外部存储设备连接到扩展i/f218,则图像形成装置101可以读出存储在外部存储设备中的数据以及向外部存储设备写入数据。

打印机202可以在片材上打印与从打印机i/f215接收的图像数据相对应的图像,并且向打印机i/f215通知打印机202的状态。扫描器203可以根据从扫描器i/f216接收的图像读取指令读取原稿图像以生成图像数据,并将生成的图像数据发送到扫描器i/f216。另外,扫描器203可以向扫描器i/f216通知扫描器203的状态。操作单元204是用于使得用户能够进行用于向图像形成装置101发送各种指令的操作的接口。例如,操作单元204包括具有触摸面板功能的显示单元,向用户提供操作画面,并经由操作画面接受来自用户的操作。

<图像形成装置的图像处理系统>

接下来,将参照图7描述根据本实施例的图像形成装置101中安装的图像处理(信息处理)系统的概要。在本实施例中,图像处理系统包括平台模块700、本地应用701、扩展应用702、本地模块703、图像处理执行客户端704、图像处理执行服务器705和扩展处理插件1至3。

本地应用701或扩展应用702(java应用)可以根据用户指令请求平台模块700进行对期望的图像处理(信息处理)的执行。本地应用701以诸如c语言的程序语言编写,并且是图像形成装置101中原始提供(预安装)的应用。本地应用701包括例如打印应用、复印应用、扫描应用和发送应用。为了更新本地应用701,需要更新图像形成装置101的固件。扩展应用702是以诸如java语言的程序语言编写的应用。扩展应用702是为扩展图像形成装置101的功能而在图像形成装置101中后来安装的。例如,扩展应用702是用于管理用户登录图像形成装置101的登录应用。

在图像形成装置101中,可以在平台模块700上操作一个或更多个扩展处理插件。在本实施例中,在平台模块700上操作三个扩展处理插件1至3。与扩展应用702一样,扩展处理插件1至3是为扩展图像形成装置101的功能而在图像形成装置101中后来安装的。为了更新扩展处理插件的功能,简单地更新插件,而不需要更新图像形成装置101的固件。

在本实施例中,扩展处理插件1是通过连接到图像形成装置101中以java语言编写的库来执行处理的扩展处理插件。扩展处理插件2是通过连接到外部服务器(例如云服务器)来执行处理的扩展处理插件。扩展处理插件3是通过连接到以c语言编写的本地模块703来执行处理的扩展处理插件。

扩展处理插件3经由图像处理执行客户端704和图像处理执行服务器705连接到本地模块703。与本地应用701一样,本地模块703预先安装在图像形成装置101中。为了更新本地模块703,与本地应用701一样,需要更新图像形成装置101的固件。在本实施例中,本地模块703是提供ocr处理的模块。注意,扩展处理插件1至3仅仅是示例,并且扩展处理插件的连接目的地和处理内容不限于上述的连接目的地和处理内容。

平台模块700可以接受来自本地应用701或扩展应用702的图像处理执行请求。例如,平台模块700从扫描应用接受用于从扫描图像提取文本图像的ocr处理的执行请求。在接受图像处理执行请求时,平台模块700从扩展处理插件1至3当中选择用于根据执行请求执行图像处理的扩展处理插件,并指示所选择的扩展处理插件执行图像处理。例如,平台模块700基于请求执行的图像处理的类型和内容(是否需要及时性、处理负荷程度等)来决定要使用的扩展处理插件。平台模块700从所使用的扩展处理插件获得所请求的图像处理的执行结果。平台模块700将获得的执行结果作为对执行请求的响应输出到作为执行请求的发送源的应用。

特别地,本实施例将描述如下布置,即,通过在扩展处理插件3和本地模块703之间划分进程和存储器的使用区域,来防止在一个使用区域中发生的错误(存储器操作错误)对另一个使用区域的影响。

图7中所示的各要素与图3中所示的各要素(下面将描述)具有以下对应关系。平台模块700对应于连接库332。本地应用701对应于设备控制库309。扩展应用702对应于单功能插件应用302。扩展处理插件1到3对应于图像处理插件应用303。本地模块703对应于本地模块316。图像处理执行客户端704对应于本地客户端331。图像处理执行服务器705对应于本地服务器315。

<图像形成装置的软件布置>

图3是示出根据本实施例的图像形成装置101的软件布置示例的框图。通过使用例如存储在hdd213中的程序来实现图像形成装置101的软件布置。图3所示的软件布置包括由包括操作系统317的最下层、对应于执行环境330的最上层以及最下层与最上层之间的中间层形成的层级结构。该层级结构具有这样的关系,其中排除一些例外,上层可以使用由下层提供的服务。注意,如稍后将描述的,例外指示各个设备控制库309可以经由图像处理控制器340使用最上层中包括的图像处理插件应用303。

最下层是包括操作系统317以进行程序执行管理、存储器管理等的层。打印机控制驱动器318、扫描器控制驱动器319和网络i/f控制驱动器320嵌入在操作系统317中。打印机控制驱动器318、扫描器控制驱动器319和网络i/f控制驱动器320可以起到相互协作的作用。打印机控制驱动器318是用于经由打印机i/f215控制打印机202的软件。扫描器控制驱动器319是用于经由扫描器i/f216控制扫描器203的软件。网络i/f控制驱动器320是用于控制网络i/f214的软件。

高于最下层的中间层包括设备控制库309和图像处理控制器340。在本实施例中,设备控制库309和图像处理控制器340的程序以诸如c语言或c++语言的编译器语言编写,并以目标文件的形式存储在hdd213中,该目标文件可以由cpu211直接执行。

最上层是包括在java执行环境330中运行的应用的应用层。最上层包括插件应用301和设备控制应用304,并且还包括本地客户端331和连接库332。使用由设备控制库309中的相应一个或连接库332提供的api(应用程序接口)来操作最上层,从而提供各种功能。注意,可以通过更新图像形成装置101的固件来扩展设备控制应用304的功能。

在本实施例中,插件应用301和设备控制应用304的程序可以用java语言编写并以能够由java虚拟机解释的java字节代码格式存储在hdd213中。为此,cpu211执行java虚拟机的程序,从hdd213读出java字节代码格式的程序,并使java虚拟机执行该程序,从而通过最上层的各应用实现处理。

如上所述,使用诸如java语言的编程语言的原因之一是编写程序的简便性。由于在java中存储器区域的管理是自动进行的,因此开发人员无需管理存储器区域。为此,能够减少开发人员在编写程序时的劳动,并且期望能够提高开发效率。

(设备控制库309)

接下来,将更详细地描述设备控制库309。设备控制库309静态地或动态地链接到单功能插件应用302或稍后将描述的设备控制应用304中的相应一个。各个设备控制库309基于最上层的各应用的指令来使用最下层的操作系统317。另外,各个设备控制库309可以对本地连接库314请求图像处理的执行。作为示例,设备控制库309由打印库310、复印库311、扫描存储库312和扫描发送库313形成。

打印库310提供用于使用打印机控制驱动器318的功能来控制打印作业的api。打印作业指示基于存储在hdd213中的打印数据或者经由网络i/f214从外部设备(信息处理终端103或104等)接收的打印数据,在打印机202处执行打印的一系列处理。复印库311提供用于使用扫描器控制驱动器319和打印机控制驱动器318的功能来控制复印作业的api。复印作业是用于在扫描器203处扫描原稿图像并基于所获得的图像数据在打印机202处打印的一系列处理。

扫描存储库312提供用于使用扫描器控制驱动器319的功能来控制扫描存储作业的api。扫描存储作业是进行在扫描器203处扫描原稿图像、将获得的图像数据转换为打印数据或一般格式的数据、以及将数据存储在hdd213或外部存储设备(例如连接到扩展i/f218的usb存储器)中的一系列处理。注意,一般格式是诸如pdf(可移植文档格式)或jpeg(联合图像专家组)等的数据格式。

扫描发送库313提供用于使用扫描器控制驱动器319和网络i/f控制驱动器320的功能来控制扫描发送作业的api。扫描发送作业是用于进行在扫描器203扫描原稿图像、将获得的图像数据转换成一般格式的数据、以及经由网络i/f214将数据发送到外部设备的一系列处理。在扫描发送作业中,数据经由网络i/f214发送到例如是诸如服务器105的文件服务器,或者通过电子邮件发送到诸如信息处理终端103或104的外部设备。

(图像处理控制器340)

接下来,将更详细地描述图像处理控制器340。图像处理控制器340包括本地连接库314、本地服务器315和本地模块316。在从设备控制库309接收到图像处理执行请求时,本地连接库314将请求内容传输到连接库332。在从java执行环境330(稍后描述)中运行的应用接收到请求时,本地服务器315提供执行本地模块316的功能。本地模块316是能够执行各种图像处理的软件。

如图3所示,在本地控制进程350上执行本地服务器315和本地模块316。本地控制进程350是具有与除了本地服务器315和本地模块316之外的其他软件的逻辑存储器空间分开的逻辑存储器空间的程序执行单元。注意,该存储器区域分开也可以通过其他方法(例如,使用通用os(操作系统)的进程机制的方法)实现。

根据本实施例,如上所述,本地控制进程350的逻辑存储器空间独立于其他软件的逻辑存储器空间。因此,即使在本地控制进程350上的存储器操作中发生错误,也能够防止这样的错误影响用于请求在本地服务器315上执行图像处理的一侧上的应用的逻辑存储器空间。即,能够防止在用于请求在本地服务器315上执行图像处理的一侧上的应用的运行中的错误。

(设备控制应用304)

接下来,将更详细地描述设备控制应用304。作为示例,设备控制应用304包括打印应用305、复印应用306、扫描存储应用307和扫描发送应用308。设备控制应用304是图像形成装置101中的常驻型应用(residentapplication)。

打印应用305、复印应用306、扫描存储应用307和扫描发送应用308分别具有画面信息321、画面信息322、画面信息323和画面信息324。cpu211可以基于画面信息321、画面信息322、画面信息323和画面信息324,经由操作单元i/f217在操作单元204上显示相应的操作画面。cpu211可以经由显示的操作画面接受来自用户的指令。

在检测到用户对操作单元204进行操作以改变设备控制应用304的设置时,cpu211将改变内容写入hdd213中。在检测到用户对操作单元204进行操作以请求作业执行时,cpu211(各设备控制应用304)调用相应的一个设备控制库309的api,从而开始执行该作业。另外,cpu211(各设备控制应用304)可以对连接库332请求图像处理的执行。

例如,打印应用305调用打印库310的api以执行打印作业。复印应用306调用复印库311的api以执行复印作业。扫描存储应用307调用扫描存储库312的api以执行扫描存储作业。扫描发送应用308调用扫描发送库313的api以执行扫描发送作业。

(插件应用301)

接下来,将更详细地描述插件应用301。与作为常驻型应用的设备控制应用304不同,插件应用301是可以作为插件安装到图像形成装置101或从图像形成装置卸载的应用。通过使用远程ui(用户界面)等将插件应用301安装在图像形成装置101中。注意,在诸如信息处理终端103或104的外部设备中,远程ui是用于从web浏览器访问图像形成装置101并且使得能够进行对图像形成装置101的情形的确认、打印作业的操作和各种设置的机构。

插件应用301包括单功能插件应用302和图像处理插件应用303。在插件应用301(单功能插件应用302和图像处理插件应用303)中,各个操作所需的程序被打包。插件应用301可以被单独启动或停止。

下面将描述从插件应用301的安装启动、停止和卸载的一系列操作。在使用远程ui等检测到插件应用301的安装时,cpu211将插件应用的信息存储在hdd213中。接下来,在检测到对插件应用301的启动指令时,cpu211指示启动插件应用。当插件应用301被启动时,可以提供插件应用的功能。

之后,在检测到对插件应用301的停止指令时,cpu211指示停止插件应用301。另外,在检测到对插件应用301的卸载指令时,cpu211通过从hdd213中删除插件应用301的信息来卸载插件应用。注意,可以从例如远程ui或操作单元204执行cpu211检测到的各指令。然而,可以通过除了上述方法的其他方法执行指令。

(单功能插件应用302)

接下来,将更详细地描述单功能插件应用302。单功能插件应用302具有画面信息325。基于画面信息325,cpu211可以经由操作单元i/f217在操作单元204上显示相应的操作画面。另外,cpu211可以经由显示的操作画面接受来自用户的指令。

单功能插件应用302可以通过调用由设备控制库309提供的api向用户提供与设备控制应用304不同的功能或画面。单功能插件应用302可以通过组合设备控制库309来提供多个功能。例如,单功能插件应用302可以提供复印给定图像并将通过扫描获得的图像数据发送到保持该插件应用本身的目的地数据库中的特定目的地的功能。

注意,单功能插件应用302不需要具有图像处理功能。在这种情况下,不对图像处理进行设置。当设备控制库309从单功能插件应用302接收打印数据或转换成一般格式的图像数据时,设备控制库309指示操作系统317控制必要的处理,从而使作业被执行。

(图像处理插件应用303)

接下来,将更详细地描述图像处理插件应用303。图像处理插件应用303是用于提供特定图像处理的应用。注意,图像处理插件应用303可以由用于执行不同图像处理操作的多个应用形成。例如,能够对输入图像执行例如图像格式转换、歪斜校正、表单识别和ocr处理的多个应用可以安装在图像形成装置101中,作为图像处理插件应用303。在本实施例中,安装了与图7中的扩展处理插件1至3相对应的三个应用作为图像处理插件应用303。

图像处理插件应用303可以经由连接库332从单功能插件应用302(扩展应用702)或设备控制应用304接受图像处理请求(图像处理执行请求)。另外,图像处理插件应用303还可以经由本地连接库314和连接库332接受来自设备控制库309(本地应用701)的图像处理请求。

图像处理插件应用303根据接受的图像处理请求执行图像处理。图像处理请求可以包括处理对象的图像数据和处理参数。另外,图像处理插件应用303可以根据需要基于图像处理请求使用本地客户端331的图像处理功能。注意,图像处理插件应用303本身不需要具有图像处理功能。即使图像处理插件应用303不具有图像处理功能,图像处理插件应用303也可以通过使用本地客户端331来使用本地模块316的图像处理功能。在本实施例中,对应于扩展处理插件3(图7)的图像处理插件应用303经由本地客户端331使用本地模块316(本地模块703)的图像处理功能。

使图像处理插件应用303使用本地模块316的原因之一是图像处理时的处理速度高速化。更具体地,当执行图像处理时,需要大量执行复杂的数值算术运算,并且处理过程中需要大容量存储器。在这种情况下,不使用采用如java一样的用于经由虚拟机进行处理的编程语言的处理系统,而是使用采用用于生成由cpu直接执行的目标文件的编译器语言的处理系统,能够预期更高的处理速度。

以这种方式,根据本实施例的图像形成装置101包括本地客户端331和本地服务器315,作为用于从在java执行环境330中执行的程序调用在c/c++执行环境中执行的程序的机构。本地客户端331在java执行环境330中操作,并且本地服务器315在c/c++执行环境中操作。注意,java执行环境330是对应于第一编程语言(java语言)的第一执行环境的示例,并且c/c++执行环境是对应于第二编程语言(c/c++语言)的第二执行环境的示例。

根据来自在java执行环境330中执行的图像处理插件应用303的请求,本地客户端331发送用于请求使用在c/c++执行环境中执行的本地模块316执行图像处理的处理请求。本地服务器315通过接收从本地客户端331发送的处理请求并根据接收到的处理请求执行本地模块316来执行图像处理。该本地服务器315在本地控制进程350上操作,该本地控制进程350具有独立于java执行环境330使用的存储器空间的存储器空间。

根据本实施例,如上所述,本地控制进程350的逻辑存储器空间独立于其他软件的逻辑存储器空间(java执行环境330中使用的逻辑存储器空间)。因此,即使在本地控制进程350上的存储器操作中发生错误,也能够防止这样的错误影响用于请求在本地服务器315上执行图像处理的一侧的应用的逻辑存储器空间。即,能够防止在用于请求在本地服务器315上执行图像处理的一侧的应用的运行中的错误。

<图像处理插件应用的处理过程>

图4是示出根据本实施例的图像处理插件应用303的处理过程的流程图。通过cpu211将存储在hdd213中的程序加载到ram212中并执行该程序来实现图4中的各个步骤的处理。该流程图示出了在图像处理插件应用303接受来自请求源的图像处理请求的情况下使用本地模块316的图像处理功能的处理过程。如上所述,图像处理请求的请求源(发送源)是在java执行环境330中运行的单功能插件应用302和设备控制应用304,或者在c/c++执行环境中运行的设备控制库309。

注意,在启动图像形成装置101时,cpu211启动java执行环境330中的本地客户端331并启动c/c++执行环境中的本地控制进程350。另外,cpu211在本地控制进程350上启动本地服务器315。因此,当图像处理插件应用303接受图像处理请求时,本地客户端331和本地服务器315已经被操作,所以设置从图像处理插件应用303的使用的状态。

在从请求源接收到图像处理请求时,图像处理插件应用303根据图4所示的过程开始处理。首先,在步骤s401中,图像处理插件应用303验证在接收到的图像处理请求中包括的用作图像处理(信息处理)的对象的图像数据。在该步骤中,例如,确认图像数据的图像格式和图像大小。请注意,可以根据需要对其他项目进行验证。接下来,在步骤s402中,图像处理插件应用303验证在接收到的图像处理请求中包括的关于图像处理(信息处理)的处理参数。在该步骤中,确认对例如由处理参数指示的ocr语言(日语,英语等)的指定。

接下来,在步骤s403中,根据通过图像处理请求所请求的图像处理的内容,图像处理插件应用303规定要使用的本地模块316的库名称和函数名称。库名称表示目标文件的文件名,例如,或windows中使用的动态共享库的文件名(扩展名为“.so”或“.dll”的文件名)。函数名称表示通过库名称规定的目标文件中包含的函数的名称。以这种方式,图像处理插件应用303基于从图像处理请求的请求源接受的图像数据和处理参数,规定本地服务器315要使用的库和函数。

在规定库名称和函数名称之后,在步骤s404中,图像处理插件应用303准备输入到要使用的本地模块316的图像数据。在步骤s405中,准备输入到要使用的本地模块316的处理参数。

之后,在步骤s406中,图像处理插件应用303向本地客户端331发送包括分别在步骤s404和s405中准备的图像数据和处理参数的图像处理请求。图像处理请求包括在步骤s403中规定的库名称和函数名称,作为对图像处理中使用的库和函数的指定。因此,图像处理插件应用303请求本地客户端331执行图像处理。在接受该请求时,本地客户端331根据预定方法向本地服务器315发送图像处理请求。注意,本地服务器315根据图像处理请求,通过图5所示的过程(稍后描述)执行图像处理。

接下来,在步骤s407中,图像处理插件应用303确定是否从本地客户端331接收到图像处理执行结果。如果图像处理插件应用303经由本地客户端331从本地服务器315接收到基于图像处理请求的图像处理的执行结果,则使处理前进到步骤s408。注意,如稍后将描述的,如果完成了由正在本地控制进程350上操作的本地服务器315进行的图像处理,则将图像处理执行结果从本地服务器315发送到本地客户端331。

在步骤s408中,图像处理插件应用303准备表示要返回到图像处理请求源的图像处理执行结果的数据,将其发送到请求源,并结束处理。注意,要返回的数据根据所请求的图像处理的内容而改变。例如,如果请求图像格式转换,则转换后的图像数据包括在要返回的数据中。另外,如果请求表单识别,则诸如表单类型之类的元数据包括在要返回的数据中。

<本地服务器的处理过程>

图5是示出根据本实施例的本地服务器315的处理过程的流程图。通过cpu211将存储在hdd213中的程序加载到ram212中并执行该程序来实现图5中的各个步骤的处理。

如果本地服务器315被启动,则本地服务器315根据图5中所示的过程开始处理。首先,在步骤s501中,本地服务器315进行准备处理以等待来自本地客户端331的处理请求。在本实施例中,本地服务器315通过tcp/ip通信从本地客户端331接收处理请求。为此,本地服务器315生成用于与本地客户端331进行tcp/ip通信的服务器套接字(seversocket),并等待通过所生成的套接字的通信。注意,可以执行使用ipc(进程间通信)消息队列等代替tcp/ip通信的等待。

如果步骤s501中的准备处理完成,则在步骤s502中本地服务器315等待来自本地客户端331的处理请求。本地服务器315确定是否接收到来自本地客户端331的处理请求。如果本地服务器315检测到处理请求的接收,则使处理从步骤s502前进到步骤s503。

在步骤s503中本地服务器315确定所接收的处理请求的内容是图像处理请求还是关机请求。如果处理请求的内容是关机请求,则本地服务器315将处理从步骤s503前进到步骤s510,并且执行结束处理请求的等待的结束处理,从而结束处理。另一方面,如果接收到的处理请求的内容是图像处理请求,则本地服务器315使处理从步骤s503前进到步骤s504。

在步骤s504中本地服务器315确定在本地模块316中是否存在与接收到的图像处理请求中包括的库名称相对应的库(在图像处理请求中指定的库)。如果不存在指定的库,则本地服务器315将处理前进到步骤s509,向本地客户端331通知生成图像处理错误,并且将处理返回到步骤s502。之后,本地服务器315再次等待来自本地客户端331的处理请求。另一方面,如果存在指定的库,则本地服务器315使处理前进到步骤s505。

在步骤s505中,本地服务器315将本地模块316的库当中的指定库从hdd213加载到ram212中。之后,在步骤s506中,本地服务器315确定在加载到ram212的库中是否存在与接收到的图像处理请求中包括的函数名称相对应的函数(在图像处理请求中指定的函数)。如果不存在指定的函数,则本地服务器315将处理前进到步骤s509,向本地客户端331通知生成图像处理错误,然后将处理返回到步骤s502。之后,本地服务器315再次等待来自本地客户端331的处理请求。另一方面,如果存在指定的函数,则本地服务器315使处理前进到步骤s507。

在步骤s507中,本地服务器315在指定函数的变量(argument)中指定处理对象的图像数据和处理参数,并执行该指定函数,从而根据图像处理请求执行图像处理。另外,如果完成该函数的执行,则在步骤s508中本地服务器315将图像处理执行结果发送到请求源(本地客户端331),并且将处理返回到步骤s502。之后,本地服务器315再次等待来自本地客户端331的处理请求。

如上所述,在本实施例中,本地服务器315在c/c++执行环境中操作,并根据来自本地客户端331的处理请求执行本地模块316(第二程序),从而执行图像处理。本地服务器315在本地控制进程350上操作,本地控制进程使用与java执行环境330中使用的存储器空间相独立的存储器空间。

根据本实施例,能够防止由本地控制进程350上的本地服务器315引起的存储器服务器中的错误影响用于请求本地服务器315执行图像处理的一侧上的应用的运行。例如,即使当本地模块316根据来自设备控制应用304的请求操作时发生关于存储器操作的错误,其影响也局限于本地控制过程350。因此,即使这样的错误发生,设备控制应用304也能够防止对例如由ram212保持的发送目的地数据库的影响以及对由设备控制库309进行的打印控制的影响。以这种方式,能够在以不同编程语言开发的程序之间防止在一个程序中的存储器操作中的错误对其他程序的运行的影响。

[第二实施例]

接下来,现在将描述第二实施例。注意,将省略对与第一实施例共同的部分的描述,并且下面将描述与第一实施例的不同之处。

在第一实施例中,tcp/ip通信用于从本地客户端331到本地服务器315的图像处理请求的发送,并且该图像处理请求包括处理对象的图像数据和处理参数。因此,随着处理对象的图像数据的大小增加,可以延长用于图像处理请求的通信时间(图像数据的传输所需的时间)。

例如,假设处理对象的图像数据的大小是80mb,通信传输吞吐量是100mbps,并且图像处理后的图像数据的大小等于处理对象的图像数据的大小。在这种情况下,图像形成装置101中的本地客户端331和本地服务器315之间的图像数据的传输需要大约0.2秒。如果图像处理在约0.5秒内完成,则为了传输图像数据,需要图像处理所需的时间的约40%的时间,并且与图像处理请求相对应的整个处理的开销的比率可以是一个不容忽视的比率。

在本实施例中,本地客户端331不向本地服务器315发送通过在图像处理请求中包括图像数据本身而获得的数据,并且本地客户端331通过包括能够在图像处理请求中规定图像数据的信息(识别信息)来发送数据。例如,hdd213的文件路径(例如“/var/docs/01/doc00001.gif”)、由扫描存储库312管理的图像数据的id等,可以用作能够规定图像数据的信息。通常,这种信息的大小远小于图像数据的大小。因此,通过上述处理,可以缩短本地客户端331和本地服务器315之间的通信时间。

如上所述,本地客户端331在图像处理请求中不包括用作图像处理对象的图像数据,但是在图像处理请求中包括用于由本地服务器315规定图像数据的信息和处理参数,并将该信息与处理参数一起发送。因此,图像处理插件应用303能够缩短使用本地模块316的图像处理功能的处理时间。结果,能够以更高的速度执行使用本地模块316的图像处理。

[第三实施例]

接下来,将描述第三实施例。注意,将省略对与第一实施例共同的部分的描述,并且下面将描述与第一实施例的不同之处。

在第一实施例中,在接受来自本地客户端331的图像处理请求时,本地服务器315调用与所请求的图像处理相对应的函数,并返回函数执行结果作为图像处理执行结果。之后,将本地服务器315设置处于再次接受处理请求的状态。如上所述,本地服务器315按照接受图像处理请求的顺序执行所请求的图像处理。在这种情况下,如果生成了多个图像处理请求,则本地服务器315不能开始与下一图像处理请求相对应的图像处理,直到与先前接收的图像处理请求相对应的图像处理完成为止。

例如,在本地服务器315根据来自扫描发送应用308的请求进行用于生成要传输到服务器105的图像数据的图像处理的同时,用户可以使用操作单元204来操作复印应用306。在这种情况下,本地服务器315将不开始下一图像处理(从复印应用306请求的图像处理),直到从扫描发送应用308请求的图像处理完成为止。因此,使用复印应用306的用户必须等待,从而降低了用户的可用性。

因此,在该实施例中,为了并行地执行与多个图像处理请求相对应的多个图像处理操作,本地服务器315在每次接受图像处理请求时新生成用于进行图像处理的线程。该线程是使用本地控制进程350的存储器空间的新线程。然后,本地服务器315并行地进行用于等待图像处理请求的处理和对应于所接受的图像处理请求的图像处理。

图6是示出根据本实施例的本地服务器315的处理过程的流程图。通过cpu211将存储在hdd213中的程序加载到ram212中并执行该程序来实现图6中的各个步骤的处理。

步骤s501至s503与第一实施例中的相同。注意,在步骤s503中,如果处理请求的内容被确定为图像处理请求,则本地服务器315使处理前进到步骤s601。在步骤s601中,本地服务器315新生成(启动)用于进行与接收到的图像处理请求相对应的图像处理的线程。

在步骤s601中生成新线程之后,本地服务器315将使用新线程的处理前进到步骤s504,并且同时将使用原始线程的处理返回到步骤s502。因此,与第一实施例中一样,本地服务器315使用新线程执行从步骤s504开始的处理。另一方面,与使用新线程的处理并行地,本地服务器315使用原始线程,如第一实施例中那样在步骤s502中等待(接收)来自本地客户端331的新处理请求。因此,在本实施例中,新线程是用于进行从步骤s504开始的处理的线程,并且原始线程是用于等待新处理请求的线程。

根据本实施例,即使本地服务器315接收到多个图像处理请求,也能够并行地执行与这些请求相对应的图像处理操作,从而缩短处理时间。因此,能够为用户提高可用性。

[第四实施例]

接下来,将描述第四实施例。将不描述与第三实施例中相同的部分,而是描述与第三实施例的不同之处。

在第三实施例中,每当本地服务器315接收到图像处理请求时,新生成用于进行图像处理的线程,并且可以同时接受多个图像处理请求。与此相对照,在第四实施例中,每当本地服务器315接受图像处理请求时,本地服务器315替代在步骤s601中生成新线程,而是生成与本地控制进程350不同的新进程。该进程使用与java执行环境330中使用的存储器空间和本地控制进程350中使用的存储器空间相独立的存储器空间。另外,本地服务器315对所生成的进程进行从步骤s504开始的处理。

如上所述,根据本实施例,在步骤s601的处理中,本地服务器315不启动新线程而是启动新进程,并且在该新进程中进行与图像处理请求相对应的图像处理。另一方面,本地服务器315在步骤s502中使用原始进程等待来自本地客户端331的新处理请求。

根据本实施例,即使在同时执行的图像处理操作之间,也可以将要使用的逻辑存储器空间彼此分开。因此,能够防止给定图像处理中的存储器操作中的错误影响其他图像处理。因此,能够进一步提高图像形成装置101的操作稳定性。

[其它实施例]

本发明的(多个)实施例也可以通过系统或装置的计算机来实现,该系统或装置的计算机读出并执行在存储介质(其也可被完整地称为“非暂态计算机可读存储介质”)上记录的计算机可执行指令(例如,一个或更多个程序),以执行上述(多个)实施例中的一个或更多个的功能,并且/或者,该系统或装置的计算机包括用于执行上述(多个)实施例中的一个或更多个的功能的一个或更多个电路(例如,专用集成电路(asic));以及本发明的(多个)实施例也可以由该系统或者装置的计算机执行的方法来实现,例如,所述方法从存储介质读出并执行计算机可执行指令,以执行上述(多个)实施例中的一个或更多个的功能,并且/或者,控制所述一个或更多个电路以执行上述(多个)实施例中的一个或更多个的功能。所述计算机可以包括一个或更多处理器(例如,中央处理单元(cpu)、微处理单元(mpu)),并且可以包括分开的计算机或分开的处理器的网络,以读出并执行所述计算机可执行指令。所述计算机可执行指令可以例如从网络或存储介质被提供给计算机。例如,存储介质可以包括如下中的一个或更多个:硬盘、随机存取存储器(ram)、只读存储器(rom)、分布式计算系统的存储器、光盘(例如,压缩盘(cd)、数字多功能光盘(dvd)或蓝光光盘(bd)tm)、闪速存储器装置、存储卡等等。

本发明的实施例还可以通过如下的方法来实现,即,通过网络或者各种存储介质将执行上述实施例的功能的软件(程序)提供给系统或装置,该系统或装置的计算机或是中央处理单元(cpu)、微处理单元(mpu)读出并执行程序的方法。

虽然参照示例性实施例描述了本发明,但是,应当理解,本发明不限于公开的示例性实施例。下述权利要求的范围应当被赋予最宽的解释,以涵盖所有这类修改以及等同的结构和功能。

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