JP5509237B2 - デバイスエミュレータ装置、デバイスエミュレーション方法、及び通信サービスプログラム - Google Patents

デバイスエミュレータ装置、デバイスエミュレーション方法、及び通信サービスプログラム Download PDF

Info

Publication number
JP5509237B2
JP5509237B2 JP2012053640A JP2012053640A JP5509237B2 JP 5509237 B2 JP5509237 B2 JP 5509237B2 JP 2012053640 A JP2012053640 A JP 2012053640A JP 2012053640 A JP2012053640 A JP 2012053640A JP 5509237 B2 JP5509237 B2 JP 5509237B2
Authority
JP
Japan
Prior art keywords
request
emulator
driver
communication service
application
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012053640A
Other languages
English (en)
Other versions
JP2013186832A (ja
Inventor
悠介 箕浦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba TEC Corp
Original Assignee
Toshiba TEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba TEC Corp filed Critical Toshiba TEC Corp
Priority to JP2012053640A priority Critical patent/JP5509237B2/ja
Publication of JP2013186832A publication Critical patent/JP2013186832A/ja
Application granted granted Critical
Publication of JP5509237B2 publication Critical patent/JP5509237B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

本発明の実施形態は、デバイスをエミュレーションするデバイスエミュレータ装置、デバイスエミュレーション方法、及び通信サービスプログラムに関する。
プリンタなどのデバイスを制御するアプリケーションプログラムを開発する場合、アプリケーションプログラムを動作させる制御装置(コンピュータ)にデバイスを接続して、アプリケーション(デバイスドライバ)からのリクエストをデバイスに送信し、このリクエストに応じたデバイスの応答をアプリケーションに返すことで、アプリケーションの動作確認等が行われる。
アプリケーションの開発を複数の開発者が並行して行う場合、開発者数分のデバイスを用意しなければいけなかったり、あるいはデバイスの数が足りなければ、デバイスを使用する順番待ちなどが発生したりする。そのため従来では、デバイスに代えてデバイスエミュレータが使用されている。デバイスエミュレータは、制御装置上で実行させることにより、プリンタなどのデバイスをエミュレートし、アプリケーション(デバイスドライバ)からのリクエストを処理して、デバイスが動作している場合と同様にして応答することができる。
特開2004−185595号公報
ところで、アプリケーション(デバイスドライバ)からデバイスへのリクエストには、短時間で定期的に発生するものがある。定期的に大量に発生するリクエストに対しては、デバイスエミュレータがそれぞれのリクエストに対するリクエスト処理を実行して、処理結果を応答しなければならないため、デバイスエミュレータの負荷が大きい。
特に、アプリケーション(デバイスドライバ)を実行する制御装置(コンピュータ)とデバイスエミュレータを実行する制御装置がネットワークを介して接続されている場合、アプリケーションからのリクエストがネットワークを介してデバイスエミュレータに通知され、デバイスエミュレータによるリクエスト処理の結果がネットワークを介してアプリケーションに応答されるため、ネットワーク負荷が大きくなる。また、アプリケーションがリクエストに対する処理結果を受信するまでのレスポンス待ちが増大するため、結果としてデバイスエミュレータの性能が低下してしまう。
本発明が解決しようとする課題は、デバイスエミュレータの性能を向上させることが可能なデバイスエミュレータ装置、デバイスエミュレーション方法、及び通信サービスプログラムを提供することである。
実施形態によれば、デバイスエミュレータ装置は、デバイスを使用するアプリケーションと、前記アプリケーションの制御のもとで、前記デバイスを制御するデバイスドライバと、前記デバイスをエミュレーションするデバイスエミュレータと、前記デバイスドライバから前記デバイスへのリクエストを取得し、前記リクエストを前記デバイスエミュレータへ転送するかどうかを判別し、転送しないと判別した場合には、前記リクエストに応じた応答を前記デバイスドライバに返し、転送すると判別した場合に、前記リクエストを前記デバイスエミュレータに転送して、前記デバイスエミュレータからのリクエスト処理の結果を受信して前記ドライバドライバへ返信する通信サービス手段とを有する。
本実施形態におけるデバイスエミュレータ装置の構成を示すブロック図。 本実施形態における通信サービス制御ファイルに設定されるデータの一例を示す図。 本実施形態におけるデバイスエミュレータ装置10の動作について示すフローチャート。 本実施形態におけるアプリケーション、通信サービス部、及びデバイスエミュレータとの間におけるリクエストと処理結果の応答の流れを示す図。 本実施形態におけるデバイスエミュレータによってエミュレーションされるデバイスのステータスを変更する場合のフローチャート。 本実施形態における定期的に発生するリクエストの一部をデバイスエミュレータ30へ転送する場合のフローチャート。 本実施形態における他のデバイスエミュレータ装置18の構成例について示すブロック図。
以下、本実施形態について、図面を参照しながら説明する。
図1は、本実施形態におけるデバイスエミュレータ装置10の構成を示すブロック図である。デバイスエミュレータ装置10は、制御装置A12と制御装置B14とがネットワーク16を介して接続されて構成される。本実施形態におけるデバイスエミュレータ装置10は、各種のデバイスを制御するアプリケーションプログラムを開発するために使用される装置である。例えば、POS(Point of Sales)システムで使用されるアプリケーションプログラムは、プリンタ、スキャナ、ディスプレイ等のデバイスを制御する。デバイスエミュレータ装置10は、アプリケーションプログラムからデバイス(プリンタ、スキャナ、ディスプレイ等)へのリクエストに応じたリクエスト処理をして、実際のデバイスと同様の処理結果を応答するデバイスエミュレータアプリケーションを実行する。
制御装置A12は、例えばパーソナルコンピュータにより実現されるもので、プロセッサ(CPU)、メモリ、ハードディスク装置、ディスプレイ、入力装置などのハードウェアデバイスを有している。制御装置A12は、プロセッサによりメモリに記憶された各種プログラムを実行することにより、各種の機能を実現することができる。
制御装置A12は、アプリケーション20、デバイスドライバ21、フィルタドライバ22、通信サービス部24、ネットワークインタフェース25、通信サービス制御ファイル26、及び設定ユーティリティ27を有する。
アプリケーション20は、プリンタ、スキャナ、ディスプレイ等のデバイスを使用するもので、デバイスドライバ21を通じてデバイスに対して各種処理を要求するリクエストを出力し、リクエストに応じた処理結果を受信する。
デバイスドライバ21は、アプリケーション20の制御のもとでデバイスを制御する。デバイスドライバ21は、例えば複数のデバイス(プリンタ、スキャナ、ディスプレイ等)を制御することができるもので、USB(Universal Serial Bus)やその他のシリアルバス等を介して接続されるデバイスを制御する汎用のドライバである。
フィルタドライバ22は、デバイスドライバ21からデバイスに対して出力されるリクエストを奪って(フックして)通信サービス部24に受け渡し、また通信サービス部24からリクエストに対する応答を受信してデバイスドライバ21に受け渡す。フィルタドライバ22は、デバイスドライバ21からデバイスに対して出力されたリクエストを奪う(フックする)ことで、デバイスドライバ21に通信サービス部24を利用するための特別な機能を設ける必要が無いようにしている。
通信サービス部24は、アプリケーション20(デバイスドライバ21)により発生したデバイスに対するリクエストに対して、デバイスエミュレータ30で処理する必要が無いものについては、リクエストをデバイスエミュレータ30に転送することなくリクエストに対する処理結果を応答することで、リクエストに対する処理を高速化するためのモジュールである。通信サービス部24は、リクエスト判別部24a、変換部24b、リクエスト応答部24c、設定変更部24d、及びリクエスト転送部24eとを含む。
リクエスト判別部24aは、デバイスドライバ21からデバイスへのリクエストを、フィルタドライバ22を通じて取得し、リクエストをデバイスエミュレータ30へ転送するかどうかを、通信サービス制御ファイル26に設定されたデータを参照して判別する。変換部24bは、デバイスエミュレータ30に転送するリクエストを、デバイスエミュレータ30が処理可能な形式に変換し、またデバイスエミュレータ30から返信されるリクエストに対する処理結果を、デバイスドライバ21が処理可能な形式に変換する。リクエスト応答部24cは、リクエスト判別部24aがリクエストをデバイスエミュレータ30に転送しないと判別した場合には、リクエストに応じた応答をデバイスドライバ21に返す。設定変更部24dは、ネットワークインタフェース25を介してデバイスエミュレータ30からデバイスの状態が変化したことが通知された場合に、通信サービス制御ファイル26に設定された、デバイスの状態を問い合わせるリクエストに対して応答する応答データを変更する。リクエスト転送部24eは、リクエスト判別部24aがリクエストをデバイスエミュレータ30に転送すると判別した場合は、リクエストをデバイスエミュレータ30に転送して、デバイスエミュレータ30からのリクエスト処理の結果を受信してドライバドライバ21へ返信する。
ネットワークインタフェース25は、制御装置B14(ネットワークインタフェース32)との通信を制御するもので、例えばTCP(transmission control protocol)/IP(internet protocol)に基づく通信を行う。従って、制御装置A12と制御装置B14は、同じ場所(同室内等)に設置して使用するだけでなく、インターネット等を介して接続することで離れた場所に設置して使用することもできる。
通信サービス制御ファイル26は、アプリケーション20(デバイスドライバ21)からのデバイスに対するリクエストを、デバイスエミュレータ30へ転送するか否かを示すデータと、デバイスエミュレータ30へ転送しないリクエストに対して通信サービス部24によって応答させるデータ(応答データ)を記録する。通信サービス制御ファイル26は、通信サービス部24によって参照される。
設定ユーティリティ27は、例えばユーザからの指示に応じて、通信サービス制御ファイル26に設定されたデータを変更するための処理をする。設定ユーティリティ27は、例えばユーザによる入力装置への操作に応じて、アプリケーション20からデバイスへ出力される各リクエストについて、デバイスエミュレータ30に転送するか否か、デバイスエミュレータ30に転送しない場合に通信サービス部24によってリクエストに対して応答させるデータ(応答データ)などを設定することができる。応答データには、例えばデバイスのステータスを示すデータがある。例えば、プリンタについては、電源オン/オフ、カバーオープン有無、インク残量有無などの各種ステータスが応答データとして設定される。
制御装置B14は、例えばパーソナルコンピュータにより実現されるもので、プロセッサ(CPU)、メモリ、ハードディスク装置、ディスプレイ、入力装置などのハードウェアデバイスを有している。制御装置B14は、プロセッサによりメモリに記憶された各種プログラムを実行することにより、各種の機能を実現することができる。
制御装置B14は、デバイスエミュレータ30、エミュレータ制御ユーティリティ31、及びネットワークインタフェース32を有する。
デバイスエミュレータ30は、アプリケーション20(デバイスドライバ21)による制御の対象となるデバイスをエミュレーションするもので、通信サービス部24により転送された、アプリケーション20(デバイスドライバ21)からデバイスに対するリクエストに応じたリクエスト処理を実行し、リクエスト処理の処理結果をネットワークインタフェース32からネットワーク16を通じて制御装置A12に送信する。デバイスエミュレータ30は、アプリケーション20により制御の対象となる複数のデバイス、例えばプリンタ、スキャナ、ディスプレイ等のそれぞれに対応するエミュレーション機能を実現するプリンタ処理部30a、スキャナ処理部30b、ディスプレイ処理部30c等を含む。
エミュレータ制御ユーティリティ31は、デバイスエミュレータ30によってエミュレーションされるデバイスの状態(ステータス)を、例えばユーザからの指示に応じて変更するための処理をする。エミュレータ制御ユーティリティ31は、例えばプリンタ処理部30a、スキャナ処理部30b、ディスプレイ処理部30cがシミュレーションする各デバイスのステータスを個別に変更できるものとする。
ネットワークインタフェース32は、制御装置A12(ネットワークインタフェース25)との通信を制御するもので、例えばTCP/IPに基づく通信を行う。
図2は、本実施形態における通信サービス制御ファイル26に設定されるデータの一例を示す図である。
通信サービス制御ファイル26には、複数のデバイスのそれぞれに対するリクエストについて、デバイスエミュレータ30にリクエストを転送するか、あるいはデバイスエミュレータ30にリクエストを転送することなく、通信サービス部24によって応答するかを示すデータが設定される。
図2に示すように、通信サービス制御ファイル26では、アプリケーション20(あるいはデバイスドライバ21)により制御される複数のデバイスのそれぞれについて、リクエスト別にリクエストをデバイスエミュレータ30に転送するか、デバイスエミュレータ30に転送することなくリクエストに応答するかを示すデータが設定されている。また、デバイスに転送することなくリクエストに応答する場合に、通信サービス部24によってリクエストに応答させる場合の応答データが設定されている。
例えば、プリンタに対して出力されるリクエストには、印刷の実行、ステータスの送信要求などがある。ステータスの送信要求のリクエストは、アプリケーション20(デバイスドライバ21)から定期的に短い間隔(例えば5msec)で発生する。こうした定期的に大量に発生するリクエストは、全てをデバイスエミュレータ30に転送するとネットワーク16の負荷が増大すると共に、リクエストに対する処理結果の待ち時間が長くなるため、デバイスエミュレータ30に転送することなく通信サービス部24によってリクエストに応答するよう設定することが好ましい。
また、ステータスの送信要求のリクエストに応答するための応答データは、例えばデバイスが正常に動作可能な状態であることを示すように設定することができる。これにより、ステータスの送信要求に対して、通信サービス部24から、常に、動作可能な状態であることを示す応答を返すことで、アプリケーション20による一連の動作を継続させることができる。
次に、本実施形態におけるデバイスエミュレータ装置10の動作について、図3に示すフローチャートを参照しながら説明する。図3は、アプリケーション20、デバイスドライバ21、通信サービス部24、及びデバイスエミュレータ30のそれぞれの動作を示している。
まず、アプリケーション20は、デバイスへのリクエストが発生すると(ステップA1、Yes)、そのリクエストをデバイスドライバ21へ送信する(ステップA2)。
デバイスドライバ21は、アプリケーション20からリクエストを受信し(ステップB1)、このリクエストが対象とするドライバに対してリクエストを送信する(ステップB2)。ここで、デバイスドライバ21は、通信サービス部24に対してリクエストを送信するのではなく、実際のデバイスが接続されている場合と同様にしてリクエストを送信する。すなわち、デバイスドライバ21は、通信サービス部24を利用するための特別な動作をする必要がない。デバイスドライバ21から答申されたリクエストは、フィルタドライバ22が取得して、通信サービス部24に受け渡す。
通信サービス部24は、フィルタドライバ22から送信されたリクエストを、フィルタドライバ22を通じて受信すると(ステップC1)、リクエスト判別部24aによりリクエストを解析し、通信サービス制御ファイル26を参照して、デバイスエミュレータ30にリクエストを転送するか、あるいはデバイスエミュレータ30にリクエストを転送することなく、リクエストに対して応答するかを判別する(ステップC2)。
ここで、リクエストをデバイスエミュレータ30に転送すると判別された場合(ステップC3、Yes)、リクエスト転送部24eは、ネットワークインタフェース25を通じて、リクエストをデバイスエミュレータ30(制御装置B14)に転送する(ステップC4)。なお、デバイスエミュレータ30に転送するリクエストは、変換部24bによってデバイスエミュレータ30が処理可能な形式に変換されるものとする。
制御装置B14のデバイスエミュレータ30は、ネットワークインタフェース32を通じて、制御装置A12(デバイスエミュレータ30)からデバイスに対するリクエストを受信する(ステップD1)。デバイスエミュレータ30は、リクエストに応じたリクエスト処理を実行して(ステップD2)、処理結果を制御装置A12(通信サービス部24)に返送する(ステップD3)。
例えば、アプリケーション20からのリクエストがプリンタによる印刷のリクエストである場合、プリンタ処理部30aは、印刷処理をシミュレーションし、この印刷処理によってプリンタのステータスが変化した場合には、変化後のステータスを含む処理結果をデバイスエミュレータ30に返信する。
通信サービス部24は、ネットワークインタフェース25を通じて、制御装置A12(デバイスエミュレータ30)からリクエストに対する処理結果を受信すると、この処理結果をデバイスドライバ21に送信する(ステップC7)。なお、デバイスドライバ21に送信する処理結果は、変換部24bによってデバイスドライバ21が処理可能な形式に変換されるものとする。
デバイスドライバ21は、通信サービス部24から受信した処理結果をアプリケーション20に送信する(ステップB3)。アプリケーション20は、リクエストに対する処理結果をデバイスドライバ21から受信する(ステップA3)。
一方、デバイスドライバ21からのリクエストについてデバイスエミュレータ30に転送しない判別された場合(ステップC3、No)、リクエスト応答部24cは、リクエストに応じた処理を実行して、その処理結果をデバイスドライバ21に送信する(ステップC6)。デバイスドライバ21は、通信サービス部24からの処理結果をアプリケーション20に送信する(ステップB3)。
例えば、図2に示す通信サービス制御ファイル26では、プリンタに対してステータスの送信要求をするリクエストについては、デバイスエミュレータ30に転送しない設定がされている。リクエスト応答部24cは、通信サービス制御ファイル26に設定された、プリンタのステータスを示す応答データ(S1)をデバイスドライバ21に返送する。
ステータスの送信要求のリクエストは、アプリケーション20(デバイスドライバ21)から定期的に大量に発生するため、デバイスエミュレータ30に転送することなく通信サービス部24によってリクエストに応答することで、ネットワーク16の負荷を軽減すると共に、リクエストに対する処理結果の待ち時間を短くすることができる。
図4は、本実施形態におけるアプリケーション20、通信サービス部24、及びデバイスエミュレータ30との間におけるリクエストと処理結果の応答の流れを示す図である。
図4のS1に示すように、アプリケーション20(デバイスドライバ21)において頻繁に発生するリクエスト(ステータスの送信要求など)については、通信サービス部24が処理結果を応答することで、ネットワーク16への負荷を発生させない。また、アプリケーション20(デバイスドライバ21)のレスポンス待ちも小さくすることができる。
アプリケーション20(デバイスドライバ21)からのリクエストS2がデバイスエミュレータ30に転送された場合、デバイスエミュレータ30は、レスポンスに応じたリクエスト処理S3を実行して、その処理結果S4を返送する。例えば、デバイスの状態が変化するリクエストについては、デバイスエミュレータ30に転送することで、アプリケーション20は、デバイスエミュレータ30によりエミュレートされた処理結果を取得することができる。
このようにして、本実施形態におけるデバイスエミュレータ装置10では、アプリケーション20(デバイスドライバ21)からのデバイスに対するリクエストについて、デバイスエミュレータ30に転送するか否かを判定し、デバイスエミュレータ30に転送しないと判別したリクエストについては、デバイスエミュレータ30に転送することなく、通信サービス部24によりリクエスト応答を返送する。特に、アプリケーション20(デバイスドライバ21)から大量に発生するレスポンス(ステータスの送信要求等)について、通信サービス部24によって応答するように設定することで、ネットワーク16の負荷を大幅に軽減し、アプリケーション20(デバイスドライバ21)のレスポンス待ちの時間を短縮することができ、さらに実機に近いレスポンスを期待できる。
なお、本実施形態におけるデバイスエミュレータ装置10では、デバイスエミュレータ30によってエミュレーションされるデバイスのステータスをエミュレータ制御ユーティリティ31により変更することで、デバイスエミュレータ30から通信サービス部24に対して、デバイスのステータスを変更した処理結果を送信することができる。
図5は、本実施形態におけるデバイスエミュレータ30によってエミュレーションされるデバイスのステータスを変更する場合のフローチャートを示している。
制御装置B14では、エミュレータ制御ユーティリティ31を実行することで、ユーザの入力装置への操作によって、デバイスエミュレータ30がエミュレーションするデバイスのステータスを変更することができる。例えば、エミュレータ制御ユーティリティ31は、デバイスエミュレータ30がエミュレーションする何れかのデバイスをユーザに選択させ、そのデバイスのステータスの指定を受け付けてデバイスエミュレータ30に通知する。デバイスエミュレータ30は、エミュレータ制御ユーティリティ31からの通知に応じて、選択されたデバイスのステータスを変更する。
デバイスエミュレータ30は、エミュレータ制御ユーティリティ31からの通知に応じてデバイスのステータスを変更すると(ステップD10)、処理結果を通信サービス部24に送信する(ステップD11)。
通信サービス部24は、デバイスエミュレータ30からの処理結果を受信すると(ステップC10)、処理対象となったデバイスについて、通信サービス制御ファイル26に設定されているステータスを示す応答データを参照し、デバイスのステータスが変更されたか判別する(ステップC11)。設定変更部24dは、デバイスエミュレータ30からの処理結果がデバイスのステータスを変更するものであった場合(ステップC12、Yes)、この処理結果に応じて、通信サービス制御ファイル26に応答データとして設定されたステータスを変更する(ステップC13)。
図4には、図5のフローチャートに示す処理に対応するリクエストと処理結果の応答の流れS6〜S9を示している。
デバイスエミュレータ30においてステータス変更S6があると、通信サービス部24に対して処理結果S7が送信される。通信サービス部24は、ステータスの変更に応じて通信サービス制御ファイル26のデバイスのステータスを示す応答データを更新する。通信サービス部24は、アプリケーション20(デバイスドライバ21)からデバイスのステータス送信要求S8を受信すると、このリクエストに対して、変更済みのステータスを示す応答データをアプリケーション20(デバイスドライバ21)に返送する。
なお、前述した説明では、ユーザ操作によって、エミュレータ制御ユーティリティ31を通じてデバイスのステータスを変更するとしているが、エミュレータ制御ユーティリティ31からの通知によらないで、デバイスエミュレータ30が予め決められた条件に基づいて(定期的、ランダムなど)、自動的にデバイスのステータスを変更して、通信サービス部24に通知するようにしても良い。
このようにして、デバイスエミュレータ30においてエミュレーションされるデバイスのステータスを変更することで、このステータスの変更を通信サービス制御ファイル26の応答データに反映させることができる。従って、通信サービス部24は、アプリケーション20(デバイスドライバ21)からのステータス送信要求のリクエストに対して、変更後のステータスを示す応答データによって応答することができる。これにより、アプリケーション20による一連の処理の途中で、例えば、実際のデバイスと同様にして、デバイスが正常に動作することができない状態に変化したことを通信サービス部24から応答することが可能となる。
なお、前述した説明では、通信サービス制御ファイル26において、通信サービス部24により応答する設定がされているリクエストについては、全て通信サービス部24によりアプリケーション20(デバイスドライバ21)に応答するとしているが、定期的に発生するリクエスト(ステータス送信要求等)の一部をデバイスエミュレータ30へ転送するようにしても良い。
図6は、本実施形態における定期的に発生するリクエストの一部をデバイスエミュレータ30へ転送する場合のフローチャートを示している。なお、図3に示すフローチャートと同じ処理については、同一の処理ステップとして示している。
通信サービス部24は、アプリケーション20(デバイスドライバ21)からのリクエストをデバイスエミュレータ30に転送すると判別した場合(ステップC20、Yes)、前述と同様にして、アプリケーション20にリクエストを転送して(ステップC23)、このリクエスト処理結果を受信する。
一方、通信サービス部24は、リクエストをデバイスエミュレータ30に転送しないと判別した場合(ステップC20、No)、受信したリクエストが定期的に発生されるリクエスト(ステータス送信要求等)であれば、このリクエストを受信した回数をカウントし、このカウント値が予め決められた所定回数を超過しているかを判別する。ここで、リクエストの受信回数が所定回数を超過していない場合、通信サービス部24は、前述したように、通信サービス制御ファイル26に設定された応答データを用いてリクエストに対して応答する(ステップC24,C25)。
通信サービス部24は、リクエストが定期的に発生されることで、このリクエストを受信した回数が所定回数を超過した場合(ステップC22、Yes)、通信サービス部24は、このリクエストをデバイスエミュレータ30に転送する(ステップC23)。そして、通信サービス部24は、このリクエストに対する処理結果をデバイスエミュレータ30から受信して、デバイスドライバ21に送信する(ステップC26)。
図4には、図6のフローチャートに示す処理に対応するリクエストと処理結果の応答の流れS10〜S15を示している。
通信サービス部24は、定期的に発生されるリクエストの受信回数が所定回数を超過し、リクエストを転送すると判別すると(S10)、デバイスエミュレータ30に対してリクエストS11を転送する。デバイスエミュレータ30は、リクエストに対するリクエスト処理を実行して、処理結果S12を通信サービス部24に返送する。この時、デバイスエミュレータ30は、エミュレータ制御ユーティリティ31によってデバイスのステータスが変更されていた場合には、変更後のステータスを返送することになる。従って、図4中のステータス変更S4のように、ステータス変更後に直ちに処理結果S7を送信しなくても良い。
なお、通信サービス部24は、リクエストを転送した場合、その後にアプリケーション20(デバイスドライバ21)から受信したステータスの送信要求S13に対しては応答せず、デバイスエミュレータ30の処理結果S12を受信して通信サービス制御ファイル26の応答データを変更した後、ステータスの送信要求S14に対して、変更後のステータスを示す応答データによって処理結果S15を返信する。
なお、前述した説明では、定期的に発生されるリクエスト(ステータス送信要求等)の受信回数が所定回数を超過した場合に、このリクエストをデバイスエミュレータ30に転送しているが、このリクエストを継続して受信している時間が予め決められた所定時間を超過した場合に、リクエストをデバイスエミュレータ30に転送するようにしても良い。
このようにして、定期的に発生するリクエストの一部をデバイスエミュレータ30へ転送することで、デバイスエミュレータ30においてエミュレーションされているデバイスのステータスを定期的に取得して、通信サービス制御ファイル26の応答データを更新することができる。また、定期的に発生されるリクエストの一部をデバイスエミュレータ30に転送することで(例えば10sec間隔)、ネットワーク16への負荷を大幅に増大させることがない。
次に、本実施形態における他のデバイスエミュレータ装置18の構成例について図7を用いて説明する。
図1に示すデバイスエミュレータ装置10は、制御装置A12と制御装置B14とがネットワーク16によって接続されて構成されているが、図7に示すデバイスエミュレータ装置18は、1つの制御装置(コンピュータ)によって実現されている。なお、図7では、図1と同一の構成部分については同一符号を付している。
図7に示すように、図1に示す制御装置B14において実現した機能をエミュレータ機能39として組み込まれている。エミュレータ機能39には、デバイスエミュレータ40、エミュレータ制御ユーティリティ41、ネットワークインタフェース42とが含まれ、それぞれ図1に示すデバイスエミュレータ30、エミュレータ制御ユーティリティ31、ネットワークインタフェース32と同等の処理を実行する。
このようにして、1つの制御装置によってもデバイスエミュレータ装置18を実現することが可能である。
以上説明した少なくともひとつの実施形態によれば、アプリケーション20(デバイスドライバ21)からドライバへのリクエストに対して、このリクエストをドライバに転送することなく、リクエストに対する応答をアプリケーション20に返す通信サービス部24を設けることにより、アプリケーション20の応答待ちの時間を短縮することができる。特に、デバイスのステータスを問い合わせるリクエストなど、頻繁に出されるリクエストについて、通信サービス部24によって応答することにより、大幅にアプリケーション20のリクエスト応答の待ち時間を短縮し、アプリケーション20の付加を軽減することが可能となる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
また、前述した実施の形態において記載した処理は、コンピュータに実行させることのできるプログラムとして、例えば磁気ディスク(フレキシブルディスク、ハードディスク等)、光ディスク(CD−ROM、DVD等)、半導体メモリなどの記録媒体に書き込んで各種装置に提供することができる。また、通信媒体により伝送して各種装置に提供することも可能である。コンピュータは、記録媒体に記録されたプログラムを読み込み、または通信媒体を介してプログラムを受信し、このプログラムによって動作が制御されることにより、上述した処理を実行する。
10…デバイスエミュレータ装置、12…制御装置A、14…制御装置B、16…ネットワーク、20…アプリケーション、21…デバイスドライバ、22…フィルタドライバ、24…通信サービス部、25,32…ネットワークインタフェース、26…通信サービス制御ファイル、27…設定ユーティリティ、30…デバイスエミュレータ、31…エミュレータ制御ユーティリティ。

Claims (9)

  1. デバイスを使用するアプリケーションと、
    前記アプリケーションの制御のもとで、前記デバイスを制御するデバイスドライバと、
    前記デバイスをエミュレーションするデバイスエミュレータとを有するデバイスエミュレータ装置であって、
    前記デバイスドライバから前記デバイスへのリクエストを取得し、前記リクエストを前記デバイスエミュレータへ転送するかどうかを判別し、転送しないと判別した場合には、前記リクエストに応じた応答を前記デバイスドライバに返し、転送すると判別した場合に、前記リクエストを前記デバイスエミュレータに転送して、前記デバイスエミュレータからのリクエスト処理の結果を受信して前記ドライバドライバへ返信する通信サービス手段を具備するデバイスエミュレータ装置。
  2. 前記デバイスドライバから前記ドライバに対して出力されるリクエストを取得して、前記通信サービス手段に受け渡すフィルタドライバをさらに具備し、
    前記通信サービス手段は、前記フィルタドライバを通じて前記リクエストを取得する請求項1記載のデバイスエミュレータ装置。
  3. 前記デバイスドライバからの前記リクエストを前記デバイスエミュレータへ転送するか否かを示すデータを記録する記録手段をさらに具備し、
    前記通信サービス手段は、前記記録手段に記録されたデータをもとに、前記リクエストを前記デバイスエミュレータへ転送するかどうかを判別する請求項1記載のデバイスエミュレータ装置。
  4. 前記記録手段に記録されるデータは、前記デバイスに対して定期的に発生するリクエストを前記デバイスエミュレータへ転送しないことを示す請求項3記載のデバイスエミュレータ装置。
  5. 前記通信サービス手段は、前記記録手段に記録されたデータをもとに前記デバイスエミュレータへ転送しないと判別された定期的に発生する前記リクエストの一部を前記デバイスエミュレータへ転送する請求項4記載のデバイスエミュレータ装置。
  6. 前記デバイスエミュレータによりエミュレーションされるデバイスの状態を変更する変更手段をさらに具備し、
    前記デバイスエミュレータは、前記変更手段により前記デバイスの状態が変更された場合に、前記通信サービス手段に変更後の前記デバイスの状態を通知する請求項1記載のデバイスエミュレータ装置。
  7. 第1の制御装置と第2の制御装置とがネットワークを介して接続され、
    前記第1の制御装置は、前記アプリケーション、前記デバイスドライバ、及び前記通信サービス手段とを有し、
    前記第2の制御装置は、前記デバイスエミュレータを有した請求項1記載のデバイスエミュレータ装置。
  8. デバイスを使用するアプリケーションと、
    前記アプリケーションの制御のもとで、前記デバイスを制御するデバイスドライバと、
    前記デバイスをエミュレーションするデバイスエミュレータとを有するデバイスエミュレータ装置におけるデバイスエミュレーション方法であって、
    前記デバイスドライバから前記デバイスへのリクエストを取得し、前記リクエストを前記デバイスエミュレータへ転送するかどうかを判別し、転送しないと判別した場合には、前記リクエストに応じた応答を前記デバイスドライバに返し、転送すると判別した場合に、前記リクエストを前記デバイスエミュレータに転送して、前記デバイスエミュレータからのリクエスト処理の結果を受信して前記ドライバドライバへ返信するデバイスエミュレーション方法。
  9. デバイスを使用するアプリケーションと、
    前記アプリケーションの制御のもとで、前記デバイスを制御するデバイスドライバと、
    前記デバイスをエミュレーションするデバイスエミュレータとを実行するコンピュータを、
    前記デバイスドライバから前記デバイスへのリクエストを取得し、前記リクエストを前記デバイスエミュレータへ転送するかどうかを判別し、転送しないと判別した場合には、前記リクエストに応じた応答を前記デバイスドライバに返し、転送すると判別した場合に、前記リクエストを前記デバイスエミュレータに転送して、前記デバイスエミュレータからのリクエスト処理の結果を受信して前記ドライバドライバへ返信する通信サービス手段として機能させるための通信サービスプログラム。
JP2012053640A 2012-03-09 2012-03-09 デバイスエミュレータ装置、デバイスエミュレーション方法、及び通信サービスプログラム Expired - Fee Related JP5509237B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012053640A JP5509237B2 (ja) 2012-03-09 2012-03-09 デバイスエミュレータ装置、デバイスエミュレーション方法、及び通信サービスプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012053640A JP5509237B2 (ja) 2012-03-09 2012-03-09 デバイスエミュレータ装置、デバイスエミュレーション方法、及び通信サービスプログラム

Publications (2)

Publication Number Publication Date
JP2013186832A JP2013186832A (ja) 2013-09-19
JP5509237B2 true JP5509237B2 (ja) 2014-06-04

Family

ID=49388162

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012053640A Expired - Fee Related JP5509237B2 (ja) 2012-03-09 2012-03-09 デバイスエミュレータ装置、デバイスエミュレーション方法、及び通信サービスプログラム

Country Status (1)

Country Link
JP (1) JP5509237B2 (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10133914A (ja) * 1996-11-01 1998-05-22 Nippon Steel Corp 計算機システム及びデバイス入出力シミュレータ
JP5440252B2 (ja) * 2009-07-24 2014-03-12 株式会社リコー 情報処理装置、外部装置、情報処理システム、情報処理方法、及びプログラム

Also Published As

Publication number Publication date
JP2013186832A (ja) 2013-09-19

Similar Documents

Publication Publication Date Title
US9584679B2 (en) Information processing apparatus, control method therefor, and medium
CN114253740A (zh) 基于Linux内核的协议栈数据传输方法及装置
US11005927B2 (en) Server system, method for controlling server system, and storage medium
US11442784B2 (en) Methods and apparatus to handle dependencies associated with resource deployment requests
JP5986016B2 (ja) 情報処理装置及びプログラム
US20160156704A1 (en) Exchange of information between processing servers
JP5029053B2 (ja) データ通信システム及びデータ通信プログラム
US10466940B2 (en) Redirecting transmission of content from first HTTPS address to second HTTPS address
US9691010B2 (en) Information processing apparatus, distributed printing system, and method of controlling printing
JP5509237B2 (ja) デバイスエミュレータ装置、デバイスエミュレーション方法、及び通信サービスプログラム
US9621623B2 (en) Client, server, management system, and method of the same
US10999474B2 (en) Electronic device, control method of electronic device, information processing system, and storage medium
JP2007221364A (ja) コントローラ、制御システム及び制御装置の拡張方法
US8752046B2 (en) Virtual calculating machine system, virtual calculating machine control apparatus and virtual calculating machine control method
EP3893111B1 (en) Information processing apparatus, and method of controlling communication between container and process in the information processing apparatus
US9354834B2 (en) Printing with virtual printer
JP5515520B2 (ja) サーバ装置及び画面データの送信方法
US9697064B2 (en) System, system control method, and storage medium
JP7180207B2 (ja) 提供装置、処理システム及び通信方法
JPWO2013105186A1 (ja) サービスレベル管理装置、プログラム、及び、方法
JP2020190765A (ja) 転送装置、情報処理装置、および、データ転送方法
WO2015001615A1 (ja) 仮想マシン管理方法,仮想マシン管理装置,および仮想マシン管理プログラム
JPWO2019021898A1 (ja) 開発支援装置
JP6209257B2 (ja) 情報処理装置及びプログラム
JP6481259B2 (ja) 情報処理装置

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20131205

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20131212

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20131219

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20131226

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20140109

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140217

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140225

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140324

R150 Certificate of patent or registration of utility model

Ref document number: 5509237

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees