JP4742784B2 - 情報分配処理プログラム、情報処理装置、および情報分配処理システム - Google Patents

情報分配処理プログラム、情報処理装置、および情報分配処理システム Download PDF

Info

Publication number
JP4742784B2
JP4742784B2 JP2005282342A JP2005282342A JP4742784B2 JP 4742784 B2 JP4742784 B2 JP 4742784B2 JP 2005282342 A JP2005282342 A JP 2005282342A JP 2005282342 A JP2005282342 A JP 2005282342A JP 4742784 B2 JP4742784 B2 JP 4742784B2
Authority
JP
Japan
Prior art keywords
information
device information
request
acquisition
information processing
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
JP2005282342A
Other languages
English (en)
Other versions
JP2007094693A (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.)
Brother Industries Ltd
Original Assignee
Brother Industries Ltd
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 Brother Industries Ltd filed Critical Brother Industries Ltd
Priority to JP2005282342A priority Critical patent/JP4742784B2/ja
Priority to US11/528,386 priority patent/US9268511B2/en
Publication of JP2007094693A publication Critical patent/JP2007094693A/ja
Application granted granted Critical
Publication of JP4742784B2 publication Critical patent/JP4742784B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1229Printer resources management or printer maintenance, e.g. device status, power levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1203Improving or facilitating administration, e.g. print management
    • G06F3/1207Improving or facilitating administration, e.g. print management resulting in the user being informed about print result after a job submission
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1285Remote printer device, e.g. being remote from client or server

Description

本発明は、印刷装置から取得したデバイス情報を複数の情報処理部へ分配するために利用される情報分配処理プログラム、情報処理装置、および情報分配処理システムに関する。
従来、印刷装置に関するデバイス情報をインターフェースを通じて印刷装置から取得するとともに、そのデバイス情報を利用した情報処理を実施するためのプログラムが知られている(例えば、下記特許文献1参照)。
下記特許文献1の場合、プリンタ状態管理プログラム3cは、ポート通信プログラム3eを通してプリンタ2cの情報を取得する処理、記憶領域3dにその情報を記憶させる処理、SNMP処理プログラム3bに対して情報を提供する処理などを実施するためのプログラムとなっている(特許文献1:段落[0072]および[図5]参照)。
特開2000−293324号公報
しかしながら、複数の処理を時分割で並列に実行可能な情報処理装置においては、上記のようなプログラムに従った情報処理を情報処理部が並列に複数機能する可能性があり、その場合、複数の情報処理部それぞれが印刷装置から情報を取得しようとするため、印刷装置が一度しか情報を提供しない場合、本来であればある情報処理部Aが取得すべき情報であっても、他の情報処理部Bが横取りしてしまうことがあり、上記情報処理部Aに必要な情報が渡らない、という問題が発生するおそれがあった。
より具体的な例を挙げれば、印刷装置が自身にとって都合のよいタイミングでデバイス情報を一度だけ用意し、このデバイス情報を、情報処理部が自身にとって都合のよいタイミングで取得するように構成されたシステムの場合、印刷装置がデバイス情報を用意した後、最初にデバイス情報の取得を試みた情報処理部Bがデバイス情報を取得してしまうと、後からデバイス情報の取得を試みた情報処理部Aは、所期のデバイス情報を取得することができないことになる。
本発明は、上記問題を解決するためになされたものであり、その目的は、印刷装置が一度しか提供しないデバイス情報を複数の情報処理部が取得しようとした場合に、一つの情報処理部だけがデバイス情報を取得してしまい、他の情報処理部がデバイス情報を取得できなくなるのを防止可能な情報分配処理プログラム、情報処理装置、および情報分配処理システムを提供することにある。
以下、上記目的を達成するため、本発明において採用した特徴的構成について説明する。
求項1に記載の情報分配処理プログラムは、印刷装置に関する情報であるデバイス情報の取得開始を要求されると、当該要求以降は状態変化のたびに前記デバイス情報を提供可能な状態となる一方、前記デバイス情報の取得停止を要求されると、当該要求以降は前記デバイス情報を提供しない状態となる前記印刷装置を対象にして、前記デバイス情報に基づく情報処理を実行する複数の情報処理部と、前記情報処理部それぞれが前記印刷装置からデバイス情報を取得するために利用されるインターフェースと、を備える情報処理装置において、当該情報処理装置が備えるコンピュータを、前記印刷装置から取得した前記デバイス情報を前記複数の情報処理部へと分配する情報分配部として機能させるための情報分配処理プログラムであって、前記コンピュータを前記情報分配部として機能させるための処理として、前記コンピュータに、主処理と、常駐処理とを並列に実行させるプログラムとされており、前記主処理としては、前記複数の情報処理部のいずれかから前記デバイス情報の取得開始の要求を受信したら、どのデバイス情報の取得開始要求を受けたのかに応じて、初めて取得開始要求を受けたデバイス情報であれば、前記印刷装置に対し前記デバイス情報の取得開始の要求を送信するとともに、当該デバイス情報に対応するデバイス情報用バッファを新たに確保する一方、すでに他の情報処理部から取得開始の要求を受けたことがあるデバイス情報であれば、前記印刷装置に対する前記デバイス情報の取得開始要求の送信、及び前記デバイス情報用バッファの新たな確保を行わず、しかも、前記複数の情報処理部のいずれかから前記デバイス情報の取得停止の要求を受信したら、どのデバイス情報の取得停止要求を受けたのかに応じて、当該デバイス情報の取得停止を要求した情報処理部以外の情報処理部すべてが、当該デバイス情報の取得開始を要求している状態になければ、前記印刷装置に対し前記デバイス情報の取得停止の要求を送信するとともに、当該デバイス情報に対応するデバイス情報用バッファを削除する一方、当該デバイス情報の取得停止を要求した情報処理部以外の情報処理部のいずれかが、当該デバイス情報の取得開始を要求している状態にあれば、前記印刷装置に対する前記デバイス情報の取得停止要求の送信、及び前記デバイス情報用バッファの削除を行わないことにより、どの情報処理部からどのデバイス情報の取得要求を受けたのかを、前記常駐処理から参照可能な記憶領域に記憶する処理、を実行させ、前記常駐処理としては、前記印刷装置に対し前記デバイス情報のリード要求を送信し、前記印刷装置から前記デバイス情報が返信されたら、前記主処理で前記記憶領域に記憶させた情報を参照して、返信された前記デバイス情報が、前記複数の情報処理部のいずれかから前記取得開始要求のあった前記デバイス情報かどうかを判断し、前記複数の情報処理部のいずれかから前記取得開始要求のあった前記デバイス情報であった場合には、当該デバイス情報に対応する前記デバイス情報用バッファに記憶する処理、を実行させ、さらに、前記主処理としては、前記複数の情報処理部のいずれかからリード要求を受信したら、前記記憶領域に記憶させた情報に基づき、そのリード要求対象に該当する前記デバイス情報を特定し、特定した前記デバイス情報用バッファに記憶されている前記デバイス情報を、前記リード要求の送信元となった前記情報処理部に対し送信する処理、を実行させることを特徴とする。
このように構成された情報分配処理プログラムに従った処理を情報処理装置が備えるコンピュータに実行させることにより、コンピュータを上記各手段として機能させれば、印刷装置から一度しか受信できないデバイス情報であっても、そのデバイス情報を複数の情報処理部へ提供することができ、各情報処理部に適切な情報処理を実施させることができる。
また、本発明において、上記常駐処理では、印刷装置からデバイス情報が返信されたら、返信された前記デバイス情報が、複数の情報処理部のいずれかから取得要求のあったデバイス情報かどうかを判断する。そして、複数の情報処理部のいずれかから取得要求のあったデバイス情報であった場合に、デバイス情報用バッファに記憶する。
したがって、印刷装置に対して要求したデバイス情報以外の情報が、何らかの原因で印刷装置から取得できてしまった場合でも、そのような情報をデバイス情報用バッファに記憶せず、そのような情報が各情報処理部へ提供されることはないので、コンピュータには無駄な情報を各情報処理部へ提供するための負荷がかからなくなり、各情報処理部でも無駄な情報を処理するための負荷がかからなくなる。
なお、上述の如く構成する以外には、例えば、印刷装置に対して要求したデバイス情報以外の情報が、何らかの原因で印刷装置から取得できてしまった場合に、そのような情報をも各情報処理部へ提供するように構成することができる。ただし、この場合は、印刷装置に対して要求したデバイス情報とは無関係な情報まで各情報処理部へ提供されることになるので、各情報処理部は、印刷装置に対して要求したデバイス情報なのか印刷装置に対して要求したデバイス情報とは無関係な情報なのかを判断して、各情報処理部において必要な情報を選別し、不要な情報は破棄するなど、情報処理部側での適切な対処が必要である。
また、本発明において、上記主処理では、デバイス情報を、リード要求の送信元となった情報処理部に対し送信する。
したがって、リード要求の送信元ではない情報処理部へデバイス情報を提供するための負荷がかからなくなり、各情報処理部でも要求していないデバイス情報を処理するための負荷がかからなくなる。
なお、上述の如く構成する以外には、例えば、リード要求の送信元となった情報処理部であるか否かを判断することなく、すべての情報処理部へデバイス情報を提供するように構成することができる。ただし、この場合は、リード要求を発していない情報処理部にもデバイス情報が提供されることになるので、各情報処理部は、自身が発したリード要求に対する応答として返されたデバイス情報なのか否かを判断して、必要なデバイス情報であれば利用し、不要なデバイス情報であれば破棄するなど、情報処理部側での適切な対処が必要である。
また、本発明において、上記常駐処理では、印刷装置に対してデバイス情報のリード要求を送信し、返信されたデバイス情報が所期のデバイス情報であった場合には、そのデバイス情報をデバイス情報用バッファに記憶する。そして、上記主処理では、常駐処理において、デバイス情報を取得するタイミングとは非同期で、デバイス情報用バッファに記憶されたデバイス情報を、リード要求の送信元となった情報処理部へと送信する。
したがって、印刷装置からデバイス情報を取得するタイミングと情報処理部へデバイス情報を提供するタイミングを非同期とすることができ、情報処理部側でデバイス情報が必要となったときに、情報処理部に対してデバイス情報を提供することができる。
また、複数の情報処理部から同じデバイス情報についてのリード要求があった場合には、最初にデバイス情報のリード要求を発した情報処理部に対して送信したデバイス情報が既にデバイス情報用バッファ中に記憶されているので、後からデバイス情報のリード要求を発した他の情報処理部に対しては、迅速にデバイス情報を送信することもできる。
情報処理部側でデバイス情報が必要となったことは、情報処理部側からの通知で判断し、その通知を受けたときに通知に対する応答として情報処理部側へデバイス情報を送信してもよいし、デバイス情報を格納する記憶領域を、情報処理部側からもアクセス可能な共有メモリ等によって構成し、情報処理部側でデバイス情報が必要となったときに、情報処理部側からデバイス情報を自由に読み出せるように構成してもよい。
なお、上述の如く構成する以外には、例えば、印刷装置からデバイス情報を取得したら、その取得に同期して直ちにデバイス情報を情報処理部へと送信するように構成することができる。ただし、この場合は、情報処理部がデバイス情報を必要としているか否かを問わず、デバイス情報が情報処理部側へ送信されることになるので、送信されたデバイス情報を情報処理部が直ちに処理するか、送信されたデバイス情報を後から処理できるように、情報処理部側で用意した記憶領域にデバイス情報を保存するなど、情報処理部側での適切な対処が必要である。
本発明において、デバイス情報をデバイス情報用バッファに記憶させるに当たっては、デバイス情報を、そのデバイス情報用のデバイス情報用バッファに記憶させる構成とする。
この場合、デバイス情報が、そのデバイス情報用に用意されたデバイス情報用バッファに記憶されるので、同じデバイス情報を複数の情報処理部へ提供する場合に、情報処理部毎にデバイス情報を記憶するものとは異なり、同じデバイス情報を重複してデバイス情報用バッファに記憶しなくても済むので、デバイス情報用バッファの使用量を削減することができる。
次に、請求項に記載の情報処理装置は、印刷装置に関する情報であるデバイス情報の取得開始を要求されると、当該要求以降は状態変化のたびに前記デバイス情報を提供可能な状態となる一方、前記デバイス情報の取得停止を要求されると、当該要求以降は前記デバイス情報を提供しない状態となる前記印刷装置を対象にして、前記デバイス情報に基づく情報処理を実行する複数の情報処理部と、前記情報処理部それぞれが前記印刷装置からデバイス情報を取得するために利用されるインターフェースと、を備える情報処理装置であって、前記印刷装置から取得した前記デバイス情報を前記複数の情報処理部へと分配する情報分配部を備えており、前記情報分配部では、主処理と、常駐処理とが並列に実行されており、前記主処理としては、前記複数の情報処理部のいずれかから前記デバイス情報の取得開始の要求を受信したら、どのデバイス情報の取得開始要求を受けたのかに応じて、初めて取得開始要求を受けたデバイス情報であれば、前記印刷装置に対し前記デバイス情報の取得開始の要求を送信するとともに、当該デバイス情報に対応するデバイス情報用バッファを新たに確保する一方、すでに他の情報処理部から取得開始の要求を受けたことがあるデバイス情報であれば、前記印刷装置に対する前記デバイス情報の取得開始要求の送信、及び前記デバイス情報用バッファの新たな確保を行わず、しかも、前記複数の情報処理部のいずれかから前記デバイス情報の取得停止の要求を受信したら、どのデバイス情報の取得停止要求を受けたのかに応じて、当該デバイス情報の取得停止を要求した情報処理部以外の情報処理部すべてが、当該デバイス情報の取得開始を要求している状態になければ、前記印刷装置に対し前記デバイス情報の取得停止の要求を送信するとともに、当該デバイス情報に対応するデバイス情報用バッファを削除する一方、当該デバイス情報の取得停止を要求した情報処理部以外の情報処理部のいずれかが、当該デバイス情報の取得開始を要求している状態にあれば、前記印刷装置に対する前記デバイス情報の取得停止要求の送信、及び前記デバイス情報用バッファの削除を行わないことにより、どの情報処理部からどのデバイス情報の取得要求を受けたのかを、前記常駐処理から参照可能な記憶領域に記憶する処理、が実行され、前記常駐処理としては、前記印刷装置に対し前記デバイス情報のリード要求を送信し、前記印刷装置から前記デバイス情報が返信されたら、前記主処理で前記記憶領域に記憶させた情報を参照して、返信された前記デバイス情報が、前記複数の情報処理部のいずれかから前記取得開始要求のあった前記デバイス情報かどうかを判断し、前記複数の情報処理部のいずれかから前記取得開始要求のあった前記デバイス情報であった場合には、当該デバイス情報に対応する前記デバイス情報用バッファに記憶する処理、が実行され、さらに、前記主処理としては、前記複数の情報処理部のいずれかからリード要求を受信したら、前記記憶領域に記憶させた情報に基づき、そのリード要求対象に該当する前記デバイス情報を特定し、特定した前記デバイス情報用バッファに記憶されている前記デバイス情報を、前記リード要求の送信元となった前記情報処理部に対し送信する処理、が実行されていることを特徴とする。
このように構成された情報処理装置によれば、印刷装置から一度しか受信できないデバイス情報であっても、そのデバイス情報を複数の情報処理部へ提供することができ、各情報処理部に適切な情報処理を実施させることができる。
次に、請求項に記載の情報分配処理システムは、印刷装置に関する情報であるデバイス情報の取得開始を要求されると、当該要求以降は状態変化のたびに前記デバイス情報を提供可能な状態となる一方、前記デバイス情報の取得停止を要求されると、当該要求以降は前記デバイス情報を提供しない状態となる前記印刷装置と、前記印刷装置とデータ通信可能な情報処理装置とを備えるシステムであり、前記情報処理装置は、前記デバイス情報に基づく情報処理を実行する複数の情報処理部と、前記情報処理部それぞれが前記印刷装置からデバイス情報を取得するために利用されるインターフェースと、前記印刷装置から取得した前記デバイス情報を前記複数の情報処理部へと分配する情報分配部とを備えており、前記情報分配部では、主処理と、常駐処理とが並列に実行されており、前記主処理としては、前記複数の情報処理部のいずれかから前記デバイス情報の取得開始の要求を受信したら、どのデバイス情報の取得開始要求を受けたのかに応じて、初めて取得開始要求を受けたデバイス情報であれば、前記印刷装置に対し前記デバイス情報の取得開始の要求を送信するとともに、当該デバイス情報に対応するデバイス情報用バッファを新たに確保する一方、すでに他の情報処理部から取得開始の要求を受けたことがあるデバイス情報であれば、前記印刷装置に対する前記デバイス情報の取得開始要求の送信、及び前記デバイス情報用バッファの新たな確保を行わず、しかも、前記複数の情報処理部のいずれかから前記デバイス情報の取得停止の要求を受信したら、どのデバイス情報の取得停止要求を受けたのかに応じて、当該デバイス情報の取得停止を要求した情報処理部以外の情報処理部すべてが、当該デバイス情報の取得開始を要求している状態になければ、前記印刷装置に対し前記デバイス情報の取得停止の要求を送信するとともに、当該デバイス情報に対応するデバイス情報用バッファを削除する一方、当該デバイス情報の取得停止を要求した情報処理部以外の情報処理部のいずれかが、当該デバイス情報の取得開始を要求している状態にあれば、前記印刷装置に対する前記デバイス情報の取得停止要求の送信、及び前記デバイス情報用バッファの削除を行わないことにより、どの情報処理部からどのデバイス情報の取得要求を受けたのかを、前記常駐処理から参照可能な記憶領域に記憶する処理、が実行され、前記常駐処理としては、前記印刷装置に対し前記デバイス情報のリード要求を送信し、前記印刷装置から前記デバイス情報が返信されたら、前記主処理で前記記憶領域に記憶させた情報を参照して、返信された前記デバイス情報が、前記複数の情報処理部のいずれかから前記取得開始要求のあった前記デバイス情報かどうかを判断し、前記複数の情報処理部のいずれかから前記取得開始要求のあった前記デバイス情報であった場合には、当該デバイス情報に対応する前記デバイス情報用バッファに記憶する処理、が実行され、さらに、前記主処理としては、前記複数の情報処理部のいずれかからリード要求を受信したら、前記記憶領域に記憶させた情報に基づき、そのリード要求対象に該当する前記デバイス情報を特定し、特定した前記デバイス情報用バッファに記憶されている前記デバイス情報を、前記リード要求の送信元となった前記情報処理部に対し送信する処理、が実行されていることを特徴とする。
このように構成された情報分配処理システムによれば、印刷装置から一度しか受信できないデバイス情報であっても、そのデバイス情報を複数の情報処理部へ提供することができ、各情報処理部に適切な情報処理を実施させることができる。
次に、本発明の実施形態について、いくつかの具体的な例を挙げて説明する。
[第1実施形態]
まず、第1実施形態について説明する。
図1は、パーソナルコンピュータ1(以下、PC1という)とデバイス2とを備えてなるシステム全体の構成を示した概略構成図である。本実施形態において例示するデバイス2は、プリンタ機能、イメージスキャナ機能、コピー機能、ファクシミリ機能、および電話機能を兼ね備えた複合機である。
[PCの構成]
PC1は、図1に示すように、CPU11、ROM12、RAM13、ハードディスク装置14(以下、HDD14という)、操作部15、表示部16、およびUSB(Universal Serial Bus)インターフェース17(以下、USB I/F17という)などを備えている。
CPU11は、ROM12やRAM13に記憶されたプログラムに従って、PC1各部に対する制御および各種演算を実行する装置である。
ROM12は、PC1の電源スイッチを切っても記憶内容を保持可能な記憶装置で、BIOS(Basic Input Output System)や通常であれば更新されない読み出し用のデータ等を記憶している。
RAM13は、CPU11から直接アクセスされるメインメモリ等として利用される記憶装置で、このRAM13には、OS(Operating System)や各種アプリケーションなどのソフトウェアがHDD14から読み込まれるようになっている。
HDD14は、OS、各種アプリケーションプログラム、および各種データファイルを保存しておくための装置である。
操作部15は、利用者からの各種指示を入力するための入力装置であり、例えば、キーボードや各種ポインティングデバイス(例えば、マウス)等によって構成される。
表示部16は、各種情報を利用者に提示するための出力装置であり、例えば、カラー画像を表示可能な液晶ディスプレイ等によって構成される。
USB I/F17は、USB規格準拠のシリアルインターフェースで、このUSB I/F17には、様々なデバイス(例えば、プリンタ、キーボード、マウス、スキャナ、スピーカー、各種ストレージデバイスなど)を接続することができるが、本実施形態において、USB I/F17にはデバイス2が接続されている。
また、本実施形態において、PC1にはマルチタスク機能を備えたOSが搭載されている。このような機能を有するOSの具体例としては、例えば、Windows(登録商標)、Linux(登録商標)、MacOS(登録商標)などを挙げることができる。
PC1が備えるCPU11は、OSのマルチタスク機能により、複数のソフトウェアに基づく処理を時分割で並列に実行することができ、これにより、後から詳述する複数の情報処理部や情報分配部がPC1上で機能するようになっている。また、PC1上では、OSが備える標準機能として、上述のUSB I/F17を介してデバイスとの通信を行う機能を実現するUSBコントローラや、デバイス2へ出力する印刷データを印刷ジョブとして管理する印刷スプーラなどが機能するようになっている。
なお、OSによって提供されるこれらの各種機能そのものは公知なので、ここでの詳細な説明は省略するが、以下の説明においては、PC1が、Windows(登録商標)によって提供される各種機能を有するとの前提で説明を続ける。
[デバイスの構成]
デバイス2は、CPU21、ROM22、RAM23、ハードディスク装置24(以下、HDD24という)、操作キー25、表示パネル26、USB I/F27、不揮発性RAM28、印字部29、読み取り部30、およびモデム31などを備えている。
CPU21は、ROM22に記憶されている制御プログラムに従ってデバイス2各部の制御および各種演算を実行する装置である。
ROM22は、デバイス2の電源スイッチを切っても記憶内容を保持可能な記憶装置で、上記制御プログラムの他、通常であれば更新されない読み出し用の各種データを記憶している。
RAM23は、CPU21から直接アクセスされるメインメモリ等として利用される記憶装置で、CPU21が処理中に算出する各種データなどが一時的にRAM23に記憶されるようになっている。
HDD24は、ファクシミリ機能により送受信する画像、イメージスキャナ機能により読み取った画像、プリンタ機能により印刷する画像など、比較的サイズが大きい画像データを記憶する装置である。
操作キー25は、利用者がマニュアル操作でデバイス2に対して指令を与える場合に操作する入力装置である。
表示パネル26は、小型液晶ディスプレイによって構成された装置で、デバイス2の設定や状態などの情報を表示できるようになっている。
USB I/F27は、USB規格準拠のシリアルインターフェースで、このUSB I/F27を利用することにより、PC1との間でデータ通信を実行できるようになっている。
不揮発性RAM28は、このデバイス2に関する設定等、電力供給が断たれたときにも消失させたくないデータを記憶する記憶装置である。
印字部29は、シート状の媒体(例えば記録用紙)に対する印刷を実行可能な装置で、プリンタ機能による印刷データの印刷、ファクシミリ機能による受信画像の印刷、コピー機能によるコピー画像の印刷等を行う際に作動する。
読み取り部30は、自動原稿送り装置(図示略)にセットされた原稿またはフラットベッドのコンタクトガラス上に置かれた原稿から画像を読み取り可能な装置で、イメージスキャナ機能による画像の読み取り、ファクシミリ機能による送信画像の読み取り等を行う際に作動する。
モデム31は、デバイス2側で作成されたデジタルデータを音声信号に変換して公衆回線側に送信したり、公衆回線側から受信した音声信号をデジタルデータに変換してデバイス2側で処理できるようにするための装置で、ファクシミリ機能による画像の送受信、電話機能による通話を行う際に作動する。
[PCによるデバイス情報取得方法の概要]
次に、PC1によるデバイス情報取得方法の概要について説明する。
PC1が備えるCPU11は、上述した通り、複数のソフトウェアに基づく処理を時分割で並列に実行することができ、これにより、図2に示す情報分配部41や複数の情報処理部43a〜43cなどが、PC1上で機能するようになっている。
これらのうち、情報分配部41はサーバーとして機能、複数の情報処理部43a〜43cはクライアントとして機能し、各情報処理部43a〜43cからの要求に応じて、情報分配部41がデバイス2からデバイス情報を取得するとともに、取得したデバイス情報を、各情報処理部43a〜43cからの要求に応じて、情報分配部41が各情報処理部43a〜43cへ提供する。そして、情報処理部43a〜43cそれぞれが、デバイス情報を利用して各種情報処理を行っている。情報処理部43a〜43cが行う情報処理の具体例としては、例えば、取得したデバイス情報に基づいてデバイス2の状態をほぼリアルタイムで表示部16に表示するステータスモニターとしての処理、あるいは、取得したデバイス情報に基づいてデバイス2のシリアル番号やファームウェアヴァージョン等の情報を表示する処理などを挙げることができる。なお、本実施形態では、3つの情報処理部43a〜43cが例示してあるが、情報処理部は並列にいくつ機能してもよい。また、各情報処理部が処理を開始するタイミングや処理を終了するタイミング等は任意であり、各情報処理部毎に独立したタイミングで構わない。
一方、デバイス2は、PC1側からの要求に応じて、デバイス2に関する情報であるデバイス情報をPC1に対して提供する機能を備えている。本実施形態の場合、デバイス2は複合機なので、デバイス情報としては、例えば、オンライン、オフラインといった「デバイスの状態に関する情報」、用紙サイズ毎の印刷枚数あるいは総印刷枚数といった「使用頻度に関する情報」、ドラム交換時期などの「交換部品の使用度合に関する情報」、トナーないしインク残量や記録用紙残量といった「消耗品の消耗度合に関する情報」、紙詰まり回数といった「異常の発生回数に関する情報」などが提供される。これらのデバイス情報のうち、どれを提供するかは、PC1側から送信されてくるコマンドにより指定される。
本実施形態において、PC1がデバイス2に対してデバイス情報を要求する際には、PC1からデバイス2に対してPJLコマンドを送信する。PJL(Printer Job Language;プリンタジョブ言語)は、プリンタが備える各種機能を制御するために用意されたコマンド言語で、Hewlett-Packard社において開発され、その後他社でも採用された周知のものである。
PC1からデバイス2へPJLコマンドを送信する際には、PC1からデバイス2へ印刷データを出力する場合と同等の処理がPC1において実行される。具体的には、PC1上で機能する情報処理部43a〜43cが、情報分配部41に対してコマンド送信要求を送信すると、このコマンド送信要求に応じて情報分配部41がPJLコマンドを出力する。情報分配部41が出力したPJLコマンドは、プリンタドライバ経由で印刷スプーラに引き渡され、印刷スプーラは、受け取ったPJLコマンドを印刷ジョブとして処理する。その結果、PJLコマンドは、USB I/F17を通じてデバイス2へと出力されることになる。
デバイス2では、通常の印刷データと同様にPJLコマンドを受信するが、受信したデータのヘッダ情報からPJLコマンドであることを認識し、その内容を解析する。その解析の結果、デバイス2が応答可能なPJLコマンドであった場合は、不揮発性RAM28に蓄積されているデバイス情報を読み出して、そのデバイス情報をPC1へと送信する。
PC1では、情報分配部41がデバイス2から返されるデバイス情報をリードバックする。具体的には、デバイス2の場合、USB I/F17を介して接続されているので、情報分配部41が情報の受信を行い、受信した情報量が0(ゼロ)であった場合には再び情報の受信を繰り返し、その繰り返し処理によって情報を取得する。何らかのデータを受信した場合は、そのデータが所期のデバイス情報であるかどうかをチェックし、所期のデバイス情報でない場合は、さらに受信処理をやり直し、最終的に所期のデバイス情報を取得することになる。
デバイス情報を取得した情報分配部41は、情報処理部43a〜43cそれぞれに対応付けて用意されたバッファ45a〜45cにデバイス情報を格納する。すなわち、バッファ45a〜45cには、同じ内容のデバイス情報が格納される。
そして、情報分配部41が情報処理部43a〜43cのいずれか(例えば、情報処理部43a)からのリード要求を受けた場合、情報分配部41は、要求元の情報処理部(例えば、情報処理部43a)に対応するバッファ(例えば、バッファ45a)に格納されたデバイス情報を、要求元の情報処理部(例えば、情報処理部43a)に対して送信する。
その結果、要求元の情報処理部(例えば、情報処理部43a)は、デバイス情報を取得することができるので、取得したデバイス情報に基づく情報処理(例えば、デバイス2の状態を表示部16に表示する処理等)を実行することができる。
さて、以上のような仕組みにより、PC1とデバイスとの間では、PJLコマンドの送受信およびデバイス情報の送受信が行われるが、デバイス2は、PC1側からの要求に応じてデバイス情報を提供するものの、情報処理部43a〜43cのいずれが要求元であるのかを認識する仕組みにはなっていない。そのため、PC1側からのリードバックを受ければ、その時点でデバイス2が要求されていたすべてのデバイス情報をPC1側へ提供する。このような仕組みを採用しているため、各情報処理部43a〜43cそれぞれがデバイス情報の取得要求を発して、それらに対する応答として返すべきデバイス情報をデバイス2が用意しても、例えば、情報処理部43aが独自にデバイス2からのリードバックを行ってしまうと、他の情報処理部43b,43cに送信されるべきデバイス情報まで情報処理部43aに送信されてしまい、送信済みのデバイス情報は、デバイス2の送信バッファ内から消されてしまう。このような状況になった場合、その後、他の情報処理部43b,43cがデバイス2からのリードバックを行ったとしても、他の情報処理部43b,43cでは、必要なデバイス情報を受け取れないという事態を招く。
上記情報分配部41は、こうした事態が発生するのを防止するために設けられたものである。具体例を交えて説明すると、例えば、各情報処理部43a〜43cそれぞれがデバイス情報の取得要求を発した場合、それらに対する応答として返すべきデバイス情報をデバイス2が用意するが、情報分配部41は、代表してデバイス2からのリードバックを行い、取得したデバイス情報を複数のバッファ45a〜45cに複製する。そして、各情報処理部43a〜43cは、独自にデバイス2からのリードバックを行わず、必ず情報分配部41からデバイス情報の提供を受ける。ここで、例えば、情報処理部43aが情報分配部41からデバイス情報の提供を受けた場合、送信済みのデバイス情報はバッファ45a内から消されてしまう。しかし、その後も、バッファ45b,45c内には、複製されたデバイス情報が残っているので、他の情報処理部43b,43cは、情報分配部41からデバイス情報の提供を受けることができるのである。
[情報分配部における主処理]
次に、上記のような情報分配部41の機能を実現するため、情報分配部41において実行される主処理について、図3のフローチャートに基づいて説明する。この処理は、情報分配部41を機能させたい時点で開始されていればよい処理であり、例えば、PC1の起動に伴って開始される処理となっていればよい。
この処理を開始すると、情報分配部41(正確には、情報分配部41として機能しているCPU11;以下、単に情報分配部41という)は、まずクライアントとなる情報処理部43a〜43cからの要求待ちになる(S105)。ここで、情報処理部43a〜43cのいずれかから何らかの要求があるとS105の処理を抜け、続いて、情報分配部41は、新規クライアント追加要求か否かを判断する(S110)。
S110の処理において、新規クライアント追加要求であった場合(S110:YES)、情報分配部41は、要求元となったクライアントのIDをRAM13に記憶させる(S115)。このIDは、新規クライアント追加要求ごとに情報分配部41によりユニークな値が生成されるものである。このIDは、このクライアントからの追加要求終了時に、後述するS122の処理により、戻り値としてクライアントに渡される。以後クライアントは、後述する別の要求(クライアント削除要求、新規コマンド送信要求、デバイス情報呼び出し情報など)を発行する際に、このIDを指定することにより、その処理対象が自分であることを情報分配部41に知らせる。図2に示すように、クライアントである情報処理部43a〜43cには、それぞれユニークなID(図2に示した例では、AP1〜AP3)が付与されて、例えば、情報処理部43aが新規クライアント追加要求を行った場合を例に挙げれば、その追加要求中にはID:AP1が含まれているので、S115の処理では、ID:AP1を記憶する。以後は、クライアントからの要求中にID:AP1が含まれていれば、その要求が情報処理部43aからの要求であることを、情報分配部41側で認識できるようになる。そして、S115の処理を終えたら、要求元となったクライアントに対応するバッファを確保する(S120)。S120の処理で確保されるバッファは、図2に示したバッファ45a〜45cに相当するものであり、例えば、情報処理部43aが新規クライアント追加要求を行った場合を例に挙げれば、S120の処理によりバッファ45aが確保されることになる。そして、S120の処理を終えたら、上述したIDを戻り値としてクライアントに返してから(S122)、S105の処理へと戻り、再びS105以降の処理を繰り返す。なお、このバッファは、先のS115の処理により、生成・記憶されたIDと関連づけられて管理される。すなわちIDが与えられれば、対応するバッファが特定できるように管理される。
さて一方、上記S110の処理において、新規クライアント追加要求ではなかった場合(S110:NO)、続いて、情報分配部41は、クライアント削除要求か否かを判断する(S125)。
S125の処理において、クライアント削除要求であった場合(S125:YES)、情報分配部41は、要求元となったクライアントに対応するバッファを削除する(S130)。この際、クライアントはS115の処理で自分に与えられたIDを指定して、この削除要求を発行する。情報分配部41は、その指定されたIDに対応するバッファを削除するのである。例えば、情報処理部43aが新規クライアント追加要求を行った場合を例に挙げれば、S130の処理によりバッファ45aが削除されることになる。そして、S130の処理を終えたら、S105の処理へと戻り、再びS105以降の処理を繰り返す。
一方、上記S125の処理において、クライアント削除要求ではなかった場合(S125:NO)、情報分配部41は、新規コマンド送信要求であるか否かを判断する(S135)。本実施形態においては、各情報処理部43a〜43cからPJLコマンドを含むコマンド送信要求がクライアントを示すIDとともに送信されてくる。ただし、これは、各情報処理部43a〜43cからPJLコマンドを示すPJL識別子を含むコマンド送信要求を送信するとともに、送信されて期したPJL識別子に基づいて、情報分配部41側でPJL識別子に対応するPJLコマンドを用意するようにしてもよい。
S135の処理において、新規コマンド送信要求であった場合(S135:YES)、情報分配部41は、送信要求されたPJLコマンドをスプーラ経由でUSB I/F17を通じてデバイス2へ送信するとともに、その送信要求されたPJLコマンドを前記IDと関連付けてRAM13に記憶させる(S140)。なお、S140の処理でRAM13に記憶させたPJLコマンドは、後述するS215の判断処理において参照されることになる。そして、S140の処理を終えたら、S105の処理へと戻り、再びS105以降の処理を繰り返す。
一方、S135の処理において、新規コマンド送信要求ではなかった場合(S135:NO)、本実施形態では、クライアントからデバイス情報のリード要求を受けたものと判断する。すなわち、新規クライアント追加要求、クライアント削除要求、および新規コマンド送信要求のいずれでもない要求としては、デバイス情報リード要求しか存在しないとの前提で処理を進めるように構成されている。この場合、情報分配部41は、クライアントが付与したIDに基づいて要求元となったクライアントに対応するバッファをサーチし、そのバッファ内に記憶されたデバイス情報(後述する常駐スレッド処理により記憶されたもの)を読み出して(S145)、読み出したデバイス情報を要求元となったクライアントに送信する(S150)。例えば、情報処理部43aからデバイス情報のリード要求を受けた場合を例に挙げれば、S145の処理によりバッファ45aからデバイス情報が読み出され、そのデバイス情報が、S145の処理によってクライアントである情報処理部43aに送信されることになる。なお、S145の処理により、バッファから読み出されるデバイス情報は、本処理と並列に実行される常駐スレッド処理によりデバイス2から読み出されてバッファに格納されたものであるが、この常駐スレッド処理の詳細については後述する。
そして、S150の処理を終えたら、送信分のデバイス情報をバッファから削除して(S155)、S105の処理へと戻り、再びS105以降の処理を繰り返す。
[情報分配部における常駐スレッド処理]
次に、情報分配部41において主処理と並列に実行される常駐スレッド処理について、図4のフローチャートに基づいて説明する。
この処理を開始すると、情報分配部41は、デバイス2よりデバイス情報の読み取りを行う(S205)。ここで、まだデバイス2に対してPJLコマンドが送信されていない場合など、デバイス2側がデバイス情報を送信できる状態にない場合は、S205の処理で読み取り待ちになり、何らかの情報を読み取ったらS205の処理を抜ける。
続いて、情報分配部41は、ループ処理にてすべてのクライアントを順に処理するため、未処理のクライアントに対応するIDの中から、処理対象とするクライアントに対応する1つのIDを選ぶ(S210)。このS210の処理において、未処理のクライアントに対応するIDとは、上記S115の処理で記憶されたすべてのIDのうち、S210の処理でまだ選ばれたことがないIDである。
S210の処理を終えたら、情報分配部41は、S205の処理で読み取った情報が、処理対象とするクライアント(=S210の処理で選んだIDに対応するクライアント)から送信要求されたコマンドの返答か否かを判断する(S215)。クライアントから送信要求されたコマンドは、上述したS140の処理によりRAM13に記憶されている。したがって、S215の処理では、S140の処理でRAM13に記憶されたコマンドと、S205の処理で読み取った情報とを対比することにより、所期のデバイス情報であるかどうかを判断することができる。
S215の処理において、処理対象とするクライアントから送信要求されたコマンドの返答ではなかった場合(S215:NO)、S210の処理へと戻り、S210以降の処理を繰り返す。
一方、S215の処理において、処理対象とするクライアントから送信要求されたコマンドの返答であった場合は(S215:YES)、S210の処理で選んだIDに対応するバッファに十分な空き領域があるか否かを判断する(S220)。そして、バッファに十分な空き領域がない場合は(S220:YES)、古いデバイス情報を捨ててバッファ内の領域を空ける(S225)。一方、バッファに十分な空き領域がある場合は(S220:NO)、S225の処理をスキップする。
こうしてS220の処理またはS225の処理を終えたら、続いて、情報分配部41は、S205の処理で読み取ったデバイス情報を、S210の処理で選んだIDに対応するバッファに追記書き込みする(S230)。このS230の処理により、バッファ45a〜バッファ45cにはデバイス情報が格納され、このデバイス情報が上述したS145の処理によってバッファ45a〜バッファ45cから読み出されることになる。その後、情報分配部41は、S140の処理で記憶された対応情報を消去する(S232)。このS232の処理により、要求コマンドの処理が完了したと判断し、その要求情報を削除するのである。なお、この際要求コマンドがUSTATUSである場合は、この処理はスキップされる。これはUSTATUSの場合、要求コマンドと返信データが1対1に対応しないため、処理完了とはならないからである。
そして、S230の処理を終えたら、上記S115の処理で記憶されたすべてのIDについての処理が終了したか否かを判断し(S235)、終了していなければ(S235:NO)、S210の処理へと戻り、再びS210〜S235の処理を繰り返す。
一方、上記S115の処理で記憶されたすべてのIDについての処理が終了した場合(S235:YES)、この常駐スレッド処理を終了するか否かを判断し(S240)、終了すべきであれば(S240:YES)、常駐スレッド処理を終了する。また、常駐スレッド処理を終了しない場合は(S240:NO)、1秒待機して(S245)、S205の処理へと戻り、再びS205以降の処理を繰り返す。
以上のような常駐スレッド処理が情報分配部41において実行されることにより、S205の処理でデバイス2からデバイス情報を読み取る毎に、S210〜S235のループ処理が実行され、このループ処理により、すべてのクライアント(情報処理部43a〜43c)に対応するバッファ45a〜45cにデバイス情報が分配される。そして、このデバイス情報の分配が完了したら、1秒の待機(S245)を経て、再びデバイス2からデバイス情報を読み取る処理(S205)以降の処理が繰り返されることになる。
[情報処理部における処理の一例]
次に、情報処理部における処理の一例として、情報処理部43aで実行されるステータスモニター処理について、図5のフローチャートに基づいて説明する。
各情報処理部43a〜43cから情報分配部41に対する要求を行う機能は、複数の情報処理部43a〜43cにおいて同じ機能が共通に利用されるものなので、クライアントDLL(Dynamic Link Library)として提供され、各情報処理部43a〜43cがクライアントDLLを動的にリンクすることで、情報分配部41に対する要求機能を利用できるようになっている。このクライアントDLLと、情報分配部41との通信は、Windowsのリモートプロシージャーコール(RPC)などの既存のプロセス間通信の機能を使用する。
この処理を開始すると、情報処理部43a(正確には、情報処理部43aとして機能しているCPU11;以下、単に情報処理部43aという)は、クライアントオープン処理を実行する(S305)。このクライアントオープン処理は、ステータスモニターとしての処理を開始する上で必要なバッファの確保や各種データの初期化等を行う処理であるが、その中で、情報分配部41に対して新規クライアント追加要求が送信される。この新規クライアント追加要求が、情報分配部41において上記S105の処理で受信されると、情報分配部41においてS110〜S120の処理が実行されることになる。
この新規クライアント追加処理の戻り値として、IDが返される。このIDは、後述する各要求時に、引数として付加される。
さて、S305の処理を終えたら、情報処理部43aは、コマンド送信処理を実行する(S310)。このコマンド送信処理は、PJLコマンドの送信等を行う処理であるが、PJLコマンドの送信は上記クライアントDLLを利用して実行され、これにより、PJLコマンドを含むコマンド送信要求が情報分配部41へと送信されることになる。この新規コマンド送信要求が、情報分配部41において上記S105の処理で受信されると、情報分配部41においてS135〜S140の処理が実行されることになる。
こうしてコマンドを送信したら、情報処理部43aは、リード処理を実行する(S315)。このリード処理は、デバイス情報を取得する処理であり、さらに取得した最新のデバイス情報に基づく表示を表示部16に表示する処理なども含まれる。デバイス情報のリード要求は上記クライアントDLLを利用して実行される。このリード要求が、情報分配部41において上記S105の処理で受信されると、情報分配部41においてS145〜S155の処理が実行され、その結果、情報分配部41からはバッファ45aに格納されたデバイス情報が提供されることになる。
S315の処理を終えたら、情報処理部43aは、処理を終了するか否かを判断し(S320)、終了しない場合は(S320:NO)、一秒待機して(S325)、S315の処理へと戻り、S315以降の処理を繰り返す。これにより、情報処理部43aは、繰り返しリード要求を発行して最新のデバイス情報を取得し、その最新のデバイス情報に基づく表示を表示部16に表示する処理を繰り返すことになる。
一方、S320の処理において、処理を終了すると判断した場合は(S320:YES)、クライアントクローズ処理を実行する(S330)。このクライアントクローズ処理は、ステータスモニターとしての処理を終了する上で必要なバッファの削除(開放)等を行う処理であるが、その中で、情報分配部41に対してクライアント削除要求が送信される。このクライアント削除要求が、情報分配部41において上記S105の処理で受信されると、情報分配部41においてS125〜S130の処理が実行されることになる。そして、S330の処理を終えたら、本処理を終了する。
[第1実施形態の効果]
以上説明したように、上記第1実施形態においては、デバイス2から一度しか受信できないデバイス情報であっても、そのデバイス情報を情報分配部41が取得して、情報分配部41が複数の情報処理部43a〜43cに対応するバッファ45a〜45cに複製するので、すべての情報処理部43a〜43cに対してデバイス情報を提供することができ、各情報処理部43a〜43cに適切な情報処理を実施させることができる。
また、上記第1実施形態においては、デバイス2に送信したPJLコマンドに対応するデバイス情報以外の情報が、何らかの原因でデバイス2から取得できてしまった場合でも、上記S215の処理により、そのような情報を各情報処理部43a〜43cへ提供しないので、PC1には無駄な情報を各情報処理部43a〜43cへ提供するための負荷(すなわち、S220〜S230の処理を実行するための負荷)がかからなくなり、各情報処理部43a〜43cでも無駄な情報を処理するための負荷がかからなくなる。なお、何らかの原因でデバイス2から取得できてしまう情報としては、例えば、情報分配部41を経由することなく直接デバイス2へPJLコマンドを送信するアプリケーションが混在した場合に、そのようなアプリケーションへの応答として返すべきデバイス情報が、デバイス2から取得できてしまう可能性がある。望ましくは、そのようなアプリケーションが混在しないようにすることが重要であるが、上記第1実施形態では、次善の策として、そのようなアプリケーションが混在した場合でも、無駄な情報を各情報処理部43a〜43cへ提供してしまわないように対処することができる。
さらに、上記第1実施形態においては、デバイス2から取得したデバイス情報をバッファ45a〜45cに一旦格納するので、デバイス2からデバイス情報を取得するタイミングとデバイス情報を情報処理部43a〜43cへ提供するタイミングを非同期とすることができ、各情報処理部43a〜43c側それぞれでデバイス情報が必要となったときに、各情報処理部43a〜43cに対してデバイス情報を提供することができる。
また、上記第1実施形態においては、デバイス情報を情報処理部43a〜43c毎に確保されたバッファ45a〜45cに格納するので、複数の情報処理部43a〜43cがそれぞれバッファ45a〜45cに格納されたデバイス情報を利用する際に、一つのバッファ(例えば、バッファ45a)記憶領域で問題が生じても、他のバッファ(例えば、バッファ45b,45c)には悪影響を及ぼすことがない。
[第2実施形態]
次に、第2実施形態について説明する。
ただし、第2実施形態は、一部の構成が第1実施形態と同様になるので、第2実施形態においては、第1実施形態との相違点を中心に詳述する。具体的には、PCおよびデバイスの構成と、情報処理部における処理は、第1実施形態と同様なので、その詳細な説明については省略する。ただし、第1実施形態とほぼ同様の構成については、第1実施形態と同じ符号を付すことで、第1実施形態とほぼ同様の構成であることを示す。
[PCによるデバイス情報取得方法の概要]
以下、PC1によるデバイス情報取得方法の概要について説明する。
PC1上で情報分配部41や複数の情報処理部43a〜43cが機能する点は、第1実施形態と同様である。ただし、第2実施形態においては、情報分配部41の確保するバッファの構造が、第1実施形態とは相違する。
具体的には、第1実施形態においては、各情報処理部43a〜43c毎に1つずつバッファを確保することにより、複数のバッファ45a〜45cが確保されていたが、第2実施形態においては、PJLコマンドに対する応答として返されるデバイス情報と、PJLコマンドの送信を要求したクライアント(情報処理部)のIDとを1組とする、複数組分の記憶領域を備えたバッファ47が確保されるようになっている。
次に、上記バッファ47の利用方法を、具体例を交えて説明する。
情報処理部43aが、“@PJL1 INFO STATUS”というPJLコマンドの送信を、情報分配部41に対して要求した場合、情報分配部41は、“@PJL1 INFO STATUS”に対応する1組分の記憶領域を、バッファ47内に用意する。そして、“@PJL1 INFO STATUS”に対する応答として返されるデバイス情報をデバイス2から取得した際には、そのデバイス情報と、“@PJL1 INFO STATUS”の送信を要求したクライアント(情報処理部43a)のID(AP1)が、バッファ47内にある“@PJL1 INFO STATUS”に対応する1組分の記憶領域に格納される。
その後、情報処理部43bが、同じく“@PJL1 INFO STATUS”というPJLコマンドの送信を、情報分配部41に対して要求した場合、情報分配部41は、既に“@PJL1 INFO STATUS”に対応する1組分の記憶領域が用意されているので、この場合は、新たな記憶領域を用意することはない。そして、“@PJL1 INFO STATUS”に対する応答として返されるデバイス情報をデバイス2から取得した際には、そのデバイス情報と、“@PJL1 INFO STATUS”の送信を要求したクライアント(情報処理部43a,43b)のID(AP1,AP2)が、バッファ47内にある“@PJL1 INFO STATUS”に対応する1組分の記憶領域に格納する。
つまり、複数のクライアントからコマンドの送信が要求された場合でも、そのコマンドが同じコマンドである場合には、バッファ47内に新たな記憶領域が確保されることはなく、クライアントのIDのみが確保済みの記憶領域に追加登録される。
一方、情報処理部43aが、“@PJL2 INFO PAGE”というPJLコマンドの送信を、情報分配部41に対して要求した場合、情報分配部41は、“@PJL2 INFO PAGE”に対応する新たな1組分の記憶領域を、バッファ47内に用意する。そして、“@PJL2 INFO PAGE”に対する応答として返されるデバイス情報をデバイス2から取得した際には、そのデバイス情報と、“@PJL2 INFO PAGE”の送信を要求したクライアント(情報処理部43a)のID(AP1)が、バッファ47内にある“@PJL2 INFO PAGE”に対応する1組分の記憶領域に格納される。
つまり、同じクライアントからコマンドの送信が要求された場合でも、そのコマンドが異なるコマンドである場合には、バッファ47内に新たな記憶領域が確保される。
このようにして、デバイス情報がコマンド毎にバッファ47に格納されるとともに、IDがバッファ47に格納される結果、バッファ47には、図6に示すように、デバイス情報とIDとを1組とする複数組の情報が格納されることになる。
その後、クライアントからのリード要求を受けると、情報分配部41は、リード要求の要求元に対応するIDを検索キーにして、バッファ47内をサーチする。例えば、情報処理部43aからのリード要求を受けた場合、ID:AP1を検索キーにしてバッファ47内がサーチされ、この場合、“@PJL1 INFO STATUS”と“@PJL2 INFO PAGE”に対応する記憶領域が検出されることになる。そして、検出された2組の記憶領域からデバイス情報が読み出され、それら2組分のデバイス情報が情報処理部43aに対して提供されることになる。
[情報分配部における主処理]
次に、上記のような情報分配部41の機能を実現するため、情報分配部41において実行される主処理について、図7のフローチャートに基づいて説明する。この処理は、情報分配部41を機能させたい時点で開始されていればよい処理であり、例えば、PC1の起動に伴って開始される処理となっていればよい。
この処理を開始すると、情報分配部41は、まずクライアントとなる情報処理部43a〜43cからの要求待ちになる(S405)。ここで、情報処理部43a〜43cのいずれかから何らかの要求があるとS405の処理を抜け、続いて、情報分配部41は、新規クライアント追加要求か否かを判断する(S410)。
S410の処理において、新規クライアント追加要求であった場合(S410:YES)、情報分配部41は、要求元となったクライアントのIDをRAM13に記憶させる(S415)。図6に示すように、クライアントである情報処理部43a〜43cには、それぞれユニークなID(図6に示した例では、AP1〜AP3)が付与されており、このIDが第1実施形態の場合と同様に記憶される。そして、S415の処理を終えたら、S405の処理へと戻り、再びS405以降の処理を繰り返す。
一方、上記S410の処理において、新規クライアント追加要求ではなかった場合(S410:NO)、続いて、情報分配部41は、クライアント削除要求か否かを判断する(S420)。
S420の処理において、クライアント削除要求であった場合(S420:YES)、情報分配部41は、要求元となったクライアントに対応するIDを削除する(S425)。また、受信したデバイス情報(バッファ47内に格納されたデバイス情報)の中から、削除対象となったクライアントからのみ要求されていたデバイス情報を削除する(S425)。そして、S425の処理を終えたら、S405の処理へと戻り、再びS405以降の処理を繰り返す。
一方、上記S420の処理において、クライアント削除要求ではなかった場合(S420:NO)、情報分配部41は、新規コマンド送信要求であるか否かを判断する(S435)。本実施形態においても、第1実施形態と同様、各情報処理部43a〜43cからPJLコマンドを含むコマンド送信要求が送信されてくる。
S435の処理において、新規コマンド送信要求であった場合(S435:YES)、情報分配部41は、送信要求されたPJLコマンドをスプーラ経由でUSB I/F17を通じてデバイス2へ送信するとともに、その送信要求されたPJLコマンドをRAM13に記憶させる(S440)。なお、S440の処理でRAM13に記憶させたPJLコマンドは、後述するS510の判断処理において参照されることになる。そして、S440の処理を終えたら、S405の処理へと戻り、再びS405以降の処理を繰り返す。
一方、S435の処理において、新規コマンド送信要求ではなかった場合(S435:NO)、第1実施形態と同様、クライアントからデバイス情報のリード要求を受けたものと判断する。そして、情報分配部41は、要求元となったクライアントに対応するIDを取得して(S445)、そのIDを検索キーにしてバッファ47の検索を行う(S450)。そして、検索キーにしたIDが登録された記憶領域が1組もバッファ47内から検出されないた場合には、要求したコマンドに対応するデバイス情報が存在しないことになるので、その場合は(S455:NO)、S405の処理へと戻り、再びS405以降の処理を繰り返す。
一方、S455の処理において、要求したコマンドに対応するデバイス情報が1組分以上存在する場合には(S455:YES)、検出した1組分以上のデバイス情報を要求元となったクライアントに送信するとともに、そのデバイス情報に関連付けられたID(S440の処理において記憶されたもの)を削除する(S460)。なお、S460の処理により、クライアントに送信されるデバイス情報は、本処理と並列に実行される常駐スレッド処理によりデバイス2から読み出されてバッファ47に格納されたものであるが、この常駐スレッド処理の詳細については後述する。
そして、S460の処理を終えたら、その要求コマンドに対する最後のクライアントであるか否かを判断し(S465)、最後のクライアントであれば(S465:YES)、デバイス情報をバッファ47から削除して(S470)、S405の処理へと戻る一方、最後のクライアントでなければ(S465:NO)、S470の処理を実行することなく、S405の処理へと戻る。なお、これらS465〜S470の処理は、複数のクライアントから同じコマンドの送信要求が出ている場合に、あるクライアントだけがデバイス情報を取得しても、他のクライアントがデバイス情報を取得していなければ、デバイス情報をバッファ47から削除せず、一方、全てのクライアントがデバイス情報を取得した際には、デバイス情報をバッファ47から削除するために設けられている。
[情報分配部における常駐スレッド処理]
次に、情報分配部41において主処理と並列に実行される常駐スレッド処理について、図8のフローチャートに基づいて説明する。
この処理を開始すると、情報分配部41は、デバイス2よりデバイス情報の読み取りを行う(S505)。ここで、まだデバイス2に対してPJLコマンドが送信されていない場合など、デバイス2側がデバイス情報を送信できる状態にない場合は、S505の処理で読み取り待ちになり、何らかの情報を読み取ったらS505の処理を抜ける。
続いて、情報分配部41は、S505の処理で読み取った情報が、クライアントから送信要求されたコマンドの返答か否かを判断する(S510)。クライアントから送信要求されたコマンドは、上述したS440の処理によりRAM13に記憶されている。したがって、S510の処理では、S440の処理でRAM13に記憶されたコマンドと、S505の処理で読み取った情報とを対比することにより、所期のデバイス情報であるかどうかを判断することができる。
S510の処理において、クライアントから送信要求されたコマンドの返答であった場合は(S510:YES)、そのコマンドを要求したクライアントのIDをサーチして(S515)、S505の処理で読み取ったデバイス情報とS515の処理で検出したIDとを組にして、バッファ47に記憶させる。なお、S510の処理において、クライアントから送信要求されたコマンドの返答ではなかった場合は(S510:NO)、上記S515,S520の処理をスキップする。
こうして、S510〜S520の処理を終えたら、1秒待機して(S525)、S505の処理へと戻り、S505以降の処理を繰り返す。
以上のような常駐スレッド処理が情報分配部41において実行されることにより、S505の処理でデバイス2からデバイス情報を読み取る毎に、S510以降の処理が実行され、この処理により、バッファ47には、異なるコマンド毎に各コマンドに対応するデバイス情報が格納されることになる。
[第2実施形態の効果]
以上説明したように、上記第2実施形態においても、デバイス2から一度しか受信できないデバイス情報を情報分配部41が取得して、情報分配部41が異なるコマンド毎にデバイス情報をバッファに保存し、そのデバイス情報を複数の情報処理部43a〜43cに提供するので、各情報処理部43a〜43cに適切な情報処理を実施させることができる。
また、上記第2実施形態においても、デバイス2に送信したPJLコマンドに対応するデバイス情報以外の情報が、何らかの原因でデバイス2から取得できてしまった場合、上記S510の処理により、そのような情報を各情報処理部43a〜43cへ提供しないようにしているので、PC1には無駄な情報を各情報処理部43a〜43cへ提供するための負荷(すなわち、S515〜S520の処理を実行するための負荷)がかからなくなり、各情報処理部43a〜43cでも無駄な情報を処理するための負荷がかからなくなる。
さらに、上記第2実施形態においても、デバイス2から取得したデバイス情報をバッファ47に一旦格納するので、デバイス2からデバイス情報を取得するタイミングとデバイス情報を情報処理部43a〜43cへ提供するタイミングを非同期とすることができ、各情報処理部43a〜43c側それぞれでデバイス情報が必要となったときに、各情報処理部43a〜43cに対してデバイス情報を提供することができる。
また、上記第2実施形態においては、デバイス情報をバッファ47へ格納する際に異なるコマンド毎に格納するので、複数の情報処理部43a〜43cが同じコマンドを送信している場合に、同じデバイス情報を複数のバッファに格納しなくてもよく、その分だけRAM13の使用量を削減することができる。
[第3実施形態]
次に、第3実施形態について説明する。
ただし、第3実施形態は、一部の構成が第1,第2実施形態と同様になるので、第3実施形態においては、第1,第2実施形態との相違点を中心に詳述する。具体的には、PCおよびデバイスの構成と、情報処理部における処理は、第1,第2実施形態と同様なので、その詳細な説明については省略する。ただし、第1,第2実施形態とほぼ同様の構成については、第1,第2実施形態と同じ符号を付すことで、第1,第2実施形態とほぼ同様の構成であることを示す。
[PCによるデバイス情報取得方法の概要]
以下、PC1によるデバイス情報取得方法の概要について、図9に基づいて説明する。
PC1上で情報分配部41や複数の情報処理部43a〜43cが機能する点は、第1,第2実施形態と同様である。ただし、第3実施形態においては、PJLコマンドの一つであるUSTATUSに特化した処理を行っている点で、第1実施形態とは相違する。
PJLコマンドの多くは、デバイスへ送信された場合に、送信されたコマンドに対する応答として1度だけデバイス情報が返されるが、USTATUSの場合は、ONを指示するコマンドを送信すると、以後、新たに同じコマンドを送信しなくても、デバイス2が自身の状態変化を検出するたびに、何度でもデバイス情報を返すようになる。
そこで、第3実施形態においては、クライアント(情報処理部)からコマンド送信要求を受けた場合に、そのコマンドに対応するバッファを用意し、以後、コマンドに対する応答であるデバイス情報がデバイス2から返される毎に、そのコマンドに対応するバッファにデバイス情報を格納するようにしている。
図9に例示したもので言えば、情報処理部43aが、“@PJL USTATUS DEVICE = ON”というPJLコマンドの送信を、情報分配部41に対して要求した場合、情報分配部41は、“USTATUS DEVICE”に対応するバッファ49aを確保する。一方、情報処理部43b,43cも、“@PJL USTATUS DEVICE = ON”というPJLコマンドの送信を、情報分配部41に対して要求することがあるが、この場合、“USTATUS DEVICE”に対応するバッファ49aは既に確保されているので、新たなバッファが確保されることはなく、既存のバッファ49aが、情報処理部43b,43cからも利用される状態になる。また、情報処理部43bが、“@PJL USTATUS PAGE = ON”というPJLコマンドの送信を、情報分配部41に対して要求した場合、情報分配部41は、“USTATUS PAGE”に対応するバッファ49bを確保し、情報処理部43cが、“@PJL USTATUS JOB = ON”というPJLコマンドの送信を、情報分配部41に対して要求した場合、情報分配部41は、“USTATUS JOB”に対応するバッファ49cを確保する。以後は、上述の通り、デバイス2が自身の状態変化を検出するたびにデバイス情報を返すようになるので、デバイス2からデバイス情報をデバイス2から取得した際には、そのデバイス情報に対応するPJLコマンドを判断し、そのPJLコマンドに対応するバッファ(バッファ49a〜49cのいずれか)にデバイス情報が格納されることになる。
[情報分配部における主処理]
次に、上記のような情報分配部41の機能を実現するため、情報分配部41において実行される主処理について、図10のフローチャートに基づいて説明する。この処理は、情報分配部41を機能させたい時点で開始されていればよい処理であり、例えば、PC1の起動に伴って開始される処理となっていればよい。
この処理を開始すると、情報分配部41は、まずクライアントとなる情報処理部43a〜43cからの要求待ちになる(S605)。ここで、情報処理部43a〜43cのいずれかから何らかの要求があるとS605の処理を抜け、続いて、情報分配部41は、新規クライアント追加要求か否かを判断する(S610)。
S610の処理において、新規クライアント追加要求であった場合(S610:YES)、情報分配部41は、要求元となったクライアントのIDをRAM13に記憶させる(S615)。図6に示すように、クライアントである情報処理部43a〜43cには、それぞれユニークなID(図9に示した例では、AP1〜AP3)が付与されており、このIDが第1実施形態の場合と同様に記憶される。そして、S615の処理を終えたら、S605の処理へと戻り、再びS605以降の処理を繰り返す。
一方、上記S610の処理において、新規クライアント追加要求ではなかった場合(S610:NO)、続いて、情報分配部41は、クライアント削除要求か否かを判断する(S620)。
S620の処理において、クライアント削除要求であった場合(S620:YES)、情報分配部41は、要求元となったクライアントに対応するIDを削除する(S625)。また、受信したデバイス情報(バッファ47内に格納されたデバイス情報)の中から、削除対象となったクライアントからのみ要求されていたデバイス情報を削除する(S625)。そして、S625の処理を終えたら、S605の処理へと戻り、再びS605以降の処理を繰り返す。
一方、上記S620の処理において、クライアント削除要求ではなかった場合(S620:NO)、情報分配部41は、新規USTATUS取得コマンド送信要求であるか否かを判断する(S635)。本実施形態においても、第1実施形態と同様、各情報処理部43a〜43cからPJLコマンドを含むコマンド送信要求が送信されてくるが、その中に含まれるPJLコマンドはUSTATUS取得コマンドとなっている。
S635の処理において、新規USTATUS取得コマンド送信要求であった場合(S635:YES)、情報分配部41は、送信要求されたUSTATUS ONコマンドをスプーラ経由でUSB I/F17を通じてデバイス2へ送信するとともに、もしそのPJL USTATUSコマンドがはじめて送られたものであるならば、その送信要求されたPJLコマンドに対応する新規バッファを作成する(S640)。このとき他のクライアントにより既にバッファが作成されていたならば、このS640の処理はスキップされる。なお、S640の処理で作成されたバッファには、後述する常駐スレッド処理により、不定期に何度もデバイス情報が格納されるようになる。そして、S640の処理を終えたら、S605の処理へと戻り、再びS605以降の処理を繰り返す。
一方、S635の処理において、新規USTATUS取得コマンド送信要求ではなかった場合(S635:NO)、USTATUS削除要求であるか否かを判断する(S645)。先に説明した通り、USTATUSは、一度ONコマンドを送信すると、その後は何度でもデバイス情報が返されるため、このデバイス情報をデバイス2が返さないようにするには、OFFコマンドを送信する必要がある。S645の処理は、このOFFコマンドの送信に対応する処理であり、USTATUS削除要求であった場合(S645:YES)、情報分配部41は、それを要求してきたクライアントが最後のクライアントか否かを判断し、もし最後ならば、送信要求されたUSTATUS OFFコマンドをスプーラ経由でUSB I/F17を通じてデバイス2へ送信するとともに、その送信要求されたPJLコマンドに対応するバッファを削除する(S650)。もし他にもそのUSTATUSコマンドを要求しているクライアントがある場合は、これらコマンド送信、バッファ削除の処理(S650の処理)はスキップされる。そして、S650の処理を終えたら、S605の処理へと戻り、再びS605以降の処理を繰り返す。
一方、S645の処理において、USTATUS削除要求ではなかった場合(S645:NO)、クライアントからデバイス情報のリード要求を受けたものと判断する。USTATUS削除要求ではなかったことをもって、リード要求を受けたものと判断できるのは、第1,第2実施例と同様の理由である。この場合、情報分配部41は、要求元となったクライアントから要求されているUSTATUSのリストを取り出して(S655)、そのリストにあるすべてのUSTATUSのバッファの内容をクライアントに送る(S660)。例えば、要求元となったクライアントが図9に示した情報処理部43bである場合、S655の処理では、クライアントから要求されているUSTATUSのリストとして、“USTATUS DEVICE”,“USTATUS PAGE”が取り出され、S660の処理では、“USTATUS DEVICE”,“USTATUS PAGE”に対応するバッファ49a,49vの内容が情報処理部43bに送られることになる。そして、S660の処理を終えたら、S605の処理へと戻り、再びS605以降の処理を繰り返す。
[情報分配部における常駐スレッド処理]
次に、情報分配部41において主処理と並列に実行される常駐スレッド処理について、図11のフローチャートに基づいて説明する。
この処理を開始すると、情報分配部41は、デバイス2よりデバイス情報の読み取りを行う(S705)。ここで、まだデバイス2に対してPJLコマンドが送信されていない場合など、デバイス2側がデバイス情報を送信できる状態にない場合は、S705の処理で読み取り待ちになり、何らかの情報を読み取ったらS705の処理を抜ける。
続いて、情報分配部41は、S705の処理で読み取った情報が、クライアントから送信要求されたコマンドの返答か否かを判断する(S710)。クライアントから送信要求されたコマンドである場合、そのコマンドに対応するバッファが上述したS640の処理により確保されている。したがって、S710の処理では、S640の処理で確保されたバッファに対応するコマンドと、S705の処理で読み取った情報とを対比することにより、所期のデバイス情報であるかどうかを判断することができる。
S710の処理において、クライアントから送信要求されたコマンドの返答であった場合は(S710:YES)、そのデバイス情報を、対応するコマンドのバッファに記憶させる(S715)。なお、S710の処理において、クライアントから送信要求されたコマンドの返答ではなかった場合は(S710:NO)、上記S715の処理をスキップする。
こうして、S710〜S715の処理を終えたら、S705の処理へと戻り、S705以降の処理を繰り返す。
以上のような常駐スレッド処理が情報分配部41において実行されることにより、S705の処理でデバイス2からデバイス情報を読み取る毎に、S710以降の処理が実行され、この処理により、バッファ47には、異なるUSTATUS毎に各USTATUSに対応するデバイス情報が格納されることになる。
[第3実施形態の効果]
以上説明したように、上記第3実施形態においても、デバイス2から一度しか受信できないデバイス情報を情報分配部41が取得して、情報分配部41が異なるUSTATUS毎にデバイス情報をバッファに保存し、そのデバイス情報を複数の情報処理部43a〜43cに提供するので、各情報処理部43a〜43cに適切な情報処理を実施させることができる。
また、上記第3実施形態においても、デバイス2に送信したPJLコマンドに対応するデバイス情報以外の情報が、何らかの原因でデバイス2から取得できてしまった場合、上記S710の処理により、そのような情報を各情報処理部43a〜43cへ提供しないようにしているので、PC1には無駄な情報を各情報処理部43a〜43cへ提供するための負荷(すなわち、S715の処理を実行するための負荷)がかからなくなり、各情報処理部43a〜43cでも無駄な情報を処理するための負荷がかからなくなる。
さらに、上記第3実施形態においても、デバイス2から取得したデバイス情報をバッファ49a〜49cに一旦格納するので、デバイス2からデバイス情報を取得するタイミングとデバイス情報を情報処理部43a〜43cへ提供するタイミングを非同期とすることができ、各情報処理部43a〜43c側それぞれでデバイス情報が必要となったときに、各情報処理部43a〜43cに対してデバイス情報を提供することができる。
また、上記第3実施形態においては、デバイス情報をバッファ47へ格納する際に異なるUSTATUS毎に格納するので、複数の情報処理部43a〜43cが同じUSTATUS取得要求を送信している場合に、同じUSTATUSを複数のバッファに格納しなくてもよく、その分だけRAM13の使用量を削減することができる。
[第4実施形態]
上述の第1実施形態〜第3実施形態では、PC1の利用形態について特に言及しておらず、代表的な利用形態としては、例えば、PC1を単独で利用するような利用形態などを想定できたが、上記PC1は、ターミナルサーバーとして利用した場合に優れた効果を発揮するので、以下、PC1をターミナルサーバーとして利用した実施形態について説明する。
図12(a)は、上述の第1実施形態〜第3実施形態のいずれかで説明したPC1をターミナルサーバーとして利用した場合の概略構成図である。
PC1には、上述の第1実施形態〜第3実施形態と同様、USBインターフェースを介してデバイス2が接続されている。また、上述の第1実施形態〜第3実施形態では言及しなかったが、PC1は、複数のターミナル3a〜3cとネットワーク4を介してデータ通信可能に構成されている。
このようなターミナルサーバーシステムの場合、ターミナル3a〜3cは、単に利用者に入出力インターフェースを提供する装置として機能するので、例えば、ハードディスク装置を持たない安価なPCを、ターミナル3a〜3cとして採用することもできる。一方、PC1には、マルチユーザ機能を備えたOSが搭載され、クライアントである複数のターミナル3a〜3cからの要求に応じて、各種アプリケーションがPC1上において並列に機能する。各ターミナル3a〜3cでの入力操作が行われた場合、その入力データ(例えば、キー入力されたデータ)はネットワーク4を通じてPC1へと伝送され、その入力データに基づく各種処理がPC1上で実行される。そして、その処理結果である出力データ(例えば、画面表示用データ)は、ネットワーク4を通じて各ターミナル3a〜3cへと伝送され、各ターミナル3a〜3cにおいて出力(例えば、画面表示)されることになる。
以上のように構成されたターミナルサーバーシステムにおいて、各ターミナル3a〜3cの利用者は、それぞれがデバイス2の状態を知りたいことがあり、その場合、各ターミナル3a〜3cそれぞれにおいて、ステータスモニターが利用される可能性がある。ターミナルサーバーシステムの場合、各ターミナル3a〜3cそれぞれにおいてステータスモニターが利用されても、ステータスモニターが稼働するのはPC1上となる。そのため、デバイス2は、複数のステータスモニターからデバイス情報の提供を要求される可能性がある。
しかし、デバイス情報は、単にPC1側からの要求に応じて、その時点で最新のデバイス情報をPC1側へ返すだけであり、複数のステータスモニターそれぞれに対して個別にデバイス情報を提供するような仕組みにはなっていない。
そのため、本発明の構成を備えていないターミナルサーバー上で、複数のステータスモニターが稼働した場合、最初にデバイス情報の取得を試みたステータスモニターがデバイス情報を取得してしまうと、後からデバイス情報の取得を試みた他のステータスモニターは、所期のデバイス情報を取得することができない、という問題を招く。
これに対し、上記各実施形態の如く構成されたPC1をターミナルサーバーとして利用すれば、図12(b)に示すように、SYSTEMコンテキスト51において上述の情報分配部41が機能するとともに、ターミナル3a〜3cに対応する各ユーザーコンテキスト52a〜52cにおいて上述の情報処理部43a〜43cに相当するステータスモニターが機能する構成とすることができる。このような構成にすれば、上記各実施形態において説明した通りの作用、効果により、各ステータスモニター(情報処理部43a〜43c)から送信要求されたコマンドに対する応答として返されるデバイス情報が、情報分配部41によって各ステータスモニター(情報処理部43a〜43c)へと送信されるので、最初にデバイス情報の取得を試みたステータスモニターはもちろんのこと、後からデバイス情報の取得を試みた他のステータスモニターも、所期のデバイス情報を取得できるようになる。
また、複数のステータスモニター(情報処理部43a〜43c)から同じコマンドの送信要求があった場合には、最初にデバイス情報の取得を試みたステータスモニターに対して提供したデバイス情報が既にバッファの中に格納されているので、後からデバイス情報の取得を試みた他のステータスモニターに対しては、迅速にデバイス情報を提供することができる。
さらに、上記第2,第3実施形態と同様の構成を備えている場合には、複数のステータスモニター(情報処理部43a〜43c)から同じコマンドの送信要求があった場合でも、情報分配部41ではコマンド毎にバッファが確保されるので、PC1が備えるRAM13の使用量を減らすことができる。
[変形例等]
以上、本発明の実施形態について説明したが、本発明は上記の具体的な一実施形態に限定されず、この他にも種々の形態で実施することができる。
例えば、上記各実施形態においては、上記S215,S510,S710の処理を実行することにより、取得したデバイス情報が、送信したコマンドに対応するものか否かを判断していたが、この判断をすることなく、取得したデバイス情報すべてをそのまま各情報処理部へ送信するように構成してもよい。ただし、この場合は、情報処理部側にとって不要な情報が情報処理部側へ渡る可能性もあるので、情報処理部側でデバイス情報の取捨選択を適切に行うようにする。
また、上記各実施形態においては、情報分配部−情報処理部間のデータ送信方法について特に具体的な言及をしなかったが、任意の方法でプロセス間通信を行えばよく、例えば、共有メモリなどを利用してデータのやり取りを行えばよい。
また、上記第1実施形態においては、S255の処理により、古い情報を捨てるように構成してあったが、古い情報をそのまま残して、取得した最新の情報を捨てるように構成することも可能である。どちらの構成を採用するかは、古い情報と新しい情報のどちらがより重要かを勘案して決めればよい。
さらに、上記各実施形態では、デバイスと接続されるPC、情報分配部としての機能を有するPC、複数の情報処理部としての機能を有するPCが、単一のPC1となっている構成例について説明したが、これらが複数のPCに分散配置され、その複数のPCが協働して上記PC1と同等に機能するように構成されていてもよい。この場合、複数のPCは、ネットワークを介して通信可能に構成され、あるPCに配された手段の出力データが別のPCに配された手段の入力データとなるのであれば、あるPCで得られた出力データをネットワークを介して別のPCへと伝送して、複数のPCを備えたネットワークシステム全体が、上記PC1と同等に機能するように構成する。
より具体的な例を挙げれば、上記PC1にデバイス2を接続するとともに、PC1が複数の情報処理部を備える構成とし、上記PC1が備えていた情報分配部41については、PC1上には設けず、その代わりにPC1とは別のサーバー(以下、情報分配サーバーという)を設け、各情報処理部とデバイスとの間でやり取りされる各種データを、一旦PC1から情報分配サーバーへと転送して、その情報分配サーバーで上記情報分配部41において実行されていた各種処理を実行し、その処理結果を情報分配サーバーからPC1へ戻すように構成してもよい。
第1実施形態において例示したコンピュータとデバイスの概略構成図。 第1実施形態におけるデバイス情報の分配方法を説明するための説明図。 第1実施形態の情報分配部において実行される主処理のフローチャート 第1実施形態の情報分配部において実行される常駐スレッド処理のフローチャート。 第1実施形態の情報処理部で実行されるステータスモニター処理のフローチャート。 第2実施形態におけるデバイス情報の分配方法を説明するための説明図。 第2実施形態の情報分配部において実行される主処理のフローチャート 第2実施形態の情報分配部において実行される常駐スレッド処理のフローチャート。 第3実施形態におけるデバイス情報の分配方法を説明するための説明図。 第3実施形態の情報分配部において実行される主処理のフローチャート 第3実施形態の情報分配部において実行される常駐スレッド処理のフローチャート。 第4実施形態において例示したターミナルサーバーとターミナルの概略構成図。
1・・・パーソナルコンピュータ(PC)、2・・・デバイス、3a〜3c・・・ターミナル、4・・・ネットワーク、11,21・・・CPU、12,22・・・ROM、13,23・・・RAM、14,24・・・ハードディスク装置(HDD)、15・・・操作部、16・・・表示部、17,27・・・USBインターフェース(USB I/F)、25・・・操作キー、26・・・表示パネル、28・・・不揮発性RAM、29・・・印字部、30・・・読み取り部、31・・・モデム、41・・・情報分配部、43a〜43c・・・情報処理部、45a,45b,45c,47,49a,49b,49c・・・バッファ、51・・・SYSTEMコンテキスト、52a〜52c・・・ユーザーコンテキスト。

Claims (3)

  1. 印刷装置に関する情報であるデバイス情報の取得開始を要求されると、当該要求以降は状態変化のたびに前記デバイス情報を提供可能な状態となる一方、前記デバイス情報の取得停止を要求されると、当該要求以降は前記デバイス情報を提供しない状態となる前記印刷装置を対象にして、前記デバイス情報に基づく情報処理を実行する複数の情報処理部と、前記情報処理部それぞれが前記印刷装置からデバイス情報を取得するために利用されるインターフェースと、を備える情報処理装置において、当該情報処理装置が備えるコンピュータを、前記印刷装置から取得した前記デバイス情報を前記複数の情報処理部へと分配する情報分配部として機能させるための情報分配処理プログラムであって、
    前記コンピュータを前記情報分配部として機能させるための処理として、前記コンピュータに、主処理と、常駐処理とを並列に実行させるプログラムとされており、
    前記主処理としては、前記複数の情報処理部のいずれかから前記デバイス情報の取得開始の要求を受信したら、どのデバイス情報の取得開始要求を受けたのかに応じて、初めて取得開始要求を受けたデバイス情報であれば、前記印刷装置に対し前記デバイス情報の取得開始の要求を送信するとともに、当該デバイス情報に対応するデバイス情報用バッファを新たに確保する一方、すでに他の情報処理部から取得開始の要求を受けたことがあるデバイス情報であれば、前記印刷装置に対する前記デバイス情報の取得開始要求の送信、及び前記デバイス情報用バッファの新たな確保を行わず、しかも、前記複数の情報処理部のいずれかから前記デバイス情報の取得停止の要求を受信したら、どのデバイス情報の取得停止要求を受けたのかに応じて、当該デバイス情報の取得停止を要求した情報処理部以外の情報処理部すべてが、当該デバイス情報の取得開始を要求している状態になければ、前記印刷装置に対し前記デバイス情報の取得停止の要求を送信するとともに、当該デバイス情報に対応するデバイス情報用バッファを削除する一方、当該デバイス情報の取得停止を要求した情報処理部以外の情報処理部のいずれかが、当該デバイス情報の取得開始を要求している状態にあれば、前記印刷装置に対する前記デバイス情報の取得停止要求の送信、及び前記デバイス情報用バッファの削除を行わないことにより、どの情報処理部からどのデバイス情報の取得要求を受けたのかを、前記常駐処理から参照可能な記憶領域に記憶する処理、を実行させ、
    前記常駐処理としては、前記印刷装置に対し前記デバイス情報のリード要求を送信し、前記印刷装置から前記デバイス情報が返信されたら、前記主処理で前記記憶領域に記憶させた情報を参照して、返信された前記デバイス情報が、前記複数の情報処理部のいずれかから前記取得開始要求のあった前記デバイス情報かどうかを判断し、前記複数の情報処理部のいずれかから前記取得開始要求のあった前記デバイス情報であった場合には、当該デバイス情報に対応する前記デバイス情報用バッファに記憶する処理、を実行させ、
    さらに、前記主処理としては、前記複数の情報処理部のいずれかからリード要求を受信したら、前記記憶領域に記憶させた情報に基づき、そのリード要求対象に該当する前記デバイス情報を特定し、特定した前記デバイス情報用バッファに記憶されている前記デバイス情報を、前記リード要求の送信元となった前記情報処理部に対し送信する処理、を実行させる
    ことを特徴とする情報分配処理プログラム。
  2. 印刷装置に関する情報であるデバイス情報の取得開始を要求されると、当該要求以降は状態変化のたびに前記デバイス情報を提供可能な状態となる一方、前記デバイス情報の取得停止を要求されると、当該要求以降は前記デバイス情報を提供しない状態となる前記印刷装置を対象にして、前記デバイス情報に基づく情報処理を実行する複数の情報処理部と、前記情報処理部それぞれが前記印刷装置からデバイス情報を取得するために利用されるインターフェースと、を備える情報処理装置であって、
    前記印刷装置から取得した前記デバイス情報を前記複数の情報処理部へと分配する情報分配部を備えており、
    前記情報分配部では、主処理と、常駐処理とが並列に実行されており、
    前記主処理としては、前記複数の情報処理部のいずれかから前記デバイス情報の取得開始の要求を受信したら、どのデバイス情報の取得開始要求を受けたのかに応じて、初めて取得開始要求を受けたデバイス情報であれば、前記印刷装置に対し前記デバイス情報の取得開始の要求を送信するとともに、当該デバイス情報に対応するデバイス情報用バッファを新たに確保する一方、すでに他の情報処理部から取得開始の要求を受けたことがあるデバイス情報であれば、前記印刷装置に対する前記デバイス情報の取得開始要求の送信、及び前記デバイス情報用バッファの新たな確保を行わず、しかも、前記複数の情報処理部のいずれかから前記デバイス情報の取得停止の要求を受信したら、どのデバイス情報の取得停止要求を受けたのかに応じて、当該デバイス情報の取得停止を要求した情報処理部以外の情報処理部すべてが、当該デバイス情報の取得開始を要求している状態になければ、前記印刷装置に対し前記デバイス情報の取得停止の要求を送信するとともに、当該デバイス情報に対応するデバイス情報用バッファを削除する一方、当該デバイス情報の取得停止を要求した情報処理部以外の情報処理部のいずれかが、当該デバイス情報の取得開始を要求している状態にあれば、前記印刷装置に対する前記デバイス情報の取得停止要求の送信、及び前記デバイス情報用バッファの削除を行わないことにより、どの情報処理部からどのデバイス情報の取得要求を受けたのかを、前記常駐処理から参照可能な記憶領域に記憶する処理、が実行され、
    前記常駐処理としては、前記印刷装置に対し前記デバイス情報のリード要求を送信し、前記印刷装置から前記デバイス情報が返信されたら、前記主処理で前記記憶領域に記憶させた情報を参照して、返信された前記デバイス情報が、前記複数の情報処理部のいずれかから前記取得開始要求のあった前記デバイス情報かどうかを判断し、前記複数の情報処理部のいずれかから前記取得開始要求のあった前記デバイス情報であった場合には、当該デバイス情報に対応する前記デバイス情報用バッファに記憶する処理、が実行され、
    さらに、前記主処理としては、前記複数の情報処理部のいずれかからリード要求を受信したら、前記記憶領域に記憶させた情報に基づき、そのリード要求対象に該当する前記デバイス情報を特定し、特定した前記デバイス情報用バッファに記憶されている前記デバイス情報を、前記リード要求の送信元となった前記情報処理部に対し送信する処理、が実行されている
    ことを特徴とする情報処理装置。
  3. 印刷装置に関する情報であるデバイス情報の取得開始を要求されると、当該要求以降は状態変化のたびに前記デバイス情報を提供可能な状態となる一方、前記デバイス情報の取得停止を要求されると、当該要求以降は前記デバイス情報を提供しない状態となる前記印刷装置と、前記印刷装置とデータ通信可能な情報処理装置とを備えるシステムであり、
    前記情報処理装置は、前記デバイス情報に基づく情報処理を実行する複数の情報処理部と、前記情報処理部それぞれが前記印刷装置からデバイス情報を取得するために利用されるインターフェースと、前記印刷装置から取得した前記デバイス情報を前記複数の情報処理部へと分配する情報分配部とを備えており、
    前記情報分配部では、主処理と、常駐処理とが並列に実行されており、
    前記主処理としては、前記複数の情報処理部のいずれかから前記デバイス情報の取得開始の要求を受信したら、どのデバイス情報の取得開始要求を受けたのかに応じて、初めて取得開始要求を受けたデバイス情報であれば、前記印刷装置に対し前記デバイス情報の取得開始の要求を送信するとともに、当該デバイス情報に対応するデバイス情報用バッファを新たに確保する一方、すでに他の情報処理部から取得開始の要求を受けたことがあるデバイス情報であれば、前記印刷装置に対する前記デバイス情報の取得開始要求の送信、及び前記デバイス情報用バッファの新たな確保を行わず、しかも、前記複数の情報処理部のいずれかから前記デバイス情報の取得停止の要求を受信したら、どのデバイス情報の取得停止要求を受けたのかに応じて、当該デバイス情報の取得停止を要求した情報処理部以外の情報処理部すべてが、当該デバイス情報の取得開始を要求している状態になければ、前記印刷装置に対し前記デバイス情報の取得停止の要求を送信するとともに、当該デバイス情報に対応するデバイス情報用バッファを削除する一方、当該デバイス情報の取得停止を要求した情報処理部以外の情報処理部のいずれかが、当該デバイス情報の取得開始を要求している状態にあれば、前記印刷装置に対する前記デバイス情報の取得停止要求の送信、及び前記デバイス情報用バッファの削除を行わないことにより、どの情報処理部からどのデバイス情報の取得要求を受けたのかを、前記常駐処理から参照可能な記憶領域に記憶する処理、が実行され、
    前記常駐処理としては、前記印刷装置に対し前記デバイス情報のリード要求を送信し、前記印刷装置から前記デバイス情報が返信されたら、前記主処理で前記記憶領域に記憶させた情報を参照して、返信された前記デバイス情報が、前記複数の情報処理部のいずれかから前記取得開始要求のあった前記デバイス情報かどうかを判断し、前記複数の情報処理部のいずれかから前記取得開始要求のあった前記デバイス情報であった場合には、当該デバイス情報に対応する前記デバイス情報用バッファに記憶する処理、が実行され、
    さらに、前記主処理としては、前記複数の情報処理部のいずれかからリード要求を受信したら、前記記憶領域に記憶させた情報に基づき、そのリード要求対象に該当する前記デバイス情報を特定し、特定した前記デバイス情報用バッファに記憶されている前記デバイス情報を、前記リード要求の送信元となった前記情報処理部に対し送信する処理、が実行されている
    ことを特徴とする情報分配処理システム。
JP2005282342A 2005-09-28 2005-09-28 情報分配処理プログラム、情報処理装置、および情報分配処理システム Expired - Fee Related JP4742784B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005282342A JP4742784B2 (ja) 2005-09-28 2005-09-28 情報分配処理プログラム、情報処理装置、および情報分配処理システム
US11/528,386 US9268511B2 (en) 2005-09-28 2006-09-28 Information distribution processing program, computer, information distribution processing method, and information distribution processing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005282342A JP4742784B2 (ja) 2005-09-28 2005-09-28 情報分配処理プログラム、情報処理装置、および情報分配処理システム

Publications (2)

Publication Number Publication Date
JP2007094693A JP2007094693A (ja) 2007-04-12
JP4742784B2 true JP4742784B2 (ja) 2011-08-10

Family

ID=37949420

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005282342A Expired - Fee Related JP4742784B2 (ja) 2005-09-28 2005-09-28 情報分配処理プログラム、情報処理装置、および情報分配処理システム

Country Status (2)

Country Link
US (1) US9268511B2 (ja)
JP (1) JP4742784B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1326417B1 (en) * 2001-12-28 2012-04-18 Canon Kabushiki Kaisha Internal interface in image processing apparatus and control thereof
JP2007156512A (ja) * 2005-11-30 2007-06-21 Brother Ind Ltd 状態情報取得処理プログラム、状態情報取得装置、および状態情報取得システム
US7802114B2 (en) * 2007-03-16 2010-09-21 Spansion Llc State change sensing
WO2012124017A1 (ja) * 2011-03-11 2012-09-20 富士通株式会社 コマンド制御方法およびコマンド制御プログラム
JP5938968B2 (ja) * 2012-03-19 2016-06-22 富士通株式会社 情報処理装置、情報処理プログラム及び情報処理方法
JP6029360B2 (ja) * 2012-07-09 2016-11-24 キヤノン株式会社 情報処理方法およびプログラム

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07143146A (ja) * 1993-06-25 1995-06-02 Matsushita Electric Works Ltd 通信処理方式
JPH10232875A (ja) * 1997-02-19 1998-09-02 Hitachi Ltd データベース管理方法および並列データベース管理システム
JP3950575B2 (ja) 1999-04-09 2007-08-01 キヤノン株式会社 データ処理装置およびデータ処理方法およびコンピュータが読み出し可能なプログラムを格納した記憶媒体
US6785748B2 (en) * 2000-07-18 2004-08-31 Canon Kabushiki Kaisha Image communication apparatus wirelessly connectable to other apparatuses, system having the image communication apparatus, and method for controlling the same
US7310158B2 (en) * 2000-09-01 2007-12-18 Canon Kabushiki Kaisha Communication apparatus capable of communication with other apparatuses through wireless communication, communication system having the same communication apparatus, and method for controlling the same
JP2002175208A (ja) * 2000-12-07 2002-06-21 Toshiba Corp デジタル映像・音声データの配信システム、ビデオサーバ及びバッファの制御方法
TW578043B (en) * 2001-06-18 2004-03-01 Oqo Inc Modular computing system
EP1308694B1 (en) * 2001-11-01 2015-04-22 Nissan Motor Company Limited Navigation system, data server, travelling route establishing method and information providing method
US6954839B2 (en) * 2002-03-13 2005-10-11 Hitachi, Ltd. Computer system
US20060129721A1 (en) * 2002-06-18 2006-06-15 Betts-Lacroix Jonathan Modular computing system
US20030231168A1 (en) * 2002-06-18 2003-12-18 Jory Bell Component for use as a portable computing device and pointing device in a modular computing system
US7475244B2 (en) * 2002-11-05 2009-01-06 Kabushiki Kaisha Toshiba Wireless communication device, portable terminal, communication control program and communication system
JP2004180092A (ja) * 2002-11-28 2004-06-24 Sony Corp 情報処理装置および情報処理方法、並びにコンピュータ・プログラム
US7054965B2 (en) * 2003-03-18 2006-05-30 Oqo Incorporated Component for use as a portable computing device and pointing device
JP4297747B2 (ja) * 2003-08-06 2009-07-15 株式会社日立製作所 ストレージ装置
US8170602B2 (en) * 2003-10-17 2012-05-01 Olympus Corporation Information acquisition device, information providing device, and information providing system
JP4405793B2 (ja) * 2003-12-12 2010-01-27 キヤノン株式会社 文書管理システム及びその制御方法並びに記録媒体
WO2005067604A2 (en) * 2004-01-05 2005-07-28 Oqo Incorporated Docking station for mobile computing device
JP4429763B2 (ja) * 2004-02-26 2010-03-10 株式会社日立製作所 情報処理装置の制御方法、情報処理装置、及びストレージ装置の制御方法
JP2006079280A (ja) * 2004-09-08 2006-03-23 Sony Corp 情報処理システムおよび方法、情報処理装置および方法、並びにプログラム
US7693994B2 (en) * 2004-09-17 2010-04-06 Ricoh Company, Ltd. Intermediary apparatus, distributed processing system, data-transfer method, program and recording medium
US7587496B2 (en) * 2004-09-17 2009-09-08 Ricoh Company, Ltd. Transfer device, distributed processing system, transfer device control method, program, and recording medium
JP2006146713A (ja) * 2004-11-22 2006-06-08 Fujitsu Ltd ディスクアレイ装置、情報処理装置およびデータ管理システム並びにターゲット側からイニシエータ側へのコマンド発行方法およびコマンド発行プログラム
US20070208892A1 (en) * 2006-03-02 2007-09-06 Betts-Lacroix Jonathan Modular computing system

Also Published As

Publication number Publication date
US9268511B2 (en) 2016-02-23
JP2007094693A (ja) 2007-04-12
US20070088869A1 (en) 2007-04-19

Similar Documents

Publication Publication Date Title
US20100208298A1 (en) Image forming apparatus
JP7355147B2 (ja) アプリケーションプログラム
JP5321929B2 (ja) ユニバーサルデバイスドライバ、デバイス制御プログラム、情報処理装置、サーバ装置、及び、方法
JP2004326603A (ja) 印刷制御システム、印刷制御装置、機能提供装置、印刷機能表示方法、コンピュータプログラム、及びコンピュータ読み取り可能な記録媒体
JP2011138396A (ja) 情報処理装置、その方法及びプログラム
US7746493B2 (en) Job management apparatus and method of recognizing job completion, and control program used therewith
JP4742784B2 (ja) 情報分配処理プログラム、情報処理装置、および情報分配処理システム
US9377981B2 (en) Image forming system that sends schedule information of image forming apparatus over network
JP5879987B2 (ja) 情報処理装置、情報処理装置の制御方法、制御プログラム及び画像形成システム
JP2016083870A (ja) 画像形成装置及びその制御方法、システム
JP5034993B2 (ja) 情報処理装置、および情報処理方法
JP2014172394A (ja) 印刷装置、プログラム及び印刷システム
JP4455523B2 (ja) 情報処理システム、情報処理方法、プログラム及び記憶媒体
JP2021071879A (ja) 印刷システム、サーバ、及び印刷方法
JP4886501B2 (ja) 印刷装置、印刷制御方法、及びプログラム
JP5450678B2 (ja) ネットワークにおけるイベント通知システム
JP2007072711A (ja) オンデマンド印刷監視システム、オンデマンド印刷監視方法、オンデマンド印刷監視プログラムおよびオンデマンド印刷装置
US10768877B2 (en) Print job transmission device, printing system, and print job transmission method
JP4720708B2 (ja) 印刷装置及び印刷方法
JP4600402B2 (ja) 情報分配システム、プログラム、および情報分配方法
JP2011253351A (ja) 印刷状態監視システム、情報処理装置、画像形成装置、印刷状態監視方法、プログラムおよび記録媒体
JP2009223671A (ja) 印刷システムおよび印刷装置
JP2005165391A (ja) 画像形成装置情報管理システム、および画像形成装置情報管理システム用のプログラム
US20200089453A1 (en) Print job transmitting apparatus, print system
JP5983814B2 (ja) 印刷状態監視システム、情報処理装置、画像形成装置、印刷状態監視方法、プログラムおよび記録媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080325

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100514

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100518

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100716

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101012

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101213

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: 20110412

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110425

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140520

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4742784

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees