程序生成方法

文档序号:6649869阅读:234来源:国知局
专利名称:程序生成方法
技术领域
本发明涉及一种程序生成方法,用于提高程序的开发效率以及程序的执行效率。
背景技术
近来,一种在一个机箱内包括打印机、复印机、传真机、扫描仪等功能的成像装置(在下文中尤其指复合机器)已经为公众所周知。该复合机器的机箱内包括显示部分,打印部分以及图像拾取部分等等。在该复合机器中,包括三段分别对应于打印机、复印机以及传真机的软件,因此该复合机器能够通过软件切换来分别实现打印机、复印机、扫描仪以及传真机的功能。
根据这种常规复合机器,向用户提供操作面板以便操作该复合机器。该操作面板包括用来显示操作屏幕以及执行触摸操作的操作显示部分(LCD面板)。根据该常规复合机器,由于提供给用户的性能是预先确定的,因此用户对复合机器进行的操作并不会有很大的变化。这样,就不需要按客户具体要求定制在操作显示部分上的显示屏幕以及触摸操作。因此,并不需要在常规复合机器上提供用于操作显示部分的定制性能。
由于常规复合机器上具有分别实现打印机、复印机、扫描仪以及传真机功能的软件段,因此需要大量的时间来开发软件。这样,本申请人开发出一种包括硬件资源的成像装置(复合机器),多种应用程序,以及一个包括在应用程序与硬件资源之间提供各种控制服务的平台。该硬件资源例如显示部分、打印部分以及图像拾取部分都被用于成像处理过程。这些应用程序为用户执行对应于打印机、复印机以及传真机等的服务。该平台包括多种控制服务,该服务程序用来进行对硬件资源的管理与执行控制,这至少对于两个应用程序来说是必须的,并且进行成像处理。这种由控制服务执行的处理被称为系统方处理。
根据这样的新复合机器,分别提供所述应用程序以及控制服务。这样,在该复合机器发货之后,用户或者第三方就可以开发出新的应用程序安装到该复合机器上。通过这种方式,可以实现各种不同的功能。
因此,需要提供不同于预定性能的性能,以便在操作显示部分对新的应用程序进行操作。这样,就需要定制操作显示部分的操作。这对于常规复合机器来说并不是一个问题,因为常规复合机器在发货之后无法再安装外部应用程序。
在开发外部应用程序时,可以考虑通过写入源代码来定制操作显示部分。也就是,在开发外部应用程序本身的同时,也开发出与显示部分的触摸操作相关的执行处理过程。在这种情况下,从程序开发效率的角度上看,希望在校验复合机器中应用程序操作的同时开发外部应用程序。在这种情况下,每次在应用程序中出现问题时,都需要对源代码进行修改、重编译、重链接,并重新将应用程序安装到复合机器中去,接着,需要再一次对程序操作进行校验。依照该过程,程序开发的效率不会很高。
这一问题并不仅限于定制操作显示部分。一般地,在通过使用复合机器来校验程序的同时,通过使用PC来生成程序的效率很低。另外,为了执行一个应用程序,需要将在PC中开发出的应用程序存储到复合机器中去。这样,除了可以高效地开发应用程序之外,为了方便用户还需要有效地存储以及执行复合机器中的应用程序。

发明内容
本发明的一个目的就是提供一种成像装置以及一种信息处理装置,用以提高开发应用程序的效率以及执行应用程序的效率。
上述的目的可以通过一个成像装置来实现,包括程序获取部分,用于将输入程序的屏幕数据发送至客户终端,并从该客户终端接收程序;以及程序执行部分,用来执行由程序获取部分接收到的程序。
根据本发明,可以从客户终端的输入屏幕上增加或修改程序,并且该程序可以不经过编译就能够执行。这样,可以很容易地测试程序的操作。因此,开发程序会很简单。
上述目的也可以通过一个用于开发能够在成像装置上执行的程序的信息处理装置来实现,所述信息处理装置包括执行部分,用于解释以及执行程序;仿真程序,用于根据程序指令来使信息处理装置执行对应于由成像装置执行的处理。
根据本发明,由于仿真程序能够使得信息处理装置模拟成像装置,并可以在信息处理装置上执行程序测试,因此大大提高了程序开发效率。
上述的目的也可以通过一个包括用于执行关于图像信息的系统方处理的服务模块来实现,其中该应用程序可以被加入到与服务模块分离的成像装置,所述成像装置包括虚拟机器,用于执行应用程序;以及应用程序管理部分,用于管理由虚拟机器执行的应用程序。
根据本发明,在虚拟机器上执行的应用程序可以在成像装置上执行。一般地,由于该虚拟机器吸收了机器模型之间的不同之处,因此可以很容易在成像装置上执行该应用程序。
另外,根据本发明,提供了一种在其中包括在程序中执行的实用程序库的信息处理装置,其中该程序包括嵌套模块,该嵌套模块中的每个模块都是根据状态转换模型构成的,其中,在状态转换模型中,根据以下内容来确定程序的操作程序的第一状态,该状态下程序的事件,当在该状态下出现该事件时执行的事件函数,以及在该事件函数被执行之后由第一状态变换来的第二状态。
其中该实用程序库包括状态转换模型装入函数,用来将各个模块的区域指定给由多个模块共享的共享变量。
根据本发明,由多个模块共享的共享变量可以安全地使用,并且可以避免由变量的值导致的失败,因此该信息处理装置操作稳定。
上述目的也可以通过一种程序生成方法来实现,所述程序生成方法包括将实用程序库与应用程序相链接的步骤;其中所述程序包括嵌套模块,该嵌套模块中的每个模块都是根据状态转换模型构成的,
其中,在状态转换模型中,根据以下内容来确定程序的操作程序的第一状态,该状态下程序的事件,当在该状态下出现该事件时执行的事件函数,以及在该事件函数被执行之后由第一状态变换来的第二状态。
其中该实用程序库包括状态转换模型装入函数,用来将各个模块的区域指定给由多个模块共享的共享变量。


本发明的其它目的、特征以及优点将随着对附图的更为详细的说明而变得更加明确,其中图1为根据第一实施例的复合机器的主结构以及网络结构的方框图;图2为根据第一实施例的复合机器100的方框图;图3示出了根据第一实施例的复合机器100的硬件结构的示例;图4为接收请求消息的复合机器中处理过程的流程图;图5示出了debug.cgi的操作流程图;图6为当编程屏幕201中的存储按钮、执行设置按钮以及测试执行按钮中的一个被点击时,编程服务程序132的操作流程图。
图7为编程屏幕201的示例;图8为根据第一实施例的定制程序的示例;图9为直接存储在定制中的定制程序名称的示例;图10为按键相关表格的示例;图11为从复合机器100打开开始至执行定制程序的过程流程图;图12为装入设置文件211的示例;图13为第二实施例中复合机器主结构的方框图;图14为第二实施例的编程屏幕1101的示例;图15为根据第三实施例复合机器1300的功能性结构方框图;图16为从打开复合机器1300至完成指定按钮为止的过程流程图;图17为在第三实施例中使用的装入设置文件211的示例;图18为按钮设置屏幕的示例;图19示出了包括了第四实施例中的复合机器1700的网络结构;图20为复合机器1700的功能性方框图;图21为根据第四实施例的装入设置文件的示例;
图22为根据第五实施例的复合机器的功能性方框图;图23为通过使用PC 200上的Visual Basic开发环境来开发VB应用程序的示例;图24为VB应用程序的示例;图25为VB应用程序的示例;图26为第六实施例复合机器1900的方框图;图27示出了PC中Java开发环境以及复合机器1900中Java执行环境的结构;图28为复合机器1900中的Java执行环境;图29为包括Web服务器的网络结构;图30为Java应用程序开发的流程;图31为Java开发环境的另一示例;图32为由仿真程序在PC上显示出来的操作面板屏幕;图33为当仿真程序执行载入程序功能时的屏幕;图34为操作面板类的分层结构;图35为解释生成一个窗口的类的图;图36为采样Java应用程序;图37为图36中所示的Java程序的执行结果;图38为Java应用程序从上传至下载的示意图;图39为载入程序处理过程的流程图;图40为在复合机器上显示的载入程序的屏幕;图41为载入应用程序窗口;图42为由载入程序显示出来的Java应用程序列表;图43为改变更新时间间隔的窗口;图44不载入当前应用程序的窗口;图45为连接应用程序的过程;图46示出了根据第七实施例的外部应用程序117中的进程结构;图47为外部应用程序具有状态1和状态2时的状态转换;图48为外部应用程序中具有嵌套结构的模块的示例;图49为外部应用程序源代码的定义部分的示例;图50为外部应用程序源代码的函数定义部分的示例;
图51为状态转换模型装入函数StMachine()的处理流程图;图52为共享变量区域的分配状态;图53为状态转换模型装入函数StMachine()的另一个处理过程流程图。
具体实施例方式
下面,将描述根据本发明优选实施例的成像装置。
(第一实施例)图1为成像装置(在下文中称作“复合机器”)的主结构以及网络结构的方框图。第一实施例的复合机器100与因特网相连。在该结构中,可以从一个客户终端,例如与因特网相连的PC(个人计算机)输入用于复合机器的定制程序,并且可以通过PC调试程序。
如图1所示,该复合机器100通过因特网220与PC 200相连,其中采用TCP/IP通信协议。该复合机器100包括复合机器初始化部分129,程序装入部分131,编程服务程序132,解释程序134,NCS(网络控制服务)128,HTTPD(超文本传送协议守护程序)106,共享存储器105以及HDD 103。
该编程服务程序132在PC 200的网络浏览器上显示出编程屏幕201,并且从该屏幕201上接收定制程序,其中该编程屏幕201是一个由http文件构成的网页。另外,该编程服务程序132在被用作HDD 103的定制区域的定制目录212中存储从PC中输入的定制程序。而且,该编程服务程序132在后面将提到的装入设置文件211中注册定制程序,使得该定制程序能够在复合机器100上执行。
http文件根据http协议在编程服务程序132与PC 200的网络浏览器之间传送。因此,该编程服务程序132具有Web服务器(http服务器)的功能。
使用能够被解释程序解释的语言来写入定制程序。具体地,该定制程序为UNIX的外壳脚本。
该解释程序134逐步解释并执行定制程序。在该实施例中,解释程序134为执行外壳脚本的命令解释程序(bsh,csh等)。该命令解释程序134与UNIX操作系统的内核程序135相分离。
如果HDD 103的诊断结果正常,则该程序装入部分131就会装入已被安装在HDD 103中的外部应用程序117。另外,该程序装入部分131也可以装入存储在存储介质,例如IC卡上的外部应用程序。
该复合机器初始化部分129是一个装在一般操作系统OS 121中的初始化过程。该复合机器初始化部分129装入控制服务程序、应用程序103(不包括外部应用程序)以及程序装入部分131。
该NCS 128通过网络控制通信,并且通知该编程服务程序132其已经从httpd 106接收到了一个请求消息。
该httpd 106是一个包括在操作系统中的过程(端口监控程序)。该httpd 106一直监视端口80接收请求消息,并发出响应消息。该请求消息以及响应消息的结构与一般http协议的消息是一样的,其中各个消息包括一个用html格式描述的消息主体。该httpd 106通知NCS 128其已经从因特网接收了一个请求消息,并将其存储在共享存储器105中。
该共享存储器105用于执行httpd 106与编程服务程序132之间的进程间通信。通过该共享存储器来发送以及接收请求消息以及响应消息。
该HDD 103存储装入设置文件211,并将定制程序存储在定制目录212中。
该PC 200为编程服务程序也就是服务器的客户终端。网络浏览器在PC200上运行。该网络浏览器在PC 200的显示器上显示出编程屏幕201或者其它屏幕,其中使用http协议从编程服务程序132中发送出编程屏幕。用户可以在Web浏览器上输入数据。
下面,将描述该实施例中复合机器100的功能性结构。图2为复合机器100的方框图。如图2所示,该复合机器100包括硬件资源和软件组110。该硬件资源包括黑白行式打印机(B&W LP)101,彩色激光打印机102,硬盘驱动器103,以及例如扫描仪、传真机、硬盘、存储器(RAM、NV-RAM、ROM等等)的其它硬件资源104以及网络接口。软件组110包括平台120、应用程序130、复合机器初始化部分129、程序装入部分131、以及编程服务程序132。
该平台120包括一个控制服务程序,用来解释来自应用程序的处理请求,以便向硬件资源发出查询请求;一个系统资源管理器(SRM)123,用来管理一个或多个硬件资源以及仲裁来自控制服务程序的查询请求;以及一个通用OS121。
该控制服务程序包括多个服务模块,分别为系统控制服务程序(SCS)122,引擎控制服务程序(ECS)124,存储器控制服务程序(MCS)125,操作面板控制服务程序(OCS)126,传真机控制服务程序(FCS)127,以及网络控制服务程序(NCS)128。该编程服务程序131位于控制服务层。另外,该平台120还包括能够通过使用预定的功能从应用程序130接收处理请求的应用程序接口(API)。
该通用OS 121为诸如UNIX之类的通用操作系统,并且能够执行平台120上的每个软件段以及并行处理的应用程序130。
SRM 123的进程通过SCS 122进行系统控制以及资源管理。SRM 123的进程对来自使用硬件资源的上层的请求执行仲裁和执行控制,其中硬件资源包括引擎例如扫描仪部分以及打印机部分,存储器,HDD文件,主机I/O(Centronics I/F,网络I/F,IEEE1394I/F,RS232C I/F等等)。
更详细的,由SRM 123确定被请求的硬件资源是否可用(是否它没有被另一个请求使用),并且当该被请求的硬件资源可用时,通知上一层该被请求的硬件资源是可用的。另外,该SRM 123对来自上层的请求执行使用硬件资源的调度,并且直接执行对应于该请求的处理过程(例如,打印机引擎的纸张传输以及成像,分配存储区域,文件生成等等)。
SCS 122的进程进行应用程序的管理,操作部分的控制,系统屏幕的显示,LED显示,资源管理以及应用程序的中断控制。
ECS 124的进程控制硬件资源的引擎,其中该硬件资源包括黑白行式打印机(B&W LP)101,彩色行式打印机(Color LP)102,扫描仪,以及传真机等等。MCS 125获取以及释放图像存储区域,使用硬盘装置(HDD),并压缩以及扩展图像数据。
FCS 127的进程提供了API,用于通过PSTN/ISDN网络从各个应用程序层发送和接收传真,注册/归类由BKM(备份SRAM)管理的各种类型的传真数据,读取传真,接收和打印传真,以及混合发送和接收。
NCS 128的进程提供了用于需要网络I/O的应用程序的一般服务程序。该NCS 128将通过协议从网络中接收到的数据分配给相应的应用程序,并在向网络中发送数据时充当应用程序与网络之间的中介。更具体的,NCS 128还包括服务器端口监控程序例如文件传输协议守护程序(ftpd),超文本传送协议守护程序(httpd),线路协议守护程序(lpd),简单网络管理协议守护程序(snmpd),远程通信网络协议守护程序(telnetd),简单邮件传输协议守护程序(smtpd),以及协议的客户端功能。
OCS 126的进程控制用于在操作者(用户)与机器的控制部分之间传输信息的操作面板。在该实施例的复合机器100中,OCS 126包括一个OCS处理部分以及一个OCS函数库部分。该OCS处理部分从操作面板获取一个表示该按键被按压的按键事件,并将对应于该按键事件的按键事件函数发送给SCS 122。该OSC函数库注册绘图函数以及用来控制操作面板的其它函数,其中该绘图函数被用作根据来自具有控制权的应用程序或控制服务程序的请求在操作面板上输出各种图像。当开发出一种应用程序时,OCS函数库中的函数被链接至一个通过编译应用程序的源代码文件而生成的目标程序,因此生成了一个应用程序的可执行文件。所有的OCS 126都可以被配置为一个进程,或可以被配置成一个OCS库。
应用程序130包括打印机应用程序111,是一种用于打印机的页面描述语言(PDL)和PCL以及页面描述语言(PS)的应用程序;复制应用程序112;用于传真机的传真机应用程序113;用于扫描仪的扫描仪应用程序114;网络文件应用程序115以及处理检查应用程序116。
进程间通信在应用程序130与控制服务程序之间进行,其中调用一个函数,发送一个返回值,并且发送及接收一个消息。通过使用进程间通信,就实现了用于成像处理的用户服务程序,例如复制、打印、扫描以及发送传真。
如上所述,第一实施例的复合机器100包括多个应用程序和多个控制服务程序,并且每个都是一个进程。在各个进程中,会生成多个线程,并且并行执行这些线程。该控制服务程序为应用程序130提供一般的服务。在并行执行进程以及并行执行线程时,对图像信息提供用户服务例如复制、打印、扫描以及发送传真,并在彼此之间执行进程间通信。第三方可以开发出用于复合机器100的外部应用程序,并且在复合机器100的控制服务层的应用层中执行该应用程序。
在第一实施例的复合机器100中,虽然应用程序和控制服务程序的进程都进行操作,可是应用程序和控制服务程序可以是一个简单的进程。另外,应用程序130中的各个应用程序也可以逐个增加或删除。
此外,该复合机器100包括一个安装程序。该安装程序用于将第三者开发的外部应用程序安装到HDD 103中。接着,该程序装入部分131从HDD 103中装入该外部应用程序。该预安装的应用程序例如打印机应用程序、控制服务程序,HDD诊断部分132,以及程序装入部分131被嵌入到闪存中。当向该复合机器供电时,由复合机器初始化部分129装入该预安装程序。
图3示出了该复合机器100硬件结构的一个示例。
该复合机器100包括控制器160、操作面板175、传真控制单元(FCU)176、以及引擎部分177,该部分为硬件资源例如用于成像处理的打印机。该控制器160包括CPU 161、系统存储器162、北桥(NB)163、南桥(SB)164、ASIC 166、本地存储器167、HDD 168、网络接口卡(NIC)169、SD卡槽170、USB装置、IEEE1394装置172、以及Centronics 173。该存储器162、167可以包括例如RAM和/或ROM。该FCU 176以及引擎部分177通过PCI总线178与控制器中的ASIC 166相连。该CPU 161通过读取RAM执行复合机器100中安装的应用程序和控制服务程序。
接下来,将描述复合机器100生成程序的方法。首先,用户在PC 200上装入网络浏览器。接着,用户指定复合机器100中编程屏幕上的一个URL(例如,http//www.xxx.yyy/zzz/debug.htm),因此该PC 200能够访问复合机器的编程服务程序132。该通过网络浏览器访问的编程服务程序132在PC 200的网络浏览器上显示编程屏幕201(debug.htm)。
图7示出了编程屏幕201的一个示例。如图7所示,该编程屏幕201包括程序输入区、索引按钮、上传按钮、存储按钮、删除按钮、测试执行按钮、以及执行设置按钮。
该编程屏幕201是一个以btml格式书写的文件(debug.htm)。该网络浏览器读取文件,使得编程屏幕201能够显示在PC 200上。该编程服务程序执行一个CGI脚本,用来执行响应于从编程屏幕输入的操作的处理过程。另外,该编程服务程序132将处理结果反映到编程屏幕上并将该结果返回给PC 200的网络浏览器。
更具体的,当编程服务程序132接收到一个用来输入定制程序的请求(例如点击操作)时,该编程服务程序执行debug.cgi脚本。虽然在本发明中,编程服务程序通过执行debug.cgi脚本来进行各种处理,但是也可以采用被CGI脚本调用的其它程序来进行各种处理。另外,该编程屏幕可以用XML(可扩展标记语言)格式书写。
该索引按钮是用于指定存储在PC 200的存储区域中的定制程序的按纽。通过按压该索引按钮,PC 200的目录就显示出来了。如果用户指定了一个目录中的定制程序,则该定制程序的文件名称就会显示在文件名称区中。在按下索引按钮时,该PC 200可以指定例如HDD133的复合机器记录区中的一个目录。
通过点击上传按钮,定制程序被上传至复合机器100。该程序输入区为输入定制程序的区域。在程序输入区,可以通过使用输入装置例如PC 200的键盘直接将定制程序输入至PC 200中。另外,还可以通过点击索引按钮来指定目录中已经存在的程序文件来输入定制程序。在debug.htm中,在对应于程序输入区的各行的头部都会描述一个字符串“program_list”。
在上传完定制程序之后,通过点击保存按钮将定制程序保存在定制目录中。通过点击删除按钮,可以删除在输入区中输入的定制程序。
该执行设置按钮用于将定制程序与一个按钮相关联,这样就可以通过按压该按钮在复合机器100上执行存储在定制目录中的定制程序。如果该指定设置按钮被压下,则该编程服务程序132就会为通过按键代码在定制程序中指定的按钮在定制目录的文件中查找按钮,因此该定制程序能够与该按钮相关联。接着,就会生成一个其中定制程序的名称与按钮的按键代码相互关联的表格,并且将该表格存储在HDD 103或闪存中。
该测试执行按钮用来试验性地执行定制程序。
图8为定制程序的一个示例。如图8所示,该定制程序为根据该实施例的一个UNIX外壳脚本。由命令解释程序134逐步地执行输入外壳脚本,其中该命令解释程序134就是UNIX的命令解释程序。这样,就不需要编译以及链接定制程序。
另外,在该外壳脚本中,可以使用指定复合机器的命令。该命令由用于复合机器的程序库提供。如图8所示的脚本示出的示例为通过扫描仪读取一个文档(scanimage),对被压缩为TIFF格式的图像数据进行解压缩(decomp),以及对解压缩后的图像数据进行字符识别处理(ocr)。接着,通过电子邮件将识别结果作为文本数据发送(mail)。在该脚本中,由程序库提供命令“scanimage”,“decomp”以及“ocr”。可以在定制程序中指定用于执行外壳脚本的按钮(按键)。
在PC 200的网络浏览器上显示的编程屏幕(debug.htm)中,当通过点击索引按钮来指定存储在PC 200中的定制程序时,或者是当定制程序被直接输入到程序输入区时,并且上传按钮被点击,则就会从网络浏览器中向复合机器的编程服务程序132中发送一个请求消息。该“debug.htm”就被包括在请求消息的消息主体内,并且debug.htm中还包括用来调用debug.cgi的脚本。这样,当接收到该请求消息时,编程服务程序132就会分析请求消息并执行debug.cgi。
接下来,对接收请求消息的复合机器100的处理过程进行说明。图4示出了该过程。
在步骤S301中,该httpd 106一直监视端口80,并且通过端口80从PC 200中接收请求消息。接着,在步骤S302中,httpd 106读取接收到的请求消息,并且将其写入到共享存储器105中。然后,在步骤S303中,httpd 106通知NCS120它已经接收到了请求消息。
在步骤S304中,该NCS 128通知编程服务132它已经接收到了请求消息。在步骤S305中,该通知触发编程服务程序132来指定共享存储器105并读取请求消息。接着,在步骤S306中编程服务程序132分析请求消息中的信息,并在步骤S307中根据请求消息的消息主体中所描述的信息执行处理过程。如果html描述的消息主体中包括执行CGI程序的信息,则相应的CGI被执行。
接着,在步骤S308中,编程服务程序132通过httpd 106将执行结果作为响应消息返回给PC 200。
下面,将对由编程服务程序132执行的debug.cgi处理过程进行说明。图5为debug.cgi的操作流程图。该编程服务程序132可以包括程序debug.cgi,或者该debug.cgi也可以存在于编程服务程序132的外部。下面属于编程服务程序132包括debug.cgi的情况。
在步骤S401中,编程服务程序132从顶部开始逐行读取debug.htm。接着,在步骤S402中,由编程服务程序通过确定该行是否包括字符串“program_list”来确定该行是否表示程序输入区。
在步骤S403中,如果编程服务程序132确定该行指示程序输入区,则编程服务程序132将该行写入一个程序文件,并且在步骤S404将该行发送到PC 200。
在步骤S405中,由编程服务程序确定该行是否为最后一行。如果该行为最后一行,则处理结束。如果该行不是最后一行,则对下一行执行上面所提到的处理。因此,生成该程序文件并且该程序被显示在PC 200的网络浏览器上。
除了上述提到的方法之外,另外很多的方法将输入到PC 200中的程序发送至复合机器中去。例如,通过按下上传按钮,该PC 200将输入的程序存储在程序文件中并将该程序文件发送至复合机器。如果需要的话,该复合机器将该程序文件存储在一个区域内并将编程文件中的内容发送至PC 200。
如上所述,该从编程屏幕210输入的定制程序被上传到复合机器100中,并且该被上传的定制程序被显示出来。在这之后,该存储按钮、执行设置按钮以及测试执行按钮变得可操作。当一个按钮被点击时,编程服务程序132就会执行下面的进程。
图6为当编程屏幕201中的存储按钮、执行设置按钮以及测试执行按钮中之一被点击时,编程服务程序132的操作流程图。该处理是用同编程服务程序132中的CGI脚本类似的Java脚本书写的。PC 200检测编程屏幕201上的按钮操作作为一个事件,并把该事件发送给编程服务程序。该编程服务程序132执行根据该事件的Java脚本。下面属于Java脚本包括在编程服务程序132中的情况。
在步骤S501中,由编程服务程序132确定被点击按钮的类型。若编程屏幕201中的存储按钮被点击了,则会在步骤S502中由该编程服务程序132通过使用由用户指定的名称将定制程序存储在复合机器100的HDD 103的定制目录中。
图9示出了直接存储在定制中的定制程序名称的示例。如图9所示,HDD103的目录为hdd/xxx/opepane,其中存有定制程序shell1,shell2以及shell3。
在步骤S503中,当编程屏幕201中的执行设置按钮被按下,则该编程服务程序132就会将该定制程序与按钮关联在一起。
图10示出了按键相关表的一个示例。如图10所示,按钮的按键代码与定制程序名称相关。在步骤S504中,当编程屏幕上的检测执行按钮被按下,则该编程服务程序132就会执行定制程序。该测试执行通过由命令解释程序发出执行定制程序的命令来实现。这时,与操作面板210上所示相同的屏幕显示在PC 200的浏览器上。例如这可以通过以下的方法来实现。编程服务程序132获取通过对操作面板屏幕执行定制程序而发出的绘图指令,并把该指令发送给PC 200,这样就使得与绘图指令在操作面板上显示的屏幕相同的屏幕显示在PC 200上。
如果在测试执行过程中出现了错误,则用户修改PC 200上的程序,上传修改后的程序并再次执行该程序。
接下来,将对执行按照上述方法生成的定制程序的过程进行说明。图11示出了从复合机器100打开开始至执行定制程序的过程的流程图。
在将定制程序存储在定制路径中并对装入设置文件211进行设置之后,用户开始向复合机器100供电。在步骤S1001中,复合机器100通过使用ROM监视器来诊断硬件。之后,在步骤S1002中装入一般OS 121,并在步骤S1003中装入复合机器初始化部分129。在步骤S1004中,复合机器初始化部分129装入控制服务程序,并且在步骤S1005中装入在运输时已经包括在复合机器中的已经存在的应用程序例如复制应用程序112,打印机应用程序111等。接着,在步骤S1006中,为了装入在运输复合机器之后开发出来的外部应用程序而装入程序装入部分131。
在步骤S1007中,该程序装入部分131指向HDD 103中的装入设置文件211,以便于获取将要被执行的程序的名称。
图12为装入设置文件211的示例。如图11所示,在定制设置文件211中,将有程序装入部分131装入的程序被注册为“程序名称,定制程序名称”。在图12所示的示例中,首先注册外壳脚本的外壳程序,接着将xxx应用程序作为外部应用程序来注册。
当用户压下(触摸)在操作面板210的操作显示部分中显示出来的与定制程序相关的按钮(按键)时,由该外壳来执行定制程序,也就是外壳脚本。更进一步,该编程服务程序132获取按钮的按压信息,并且指定按键相关表,因此该编程服务程序132可以获取对应于该按钮的定制程序的文件名称。接着,编程服务程序132执行定制程序。也可以通过设置装入设置文件中定制程序的名称来执行该定制程序。
如上所述,根据第一实施例的复合机器,该编程服务程序132使得PC 200显示编程屏幕,以便于输入定制程序。接着该命令解释程序134执行定制程序。因此,在开发定制程序的过程中,可以在编程屏幕上增加或修改定制程序,并且在复合机器上执行定制程序而不需要编译以及链接。因此,可以很容易的生成程序。
另外,根据第一实施例的复合机器,由于可以从PC 200上输入定制程序,因此与从复合机器上输入定制程序相比可以更高效的输入定制程序。
在第一实施例中,因特网220用于连接PC 200和复合机器。除了因特网之外,也可以采用LAN。另外,也可以采用除了TCP/IP以外的其它协议。
另外,PC 200除了具有从复合机器接收debug.htm文件的程序以外,还具有显示编程屏幕以及发送定制程序的程序。
(第二实施例)在第一实施例中,在PC 200中生成定制程序并将该程序存储在复合机器100中。相反,在第二实施例中,从复合机器的操作面板中输入定制程序。
图13为第二实施例中复合机器的主结构方框图。该复合机器的其它结构与图2中第一实施例的复合机器的其它结构的相同。如图13所示,该实施例中的复合机器1100包括编程服务程序1132,解释程序(外壳)134以及HDD103。
该编程服务程序1132在操作面板210的操作显示部分上显示出了编程屏幕。用户能够从编程屏幕输入定制程序。另外,该编程服务程序1132将输入的定制程序存储在定制目录212中,其中该定制目录212为HDD 103的定制区域。另外,该编程服务1132将定制程序注册在装入设置文件中,因此该定制程序可以在复合机器100上执行。
复合机器初始化部分129、程序装入部分131、装入设置部分211以及定制目录的性能与复合机器100中的相同。
图14示出了编程屏幕1101的示例。可以通过在系统初始化设置屏幕上选择“programming”来显示编程屏幕。
与第一实施例中相应的屏幕一样,该编程屏幕110包括输入区,索引按钮,存储按钮,执行设置按钮以及测试执行按钮。在编程屏幕1101上,在操作显示部分显示出了软件键盘。通过使用该软件键盘,可以从输入区输入定制程序。
可是,由于操作显示部分的区域面积很小并且从操作显示部分输入的数据并不简单,因此很难直接输入定制程序。所以,最好就是能够通过网络将定制程序存储在记录介质例如HDD 103的区域中,并且通过使用软件键盘何以简单的修改定制程序。也就是说,通过按压编程屏幕1101上的索引按钮来选择定制程序,可以在输入区内显示出定制程序。接着,用户可以通过显示软件键盘来修改定制程序。
当定制程序的开发完成之后,压下存储按钮。因此,和第一实施例一样,该编程服务程序1132将该定制程序存储在HDD 103的定制目录中。另外,和第一实施例一样,通过按压执行设置按钮,该编程服务程序1132将该定制程序与由它指定的按钮(按键)按键代码关联在一起,并且存储一个表示它们之间关联关系的表格。生成的定制程序的执行过程与第一实施例是相同的。
如上所述,根据第二实施例的复合机器1100,该编程屏幕1101被显示在操作平台210的操作显示部分中,并且也可以从屏幕输入该定制程序。这样,通过使用没有与网络相连的独立的复合机器1100,也可以生成定制程序。
(第三实施例)根据第一和第二实施例的复合机器,该定制程序通过使用定制程序中的说明将定制程序与操作显示部分的按钮(按键)关联在一起。根据第三实施例,定制程序与按钮(按键)之间的对应关系是在给复合机器供电的同时动态建立的。
图15为复合机器1300更能性结构的方框图。与第一实施例采取的方式相同,一个外壳脚本的定制程序可以在PC 200中生成,并且该定制程序被存储在HDD 103中,并由复合机器1300来执行。
如图15所示,该实施例中的复合机器的结构与第一实施例之间的不同之处就在于复合机器1300具有一个操作面板注册部分133。
操作面板注册部分133为了执行定制程序而将按钮(按键)指定给定制程序。也就是说,通过按压(触摸)由操作面板注册部分133指定的按钮来执行定制程序。
该实施例中用来生成以及存储定制程序的过程与第一实施例中的相同。下面,将对将按钮指定给定制程序的方法进行说明。在将定制程序存储在定制目录中之后,用户再一次打开复合机器的开关,以便于将定制程序指定给按钮(按键)。
图16为从打开复合机器1300开始至完成指定按钮的流程图。从打开开关至装入程序装入部分131的步骤(步骤S1501-S1506)与第一实施例复合机器中相应的步骤是相同的。
在步骤S1507中,由该装入的程序装入部分指定HDD 103中的装入设置文件211,并获取将要被装入的程序的名称。图17为该实施例中所使用的装入设置文件211的示例。在该例中,操作面板注册部分的程序、命令解释程序以及外部应用程序(xxx应用程序)都被设置为将要被装入的程序。
因此,在步骤S1508中,该程序装入部分131首先装入操作面板注册部分133的程序。操作面板注册部分133的程序被存储在预先的定制目录中。接下来,在步骤S1509中装图该解释程序(命令解释程序)134。最后,在步骤S1510中装入外部应用程序。
在步骤S1511中,该装入的操作面板注册部分133在操作面板上显示用于按键指定的设置屏幕。图18示出了设置屏幕的示例。如图18所示,可以被指定的按钮被显示在各个定制程序的设置屏幕上。在步骤S1512中,当用户按压了一个用于定制程序的按钮时,该操作面板注册部分133将该按钮和定制程序关联在一起,并且将相关信息存储在一个记录介质例如HDD 103或闪存内作为一个表格。因此,该按钮被指定给定制程序。
如上所述,根据第三实施例的复合机器,该编程服务程序132显示编程屏幕201,因此由用户输入定制程序。接着,由该操作面板注册部分133指定一个按钮(按键)给定制程序。通过在复合机器打开时装入操作面板注册部分133,可以在装入复合机器1300时动态的确定用于装入定制程序的按钮。
虽然在该实施例中由操作面板注册部分将按钮指定给定制程序,可是控制服务程序例如SCS 122也可以将一个按钮指定给定制程序。通过使用用于指定的SCS 122,用于操作面板注册部分133的程序并不是必须的并且处理过程会变得更加有效。
(第四实施例)根据第一至第三实施例的复合机器100,1100以及1300,由命令解释程序134也就是UNIX的命令解释程序来执行定制程序。另一方面,根据第四实施例,还可以使用除了命令解释程序134以外解释程序来执行定制程序。
图19示出了包括第四实施例的复合机器1700的网络结构。图20为复合机器1700的功能性方框图。和第一实施例相同,该复合机器1700与因特网相连。另外,还可以从PC 200输入定制程序并对其进行调试,该PC 200为与因特网相连的客户终端。作为定制程序的示例,有一个程序,其中按钮都显示在操组显示部分上,当按下一个按钮时,就会进行对应于该按钮的处理。
根据该实施例的复合机器1700,使用Visual Basic语言来书写定制程序。接着,使用Visual Basic解释程序来执行该定制程序。
如图19所示,该复合机器包括复合机器初始化部分129,程序装入部分131,编程服务程序132,Visual Basic解释程序1734(下文中尤指VB解释程序1734),NCS 128,httpd 106,共享存储器105以及HDD 103。复合机器初始化部分129,程序装入部分131,编程服务程序132,NCS 128以及httpd 106的性能与第一实施例中的相同。另外,存储在HDD 103以及定制目录中的装入设置文件211中的内容与第一实施例中的相同。
该VB解释程序1734逐步解释并执行定制程序。在该实施例中生成以及存储定制程序的方式与第一实施例中的相同。
在复合机器1700中,需要装入VB解释程序1734来执行定制程序。因此该装入设置文件211中包括VB解释程序1734的程序名称。
图21示出了装入设置文件的示例。如图21所示,“VB解释程序”被设置在装入设置文件211的第一行中。这样,该程序装入部分131就可以通过指定装入设置文件211来装入VB解释程序1734。因此,就可以执行定制程序。
根据第四实施例的复合机器,可以由在一般OS 121下运行的VB解释程序1734来执行定制程序,与在命令解释程序下运行的程序相比,该定制程序能够实现更好的特性。这样,就可以很容易的生成更好的程序。
在第四实施例中,PC 200包括一个其中含有VB解释程序的Visual Basic开发环境。由于在PC 200中包括了Visual Basic开发环境,因此可以在PC 200上开发含有指定LCD面板屏幕的定制程序。接着,例如可以通过使用文件传输协议将开发出来的程序发送给复合机器,以使得能够将该程序存储在复合机器中。
除了Visual Basic以外,也可以采用其它的解释语言。例如,可以使用Java。在第一至第四实施例中,该编程服务程序132可以位于应用程序层而不是控制服务层。
(第五实施例)第四实施例的复合机器通过使用一般OS 121操作的解释程序来执行定制程序。根据第五实施例的复合机器,在应用程序层中同时包括VB解释程序1801以及VB应用程序1802。
图22为根据第五实施例的复合机器的功能性方框图,第五实施例的复合机器与第四实施例一样通过使用TCP/IP协议与因特网相连。根据该复合机器,用户从PC 200输入定制程序并对其进行调试,其中该PC 200为与因特网相连的客户终端。在第五实施例中,由应用程序层中的Visual Basic解释程序(下文中尤指VB解释程序)执行该生成的定制程序。在该结构中,编程服务程序132可以位于应用程序层。
在该实施例中,在其中安装有Visual Basic开发环境的PC 200上开发VB应用程序。该开发出来的VB应用程序被传送给复合机器,并由该复合机器存储VB应用程序。通过在操组面板上进行选择来装入VB应用程序,因此,可以由解释程序1801执行该VB应用程序。接下来,将对该实施例进行更详细的描述。
图23示出了通过使用PC 200上的Visual Basic开发环境来开发VB应用程序的示例。
在该屏幕上示出了两个窗口。一个窗口的标题为Project2-Form2(Form),另一窗口的标题为Project2-Form2(Code)。该Project2-Form2(Form)窗口用于生成在复合机器的操作面板上显示的菜单屏幕。如图23所示,其中设置了三个按钮,分别为“SCAN”、“FAX”以及“START”。指定应用程序,使得当操作面板上的一个相应按钮被按下时,进行扫描、传真发送等操作。
该Project2-Form2(Code)窗口用于生成当屏幕上的按钮被按下时进行扫描、传真发送等操作的程序。
当程序被存储到如图23所示的状态中时,会生成两个文件Project2.vbp以及Form2.frm。该Project2.vbp中存有用于管理项目的信息以及用于执行程序变量值的条件。
该Form2.frm为由VB解释程序1801解释的程序。通过使用复合机器中的编程服务程序132从PC 200上传该VB应用程序。
当编程屏幕201中的测试执行按钮被压下,则就会装入复合机器中的VB解释程序1801,并执行该VB应用程序。同时,与显示在操作面板210中相同的屏幕被显示在PC 200的浏览器中。
图24、25示出了将由VB解释程序1801执行的VB应用程序的示例。当在复合机器上运行如图24所示的VB程序时,会首先显示出一个包括NEXTWIN按钮的窗口。如果该NEXTWIN按钮被按下,则通过调用(“change_display”,“Form”)来执行函数“change_display(“Form2”)”,因此该屏幕就会转至下一个屏幕(Form2窗口)。
图25示出了用于显示Form2窗口的VB程序。该Form2的VB程序对应于图23中的屏幕。
在Form2窗口中,当SCAN按钮被按下时,会执行以下程序。
Call(“ScanStart”,A4,ADF,TIFF,BINARY,“/work/tmpfile.tif”)
gwOpItemCreate(win,MESSAGE_ITEM,ITEM_MESSAGE_X, 0,ITEM_MESSAGE_Y, 12,ITEM_MESSAGE_WIDTH, 100,ITEM_MESSAGE_HEIGHT,12,ITEM_MESSAGE_CENTER_X, 0,ITEM_MESSAGE_BLINK, 0,ITEM_MESSAGE,“character string”,0,ITEM_MESSAGE_FONT,FONT_12,0,0);第一个ScanStart函数的功能是从ADF中读取一个A4大小的文档至一个二进制的图像,并使用TIFF格式将其存储在HDD的文件“/work/tmpfile.tif”中。由VB解释程序1801解释该函数并使复合机器按照上述的方式操作。
下一行中的“gwOpItemCreate()”是由复合机器的OCS 126提供的函数。通过该函数,可以将一个字符串显示在当前屏幕上。该函数gwOpItemCreate()由VB解释程序1801的OCS 126的函数调用来执行。
为了执行按照上述方式生成的VB应用函数,该VB解释程序以及VB应用程序被设置在如图11所示的装入设置文件中,因此该VB解释程序以及VB应用程序可以以同图10所示相同的方式装入。
接下来的处理用来当在复合机器上执行一个VB应用程序时在操作面板上显示一个屏幕。首先,VB解释程序1801等待屏幕从SCS 122捕捉到一个准备结束事件。当VB解释程序1801接收到该事件时,VB解释程序就会生成一个窗口图像进行初始化显示(root window generation)。接下来,VB应用程序通过执行用于在根窗口中生成子窗口并显示字符串的函数来准备初始屏幕。然后,通过执行表示屏幕准备结束的函数,由VB应用程序通知SCS 122屏幕准备结束。接着,当操作面板上的应用程序选择按钮被选中时,SCS 122就会发出一个请求操作屏幕所有者的变化的事件。当VB应用程序接收到该事件时,VB应用程序就会执行一个指示VB应用程序可以成为操作屏幕所有者的函数。同时,显示原始屏幕。之后,实质上就是由VB解释程序1801来执行VB应用程序。
如上所述,根据该实施例,可以使用VB解释程序很有效的开发应用程序。
(第六实施例)第五实施例的复合机器的结构使得VB解释程序被载入到应用层。第五实施例的复合机器的结构使得Java执行环境被包括在应用程序内。
图26示出了第六实施例的复合机器1900的方框图。如图中所示,复合机器1900的应用层中包括Java执行环境1901以及Java应用程序。该Java应用程序是使用PC(个人计算机)开发的并且被下载到复合机器中。接着,使用Java执行环境1901来执行该Java应用程序。
图27示出了PC中Java开发环境以及复合机器中Java执行环境的结构。
如图中结构所示,该Java执行环境包括一个分类库1911,模拟机器1912,以及应用程序管理部分1914。
该分类库1911用于为Java应用程序提供服务程序以便于更简单的操作复合机器。例如,该实施例中的分类库包括操作面板类,事件类,复合机器控制类,网络传输类,基本Java类等等。该Java应用程序本身就是一组类,并且这些分类指分类库中的类,因此该Java应用程序执行它的处理过程。如果该Java应用程序包括在该分类库中使用的类的所有性能,则可以不需要分类库就能构成Java执行环境。
Java程序的源代码被编译为作为中间代码的字节代码。由虚拟机器1912解释并执行该字节代码。
该应用程序管理部分1914能够管理Java应用程序。例如,还可以列出Java应用程序,对Java应用程序例如装入以及受迫终端的执行管理,载入以及升级Java应用程序,删除已安装的Java应用程序,用于应用程序注册的密码设置等等。
更具体的,如图28所示,该执行环境还包括本地程序接口1913。该本地程序接口1913使得由虚拟机器1912执行的Java代码能够处理由其它编程语言例如C书写的应用程序或库。通过使用本地程序接口1913机制,该Java应用程序能够访问控制服务程序的API。
类似于Java执行环境,该Java开发环境包括一个分类库1921,一个模拟机器1922,以及一个应用程序管理部分1914。进一步,该Java执行环境包括一个用于生成字节代码的Java编译程序1925,以及一个用于模仿运行Java应用程序的复合机器的操作的仿真程序。可以通过记录介质例如IC卡等将由Java开发环境开发的Java应用程序载入到复合机器的Java执行环境中。另外,也可以通过网络来载入Java应用程序。
例如,如图29所示,通过将由Java开发环境开发出来的Java应用程序存储到Web服务器中,该Java执行环境能够访问Web服务器,以载入Java应用程序。除了Web服务器以外,也可以使用FTP服务器。
(Java应用程序的开发)接下来,将对在Java开发环境中对Java应用程序的开发进行详细的描述。
图30为开发Java应用程序的流程。如图30所示,首先,生成Java源代码最为Java文件。然后,由Java编译程序对源代码进行编译,生成类文件。接着,由多个类文件构成一个Jar文件。最好就是包括一个表示类的文件,其中该具有“主”程序。
可以通过与前面描述的实施例相同的方式在复合机器上执行Java应用程序来调试Java应用程序。根据该实施例,不需要使用如图27所示的仿真程序1923的目标复合机器就能够进行调试。由于Java使用了虚拟机器,因此在使用Java时可以很容易的仿真执行环境。在使用仿真程序完成应用程序的开发之后,通过网络或IC卡将该Java应用程序(字节代码)载入到复合机器中。接着,可以在复合机器上进行应用程序的评估。
该仿真程序的结构使其能够从Java应用程序接收指令,并根据该指令操作PC。例如,对于在操作面板的显示部分上显示数据的指令,仿真程序使得PC显示出与在复合机器的显示部分显示出的屏幕相同的屏幕。该PC不具有包括在复合机器中的引擎(扫描仪、打印机等)。因此,例如对于来自Java应用程序的打印指令,该仿真软件使得PC显示出表示打印的图像,或者该仿真软件使得PC实际上将纸张打印至缺省的打印机。当用户按下PC上仿真屏幕上的复制按钮时,例如,该仿真程序就会使得PC通知用户从本地文件系统中选择一个将要被复制的文件,并使PC显示输入复制目的地的对话框,并使PC将选中的文件复制到目的地。
该仿真程序可以是一个与图27中所示的的虚拟机器以及分类库相独立的程序。另外,该仿真程序也可以由图31中所示的分类库中的一个类来实现。
图32为在仿真程序在PC上显示的操作面板屏幕。在屏幕上显示出来的元素例如按钮与实际复合机器中的相同。另外,该仿真程序具有装入程序的功能,能够选择存储在PC中的Java应用程序并执行该被选中的Java应用程序。如果仿真程序执行了载入程序的功能,例如,则会显示出如图33所示的屏幕。接着,用户选择一个Java应用程序,并且通过按压执行按钮来执行Java应用程序。在屏幕上显示的Java应用程序是一个具有主程序的类名称或Jar文件名称。
该仿真程序还可以记录在仿真程序上操作的应用程序的状态信息。另外,也可以对被记录的信息进行设置。例如,用户可以设置仿真程序,使得只有那些异常的会终止应用程序的严重错误才会被记录,或者只有用于调试的详细信息被记录。
使用仿真程序进行调试也可以用于本发明的其它实施例中。也就是说,例如在第一实施例中,PC 200也可以包括与本实施例中相类似的解释程序以及仿真程序。在调试程序结束之后,将该程序发送给复合机器,以便于通过访问复合机器来测试程序。
(Java应用程序的示例)接下来,将对Java应用程序的示例进行描述。接下来的示例为使用操作面板类的Java采样程序。图34示出了操作面板类的分层结构。在图34中,类***Window用于生成一个窗口,类****Item用来生成窗口中的一个元素例如按钮。例如含有以下代码的程序可以生成一个如图35中所示的主窗口以及元素。
Mainwindow=newPanelWindow(panel.root(),640,240);(a)MessageItem msg=new MessageItem(20,20,600,40);(b)ButtonItem Button=new ButtonItem(10,60,80,30);(c)(a)为生成宽640、长240的主窗口的代码。(b)为在位置(20,20)生成长40、宽600的消息项的代码。(c)为在位置(10,60)生成长30、宽80的按钮的代码。
图36中所示的程序用于实现在复合机器操作面板上的用户接口。如图37所示,程序会显示“Hello World”,“Your Input Was…”以及一个按钮“GetInput…”。当用户触摸按钮“Get Input…”时,面板上会显示出一个软键盘。软键盘显示标题“Add your input”来请用户输入代码。例如,当用户从软键盘输入字符串“ABCD”时,该字符串“ABCD”就会显示在消息“Your InputWas…”之下。
接下来,将会随着标记数字对图36中所示的采样程序进行描述。
(1)为一个使用操作面板分类库的指令。(2)表示继承GWApp,因此可以使用该复合机器的应用程序类。另外,通过继承GWApp,用户不需要书写用于复杂初始化以及终止处理的代码,另外,处理过程,例如消息接收对于用户来说是不隐藏的。通过代码(3),生成了显示消息“Hello World”的对象。通过代码(4)生成按钮对象“Get Input…”。接着,通过代码(5),生成了显示消息“Your Input Was…”的对象。通过代码(6),生成了从软键盘输入显示字符的消息对象。
(在Java执行环境中执行Java应用程序)在如图27所示的结构中,通过使用应用程序管理部分1914,可以按照以下的方式进行从下载到应用程序执行的处理。
同其它的应用程序一样,在装入复合机器的同时装入应用程序管理部分1914。通过按压应用程序装入按键,例如,应用程序管理部分1914会在操作面板上显示出一个用户接口。同时,如果没有载入Java应用程序,则应用程序管理部分1914就会显示一个应用程序载入屏幕。通过该应用程序载入屏幕,用户可以使得复合机器存取预定的网站或IC卡,用以载入Java应用程序至复合机器中。
在载入的过程中,在载入Java应用程序之前,应用程序管理部分1914会询问Web服务器关于Java应用程序的信息,检查是否可以安装Java应用程序。例如该应用程序管理部分1914会检查程序大小、版本、程序最近更改信息、将要使用的记忆量大小、将要使用的存储器大小、将要使用的网络地址、应用程序的使用期限(应用程序可以使用的次数)、应用程序的名称等等。
在检查完上述各项之后,如果应用程序管理部分1914确认可以安装Java应用程序,则应用程序管理部分1914就会将Java应用程序下载到复合机器中。
在下载Java应用程序结束之后,应用程序管理部分1914就会获取应用程序名称并将其加入到应用程序列表中去。同时,将该Java应用程序存储到复合机器的硬盘中。
完成了上述处理之后就可以使用该Java应用程序。当用户从应用程序管理部分1914提供的Java应用程序装入屏幕中选择了一个Java应用程序之后,就装入了该虚拟机器并执行该Java应用程序。
该Java应用程序也可以以下面的方式执行。下面的方法是图29中的Web服务器结构中载入Java应用程序的示例。下面的处理由包括应用程序管理部分1914的载入程序来执行。该载入程序本身就是由Java应用程序实现的,或者也可以用其它语言例如C语言来实现。
图38示出了从上传至下载Java应用程序的示意图。如图38所示,在步骤1中,由Java开发环境开发并测试过的Java应用程序被上传至Web服务器。在步骤2中复合机器的载入程序访问Web服务器,在步骤3中下载用户想要的Java应用程序,并执行该Java应用程序。
接下来参照图39中的流程图对载入程序的处理过程进行描述。
用户按下一个用来改变应用程序的预定按钮。接着,在步骤S11中由载入程序检查是否有一个Java应用程序已经被载入。如果该Java应用程序已经被载入,则在步骤S12中执行该Java应用程序。接着,显示Java应用程序的用户接口。如果该Java应用程序没有被载入,则在步骤S13中显示载入程序屏幕。另外,当Java应用程序执行结束时,也会显示该载入程序屏幕。另外,在显示Java应用程序用户接口的同时,如果用户输入了预定的代码并按下了预定的按钮,则也可以显示载入程序的用户接口。
图40示出了在复合机器上显示的载入程序用户接口。如果Java应用程序正在被载入到复合机器当中,则载入程序就会显示该Java应用程序的名称,并显示检查Web服务器中Java应用程序更新的频率。
在步骤S14中,当用户触摸载入程序屏幕上的“load application”按钮时,就会显示出如图41所示的应用程序载入窗口。在该窗口中输入该Java应用程序的URL。为了输入URL,用户会触摸URL按钮来显示一个软键盘。接着,用户通过该软键盘敲入URL。另外,通过触摸URL按钮,该载入程序可以显示出如图42所示的Java应用程序列表。接着,用户就可以从该列表中选择一个Java应用程序。如果需要的话,用户可以在图41所示的类名称区中输入具有主程序类的名称。
之后,在步骤S15中,通过触摸图41中所示的OK按钮,从Web服务器中下载该Java应用程序,因此能够由复合机器来执行Java应用程序。
载入程序可以自动地以预定的时间间隔存取Web服务器,来检查是否有修改候的Java应用程存储在Web服务器中。为了检查这种更新,载入程序会对当前正在载入应用程序的日期以及时间印记与Web服务器中相应的应用程序进行比较。如果发现了一个修改后的Java应用程序,则会删除当前正在操作的应用程序并下载修改后的应用程序。
在步骤S16中,为改变该检查间隔,用户可以触摸如图40所示的修改间隔按钮,接着就会显示出如图43所示的屏幕。接着,用户可以通过使用屏幕中的箭头键来选择小时或分钟,并通过操作面板上的数字键输入新的时间间隔。
在步骤S17中,为从复合机器中删除一个Java应用程序,用户可以触摸如图40中所示的“unload application”按钮,并显示出如图44所示的屏幕。通过触摸“OK”按钮就可以删除Java应用程序。通过触摸图40中的Exit按钮来结束载入程序。
在该实施例中,可以通过连接Java应用程序来生成一个定制程序。下面将参照图45说明连接应用程序的处理过程。用来生成定制程序的程序为Java应用程序,在下文中Java应用程序尤其是指定制应用程序。可以事先将定制应用程序安装到复合机器中。
首先,通过将操作面板上的屏幕切换至图40中所示的载入程序屏幕来载入并执行定制应用程序。
该定制应用程序显示出图45中的屏幕1。在屏幕1中,只显示出了纸张对象。也可以输入其它的对象。可以使用“输入”按钮以及“输出”按钮来输入及输出对象。另外,在屏幕1中也可以通过“读/写允许”按钮将纸张对象设置为读写允许的属性。
当用户触摸屏幕1中的“纸张”时,就会显示出如图2中所示的一列与纸张对象相连的对象。当选择“扫描”时,就会从屏幕2转移至屏幕3。通过触摸“扫描”,就会显示出如图4中所示的一列与扫描对象相连的对象。当选择屏幕4中的“mail”时,就会从屏幕4转移至屏幕5。
之后,通过触摸“设置”按钮,就会生成一个定制程序,该程序就会扫描一张纸,并通过mail的方式发送该扫描后的图像文件。另外,如图6所示,给定制程序指定了一个按键。通过操作复合机器上的按键就可以执行该定制程序。该定制程序为逐个执行连接类的程序。
从Web服务器下载应用程序,并且通过连接应用程序来生成定制程序也可以用于本发明的其它实施例中。例如,在前面提到的使用VB解释程序的结构中,通过向复合机器提供与该实施例相类似的载入软件,该复合机器也可以从服务器中下载应用程序。
到此为止,所描述的各个服务程序以及应用程序都可以存储在记录介质中,例如IC卡等等,并且都可以存储在复合机器中。另外,到此为止所描述的各个服务程序以及应用程序也都可以通过网络从外部服务器存储到复合机器中去。
如上所述,根据本发明,可以使用Java开发环境来有效的开发应用程序。
(第七实施例)如相关技术中所述,根据该复合机器,复合机器可以在运输之后向其中加入应用程序。这样,就会出现在一台复合机器上同时运行由多人开发出来的多个应用程序的情况。另外,还会出现在一台复合机器上同时运行由多个部门开发出来的包括多个模块的应用程序的情况。
由于每个人都是采用他自己的方法来开发应用程序,因此有可能会影响到该复合机器预先安装的应用程序和系统。尤其是,如果将对复合机器中共享变量以及事件的使用委托给个人,则复合机器中的软件就可能出现错误,这就使得复合机器中的系统变得不稳定。该问题不光出现在成像装置中,也会出现在一般的信息处理装置中。
接下来,将对解决上述问题的应用程序以及信息处理装置进行描述。下面,以信息处理装置为例对复合机器进行说明。
该实施例中复合机器的结构与第一实施例中的相同。在该实施例中,根据状态转换模型来生成外部应用程序117。该外部应用程序117与包括状态转换模型装入函数的实用程序库相链接。
外部应用程序177的进程是一个其中有多个线程并行执行的多线程环境。如图46所示,在外部应用程序177的进程中,有一个主线程和一个图像程序库线程并行执行。该主线程2100执行外部应用程序的主要处理过程。该主线程调用图像程序库线程2000,使得能够实现对控制服务程序以及VAS(虚拟应用服务程序)、接收返回值,以及发送/接收消息的调用。
另外,外部应用程序的进程包括一个子线程2200,信箱2110、2120及2140,以及事件获取处理程序(线程)2130。该主线程2100包括一个其中注册有状态转换模型装入函数的实用程序库2150。
该信箱2110用来在主线程2100、图像程序库线程2000、事件获取处理程序2130之间进行通信。信箱2120用于在主线程2100和图像程序库线程2000之间进行通信。事件获取处理程序2130从一个控制服务进程例如ECS、MCS或VAS中接收一个事件消息,并将其写在信箱2110中。
当主线程2100访问控制服务程序时,该主线程2100就会建立信箱2110、2120及2140,接着装入该图像程序库线程2000。
主线程2100将调用图像程序库线程2000的命令置入信箱2110中,其中该源信息被设置为MB_REQUEST。另外,来自控制服务程序等的事件消息也作为具有源信息MB_CS的信件被置入信息2110中。
图像程序库线程2000通过函数rcv_msg()获取发送至信箱2110的信件。该图像程序库线程2000查找对应于源信息的函数以及包括在该信件中的事件或函数信息。如果检测到了该函数,由图像程序库线程2000执行该函数。如果没有检测到该函数,就什么也不做。
不考虑相应函数的执行情况就将该获取的信件发送至信箱2120。另外,该图像程序库线程2000将信箱2120中的具有MB_IMAGE源信息的信件,例如错误信息通知、执行结果、进度等发送给主进程。按照相同的方式,主线程2100以及子线程2200也使用信箱2140和2120来发送以及接收消息。
实用程序库2150以及图像程序库作为可安装文件被存储在记录介质上,例如FD或CD-ROM。该文件为用于软件开发的部分或全部的工具包,例如“SDK软件开发工具包”。另外,该实用程序库2150以及图像程序库也可以通过网络从例如网站上下载。
为了通过实用程序库以及图像程序库来生成外部应用程序,开发人员利用编译程序对外部应用程序的源文件进行编译,生成一个目标文件。接着通过链接程序将实用程序库以及图像程序库同该目标文件链接在一起,以便于生成一个外部应用程序的执行文件。该执行文件被存在闪光记录卡等之中,并从该卡中安装至复合机器,因此具有实用程序库以及图像程序库的外部应用程序就被安装复合机器中。另外,也可以通过网络从服务器安装执行程序。
下面,将对外部应用程序所采用的状态转换模型进行描述。图47示出了当外部应用程序具有状态1和状态2时的状态转换。如图47所示,假设外部应用程序117的主线程2100包括状态1和状态2,当前状态为状态1。当主线程为状态1时,如果主线程2100通过函数rcv_msg()接收到事件1,则执行事件函数1,因此该状态转换为状态2并且执行入口函数2。当主线程2100为状态2时,如果主线程接收事件2,则执行事件函数2,因此该状态重新返回状态1并且执行入口函数1。当主线程2100为状态2时,如果主线程接收事件3,则执行事件函数3并保持状态2。
该“状态”表示等待事件的状态。“事件”为触发状态转换的事件。“入口函数”为出现状态转换时执行的函数。“事件函数”是为一个事件执行的函数。
为了产生一个通过状态转换模型来执行事件处理的应用程序,如果每个事件都是由一个模块处理的,也就是,如果每个事件都是由同一级的状态组来处理,则状态数就会增加并且由一个状态处理的事件数也会增加。这样,程序就会变得很复杂,因此生产率以及维护效率都会降低。
这样,根据该实施例,就生成了状态转换模型的模块(子模块)。每个模块都只会处理外部应用程序出现的所有事件中彼此之间相关的事件。另外,还提供了控制所有模块的状态转换模型的一个模块,其中如果需要的话,该模块可以通过调用函数来执行子模块。如果需要的话,被调用的子模块也可以执行函数调用,以便于执行状态转换模型中更小的子模块。
各个模块并不使用能够被所有的外部应用程序所使用的全局变量。相反,各个模块都会在被装入时动态的保持一个共享存储器。因此,如果递归的调用相同的模块,则就可以确定该程序被正确的执行。
图48示出了外部应用程序中具有嵌套结构的模块的示例。在图48中所示的示例中存在三个嵌套(模块)。嵌套1的模块被嵌套0通过事件函数sub1()调用,嵌套2的模块被事件函数sub2()调用。
下面,将对外部应用程序117的特殊源代码进行描述。如果在模块中执行的入口函数以及事件函数中间存在一个共享变量,则由于函数类型的限制,该变量就不可能作为一个函数的自变量。如果该变量被定义为全局变量,则很有可能该变量中的值在嵌套结构模块或多线程中发生无法预计的改变,因此全局变量就会导致外部应用程序的错误。
根据该实施例,状态转换模型以及被嵌套的模块可以共享一个变量。图49示出了定义外部应用程序的部分源代码的示例。
如图49所示,在外部应用程序的源代码中,同相同文件描述的入口函数以及事件函数中的全局变量一样,对变量分组,因此将结构(demoCommonParm_t)定义为共享变量。另外,为了更容易的存取共享变量,还定义了COMMON_STRUCT。
另外,在图49的示例中,外部应用程序117具有两个状态DEMO_ST_IDLE以及DEMO_ST_RUN,并且为状态DEMO_ST_IDLE定义了事件函数表“eventDemoIdle”,为状态DEMO_ST_RUN定义了事件函数表“eventDemoRun”.按照状态的顺续书写DemoStTbl[]中的数据,在该状态中定义了入口函数表和事件函数表。另外,通过使用THREAD_NO指定线程数量,在THREAD_NO个线程的一个线程中有效的共享变量都可以使用。
图50为外部应用程序的源代码中函数定义部分的示例。函数“execDemoFunc”装入了一个状态转换模型。尤其是,函数“execDemoFunc”还为共享变量保持并设置了一个区域,并且调用了状态转换模型装入函数StMachine()。
在图50的示例中,“execDemoFunc”根据状态信息表demoStTble,在线程数为THREAD_NO的线程中,通过指定将要从状态数DEMO_ST_IDLE中装入的状态以及用pCom指示的区域被用作共享变量来调用状态转换模型装入函数StMachine()。另外,对事件函数以及入口函数的描述如图50所示。
接下来,对状态转换模型装入函数StMachine()的处理过程进行描述。图51为状态转换模型装入函数StMachine()的处理过程流程图。
在步骤S701中,当状态转换模型装入函数StMachine()接收到一个消息时,该函数就会为共享变量分配存储区域。图52就示出了共享变量存储区域的分配状态。如图52所示,在该实施例中,堆栈指针sp的值直接对应于嵌套数。对各个模块(嵌套)来说,也就是,每次在一个模块中执行函数StMachine()时,指向共享变量组的指针就会进入堆栈区域中。因此,该共享变量并不会在较低层模块中偶然发生变化。这样,如图52所示,具有相同名称的共享变量能够象全局变量一样使用,同时保持共享变量的精确数值。
接下来,在步骤S702中状态转换模型装入函数StMachine()就会指定一个当前状态的事件函数表来检查表格的信息。接着,在步骤S703中,由该函数确定在事件函数中是否定义了一个接收到的消息。如果定义了接收到的消息,则该状态转换模型装入函数StMachine()就会在步骤S704中执行对应于接收到消息的事件函数,并在步骤S705中执行入口函数。如果在事件函数中并没有定义接收到的消息,则不会执行事件函数。在步骤S706中会重复进行上述的处理,直到事件函数表结束。因此,就会执行根据状态转换模型生成的外部应用程序。
如上所述,根据第一实施例中的复合机器,该外部应用程序包括多个嵌套结构的模型。另外,该应用程序还包括其中注册有状态转换模型装入函数的实用程序库2150,其中该状态转换模型装入函数在各个模块中向多个模块所共享的共享变量分配存储区域。这样,这些共享变量就可以在模块中安全的使用,并且可以防止由于变量值的问题所引起的错误。这样,该复合机器就能够稳定的执行外部应用程序。
(第八实施例)由于在第七实施例的复合机器中,根据状态转换模型来生成外部应用程序,因此只有依靠状态的事件函数才能被执行。根据第八实施例的复合机器,该外部应用程序还执行独立于任何状态的标准处理过程。第八实施例的复合机器的结构与第七实施例中的相同,并且第八实施例的进程内部的结构也与第七实施例的相同。
第八实施例的复合机器的结构使得程序库中的状态转换模型装入函数StMachine()能够执行标准处理过程。
图53示出了状态转换模型装入函数StMachine()的处理过程流程图。从分配共享变量到执行入口函数的过程(步骤S901-S906)与第七实施例中的相同。
在步骤S907中,该实施例的状态转换模型装入函数StMachine()还执行一个标准函数表并检查信息。该“标准函数”是一个当接收到一个事件时与当前状态无关地执行的函数。例如该“标准函数”执行一个停止事件的处理,执行为查询应用程序所有者许可的事件而通知所有者许可存在或缺席的处理,等等。该标准函数表定义了执行消息的标准函数,并且该标准函数表的结构与事件函数表的相同。
接着,在步骤S908中,该函数确定在标准函数表中是否定义了一个已接收的消息,如果定义了接收到的消息,则在步骤S909中状态转换模型装入函数StMachine()就会执行一个对应于接收到的消息的标准函数。如果在标准函数表中没有定义接收到的消息,则不会执行标准函数。在步骤S910中会不断地重复上述的处理过程,直到标准函数表结束。因此,在根据状态转换模型生成的外部应用程序中,对于异步到达的事件,还执行独立于当前状态的标准函数。
如上所述,根据第八实施例的复合机器,由于该状态转换模型装入函数执行标准函数,可以在不影响其它应用程序的通时处理与系统相关的事件例如终止事件,因此改进了该复合机器的稳定性。根据第七以及第八实施例,可以在各模块之间安全的使用共享变量,并且可以防止由于变量值而导致的错误。
如上所述,根据本发明,提供了一种成像装置,其中包括程序获取部分,用于将输入程序的屏幕数据发送至一个客户终端,并从该客户终端接收程序;以及程序执行部分,用来执行由程序获取部分接收到的程序。
根据成像装置,可以从客户终端的输入屏幕上增加或修改程序,并且该程序可以不经过编译就能够执行。这样,可以很容易的对程序操作进行能够测试。因此,开发程序会很简单。
成像装置可以包括操作显示部分,用来显示屏幕并输入信息;以及程序获取部分,用于在输入程序的操作显示部分上显示一个屏幕,并获取从操作显示部分输入的程序。根据成像装置,可以从客户终端的输入屏幕上增加或修改程序。
在成像装置中,该程序获取部分具有Web服务器的性能,并且成像装置根据来自客户终端的访问将html文件作为屏幕数据发送给客户终端。利用Web服务器的性能,可以很容易的发送输入的屏幕数据。
成像装置可以检测来自客户终端的事件并执行对应于该事件的CGI程序。通过该CGI,可以高效的执行根据来自Web浏览器的指令的处理过程。
在成像装置中,当在其中执行程序时,成像装置会在客户终端上显示出与成像装置的显示部分上显示的屏幕一样的屏幕。根据本发明,程序的操作可以在客户终端一侧被识别出来。
成像装置根据来自客户终端或成像装置操作显示部分的请求将一个按键与该程序关联在一起,并且存储包括程序与按键之间对应关系的表格。这样,用户就可以为程序指定一个按键。
成像装置还包括用于成像处理的硬件资源;存在于成像装置的硬件资源和应用程序之间的控制服务程序;其中该程序为应用程序。该程序通过程序执行部分对控制服务程序进行函数调用。
另外,根据本发明,还提供了一个用于开发能够在成像装置上执行的程序的信息处理装置,其中包括执行部分,用于解释以及执行程序;
仿真程序,用于根据程序指令指示信息处理装置执行对应于由成像装置执行的处理。
根据本发明,由于仿真程序能够使得信息处理装置模拟成像装置,并可以在信息处理装置上执行程序测试,因此大大提高了程序开发效率。
该执行部分为一个虚拟机器,因此可以执行Java程序。另外,通过一个用来将程序源代码转换为虚拟机器可以执行的代码,可以将源代码转换为字节代码。另外,通过提供分类程序库,可以很容易的开发Java程序。
在信息处理装置中,该仿真程序能够使得信息处理装置显示出对应于成像装置操作面板的屏幕。因此,即使是由用户操作成像装置,也可以由用户来操作信息处理装置。
另外,该仿真程序使得信息处理装置显示出程序列表并执行由用户选择的程序,并且该仿真程序还能够使得信息处理装置根据打印指令在于信息处理装置相连得打印机上打印数据。
另外,该信息处理装置还可以接收用于输入程序的屏幕数据并通过该屏幕数据将程序发送给信息形成装置。
另外,还提供了一种成像装置,其中包括用于执行关于图像信息的系统方处理的服务模块,其中该应用程序可以被加入到与服务模块分离开的成像装置中去,其中包括虚拟机器,用于执行应用程序;以及应用程序管理部分,用于管理由虚拟机器执行的应用程序。
根据本发明,一个在虚拟机器上执行的应用程序可以在成像装置上执行。一般的,由于该模拟机器吸收了机器模型之间的不同之处,因此可以很容易的在成像装置上执行该应用程序。
成像装置中还可以用解释程序来代替虚拟机器。
在成像装置中,该应用程序管理部分是一个载入程序,用来通过网络从与成像装置相连的记录介质或服务器中将应用程序载入到成像装置中去。由于载入程序载入了应用程序,因此可以很容易的执行该应用程序。
由载入程序确定该应用程序是否已经被载入到成像装置中,并且如果已经被载入的话就执行该应用程序,而如果没有被载入的话就显示该载入程序屏幕。
另外,该载入程序在成像部分的显示部分上显示出一个应用程序载入屏幕并且从用户在载入屏幕上指定的位置下载该应用程序,并且由载入程序显示应用程序列表并下载用户从该列表中选择的应用程序。另外,该载入程序以预定的时间间隔检查本地对应于被下载应用程序的应用程序是否被更新过。
成像装置还包括一个用于连接应用程序的连接部分,并根据被连接的应用程序使得成像装置执行一系列的操作。该连接部分在成像装置的显示部分上显示一个第一应用程序以及多个候选与该第一应用程序相连的应用程序,并且将从多个应用程序中选出来的应用程序与第一应用程序相连。因此,用户能够可视的定制应用程序。
另外,根据本发明,还提供了一种在其中包括有在程序中执行的实用程序库的信息处理装置,其中该程序包括嵌套模块,该嵌套模块中的每个模块都是根据一个状态转换模型构成的,其中,在状态转换模型中,根据以下内容来确定程序的操作程序的第一状态,该状态下程序的事件,当在该状态下出现该事件时执行的事件函数,以及在该事件函数被执行之后由第一状态变换来的第二状态。
其中该实用程序库包括一个状态转换模型装入函数,用来将各个模块的区域指定给一个由多个模块共享的共享变量。
根据本发明,可以在各模块之间安全地使用共享变量,并且可以防止由于变量值而导致的错误,因此该信息处理装置操作稳定。
在该信息处理装置中,每个区域都由堆栈区域中的一个指针指定。由于采用了用于函数调用的堆栈区域,因此可以有效的指定用户共享变量的区域。
另外,状态转换模型装入函数为每个线程将存储区域指定给由线程共享的共享变量。这样,就可以在线程间安全地使用共享变量。
另外,该状态转换模型装入函数执行一个入口函数,该入口函数定义了当状态转换模型中出现状态转换时所执行的处理过程。这样,就可以执行在调用一个模块时规则执行的处理过程。
而且,该状态转换模型装入函数还执行标准函数,该标准函数定义了当出现了与状态无关的异步事件时所执行的处理过程。
本发明并不仅限于具体公开的实施例,并且在不脱离本发明的范围情况下可以进行各种变化和修改。
权利要求
1.一种程序生成方法,包括将实用程序库与应用程序相链接的步骤;其中所述程序包括嵌套模块,该嵌套模块中的每个模块都是根据状态转换模型构成的,其中,在状态转换模型中,根据以下内容来确定程序的操作程序的第一状态,该状态下程序的事件,当在该状态下出现该事件时执行的事件函数,以及在该事件函数被执行之后由第一状态变换来的第二状态。其中该实用程序库包括状态转换模型装入函数,用来将各个模块的区域指定给由多个模块共享的共享变量。
2.如权利要求1所述的方法,其中每个区域都由堆栈区域中的指针指定。
3.如权利要求1所述的方法,其中状态转换模型装入函数为每个线程将区域指定给由线程共享的共享变量。
4.如权利要求1所述的方法,其中所述状态转换模型装入函数执行一个入口函数,该入口函数定义了当状态转换模型中出现状态转换时所执行的处理过程。
5.如权利要求1所述的方法,其中所述状态转换模型装入函数还执行标准函数,该标准函数定义了当出现了与状态无关的异步事件时所执行的处理过程。
6.如权利要求1所述的方法,其中根据所述方法生成的程序是将在成像装置中执行的程序。
7.如权利要求6所述的方法,其中所述信息处理装置还包括用于成像处理的硬件资源;控制服务程序,为成像装置中的应用程序提供服务,其中所述服务包括对硬件资源的控制;其中所述程序为成像装置中的应用程序。
全文摘要
提供了一种程序生成方法,包括将实用程序库与应用程序相链接的步骤;其中所述程序包括嵌套模块,该嵌套模块中的每个模块都是根据状态转换模型构成的,其中,在状态转换模型中,根据以下内容来确定程序的操作程序的第一状态,该状态下程序的事件,当在该状态下出现该事件时执行的事件函数,以及在该事件函数被执行之后由第一状态变换来的第二状态。其中该实用程序库包括状态转换模型装入函数,用来将各个模块的区域指定给由多个模块共享的共享变量。
文档编号G06F9/46GK1818858SQ20051011387
公开日2006年8月16日 申请日期2003年7月28日 优先权日2002年7月26日
发明者秋吉邦洋, 大石勉, 杉浦裕子, 中川克彦, 安藤光男 申请人:株式会社理光
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1