(57)【要約】【課題】  バイトコードのアプリケーションによってHIDを制御することができる画像形成装置を提供する。【解決手段】  複合機は、USBデバイスが接続されるUSBポートと、USBデバイスのうちHIDのためのLinux（登録商標）の標準のデバイスドライバである標準ドライバを記憶するROMと、HIDがUSBポートに接続されたときに標準ドライバによるHIDの制御である標準制御をLinuxに開始させる制御部とを備えており、制御部は、標準制御を終了させ（ステップＳ３５）、標準制御が終了させられたHIDをJava（登録商標）アプリケーションに制御させる（ステップＳ３７）ことを特徴とする。【選択図】  図３
2011095940.tif 000002
【特許請求の範囲】
【請求項１】
USBデバイスが接続されるUSBポートと、前記USBデバイスのうちHIDのためのOSの標準のデバイスドライバである標準ドライバを記憶する記憶部と、前記HIDが前記USBポートに接続されたときに前記標準ドライバによる前記HIDの制御である標準制御を前記OSに開始させる制御部とを備えており、
前記制御部は、前記標準制御を終了させる標準制御終了手段と、前記標準制御終了手段によって前記標準制御が終了させられた前記HIDをバイトコードのアプリケーションに制御させるバイトアプリ制御手段とを備えていることを特徴とする画像形成装置。
【請求項２】
前記制御部は、前記USBポートに接続された前記USBデバイスが前記HIDであるか否かを判断するHID判断手段を備えており、
前記USBポートに接続された前記USBデバイスが前記HIDであると前記HID判断手段によって判断されたときに、前記標準制御終了手段が前記標準制御を終了させた後で前記バイトアプリ制御手段が前記HIDを前記アプリケーションに制御させ、
前記USBポートに接続された前記USBデバイスが前記HIDではないと前記HID判断手段によって判断されたときに、前記バイトアプリ制御手段が前記USBデバイスを前記アプリケーションに制御させることを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記記憶部は、前記USBポートに接続された前記USBデバイスにアクセス可能なネイティブコードのプログラムを記憶し、
前記バイトアプリ制御手段は、前記プログラムを利用して前記アプリケーションに前記USBデバイスを制御させることを特徴とする請求項１または請求項２に記載の画像形成装置。
【請求項４】
前記制御部は、前記USBポートに接続された前記USBデバイスに対するバイトコードのデバイスドライバであるバイトドライバを前記プログラムを利用して作成するバイトドライバ作成手段を備えており、
前記バイトアプリ制御手段は、前記バイトドライバ作成手段によって作成された前記バイトドライバを介して前記アプリケーションに前記USBデバイスを制御させることを特徴とする請求項３に記載の画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バイトコードのアプリケーションを実行する画像形成装置に関する。
【背景技術】
【０００２】
従来、利用者が開発したアプリケーションを実行することができる画像形成装置が知られている。そのような画像形成装置においては、利用者がアプリケーションを開発した開発環境と、そのアプリケーションを画像形成装置が実行する実行環境とが異なっていたとしても、利用者が開発したアプリケーションを画像形成装置が実行することができるように、CPU（Central Processing Unit）などのハードウェアやOS（Operating System）に依存しないバイトコードのアプリケーションを実行することができるようになっている。
【０００３】
そのようなバイトコードのアプリケーションを実行する画像形成装置として、Java（登録商標）のコンパイラが生成したJavaバイトコードのアプリケーションを実行する複合機が知られている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−２５２１３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、バイトコードのアプリケーションは、ハードウェアに依存しない性質を持つので、ハードウェアであるUSB（Universal Serial Bus）デバイスを制御することが容易ではない。特に、USBデバイスのうちマウスやキーボードなどのHID（Human Interface Device）は、画像形成装置のUSBポートに接続されたときに画像形成装置のOSの標準のデバイスドライバによる制御がOSによって開始されるので、バイトコードのアプリケーションによって制御されることが容易ではない。
【０００６】
そこで、本発明は、バイトコードのアプリケーションによってHIDを制御することができる画像形成装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の画像形成装置は、USBデバイスが接続されるUSBポートと、前記USBデバイスのうちHIDのためのOSの標準のデバイスドライバである標準ドライバを記憶する記憶部と、前記HIDが前記USBポートに接続されたときに前記標準ドライバによる前記HIDの制御である標準制御を前記OSに開始させる制御部とを備えており、前記制御部は、前記標準制御を終了させる標準制御終了手段と、前記標準制御終了手段によって前記標準制御が終了させられた前記HIDをバイトコードのアプリケーションに制御させるバイトアプリ制御手段とを備えていることを特徴とする。
【０００８】
この構成により、本発明の画像形成装置は、標準ドライバによってOSに制御されているHIDをバイトコードのアプリケーションに制御させる場合に、標準ドライバによるHIDの制御を終了させた後でHIDをバイトコードのアプリケーションに制御させるので、バイトコードのアプリケーションによってHIDを制御することができる。
【０００９】
また、本発明の画像形成装置の前記制御部は、前記USBポートに接続された前記USBデバイスが前記HIDであるか否かを判断するHID判断手段を備えており、前記USBポートに接続された前記USBデバイスが前記HIDであると前記HID判断手段によって判断されたときに、前記標準制御終了手段が前記標準制御を終了させた後で前記バイトアプリ制御手段が前記HIDを前記アプリケーションに制御させ、前記USBポートに接続された前記USBデバイスが前記HIDではないと前記HID判断手段によって判断されたときに、前記バイトアプリ制御手段が前記USBデバイスを前記アプリケーションに制御させることが好ましい。
【００１０】
この構成により、本発明の画像形成装置は、USBポートに接続されたUSBデバイスがHIDではない場合にも、バイトコードのアプリケーションによってUSBデバイスを制御することができる。
【００１１】
また、本発明の画像形成装置の前記記憶部は、前記USBポートに接続された前記USBデバイスにアクセス可能なネイティブコードのプログラムを記憶し、前記バイトアプリ制御手段は、前記プログラムを利用して前記アプリケーションに前記USBデバイスを制御させることが好ましい。
【００１２】
この構成により、本発明の画像形成装置は、ハードウェアに依存するネイティブコードのプログラムを利用して、ハードウェアに依存しないバイトコードのアプリケーションに、ハードウェアであるUSBデバイスを制御させるので、バイトコードのアプリケーションの構成を簡素化することができる。
【００１３】
また、本発明の画像形成装置の前記制御部は、前記USBポートに接続された前記USBデバイスに対するバイトコードのデバイスドライバであるバイトドライバを前記プログラムを利用して作成するバイトドライバ作成手段を備えており、前記バイトアプリ制御手段は、前記バイトドライバ作成手段によって作成された前記バイトドライバを介して前記アプリケーションに前記USBデバイスを制御させることが好ましい。
【００１４】
この構成により、本発明の画像形成装置は、バイトコードのアプリケーションにバイトコードのデバイスドライバを介してUSBデバイスを制御させるので、バイトコードのアプリケーションの構成を簡素化することができる。
【発明の効果】
【００１５】
本発明の画像形成装置は、バイトコードのアプリケーションによってHIDを制御することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の一実施の形態に係る複合機の構成を示すブロック図である。
【図２】図１に示す複合機のシステム構成を示すブロック図である。
【図３】JavaアプリケーションによってUSBデバイスの制御を開始するときの図１に示す複合機の動作のフローチャートである。
【図４】図２に示すJavaアプリケーションを開発するパーソナルコンピュータの構成を示すブロック図である。
【図５】図４に示すパーソナルコンピュータのシステム構成を示すブロック図である。
【発明を実施するための形態】
【００１７】
以下、本発明の一実施の形態について、図面を用いて説明する。
【００１８】
まず、本実施の形態に係る画像形成装置としての複合機の構成について説明する。
【００１９】
図１は、本実施の形態に係る複合機１０の構成を示すブロック図である。
【００２０】
図１に示すように、複合機１０は、装置全体を制御する制御部１１と、プログラムおよび各種のデータを記憶する記憶装置１２と、利用者によって種々の操作が入力される操作パネル上の操作部１３と、種々の情報を表示する操作パネル上のモニタ１４と、画像を読み取るスキャナ１５と、印刷ジョブを印刷するプリンタ１６と、図示していない外部のホストコンピュータと通信を行うための通信部１７と、USBデバイス９０が接続されるUSBポート１８とを備えている。
【００２１】
制御部１１は、CPU１１ａと、プログラムおよび各種のデータを予め記憶している不揮発性のメモリであるROM（Read Only Memory）１１ｂと、CPU１１ａの作業領域として用いられるRAM（Random Access Memory）１１ｃとから構成されているコンピュータである。CPU１１ａは、ROM１１ｂに記憶されているプログラムや記憶装置１２に記憶されているプログラムを実行することによって制御部１１を動作させる演算処理装置である。RAM１１ｃは、CPU１１ａによってプログラムが実行されるときにプログラムや各種のデータを一時的に記憶するようになっている。
【００２２】
記憶装置１２は、例えばハードディスクなどから構成されている。
【００２３】
操作部１３は、モニタ１４とともにタッチパネルを形成するボタンや、操作パネル上のボタンなどの入力デバイスから構成されている。制御部１１は、操作部１３から入力される利用者の操作に応じてプログラムを実行するようになっている。
【００２４】
モニタ１４は、例えばLCD（Liquid Crystal Display）などの表示デバイスから構成されている。制御部１１は、例えば、利用者による操作部１３への操作を受け付け中であることを示す画面や、動作の結果を示す画面などをモニタ１４に表示させるようになっている。
【００２５】
スキャナ１５は、原稿から画像データを読み取る読取デバイスである。
【００２６】
プリンタ１６は、図示していない外部のホストコンピュータから通信部１７を介して受信された印刷データや、スキャナ１５によって読み取られた画像データを印刷する印刷デバイスである。
【００２７】
通信部１７は、例えば、スキャナ１５によって読み取られた画像データをLAN（Local Area Network）を介して外部のホストコンピュータに送信したり、プリンタ１６で印刷されるための印刷データをLANを介して外部のホストコンピュータから受信したりする。
【００２８】
USBポート１８に接続されるUSBデバイス９０としては、マウスやキーボードなどのHIDだけでなく、HID以外の各種のUSBデバイスが考えられる。
【００２９】
図２は、複合機１０のシステム構成を示すブロック図である。
【００３０】
図２に示すように、複合機１０は、USBデバイス９０などの各種のハードウェアを制御するためのデバイスドライバ２１と、OSであるLinux（登録商標）２２とをROM１１ｂに記憶している。また、複合機１０は、Linux２２上で動作するJavaの実行環境であるJavaプラットフォーム２３を記憶装置１２に記憶している。また、複合機１０は、Javaプラットフォーム２３上で動作するJavaバイトコードのデバイスドライバであるJavaデバイスドライバ２４と、Javaプラットフォーム２３上で動作するJavaバイトコードのアプリケーションであるJavaアプリケーション２５とを記憶装置１２に記憶するようになっている。
【００３１】
デバイスドライバ２１は、USBデバイスのうちHIDのためのLinux２２の標準のデバイスドライバである標準ドライバ２１ａと、USBポート１８に接続されたUSBデバイス９０にアクセス可能なネイティブコードのプログラムであるlibusbライブラリ２１ｂとを備えている。libusbライブラリ２１ｂは、公知のライブラリであるC言語用のlibusbライブラリのうちLinux版のものである。
【００３２】
なお、標準ドライバ２１ａおよびlibusbライブラリ２１ｂがデバイスドライバ２１に含まれているので、上述したようにデバイスドライバ２１を記憶しているROM１１ｂは、標準ドライバ２１ａおよびlibusbライブラリ２１ｂをも記憶していることになる。すなわち、ROM１１ｂは、本発明の記憶部を構成している。
【００３３】
Linux２２は、デバイスドライバ２１を介して各種のハードウェアを制御するようになっている。
【００３４】
Javaプラットフォーム２３は、libusbライブラリ２１ｂを覆い隠すために存在するクラスであるJavaラッパー（Wrapper）２３ａと、ユーザーモードでUSBデバイス９０にアクセスするためのJavaAPI（Application Program Interface）であるJavaUSBライブラリ２３ｂと、Javaデバイスドライバ２４の管理を行うデバイスドライバ管理部２３ｃとを備えている。また、Javaプラットフォーム２３は、Javaデバイスドライバ２４やJavaアプリケーション２５などのJavaバイトコードをCPU１１ａが実行可能なネイティブコードに変換する図示していない仮想マシンも備えている。
【００３５】
Javaラッパー２３ａは、JNI（Java Native Interface）を使ってlibusbライブラリ２１ｂに対して作成されたクラスである。ここで、JNIとは、Java言語で開発されたプログラムから、Java言語以外の言語で開発されたネイティブコードのプログラムを利用するためのAPIである。Javaラッパー２３ａは、Java言語で開発されたJavaUSBライブラリ２３ｂから、C言語で開発されたネイティブコードのlibusbライブラリ２１ｂを利用することができる。
【００３６】
なお、Javaアプリケーション２５が例えば利用者のパーソナルコンピュータなどの開発環境で開発される場合、Javaラッパー２３ａは、Javaアプリケーション２５の開発環境であるパーソナルコンピュータと、Javaアプリケーション２５の実行環境である複合機１０とでCPUが異なるので、複合機１０でのコンパイルが必要であり、複合機１０でのみ動作することができる。
【００３７】
Javaデバイスドライバ２４は、USBポート１８に接続されたUSBデバイス９０に応じてJavaUSBライブラリ２３ｂによって作成されるようになっている。
【００３８】
Javaアプリケーション２５は、例えば利用者のパーソナルコンピュータなどの開発環境において、JavaソースコードがJavaコンパイラによってコンパイルされることによって作成されるものである。
【００３９】
次に、複合機１０の動作について説明する。
【００４０】
制御部１１は、HIDがUSBポート１８に接続されたときに標準ドライバ２１ａによるHIDの制御である標準制御をLinux２２に開始させる。
【００４１】
また、利用者が操作部１３を介してJavaアプリケーション２５の実行を制御部１１に指示すると、制御部１１によって実行されたJavaアプリケーション２５は、制御部１１に様々な機能を実現させる。
【００４２】
例えば、制御部１１は、Javaアプリケーション２５の記述に従って、モニタ１４に各種の情報を表示させたり、スキャナ１５によって読み取られた画像データを処理したり、プリンタ１６に印刷を実行させたり、通信部１７を介して外部の装置と通信を行ったり、USBポート１８に接続されているUSBデバイス９０を制御したりすることができる。
【００４３】
図３は、Javaアプリケーション２５によってUSBデバイス９０の制御を開始するときの複合機１０の動作のフローチャートである。
【００４４】
Javaアプリケーション２５がUSBデバイス９０の制御をJavaUSBライブラリ２３ｂに要求すると、JavaUSBライブラリ２３ｂは、図３に示す処理を開始する。
【００４５】
図３に示すように、まず、JavaUSBライブラリ２３ｂは、Javaラッパー２３ａを介してlibusbライブラリ２１ｂを利用してUSBデバイスの情報である「Vender ID」および「Product ID」を調べることによって、USBポート１８に接続されているUSBデバイス９０を探す（ステップＳ３１）。そして、JavaUSBライブラリ２３ｂは、USBポート１８に接続されているUSBデバイス９０があるか否かを判断する（ステップＳ３２）。
【００４６】
JavaUSBライブラリ２３ｂは、USBポート１８に接続されているUSBデバイス９０がないとステップＳ３２において判断すると、USBポート１８に接続されているUSBデバイス９０がないという旨の情報をモニタ１４に表示させて（ステップＳ３３）、図３に示す処理を終了する。
【００４７】
JavaUSBライブラリ２３ｂは、USBポート１８に接続されているUSBデバイス９０があるとステップＳ３２において判断すると、Javaラッパー２３ａを介してlibusbライブラリ２１ｂを利用して、USBポート１８に接続されているUSBデバイス９０がHIDであるか否かを判断する（ステップＳ３４）。このように、制御部１１は、本発明のHID判断手段を構成している。
【００４８】
JavaUSBライブラリ２３ｂは、USBポート１８に接続されているUSBデバイス９０がHIDであるとステップＳ３４において判断すると、USBポート１８に接続されているHIDから標準ドライバ２１ａを解放する（ステップＳ３５）。この解放によって、標準ドライバ２１ａによるHIDの制御である標準制御が終了する。すなわち、制御部１１は、本発明の標準制御終了手段を構成している。
【００４９】
なお、複合機１０のOSがLinuxであるので、JavaUSBライブラリ２３ｂは、Javaラッパー２３ａを介してlibusbライブラリ２１ｂを利用して、libusbライブラリ２１ｂの関数である「usb_detach_kernel_driver_np()」を実行することによって、USBポート１８に接続されているHIDから標準ドライバ２１ａをステップＳ３５において解放することができる。
【００５０】
JavaUSBライブラリ２３ｂは、USBポート１８に接続されているHIDから標準ドライバ２１ａをステップＳ３５において解放すると、USBポート１８に接続されているHIDに対するJavaデバイスドライバ２４を、Javaラッパー２３ａを介してlibusbライブラリ２１ｂを利用して作成する（ステップＳ３６）。したがって、USBポート１８に接続されているHIDは、ユーザーモードで動作しているJavaアプリケーション２５から扱われることができるようになる。
【００５１】
同様に、JavaUSBライブラリ２３ｂは、USBポート１８に接続されているUSBデバイス９０がHIDではないとステップＳ３４において判断した場合も、USBポート１８に接続されているUSBデバイス９０に対するJavaデバイスドライバ２４を、Javaラッパー２３ａを介してlibusbライブラリ２１ｂを利用して作成する（ステップＳ３６）。
【００５２】
このように、制御部１１は、USBポート１８に接続されたUSBデバイス９０に対するバイトコードのデバイスドライバであるJavaデバイスドライバ２４をlibusbライブラリ２１ｂを利用してステップＳ３６において作成するようになっており、本発明のバイトドライバ作成手段を構成している。
【００５３】
そして、Javaアプリケーション２５は、JavaUSBライブラリ２３ｂによってステップＳ３６においてJavaデバイスドライバ２４が作成されると、Javaデバイスドライバ２４を介してUSBデバイス９０を制御することができる。つまり、JavaUSBライブラリ２３ｂは、USBデバイス９０に対する指示がJavaデバイスドライバ２４を介してJavaアプリケーション２５から送られてくると、Javaラッパー２３ａを介してlibusbライブラリ２１ｂを利用して、Javaアプリケーション２５からの指示に応じてUSBデバイス９０を制御する（ステップＳ３７）。すなわち、制御部１１は、標準制御が終了させられたHIDをバイトコードのアプリケーションであるJavaアプリケーション２５に制御させるようになっており、本発明のバイトアプリ制御手段を構成している。
【００５４】
JavaUSBライブラリ２３ｂは、ステップＳ３７の処理が終了すると、図３に示す処理を終了する。
【００５５】
なお、Javaデバイスドライバ２４は、JavaUSBライブラリ２３ｂによってステップＳ３６において作成されると、デバイスドライバ管理部２３ｃによって管理される。したがって、Javaアプリケーション２５は、図３に示す処理が終了した後も、ステップＳ３７の処理と同様に、デバイスドライバ管理部２３ｃによって管理されているJavaデバイスドライバ２４を介してUSBデバイス９０を制御することができる。
【００５６】
上述したJavaアプリケーション２５は、例えば利用者のパーソナルコンピュータによって開発される。以下、Javaアプリケーション２５の開発について説明する。
【００５７】
図４は、Javaアプリケーション２５を開発するパーソナルコンピュータ５０の構成を示すブロック図である。
【００５８】
図４に示すように、パーソナルコンピュータ５０は、装置全体を制御する制御部５１と、プログラムおよび各種のデータを記憶する記憶装置５２と、利用者によって種々の操作が入力される操作部５３と、種々の情報を表示するモニタ５４と、USBデバイス９０が接続されるUSBポート５５とを備えている。
【００５９】
制御部５１は、CPU５１ａと、BIOS（Basic Input/Output System）プログラムおよび各種のデータを予め記憶している不揮発性のメモリであるROM５１ｂと、CPU５１ａの作業領域として用いられるRAM５１ｃとから構成されているコンピュータである。CPU５１ａは、ROM５１ｂに記憶されているBIOSプログラムや記憶装置５２に記憶されているプログラムを実行することによって制御部５１を動作させる演算処理装置である。RAM５１ｃは、CPU５１ａによってプログラムが実行されるときにプログラムや各種のデータを一時的に記憶するようになっている。
【００６０】
記憶装置５２は、例えばハードディスクなどから構成されている。
【００６１】
操作部５３は、キーボードやマウスなどの入力デバイスから構成されている。制御部５１は、操作部５３から入力される利用者の操作に応じてプログラムを実行するようになっている。
【００６２】
モニタ５４は、例えばLCDなどの表示デバイスから構成されている。制御部５１は、例えば、利用者による操作部５３への操作を受け付け中であることを示す画面や、動作の結果を示す画面などをモニタ５４に表示させるようになっている。
【００６３】
図５は、パーソナルコンピュータ５０のシステム構成を示すブロック図である。
【００６４】
図５に示すように、パーソナルコンピュータ５０は、USBデバイス９０などの各種のハードウェアを制御するためのデバイスドライバ６１と、OSであるWindows（登録商標）６２と、Windows６２上で動作するJavaの開発環境や実行環境であるJavaプラットフォーム６３とを記憶装置５２に記憶している。また、パーソナルコンピュータ５０は、Javaプラットフォーム６３上で動作するJavaバイトコードのデバイスドライバであるJavaデバイスドライバ６４と、Javaアプリケーション２５とを記憶装置５２に記憶するようになっている。
【００６５】
デバイスドライバ６１は、USBデバイスのうちHIDのためのWindows６２の標準のデバイスドライバである標準ドライバ６１ａと、USBポート５５に接続されたUSBデバイス９０にアクセス可能なネイティブコードのプログラムであるlibusb-win32ライブラリ６１ｂとを備えている。libusb-win32ライブラリ６１ｂは、公知のライブラリであるC言語用のlibusbライブラリのうちWindows版のものである。
【００６６】
Windows６２は、デバイスドライバ６１を介して各種のハードウェアを制御するようになっている。
【００６７】
Javaプラットフォーム６３は、Javaプラットフォーム２３（図２参照。）と同様に、Javaラッパー６３ａ、JavaUSBライブラリ６３ｂ、デバイスドライバ管理部６３ｃおよび図示していない仮想マシンを備えている。また、Javaプラットフォーム６３は、利用者が作成したJavaソースコードをJavaバイトコードにコンパイルする図示していないJavaコンパイラも備えている。
【００６８】
次に、パーソナルコンピュータ５０の動作について説明する。
【００６９】
制御部５１は、HIDがUSBポート５５に接続されたときに標準ドライバ６１ａによるHIDの制御である標準制御をWindows６２に開始させる。
【００７０】
また、利用者は、モニタ５４を見ながら操作部５３を操作することによって、Javaアプリケーション２５の元になるJavaソースコードを作成し、作成したJavaソースコードをJavaコンパイラによってコンパイルしてJavaアプリケーション２５を開発することができる。
【００７１】
また、利用者は、開発したJavaアプリケーション２５を複合機１０に導入する前に、Javaアプリケーション２５の動作をパーソナルコンピュータ５０によってシミュレーションやエミュレーションを実行することができる。
【００７２】
ここで、制御部５１は、Javaアプリケーション２５の記述に従って、USBポート５５に接続されているUSBデバイス９０を制御する場合、上述した複合機１０の図３に示す処理と同様の処理を行う。
【００７３】
ただし、パーソナルコンピュータ５０のOSがLinuxではなくWindowsであるので、制御部５１は、ステップＳ３５と、ステップＳ３５の直後に実行されるステップＳ３６とを次のように実行する。
【００７４】
JavaUSBライブラリ６３ｂは、USBポート５５に接続されているUSBデバイス９０がHIDであるとステップＳ３４において判断すると、ステップＳ３１において調べたUSBデバイス９０の「Vender ID」および「Product ID」と、libusb-win32ライブラリ６１ｂの「inf-wizard.exe」とを使用して、libusb-win32ライブラリ６１ｂのドライバである「.infファイル」を作成する。
【００７５】
そして、JavaUSBライブラリ６３ｂは、作成した「.infファイル」と、libusb-win32ライブラリ６１ｂの関数である「usb_install_driver_np_rundll()」とを使用して、デバイスドライバを差し替える。つまり、JavaUSBライブラリ６３ｂは、USBポート５５に接続されているHIDから標準ドライバ６１ａを解放して（ステップＳ３５）、USBポート５５に接続されているHIDに対するJavaデバイスドライバ６４を作成する（ステップＳ３６）。
【００７６】
なお、JavaUSBライブラリ６３ｂは、USBポート５５に接続されているUSBデバイス９０がHIDではないとステップＳ３４において判断したとき、複合機１０のJavaUSBライブラリ２３ｂと同様に、USBポート５５に接続されているUSBデバイス９０に対するJavaデバイスドライバ６４を、Javaラッパー６３ａを介してlibusb-win32ライブラリ６１ｂを利用して作成する（ステップＳ３６）。
【００７７】
以上に説明したように、複合機１０は、標準ドライバ２１ａによってLinux２２に制御されているHIDをJavaアプリケーション２５に制御させる場合に、標準ドライバ２１ａによるHIDの制御を終了させた（ステップＳ３５）後でHIDをJavaアプリケーション２５に制御させる（ステップＳ３７）ので、Javaアプリケーション２５によってHIDを制御することができる。
【００７８】
また、複合機１０は、USBポート１８に接続されたUSBデバイス９０がHIDであると判断されたとき（ステップＳ３４でＹＥＳ）に、標準制御を終了させた（ステップＳ３５）後でHIDをJavaアプリケーション２５に制御させ（ステップＳ３７）、USBポート１８に接続されたUSBデバイス９０がHIDではないと判断されたとき（ステップＳ３４でＮＯ）に、USBデバイス９０をJavaアプリケーション２５に制御させる（ステップＳ３７）ので、USBポート１８に接続されたUSBデバイス９０がHIDではない場合にも、Javaアプリケーション２５によってUSBデバイス９０を制御することができる。
【００７９】
また、複合機１０は、ハードウェアに依存するネイティブコードのlibusbライブラリ２１ｂを利用して、ハードウェアに依存しないバイトコードのJavaアプリケーション２５に、ハードウェアであるUSBデバイス９０を制御させるので、Javaアプリケーション２５の構成を簡素化することができる。
【００８０】
また、複合機１０は、バイトコードのJavaアプリケーション２５にバイトコードのJavaデバイスドライバ２４を介してUSBデバイス９０を制御させるので、Javaアプリケーション２５の構成を簡素化することができる。
【００８１】
また、複合機１０は、OSとしてLinuxが採用されているが、OSとしてWindowsが採用されているパーソナルコンピュータ５０で開発されたJavaアプリケーション２５を実行することができる。
【００８２】
なお、Javaアプリケーション２５を実行する複合機１０のOSは、Linux以外のOSであっても良い。同様に、Javaアプリケーション２５を開発するパーソナルコンピュータ５０のOSも、Windows以外のOSであっても良い。
【００８３】
また、複合機１０は、バイトコードのアプリケーションとして、Javaバイトコードのアプリケーションを備えているが、バイトコードで記述されるプログラミング言語のアプリケーションであれば、Java以外のプログラミング言語のアプリケーションを備えるようになっていても良い。
【００８４】
また、本発明の画像形成装置は、本実施の形態において複合機について説明しているが、コピー機、プリンタ、ファクシミリ機などの複合機以外の画像形成装置であっても良い。
【符号の説明】
【００８５】
１０  複合機（画像形成装置）
１１  制御部（標準制御終了手段、バイトアプリ制御手段、HID判断手段、バイトドライバ作成手段）
１１ｂ  ROM（記憶部）
１８  USBポート
２１ａ  標準ドライバ
２１ｂ  libusbライブラリ（ネイティブコードのプログラム）
２２  Linux（OS）
２４  Javaデバイスドライバ（バイトドライバ）
２５  Javaアプリケーション（バイトコードのアプリケーション）
９０  USBデバイス
【図１】
2011095940.tif 000003
【図２】
2011095940.tif 000004
【図３】
2011095940.tif 000005
【図４】
2011095940.tif 000006
【図５】
2011095940.tif 000007