IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ブラザー工業株式会社の特許一覧

特開2022-184201プログラム、プログラムセット、情報処理装置、及び方法
<>
  • 特開-プログラム、プログラムセット、情報処理装置、及び方法 図1
  • 特開-プログラム、プログラムセット、情報処理装置、及び方法 図2
  • 特開-プログラム、プログラムセット、情報処理装置、及び方法 図3
  • 特開-プログラム、プログラムセット、情報処理装置、及び方法 図4
  • 特開-プログラム、プログラムセット、情報処理装置、及び方法 図5
  • 特開-プログラム、プログラムセット、情報処理装置、及び方法 図6
  • 特開-プログラム、プログラムセット、情報処理装置、及び方法 図7
  • 特開-プログラム、プログラムセット、情報処理装置、及び方法 図8
  • 特開-プログラム、プログラムセット、情報処理装置、及び方法 図9
  • 特開-プログラム、プログラムセット、情報処理装置、及び方法 図10
  • 特開-プログラム、プログラムセット、情報処理装置、及び方法 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022184201
(43)【公開日】2022-12-13
(54)【発明の名称】プログラム、プログラムセット、情報処理装置、及び方法
(51)【国際特許分類】
   G06F 3/12 20060101AFI20221206BHJP
   G06F 8/61 20180101ALI20221206BHJP
   G06F 9/44 20180101ALI20221206BHJP
   B41J 29/00 20060101ALN20221206BHJP
   B41J 29/38 20060101ALN20221206BHJP
【FI】
G06F3/12 325
G06F3/12 304
G06F3/12 305
G06F3/12 326
G06F3/12 332
G06F8/61
G06F9/44
B41J29/00 T
B41J29/38
【審査請求】未請求
【請求項の数】13
【出願形態】OL
(21)【出願番号】P 2021091910
(22)【出願日】2021-05-31
(71)【出願人】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】100117101
【弁理士】
【氏名又は名称】西木 信夫
(74)【代理人】
【識別番号】100120318
【弁理士】
【氏名又は名称】松田 朋浩
(72)【発明者】
【氏名】チュー ポーチュン
【テーマコード(参考)】
2C061
5B376
【Fターム(参考)】
2C061AP01
2C061AP07
2C061AQ05
2C061CQ03
2C061CQ23
2C061HQ20
5B376AA05
5B376AA31
5B376AD27
5B376GA01
(57)【要約】
【課題】ポート情報が正しく設定されていない場合でも、所望のデバイスにデータを送信できる手段を提供する。
【解決手段】通信プログラム110は、プリントキューを用いてデータをプリンタ20に送信する機能を有するOS120が搭載された情報処理装置10のCPU11により実行される。通信プログラム110は、上位プログラムから呼び出されたときに、OS120からデバイス情報150を取得する処理と、取得されたデバイス情報150に含まれるデバイス詳細情報151に基づき、送信先デバイスを決定する処理と、上位プログラムから出力されたデータを決定された送信先デバイスに、当該送信先デバイスに関するデバイス情報150を用いて送信する処理とを、CPU11に実行させる。
【選択図】図4
【特許請求の範囲】
【請求項1】
OSが搭載された情報処理装置のコンピュータにより実行されるプログラムであって、
上記OSは、上記情報処理装置にインストールされたデバイスドライバに関する情報であるデバイスドライバ情報と第1ポート情報とをデバイスキューごとに含むデバイスキュー情報と、デバイスに関連する関連情報と第2ポート情報とをデバイスごとに含むデバイス情報と、を記憶しており、アプリケーションプログラムから一のデバイスキューを指定して呼び出されたときに、指定されたデバイスキューに関する上記第1ポート情報を上記デバイスキュー情報から取得し、取得された上記第1ポート情報に対応する上記第2ポート情報を有する上記デバイス情報を取得し、取得された上記デバイス情報を用いて、上記アプリケーションプログラムから出力されたデータを上記デバイスに送信する機能を有しており、
上記プログラムは、
上位プログラムから呼び出されたときに、上記OSから上記デバイス情報を取得する取得処理と、
上記取得処理で取得された上記デバイス情報に含まれる上記関連情報に基づき、送信先デバイスを決定する決定処理と、
上記上位プログラムから出力されたデータを上記決定処理で決定された上記送信先デバイスに、当該送信先デバイスに関する上記デバイス情報を用いて送信する送信処理とを、上記コンピュータに実行させるプログラム。
【請求項2】
上記取得処理は、上記デバイスキュー情報に含まれる上記第1ポート情報に対応する上記第2ポート情報を含む上記デバイス情報と、上記デバイスキュー情報に含まれる上記第1ポート情報に対応しない上記第2ポート情報を含む上記デバイス情報とを、上記OSから取得する処理である請求項1に記載のプログラム。
【請求項3】
上記取得処理は、上記情報処理装置と物理的に通信可能に接続されているデバイスに関する上記デバイス情報のみを取得する処理である請求項1又は2に記載のプログラム。
【請求項4】
上記プログラムは、
上記上位プログラムからデバイスの識別情報を受け取る受取処理を上記コンピュータに実行させ、
上記識別情報によって特定されるデバイスに関する情報が上記OSから取得された上記デバイス情報に含まれる場合の上記決定処理において、上記識別情報によって特定されるデバイスを上記送信先デバイスとして決定する請求項1から3のいずれかに記載のプログラム。
【請求項5】
上記プログラムは、
上記識別情報によって特定されるデバイスに関する情報が上記OSから取得された上記デバイス情報に含まれない場合の上記決定処理において、ユーザからデバイスの指定を受け付け、ユーザから指定されたデバイスを上記送信先デバイスとして決定する請求項4に記載のプログラム。
【請求項6】
上記取得処理は、上記上位プログラムから指定された種類のデバイスに関する上記デバイス情報を、上記OSから取得する処理である請求項1から5のいずれかに記載のプログラム。
【請求項7】
上記プログラムは、上記上位プログラムから出力されたデータに基づきデバイスの種類を判断する判断処理を上記コンピュータに実行させ、
上記取得処理は、上記判断処理で判断された種類のデバイスに関する上記デバイス情報を、上記OSから取得する処理である請求項1から5のいずれかに記載のプログラム。
【請求項8】
上記決定処理は、複数の上記送信先デバイスを決定し得る処理であり、
上記決定処理で複数の上記送信先デバイスが決定された場合の上記送信処理は、上記決定処理で決定された複数の上記送信先デバイスのそれぞれに、上記上位プログラムから出力されたデータを送信する処理である請求項1から7のいずれかに記載のプログラム。
【請求項9】
上記決定処理で複数の上記送信先デバイスが決定された場合の上記送信処理は、複数の上記送信先デバイスのそれぞれに対応するプロセスを起動し、起動した上記プロセスのそれぞれにおいて、プロセスごとに、上記上位プログラムから出力されたデータを送信する処理である請求項8に記載のプログラム。
【請求項10】
請求項1から9のいずれかに記載のプログラムと、上記上位プログラムとして上記プログラムを呼び出すデバイスドライバとを上記情報処理装置にインストールするインストール処理と、
上記OSで管理されているポートに新たなポートを追加する追加処理と、
上記インストール処理でインストールされた上記デバイスドライバに関する情報と、上記追加処理で追加されたポートに関する上記第1ポート情報とを上記デバイスキュー情報に登録する登録処理とを、上記コンピュータに実行させるインストールプログラム。
【請求項11】
請求項1から9のいずれかに記載のプログラムと、
デバイスに送信するデータを生成し、上記上位プログラムとして上記プログラムを呼び出すデータ生成プログラムと、を備えたプログラムセット。
【請求項12】
コンピュータと、
OSとを備えた情報処理装置であって、
上記OSは、上記情報処理装置にインストールされたデバイスドライバに関する情報であるデバイスドライバ情報と第1ポート情報とをデバイスキューごとに含むデバイスキュー情報と、デバイスに関連する関連情報と第2ポート情報とをデバイスごとに含むデバイス情報と、を記憶しており、アプリケーションプログラムから一のデバイスキューを指定して呼び出されたときに、指定されたデバイスキューに関する上記第1ポート情報を上記デバイスキュー情報から取得し、取得された上記第1ポート情報に対応する上記第2ポート情報を有する上記デバイス情報を取得し、取得された上記デバイス情報を用いて、上記アプリケーションプログラムから出力されたデータを上記デバイスに送信する機能を有しており、
上記コンピュータは、
デバイスにデータを送信する指示を受けたことに応じて、上記OSから上記デバイス情報を取得する取得処理と、
上記取得処理で取得された上記デバイス情報に含まれる上記関連情報に基づき、送信先デバイスを決定する決定処理と、
上記データを上記決定処理で決定された上記送信先デバイスに、当該送信先デバイスに関する上記デバイス情報を用いて送信する送信処理とを、実行する情報処理装置。
【請求項13】
コンピュータと、OSとを備えた情報処理装置で実行される方法であって、
上記OSは、上記情報処理装置にインストールされたデバイスドライバに関する情報であるデバイスドライバ情報と第1ポート情報とをデバイスキューごとに含むデバイスキュー情報と、デバイスに関連する関連情報と第2ポート情報とをデバイスごとに含むデバイス情報と、を記憶しており、アプリケーションプログラムから一のデバイスキューを指定して呼び出されたときに、指定されたデバイスキューに関する上記第1ポート情報を上記デバイスキュー情報から取得し、取得された上記第1ポート情報に対応する上記第2ポート情報を有する上記デバイス情報を取得し、取得された上記デバイス情報を用いて、上記アプリケーションプログラムから出力されたデータを上記デバイスに送信する機能を有しており、
上記方法は、
デバイスにデータを送信する指示を受けたことに応じて、上記OSから上記デバイス情報を取得する取得ステップと、
上記取得ステップで取得された上記デバイス情報に含まれる上記関連情報に基づき、送信先デバイスを決定する決定ステップと、
上記データを上記決定ステップで決定された上記送信先デバイスに、当該送信先デバイスに関する上記デバイス情報を用いて送信する送信ステップとを、備えた方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、デバイスにデータを送信するプログラム、当該プログラムを含むプログラムセット、デバイスにデータを送信する情報処理装置、及び、デバイスにデータを送信する方法に関する。
【背景技術】
【0002】
情報処理装置では、アプリケーションプログラムを用いて、各種のデータが作成される。作成されたデータは、必要に応じて、情報処理装置に直結されたローカルプリンタや、ネットワークを介して情報処理装置に接続されたネットワークプリンタ等で印刷される。この印刷を実行するためには、印刷の実行前に、情報処理装置にプリンタドライバをインストールしたり、情報処理装置に搭載されたOSが管理するポートを追加したりする必要がある。
【0003】
特許文献1には、ネットワークを介して接続された外部機器に対して対象データを出力する情報処理装置の例が記載されている。特許文献1に記載の情報処理装置では、仮想ポートを有するポートモニタが、対象データに関する特徴を示す特徴情報に基づいて、複数の外部機器の中から対象データを出力すべき外部機器を検索し、検出した外部機器への出力経路を作成し、作成した出力経路に対象データを送信する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2008-027153号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
デバイスにデータを送信するためには、ポートの設定を正しく行う必要がある。デバイスがプリンタである場合、OSは、プリンタドライバに関する情報及びポート情報を含むプリントキュー情報と、プリンタの機種名、シリアル番号、通信インタフェース情報、ポート情報等を含むデバイス状態とを記憶している。プリントキュー情報に含まれるポート情報とデバイス情報に含まれるポート情報とは対応している必要がある。両者が対応していない場合には、所望のプリンタに印刷データを送信できず、所望のプリンタで印刷を行えない。
【0006】
本発明は、上記の事情に鑑みてなされたものであり、その目的は、従来とは異なる方法で、ポート情報が正しく設定されていない場合でも、所望のデバイスにデータを送信できる手段を提供することにある。
【課題を解決するための手段】
【0007】
本明細書では様々な開示を行う。開示例の一例であるプログラムは、OSが搭載された情報処理装置のコンピュータにより実行されるプログラムである。上記OSは、上記情報処理装置にインストールされたデバイスドライバに関する情報であるデバイスドライバ情報と第1ポート情報とをデバイスキューごとに含むデバイスキュー情報と、デバイスに関連する関連情報と第2ポート情報とをデバイスごとに含むデバイス情報と、を記憶しており、アプリケーションプログラムから一のデバイスキューを指定して呼び出されたときに、指定されたデバイスキューに関する上記第1ポート情報を上記デバイスキュー情報から取得し、取得された上記第1ポート情報に対応する上記第2ポート情報を有する上記デバイス情報を取得し、取得された上記デバイス情報を用いて、上記アプリケーションプログラムから出力されたデータを上記デバイスに送信する機能を有する。上記プログラムは、上位プログラムから呼び出されたときに、上記OSから上記デバイス情報を取得する取得処理と、上記取得処理で取得された上記デバイス情報に含まれる上記関連情報に基づき、送信先デバイスを決定する決定処理と、上記上位プログラムから出力されたデータを上記決定処理で決定された上記送信先デバイスに、当該送信先デバイスに関する上記デバイス情報を用いて送信する送信処理とを、上記コンピュータに実行させる。
【発明の効果】
【0008】
本発明によれば、ポート情報を用いることなく、OSから関連情報を取得し、送信先デバイスに関する関連情報と第2ポート情報とを含むデバイス情報を用いてデータを送信するので、デバイスキュー情報を用いることなくデータを送信できる。したがって、ポート情報が正しく設定されていない場合でも、所望のデバイスにデータを送信できる。
【図面の簡単な説明】
【0009】
図1図1は、本実施形態に係るシステム1の概略図である。
図2図2は、本実施形態に係るシステム1に含まれる情報処理装置10及びプリンタ20のブロック図である。
図3図3は、本実施形態に係る情報処理装置10におけるOS120の機能を用いた印刷処理を示す図である。
図4図4は、本実施形態に係る情報処理装置10における通信プログラム110を用いた印刷処理を示す図である。
図5図5は、本実施形態に係る情報処理装置10における通信プログラム110を用いた他の印刷処理を示す図である。
図6図6は、本実施形態に係る通信プログラム110のインストールプログラムのフローチャートである。
図7図7は、本実施形態に係る通信プログラム110のフローチャートである。
図8図8は、図7の続図である。
図9図9は、図8の続図である。
図10図10は、図9の続図である。
図11図11は、図10に示す双方向通信処理のフローチャートである。
【発明を実施するための形態】
【0010】
以下、適宜図面を参照して本発明の実施形態について説明する。なお、以下に説明される実施形態は本発明の一例にすぎず、本発明の要旨を変更しない範囲で、本発明の実施形態を適宜変更できることは言うまでもない。例えば、後述する各処理の実行順序は、本発明の要旨を変更しない範囲で、適宜変更することができる。
【0011】
[システム1の構成]
図1が参照されて、本実施形態に係るシステム1が説明される。図1に示されるシステム1は、情報処理装置10と、プリンタ20とを備えている。プリンタ20は、情報処理装置10のポートに接続されている。情報処理装置10とプリンタ20とは、USBケーブル等を用いて直結されていてもよく、通信ネットワークを用いて接続されていてもよい。通信ネットワークは、有線LAN、無線LAN、インターネット、専用回線、或いはこれらの組み合わせであってもよい。情報処理装置10には、1台以上のプリンタ20が接続される。図1に示される例では、4台のプリンタ20のうち2台が情報処理装置10と物理的に通信可能に接続されており、残りの2台は情報処理装置10と物理的に通信可能に接続されていない。
【0012】
[情報処理装置10の構成]
情報処理装置10は、図2に示されるように、CPU11、メモリ12、入力部13、表示部14、及び通信I/F部15を備えている。CPU11、メモリ12、入力部13、表示部14、及び通信I/F部15は、内部バス16を用いて接続されている。情報処理装置10は、プリンタ20に対して印刷を指示する任意の装置である。情報処理装置10は、例えば、パーソナルコンピュータ、ビジネスコンピュータ、端末装置等である。情報処理装置10には、携帯電話、スマートフォン、タブレット端末等も含まれる。
【0013】
CPU11は、情報処理装置10の動作を制御する。CPU11は、入力部13から入力された各種の情報、通信I/F部15を通じて外部装置から受信した各種の情報等に基づき、メモリ12から後述する各種のプログラムを読み出して実行する。プログラムの実行結果は、例えば、表示部14に表示されたり、通信I/F部15を通じて外部装置に送信されたりする。CPU11は、情報処理装置10のコンピュータの一例である。
【0014】
メモリ12は、CPU11が実行する各種のプログラムと、プログラムの実行に必要なデータ或いは情報とを記憶している。メモリ12は、通信プログラム110、OS120、アプリケーションプログラム130等を記憶している。メモリ12は、例えば、RAM、ROM、EEPROM、HDD、情報処理装置10に着脱されるUSBメモリ等の可搬記憶媒体、CPU11が備えるバッファ等、或いはこれらの組み合わせによって構成される。通信プログラム110は、プログラムの一例である。
【0015】
メモリ12は、コンピュータが読み取り可能なストレージ媒体であってもよい。コンピュータが読み取り可能なストレージ媒体とは、non-transitoryな媒体である。non-transitoryな媒体には、上記の例の他に、CD-ROM、DVD-ROM等の記録媒体も含まれる。また、non-transitoryな媒体は、tangibleな媒体でもある。一方、インターネット上のサーバなどからダウンロードされるプログラムを搬送する電気信号は、コンピュータが読み取り可能な媒体の一種であるコンピュータが読み取り可能な信号媒体であるが、non-transitoryなコンピュータが読み取り可能なストレージ媒体には含まれない。
【0016】
入力部13は、ユーザが操作して情報処理装置10に指示や情報等を入力するための入力機器である。入力部13は、例えば、マウス、キーボード、タッチパネル等である。表示部14は、情報処理装置10の処理結果や状態等を画面に表示する表示機器である。表示部14は、例えば、液晶ディスプレイ、有機ELディスプレイ等である。表示機能を有するタッチパネルは、入力部13及び表示部14として機能する。通信I/F部15は、プリンタ20等の外部装置との間で通信を行うインタフェース回路である。通信には、ケーブル等を用いた通信と、通信ネットワークを用いた通信とが含まれる。通信には、有線LANを用いた通信、無線LANを用いた通信、USBを用いた通信、Bluetooth(登録商標)を用いた通信等が含まれる。入力部13、表示部14、及び通信I/F部15は、CPU11の制御に従い動作する。
【0017】
[プリンタ20の構成]
プリンタ20は、図2に示されるように、CPU21、メモリ22、入力部23、表示部24、通信I/F部25、及びプリント部26を備えている。CPU21、メモリ22、入力部23、表示部24、通信I/F部25、及びプリント部26は、内部バス27を用いて接続されている。CPU21、メモリ22、入力部23、表示部24、及び通信I/F部25の機能は、情報処理装置10のCPU11、メモリ12、入力部13、表示部14及び通信I/F部15の機能と同様である。ただし、メモリ22はプリンタプログラム210を記憶し、CPU21はプリンタプログラム210を実行する。
【0018】
プリント部26は、情報処理装置10から送信されたデータに基づき印刷を行う要素である。プリント部26は、例えば、インクを吐出して画像を記録するインクジェト方式で印刷を行うものでもよく、他の方式で印刷を行うものでもよい。プリント部26は、白黒印刷とカラー印刷とを行うものでもよく、白黒印刷だけを行うものでもよい。プリンタ20は、プリント専用機でもよく、プリント部26に加えてFAX部等をさらに備えたMFP(Multifunction Peripheral)であってもよい。プリンタ20は、デバイスの一例である。
【0019】
[OS120の機能を用いた印刷処理]
情報処理装置10には、OS120が搭載されている。OS120は、例えば、Windows (登録商標) Operating System、MacOS(登録商標)、Android(登録商標) OS、iOS(登録商標)、Windows Phone(登録商標) Operating System等であってもよい。OS120は、情報処理装置10にインストールされた複数のアプリケーションプログラム130を並行して実行する機能を有する。複数のアプリケーションプログラム130は、例えば、時分割方式によって仮想的に並行して実行される。
【0020】
OS120は、プリントキューを用いてプリンタ20にデータを送信する機能を有する。アプリケーションプログラム130は、ユーザからの印刷指示に応じて、OS120の機能を用いてプリンタ20に印刷指示とデータとを出力する。以下、図3が参照されて、OS120の機能を用いた印刷処理が説明される。図3に示される印刷処理は、公知のものである。
【0021】
印刷を実行する前に、情報処理装置10にはプリンタ20に対応したプリンタドライバ160がインストールされている。OS120は、印刷デバイス情報140とデバイス情報150とを記憶している。印刷デバイス情報140と、デバイス情報150と、プリンタドライバ160とは、実際にはメモリ12に記憶されている。プリンタドライバ160は、デバイスドライバの一例である。
【0022】
印刷デバイス情報140は、プリントキューごとに、プリンタドライバ情報141と、ポート情報142とを含んでいる。プリンタドライバ情報141は、情報処理装置10にインストールされたプリンタドライバ160に関する情報である。プリンタドライバ160は、プリンタドライバ情報141に紐付けられている。ポート情報142は、プリンタドライバ情報141に対応するプリンタ20のポート情報である。印刷デバイス情報140は、デバイスキュー情報の一例である。プリンタドライバ情報141は、デバイスドライバ情報の一例である。ポート情報142は、第1ポート情報の一例である。
【0023】
デバイス情報150は、デバイスごとに、デバイス詳細情報151と、ポート情報152とを含んでいる。デバイス詳細情報151は、プリンタ20との間の通信で用いられる情報である。デバイス詳細情報151には、機種名、シリアル番号、通信I/F情報等が含まれる。ポート情報152は、デバイス詳細情報151に対応するプリンタ20のポート情報である。デバイス詳細情報151は、関連情報の一例である。ポート情報152は、第2ポート情報の一例である。
【0024】
図3に示される印刷処理は、印刷デバイス情報140に含まれるポート情報142と、デバイス情報150に含まれるポート情報152とが紐付けられている場合に実行される。プリントキューとは、ポート情報142とポート情報152とが紐付けられた状態の印刷デバイス情報140である。印刷デバイス情報140とデバイス情報150とは、ポートを介して紐付けられている。なお、「紐付けられている」は、「対応する」の一例である。
【0025】
アプリケーションプログラム130から印刷が指示される前に、登録済みのプリントキューのリストが表示部14に表示される。ユーザは、表示されたリストの中から一のプリントキューを選択して、印刷を指示する。アプリケーションプログラム130は、ユーザによって選択されたプリントキューを指定して、OS120を呼び出す。OS120は、指定されたプリントキューのプリンタドライバ情報141に紐付けられたプリンタドライバ160に対して、アプリケーションプログラム130から出力されたデータ(以下、印刷データと称される)を出力する。プリンタドライバ160は、印刷データに基づき、プリンタ20が解釈可能なデータ(以下、プリンタ用データと称される)を生成する。プリンタドライバ160は、生成したプリンタ用データをスプーラ170に託す。
【0026】
スプーラ170は、OS120に含まれるプログラムである。スプーラ170は、指定されたプリントキューに対応するポート情報142を印刷デバイス情報140から取得し、取得されたポート情報142に紐付けられたポート情報152をデバイス情報150から取得する。スプーラ170は、取得されたポート情報152が示すポートに対して、プリンタドライバ160で生成されたプリンタ用データを出力する。OS120は、取得されたポート情報152を含むデバイス情報150に含まれるデバイス詳細情報151を取得する。OS120は、取得されたデバイス詳細情報151とポート情報152とを含むデバイス情報150を用いて、プリンタ20に対して、プリンタドライバ160で生成されたプリンタ用データを出力する。
【0027】
スプーラ170は、OS120の一部である。プリンタドライバ160で生成されたプリンタ用データは、アプリケーションプログラム130から出力された印刷データと形式は異なるが、同じ内容である。したがって、OS120は、アプリケーションプログラム130から一のプリントキューを指定して呼び出されたときに、指定されたプリントキューに関するポート情報142を印刷デバイス情報140から取得し、取得されたポート情報142に対応するポート情報152を有するプリンタに関するデバイス詳細情報151をデバイス情報150から取得し、取得されたデバイス詳細情報151とポート情報152とを含むデバイス情報150を用いて、アプリケーションプログラム130から出力されたデータをプリンタ20に送信すると言える。
【0028】
図3に示される印刷処理は、印刷デバイス情報140に含まれるポート情報142と、デバイス情報150に含まれるポート情報152とが紐付けられている場合に限って実行可能である。ポート情報142とポート情報152とが紐付けられていない場合には、図3に示される印刷処理を実行できない。
【0029】
[通信プログラム110を用いた印刷処理]
本実施形態に係る通信プログラム110は、ポート情報142とポート情報152とが紐付けられていない場合にも印刷処理を実行できるプログラムである。通信プログラム110は、OS120の機能を用いた印刷処理(図3)とは異なる印刷処理(図4又は図5)を行う。ユーザは、OS120の機能を用いた印刷処理を行うか、通信プログラム110を用いた印刷処理を行うかを選択できる。
【0030】
通信プログラム110は、アプリケーションプログラム130又はプリンタドライバ160から呼び出される。アプリケーションプログラム130及びプリンタドライバ160は、通信プログラム110を呼び出す上位プログラムの一例である。以下、図4が参照されて、プリンタドライバ160が通信プログラム110を呼び出す場合について、通信プログラム110を用いた印刷処理について説明される。
【0031】
OS120には、通信プログラム110に対応した専用のプリントキュー(以下、特定プリントキューと称される)が追加される。印刷デバイス情報140は、従来のプリントキュー(不図示)と特定プリントキューとについて、プリンタドライバ情報141と、ポート情報142とを含んでいる。特定プリントキューについてのプリンタドライバ情報141は、通信プログラム110を用いて印刷処理を行うときに使用されるプリンタドライバ160に関する情報である。特定プリントキューについてのポート情報142は、通信プログラム110を用いて印刷処理を行うときに使用されるポートに関する情報である。印刷デバイス情報140に含まれる、特定プリントキューについてのポート情報142は、デバイス情報150に含まれるポート情報152とは紐付けられていない。
【0032】
アプリケーションプログラム130から印刷が指示される前に、登録済みのプリントキューのリストが表示部14に表示される。このリストには、特定プリントキューが含まれている。ユーザは、表示されたリストの中から特定プリントキューを選択して、印刷を指示する。アプリケーションプログラム130は、特定プリントキューを指定して、OS120を呼び出す。OS120は、特定プリントキューについてのプリンタドライバ情報141に紐付けられたプリンタドライバ160に対して、アプリケーションプログラム130から出力された印刷データを出力する。プリンタドライバ160は、印刷データに基づき、プリンタ用データを生成する。プリンタドライバ160は、特定プリントキューが指定された場合、生成したプリンタ用データを通信プログラム110に託す。
【0033】
通信プログラム110は、プリンタドライバ160から呼び出されたときに、OS120からデバイス情報150を取得する取得処理を情報処理装置10のコンピュータ(CPU11)に実行させる。次に、通信プログラム110は、取得処理で取得されたデバイス情報150に含まれるデバイス詳細情報151に基づき、送信先デバイスを決定する決定処理を情報処理装置10のコンピュータに実行させる。次に、通信プログラム110は、プリンタドライバ160から託されたプリンタ用データを決定処理で決定された送信先デバイスに、当該送信先デバイスに関するデバイス詳細情報151とポート情報152とを含むデバイス情報150を用いて送信する送信処理を情報処理装置10のコンピュータに実行させる。
【0034】
このように通信プログラム110は、プリンタドライバ160から呼び出されたときに、印刷デバイス情報140に含まれるポート情報142を参照せずに、デバイス情報150に含まれるデバイス詳細情報151と第2ポート情報152を直接参照する。このため、プリントキューに依存せずにプリンタ20にデータを送信できる。したがって、本実施形態に係る通信プログラム110によれば、ポート情報が正しく設定されていない場合でも、所望のデバイスにデータを送信できる。
【0035】
なお、アプリケーションプログラム130が、プリンタドライバ160と同等の機能を有する場合がある。この場合、図5に示されるように、アプリケーションプログラム130は、印刷デバイス情報190を含む。印刷デバイス情報190には、プリンタの機種毎にプリンタ用データを生成するための情報(図5には、プリンタモデルA、プリンタモデルB、…等と記載)が含まれている。アプリケーションプログラム130は、印刷デバイス情報190からプリンタ30の機種に応じていずれかの情報を取得し、取得した情報を用いてプリンタ用データを生成する。また、アプリケーションプログラム130は、予め通信プログラム110を呼び出すように構成されており、プリンタ用データを生成した後、通信プログラム110を呼び出してプリンタ用データを通信プログラム110に渡す。
【0036】
[印刷デバイス情報140の設定]
通信プログラム110をプリンタドライバ160と組み合わせて使用する場合には、特定プリントキューについて、プリンタドライバ情報141とポート情報142とを設定する必要がある。この設定は、ユーザが入力部13を操作して行ってもよい。この場合、ユーザは、特定プリントキューについてのポート情報142(ポート名)を、他のポート名と重複しない限り任意に設定することができる。
【0037】
これに代えて、ユーザの負担軽減のために、通信プログラム110を情報処理装置10にインストールするインストールプログラムが、上記の設定を行ってもよい。インストールプログラムは、図6に示されるように、通信プログラム110とプリンタドライバ160とを情報処理装置10にインストールする処理(S311)と、OS120に特定のポート名で新たなポートを追加する処理(S312)と、インストールされたプリンタドライバ160に関するプリンタドライバ情報141と、追加されたポートに関するポート情報142とを印刷デバイス情報140に登録する処理(S313)と、を情報処理装置10のコンピュータ(CPU11)に実行させる。S311は、インストール処理の一例である。S312は、追加処理の一例である。S313は、登録処理の一例である。
【0038】
[通信プログラム110の詳細]
図7から図11が参照されて、通信プログラム110の詳細が説明される。通信プログラム110は、上位プログラムから呼び出されると動作を開始する。図7から図11に関する説明では、「通信プログラム110又はOS120が~する処理を情報処理装置10のCPU11に実行させる」を「通信プログラム110又はOS120が~する」と記載している。また、「プリンタプログラム210が~する処理をプリンタ20のCPU21に実行させる」を「プリンタプログラム210が~する」と記載している。
【0039】
本明細書のフローチャートは、基本的に、プログラムに記述された命令に従ったCPU11、21の処理を示す。すなわち、以下の説明における「判断」、「選択」、「取得」、「受付」等の処理は、CPU11、21の処理を表している。CPU11による処理は、OS120を介したハードウェア制御も含む。なお、「取得」は要求を必須とはしない概念で用いる。すなわち、CPU11が要求することなくデータを受信するという処理も、「CPU11がデータを取得する」という概念に含まれる。また、本明細書中の「データ」とは、コンピュータに読取可能なビット列で表される。そして、実質的な意味内容が同じでフォーマットが異なるデータは、同一のデータとして扱われるものとする。本明細書中の「情報」についても同様である。
【0040】
通信プログラム110は、始めに、呼び出し元の上位プログラムからデバイス検索に必要な情報を取得する(S111)。デバイス検索に必要な情報には、デバイスクラスやベンダID等が含まれる。デバイスクラスは、送信先デバイスのクラスを示すIDである。デバイスクラスは、例えば、プリンタ、スキャナ、マスストーレジ等のクラスを示す。ベンダIDは、送信先デバイスの会社を示すIDである。S111は、上位プログラムからデバイスの識別情報を受け取る受取処理の一例である。
【0041】
次に、通信プログラム110は、S111において取得したデバイスクラスを指定して、接続中のデバイスについてデバイス情報150の一覧をOS120に要求する(S112)。ここで、接続中のデバイスとは、情報処理装置10に物理的に接続されているデバイスをいう。OS120は、通信プログラム110から要求を受け取ると、接続中のデバイスについてのデバイス情報150の一覧を作成し(S211)、作成したデバイス情報150の一覧を通信プログラム110に返す。通信プログラム110は、OS120から接続中のデバイスについてのデバイス情報150の一覧を受け取る(S113)。
【0042】
S112及びS113は、OS120からデバイス情報150を取得する取得処理の一例である。この取得処理は、印刷デバイス情報140に含まれるポート情報142に対応するポート情報152を含むデバイス情報150と、印刷デバイス情報140に含まれるポート情報142に対応しないポート情報152を含むデバイス情報150との両方をOS120から取得する処理である。また、この取得処理は、情報処理装置10と物理的に通信可能に接続されているプリンタ20に関するデバイス情報150のみを取得する処理である。また、この取得処理は、上位プログラムから指定された種類のデバイスに関するデバイス情報150をOS120から取得する処理である。
【0043】
次に、通信プログラム110は、取得したデバイス情報150の一覧を解析する(S114からS118)。通信プログラム110は、取得したデバイス情報150の一覧にS111において取得した対象デバイスクラスのデバイス情報が含まれるかを判断する(S114)。通信プログラム110は、対象デバイスクラスのデバイス情報が含まれると判断したことに応じて(S114:Yes)、上位プログラムによってプロダクトIDが指定されているかを判断する(S115)。プロダクトIDは、プリンタの機能を示す情報である。通信プログラム110は、プロダクトIDが指定されていると判断したことに応じて(S115:Yes)、接続中のデバイスに、指定されたプロダクトIDのデバイスが含まれるかを判断する(S116)。通信プログラム110は、指定されたプロダクトIDのデバイスが含まれると判断したことに応じて(S116:Yes)、上位プログラムによってデバイスIDまたはシリアル番号が指定されているかを判断する(S117)。デバイスID及びシリアル番号は、プリンタごとに割り当てられる固有の情報である。通信プログラム110は、デバイスIDまたはシリアル番号が指定されていると判断したことに応じて(S117:Yes)、接続中のデバイスに、指定されたデバイスIDまたはシリアル番号のデバイスが含まれるかを判断する(S118)。通信プログラム110は、指定されたデバイスIDまたはシリアル番号のデバイスが含まれると判断したことに応じて(S118:Yes)、図9に示されるS151へ進む。
【0044】
通信プログラム110は、S115においてプロダクトIDが指定されていないと判断したことに応じて(S115:No)、図8に示されるS131へ進む。通信プログラム110は、S117においてデバイスID及びシリアル番号が指定されていないと判断したことに応じて(S117:No)、S131へ進む。
【0045】
通信プログラム110は、S114において対象デバイスクラスのデバイス情報が含まれていないと判断したことに応じて(S114:No)、S121へ進む。通信プログラム110は、S116において指定されたプロダクトIDのデバイスが含まれていないと判断したことに応じて(S116:No)、S121へ進む。通信プログラム110は、S118において指定されたデバイスID及びシリアル番号のデバイスが含まれていないと判断したことに応じて(S118:No)、S121へ進む。
【0046】
通信プログラム110は、S121において、上位プログラムで指定された対象デバイスが接続されていないことを表示部14に表示する。通信プログラム110は、例えば、表示部14に、対象デバイスが接続されていないことを示すポップアップ画面を表示させる。次に、通信プログラム110は、接続中のデバイスの一覧と、送信先デバイスを変更するかを問い合せる問合せメッセージとを画面を表示し、ユーザからの入力を待つ(S122)。ユーザは、入力部13を用いて、送信先デバイスを変更するかを指示する。通信プログラム110は、送信先デバイスが変更されたかを判断する(S123)。通信プログラム110は、送信先のデバイスが変更されたと判断したことに応じて(S123:Yes)、S151へ進む。通信プログラム110は、送信先デバイスが変更されなかったと判断したことに応じて(S123:No)、通信失敗を上位プログラムに返し、動作を終了する。
【0047】
通信プログラム110は、図8に示されるS131において、接続中のデバイスが複数かを判断する。通信プログラム110は、接続中のデバイスは1台と判断したことに応じて(S131:No)、接続中の1台のデバイスに直接送信するモードが有効かを判断する(S132)。ここで、直接送信するとは、条件が成立した時点で、ユーザに確認することなく、速やかに送信を実行することをいう。通信プログラム110は、接続中の1台のデバイスに直接送信するモードが有効であると判断したことに応じて(S132:Yes)、接続中の1台のデバイスを送信先に設定し(S133)、S151へ進む。
【0048】
通信プログラム110は、S131において接続中のデバイスが複数と判断したことに応じて(S131:Yes)、すべてのデバイスのプロダクトIDが同じかを判断する(S141)。通信プログラム110は、プロダクトIDが同じでないと判断したことに応じて(S141:No)、プロダクトIDを無視するモードが有効かを判断する(S142)。通信プログラム110は、プロダクトIDを無視するモードが有効と判断したことに応じて(S142:Yes)、接続中のすべてのデバイスに直接送信するモードが有効かを判断する(S143)。
【0049】
通信プログラム110は、接続中のすべてのデバイスに直接送信するモードが有効でないと判断したことに応じて(S143:No)、接続中のデバイスの一覧と、デバイスの選択を促す問合せメッセージとを表示部14に表示し、ユーザからの入力を待つ(S145)。ユーザは、入力部13を用いて、送信先デバイスを選択するかを指示する。通信プログラム110は、送信先のデバイスが選択されたかを判断する(S146)。通信プログラム110は、デバイスが選択されたと判断したことに応じて(S146:Yes)、選択中のデバイスのプロダクトIDが同じかを判断する(S147)。通信プログラム110は、選択中のデバイスのプロダクトIDが同じと判断したことに応じて(S147:Yes)、S151へ進む。
【0050】
通信プログラム110は、S147において選択中のデバイスのプロダクトIDが同じでないと判断したことに応じて(S147:No)、確認メッセージを表示部14に表示し、ユーザからの入力を待つ(S148)。S148では、例えば、「選択中のデバイスのプロダクトIDが同じでないので、予期しない不具合が起こるかもしれませんが、続行しますか?」等の確認メッセージが表示部14に表示される。ユーザは、入力部13を用いて、処理を続行するかを指示する。通信プログラム110は、続行が指示されたかを判断する(S149)。通信プログラム110は、続行が指示されたと判断したことに応じて(S149:Yes)、S151へ進む。
【0051】
通信プログラム110は、S132において接続中の1台のデバイスに直接送信するモードが有効でないと判断したことに応じて(S132:No)、S145へ進む。通信プログラム110は、S141においてプロダクトIDが同じと判断したことに応じて(S141:Yes)、S142を実行せずにS143へ進む。通信プログラム110は、S142においてプロダクトIDを無視するモードが有効でないと判断したことに応じて(S142:No)、S143を実行せずにS145へ進む。通信プログラム110は、S143において接続中のすべてのデバイスに直接送信するモードが有効と判断したことに応じて(S143:Yes)、接続中のすべてのデバイスを送信先に設定し(S144)、S147へ進む。
【0052】
通信プログラム110は、S146においてデバイスが選択されなかったと判断したことに応じて(S146:No)、通信失敗として動作を終了する。通信プログラム110は、S149において続行が指示されなかったと判断したことに応じて(S149:No)、通信失敗を上位プログラムに返し、動作を終了する。
【0053】
S114からS118、S121からS123、S131からS133、及びS141からS149は、送信先デバイスを決定する決定処理の一例である。S111で受け取ったデバイス検索に必要な情報によって特定されるプリンタ20に関する情報が、OS120から取得されたデバイス情報150に含まれる場合、決定処理では、受け取ったデバイス検索に必要な情報によって特定されるプリンタ20が送信先デバイスとして決定される(S133、S144)。一方、受け取ったデバイス検索に必要な情報によって特定されるプリンタ20に関する情報が、OS120から取得されたデバイス情報150に含まれていない場合、決定処理では、ユーザからデバイスの指定を受け付け、ユーザから指定されたデバイスが送信先デバイスとして決定される(S146)。
【0054】
通信プログラム110は、図9に示されるS151において、送信先デバイスが複数かを判断する。通信プログラム110は、送信先デバイスが複数と判断したことに応じて(S151:Yes)、送信先デバイスと同数のプロセスを立ち上げ、各プロセスにおいて図10に示されるS171以降の処理を並行処理で実行させる(S152)。次に、通信プログラム110は、通信エラーが発生したデバイスがあるかを判断する(S153)。通信プログラム110は、通信エラーが発生したデバイスがあると判断したことに応じて(S153:Yes)、通信エラーが発生したデバイスの識別名(デバイスID又はシリアル番号)と、接続状態を確認するよう促すメッセージとを表示部14に表示し、ユーザからの入力を待つ(S154)。ユーザは、入力部13を用いて、処理を続行するかを指示する。通信プログラム110は、続行が指示されたかを判断する(S155)。通信プログラム110は、続行が指示されたと判断したことに応じて(S155:Yes)、通信エラーが発生したデバイスを送信先に設定し(S156)、S151へ進む。
【0055】
通信プログラム110は、送信先デバイスが1台であると判断したことに応じて(S151:No)、S171へ進む。通信プログラム110は、S153において通信エラーが発生したデバイスがないと判断したことに応じて(S153:No)、通信成功を上位プログラムに返し、動作を終了する。通信プログラム110は、S155において続行が指示されなかったと判断したことに応じて(S155:No)、通信失敗を上位プログラムに返し、動作を終了する。
【0056】
図10に示される処理では、複数のプログラムによる同時書き込みを防止するために、フラグが使用される。このフラグは、あるプログラムが書き込みを行っている状態(通信状態)ではONに設定され、どのプログラムも書き込みを行っていない状態ではOFFに設定される。
【0057】
通信プログラム110は、図10に示されるS171において、フラグがONであるかを判断する。通信プログラム110は、フラグがONであると判断したことに応じて(S171:Yes)、S171を繰り返し実行する。通信プログラム110は、フラグがOFFであると判断したことに応じて(S171:No)、S172へ進む。次に、通信プログラム110は、デバイスの識別名(デバイスIDやシリアル番号等)を指定して、デバイスポートを読み書きするための通信ハンドルをOS120に要求する(S172)。OS120は、通信プログラム110から通信ハンドルの要求を受け取ると、指定された通信ハンドルを通信プログラム110に対して出力する(S271)。
【0058】
次に、通信プログラム110は、通信ハンドルを取得できたかを判断する(S173)。通信プログラム110は、通信ハンドルを取得できたと判断したことに応じて(S173:Yes)、フラグをONに設定し(S174)、図11に示される双方向通信処理を実行する(S175)。次に、通信プログラム110は、双方向通信処理において通信エラーが発生したかを判断する(S176)。通信プログラム110は、通信エラーが発生しなかったと判断したことに応じて(S176:No)、フラグをOFFに設定し(S177)、通信ハンドルを解放し(S178)、通信成功を上位プログラムに返し、動作を終了する。
【0059】
通信プログラム110は、S176において通信エラーが発生したと判断したことに応じて(S176:Yes)、フラグをOFFし(S181)、通信ハンドルを解放し(S182)、通信失敗を上位プログラムに返し、動作を終了する。通信プログラム110は、S173において通信ハンドルを取得できなかったと判断したことに応じて(S173:No)、S181及びS182を実行し、通信失敗として動作を終了する。
【0060】
図11には、S175で実行される双方向通信処理について記載されている。双方向通信処理の先頭において、通信プログラム110は、デバイスポートを指定して、ステータスリクエストをOS120に送信する(S191)。OS120は、通信プログラム110からステータスリクエストを受信すると、指定されたデバイスポートにステータスリクエストを書き込む(S291)。プリンタプログラム210は、OS120がステータスリクエストを書き込むと、ステータスリクエストの応答値をOS120に対して出力する(S391)。OS120は、プリンタプログラム210から応答値を受け取ると、指定されたデバイスポートに受け取った応答値を書き込む(S292)。
【0061】
通信プログラム110は、デバイスポートを用いて、OS120からステータスリクエストの応答値を受信する(S192)。次に、通信プログラム110は、ステータスリクエストの応答値を解析する(S193)。次に、通信プログラム110は、デバイスが通信可能かを判断する(S194)。通信プログラム110は、デバイスは通信可能と判断したことに応じて(S194:Yes)、プリンタ用データを一定の長さに細分化する(S195)。次に、通信プログラム110、OS120、及びプリンタプログラム210は、細分化されたプリンタ用データを送信する処理を行う(S196)。次に、通信プログラム110は、双方向通信処理を終了し、図10に示されるS176へ進む。
【0062】
通信プログラム110は、S194においてデバイスは通信可能でないと判断したことに応じて(S194:No)、S195及びS196を実行することなく、双方向通信処理を終了し、S176へ進む。
【0063】
S172で指定されるデバイス名は、S113で受け取ったデバイス情報150のデバイス詳細情報151に含まれていたものである。S151からS156、S171からS178、及びS181からS182は、上位プログラムから出力されたデータを送信先デバイスに、当該送信先デバイスに関するデバイス情報150を用いてデータを送信する送信処理の一例である。上述した決定処理は、複数の送信先デバイスを決定し得る処理である。決定処理で複数の送信先デバイスが決定された場合、送信処理は、決定された複数の送信先デバイスのそれぞれに、上位プログラムから出力されたデータを送信する(S152)。この送信処理は、複数の送信先デバイスのそれぞれに対応するプロセスを起動し、起動した上記プロセスのそれぞれにおいて、プロセスごとに、上位プログラムから出力されたデータを送信する処理である。
【0064】
[実施形態の作用効果]
上記の実施形態によれば、ポート情報を用いることなく、OS120からデバイス詳細情報151を取得し、送信先デバイスに関するデバイス詳細情報151とポート情報152とを含むデバイス情報150を用いてデータを送信するので、デバイスキュー情報を用いることなくデータを送信できる。したがって、ポート情報が正しく設定されていない場合でも、所望のデバイスにデータを送信できる。
【0065】
また、取得処理では、ポート情報152がポート情報142に対応するプリンタ20に関するデバイス情報150だけでなく、ポート情報152がポート情報142に対応しないプリンタ20に関するデバイス情報150も取得するので、ポート情報が正しく設定されていないデバイスにもデータを送信できる。
【0066】
また、取得処理では、物理的に通信可能に接続されているプリンタ20に関するデバイス情報150のみを取得するので、物理的に通信可能に接続されているプリンタ20の中から送信先デバイスを決定し、決定した送信先デバイスにデータを送信できる。
【0067】
また、S133、S144において送信先デバイスを決定することにより、上位プログラムから指定されたプリンタ20にデータを送信できる。上位プログラムから指定されたプリンタ20に関するポート情報が正しく設定されていない場合でも、上位プログラムから指定されたプリンタ20にデータを送信できる。
【0068】
また、S146において送信先デバイスを決定することにより、上位プログラムから指定されたプリンタ20を使用できない場合に、ユーザから指定されたプリンタ20にデータを送信できる。ユーザから指定されたプリンタ20に関するポート情報が正しく設定されていない場合でも、ユーザから指定されたプリンタ20にデータを送信できる。
【0069】
また、取得処理は、上位プログラムから指定された種類のデバイスに関するデバイス情報150をOS120から取得する処理である。したがって、通信プログラム110は、複数種類のデバイスに対応できる。また、送信処理は、決定された複数の送信先デバイスのそれぞれに、上位プログラムから出力されたデータを送信する処理である。したがって、複数のデバイスに並行してデータを送信できる。
【0070】
[変形例]
上記の実施形態については、各種の変形例を構成することができる。例えば、通信プログラム110は、図7に示されるS112の前に、上位プログラムから出力されたデータに基づきデバイスの種類を判断する判断処理をCPU11に実行させてもよい。この場合、取得処理は、判断処理で判断された種類のデバイスに関するデバイス情報150をOS120から取得する処理であってもよい。変形例に係る通信プログラムも、複数種類のデバイスに対応できる。
【0071】
また、本発明の実施形態として、通信プログラム110と、データ生成プログラムとを含むプログラムセットが挙げられる。このデータ生成プログラムは、プリンタ20に送信するデータを生成し、上位プログラムして通信プログラム110を呼び出す。これにより、通信プログラム110と、通信プログラム110を呼び出すプログラムとを含むプログラムセットが得られる。
【0072】
また、上記の実施形態では、プリンタに印刷データを送信する場合について説明したが、本発明はこれに限定されない。本発明は、例えば、アプリケーションプログラム又はスキャナドライバからスキャン指示を送信する場合にも適用できる。本発明は、アプリケーションプログラム又はFAXドライバからFAXの送信指示又はFAXの受信指示をファクシミリ装置に送信する場合にも適用できる。
【0073】
上記の実施形態の情報処理装置10及びプリンタ20において、メモリ12、22に記憶された各種プログラムがCPU11、21によって実行されることによって、本発明のコンピュータが実行する各処理が実現される例を説明した。しかしながら、コンピュータの構成はこれに限定されず、その一部又は全部を集積回路等のハードウェアで実現してもよい。
【符号の説明】
【0074】
1…システム
10…情報処理装置
20…プリンタ(デバイス)
110…通信プログラム(プログラム)
120…OS
11…CPU(コンピュータ)
130…アプリケーションプログラム(上位プログラム)
140…印刷デバイス情報(デバイスキュー情報)
141…プリンタドライバ情報(デバイスドライバ情報)
142…ポート情報(第1ポート情報)
150…デバイス情報
151…デバイス詳細情報(関連情報)
152…ポート情報(第2ポート情報)
160…プリンタドライバ(デバイスドライバ、上位プログラム)
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11