国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      狀態(tài)轉(zhuǎn)換模型的制作方法

      文檔序號(hào):6649870閱讀:590來(lái)源:國(guó)知局
      專利名稱:狀態(tài)轉(zhuǎn)換模型的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及一種程序中的狀態(tài)轉(zhuǎn)換模型,用于提高程序的開發(fā)效率以及程序的執(zhí)行效率。
      背景技術(shù)
      近來(lái),一種在一個(gè)機(jī)箱內(nèi)包括打印機(jī)、復(fù)印機(jī)、傳真機(jī)、掃描儀等功能的成像裝置(在下文中尤其指復(fù)合機(jī)器)已經(jīng)為公眾所周知。該復(fù)合機(jī)器的機(jī)箱內(nèi)包括顯示部分,打印部分以及圖像拾取部分等等。在該復(fù)合機(jī)器中,包括三段分別對(duì)應(yīng)于打印機(jī)、復(fù)印機(jī)以及傳真機(jī)的軟件,因此該復(fù)合機(jī)器能夠通過(guò)軟件切換來(lái)分別實(shí)現(xiàn)打印機(jī)、復(fù)印機(jī)、掃描儀以及傳真機(jī)的功能。
      根據(jù)這種常規(guī)復(fù)合機(jī)器,向用戶提供操作面板以便操作該復(fù)合機(jī)器。該操作面板包括用來(lái)顯示操作屏幕以及執(zhí)行觸摸操作的操作顯示部分(LCD面板)。根據(jù)該常規(guī)復(fù)合機(jī)器,由于提供給用戶的性能是預(yù)先確定的,因此用戶對(duì)復(fù)合機(jī)器進(jìn)行的操作并不會(huì)有很大的變化。這樣,就不需要按客戶具體要求定制在操作顯示部分上的顯示屏幕以及觸摸操作。因此,并不需要在常規(guī)復(fù)合機(jī)器上提供用于操作顯示部分的定制性能。
      由于常規(guī)復(fù)合機(jī)器上具有分別實(shí)現(xiàn)打印機(jī)、復(fù)印機(jī)、掃描儀以及傳真機(jī)功能的軟件段,因此需要大量的時(shí)間來(lái)開發(fā)軟件。這樣,本申請(qǐng)人開發(fā)出一種包括硬件資源的成像裝置(復(fù)合機(jī)器),多種應(yīng)用程序,以及一個(gè)包括在應(yīng)用程序與硬件資源之間提供各種控制服務(wù)的平臺(tái)。該硬件資源例如顯示部分、打印部分以及圖像拾取部分都被用于成像處理過(guò)程。這些應(yīng)用程序?yàn)橛脩魣?zhí)行對(duì)應(yīng)于打印機(jī)、復(fù)印機(jī)以及傳真機(jī)等的服務(wù)。該平臺(tái)包括多種控制服務(wù),該服務(wù)程序用來(lái)進(jìn)行對(duì)硬件資源的管理與執(zhí)行控制,這至少對(duì)于兩個(gè)應(yīng)用程序來(lái)說(shuō)是必須的,并且進(jìn)行成像處理。這種由控制服務(wù)執(zhí)行的處理被稱為系統(tǒng)方處理。
      根據(jù)這樣的新復(fù)合機(jī)器,分別提供所述應(yīng)用程序以及控制服務(wù)。這樣,在該復(fù)合機(jī)器發(fā)貨之后,用戶或者第三方就可以開發(fā)出新的應(yīng)用程序安裝到該復(fù)合機(jī)器上。通過(guò)這種方式,可以實(shí)現(xiàn)各種不同的功能。
      因此,需要提供不同于預(yù)定性能的性能,以便在操作顯示部分對(duì)新的應(yīng)用程序進(jìn)行操作。這樣,就需要定制操作顯示部分的操作。這對(duì)于常規(guī)復(fù)合機(jī)器來(lái)說(shuō)并不是一個(gè)問(wèn)題,因?yàn)槌R?guī)復(fù)合機(jī)器在發(fā)貨之后無(wú)法再安裝外部應(yīng)用程序。
      在開發(fā)外部應(yīng)用程序時(shí),可以考慮通過(guò)寫入源代碼來(lái)定制操作顯示部分。也就是,在開發(fā)外部應(yīng)用程序本身的同時(shí),也開發(fā)出與顯示部分的觸摸操作相關(guān)的執(zhí)行處理過(guò)程。在這種情況下,從程序開發(fā)效率的角度上看,希望在校驗(yàn)復(fù)合機(jī)器中應(yīng)用程序操作的同時(shí)開發(fā)外部應(yīng)用程序。在這種情況下,每次在應(yīng)用程序中出現(xiàn)問(wèn)題時(shí),都需要對(duì)源代碼進(jìn)行修改、重編譯、重鏈接,并重新將應(yīng)用程序安裝到復(fù)合機(jī)器中去,接著,需要再一次對(duì)程序操作進(jìn)行校驗(yàn)。依照該過(guò)程,程序開發(fā)的效率不會(huì)很高。
      這一問(wèn)題并不僅限于定制操作顯示部分。一般地,在通過(guò)使用復(fù)合機(jī)器來(lái)校驗(yàn)程序的同時(shí),通過(guò)使用PC來(lái)生成程序的效率很低。另外,為了執(zhí)行一個(gè)應(yīng)用程序,需要將在PC中開發(fā)出的應(yīng)用程序存儲(chǔ)到復(fù)合機(jī)器中去。這樣,除了可以高效地開發(fā)應(yīng)用程序之外,為了方便用戶還需要有效地存儲(chǔ)以及執(zhí)行復(fù)合機(jī)器中的應(yīng)用程序。

      發(fā)明內(nèi)容
      本發(fā)明的一個(gè)目的就是提供一種成像裝置以及一種信息處理裝置,用以提高開發(fā)應(yīng)用程序的效率以及執(zhí)行應(yīng)用程序的效率。
      上述的目的可以通過(guò)一個(gè)成像裝置來(lái)實(shí)現(xiàn),包括程序獲取部分,用于將輸入程序的屏幕數(shù)據(jù)發(fā)送至客戶終端,并從該客戶終端接收程序;以及程序執(zhí)行部分,用來(lái)執(zhí)行由程序獲取部分接收到的程序。
      根據(jù)本發(fā)明,可以從客戶終端的輸入屏幕上增加或修改程序,并且該程序可以不經(jīng)過(guò)編譯就能夠執(zhí)行。這樣,可以很容易地測(cè)試程序的操作。因此,開發(fā)程序會(huì)很簡(jiǎn)單。
      上述目的也可以通過(guò)一個(gè)用于開發(fā)能夠在成像裝置上執(zhí)行的程序的信息處理裝置來(lái)實(shí)現(xiàn),所述信息處理裝置包括執(zhí)行部分,用于解釋以及執(zhí)行程序;仿真程序,用于根據(jù)程序指令來(lái)使信息處理裝置執(zhí)行對(duì)應(yīng)于由成像裝置執(zhí)行的處理。
      根據(jù)本發(fā)明,由于仿真程序能夠使得信息處理裝置模擬成像裝置,并可以在信息處理裝置上執(zhí)行程序測(cè)試,因此大大提高了程序開發(fā)效率。
      上述的目的也可以通過(guò)一個(gè)包括用于執(zhí)行關(guān)于圖像信息的系統(tǒng)方處理的服務(wù)模塊來(lái)實(shí)現(xiàn),其中該應(yīng)用程序可以被加入到與服務(wù)模塊分離的成像裝置,所述成像裝置包括虛擬機(jī)器,用于執(zhí)行應(yīng)用程序;以及應(yīng)用程序管理部分,用于管理由虛擬機(jī)器執(zhí)行的應(yīng)用程序。
      根據(jù)本發(fā)明,在虛擬機(jī)器上執(zhí)行的應(yīng)用程序可以在成像裝置上執(zhí)行。一般地,由于該虛擬機(jī)器吸收了機(jī)器模型之間的不同之處,因此可以很容易在成像裝置上執(zhí)行該應(yīng)用程序。
      另外,根據(jù)本發(fā)明,提供了一種在其中包括在程序中執(zhí)行的實(shí)用程序庫(kù)的信息處理裝置,其中該程序包括嵌套模塊,該嵌套模塊中的每個(gè)模塊都是根據(jù)狀態(tài)轉(zhuǎn)換模型構(gòu)成的,其中,在狀態(tài)轉(zhuǎn)換模型中,根據(jù)以下內(nèi)容來(lái)確定程序的操作程序的第一狀態(tài),該狀態(tài)下程序的事件,當(dāng)在該狀態(tài)下出現(xiàn)該事件時(shí)執(zhí)行的事件函數(shù),以及在該事件函數(shù)被執(zhí)行之后由第一狀態(tài)變換來(lái)的第二狀態(tài)。
      其中該實(shí)用程序庫(kù)包括狀態(tài)轉(zhuǎn)換模型裝入函數(shù),用來(lái)將各個(gè)模塊的區(qū)域指定給由多個(gè)模塊共享的共享變量。
      根據(jù)本發(fā)明,由多個(gè)模塊共享的共享變量可以安全地使用,并且可以避免由變量的值導(dǎo)致的失敗,因此該信息處理裝置操作穩(wěn)定。
      上述的目的也可以通過(guò)一種程序中的狀態(tài)轉(zhuǎn)換模型來(lái)實(shí)現(xiàn),其中根據(jù)以下內(nèi)容來(lái)確定程序的操作程序的第一狀態(tài),該狀態(tài)下程序的事件,當(dāng)在該狀態(tài)下出現(xiàn)該事件時(shí)執(zhí)行的事件函數(shù),以及在該事件函數(shù)被執(zhí)行之后由第一狀態(tài)變換來(lái)的第二狀態(tài)。
      其中該狀態(tài)轉(zhuǎn)換模型在信息處理裝置中使用,所述信息處理裝置包括在程序中執(zhí)行的實(shí)用程序庫(kù);其中該程序包括嵌套模塊,該嵌套模塊中的每個(gè)模塊都是根據(jù)狀態(tài)轉(zhuǎn)換模型構(gòu)成的,其中該實(shí)用程序庫(kù)包括狀態(tài)轉(zhuǎn)換模型裝入函數(shù),用來(lái)將各個(gè)模塊的區(qū)域指定給由多個(gè)模塊共享的共享變量。


      本發(fā)明的其它目的、特征以及優(yōu)點(diǎn)將隨著對(duì)附圖的更為詳細(xì)的說(shuō)明而變得更加明確,其中圖1為根據(jù)第一實(shí)施例的復(fù)合機(jī)器的主結(jié)構(gòu)以及網(wǎng)絡(luò)結(jié)構(gòu)的方框圖;圖2為根據(jù)第一實(shí)施例的復(fù)合機(jī)器100的方框圖;圖3示出了根據(jù)第一實(shí)施例的復(fù)合機(jī)器100的硬件結(jié)構(gòu)的示例;圖4為接收請(qǐng)求消息的復(fù)合機(jī)器中處理過(guò)程的流程圖;圖5示出了debug.cgi的操作流程圖;圖6為當(dāng)編程屏幕201中的存儲(chǔ)按鈕、執(zhí)行設(shè)置按鈕以及測(cè)試執(zhí)行按鈕中的一個(gè)被點(diǎn)擊時(shí),編程服務(wù)程序132的操作流程圖。
      圖7為編程屏幕201的示例;圖8為根據(jù)第一實(shí)施例的定制程序的示例;圖9為直接存儲(chǔ)在定制中的定制程序名稱的示例;圖10為按鍵相關(guān)表格的示例;圖11為從復(fù)合機(jī)器100打開開始至執(zhí)行定制程序的過(guò)程流程圖;圖12為裝入設(shè)置文件211的示例;圖13為第二實(shí)施例中復(fù)合機(jī)器主結(jié)構(gòu)的方框圖;圖14為第二實(shí)施例的編程屏幕1101的示例;圖15為根據(jù)第三實(shí)施例復(fù)合機(jī)器1300的功能性結(jié)構(gòu)方框圖;圖16為從打開復(fù)合機(jī)器1300至完成指定按鈕為止的過(guò)程流程圖;圖17為在第三實(shí)施例中使用的裝入設(shè)置文件211的示例;圖18為按鈕設(shè)置屏幕的示例;圖19示出了包括了第四實(shí)施例中的復(fù)合機(jī)器1700的網(wǎng)絡(luò)結(jié)構(gòu);圖20為復(fù)合機(jī)器1700的功能性方框圖;
      圖21為根據(jù)第四實(shí)施例的裝入設(shè)置文件的示例;圖22為根據(jù)第五實(shí)施例的復(fù)合機(jī)器的功能性方框圖;圖23為通過(guò)使用PC 200上的Visual Basic開發(fā)環(huán)境來(lái)開發(fā)VB應(yīng)用程序的示例;圖24為VB應(yīng)用程序的示例;圖25為VB應(yīng)用程序的示例;圖26為第六實(shí)施例復(fù)合機(jī)器1900的方框圖;圖27示出了PC中Java開發(fā)環(huán)境以及復(fù)合機(jī)器1900中Java執(zhí)行環(huán)境的結(jié)構(gòu);圖28為復(fù)合機(jī)器1900中的Java執(zhí)行環(huán)境;圖29為包括Web服務(wù)器的網(wǎng)絡(luò)結(jié)構(gòu);圖30為Java應(yīng)用程序開發(fā)的流程;圖31為Java開發(fā)環(huán)境的另一示例;圖32為由仿真程序在PC上顯示出來(lái)的操作面板屏幕;圖33為當(dāng)仿真程序執(zhí)行載入程序功能時(shí)的屏幕;圖34為操作面板類的分層結(jié)構(gòu);圖35為解釋生成一個(gè)窗口的類的圖;圖36為采樣Java應(yīng)用程序;圖37為圖36中所示的Java程序的執(zhí)行結(jié)果;圖38為Java應(yīng)用程序從上傳至下載的示意圖;圖39為載入程序處理過(guò)程的流程圖;圖40為在復(fù)合機(jī)器上顯示的載入程序的屏幕;圖41為載入應(yīng)用程序窗口;圖42為由載入程序顯示出來(lái)的Java應(yīng)用程序列表;圖43為改變更新時(shí)間間隔的窗口;圖44不載入當(dāng)前應(yīng)用程序的窗口;圖45為連接應(yīng)用程序的過(guò)程;圖46示出了根據(jù)第七實(shí)施例的外部應(yīng)用程序117中的進(jìn)程結(jié)構(gòu);圖47為外部應(yīng)用程序具有狀態(tài)1和狀態(tài)2時(shí)的狀態(tài)轉(zhuǎn)換;圖48為外部應(yīng)用程序中具有嵌套結(jié)構(gòu)的模塊的示例;圖49為外部應(yīng)用程序源代碼的定義部分的示例;
      圖50為外部應(yīng)用程序源代碼的函數(shù)定義部分的示例;圖51為狀態(tài)轉(zhuǎn)換模型裝入函數(shù)StMachine()的處理流程圖;圖52為共享變量區(qū)域的分配狀態(tài);圖53為狀態(tài)轉(zhuǎn)換模型裝入函數(shù)StMachine()的另一個(gè)處理過(guò)程流程圖。
      具體實(shí)施例方式
      下面,將描述根據(jù)本發(fā)明優(yōu)選實(shí)施例的成像裝置。
      (第一實(shí)施例)圖1為成像裝置(在下文中稱作“復(fù)合機(jī)器”)的主結(jié)構(gòu)以及網(wǎng)絡(luò)結(jié)構(gòu)的方框圖。第一實(shí)施例的復(fù)合機(jī)器100與因特網(wǎng)相連。在該結(jié)構(gòu)中,可以從一個(gè)客戶終端,例如與因特網(wǎng)相連的PC(個(gè)人計(jì)算機(jī))輸入用于復(fù)合機(jī)器的定制程序,并且可以通過(guò)PC調(diào)試程序。
      如圖1所示,該復(fù)合機(jī)器100通過(guò)因特網(wǎng)220與PC 200相連,其中采用TCP/IP通信協(xié)議。該復(fù)合機(jī)器100包括復(fù)合機(jī)器初始化部分129,程序裝入部分131,編程服務(wù)程序132,解釋程序134,NCS(網(wǎng)絡(luò)控制服務(wù))128,HTTPD(超文本傳送協(xié)議守護(hù)程序)106,共享存儲(chǔ)器105以及HDD 103。
      該編程服務(wù)程序132在PC 200的網(wǎng)絡(luò)瀏覽器上顯示出編程屏幕201,并且從該屏幕201上接收定制程序,其中該編程屏幕201是一個(gè)由http文件構(gòu)成的網(wǎng)頁(yè)。另外,該編程服務(wù)程序132在被用作HDD 103的定制區(qū)域的定制目錄212中存儲(chǔ)從PC中輸入的定制程序。而且,該編程服務(wù)程序132在后面將提到的裝入設(shè)置文件211中注冊(cè)定制程序,使得該定制程序能夠在復(fù)合機(jī)器100上執(zhí)行。
      http文件根據(jù)http協(xié)議在編程服務(wù)程序132與PC 200的網(wǎng)絡(luò)瀏覽器之間傳送。因此,該編程服務(wù)程序132具有Web服務(wù)器(http服務(wù)器)的功能。
      使用能夠被解釋程序解釋的語(yǔ)言來(lái)寫入定制程序。具體地,該定制程序?yàn)閁NIX的外殼腳本。
      該解釋程序134逐步解釋并執(zhí)行定制程序。在該實(shí)施例中,解釋程序134為執(zhí)行外殼腳本的命令解釋程序(bsh,csh等)。該命令解釋程序134與UNIX操作系統(tǒng)的內(nèi)核程序135相分離。
      如果HDD 103的診斷結(jié)果正常,則該程序裝入部分131就會(huì)裝入已被安裝在HDD 103中的外部應(yīng)用程序117。另外,該程序裝入部分131也可以裝入存儲(chǔ)在存儲(chǔ)介質(zhì),例如IC卡上的外部應(yīng)用程序。
      該復(fù)合機(jī)器初始化部分129是一個(gè)裝在一般操作系統(tǒng)OS 121中的初始化過(guò)程。該復(fù)合機(jī)器初始化部分129裝入控制服務(wù)程序、應(yīng)用程序103(不包括外部應(yīng)用程序)以及程序裝入部分131。
      該NCS 128通過(guò)網(wǎng)絡(luò)控制通信,并且通知該編程服務(wù)程序132其已經(jīng)從httpd 106接收到了一個(gè)請(qǐng)求消息。
      該httpd 106是一個(gè)包括在操作系統(tǒng)中的過(guò)程(端口監(jiān)控程序)。該httpd 106一直監(jiān)視端口80接收請(qǐng)求消息,并發(fā)出響應(yīng)消息。該請(qǐng)求消息以及響應(yīng)消息的結(jié)構(gòu)與一般http協(xié)議的消息是一樣的,其中各個(gè)消息包括一個(gè)用html格式描述的消息主體。該httpd 106通知NCS 128其已經(jīng)從因特網(wǎng)接收了一個(gè)請(qǐng)求消息,并將其存儲(chǔ)在共享存儲(chǔ)器105中。
      該共享存儲(chǔ)器105用于執(zhí)行httpd 106與編程服務(wù)程序132之間的進(jìn)程間通信。通過(guò)該共享存儲(chǔ)器來(lái)發(fā)送以及接收請(qǐng)求消息以及響應(yīng)消息。
      該HDD 103存儲(chǔ)裝入設(shè)置文件211,并將定制程序存儲(chǔ)在定制目錄212中。
      該P(yáng)C 200為編程服務(wù)程序也就是服務(wù)器的客戶終端。網(wǎng)絡(luò)瀏覽器在PC200上運(yùn)行。該網(wǎng)絡(luò)瀏覽器在PC 200的顯示器上顯示出編程屏幕201或者其它屏幕,其中使用http協(xié)議從編程服務(wù)程序132中發(fā)送出編程屏幕。用戶可以在Web瀏覽器上輸入數(shù)據(jù)。
      下面,將描述該實(shí)施例中復(fù)合機(jī)器100的功能性結(jié)構(gòu)。圖2為復(fù)合機(jī)器100的方框圖。如圖2所示,該復(fù)合機(jī)器100包括硬件資源和軟件組110。該硬件資源包括黑白行式打印機(jī)(B&amp;W LP)101,彩色激光打印機(jī)102,硬盤驅(qū)動(dòng)器103,以及例如掃描儀、傳真機(jī)、硬盤、存儲(chǔ)器(RAM、NV-RAM、ROM等等)的其它硬件資源104以及網(wǎng)絡(luò)接口。軟件組110包括平臺(tái)120、應(yīng)用程序130、復(fù)合機(jī)器初始化部分129、程序裝入部分131、以及編程服務(wù)程序132。
      該平臺(tái)120包括一個(gè)控制服務(wù)程序,用來(lái)解釋來(lái)自應(yīng)用程序的處理請(qǐng)求,以便向硬件資源發(fā)出查詢請(qǐng)求;一個(gè)系統(tǒng)資源管理器(SRM)123,用來(lái)管理一個(gè)或多個(gè)硬件資源以及仲裁來(lái)自控制服務(wù)程序的查詢請(qǐng)求;以及一個(gè)通用OS121。
      該控制服務(wù)程序包括多個(gè)服務(wù)模塊,分別為系統(tǒng)控制服務(wù)程序(SCS)122,引擎控制服務(wù)程序(ECS)124,存儲(chǔ)器控制服務(wù)程序(MCS)125,操作面板控制服務(wù)程序(OCS)126,傳真機(jī)控制服務(wù)程序(FCS)127,以及網(wǎng)絡(luò)控制服務(wù)程序(NCS)128。該編程服務(wù)程序131位于控制服務(wù)層。另外,該平臺(tái)120還包括能夠通過(guò)使用預(yù)定的功能從應(yīng)用程序130接收處理請(qǐng)求的應(yīng)用程序接口(API)。
      該通用OS 121為諸如UNIX之類的通用操作系統(tǒng),并且能夠執(zhí)行平臺(tái)120上的每個(gè)軟件段以及并行處理的應(yīng)用程序130。
      SRM 123的進(jìn)程通過(guò)SCS 122進(jìn)行系統(tǒng)控制以及資源管理。SRM 123的進(jìn)程對(duì)來(lái)自使用硬件資源的上層的請(qǐng)求執(zhí)行仲裁和執(zhí)行控制,其中硬件資源包括引擎例如掃描儀部分以及打印機(jī)部分,存儲(chǔ)器,HDD文件,主機(jī)I/O(Centronics I/F,網(wǎng)絡(luò)I/F,IEEE1394I/F,RS232C I/F等等)。
      更詳細(xì)的,由SRM 123確定被請(qǐng)求的硬件資源是否可用(是否它沒(méi)有被另一個(gè)請(qǐng)求使用),并且當(dāng)該被請(qǐng)求的硬件資源可用時(shí),通知上一層該被請(qǐng)求的硬件資源是可用的。另外,該SRM 123對(duì)來(lái)自上層的請(qǐng)求執(zhí)行使用硬件資源的調(diào)度,并且直接執(zhí)行對(duì)應(yīng)于該請(qǐng)求的處理過(guò)程(例如,打印機(jī)引擎的紙張傳輸以及成像,分配存儲(chǔ)區(qū)域,文件生成等等)。
      SCS 122的進(jìn)程進(jìn)行應(yīng)用程序的管理,操作部分的控制,系統(tǒng)屏幕的顯示,LED顯示,資源管理以及應(yīng)用程序的中斷控制。
      ECS 124的進(jìn)程控制硬件資源的引擎,其中該硬件資源包括黑白行式打印機(jī)(B&amp;W LP)101,彩色行式打印機(jī)(Color LP)102,掃描儀,以及傳真機(jī)等等。MCS 125獲取以及釋放圖像存儲(chǔ)區(qū)域,使用硬盤裝置(HDD),并壓縮以及擴(kuò)展圖像數(shù)據(jù)。
      FCS 127的進(jìn)程提供了API,用于通過(guò)PSTN/ISDN網(wǎng)絡(luò)從各個(gè)應(yīng)用程序?qū)影l(fā)送和接收傳真,注冊(cè)/歸類由BKM(備份SRAM)管理的各種類型的傳真數(shù)據(jù),讀取傳真,接收和打印傳真,以及混合發(fā)送和接收。
      NCS 128的進(jìn)程提供了用于需要網(wǎng)絡(luò)I/O的應(yīng)用程序的一般服務(wù)程序。該NCS 128將通過(guò)協(xié)議從網(wǎng)絡(luò)中接收到的數(shù)據(jù)分配給相應(yīng)的應(yīng)用程序,并在向網(wǎng)絡(luò)中發(fā)送數(shù)據(jù)時(shí)充當(dāng)應(yīng)用程序與網(wǎng)絡(luò)之間的中介。更具體的,NCS 128還包括服務(wù)器端口監(jiān)控程序例如文件傳輸協(xié)議守護(hù)程序(ftpd),超文本傳送協(xié)議守護(hù)程序(httpd),線路協(xié)議守護(hù)程序(lpd),簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議守護(hù)程序(snmpd),遠(yuǎn)程通信網(wǎng)絡(luò)協(xié)議守護(hù)程序(telnetd),簡(jiǎn)單郵件傳輸協(xié)議守護(hù)程序(smtpd),以及協(xié)議的客戶端功能。
      OCS 126的進(jìn)程控制用于在操作者(用戶)與機(jī)器的控制部分之間傳輸信息的操作面板。在該實(shí)施例的復(fù)合機(jī)器100中,OCS 126包括一個(gè)OCS處理部分以及一個(gè)OCS函數(shù)庫(kù)部分。該OCS處理部分從操作面板獲取一個(gè)表示該按鍵被按壓的按鍵事件,并將對(duì)應(yīng)于該按鍵事件的按鍵事件函數(shù)發(fā)送給SCS 122。該OSC函數(shù)庫(kù)注冊(cè)繪圖函數(shù)以及用來(lái)控制操作面板的其它函數(shù),其中該繪圖函數(shù)被用作根據(jù)來(lái)自具有控制權(quán)的應(yīng)用程序或控制服務(wù)程序的請(qǐng)求在操作面板上輸出各種圖像。當(dāng)開發(fā)出一種應(yīng)用程序時(shí),OCS函數(shù)庫(kù)中的函數(shù)被鏈接至一個(gè)通過(guò)編譯應(yīng)用程序的源代碼文件而生成的目標(biāo)程序,因此生成了一個(gè)應(yīng)用程序的可執(zhí)行文件。所有的OCS 126都可以被配置為一個(gè)進(jìn)程,或可以被配置成一個(gè)OCS庫(kù)。
      應(yīng)用程序130包括打印機(jī)應(yīng)用程序111,是一種用于打印機(jī)的頁(yè)面描述語(yǔ)言(PDL)和PCL以及頁(yè)面描述語(yǔ)言(PS)的應(yīng)用程序;復(fù)制應(yīng)用程序112;用于傳真機(jī)的傳真機(jī)應(yīng)用程序113;用于掃描儀的掃描儀應(yīng)用程序114;網(wǎng)絡(luò)文件應(yīng)用程序115以及處理檢查應(yīng)用程序116。
      進(jìn)程間通信在應(yīng)用程序130與控制服務(wù)程序之間進(jìn)行,其中調(diào)用一個(gè)函數(shù),發(fā)送一個(gè)返回值,并且發(fā)送及接收一個(gè)消息。通過(guò)使用進(jìn)程間通信,就實(shí)現(xiàn)了用于成像處理的用戶服務(wù)程序,例如復(fù)制、打印、掃描以及發(fā)送傳真。
      如上所述,第一實(shí)施例的復(fù)合機(jī)器100包括多個(gè)應(yīng)用程序和多個(gè)控制服務(wù)程序,并且每個(gè)都是一個(gè)進(jìn)程。在各個(gè)進(jìn)程中,會(huì)生成多個(gè)線程,并且并行執(zhí)行這些線程。該控制服務(wù)程序?yàn)閼?yīng)用程序130提供一般的服務(wù)。在并行執(zhí)行進(jìn)程以及并行執(zhí)行線程時(shí),對(duì)圖像信息提供用戶服務(wù)例如復(fù)制、打印、掃描以及發(fā)送傳真,并在彼此之間執(zhí)行進(jìn)程間通信。第三方可以開發(fā)出用于復(fù)合機(jī)器100的外部應(yīng)用程序,并且在復(fù)合機(jī)器100的控制服務(wù)層的應(yīng)用層中執(zhí)行該應(yīng)用程序。
      在第一實(shí)施例的復(fù)合機(jī)器100中,雖然應(yīng)用程序和控制服務(wù)程序的進(jìn)程都進(jìn)行操作,可是應(yīng)用程序和控制服務(wù)程序可以是一個(gè)簡(jiǎn)單的進(jìn)程。另外,應(yīng)用程序130中的各個(gè)應(yīng)用程序也可以逐個(gè)增加或刪除。
      此外,該復(fù)合機(jī)器100包括一個(gè)安裝程序。該安裝程序用于將第三者開發(fā)的外部應(yīng)用程序安裝到HDD 103中。接著,該程序裝入部分131從HDD 103中裝入該外部應(yīng)用程序。該預(yù)安裝的應(yīng)用程序例如打印機(jī)應(yīng)用程序、控制服務(wù)程序,HDD診斷部分132,以及程序裝入部分131被嵌入到閃存中。當(dāng)向該復(fù)合機(jī)器供電時(shí),由復(fù)合機(jī)器初始化部分129裝入該預(yù)安裝程序。
      圖3示出了該復(fù)合機(jī)器100硬件結(jié)構(gòu)的一個(gè)示例。
      該復(fù)合機(jī)器100包括控制器160、操作面板175、傳真控制單元(FCU)176、以及引擎部分177,該部分為硬件資源例如用于成像處理的打印機(jī)。該控制器160包括CPU 161、系統(tǒng)存儲(chǔ)器162、北橋(NB)163、南橋(SB)164、ASIC 166、本地存儲(chǔ)器167、HDD 168、網(wǎng)絡(luò)接口卡(NIC)169、SD卡槽170、USB裝置、IEEE1394裝置172、以及Centronics 173。該存儲(chǔ)器162、167可以包括例如RAM和/或ROM。該FCU 176以及引擎部分177通過(guò)PCI總線178與控制器中的ASIC 166相連。該CPU 161通過(guò)讀取RAM執(zhí)行復(fù)合機(jī)器100中安裝的應(yīng)用程序和控制服務(wù)程序。
      接下來(lái),將描述復(fù)合機(jī)器100生成程序的方法。首先,用戶在PC 200上裝入網(wǎng)絡(luò)瀏覽器。接著,用戶指定復(fù)合機(jī)器100中編程屏幕上的一個(gè)URL(例如,http//www.xxx.yyy/zzz/debug.htm),因此該P(yáng)C 200能夠訪問(wèn)復(fù)合機(jī)器的編程服務(wù)程序132。該通過(guò)網(wǎng)絡(luò)瀏覽器訪問(wèn)的編程服務(wù)程序132在PC 200的網(wǎng)絡(luò)瀏覽器上顯示編程屏幕201(debug.htm)。
      圖7示出了編程屏幕201的一個(gè)示例。如圖7所示,該編程屏幕201包括程序輸入?yún)^(qū)、索引按鈕、上傳按鈕、存儲(chǔ)按鈕、刪除按鈕、測(cè)試執(zhí)行按鈕、以及執(zhí)行設(shè)置按鈕。
      該編程屏幕201是一個(gè)以html格式書寫的文件(debug.htm)。該網(wǎng)絡(luò)瀏覽器讀取文件,使得編程屏幕201能夠顯示在PC 200上。該編程服務(wù)程序執(zhí)行一個(gè)CGI腳本,用來(lái)執(zhí)行響應(yīng)于從編程屏幕輸入的操作的處理過(guò)程。另外,該編程服務(wù)程序132將處理結(jié)果反映到編程屏幕上并將該結(jié)果返回給PC 200的網(wǎng)絡(luò)瀏覽器。
      更具體的,當(dāng)編程服務(wù)程序132接收到一個(gè)用來(lái)輸入定制程序的請(qǐng)求(例如點(diǎn)擊操作)時(shí),該編程服務(wù)程序執(zhí)行debug.cgi腳本。雖然在本發(fā)明中,編程服務(wù)程序通過(guò)執(zhí)行debug.cgi腳本來(lái)進(jìn)行各種處理,但是也可以采用被CGI腳本調(diào)用的其它程序來(lái)進(jìn)行各種處理。另外,該編程屏幕可以用XML(可擴(kuò)展標(biāo)記語(yǔ)言)格式書寫。
      該索引按鈕是用于指定存儲(chǔ)在PC 200的存儲(chǔ)區(qū)域中的定制程序的按紐。通過(guò)按壓該索引按鈕,PC 200的目錄就顯示出來(lái)了。如果用戶指定了一個(gè)目錄中的定制程序,則該定制程序的文件名稱就會(huì)顯示在文件名稱區(qū)中。在按下索引按鈕時(shí),該P(yáng)C 200可以指定例如HDD133的復(fù)合機(jī)器記錄區(qū)中的一個(gè)目錄。
      通過(guò)點(diǎn)擊上傳按鈕,定制程序被上傳至復(fù)合機(jī)器100。該程序輸入?yún)^(qū)為輸入定制程序的區(qū)域。在程序輸入?yún)^(qū),可以通過(guò)使用輸入裝置例如PC 200的鍵盤直接將定制程序輸入至PC 200中。另外,還可以通過(guò)點(diǎn)擊索引按鈕來(lái)指定目錄中已經(jīng)存在的程序文件來(lái)輸入定制程序。在debug.htm中,在對(duì)應(yīng)于程序輸入?yún)^(qū)的各行的頭部都會(huì)描述一個(gè)字符串“program_list”。
      在上傳完定制程序之后,通過(guò)點(diǎn)擊保存按鈕將定制程序保存在定制目錄中。通過(guò)點(diǎn)擊刪除按鈕,可以刪除在輸入?yún)^(qū)中輸入的定制程序。
      該執(zhí)行設(shè)置按鈕用于將定制程序與一個(gè)按鈕相關(guān)聯(lián),這樣就可以通過(guò)按壓該按鈕在復(fù)合機(jī)器100上執(zhí)行存儲(chǔ)在定制目錄中的定制程序。如果該指定設(shè)置按鈕被壓下,則該編程服務(wù)程序132就會(huì)為通過(guò)按鍵代碼在定制程序中指定的按鈕在定制目錄的文件中查找按鈕,因此該定制程序能夠與該按鈕相關(guān)聯(lián)。接著,就會(huì)生成一個(gè)其中定制程序的名稱與按鈕的按鍵代碼相互關(guān)聯(lián)的表格,并且將該表格存儲(chǔ)在HDD 103或閃存中。
      該測(cè)試執(zhí)行按鈕用來(lái)試驗(yàn)性地執(zhí)行定制程序。
      圖8為定制程序的一個(gè)示例。如圖8所示,該定制程序?yàn)楦鶕?jù)該實(shí)施例的一個(gè)UNIX外殼腳本。由命令解釋程序134逐步地執(zhí)行輸入外殼腳本,其中該命令解釋程序134就是UNIX的命令解釋程序。這樣,就不需要編譯以及鏈接定制程序。
      另外,在該外殼腳本中,可以使用指定復(fù)合機(jī)器的命令。該命令由用于復(fù)合機(jī)器的程序庫(kù)提供。如圖8所示的腳本示出的示例為通過(guò)掃描儀讀取一個(gè)文檔(scanimage),對(duì)被壓縮為TIFF格式的圖像數(shù)據(jù)進(jìn)行解壓縮(decomp),以及對(duì)解壓縮后的圖像數(shù)據(jù)進(jìn)行字符識(shí)別處理(ocr)。接著,通過(guò)電子郵件將識(shí)別結(jié)果作為文本數(shù)據(jù)發(fā)送(mail)。在該腳本中,由程序庫(kù)提供命令“scanimage”,“decomp”以及“ocr”??梢栽诙ㄖ瞥绦蛑兄付ㄓ糜趫?zhí)行外殼腳本的按鈕(按鍵)。
      在PC 200的網(wǎng)絡(luò)瀏覽器上顯示的編程屏幕(debug.htm)中,當(dāng)通過(guò)點(diǎn)擊索引按鈕來(lái)指定存儲(chǔ)在PC 200中的定制程序時(shí),或者是當(dāng)定制程序被直接輸入到程序輸入?yún)^(qū)時(shí),并且上傳按鈕被點(diǎn)擊,則就會(huì)從網(wǎng)絡(luò)瀏覽器中向復(fù)合機(jī)器的編程服務(wù)程序132中發(fā)送一個(gè)請(qǐng)求消息。該“debug.htm”就被包括在請(qǐng)求消息的消息主體內(nèi),并且debug.htm中還包括用來(lái)調(diào)用debug.cgi的腳本。這樣,當(dāng)接收到該請(qǐng)求消息時(shí),編程服務(wù)程序132就會(huì)分析請(qǐng)求消息并執(zhí)行debug.cgi。
      接下來(lái),對(duì)接收請(qǐng)求消息的復(fù)合機(jī)器100的處理過(guò)程進(jìn)行說(shuō)明。圖4示出了該過(guò)程。
      在步驟S301中,該httpd 106一直監(jiān)視端口80,并且通過(guò)端口80從PC 200中接收請(qǐng)求消息。接著,在步驟S302中,httpd 106讀取接收到的請(qǐng)求消息,并且將其寫入到共享存儲(chǔ)器105中。然后,在步驟S303中,httpd 106通知NCS 120它已經(jīng)接收到了請(qǐng)求消息。
      在步驟S304中,該NCS 128通知編程服務(wù)132它已經(jīng)接收到了請(qǐng)求消息。在步驟S305中,該通知觸發(fā)編程服務(wù)程序132來(lái)指定共享存儲(chǔ)器105并讀取請(qǐng)求消息。接著,在步驟S306中編程服務(wù)程序132分析請(qǐng)求消息中的信息,并在步驟S307中根據(jù)請(qǐng)求消息的消息主體中所描述的信息執(zhí)行處理過(guò)程。如果html描述的消息主體中包括執(zhí)行CGI程序的信息,則相應(yīng)的CGI被執(zhí)行。
      接著,在步驟S308中,編程服務(wù)程序132通過(guò)httpd 106將執(zhí)行結(jié)果作為響應(yīng)消息返回給PC 200。
      下面,將對(duì)由編程服務(wù)程序132執(zhí)行的debug.cgi處理過(guò)程進(jìn)行說(shuō)明。圖5為debug.cgi的操作流程圖。該編程服務(wù)程序132可以包括程序debug.cgi,或者該debug.cgi也可以存在于編程服務(wù)程序132的外部。下面屬于編程服務(wù)程序132包括debug.cgi的情況。
      在步驟S401中,編程服務(wù)程序132從頂部開始逐行讀取debug.htm。接著,在步驟S402中,由編程服務(wù)程序通過(guò)確定該行是否包括字符串“program_list”來(lái)確定該行是否表示程序輸入?yún)^(qū)。
      在步驟S403中,如果編程服務(wù)程序132確定該行指示程序輸入?yún)^(qū),則編程服務(wù)程序132將該行寫入一個(gè)程序文件,并且在步驟S404將該行發(fā)送到PC 200。
      在步驟S405中,由編程服務(wù)程序確定該行是否為最后一行。如果該行為最后一行,則處理結(jié)束。如果該行不是最后一行,則對(duì)下一行執(zhí)行上面所提到的處理。因此,生成該程序文件并且該程序被顯示在PC 200的網(wǎng)絡(luò)瀏覽器上。
      除了上述提到的方法之外,另外很多的方法將輸入到PC 200中的程序發(fā)送至復(fù)合機(jī)器中去。例如,通過(guò)按下上傳按鈕,該P(yáng)C 200將輸入的程序存儲(chǔ)在程序文件中并將該程序文件發(fā)送至復(fù)合機(jī)器。如果需要的話,該復(fù)合機(jī)器將該程序文件存儲(chǔ)在一個(gè)區(qū)域內(nèi)并將編程文件中的內(nèi)容發(fā)送至PC 200。
      如上所述,該從編程屏幕210輸入的定制程序被上傳到復(fù)合機(jī)器100中,并且該被上傳的定制程序被顯示出來(lái)。在這之后,該存儲(chǔ)按鈕、執(zhí)行設(shè)置按鈕以及測(cè)試執(zhí)行按鈕變得可操作。當(dāng)一個(gè)按鈕被點(diǎn)擊時(shí),編程服務(wù)程序132就會(huì)執(zhí)行下面的進(jìn)程。
      圖6為當(dāng)編程屏幕201中的存儲(chǔ)按鈕、執(zhí)行設(shè)置按鈕以及測(cè)試執(zhí)行按鈕中之一被點(diǎn)擊時(shí),編程服務(wù)程序132的操作流程圖。該處理是用同編程服務(wù)程序132中的CGI腳本類似的Java腳本書寫的。PC 200檢測(cè)編程屏幕201上的按鈕操作作為一個(gè)事件,并把該事件發(fā)送給編程服務(wù)程序。該編程服務(wù)程序132執(zhí)行根據(jù)該事件的Java腳本。下面屬于Java腳本包括在編程服務(wù)程序132中的情況。
      在步驟S501中,由編程服務(wù)程序132確定被點(diǎn)擊按鈕的類型。若編程屏幕201中的存儲(chǔ)按鈕被點(diǎn)擊了,則會(huì)在步驟S502中由該編程服務(wù)程序132通過(guò)使用由用戶指定的名稱將定制程序存儲(chǔ)在復(fù)合機(jī)器100的HDD 103的定制目錄中。
      圖9示出了直接存儲(chǔ)在定制中的定制程序名稱的示例。如圖9所示,HDD103的目錄為hdd/xxx/opepane,其中存有定制程序shell1,shell2以及shell3。
      在步驟S503中,當(dāng)編程屏幕201中的執(zhí)行設(shè)置按鈕被按下,則該編程服務(wù)程序132就會(huì)將該定制程序與按鈕關(guān)聯(lián)在一起。
      圖10示出了按鍵相關(guān)表的一個(gè)示例。如圖10所示,按鈕的按鍵代碼與定制程序名稱相關(guān)。在步驟S504中,當(dāng)編程屏幕上的檢測(cè)執(zhí)行按鈕被按下,則該編程服務(wù)程序132就會(huì)執(zhí)行定制程序。該測(cè)試執(zhí)行通過(guò)由命令解釋程序發(fā)出執(zhí)行定制程序的命令來(lái)實(shí)現(xiàn)。這時(shí),與操作面板210上所示相同的屏幕顯示在PC 200的瀏覽器上。例如這可以通過(guò)以下的方法來(lái)實(shí)現(xiàn)。編程服務(wù)程序132獲取通過(guò)對(duì)操作面板屏幕執(zhí)行定制程序而發(fā)出的繪圖指令,并把該指令發(fā)送給PC 200,這樣就使得與繪圖指令在操作面板上顯示的屏幕相同的屏幕顯示在PC 200上。
      如果在測(cè)試執(zhí)行過(guò)程中出現(xiàn)了錯(cuò)誤,則用戶修改PC 200上的程序,上傳修改后的程序并再次執(zhí)行該程序。
      接下來(lái),將對(duì)執(zhí)行按照上述方法生成的定制程序的過(guò)程進(jìn)行說(shuō)明。圖11示出了從復(fù)合機(jī)器100打開開始至執(zhí)行定制程序的過(guò)程的流程圖。
      在將定制程序存儲(chǔ)在定制路徑中并對(duì)裝入設(shè)置文件211進(jìn)行設(shè)置之后,用戶開始向復(fù)合機(jī)器100供電。在步驟S1001中,復(fù)合機(jī)器100通過(guò)使用ROM監(jiān)視器來(lái)診斷硬件。之后,在步驟S1002中裝入一般OS 121,并在步驟S1003中裝入復(fù)合機(jī)器初始化部分129。在步驟S1004中,復(fù)合機(jī)器初始化部分129裝入控制服務(wù)程序,并且在步驟S1005中裝入在運(yùn)輸時(shí)已經(jīng)包括在復(fù)合機(jī)器中的已經(jīng)存在的應(yīng)用程序例如復(fù)制應(yīng)用程序112,打印機(jī)應(yīng)用程序111等。接著,在步驟S 1006中,為了裝入在運(yùn)輸復(fù)合機(jī)器之后開發(fā)出來(lái)的外部應(yīng)用程序而裝入程序裝入部分131。
      在步驟S1007中,該程序裝入部分131指向HDD 103中的裝入設(shè)置文件211,以便于獲取將要被執(zhí)行的程序的名稱。
      圖12為裝入設(shè)置文件211的示例。如圖11所示,在定制設(shè)置文件211中,將有程序裝入部分131裝入的程序被注冊(cè)為“程序名稱,定制程序名稱”。在圖12所示的示例中,首先注冊(cè)外殼腳本的外殼程序,接著將xxx應(yīng)用程序作為外部應(yīng)用程序來(lái)注冊(cè)。
      當(dāng)用戶壓下(觸摸)在操作面板210的操作顯示部分中顯示出來(lái)的與定制程序相關(guān)的按鈕(按鍵)時(shí),由該外殼來(lái)執(zhí)行定制程序,也就是外殼腳本。更進(jìn)一步,該編程服務(wù)程序132獲取按鈕的按壓信息,并且指定按鍵相關(guān)表,因此該編程服務(wù)程序132可以獲取對(duì)應(yīng)于該按鈕的定制程序的文件名稱。接著,編程服務(wù)程序132執(zhí)行定制程序。也可以通過(guò)設(shè)置裝入設(shè)置文件中定制程序的名稱來(lái)執(zhí)行該定制程序。
      如上所述,根據(jù)第一實(shí)施例的復(fù)合機(jī)器,該編程服務(wù)程序132使得PC 200顯示編程屏幕,以便于輸入定制程序。接著該命令解釋程序134執(zhí)行定制程序。因此,在開發(fā)定制程序的過(guò)程中,可以在編程屏幕上增加或修改定制程序,并且在復(fù)合機(jī)器上執(zhí)行定制程序而不需要編譯以及鏈接。因此,可以很容易的生成程序。
      另外,根據(jù)第一實(shí)施例的復(fù)合機(jī)器,由于可以從PC 200上輸入定制程序,因此與從復(fù)合機(jī)器上輸入定制程序相比可以更高效的輸入定制程序。
      在第一實(shí)施例中,因特網(wǎng)220用于連接PC 200和復(fù)合機(jī)器。除了因特網(wǎng)之外,也可以采用LAN。另外,也可以采用除了TCP/IP以外的其它協(xié)議。
      另外,PC 200除了具有從復(fù)合機(jī)器接收debug.htm文件的程序以外,還具有顯示編程屏幕以及發(fā)送定制程序的程序。
      (第二實(shí)施例)在第一實(shí)施例中,在PC 200中生成定制程序并將該程序存儲(chǔ)在復(fù)合機(jī)器100中。相反,在第二實(shí)施例中,從復(fù)合機(jī)器的操作面板中輸入定制程序。
      圖13為第二實(shí)施例中復(fù)合機(jī)器的主結(jié)構(gòu)方框圖。該復(fù)合機(jī)器的其它結(jié)構(gòu)與圖2中第一實(shí)施例的復(fù)合機(jī)器的其它結(jié)構(gòu)的相同。如圖13所示,該實(shí)施例中的復(fù)合機(jī)器1100包括編程服務(wù)程序1132,解釋程序(外殼)134以及HDD103。
      該編程服務(wù)程序1132在操作面板210的操作顯示部分上顯示出了編程屏幕。用戶能夠從編程屏幕輸入定制程序。另外,該編程服務(wù)程序1132將輸入的定制程序存儲(chǔ)在定制目錄212中,其中該定制目錄212為HDD 103的定制區(qū)域。另外,該編程服務(wù)1132將定制程序注冊(cè)在裝入設(shè)置文件中,因此該定制程序可以在復(fù)合機(jī)器100上執(zhí)行。
      復(fù)合機(jī)器初始化部分129、程序裝入部分131、裝入設(shè)置部分211以及定制目錄的性能與復(fù)合機(jī)器100中的相同。
      圖14示出了編程屏幕1101的示例。可以通過(guò)在系統(tǒng)初始化設(shè)置屏幕上選擇“programming”來(lái)顯示編程屏幕。
      與第一實(shí)施例中相應(yīng)的屏幕一樣,該編程屏幕110包括輸入?yún)^(qū),索引按鈕,存儲(chǔ)按鈕,執(zhí)行設(shè)置按鈕以及測(cè)試執(zhí)行按鈕。在編程屏幕1101上,在操作顯示部分顯示出了軟件鍵盤。通過(guò)使用該軟件鍵盤,可以從輸入?yún)^(qū)輸入定制程序。
      可是,由于操作顯示部分的區(qū)域面積很小并且從操作顯示部分輸入的數(shù)據(jù)并不簡(jiǎn)單,因此很難直接輸入定制程序。所以,最好就是能夠通過(guò)網(wǎng)絡(luò)將定制程序存儲(chǔ)在記錄介質(zhì)例如HDD 103的區(qū)域中,并且通過(guò)使用軟件鍵盤何以簡(jiǎn)單的修改定制程序。也就是說(shuō),通過(guò)按壓編程屏幕1101上的索引按鈕來(lái)選擇定制程序,可以在輸入?yún)^(qū)內(nèi)顯示出定制程序。接著,用戶可以通過(guò)顯示軟件鍵盤來(lái)修改定制程序。
      當(dāng)定制程序的開發(fā)完成之后,壓下存儲(chǔ)按鈕。因此,和第一實(shí)施例一樣,該編程服務(wù)程序1132將該定制程序存儲(chǔ)在HDD 103的定制目錄中。另外,和第一實(shí)施例一樣,通過(guò)按壓執(zhí)行設(shè)置按鈕,該編程服務(wù)程序1132將該定制程序與由它指定的按鈕(按鍵)按鍵代碼關(guān)聯(lián)在一起,并且存儲(chǔ)一個(gè)表示它們之間關(guān)聯(lián)關(guān)系的表格。生成的定制程序的執(zhí)行過(guò)程與第一實(shí)施例是相同的。
      如上所述,根據(jù)第二實(shí)施例的復(fù)合機(jī)器1100,該編程屏幕1101被顯示在操作平臺(tái)210的操作顯示部分中,并且也可以從屏幕輸入該定制程序。這樣,通過(guò)使用沒(méi)有與網(wǎng)絡(luò)相連的獨(dú)立的復(fù)合機(jī)器1100,也可以生成定制程序。
      (第三實(shí)施例)根據(jù)第一和第二實(shí)施例的復(fù)合機(jī)器,該定制程序通過(guò)使用定制程序中的說(shuō)明將定制程序與操作顯示部分的按鈕(按鍵)關(guān)聯(lián)在一起。根據(jù)第三實(shí)施例,定制程序與按鈕(按鍵)之間的對(duì)應(yīng)關(guān)系是在給復(fù)合機(jī)器供電的同時(shí)動(dòng)態(tài)建立的。
      圖15為復(fù)合機(jī)器1300更能性結(jié)構(gòu)的方框圖。與第一實(shí)施例采取的方式相同,一個(gè)外殼腳本的定制程序可以在PC 200中生成,并且該定制程序被存儲(chǔ)在HDD 103中,并由復(fù)合機(jī)器1300來(lái)執(zhí)行。
      如圖15所示,該實(shí)施例中的復(fù)合機(jī)器的結(jié)構(gòu)與第一實(shí)施例之間的不同之處就在于復(fù)合機(jī)器1300具有一個(gè)操作面板注冊(cè)部分133。
      操作面板注冊(cè)部分133為了執(zhí)行定制程序而將按鈕(按鍵)指定給定制程序。也就是說(shuō),通過(guò)按壓(觸摸)由操作面板注冊(cè)部分133指定的按鈕來(lái)執(zhí)行定制程序。
      該實(shí)施例中用來(lái)生成以及存儲(chǔ)定制程序的過(guò)程與第一實(shí)施例中的相同。下面,將對(duì)將按鈕指定給定制程序的方法進(jìn)行說(shuō)明。在將定制程序存儲(chǔ)在定制目錄中之后,用戶再一次打開復(fù)合機(jī)器的開關(guān),以便于將定制程序指定給按鈕(按鍵)。
      圖16為從打開復(fù)合機(jī)器1300開始至完成指定按鈕的流程圖。從打開開關(guān)至裝入程序裝入部分131的步驟(步驟S1501-S1506)與第一實(shí)施例復(fù)合機(jī)器中相應(yīng)的步驟是相同的。
      在步驟S1507中,由該裝入的程序裝入部分指定HDD 103中的裝入設(shè)置文件211,并獲取將要被裝入的程序的名稱。圖17為該實(shí)施例中所使用的裝入設(shè)置文件211的示例。在該例中,操作面板注冊(cè)部分的程序、命令解釋程序以及外部應(yīng)用程序(xxx應(yīng)用程序)都被設(shè)置為將要被裝入的程序。
      因此,在步驟S1508中,該程序裝入部分131首先裝入操作面板注冊(cè)部分133的程序。操作面板注冊(cè)部分133的程序被存儲(chǔ)在預(yù)先的定制目錄中。接下來(lái),在步驟S1509中裝圖該解釋程序(命令解釋程序)134。最后,在步驟S1510中裝入外部應(yīng)用程序。
      在步驟S1511中,該裝入的操作面板注冊(cè)部分133在操作面板上顯示用于按鍵指定的設(shè)置屏幕。圖18示出了設(shè)置屏幕的示例。如圖18所示,可以被指定的按鈕被顯示在各個(gè)定制程序的設(shè)置屏幕上。在步驟S1512中,當(dāng)用戶按壓了一個(gè)用于定制程序的按鈕時(shí),該操作面板注冊(cè)部分133將該按鈕和定制程序關(guān)聯(lián)在一起,并且將相關(guān)信息存儲(chǔ)在一個(gè)記錄介質(zhì)例如HDD 103或閃存內(nèi)作為一個(gè)表格。因此,該按鈕被指定給定制程序。
      如上所述,根據(jù)第三實(shí)施例的復(fù)合機(jī)器,該編程服務(wù)程序132顯示編程屏幕201,因此由用戶輸入定制程序。接著,由該操作面板注冊(cè)部分133指定一個(gè)按鈕(按鍵)給定制程序。通過(guò)在復(fù)合機(jī)器打開時(shí)裝入操作面板注冊(cè)部分133,可以在裝入復(fù)合機(jī)器1300時(shí)動(dòng)態(tài)的確定用于裝入定制程序的按鈕。
      雖然在該實(shí)施例中由操作面板注冊(cè)部分將按鈕指定給定制程序,可是控制服務(wù)程序例如SCS 122也可以將一個(gè)按鈕指定給定制程序。通過(guò)使用用于指定的SCS 122,用于操作面板注冊(cè)部分133的程序并不是必須的并且處理過(guò)程會(huì)變得更加有效。
      (第四實(shí)施例)根據(jù)第一至第三實(shí)施例的復(fù)合機(jī)器100,1100以及1300,由命令解釋程序134也就是UNIX的命令解釋程序來(lái)執(zhí)行定制程序。另一方面,根據(jù)第四實(shí)施例,還可以使用除了命令解釋程序134以外解釋程序來(lái)執(zhí)行定制程序。
      圖19示出了包括第四實(shí)施例的復(fù)合機(jī)器1700的網(wǎng)絡(luò)結(jié)構(gòu)。圖20為復(fù)合機(jī)器1700的功能性方框圖。和第一實(shí)施例相同,該復(fù)合機(jī)器1700與因特網(wǎng)相連。另外,還可以從PC 200輸入定制程序并對(duì)其進(jìn)行調(diào)試,該P(yáng)C 200為與因特網(wǎng)相連的客戶終端。作為定制程序的示例,有一個(gè)程序,其中按鈕都顯示在操組顯示部分上,當(dāng)按下一個(gè)按鈕時(shí),就會(huì)進(jìn)行對(duì)應(yīng)于該按鈕的處理。
      根據(jù)該實(shí)施例的復(fù)合機(jī)器1700,使用Visual Basic語(yǔ)言來(lái)書寫定制程序。接著,使用Visual Basic解釋程序來(lái)執(zhí)行該定制程序。
      如圖19所示,該復(fù)合機(jī)器包括復(fù)合機(jī)器初始化部分129,程序裝入部分131,編程服務(wù)程序132,Visual Basic解釋程序1734(下文中尤指VB解釋程序1734),NCS 128,httpd 106,共享存儲(chǔ)器105以及HDD 103。復(fù)合機(jī)器初始化部分129,程序裝入部分131,編程服務(wù)程序132,NCS 128以及httpd 106的性能與第一實(shí)施例中的相同。另外,存儲(chǔ)在HDD 103以及定制目錄中的裝入設(shè)置文件211中的內(nèi)容與第一實(shí)施例中的相同。
      該VB解釋程序1734逐步解釋并執(zhí)行定制程序。在該實(shí)施例中生成以及存儲(chǔ)定制程序的方式與第一實(shí)施例中的相同。
      在復(fù)合機(jī)器1700中,需要裝入VB解釋程序1734來(lái)執(zhí)行定制程序。因此該裝入設(shè)置文件211中包括VB解釋程序1734的程序名稱。
      圖21示出了裝入設(shè)置文件的示例。如圖21所示,“VB解釋程序”被設(shè)置在裝入設(shè)置文件211的第一行中。這樣,該程序裝入部分131就可以通過(guò)指定裝入設(shè)置文件211來(lái)裝入VB解釋程序1734。因此,就可以執(zhí)行定制程序。
      根據(jù)第四實(shí)施例的復(fù)合機(jī)器,可以由在一般OS 121下運(yùn)行的VB解釋程序1734來(lái)執(zhí)行定制程序,與在命令解釋程序下運(yùn)行的程序相比,該定制程序能夠?qū)崿F(xiàn)更好的特性。這樣,就可以很容易的生成更好的程序。
      在第四實(shí)施例中,PC 200包括一個(gè)其中含有VB解釋程序的Visual Basic開發(fā)環(huán)境。由于在PC 200中包括了Visual Basic開發(fā)環(huán)境,因此可以在PC 200上開發(fā)含有指定LCD面板屏幕的定制程序。接著,例如可以通過(guò)使用文件傳輸協(xié)議將開發(fā)出來(lái)的程序發(fā)送給復(fù)合機(jī)器,以使得能夠?qū)⒃摮绦虼鎯?chǔ)在復(fù)合機(jī)器中。
      除了Visual Basic以外,也可以采用其它的解釋語(yǔ)言。例如,可以使用Java。在第一至第四實(shí)施例中,該編程服務(wù)程序132可以位于應(yīng)用程序?qū)佣皇强刂品?wù)層。
      (第五實(shí)施例)第四實(shí)施例的復(fù)合機(jī)器通過(guò)使用一般OS 121操作的解釋程序來(lái)執(zhí)行定制程序。根據(jù)第五實(shí)施例的復(fù)合機(jī)器,在應(yīng)用程序?qū)又型瑫r(shí)包括VB解釋程序1801以及VB應(yīng)用程序1802。
      圖22為根據(jù)第五實(shí)施例的復(fù)合機(jī)器的功能性方框圖,第五實(shí)施例的復(fù)合機(jī)器與第四實(shí)施例一樣通過(guò)使用TCP/IP協(xié)議與因特網(wǎng)相連。根據(jù)該復(fù)合機(jī)器,用戶從PC 200輸入定制程序并對(duì)其進(jìn)行調(diào)試,其中該P(yáng)C 200為與因特網(wǎng)相連的客戶終端。在第五實(shí)施例中,由應(yīng)用程序?qū)又械腣isual Basic解釋程序(下文中尤指VB解釋程序)執(zhí)行該生成的定制程序。在該結(jié)構(gòu)中,編程服務(wù)程序132可以位于應(yīng)用程序?qū)印?br> 在該實(shí)施例中,在其中安裝有Visual Basic開發(fā)環(huán)境的PC 200上開發(fā)VB應(yīng)用程序。該開發(fā)出來(lái)的VB應(yīng)用程序被傳送給復(fù)合機(jī)器,并由該復(fù)合機(jī)器存儲(chǔ)VB應(yīng)用程序。通過(guò)在操組面板上進(jìn)行選擇來(lái)裝入VB應(yīng)用程序,因此,可以由解釋程序1801執(zhí)行該VB應(yīng)用程序。接下來(lái),將對(duì)該實(shí)施例進(jìn)行更詳細(xì)的描述。
      圖23示出了通過(guò)使用PC 200上的Visual Basic開發(fā)環(huán)境來(lái)開發(fā)VB應(yīng)用程序的示例。
      在該屏幕上示出了兩個(gè)窗口。一個(gè)窗口的標(biāo)題為Project2-Form2(Form),另一窗口的標(biāo)題為Project2-Form2(Code)。該P(yáng)roject2-Form2(Form)窗口用于生成在復(fù)合機(jī)器的操作面板上顯示的菜單屏幕。如圖23所示,其中設(shè)置了三個(gè)按鈕,分別為“SCAN”、“FAX”以及“START”。指定應(yīng)用程序,使得當(dāng)操作面板上的一個(gè)相應(yīng)按鈕被按下時(shí),進(jìn)行掃描、傳真發(fā)送等操作。
      該P(yáng)roject2-Form2(Code)窗口用于生成當(dāng)屏幕上的按鈕被按下時(shí)進(jìn)行掃描、傳真發(fā)送等操作的程序。
      當(dāng)程序被存儲(chǔ)到如圖23所示的狀態(tài)中時(shí),會(huì)生成兩個(gè)文件Project2.vbp以及Form2.frm。該P(yáng)roject2.vbp中存有用于管理項(xiàng)目的信息以及用于執(zhí)行程序變量值的條件。
      該Form2.frm為由VB解釋程序1801解釋的程序。通過(guò)使用復(fù)合機(jī)器中的編程服務(wù)程序132從PC 200上傳該VB應(yīng)用程序。
      當(dāng)編程屏幕201中的測(cè)試執(zhí)行按鈕被壓下,則就會(huì)裝入復(fù)合機(jī)器中的VB解釋程序1801,并執(zhí)行該VB應(yīng)用程序。同時(shí),與顯示在操作面板210中相同的屏幕被顯示在PC 200的瀏覽器中。
      圖24、25示出了將由VB解釋程序1801執(zhí)行的VB應(yīng)用程序的示例。當(dāng)在復(fù)合機(jī)器上運(yùn)行如圖24所示的VB程序時(shí),會(huì)首先顯示出一個(gè)包括NEXTWIN按鈕的窗口。如果該NEXTWIN按鈕被按下,則通過(guò)調(diào)用(“change_display”,“Form”)來(lái)執(zhí)行函數(shù)“change_display(“Form2”)”,因此該屏幕就會(huì)轉(zhuǎn)至下一個(gè)屏幕(Form2窗口)。
      圖25示出了用于顯示Form2窗口的VB程序。該Form2的VB程序?qū)?yīng)于圖23中的屏幕。
      在Form2窗口中,當(dāng)SCAN按鈕被按下時(shí),會(huì)執(zhí)行以下程序。
      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,F(xiàn)ONT_12,0,0);第一個(gè)ScanStart函數(shù)的功能是從ADF中讀取一個(gè)A4大小的文檔至一個(gè)二進(jìn)制的圖像,并使用TIFF格式將其存儲(chǔ)在HDD的文件“/work/tmpfile.tif”中。由VB解釋程序1801解釋該函數(shù)并使復(fù)合機(jī)器按照上述的方式操作。
      下一行中的“gwOpItemCreate()”是由復(fù)合機(jī)器的OCS 126提供的函數(shù)。通過(guò)該函數(shù),可以將一個(gè)字符串顯示在當(dāng)前屏幕上。該函數(shù)gwOpItemCreate()由VB解釋程序1801的OCS 126的函數(shù)調(diào)用來(lái)執(zhí)行。
      為了執(zhí)行按照上述方式生成的VB應(yīng)用函數(shù),該VB解釋程序以及VB應(yīng)用程序被設(shè)置在如圖11所示的裝入設(shè)置文件中,因此該VB解釋程序以及VB應(yīng)用程序可以以同圖10所示相同的方式裝入。
      接下來(lái)的處理用來(lái)當(dāng)在復(fù)合機(jī)器上執(zhí)行一個(gè)VB應(yīng)用程序時(shí)在操作面板上顯示一個(gè)屏幕。首先,VB解釋程序1801等待屏幕從SCS 122捕捉到一個(gè)準(zhǔn)備結(jié)束事件。當(dāng)VB解釋程序1801接收到該事件時(shí),VB解釋程序就會(huì)生成一個(gè)窗口圖像進(jìn)行初始化顯示(root window generation)。接下來(lái),VB應(yīng)用程序通過(guò)執(zhí)行用于在根窗口中生成子窗口并顯示字符串的函數(shù)來(lái)準(zhǔn)備初始屏幕。然后,通過(guò)執(zhí)行表示屏幕準(zhǔn)備結(jié)束的函數(shù),由VB應(yīng)用程序通知SCS 122屏幕準(zhǔn)備結(jié)束。接著,當(dāng)操作面板上的應(yīng)用程序選擇按鈕被選中時(shí),SCS 122就會(huì)發(fā)出一個(gè)請(qǐng)求操作屏幕所有者的變化的事件。當(dāng)VB應(yīng)用程序接收到該事件時(shí),VB應(yīng)用程序就會(huì)執(zhí)行一個(gè)指示VB應(yīng)用程序可以成為操作屏幕所有者的函數(shù)。同時(shí),顯示原始屏幕。之后,實(shí)質(zhì)上就是由VB解釋程序1801來(lái)執(zhí)行VB應(yīng)用程序。
      如上所述,根據(jù)該實(shí)施例,可以使用VB解釋程序很有效的開發(fā)應(yīng)用程序。
      (第六實(shí)施例)第五實(shí)施例的復(fù)合機(jī)器的結(jié)構(gòu)使得VB解釋程序被載入到應(yīng)用層。第五實(shí)施例的復(fù)合機(jī)器的結(jié)構(gòu)使得Java執(zhí)行環(huán)境被包括在應(yīng)用程序內(nèi)。
      圖26示出了第六實(shí)施例的復(fù)合機(jī)器1900的方框圖。如圖中所示,復(fù)合機(jī)器1900的應(yīng)用層中包括Java執(zhí)行環(huán)境1901以及Java應(yīng)用程序。該Java應(yīng)用程序是使用PC(個(gè)人計(jì)算機(jī))開發(fā)的并且被下載到復(fù)合機(jī)器中。接著,使用Java執(zhí)行環(huán)境1901來(lái)執(zhí)行該Java應(yīng)用程序。
      圖27示出了PC中Java開發(fā)環(huán)境以及復(fù)合機(jī)器中Java執(zhí)行環(huán)境的結(jié)構(gòu)。
      如圖中結(jié)構(gòu)所示,該Java執(zhí)行環(huán)境包括一個(gè)分類庫(kù)1911,模擬機(jī)器1912,以及應(yīng)用程序管理部分1914。
      該分類庫(kù)1911用于為Java應(yīng)用程序提供服務(wù)程序以便于更簡(jiǎn)單的操作復(fù)合機(jī)器。例如,該實(shí)施例中的分類庫(kù)包括操作面板類,事件類,復(fù)合機(jī)器控制類,網(wǎng)絡(luò)傳輸類,基本Java類等等。該Java應(yīng)用程序本身就是一組類,并且這些分類指分類庫(kù)中的類,因此該Java應(yīng)用程序執(zhí)行它的處理過(guò)程。如果該Java應(yīng)用程序包括在該分類庫(kù)中使用的類的所有性能,則可以不需要分類庫(kù)就能構(gòu)成Java執(zhí)行環(huán)境。
      Java程序的源代碼被編譯為作為中間代碼的字節(jié)代碼。由虛擬機(jī)器1912解釋并執(zhí)行該字節(jié)代碼。
      該應(yīng)用程序管理部分1914能夠管理Java應(yīng)用程序。例如,還可以列出Java應(yīng)用程序,對(duì)Java應(yīng)用程序例如裝入以及受迫終端的執(zhí)行管理,載入以及升級(jí)Java應(yīng)用程序,刪除已安裝的Java應(yīng)用程序,用于應(yīng)用程序注冊(cè)的密碼設(shè)置等等。
      更具體的,如圖28所示,該執(zhí)行環(huán)境還包括本地程序接口1913。該本地程序接口1913使得由虛擬機(jī)器1912執(zhí)行的Java代碼能夠處理由其它編程語(yǔ)言例如C書寫的應(yīng)用程序或庫(kù)。通過(guò)使用本地程序接口1913機(jī)制,該Java應(yīng)用程序能夠訪問(wèn)控制服務(wù)程序的API。
      類似于Java執(zhí)行環(huán)境,該Java開發(fā)環(huán)境包括一個(gè)分類庫(kù)1921,一個(gè)模擬機(jī)器1922,以及一個(gè)應(yīng)用程序管理部分1914。進(jìn)一步,該Java執(zhí)行環(huán)境包括一個(gè)用于生成字節(jié)代碼的Java編譯程序1925,以及一個(gè)用于模仿運(yùn)行Java應(yīng)用程序的復(fù)合機(jī)器的操作的仿真程序。可以通過(guò)記錄介質(zhì)例如IC卡等將由Java開發(fā)環(huán)境開發(fā)的Java應(yīng)用程序載入到復(fù)合機(jī)器的Java執(zhí)行環(huán)境中。另外,也可以通過(guò)網(wǎng)絡(luò)來(lái)載入Java應(yīng)用程序。
      例如,如圖29所示,通過(guò)將由Java開發(fā)環(huán)境開發(fā)出來(lái)的Java應(yīng)用程序存儲(chǔ)到Web服務(wù)器中,該Java執(zhí)行環(huán)境能夠訪問(wèn)Web服務(wù)器,以載入Java應(yīng)用程序。除了Web服務(wù)器以外,也可以使用FTP服務(wù)器。
      (Java應(yīng)用程序的開發(fā))接下來(lái),將對(duì)在Java開發(fā)環(huán)境中對(duì)Java應(yīng)用程序的開發(fā)進(jìn)行詳細(xì)的描述。
      圖30為開發(fā)Java應(yīng)用程序的流程。如圖30所示,首先,生成Java源代碼最為Java文件。然后,由Java編譯程序?qū)υ创a進(jìn)行編譯,生成類文件。接著,由多個(gè)類文件構(gòu)成一個(gè)Jar文件。最好就是包括一個(gè)表示類的文件,其中該具有“主”程序。
      可以通過(guò)與前面描述的實(shí)施例相同的方式在復(fù)合機(jī)器上執(zhí)行Java應(yīng)用程序來(lái)調(diào)試Java應(yīng)用程序。根據(jù)該實(shí)施例,不需要使用如圖27所示的仿真程序1923的目標(biāo)復(fù)合機(jī)器就能夠進(jìn)行調(diào)試。由于Java使用了虛擬機(jī)器,因此在使用Java時(shí)可以很容易的仿真執(zhí)行環(huán)境。在使用仿真程序完成應(yīng)用程序的開發(fā)之后,通過(guò)網(wǎng)絡(luò)或IC卡將該Java應(yīng)用程序(字節(jié)代碼)載入到復(fù)合機(jī)器中。接著,可以在復(fù)合機(jī)器上進(jìn)行應(yīng)用程序的評(píng)估。
      該仿真程序的結(jié)構(gòu)使其能夠從Java應(yīng)用程序接收指令,并根據(jù)該指令操作PC。例如,對(duì)于在操作面板的顯示部分上顯示數(shù)據(jù)的指令,仿真程序使得PC顯示出與在復(fù)合機(jī)器的顯示部分顯示出的屏幕相同的屏幕。該P(yáng)C不具有包括在復(fù)合機(jī)器中的引擎(掃描儀、打印機(jī)等)。因此,例如對(duì)于來(lái)自Java應(yīng)用程序的打印指令,該仿真軟件使得PC顯示出表示打印的圖像,或者該仿真軟件使得PC實(shí)際上將紙張打印至缺省的打印機(jī)。當(dāng)用戶按下PC上仿真屏幕上的復(fù)制按鈕時(shí),例如,該仿真程序就會(huì)使得PC通知用戶從本地文件系統(tǒng)中選擇一個(gè)將要被復(fù)制的文件,并使PC顯示輸入復(fù)制目的地的對(duì)話框,并使PC將選中的文件復(fù)制到目的地。
      該仿真程序可以是一個(gè)與圖27中所示的的虛擬機(jī)器以及分類庫(kù)相獨(dú)立的程序。另外,該仿真程序也可以由圖31中所示的分類庫(kù)中的一個(gè)類來(lái)實(shí)現(xiàn)。
      圖32為在仿真程序在PC上顯示的操作面板屏幕。在屏幕上顯示出來(lái)的元素例如按鈕與實(shí)際復(fù)合機(jī)器中的相同。另外,該仿真程序具有裝入程序的功能,能夠選擇存儲(chǔ)在PC中的Java應(yīng)用程序并執(zhí)行該被選中的Java應(yīng)用程序。如果仿真程序執(zhí)行了載入程序的功能,例如,則會(huì)顯示出如圖33所示的屏幕。接著,用戶選擇一個(gè)Java應(yīng)用程序,并且通過(guò)按壓執(zhí)行按鈕來(lái)執(zhí)行Java應(yīng)用程序。在屏幕上顯示的Java應(yīng)用程序是一個(gè)具有主程序的類名稱或Jar文件名稱。
      該仿真程序還可以記錄在仿真程序上操作的應(yīng)用程序的狀態(tài)信息。另外,也可以對(duì)被記錄的信息進(jìn)行設(shè)置。例如,用戶可以設(shè)置仿真程序,使得只有那些異常的會(huì)終止應(yīng)用程序的嚴(yán)重錯(cuò)誤才會(huì)被記錄,或者只有用于調(diào)試的詳細(xì)信息被記錄。
      使用仿真程序進(jìn)行調(diào)試也可以用于本發(fā)明的其它實(shí)施例中。也就是說(shuō),例如在第一實(shí)施例中,PC 200也可以包括與本實(shí)施例中相類似的解釋程序以及仿真程序。在調(diào)試程序結(jié)束之后,將該程序發(fā)送給復(fù)合機(jī)器,以便于通過(guò)訪問(wèn)復(fù)合機(jī)器來(lái)測(cè)試程序。
      (Java應(yīng)用程序的示例)接下來(lái),將對(duì)Java應(yīng)用程序的示例進(jìn)行描述。接下來(lái)的示例為使用操作面板類的Java采樣程序。圖34示出了操作面板類的分層結(jié)構(gòu)。在圖34中,類***Window用于生成一個(gè)窗口,類****Item用來(lái)生成窗口中的一個(gè)元素例如按鈕。例如含有以下代碼的程序可以生成一個(gè)如圖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、長(zhǎng)240的主窗口的代碼。(b)為在位置(20,20)生成長(zhǎng)40、寬600的消息項(xiàng)的代碼。(c)為在位置(10,60)生成長(zhǎng)30、寬80的按鈕的代碼。
      圖36中所示的程序用于實(shí)現(xiàn)在復(fù)合機(jī)器操作面板上的用戶接口。如圖37所示,程序會(huì)顯示“Hello World”,“Your Input Was…”以及一個(gè)按鈕“GetInput…”。當(dāng)用戶觸摸按鈕“Get Input…”時(shí),面板上會(huì)顯示出一個(gè)軟鍵盤。軟鍵盤顯示標(biāo)題“Add your input”來(lái)請(qǐng)用戶輸入代碼。例如,當(dāng)用戶從軟鍵盤輸入字符串“ABCD”時(shí),該字符串“ABCD”就會(huì)顯示在消息“Your InputWas…”之下。
      接下來(lái),將會(huì)隨著標(biāo)記數(shù)字對(duì)圖36中所示的采樣程序進(jìn)行描述。
      (1)為一個(gè)使用操作面板分類庫(kù)的指令。(2)表示繼承GWApp,因此可以使用該復(fù)合機(jī)器的應(yīng)用程序類。另外,通過(guò)繼承GWApp,用戶不需要書寫用于復(fù)雜初始化以及終止處理的代碼,另外,處理過(guò)程,例如消息接收對(duì)于用戶來(lái)說(shuō)是不隱藏的。通過(guò)代碼(3),生成了顯示消息“Hello World”的對(duì)象。通過(guò)代碼(4)生成按鈕對(duì)象“Get Input…”。接著,通過(guò)代碼(5),生成了顯示消息“Your Input Was…”的對(duì)象。通過(guò)代碼(6),生成了從軟鍵盤輸入顯示字符的消息對(duì)象。
      (在Java執(zhí)行環(huán)境中執(zhí)行Java應(yīng)用程序)在如圖27所示的結(jié)構(gòu)中,通過(guò)使用應(yīng)用程序管理部分1914,可以按照以下的方式進(jìn)行從下載到應(yīng)用程序執(zhí)行的處理。
      同其它的應(yīng)用程序一樣,在裝入復(fù)合機(jī)器的同時(shí)裝入應(yīng)用程序管理部分1914。通過(guò)按壓應(yīng)用程序裝入按鍵,例如,應(yīng)用程序管理部分1914會(huì)在操作面板上顯示出一個(gè)用戶接口。同時(shí),如果沒(méi)有載入Java應(yīng)用程序,則應(yīng)用程序管理部分1914就會(huì)顯示一個(gè)應(yīng)用程序載入屏幕。通過(guò)該應(yīng)用程序載入屏幕,用戶可以使得復(fù)合機(jī)器存取預(yù)定的網(wǎng)站或IC卡,用以載入Java應(yīng)用程序至復(fù)合機(jī)器中。
      在載入的過(guò)程中,在載入Java應(yīng)用程序之前,應(yīng)用程序管理部分1914會(huì)詢問(wèn)Web服務(wù)器關(guān)于Java應(yīng)用程序的信息,檢查是否可以安裝Java應(yīng)用程序。例如該應(yīng)用程序管理部分1914會(huì)檢查程序大小、版本、程序最近更改信息、將要使用的記憶量大小、將要使用的存儲(chǔ)器大小、將要使用的網(wǎng)絡(luò)地址、應(yīng)用程序的使用期限(應(yīng)用程序可以使用的次數(shù))、應(yīng)用程序的名稱等等。
      在檢查完上述各項(xiàng)之后,如果應(yīng)用程序管理部分1914確認(rèn)可以安裝Java應(yīng)用程序,則應(yīng)用程序管理部分1914就會(huì)將Java應(yīng)用程序下載到復(fù)合機(jī)器中。
      在下載Java應(yīng)用程序結(jié)束之后,應(yīng)用程序管理部分1914就會(huì)獲取應(yīng)用程序名稱并將其加入到應(yīng)用程序列表中去。同時(shí),將該Java應(yīng)用程序存儲(chǔ)到復(fù)合機(jī)器的硬盤中。
      完成了上述處理之后就可以使用該Java應(yīng)用程序。當(dāng)用戶從應(yīng)用程序管理部分1914提供的Java應(yīng)用程序裝入屏幕中選擇了一個(gè)Java應(yīng)用程序之后,就裝入了該虛擬機(jī)器并執(zhí)行該Java應(yīng)用程序。
      該Java應(yīng)用程序也可以以下面的方式執(zhí)行。下面的方法是圖29中的Web服務(wù)器結(jié)構(gòu)中載入Java應(yīng)用程序的示例。下面的處理由包括應(yīng)用程序管理部分1914的載入程序來(lái)執(zhí)行。該載入程序本身就是由Java應(yīng)用程序?qū)崿F(xiàn)的,或者也可以用其它語(yǔ)言例如C語(yǔ)言來(lái)實(shí)現(xiàn)。
      圖38示出了從上傳至下載Java應(yīng)用程序的示意圖。如圖38所示,在步驟1中,由Java開發(fā)環(huán)境開發(fā)并測(cè)試過(guò)的Java應(yīng)用程序被上傳至Web服務(wù)器。在步驟2中復(fù)合機(jī)器的載入程序訪問(wèn)Web服務(wù)器,在步驟3中下載用戶想要的Java應(yīng)用程序,并執(zhí)行該Java應(yīng)用程序。
      接下來(lái)參照?qǐng)D39中的流程圖對(duì)載入程序的處理過(guò)程進(jìn)行描述。
      用戶按下一個(gè)用來(lái)改變應(yīng)用程序的預(yù)定按鈕。接著,在步驟S11中由載入程序檢查是否有一個(gè)Java應(yīng)用程序已經(jīng)被載入。如果該Java應(yīng)用程序已經(jīng)被載入,則在步驟S12中執(zhí)行該Java應(yīng)用程序。接著,顯示Java應(yīng)用程序的用戶接口。如果該Java應(yīng)用程序沒(méi)有被載入,則在步驟S13中顯示載入程序屏幕。另外,當(dāng)Java應(yīng)用程序執(zhí)行結(jié)束時(shí),也會(huì)顯示該載入程序屏幕。另外,在顯示Java應(yīng)用程序用戶接口的同時(shí),如果用戶輸入了預(yù)定的代碼并按下了預(yù)定的按鈕,則也可以顯示載入程序的用戶接口。
      圖40示出了在復(fù)合機(jī)器上顯示的載入程序用戶接口。如果Java應(yīng)用程序正在被載入到復(fù)合機(jī)器當(dāng)中,則載入程序就會(huì)顯示該Java應(yīng)用程序的名稱,并顯示檢查Web服務(wù)器中Java應(yīng)用程序更新的頻率。
      在步驟S14中,當(dāng)用戶觸摸載入程序屏幕上的“l(fā)oad application”按鈕時(shí),就會(huì)顯示出如圖41所示的應(yīng)用程序載入窗口。在該窗口中輸入該Java應(yīng)用程序的URL。為了輸入U(xiǎn)RL,用戶會(huì)觸摸URL按鈕來(lái)顯示一個(gè)軟鍵盤。接著,用戶通過(guò)該軟鍵盤敲入U(xiǎn)RL。另外,通過(guò)觸摸URL按鈕,該載入程序可以顯示出如圖42所示的Java應(yīng)用程序列表。接著,用戶就可以從該列表中選擇一個(gè)Java應(yīng)用程序。如果需要的話,用戶可以在圖41所示的類名稱區(qū)中輸入具有主程序類的名稱。
      之后,在步驟S15中,通過(guò)觸摸圖41中所示的OK按鈕,從Web服務(wù)器中下載該Java應(yīng)用程序,因此能夠由復(fù)合機(jī)器來(lái)執(zhí)行Java應(yīng)用程序。
      載入程序可以自動(dòng)地以預(yù)定的時(shí)間間隔存取Web服務(wù)器,來(lái)檢查是否有修改候的Java應(yīng)用程存儲(chǔ)在Web服務(wù)器中。為了檢查這種更新,載入程序會(huì)對(duì)當(dāng)前正在載入應(yīng)用程序的日期以及時(shí)間印記與Web服務(wù)器中相應(yīng)的應(yīng)用程序進(jìn)行比較。如果發(fā)現(xiàn)了一個(gè)修改后的Java應(yīng)用程序,則會(huì)刪除當(dāng)前正在操作的應(yīng)用程序并下載修改后的應(yīng)用程序。
      在步驟S16中,為改變?cè)摍z查間隔,用戶可以觸摸如圖40所示的修改間隔按鈕,接著就會(huì)顯示出如圖43所示的屏幕。接著,用戶可以通過(guò)使用屏幕中的箭頭鍵來(lái)選擇小時(shí)或分鐘,并通過(guò)操作面板上的數(shù)字鍵輸入新的時(shí)間間隔。
      在步驟S17中,為從復(fù)合機(jī)器中刪除一個(gè)Java應(yīng)用程序,用戶可以觸摸如圖40中所示的“unload application”按鈕,并顯示出如圖44所示的屏幕。通過(guò)觸摸“OK”按鈕就可以刪除Java應(yīng)用程序。通過(guò)觸摸圖40中的Exit按鈕來(lái)結(jié)束載入程序。
      在該實(shí)施例中,可以通過(guò)連接Java應(yīng)用程序來(lái)生成一個(gè)定制程序。下面將參照?qǐng)D45說(shuō)明連接應(yīng)用程序的處理過(guò)程。用來(lái)生成定制程序的程序?yàn)镴ava應(yīng)用程序,在下文中Java應(yīng)用程序尤其是指定制應(yīng)用程序??梢允孪葘⒍ㄖ茟?yīng)用程序安裝到復(fù)合機(jī)器中。
      首先,通過(guò)將操作面板上的屏幕切換至圖40中所示的載入程序屏幕來(lái)載入并執(zhí)行定制應(yīng)用程序。
      該定制應(yīng)用程序顯示出圖45中的屏幕1。在屏幕1中,只顯示出了紙張對(duì)象。也可以輸入其它的對(duì)象??梢允褂谩拜斎搿卑粹o以及“輸出”按鈕來(lái)輸入及輸出對(duì)象。另外,在屏幕1中也可以通過(guò)“讀/寫允許”按鈕將紙張對(duì)象設(shè)置為讀寫允許的屬性。
      當(dāng)用戶觸摸屏幕1中的“紙張”時(shí),就會(huì)顯示出如圖2中所示的一列與紙張對(duì)象相連的對(duì)象。當(dāng)選擇“掃描”時(shí),就會(huì)從屏幕2轉(zhuǎn)移至屏幕3。通過(guò)觸摸“掃描”,就會(huì)顯示出如圖4中所示的一列與掃描對(duì)象相連的對(duì)象。當(dāng)選擇屏幕4中的“mail”時(shí),就會(huì)從屏幕4轉(zhuǎn)移至屏幕5。
      之后,通過(guò)觸摸“設(shè)置”按鈕,就會(huì)生成一個(gè)定制程序,該程序就會(huì)掃描一張紙,并通過(guò)mail的方式發(fā)送該掃描后的圖像文件。另外,如圖6所示,給定制程序指定了一個(gè)按鍵。通過(guò)操作復(fù)合機(jī)器上的按鍵就可以執(zhí)行該定制程序。該定制程序?yàn)橹饌€(gè)執(zhí)行連接類的程序。
      從Web服務(wù)器下載應(yīng)用程序,并且通過(guò)連接應(yīng)用程序來(lái)生成定制程序也可以用于本發(fā)明的其它實(shí)施例中。例如,在前面提到的使用VB解釋程序的結(jié)構(gòu)中,通過(guò)向復(fù)合機(jī)器提供與該實(shí)施例相類似的載入軟件,該復(fù)合機(jī)器也可以從服務(wù)器中下載應(yīng)用程序。
      到此為止,所描述的各個(gè)服務(wù)程序以及應(yīng)用程序都可以存儲(chǔ)在記錄介質(zhì)中,例如IC卡等等,并且都可以存儲(chǔ)在復(fù)合機(jī)器中。另外,到此為止所描述的各個(gè)服務(wù)程序以及應(yīng)用程序也都可以通過(guò)網(wǎng)絡(luò)從外部服務(wù)器存儲(chǔ)到復(fù)合機(jī)器中去。
      如上所述,根據(jù)本發(fā)明,可以使用Java開發(fā)環(huán)境來(lái)有效的開發(fā)應(yīng)用程序。
      (第七實(shí)施例)如相關(guān)技術(shù)中所述,根據(jù)該復(fù)合機(jī)器,復(fù)合機(jī)器可以在運(yùn)輸之后向其中加入應(yīng)用程序。這樣,就會(huì)出現(xiàn)在一臺(tái)復(fù)合機(jī)器上同時(shí)運(yùn)行由多人開發(fā)出來(lái)的多個(gè)應(yīng)用程序的情況。另外,還會(huì)出現(xiàn)在一臺(tái)復(fù)合機(jī)器上同時(shí)運(yùn)行由多個(gè)部門開發(fā)出來(lái)的包括多個(gè)模塊的應(yīng)用程序的情況。
      由于每個(gè)人都是采用他自己的方法來(lái)開發(fā)應(yīng)用程序,因此有可能會(huì)影響到該復(fù)合機(jī)器預(yù)先安裝的應(yīng)用程序和系統(tǒng)。尤其是,如果將對(duì)復(fù)合機(jī)器中共享變量以及事件的使用委托給個(gè)人,則復(fù)合機(jī)器中的軟件就可能出現(xiàn)錯(cuò)誤,這就使得復(fù)合機(jī)器中的系統(tǒng)變得不穩(wěn)定。該問(wèn)題不光出現(xiàn)在成像裝置中,也會(huì)出現(xiàn)在一般的信息處理裝置中。
      接下來(lái),將對(duì)解決上述問(wèn)題的應(yīng)用程序以及信息處理裝置進(jìn)行描述。下面,以信息處理裝置為例對(duì)復(fù)合機(jī)器進(jìn)行說(shuō)明。
      該實(shí)施例中復(fù)合機(jī)器的結(jié)構(gòu)與第一實(shí)施例中的相同。在該實(shí)施例中,根據(jù)狀態(tài)轉(zhuǎn)換模型來(lái)生成外部應(yīng)用程序117。該外部應(yīng)用程序117與包括狀態(tài)轉(zhuǎn)換模型裝入函數(shù)的實(shí)用程序庫(kù)相鏈接。
      外部應(yīng)用程序177的進(jìn)程是一個(gè)其中有多個(gè)線程并行執(zhí)行的多線程環(huán)境。如圖46所示,在外部應(yīng)用程序177的進(jìn)程中,有一個(gè)主線程和一個(gè)圖像程序庫(kù)線程并行執(zhí)行。該主線程2100執(zhí)行外部應(yīng)用程序的主要處理過(guò)程。該主線程調(diào)用圖像程序庫(kù)線程2000,使得能夠?qū)崿F(xiàn)對(duì)控制服務(wù)程序以及VAS(虛擬應(yīng)用服務(wù)程序)、接收返回值,以及發(fā)送/接收消息的調(diào)用。
      另外,外部應(yīng)用程序的進(jìn)程包括一個(gè)子線程2200,信箱2110、2120及2140,以及事件獲取處理程序(線程)2130。該主線程2100包括一個(gè)其中注冊(cè)有狀態(tài)轉(zhuǎn)換模型裝入函數(shù)的實(shí)用程序庫(kù)2150。
      該信箱2110用來(lái)在主線程2100、圖像程序庫(kù)線程2000、事件獲取處理程序2130之間進(jìn)行通信。信箱2120用于在主線程2100和圖像程序庫(kù)線程2000之間進(jìn)行通信。事件獲取處理程序2130從一個(gè)控制服務(wù)進(jìn)程例如ECS、MCS或VAS中接收一個(gè)事件消息,并將其寫在信箱2110中。
      當(dāng)主線程2100訪問(wèn)控制服務(wù)程序時(shí),該主線程2100就會(huì)建立信箱2110、2120及2140,接著裝入該圖像程序庫(kù)線程2000。
      主線程2100將調(diào)用圖像程序庫(kù)線程2000的命令置入信箱2110中,其中該源信息被設(shè)置為MB_REQUEST。另外,來(lái)自控制服務(wù)程序等的事件消息也作為具有源信息MB_CS的信件被置入信息2110中。
      圖像程序庫(kù)線程2000通過(guò)函數(shù)rcv_msg()獲取發(fā)送至信箱2110的信件。該圖像程序庫(kù)線程2000查找對(duì)應(yīng)于源信息的函數(shù)以及包括在該信件中的事件或函數(shù)信息。如果檢測(cè)到了該函數(shù),由圖像程序庫(kù)線程2000執(zhí)行該函數(shù)。如果沒(méi)有檢測(cè)到該函數(shù),就什么也不做。
      不考慮相應(yīng)函數(shù)的執(zhí)行情況就將該獲取的信件發(fā)送至信箱2120。另外,該圖像程序庫(kù)線程2000將信箱2120中的具有MB_IMAGE源信息的信件,例如錯(cuò)誤信息通知、執(zhí)行結(jié)果、進(jìn)度等發(fā)送給主進(jìn)程。按照相同的方式,主線程2100以及子線程2200也使用信箱2140和2120來(lái)發(fā)送以及接收消息。
      實(shí)用程序庫(kù)2150以及圖像程序庫(kù)作為可安裝文件被存儲(chǔ)在記錄介質(zhì)上,例如FD或CD-ROM。該文件為用于軟件開發(fā)的部分或全部的工具包,例如“SDK軟件開發(fā)工具包”。另外,該實(shí)用程序庫(kù)2150以及圖像程序庫(kù)也可以通過(guò)網(wǎng)絡(luò)從例如網(wǎng)站上下載。
      為了通過(guò)實(shí)用程序庫(kù)以及圖像程序庫(kù)來(lái)生成外部應(yīng)用程序,開發(fā)人員利用編譯程序?qū)ν獠繎?yīng)用程序的源文件進(jìn)行編譯,生成一個(gè)目標(biāo)文件。接著通過(guò)鏈接程序?qū)?shí)用程序庫(kù)以及圖像程序庫(kù)同該目標(biāo)文件鏈接在一起,以便于生成一個(gè)外部應(yīng)用程序的執(zhí)行文件。該執(zhí)行文件被存在閃光記錄卡等之中,并從該卡中安裝至復(fù)合機(jī)器,因此具有實(shí)用程序庫(kù)以及圖像程序庫(kù)的外部應(yīng)用程序就被安裝復(fù)合機(jī)器中。另外,也可以通過(guò)網(wǎng)絡(luò)從服務(wù)器安裝執(zhí)行程序。
      下面,將對(duì)外部應(yīng)用程序所采用的狀態(tài)轉(zhuǎn)換模型進(jìn)行描述。圖47示出了當(dāng)外部應(yīng)用程序具有狀態(tài)1和狀態(tài)2時(shí)的狀態(tài)轉(zhuǎn)換。如圖47所示,假設(shè)外部應(yīng)用程序117的主線程2100包括狀態(tài)1和狀態(tài)2,當(dāng)前狀態(tài)為狀態(tài)1。當(dāng)主線程為狀態(tài)1時(shí),如果主線程2100通過(guò)函數(shù)rcv_msg()接收到事件1,則執(zhí)行事件函數(shù)1,因此該狀態(tài)轉(zhuǎn)換為狀態(tài)2并且執(zhí)行入口函數(shù)2。當(dāng)主線程2100為狀態(tài)2時(shí),如果主線程接收事件2,則執(zhí)行事件函數(shù)2,因此該狀態(tài)重新返回狀態(tài)1并且執(zhí)行入口函數(shù)1。當(dāng)主線程2100為狀態(tài)2時(shí),如果主線程接收事件3,則執(zhí)行事件函數(shù)3并保持狀態(tài)2。
      該“狀態(tài)”表示等待事件的狀態(tài)?!笆录睘橛|發(fā)狀態(tài)轉(zhuǎn)換的事件?!叭肟诤瘮?shù)”為出現(xiàn)狀態(tài)轉(zhuǎn)換時(shí)執(zhí)行的函數(shù)。“事件函數(shù)”是為一個(gè)事件執(zhí)行的函數(shù)。
      為了產(chǎn)生一個(gè)通過(guò)狀態(tài)轉(zhuǎn)換模型來(lái)執(zhí)行事件處理的應(yīng)用程序,如果每個(gè)事件都是由一個(gè)模塊處理的,也就是,如果每個(gè)事件都是由同一級(jí)的狀態(tài)組來(lái)處理,則狀態(tài)數(shù)就會(huì)增加并且由一個(gè)狀態(tài)處理的事件數(shù)也會(huì)增加。這樣,程序就會(huì)變得很復(fù)雜,因此生產(chǎn)率以及維護(hù)效率都會(huì)降低。
      這樣,根據(jù)該實(shí)施例,就生成了狀態(tài)轉(zhuǎn)換模型的模塊(子模塊)。每個(gè)模塊都只會(huì)處理外部應(yīng)用程序出現(xiàn)的所有事件中彼此之間相關(guān)的事件。另外,還提供了控制所有模塊的狀態(tài)轉(zhuǎn)換模型的一個(gè)模塊,其中如果需要的話,該模塊可以通過(guò)調(diào)用函數(shù)來(lái)執(zhí)行子模塊。如果需要的話,被調(diào)用的子模塊也可以執(zhí)行函數(shù)調(diào)用,以便于執(zhí)行狀態(tài)轉(zhuǎn)換模型中更小的子模塊。
      各個(gè)模塊并不使用能夠被所有的外部應(yīng)用程序所使用的全局變量。相反,各個(gè)模塊都會(huì)在被裝入時(shí)動(dòng)態(tài)的保持一個(gè)共享存儲(chǔ)器。因此,如果遞歸的調(diào)用相同的模塊,則就可以確定該程序被正確的執(zhí)行。
      圖48示出了外部應(yīng)用程序中具有嵌套結(jié)構(gòu)的模塊的示例。在圖48中所示的示例中存在三個(gè)嵌套(模塊)。嵌套1的模塊被嵌套0通過(guò)事件函數(shù)sub1()調(diào)用,嵌套2的模塊被事件函數(shù)sub2()調(diào)用。
      下面,將對(duì)外部應(yīng)用程序117的特殊源代碼進(jìn)行描述。如果在模塊中執(zhí)行的入口函數(shù)以及事件函數(shù)中間存在一個(gè)共享變量,則由于函數(shù)類型的限制,該變量就不可能作為一個(gè)函數(shù)的自變量。如果該變量被定義為全局變量,則很有可能該變量中的值在嵌套結(jié)構(gòu)模塊或多線程中發(fā)生無(wú)法預(yù)計(jì)的改變,因此全局變量就會(huì)導(dǎo)致外部應(yīng)用程序的錯(cuò)誤。
      根據(jù)該實(shí)施例,狀態(tài)轉(zhuǎn)換模型以及被嵌套的模塊可以共享一個(gè)變量。圖49示出了定義外部應(yīng)用程序的部分源代碼的示例。
      如圖49所示,在外部應(yīng)用程序的源代碼中,同相同文件描述的入口函數(shù)以及事件函數(shù)中的全局變量一樣,對(duì)變量分組,因此將結(jié)構(gòu)(demoCommonParm_t)定義為共享變量。另外,為了更容易的存取共享變量,還定義了COMMON_STRUCT。
      另外,在圖49的示例中,外部應(yīng)用程序117具有兩個(gè)狀態(tài)DEMO_ST_IDLE以及DEMO_ST_RUN,并且為狀態(tài)DEMO_ST_IDLE定義了事件函數(shù)表“eventDemoIdle”,為狀態(tài)DEMO_ST_RUN定義了事件函數(shù)表“eventDemoRun”.按照狀態(tài)的順續(xù)書寫DemoStTbl[]中的數(shù)據(jù),在該狀態(tài)中定義了入口函數(shù)表和事件函數(shù)表。另外,通過(guò)使用THREAD_NO指定線程數(shù)量,在THREAD_NO個(gè)線程的一個(gè)線程中有效的共享變量都可以使用。
      圖50為外部應(yīng)用程序的源代碼中函數(shù)定義部分的示例。函數(shù)“execDemoFunc”裝入了一個(gè)狀態(tài)轉(zhuǎn)換模型。尤其是,函數(shù)“execDemoFunc”還為共享變量保持并設(shè)置了一個(gè)區(qū)域,并且調(diào)用了狀態(tài)轉(zhuǎn)換模型裝入函數(shù)StMachine()。
      在圖50的示例中,“execDemoFunc”根據(jù)狀態(tài)信息表demoStTble,在線程數(shù)為THREAD_NO的線程中,通過(guò)指定將要從狀態(tài)數(shù)DEMO_ST_IDLE中裝入的狀態(tài)以及用pCom指示的區(qū)域被用作共享變量來(lái)調(diào)用狀態(tài)轉(zhuǎn)換模型裝入函數(shù)StMachine()。另外,對(duì)事件函數(shù)以及入口函數(shù)的描述如圖50所示。
      接下來(lái),對(duì)狀態(tài)轉(zhuǎn)換模型裝入函數(shù)StMachine()的處理過(guò)程進(jìn)行描述。圖51為狀態(tài)轉(zhuǎn)換模型裝入函數(shù)StMachine()的處理過(guò)程流程圖。
      在步驟S701中,當(dāng)狀態(tài)轉(zhuǎn)換模型裝入函數(shù)StMachine()接收到一個(gè)消息時(shí),該函數(shù)就會(huì)為共享變量分配存儲(chǔ)區(qū)域。圖52就示出了共享變量存儲(chǔ)區(qū)域的分配狀態(tài)。如圖52所示,在該實(shí)施例中,堆棧指針sp的值直接對(duì)應(yīng)于嵌套數(shù)。對(duì)各個(gè)模塊(嵌套)來(lái)說(shuō),也就是,每次在一個(gè)模塊中執(zhí)行函數(shù)StMachine()時(shí),指向共享變量組的指針就會(huì)進(jìn)入堆棧區(qū)域中。因此,該共享變量并不會(huì)在較低層模塊中偶然發(fā)生變化。這樣,如圖52所示,具有相同名稱的共享變量能夠象全局變量一樣使用,同時(shí)保持共享變量的精確數(shù)值。
      接下來(lái),在步驟S702中狀態(tài)轉(zhuǎn)換模型裝入函數(shù)StMachine()就會(huì)指定一個(gè)當(dāng)前狀態(tài)的事件函數(shù)表來(lái)檢查表格的信息。接著,在步驟S703中,由該函數(shù)確定在事件函數(shù)中是否定義了一個(gè)接收到的消息。如果定義了接收到的消息,則該狀態(tài)轉(zhuǎn)換模型裝入函數(shù)StMachine()就會(huì)在步驟S704中執(zhí)行對(duì)應(yīng)于接收到消息的事件函數(shù),并在步驟S705中執(zhí)行入口函數(shù)。如果在事件函數(shù)中并沒(méi)有定義接收到的消息,則不會(huì)執(zhí)行事件函數(shù)。在步驟S706中會(huì)重復(fù)進(jìn)行上述的處理,直到事件函數(shù)表結(jié)束。因此,就會(huì)執(zhí)行根據(jù)狀態(tài)轉(zhuǎn)換模型生成的外部應(yīng)用程序。
      如上所述,根據(jù)第一實(shí)施例中的復(fù)合機(jī)器,該外部應(yīng)用程序包括多個(gè)嵌套結(jié)構(gòu)的模型。另外,該應(yīng)用程序還包括其中注冊(cè)有狀態(tài)轉(zhuǎn)換模型裝入函數(shù)的實(shí)用程序庫(kù)2150,其中該狀態(tài)轉(zhuǎn)換模型裝入函數(shù)在各個(gè)模塊中向多個(gè)模塊所共享的共享變量分配存儲(chǔ)區(qū)域。這樣,這些共享變量就可以在模塊中安全的使用,并且可以防止由于變量值的問(wèn)題所引起的錯(cuò)誤。這樣,該復(fù)合機(jī)器就能夠穩(wěn)定的執(zhí)行外部應(yīng)用程序。
      (第八實(shí)施例)由于在第七實(shí)施例的復(fù)合機(jī)器中,根據(jù)狀態(tài)轉(zhuǎn)換模型來(lái)生成外部應(yīng)用程序,因此只有依靠狀態(tài)的事件函數(shù)才能被執(zhí)行。根據(jù)第八實(shí)施例的復(fù)合機(jī)器,該外部應(yīng)用程序還執(zhí)行獨(dú)立于任何狀態(tài)的標(biāo)準(zhǔn)處理過(guò)程。第八實(shí)施例的復(fù)合機(jī)器的結(jié)構(gòu)與第七實(shí)施例中的相同,并且第八實(shí)施例的進(jìn)程內(nèi)部的結(jié)構(gòu)也與第七實(shí)施例的相同。
      第八實(shí)施例的復(fù)合機(jī)器的結(jié)構(gòu)使得程序庫(kù)中的狀態(tài)轉(zhuǎn)換模型裝入函數(shù)StMachine()能夠執(zhí)行標(biāo)準(zhǔn)處理過(guò)程。
      圖53示出了狀態(tài)轉(zhuǎn)換模型裝入函數(shù)StMachine()的處理過(guò)程流程圖。從分配共享變量到執(zhí)行入口函數(shù)的過(guò)程(步驟S901-S906)與第七實(shí)施例中的相同。
      在步驟S907中,該實(shí)施例的狀態(tài)轉(zhuǎn)換模型裝入函數(shù)StMachine()還執(zhí)行一個(gè)標(biāo)準(zhǔn)函數(shù)表并檢查信息。該“標(biāo)準(zhǔn)函數(shù)”是一個(gè)當(dāng)接收到一個(gè)事件時(shí)與當(dāng)前狀態(tài)無(wú)關(guān)地執(zhí)行的函數(shù)。例如該“標(biāo)準(zhǔn)函數(shù)”執(zhí)行一個(gè)停止事件的處理,執(zhí)行為查詢應(yīng)用程序所有者許可的事件而通知所有者許可存在或缺席的處理,等等。該標(biāo)準(zhǔn)函數(shù)表定義了執(zhí)行消息的標(biāo)準(zhǔn)函數(shù),并且該標(biāo)準(zhǔn)函數(shù)表的結(jié)構(gòu)與事件函數(shù)表的相同。
      接著,在步驟S908中,該函數(shù)確定在標(biāo)準(zhǔn)函數(shù)表中是否定義了一個(gè)已接收的消息,如果定義了接收到的消息,則在步驟S909中狀態(tài)轉(zhuǎn)換模型裝入函數(shù)StMachine()就會(huì)執(zhí)行一個(gè)對(duì)應(yīng)于接收到的消息的標(biāo)準(zhǔn)函數(shù)。如果在標(biāo)準(zhǔn)函數(shù)表中沒(méi)有定義接收到的消息,則不會(huì)執(zhí)行標(biāo)準(zhǔn)函數(shù)。在步驟S910中會(huì)不斷地重復(fù)上述的處理過(guò)程,直到標(biāo)準(zhǔn)函數(shù)表結(jié)束。因此,在根據(jù)狀態(tài)轉(zhuǎn)換模型生成的外部應(yīng)用程序中,對(duì)于異步到達(dá)的事件,還執(zhí)行獨(dú)立于當(dāng)前狀態(tài)的標(biāo)準(zhǔn)函數(shù)。
      如上所述,根據(jù)第八實(shí)施例的復(fù)合機(jī)器,由于該狀態(tài)轉(zhuǎn)換模型裝入函數(shù)執(zhí)行標(biāo)準(zhǔn)函數(shù),可以在不影響其它應(yīng)用程序的通時(shí)處理與系統(tǒng)相關(guān)的事件例如終止事件,因此改進(jìn)了該復(fù)合機(jī)器的穩(wěn)定性。根據(jù)第七以及第八實(shí)施例,可以在各模塊之間安全的使用共享變量,并且可以防止由于變量值而導(dǎo)致的錯(cuò)誤。
      如上所述,根據(jù)本發(fā)明,提供了一種成像裝置,其中包括程序獲取部分,用于將輸入程序的屏幕數(shù)據(jù)發(fā)送至一個(gè)客戶終端,并從該客戶終端接收程序;以及程序執(zhí)行部分,用來(lái)執(zhí)行由程序獲取部分接收到的程序。
      根據(jù)成像裝置,可以從客戶終端的輸入屏幕上增加或修改程序,并且該程序可以不經(jīng)過(guò)編譯就能夠執(zhí)行。這樣,可以很容易的對(duì)程序操作進(jìn)行能夠測(cè)試。因此,開發(fā)程序會(huì)很簡(jiǎn)單。
      成像裝置可以包括操作顯示部分,用來(lái)顯示屏幕并輸入信息;以及程序獲取部分,用于在輸入程序的操作顯示部分上顯示一個(gè)屏幕,并獲取從操作顯示部分輸入的程序。根據(jù)成像裝置,可以從客戶終端的輸入屏幕上增加或修改程序。
      在成像裝置中,該程序獲取部分具有Web服務(wù)器的性能,并且成像裝置根據(jù)來(lái)自客戶終端的訪問(wèn)將html文件作為屏幕數(shù)據(jù)發(fā)送給客戶終端。利用Web服務(wù)器的性能,可以很容易的發(fā)送輸入的屏幕數(shù)據(jù)。
      成像裝置可以檢測(cè)來(lái)自客戶終端的事件并執(zhí)行對(duì)應(yīng)于該事件的CGI程序。通過(guò)該CGI,可以高效的執(zhí)行根據(jù)來(lái)自Web瀏覽器的指令的處理過(guò)程。
      在成像裝置中,當(dāng)在其中執(zhí)行程序時(shí),成像裝置會(huì)在客戶終端上顯示出與成像裝置的顯示部分上顯示的屏幕一樣的屏幕。根據(jù)本發(fā)明,程序的操作可以在客戶終端一側(cè)被識(shí)別出來(lái)。
      成像裝置根據(jù)來(lái)自客戶終端或成像裝置操作顯示部分的請(qǐng)求將一個(gè)按鍵與該程序關(guān)聯(lián)在一起,并且存儲(chǔ)包括程序與按鍵之間對(duì)應(yīng)關(guān)系的表格。這樣,用戶就可以為程序指定一個(gè)按鍵。
      成像裝置還包括用于成像處理的硬件資源;存在于成像裝置的硬件資源和應(yīng)用程序之間的控制服務(wù)程序;其中該程序?yàn)閼?yīng)用程序。該程序通過(guò)程序執(zhí)行部分對(duì)控制服務(wù)程序進(jìn)行函數(shù)調(diào)用。
      另外,根據(jù)本發(fā)明,還提供了一個(gè)用于開發(fā)能夠在成像裝置上執(zhí)行的程序的信息處理裝置,其中包括
      執(zhí)行部分,用于解釋以及執(zhí)行程序;仿真程序,用于根據(jù)程序指令指示信息處理裝置執(zhí)行對(duì)應(yīng)于由成像裝置執(zhí)行的處理。
      根據(jù)本發(fā)明,由于仿真程序能夠使得信息處理裝置模擬成像裝置,并可以在信息處理裝置上執(zhí)行程序測(cè)試,因此大大提高了程序開發(fā)效率。
      該執(zhí)行部分為一個(gè)虛擬機(jī)器,因此可以執(zhí)行Java程序。另外,通過(guò)一個(gè)用來(lái)將程序源代碼轉(zhuǎn)換為虛擬機(jī)器可以執(zhí)行的代碼,可以將源代碼轉(zhuǎn)換為字節(jié)代碼。另外,通過(guò)提供分類程序庫(kù),可以很容易的開發(fā)Java程序。
      在信息處理裝置中,該仿真程序能夠使得信息處理裝置顯示出對(duì)應(yīng)于成像裝置操作面板的屏幕。因此,即使是由用戶操作成像裝置,也可以由用戶來(lái)操作信息處理裝置。
      另外,該仿真程序使得信息處理裝置顯示出程序列表并執(zhí)行由用戶選擇的程序,并且該仿真程序還能夠使得信息處理裝置根據(jù)打印指令在于信息處理裝置相連得打印機(jī)上打印數(shù)據(jù)。
      另外,該信息處理裝置還可以接收用于輸入程序的屏幕數(shù)據(jù)并通過(guò)該屏幕數(shù)據(jù)將程序發(fā)送給信息形成裝置。
      另外,還提供了一種成像裝置,其中包括用于執(zhí)行關(guān)于圖像信息的系統(tǒng)方處理的服務(wù)模塊,其中該應(yīng)用程序可以被加入到與服務(wù)模塊分離開的成像裝置中去,其中包括虛擬機(jī)器,用于執(zhí)行應(yīng)用程序;以及應(yīng)用程序管理部分,用于管理由虛擬機(jī)器執(zhí)行的應(yīng)用程序。
      根據(jù)本發(fā)明,一個(gè)在虛擬機(jī)器上執(zhí)行的應(yīng)用程序可以在成像裝置上執(zhí)行。一般的,由于該模擬機(jī)器吸收了機(jī)器模型之間的不同之處,因此可以很容易的在成像裝置上執(zhí)行該應(yīng)用程序。
      成像裝置中還可以用解釋程序來(lái)代替虛擬機(jī)器。
      在成像裝置中,該應(yīng)用程序管理部分是一個(gè)載入程序,用來(lái)通過(guò)網(wǎng)絡(luò)從與成像裝置相連的記錄介質(zhì)或服務(wù)器中將應(yīng)用程序載入到成像裝置中去。由于載入程序載入了應(yīng)用程序,因此可以很容易的執(zhí)行該應(yīng)用程序。
      由載入程序確定該應(yīng)用程序是否已經(jīng)被載入到成像裝置中,并且如果已經(jīng)被載入的話就執(zhí)行該應(yīng)用程序,而如果沒(méi)有被載入的話就顯示該載入程序屏幕。
      另外,該載入程序在成像部分的顯示部分上顯示出一個(gè)應(yīng)用程序載入屏幕并且從用戶在載入屏幕上指定的位置下載該應(yīng)用程序,并且由載入程序顯示應(yīng)用程序列表并下載用戶從該列表中選擇的應(yīng)用程序。另外,該載入程序以預(yù)定的時(shí)間間隔檢查本地對(duì)應(yīng)于被下載應(yīng)用程序的應(yīng)用程序是否被更新過(guò)。
      成像裝置還包括一個(gè)用于連接應(yīng)用程序的連接部分,并根據(jù)被連接的應(yīng)用程序使得成像裝置執(zhí)行一系列的操作。該連接部分在成像裝置的顯示部分上顯示一個(gè)第一應(yīng)用程序以及多個(gè)候選與該第一應(yīng)用程序相連的應(yīng)用程序,并且將從多個(gè)應(yīng)用程序中選出來(lái)的應(yīng)用程序與第一應(yīng)用程序相連。因此,用戶能夠可視的定制應(yīng)用程序。
      另外,根據(jù)本發(fā)明,還提供了一種在其中包括有在程序中執(zhí)行的實(shí)用程序庫(kù)的信息處理裝置,其中該程序包括嵌套模塊,該嵌套模塊中的每個(gè)模塊都是根據(jù)一個(gè)狀態(tài)轉(zhuǎn)換模型構(gòu)成的,其中,在狀態(tài)轉(zhuǎn)換模型中,根據(jù)以下內(nèi)容來(lái)確定程序的操作程序的第一狀態(tài),該狀態(tài)下程序的事件,當(dāng)在該狀態(tài)下出現(xiàn)該事件時(shí)執(zhí)行的事件函數(shù),以及在該事件函數(shù)被執(zhí)行之后由第一狀態(tài)變換來(lái)的第二狀態(tài)。
      其中該實(shí)用程序庫(kù)包括一個(gè)狀態(tài)轉(zhuǎn)換模型裝入函數(shù),用來(lái)將各個(gè)模塊的區(qū)域指定給一個(gè)由多個(gè)模塊共享的共享變量。
      根據(jù)本發(fā)明,可以在各模塊之間安全地使用共享變量,并且可以防止由于變量值而導(dǎo)致的錯(cuò)誤,因此該信息處理裝置操作穩(wěn)定。
      在該信息處理裝置中,每個(gè)區(qū)域都由堆棧區(qū)域中的一個(gè)指針指定。由于采用了用于函數(shù)調(diào)用的堆棧區(qū)域,因此可以有效的指定用戶共享變量的區(qū)域。
      另外,狀態(tài)轉(zhuǎn)換模型裝入函數(shù)為每個(gè)線程將存儲(chǔ)區(qū)域指定給由線程共享的共享變量。這樣,就可以在線程間安全地使用共享變量。
      另外,該狀態(tài)轉(zhuǎn)換模型裝入函數(shù)執(zhí)行一個(gè)入口函數(shù),該入口函數(shù)定義了當(dāng)狀態(tài)轉(zhuǎn)換模型中出現(xiàn)狀態(tài)轉(zhuǎn)換時(shí)所執(zhí)行的處理過(guò)程。這樣,就可以執(zhí)行在調(diào)用一個(gè)模塊時(shí)規(guī)則執(zhí)行的處理過(guò)程。
      而且,該狀態(tài)轉(zhuǎn)換模型裝入函數(shù)還執(zhí)行標(biāo)準(zhǔn)函數(shù),該標(biāo)準(zhǔn)函數(shù)定義了當(dāng)出現(xiàn)了與狀態(tài)無(wú)關(guān)的異步事件時(shí)所執(zhí)行的處理過(guò)程。
      本發(fā)明并不僅限于具體公開的實(shí)施例,并且在不脫離本發(fā)明的范圍情況下可以進(jìn)行各種變化和修改。
      權(quán)利要求
      1.一種程序中的狀態(tài)轉(zhuǎn)換模型,其中根據(jù)以下內(nèi)容來(lái)確定程序的操作程序的第一狀態(tài),該狀態(tài)下程序的事件,當(dāng)在該狀態(tài)下出現(xiàn)該事件時(shí)執(zhí)行的事件函數(shù),以及在該事件函數(shù)被執(zhí)行之后由第一狀態(tài)變換來(lái)的第二狀態(tài)。其中該狀態(tài)轉(zhuǎn)換模型在信息處理裝置中使用,所述信息處理裝置包括在程序中執(zhí)行的實(shí)用程序庫(kù);其中該程序包括嵌套模塊,該嵌套模塊中的每個(gè)模塊都是根據(jù)狀態(tài)轉(zhuǎn)換模型構(gòu)成的,其中該實(shí)用程序庫(kù)包括狀態(tài)轉(zhuǎn)換模型裝入函數(shù),用來(lái)將各個(gè)模塊的區(qū)域指定給由多個(gè)模塊共享的共享變量。
      全文摘要
      提供了一種程序中的狀態(tài)轉(zhuǎn)換模型,其中根據(jù)以下內(nèi)容來(lái)確定程序的操作程序的第一狀態(tài),該狀態(tài)下程序的事件,當(dāng)在該狀態(tài)下出現(xiàn)該事件時(shí)執(zhí)行的事件函數(shù),以及在該事件函數(shù)被執(zhí)行之后由第一狀態(tài)變換來(lái)的第二狀態(tài)。其中該狀態(tài)轉(zhuǎn)換模型在信息處理裝置中使用,所述信息處理裝置包括在程序中執(zhí)行的實(shí)用程序庫(kù);其中該程序包括嵌套模塊,該嵌套模塊中的每個(gè)模塊都是根據(jù)狀態(tài)轉(zhuǎn)換模型構(gòu)成的,其中該實(shí)用程序庫(kù)包括狀態(tài)轉(zhuǎn)換模型裝入函數(shù),用來(lái)將各個(gè)模塊的區(qū)域指定給由多個(gè)模塊共享的共享變量。
      文檔編號(hào)G06F9/46GK1818866SQ20051011387
      公開日2006年8月16日 申請(qǐng)日期2003年7月28日 優(yōu)先權(quán)日2002年7月26日
      發(fā)明者秋吉邦洋, 大石勉, 杉浦裕子, 中川克彥, 安藤光男 申請(qǐng)人:株式會(huì)社理光
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1