(58)【調査した分野】(Int.Cl.,DB名)
前記情報要求は、SNMP(Simple Network Management Protocolの略)に従ったOID(Object IDの略)を含むGetリクエストであり、
前記OIDは、前記対象装置の前記情報を識別する情報識別子であり、
前記第1の送信部は、前記Getリクエストに対する応答として、前記SNMPに従ったGetレスポンスであって、前記OIDによって識別される前記対象装置の前記情報として、前記対象装置から受信された前記第1の情報を含む前記Getレスポンスを前記外部装置に送信し、
前記第2の送信部は、前記Getリクエストに対する応答として、前記対象装置から受信されていない前記第2の情報を含む前記Getレスポンスを前記外部装置に送信する、請求項1から7のいずれか一項に記載のコンピュータプログラム。
【発明を実施するための形態】
【0010】
(通信システム2の構成;
図1)
図1に示されるように、通信システム2は、PC(Personal Computerの略)10と、プリンタ70と、管理装置60と、を備える。PC10と管理装置60とプリンタ70とはLAN(Local Area Networkの略)4に接続されている。従って、各デバイス10,60,70は、LAN4を介して、相互に通信可能である。本実施例では、プリンタ50とプリンタドライバ(以下では単に「ドライバ」と記載する)42とを含むプリンタセットが、LAN4の管理者によって新たに購入される状況を想定している。プリンタセット内のプリンタ50は、USB(Universal Serial Busの略)ケーブルを介してPC10に接続され、ドライバ42は、PC10にインストールされる。プリンタ50は、PC10に接続される場合に、USBケーブルを介してPC10と通信可能となる。
【0011】
プリンタ50は、ベンダV1によって提供されるプリンタであり、モデル名「L8900CDW」とシリアル番号「XXX12345678」とを有する。プリンタ50は、USBインターフェース(図示省略)を備えるが、LAN4に接続するためのネットワークインターフェースを備えない。以下では、インターフェースのことを「I/F」と記載する。プリンタ50はネットワークI/Fを備えないので、その構成を簡易化することができる。
【0012】
プリンタ70は、ベンダV1とは異なるベンダV2によって提供されるプリンタであり、モデル名「L9000CDW」とシリアル番号「YYY12345678」とを有する。プリンタ70は、LAN4に接続するためのネットワークI/F(図示省略)を備える。そして、当該ネットワークI/Fは、MACアドレス「def」を有する。
【0013】
管理装置60は、PC、サーバ等のデバイスであり、各プリンタ50,70の情報(例えば、プリンタの現在の動作状態を示す情報)を管理する。具体的には、管理装置60は、LAN4を介して、SNMP(Simple Network Management Protocolの略)に従った通信をプリンタ70と実行して、プリンタ70から情報を受信して記憶する。即ち、管理装置60がSNMPマネージャとして機能し、プリンタ70がSNMPエージェントとして機能する。しかしながら、管理装置60は、LAN4を介してプリンタ50と通信不可能であるので、プリンタ50から情報を受信することができない。そこで、本実施例では、PC10がプリンタ50から情報を受信して記憶しておき、管理装置60は、LAN4を介して、SNMPに従った通信をPC10と実行して、PC10からプリンタ50の情報を受信する。
【0014】
例えば、管理装置60が、SNMPに従った通信ではなく、ベンダV1によって開発された独自プロトコルに従った通信をPC10と実行して、PC10からプリンタ50の情報を受信するという比較例の構成を想定する。この場合、ベンダV2によって提供されるプリンタ70は、ベンダV1の独自プロトコルに従った通信を実行することができない。従って、管理装置60は、独自プロトコルに従った通信をプリンタ70と実行することができず、この結果、プリンタ70から情報を受信することができない。これに対し、本実施例では、管理装置60は、多くのプリンタが利用可能であるSNMPを利用するので、プリンタ70から情報を適切に受信して管理することができる。
【0015】
(PC10の構成)
PC10は、据置型のPCである。PC10は、ユーザ名「Suzuki」を有するユーザによって利用され、デバイス名「computer10」を有する。PC10は、操作部12と、表示部14と、USBI/F16と、ネットワークI/F18と、制御部30と、を備える。各部12〜30は、バス線(符号省略)に接続されている。なお、変形例では、PC10は、携帯電話(例えばスマートフォン)、PDA、ノートPC、タブレットPC等の可搬型の端末装置であってもよい。
【0016】
操作部12は、複数のキーを備える。ユーザは、操作部12を操作することによって、様々な指示をPC10に入力することができる。表示部14は、様々な情報を表示するためのディスプレイである。USBI/F16は、USBケーブルを介して、プリンタ50に接続するためのI/Fである。ネットワークI/F18は、IP(Internet Protocolの略)に従った通信を実行するためのI/Fであり、LAN4に接続されている。ネットワークI/Fは、MACアドレス「abc」を有する。LAN4は、有線LANでもよいし、無線LANでもよい。
【0017】
制御部30は、CPU32とメモリ34とを備える。CPU32は、メモリ34に格納されているプログラム36,38に従って、様々な処理を実行する。メモリ34は、揮発性メモリ、不揮発性メモリ等によって構成される。
【0018】
OS(Operating Systemの略)プログラム36(以下では「OS36」と呼ぶ)は、PC10の基本的な動作を実現するためのプログラムであり、印刷スプーラ37を含む。印刷スプーラ37は、プリンタ50が解釈可能な印刷スクリプトであるPJL(Printer Job Languageの略)によって記述された各コマンドを記憶可能であり、各コマンドを記憶した順に、USBI/F16を介して各コマンドをプリンタ50に順次送信するために用いられる。
【0019】
プリンタアプリケーション38(以下では「アプリ38」と呼ぶ)は、プリンタ50のベンダによって提供される。アプリ38は、例えば、プリンタ50のベンダによって提供されるインターネット上のサーバからPC10にインストールされてもよいし、プリンタ50と共に出荷されるメディアからPC10にインストールされてもよい。アプリ38は、プリンタ50の情報を管理装置60に送信するための処理を実行するアプリケーションであり、PJLによって記述されたコマンドを印刷スプーラ37に記憶する。当該コマンドは、PC10へのプリンタ50の情報の送信をプリンタ50に要求するコマンドである。以下では、情報の送信をプリンタ50に要求するコマンドのことを「PJLコマンド」と呼ぶ。また、アプリ38は、MIB値リスト40をメモリ34内に実現する。
【0020】
また、プリンタセットがLAN4の管理者によって新たに購入され、プリンタ50がUSBケーブルを介してPC10に接続される際に、ドライバ42がPC10にインストールされる。この場合、メモリ34は、ドライバ42も記憶する。ドライバ42は、印刷機能をプリンタ50に実行させるためのプログラムである。
【0021】
(MIB値リスト40の内容;
図2)
続いて、
図2を参照して、MIB値リスト40について説明する。MIB値リスト40は、プリンタ50の情報の名称(即ちName)と、SNMPに従った情報識別子であるOID(Object IDの略)と、情報の送信をプリンタ50に要求するためのPJLコマンドと、MIB(Management Information Baseの略)値と、ダミー値と、を対応付けて記憶している。
【0022】
本実施例では、プリンタ50の情報として、以下の8個の情報を想定している。モデル名は、プリンタ50のモデルを示す名称である。MACアドレスは、プリンタ50のMACアドレスである。連絡先ユーザは、プリンタ50(即ちLAN4)の管理者の名称である。設置場所は、プリンタ50が設置されている場所である。シリアル番号は、プリンタ50に割り当てられるデバイス番号である。ステータスは、プリンタ50の現在の動作状態(例えば、印刷実行中状態、アイドル状態等)である。消耗品型番は、プリンタ50に装着されている消耗品カートリッジの種類を示す番号である。消耗品残量は、プリンタ50に装着されている消耗品カートリッジ内の消耗品の残量である。
【0023】
OID及びMIB値について説明する。各プリンタ50,70は、MIBのツリー構造を利用して、モデル名、シリアル番号、ステータス(例えば印刷実行中、待機中)等の複数個の情報を記憶している。本実施例では、プリンタの各情報を識別する識別子のことを「OID」と呼び、OIDによって識別される情報を示す値のことを「MIB値」と呼ぶ。
【0024】
PJLコマンドは、対応するOIDによって識別されるMIB値の送信をプリンタ50に要求するコマンドである。例えば、OID「X1」に対応するPJLコマンド「@PJL MODELNAME」は、プリンタ50のモデル名を示すMIB値の送信をプリンタ50に要求するコマンドである。
【0025】
MIB値リスト40内の各情報(即ち、Name、OID、PJLコマンド、ダミー値)は、アプリ38がPC10にインストールされる際に、メモリ34に記憶される。ただし、MIB値の欄は、アプリ38がPC10にインストールされる際には、空の状態であり、プリンタ50から各MIB値が受信される際に、各MIB値を記憶する。
【0026】
ダミー値は、MIB値リスト40内のMIB値の欄が空である場合に、管理装置60に送信されるべき情報である。ダミー値の欄は、アプリ38がPC10にインストールされる際に、各ダミー値を記憶する。各ダミー値は、アプリ38がPC10にインストールされる前からPC10に予め記憶されているデータ(即ち、ユーザ名「Suzuki」、デバイス名「computer10」、及び、MACアドレス「abc」)を用いて得られる4個の特有値と、アプリ38において予め決められている4個の所定値と、を含む。
【0027】
CPU32は、アプリ38に従って、4個の特有値を以下のようにしてMIB値リスト40に記述する。CPU32は、PC10のMACアドレス「abc」を取得し、取得済みの値「abc」をName「MACアドレス」に対応するダミー値として記述する。CPU32は、PC10のユーザ名「Suzuki」を取得し、取得済みの値「Suzuki」をName「連絡先ユーザ」に対応するダミー値として記述する。CPU32は、PC10のデバイス名「Computer10」を取得し、取得済みの値「Computer10」をName「設置場所」に対応するダミー値として記述する。また、CPU32は、PC10のMACアドレス「abc」を取得し、取得済みの値「abc」に所定文字列「PC」が付加された文字列「abcPC」を生成し、当該文字列「abcPC」をName「シリアル番号」に対応するダミー値として記述する。PC10のMACアドレス「abc」はユニークな値であるので、それに所定文字列「PC」が付加された文字列「abcPC」もユニークな文字列である。このために、Name「シリアル番号」に対応するダミー値としてユニークな文字列を割り当てることができる。上記のように、4個の特有値のそれぞれは、PC10に予め記憶されているデータを用いて得られる情報であるので、PC10を特定可能な情報である。
【0028】
続いて、4個の所定値について説明する。4個の所定値は、Name「モデル名」に対応するダミー値「Device Not Ready」と、Name「ステータス」に対応するダミー値「0」と、Name「消耗品型番」に対応するダミー値「0」と、Name「消耗品残量」に対応するダミー値「100」と、を含む。ダミー値「Device Not Ready」は、プリンタ50がまだ準備されていないこと、即ち、プリンタ50がUSBI/F16を介してPC10に接続された実績がないことを示す文字列である。なお、モデル名に対応するダミー値は、文字列「Device Not Ready」に限られず、プリンタ50がPC10に接続された実績がないことを示す他の文字列(例えば「Printer Not Available」等)であってもよい。Name「ステータス」に対応するダミー値「0」は、プリンタ50のステータスを示す予め決められている複数個の値(例えば「1000」〜「1010」の10個の値)とは異なる値である。Name「消耗品型番」に対応するダミー値「0」は、プリンタ50に装着され得る複数種の消耗品カートリッジを示す予め決められている複数個の値(例えば「1」〜「3」の3個)とは異なる値である。Name「消耗品残量」に対応するダミー値「100」は、消耗品の残量が100%であることを示す値である。
【0029】
(本実施例の概要;
図3)
続いて、
図3を参照して、プリンタ50がPC10に接続された状況で実現される本実施例の概略を説明する。(1)PC10は、MIB値リスト40内の各PJLコマンドを含む印刷ジョブを印刷スプーラ37に記憶する。これにより、(2)印刷スプーラ37は、USBI/F16を介して、各PJLコマンドが記憶された順に各PJLコマンドをプリンタ50に送信する。(3)PC10は、各PJLコマンドがプリンタ50に送信されることに応じて、プリンタ50から、USBI/F16を介して、各PJLコマンドに対応する各MIB値を受信する。そして、PC10は、各MIB値をMIB値リスト40に記憶する。
【0030】
その後、(4)PC10は、管理装置60から、ネットワークI/F18を介して、SNMPに従ったGetリクエストを受信する。Getリクエストは、各OIDを含む。そして、(5)PC10は、MIB値リスト40から、Getリクエストに含まれる各OIDに対応する各MIB値を特定し、特定済みの各MIB値を含むGetレスポンスを管理装置60に送信する。
【0031】
上述した各処理が実行されるので、管理装置60は、プリンタ50との通信を実行不可能であるにも関わらず、PC10からプリンタ50の情報を受信して管理することができる。なお、管理装置60は、上記の(4)において、各OIDを含むGetリクエストをLAN4内のプリンタ70にも送信し、上記の(5)において、プリンタ70からGetレスポンスを受信する。この結果、管理装置60において各プリンタ50,70の情報が表示されるので、管理装置60のユーザ(即ちLAN4の管理者)は、各プリンタ50,70の情報を知ることができる。
【0032】
ここで、プリンタ50がPC10に接続される前の状況を想定する。そして、PC10のMIB値リスト40内に各ダミー値が記憶されていない比較例を想定する。比較例では、PC10は、プリンタ50がPC10に接続された実績がないので、プリンタ50から各MIB値を受信しない。この場合、PC10は、管理装置60からGetリクエストを受信すると、各MIB値が記憶されていないことを示す文字列「No Such」を含むGetレスポンスを管理装置60に送信する。従って、管理装置60においてプリンタ70の情報は表示されるが、他の情報は表示されない。このために、管理装置60のユーザは、プリンタ50がPC10に接続された実績がないことを知ることができない。本実施例では、以下の
図4〜
図8に示す処理を実行することによって、プリンタ50がPC10に接続された実績がないことを管理装置60のユーザに認識させ、管理装置60のユーザがプリンタ50をPC10に接続させることを実現する。
【0033】
(PC10の取得処理;
図4)
続いて、
図4を参照して、PC10のCPU32がアプリ38に従って実行する取得処理を説明する。取得処理は、PC10がプリンタ50からMIB値を受信するための処理である。取得処理は、PC10においてアプリ38が起動されると開始される。以下では、CPU32ではなくアプリ38を主体として
図4の各処理の内容を説明する。この点は後述の
図5でも同様である。
【0034】
S5では、アプリ38は、所定タイミングが到来することを監視する。所定タイミングは、1日のうちの予め決められている1回又は2回以上の時刻であり、例えば、夜間帯又は早朝帯のようにプリンタ50が利用される頻度が少ないタイミングに設定されることが好ましい。CPU32は、所定タイミングが到来する場合(S5でYES)に、S10に進む。
【0035】
S10では、アプリ38は、ドライバ42がPC10にインストール済みであるのか否かを判断する。具体的には、アプリ38は、メモリ34内にドライバ42が記憶されているのか否かをOS36に問い合わせる。OS36は、アプリ38から問い合わせを受け付ける場合に、メモリ34を参照して、ドライバ42が記憶されているのか否かを示す応答をアプリ38に供給する。アプリ38は、当該応答が、ドライバ42が記憶されていることを示す場合に、S10でYESと判断して、S15に進む。一方、アプリ38は、当該応答が、ドライバ42が記憶されていないことを示す場合に、S10でNOと判断して、S5に進む。
【0036】
ここで、図示省略しているが、アプリ38は、プリンタ50がPC10に接続されてドライバ42がPC10に新たにインストールされる際に、上記の
図3の(1)〜(3)の処理を実行して、各MIB値をMIB値リスト40に記憶する。即ち、S10でYESと判断される場合は、MIB値リスト40に各MIB値が記憶されている状態であり、S10でNOと判断される場合は、MIB値リスト40に各MIB値が記憶されていない状態である。
【0037】
S15では、アプリ38は、プリンタ50がUSBI/F16を介してPC10に現在接続されているのか否かを判断する。具体的には、アプリ38は、USBI/F16を介して接続確認をプリンタ50に送信することを試みる。アプリ38は、プリンタ50からUSBI/F16を介して接続応答を受信する場合に、S15でYESと判断してS20に進み、プリンタ50から接続応答を受信しない場合に、S15でNOと判断してS35に進む。
【0038】
S20では、アプリ38は、MIB値リスト40内の全てのPJLコマンドを含む印刷ジョブを生成して、生成済みの印刷ジョブを印刷スプーラ37に記憶する。この結果、OS36は、USBI/F16を介して、印刷スプーラ37内の各PJLコマンドを含む印刷ジョブをプリンタ50に送信する。
【0039】
S25では、アプリ38は、プリンタ50からUSBI/F16を介して各PJLコマンドに対応する各MIB値を受信することを監視する。アプリ38は、プリンタ50から各MIB値を受信する場合(S25でYES)に、S30に進む。
【0040】
S30では、アプリ38は、記憶済みの各MIB値に代えて、受信済みの各MIB値をMIB値リスト40に記憶する。これにより、
図2内の下の表に示されるように、MIB値リスト40には各MIB値が記憶される。なお、Name「MACアドレス」に対応するMIB値として「NONE」が記憶される。プリンタ50がネットワークI/Fを備えずMACアドレスを有さないからである。S30が終了すると、S5に戻る。
【0041】
S35では、アプリ38は、MIB値リスト40内のName「モデル名」に対応するMIB値が、プリンタ50がPC10に現在接続されていないことを示す文字列「Unconnected」を含むのか否かを判断する。アプリ38は、Name「モデル名」に対応するMIB値が文字列「Unconnected」を含むと判断する場合、即ち、後述のS40が実行された後にプリンタ50がPC10に接続されていない状態が継続していることに起因してS15でNOと判断される場合には、S35でYESと判断して、S5に戻る。一方、アプリ38は、Name「モデル名」に対応するMIB値が文字列「Unconnected」を含まないと判断する場合、即ち、S30が実行された後にプリンタ50がPC10に接続されていない状態に変化したことに起因してS15でNOと判断される場合には、S35でNOと判断して、S40に進む。
【0042】
S40では、アプリ38は、文字列「Unconnected」に現在時刻を示す時刻情報(time)を付加することによって、文字列「Unconnected+time」を生成する。そして、アプリ38は、Name「モデル名」に対応するMIB値として、生成済みの「Unconnected+time」を記憶する。S40が終了すると、S5に戻る。
【0043】
(PC10の応答処理;
図5)
続いて、
図5を参照して、CPU32がアプリ38に従って実行する応答処理を説明する。応答処理は、管理装置60から受信されるGetリクエストに対する応答を実行する処理であり、PC10においてアプリ38が起動されると開始される。
【0044】
S100では、アプリ38は、管理装置60から、ネットワークI/F18を介して、1個以上のOIDを含むGetリクエストを受信することを監視する。アプリ38は、管理装置60からGetリクエストを受信する場合(S100でYES)に、S105に進む。
【0045】
S105は、
図4のS10と同様である。アプリ38は、ドライバ42がPC10にインストール済みである場合、即ち、MIB値リスト40内に各MIB値が記憶されている場合に、S105でYESと判断して、S120に進む。一方、アプリ38は、ドライバ42がPC10にインストール済みでない場合、即ち、MIB値リスト40内に各MIB値が記憶されていない場合に、S105でNOと判断して、S110に進む。
【0046】
S110では、アプリ38は、MIB値リスト40から、Getリクエスト内の1個以上のOIDに対応する1個以上のダミー値、即ち、プリンタ50から受信されていない1個以上のダミー値を取得する。
【0047】
S115では、アプリ38は、ネットワークI/F18を介して、取得済みの1個以上のダミー値を含むGetレスポンスを管理装置60に送信する。S115が終了すると、S100に戻る。
【0048】
S120では、アプリ38は、MIB値リスト40から、Getリクエスト内の1個以上のOIDに対応する1個以上のMIB値を特定する。
【0049】
S125は、
図4のS15と同様である。アプリ38は、プリンタ50から接続応答が受信される場合(S125でYES)に、S130に進み、プリンタ50から接続応答が受信されない場合(S125でNO)に、S140に進む。
【0050】
S130では、アプリ38は、ネットワークI/F18を介して、取得済みの1個以上のMIB値を含むGetレスポンスを管理装置60に送信する。S130が終了すると、S100に戻る。
【0051】
S140では、アプリ38は、取得済みの1個以上のMIB値がName「ステータス」に対応するMIB値を含むのか否かを判断する。アプリ38は、1個以上のMIB値がName「ステータス」に対応するMIB値を含むと判断する場合に、S140でYESと判断して、S145に進む。一方、アプリ38は、1個以上のMIB値がName「ステータス」に対応するMIB値を含まないと判断する場合に、S140でNOと判断して、S150に進む。
【0052】
S145では、アプリ38は、取得済みの1個以上のMIB値のうち、Name「ステータス」に対応するMIB値を所定値「−1」に変更する。所定値「−1」は、プリンタ50のステータスを示す予め決められている複数個の値(例えば「1000」〜「1010」の10個の値)とは異なる値である。また、所定値「−1」は、Name「ステータス」に対応するダミー値「0」とは異なる値である。
【0053】
S150では、アプリ38は、ネットワークI/F18を介して、Getレスポンスを管理装置60に送信する。S140でNOを経て実行されるS150では、アプリ38は、S120で取得された全てのMIB値を含むGetレスポンスを管理装置60に送信する。また、S140でYES及びS145を経て実行されるS150では、アプリ38は、S120で取得されたName「ステータス」に対応するMIB値を管理装置60に送信せずに、S120で取得された他のMIB値と、S145で変更された所定値「−1」と、を含むGetレスポンスを管理装置60に送信する。S150が終了すると、S100に戻る。
【0054】
(具体的なケース;
図6〜
図8)
続いて、
図6〜
図8を参照して、
図4及び
図5の処理によって実現される具体的なケースを説明する。まず、
図6を参照して、PC10にドライバ42がインストール済みでない場合、即ち、プリンタ50がPC10に接続された実績がない場合の処理を説明する。
【0055】
T5では、PC10(即ちアプリ38)は、管理装置60からGetリクエストを受信する(
図5のS100でYES)。当該Getリクエストは、8個のOID「X1」〜「X8」を含む。PC10は、ドライバ42がインストール済みでないと判断する(S105でNO)。この場合、PC10は、T7において、MIB値リスト40から8個のOIDに関連付けられている8個のダミー値「Device Not Ready」等を取得し(S110)、T10において、取得済みの8個のダミー値を含むGetレスポンスを管理装置60に送信する(S115)。
【0056】
図示省略しているが、管理装置60は、8個のOID「X1」〜「X8」を含むGetリクエストをプリンタ70に送信して、プリンタ70から8個のOIDによって識別される8個のMIB値「L9000CDW」等を受信している。この結果、T20では、管理装置60において、デバイスリストが表示される。デバイスリストは、PC10から送信された8個のダミー値と、プリンタ70から送信された8個のMIB値と、を含む。
【0057】
デバイスリストは、モデル名に対応するダミー値「Device Not Ready」を含む。このために、管理装置60のユーザは、あるプリンタ(即ち本実施例ではプリンタ50)がPC10に接続された実績がないことを知ることができる。特に、デバイスリストでは、モデル名を示す情報が先頭(即ち最も左側)に記述されるので、ユーザは、デバイスリスト内から「Device Not Ready」を見つけやすい。このために、ユーザは、プリンタ50がPC10に接続された実績がないことを容易に知ることができる。
【0058】
また、デバイスリストは、MACアドレスに対応するダミー値「abc」を含む。このために、ユーザは、「abc」によって識別されるPC10にプリンタ50が接続された実績がないことを知ることができる。デバイスリストは、さらに、連絡先ユーザに対応するダミー値「Suzuki」を含む。このために、ユーザは、「Suzuki」によって利用されるPC10にプリンタ50が接続された実績がないことを知ることができる。デバイスリストは、さらに、設置場所に対応するダミー値「Computer10」を含む。このために、ユーザは、「Computer10」によって識別されるPC10にプリンタ50が接続された実績がないことを知ることができる。デバイスリストは、さらに、シリアル番号に対応するダミー値「abcPC」を含む。このために、ユーザは、「abcPC」を見ることによって、MACアドレス「abc」を有するPC10を特定することができ、当該PC10にプリンタ50が接続された実績がないことを知ることができる。
【0059】
上述したように、ユーザは、デバイスリストを見ることによって、プリンタ50がPC10に接続された実績がないことを知ることができる。従って、ユーザは、プリンタ50をPC10に接続させるべきであることを知ることができ、プリンタ50を新たに購入した後に、プリンタ50をPC10に適切に接続させることができる。
【0060】
続いて、
図7を参照して、PC10にドライバ42がインストール済みであり、かつ、プリンタ50がPC10に接続されている場合の処理を説明する。例えば、
図6の処理の後に、プリンタ50がPC10に接続されて、ドライバ42がPC10にインストールされる場合に、
図7の処理が実行される。
【0061】
PC10(即ちアプリ38)は、T100において、所定タイミングが到来することに応じて(
図4のS5でYES)、ドライバ42がインストール済みであると判断する(S10でYES)。この場合、PC10は、T102において、接続確認をプリンタ50に送信し、T104において、プリンタ50から接続応答を受信する(S15でYES)。そして、PC10は、T106において、MIB値リスト40内の8個のPJLコマンド(「@PJL MODELNAME」、「@PJL MACADDRESS」等)を含む印刷ジョブJ1を生成して、印刷ジョブJ1を印刷スプーラ37に記憶する(S20)。
【0062】
次いで、PC10(即ちOS36)は、印刷ジョブJ1内の各PJLコマンドをプリンタ50に順次送信する。この結果、PC10(即ちアプリ38)は、プリンタ50から、各PJLコマンドに対応する各MIB値を受信する(S25でYES)。具体的には、PC10は、T110において、PJLコマンド「@PJL MODELNAME」をプリンタ50に送信し、T112において、プリンタ50から、プリンタ50のモデル名を示すMIB値「L8900CDW」を受信する。次いで、PC10は、T120において、PJLコマンド「@PJL MACADDRESS」をプリンタ50に送信し、T122において、プリンタ50から、プリンタ50がMACアドレスを有さないことを示すMIB値「NONE」を受信する。同様に、PC10は、T130〜T182において、他の6個のPJLコマンドをプリンタ50に順次送信して、プリンタ50から6個のMIB値(即ち、「Tanaka」、「Room1」、「XXX12345678」、「1004」、「3」、「80」)を順次受信する。
【0063】
T190では、PC10は、受信済みの8個のMIB値「L8900CDW」等をMIB値リスト40に記憶する(S30)。その後、PC10は、T200において、管理装置60から8個のOIDを含むGetリクエストを受信し(S100でYES)、T201において、MIB値リスト40から8個のOIDに対応する8個のMIB値「L8900CDW」等を取得する(S120)。T202及びT204は、T102及びT104と同様である。T210では、PC10は、取得済みの8個のMIB値を含むGetレスポンスを管理装置60に送信する(S130)。
【0064】
T220では、管理装置60において、PC10から受信された8個のMIB値と、プリンタ70から受信された8個のMIB値と、を含むデバイスリストが表示される。これにより、管理装置60のユーザは、各プリンタ50,70の情報を適切に知ることができる。
【0065】
続いて、
図8を参照して、PC10にドライバ42がインストール済みであり、かつ、プリンタ50がPC10に接続されていない場合の処理を説明する。例えば、
図7の処理の後に、プリンタ50からUSBケーブルが外される場合に、
図8の処理が実行される。
【0066】
T300は、
図7のT100と同様である。本ケースでは、プリンタ50がPC10に接続されていないので、PC10は、接続確認をプリンタ50に送信することができない。この場合、PC10(即ちアプリ38)は、プリンタ50がPC10に現在接続されておらず(
図4のS15でNO)、かつ、MIB値リスト40内のモデル名に対応するMIB値「L8900CDW」が、文字列「Unconnected」を含まないと判断する(S35でNO)。この結果、PC10は、T302において、文字列「Unconnected」に現在時刻を示す時刻情報(例えば「201712281023」)を付加して文字列「Unconnected−201712281023」を生成し、Name「モデル名」に対応するMIB値「L8900CDW」に代えて生成済みの文字列「Unconnected−201712281023」をMIB値リスト40に記憶する(S40)。
【0067】
T310及びT312は、Name「モデル名」に対応するMIB値として「Unconnected−201712281023」が利用される点を除いて、
図7のT200及びT201と同様である。また、PC10は、接続確認をプリンタ50に送信できないので、プリンタ50がPC10に現在接続されていないと判断する(
図5のS125でNO)。また、PC10は、T312において、Name「ステータス」に対応するMIB値「1004」が取得されていると判断し(S140でYES)、T320において、Name「ステータス」に対応するMIB値「1004」を所定値「−1」に変更する。T330は、Name「モデル名」に対応するMIB値として「Unconnected−201712281023」が利用され、Name「ステータス」に対応するMIB値として「−1」が利用される点を除いて、
図7のT210と同様である。
【0068】
T340では、管理装置60では、モデル名の欄に「Unconnected−201712281023」が記述され、かつ、ステータスの欄に「−1」が記述されたデバイスリストが表示される。これにより、管理装置60のユーザは、「Unconnected」を見ることによって、プリンタ50がPC10に接続されていないことを知ることができる。また、ユーザは、「201712281023」を見ることによって、プリンタ50がPC10に接続されていないことが最初に確認された時刻を知ることができる。また、ユーザは、ステータスの欄において、プリンタ50のステータスとして予め決められていない所定値「−1」を見ることによって、プリンタ50がPC10に現在接続されていないことを知ることができる。これにより、ユーザは、プリンタ50をPC10に接続すべきことを知ることができる。
【0069】
(本実施例の効果)
上記のように、PC10は、プリンタ50がUSBI/F16を介してPC10に接続された実績がないと判断する場合に、管理装置60から受信されたGetリクエストに対する応答として、アプリ38がPC10にインストールされる前からPC10に予め記憶されているデータ(即ち「abc」、「Suzuki」、「computer10」)を用いて得られる4個の特有値(即ち「abc」、「Suzuki」、「computer10」、「abcPC」)を含む8個のダミー値を含むGetレスポンスを管理装置60に送信する(
図6のT10)。ここで、各特有値は、PC10を特定可能な情報(例えばPC10のMACアドレス「abc」)を含む。従って、プリンタ50がPC10に接続された実績がないことを管理装置60のユーザに認識させ得る。また、換言すれば、プリンタを接続された実績がないPC10を管理装置60のユーザに認識させ得る。
【0070】
(対応関係)
PC10、プリンタ50、管理装置60が、それぞれ、「通信装置」、「対象装置」、「外部装置」の一例である。アプリ38が、「コンピュータプログラム」の一例である。ネットワークI/F18、USBI/F16が、それぞれ、「第1の通信インターフェース」、「第2の通信インターフェース」の一例である。Getリクエストが、「情報要求」の一例である。
図7のT210で送信される8個のMIB値が、「M個の第1の情報」の一例である。
図6のT10で送信される8個のダミー値が、「M個の応答情報」の一例である。特に、当該8個のダミー値のうちの4個の特有値(即ち「abc」、「Suzuki」、「computer10」、「abcPC」)、他の4個の値(即ち「Device Not Ready」、「0」、「0」、「100」)が、それぞれ、「N個の第2の情報」、「(M−N)個の所定情報」の一例である。ドライバ42が、「実行プログラム」の一例である。「Device Not Ready」、「Unconnected」、「Unconnected−201712281023」が、「第1の文字列」、「第2の文字列」、「特定情報」の一例である。
【0071】
図5のS100の処理、S130の処理、S115の処理が、それぞれ、「受信部」、「第1の送信部」、「第2の送信部」によって実行される処理の一例である。S105の処理、
図4のS10の処理が、それぞれ、「第1の判断部」、「第2の判断部」によって実行される処理の一例である。
【0072】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には以上に例示した具体例を様々に変形、変更したものが含まれる。上記の実施例の変形例を以下に列挙する。
【0073】
(変形例1)PC10(即ちアプリ38)は、プリンタ50がUSBI/F16を介してPC10に初めて接続される際に、接続済みであることを示す接続情報をメモリ34内に記憶してもよい。この場合、PC10は、
図4のS10において、当該接続情報がメモリ34内に記憶されているのか否かを判断することによって、プリンタ50がPC10に接続された実績があるのか否かを判断してもよい。
【0074】
(変形例2)上記の実施例では、例えば、MACアドレス、連絡先ユーザ名、設置場所、及び、シリアル番号のうちの少なくとも1個に対応するダミー値は、例えば、PC10のIPアドレスを用いて得られる情報であってもよい。この場合、当該情報が、「第2の情報」の一例である。
【0075】
(変形例3)上記の実施例では、プリンタ50の情報として8個のMIB値を想定していたが、プリンタ50の情報は8個に限られず、8個より多くてもよいし、8個未満でもよい。即ち、「M」は1以上の整数であればよい。また、MIB値リスト40内に記憶される特有値の数は、4個に限られず、4個より多くてもよいし、4個未満でもよい。即ち、「N」は1以上M以下の整数であればよい。また、M>Nでなくてもよく、M=Nでもよい。
【0076】
(変形例4)
図4のS40において、アプリ38は、文字列「Unconnected」とは異なる文字列(例えば「Disconnected」)を利用してもよい。即ち、「第2の文字列」は、プリンタ50がPC10に現在接続されていないことを示す文字列であればよい。別の変形例では、S40において、アプリ38は、モデル名に対応するMIB値として「Unconnected」のみを記憶してもよい。即ち、「生成部」は省略可能である。また、別の変形例では、S35及びS40の処理が省略されてもよい。この場合、アプリ38は、S15でNOと判断する場合に、S5に戻る。即ち、「第1の送信部」は、「特定情報」を送信しなくてもよい。
【0077】
(変形例5)アプリ38は、
図4の処理を実行しなくてもよい。この場合、アプリ38は、管理装置60からGetリクエストを受信して(
図5のS105でYES)、ドライバ42がインストール済みであると判断する場合(S105でNO)に、
図4のS20〜S30の処理を実行し、その後、
図5のS120以降の処理が実行される。即ち、「第2の判断部」は省略可能である。
【0078】
(変形例6)
図5のS125及びS140〜S150の処理が省略され、S120の後にS130に進んでもよい。本変形例では、「第1の送信部」は、「複数個の値とは異なる値」を送信しない。
【0079】
(変形例7)PC10(即ちアプリ38)は、管理装置60から、SNMPとは異なるプロトコル(例えばプリンタ50のベンダによって開発された独自プロトコル)に従った情報要求を受信してもよい。この場合、情報要求に含まれる情報識別子は、OIDでなくてもよく、情報を識別するための他の種類の識別子であってもよい。
【0080】
(変形例8)PC10は、USBI/F16及びネットワークI/F18に代えて、WFD(Wi-Fi Directの略)機能をサポートしているWi−FiI/Fを備えてもよい。この場合、PC10は、WFDに従った通信をプリンタ50と実行し、WFDではない通常のWi−Fiに従った通信を管理装置60と実行してもよい。本変形例では、Wi−FiI/Fが「第1の通信インターフェース」及び「第2の通信インターフェース」の一例であり、通常のWi−Fi、WFDが、それぞれ、「第1の通信規格」、「第2の通信規格」の一例である。また、別の変形例では、PC10は、USBI/F16に代えて、BT(Bluetooth(登録商標)の略)I/Fを備えてもよく、BTI/Fを介して、プリンタ50との通信を実行してもよい。本変形例では、BTI/Fが、「第2の通信インターフェース」の一例であり、BTが、「第2の通信規格」の一例である。
【0081】
(変形例9)「対象装置」は、プリンタ50に限られず、例えば、スキャナ、多機能機であってもよく、「実行プログラム」は、スキャナ又は多機能機に機能を実行させるためのプログラムであってもよい。また、「対象装置」は、PC、サーバ等であってもよい。
【0082】
(変形例10)上記の各実施例では、
図4〜
図8の各処理がソフトウェア(即ち各プログラム36、38)によって実現されるが、これらの各処理のうちの少なくとも1つが論理回路等のハードウェアによって実現されてもよい。
【0083】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。