(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-28
(45)【発行日】2023-09-05
(54)【発明の名称】プログラム、プログラム群、および情報処理装置
(51)【国際特許分類】
G06F 3/12 20060101AFI20230829BHJP
H04L 67/00 20220101ALI20230829BHJP
H04N 1/00 20060101ALI20230829BHJP
G06F 13/38 20060101ALI20230829BHJP
【FI】
G06F3/12 336
G06F3/12 304
H04L67/00
H04N1/00 127B
G06F13/38 320Z
(21)【出願番号】P 2019236253
(22)【出願日】2019-12-26
【審査請求日】2022-12-09
(73)【特許権者】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】110000992
【氏名又は名称】弁理士法人ネクスト
(72)【発明者】
【氏名】野尻 弘也
(72)【発明者】
【氏名】成田 建樹
(72)【発明者】
【氏名】松下 聡
【審査官】佐賀野 秀一
(56)【参考文献】
【文献】特開2014-089675(JP,A)
【文献】特開2007-172196(JP,A)
【文献】特開2014-103504(JP,A)
【文献】特開2014-102620(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/12
G06F 13/00
H04L 67/00
H04N 1/00
G06F 13/38
(57)【特許請求の範囲】
【請求項1】
第1通信インタフェースおよび第2通信インタフェースを備える情報処理装置のコンピュータが読み取り可能なプログラムであって、
前記コンピュータを、
デバイスを指定するデバイス指定情報を取得する取得手段と、
前記取得手段により前記デバイス指定情報が取得される毎に、当該デバイス指定情報により指定されるデバイスに対応させるポート情報を特定する特定手段として機能させ、前記ポート情報は、対応する前記デバイスへのデバイスリクエストを受け付けるために用いられる情報であって、前記特定手段は、複数の前記デバイス指定情報によりそれぞれ指定された複数の前記デバイスに対応させるポート情報として、それぞれ異なる複数のポート情報を特定し、
前記特定手段により特定されたポート情報に応じたデバイスポートを作成する第1作成手段として機能させ、前記ポート情報は前記情報処理装置において有限な情報であり、前記デバイスリクエストは第1プロトコルによるリクエストであり、前記第1プロトコルは前記第1通信インタフェースで用いられるプロトコルであり、前記デバイスポートは、前記プログラムがインストールされているコンピュータにインストールされたプログラムであって前記プログラムとは異なるプログラムから、前記第1プロトコルによって、前記第1通信インタフェースを介さずリクエストを受け付けるためのポートであり、
前記コンピュータを、
前記第1作成手段により作成されたデバイスポートへの前記デバイスリクエストを受け付けた場合に、当該デバイスリクエストを前記第2通信インタフェースに接続されたデバイスに、第2プロトコルによって送信する送信手段と、
前記送信手段により送信された前記デバイスリクエストに対する返信を前記デバイスから前記第2通信インタフェースを介して受信する受信手段として機能させ、前記第2プロトコルは前記第2通信インタフェースで用いられるプロトコルであり、
前記コンピュータを、
前記受信手段により受信した返信を、前記デバイスポートへの前記デバイスリクエストのリクエスト元のプログラムに、前記第1プロトコルで出力する第1出力手段と、
前記特定手段によって特定されたポート情報の量が、前記有限な情報の量のうちの所定の範囲を超えたか否かを判断する第1判断手段と、
前記第1判断手段により前記ポート情報の量が前記所定の範囲を超えたと判断された場合に、前記第1作成手段により作成されたデバイスポートを閉じる閉鎖手段と、
して機能させ、
前記特定手段は、
前記閉鎖手段によりデバイスポートが閉じられた後に、前記デバイスポートを示すポート情報として、当該閉鎖手段により閉じられたデバイスポートを示すポート情報を特定することを特徴とするプログラム。
【請求項2】
前記コンピュータを、
前記プログラムと異なる別プログラムからリクエストを受け付ける受付手段として機能させ、
前記特定手段は、
前記受付手段がリクエストを受け付けたことに応じて前記ポート情報を特定し、
前記第1判断手段は、
当該特定手段によって特定されたポート情報の量が、前記有限な情報の量のうちの所定の範囲を超えたか否かを判断し、
前記第1作成手段は、
前記第1判断手段により前記ポート情報の量が前記所定の範囲を超えていないと判断された場合に、前記特定手段により特定されたポート情報に応じたデバイスポートを作成し、
前記閉鎖手段は、
前記第1判断手段により前記ポート情報の量が前記所定の範囲を超えたと判断された場合に、前記第1作成手段により作成されたデバイスポートを閉じることを特徴とする請求項1に記載のプログラム。
【請求項3】
複数の前記別プログラムが、前記情報処理装置にインストールされており、
前記受付手段は、
前記複数の別プログラムの各々からリクエストを受け付け、
前記特定手段は、
前記受付手段が前記複数の別プログラムの各々からリクエストを受け付けたことに応じて前記ポート情報を特定し、
前記第1判断手段は、
当該特定手段によって特定されたポート情報の量が、前記有限な情報の量のうちの所定の範囲を超えたか否かを判断することを特徴とする請求項2に記載のプログラム。
【請求項4】
前記別プログラムは、ユーザ操作により起動及び終了し、
前記プログラムは、前記別プログラムの終了に伴って終了しないことを特徴とする請求項2又は3に記載のプログラム。
【請求項5】
前記コンピュータを、
前記受付手段がリクエストを受け付けたことに応じて前記特定手段により前記ポート情報が特定されたことで、前記第1判断手段により前記ポート情報の量が前記所定の範囲を超えたと判断された場合に、前記ポート情報を特定することができないことを示す特定不能情報を出力する第2出力手段として機能させ、
前記特定手段は、
前記第2出力手段が特定不能情報を出力した後に、前記受付手段が、再度、リクエストを受け付けたことに応じて、前記デバイスポートを示すポート情報として、前記閉鎖手段により閉じられたデバイスポートを示すポート情報を特定することを特徴とする請求項2乃至4の何れか1項に記載のプログラム。
【請求項6】
前記閉鎖手段は、
前記第2出力手段が特定不能情報を出力した後に、前記プログラムを一旦終了させた後に再度、起動することで、前記第1作成手段により作成されたデバイスポートを閉じることを特徴とする請求項5に記載のプログラム。
【請求項7】
前記コンピュータを、
前記第1作成手段により作成されたデバイスポートに対する処理を実行するためのサブスレッドを作成する第2作成手段として機能させ、
前記第1判断手段は、
メインスレッドにおいて、前記特定手段によって特定されたポート情報の量が、前記有限な情報の量のうちの所定の範囲を超えたか否かを判断し、
前記閉鎖手段は、
前記サブスレッドにおいて、前記第1作成手段により作成されたデバイスポートを閉じることを特徴とする請求項1乃至5の何れか1項に記載のプログラム。
【請求項8】
前記閉鎖手段は、
前記デバイスポートが前記デバイスリクエストを受け付けていない場合及び、前記デバイスポートが前記デバイスリクエストを受け付けていても、当該デバイスリクエストの返信が当該デバイスリクエストのリクエスト元のプログラムに出力されている場合に、前記サブスレッドにおいて、前記第1作成手段により作成されたデバイスポートを閉じることを特徴とする請求項7に記載のプログラム。
【請求項9】
第1通信インタフェースおよび第2通信インタフェースを備える情報処理装置のコンピュータが読み取り可能な第1プログラムと第2プログラムとを含むプログラム群であって、
前記コンピュータを、
デバイスを指定するデバイス指定情報を出力する第3出力手段として前記第2プログラムにより機能させ、
前記コンピュータを、
前記第3出力手段により出力されたデバイス指定情報を取得する取得手段と、
前記取得手段により前記デバイス指定情報が取得される毎に、当該デバイス指定情報により指定されるデバイスに対応させるポート情報を特定する特定手段として機能させ、前記ポート情報は、対応する前記デバイスへのデバイスリクエストを受け付けるために用いられる情報であって、前記特定手段は、複数の前記デバイス指定情報によりそれぞれ指定された複数の前記デバイスに対応させるポート情報として、それぞれ異なる複数のポート情報を特定し、
前記特定手段により特定されたポート情報に応じたデバイスポートを作成する第1作成手段として前記第1プログラムにより機能させ、前記ポート情報は前記情報処理装置において有限な情報であり、前記デバイスリクエストは第1プロトコルによるリクエストであり、前記第1プロトコルは前記第1通信インタフェースで用いられるプロトコルであり、前記デバイスポートは、前記コンピュータにインストールされたプログラムであって前記第1プログラムとは異なるプログラムから、前記第1プロトコルによって、前記第1通信インタフェースを介さずリクエストを受け付けるためのポートであり、
前記コンピュータを、
前記第1作成手段により作成されたデバイスポートへの前記デバイスリクエストを受け付けた場合に、当該デバイスリクエストを前記第2通信インタフェースに接続されたデバイスに、第2プロトコルによって送信する送信手段と、
前記送信手段により送信された前記デバイスリクエストに対する返信を前記デバイスから前記第2通信インタフェースを介して受信する受信手段として前記第1プログラムにより機能させ、前記第2プロトコルは前記第2通信インタフェースで用いられるプロトコルであり、
前記コンピュータを、
前記受信手段により受信した返信を、前記デバイスポートへの前記デバイスリクエストのリクエスト元のプログラムに、前記第1プロトコルで出力する第1出力手段と、
前記特定手段によって特定されたポート情報の量が、前記有限な情報の量のうちの所定の範囲を超えたか否かを判断する第1判断手段と、
前記第1判断手段により前記ポート情報の量が前記所定の範囲を超えたと判断された場合に、前記第1作成手段により作成されたデバイスポートを閉じる閉鎖手段と、
して前記第1プログラムにより機能させ、
前記特定手段は、
前記閉鎖手段によりデバイスポートが閉じられた後に、当該デバイスポートを示すポート情報として、前記閉鎖手段により閉じられたデバイスポートを示すポート情報を特定することを特徴とするプログラム群。
【請求項10】
前記コンピュータを、
前記第1作成手段により作成されたデバイスポートを示すポート情報を前記第2プログラムに出力する第4出力手段として前記第1プログラムにより機能させ、
前記コンピュータを、
前記第4出力手段により出力されたポート情報と、前記第3出力手段により出力されたデバイス指定情報とを関連づけて、前記情報処理装置のメモリに記憶させる記憶制御手段と、
前記メモリに記憶されたデバイス指定情報により指定されるデバイスに対するユーザ操作を受け付けた場合に、当該デバイスを指定するデバイス指定情報を前記第3出力手段により出力することなく、当該デバイス指定情報と関連付けて前記メモリに記憶されているポート情報を公開する公開手段と、
して前記第2プログラムにより機能させ、
前記送信手段は、
前記公開手段により公開されたポート情報が示すデバイスポートへの前記デバイスリクエストを受け付けた場合に、当該デバイスリクエストを前記第2通信インタフェースに接続されたデバイスに、第2プロトコルによって送信することを特徴とする請求項9に記載のプログラム群。
【請求項11】
第1通信インタフェースおよび第2通信インタフェースを備える情報処理装置のコンピュータが読み取り可能な第1プログラムと第2プログラムとを含むプログラム群であって、
前記コンピュータを、
デバイスを指定するデバイス指定情報を前記第1プログラムに出力する第3出力手段として前記第2プログラムにより機能させ、
前記コンピュータを、
前記第3出力手段により出力されたデバイス指定情報を取得する取得手段と、
前記取得手段により前記デバイス指定情報が取得される毎に、当該デバイス指定情報により指定されるデバイスに対応させるポート情報を特定する特定手段として機能させ、前記ポート情報は、対応する前記デバイスへのデバイスリクエストを受け付けるために用いられる情報であって、前記特定手段は、複数の前記デバイス指定情報によりそれぞれ指定された複数の前記デバイスに対応させるポート情報として、それぞれ異なる複数のポート情報を特定し、
前記特定手段により特定されたポート情報に応じたデバイスポートを作成する第1作成手段として前記第1プログラムにより機能させ、前記ポート情報は前記情報処理装置において有限な情報であり、前記デバイスリクエストは第1プロトコルによるリクエストであり、前記第1プロトコルは前記第1通信インタフェースで用いられるプロトコルであり、前記デバイスポートは、前記コンピュータにインストールされたプログラムであって前記第1プログラムとは異なるプログラムから、前記第1プロトコルによって、前記第1通信インタフェースを介さずリクエストを受け付けるためのポートであり、
前記コンピュータを、
前記第1作成手段により作成されたデバイスポートを示すポート情報を前記第2プログラムに出力する第4出力手段として前記第1プログラムにより機能させ、
前記コンピュータを、
前記第4出力手段により出力されたポート情報と、前記第3出力手段により出力されたデバイス指定情報とを関連づけて、前記情報処理装置のメモリに記憶させる記憶制御手段と、
前記メモリに記憶されたデバイス指定情報により指定されるデバイスに対するユーザ操作を受け付けた場合に、当該デバイスを指定するデバイス指定情報を前記第3出力手段により出力することなく、当該デバイス指定情報と関連付けて前記メモリに記憶されているポート情報を公開する公開手段と、
して前記第2プログラムにより機能させ、
前記コンピュータを、
前記公開手段により公開されたポート情報が示すデバイスポートへの前記デバイスリクエストを受け付けた場合に、当該デバイスリクエストを前記第2通信インタフェースに接続されたデバイスに、第2プロトコルによって送信する送信手段と、
前記送信手段により送信された前記デバイスリクエストに対する返信を前記デバイスから前記第2通信インタフェースを介して受信する受信手段として前記第1プログラムにより機能させ、前記第2プロトコルは前記第2通信インタフェースで用いられるプロトコルであり、
前記コンピュータを、
前記受信手段により受信した返信を、前記デバイスポートへの前記デバイスリクエストのリクエスト元のプログラムに、前記第1プロトコルで出力する第1出力手段として前記第1プログラムにより機能させることを特徴とするプログラム群。
【請求項12】
前記コンピュータを、
デバイスを指定するユーザ操作を受け付ける操作受付手段として前記第2プログラムにより機能させ、
前記第3出力手段は、
前記操作受付手段が受け付けたユーザ操作により指定されるデバイスのデバイス指定情報が前記メモリに記憶されていない場合に、当該デバイス指定情報を前記第1プログラムに出力し、前記操作受付手段が受け付けたユーザ操作により指定されるデバイスのデバイス指定情報が前記メモリに記憶されている場合に、当該デバイス指定情報を前記第1プログラムに出力しないことを特徴とする請求項11に記載のプログラム群。
【請求項13】
第1通信インタフェースと第2通信インタフェースとコンピュータとを備える情報処理装置であって、
前記コンピュータに、第1プログラムと第2プログラムとがインストールされており、
前記コンピュータを、
デバイスを指定するデバイス指定情報を出力する第3出力手段として前記第2プログラムにより機能させ、
前記コンピュータを、
前記第3出力手段により出力されたデバイス指定情報を取得する取得手段と、
前記取得手段により前記デバイス指定情報が取得される毎に、当該デバイス指定情報により指定されるデバイスに対応させるポート情報を特定する特定手段として機能させ、前記ポート情報は、対応する前記デバイスへのデバイスリクエストを受け付けるために用いられる情報であって、前記特定手段は、複数の前記デバイス指定情報によりそれぞれ指定された複数の前記デバイスに対応させるポート情報として、それぞれ異なる複数のポート情報を特定し、
前記特定手段により特定されたポート情報に応じたデバイスポートを作成する第1作成手段として前記第1プログラムにより機能させ、前記ポート情報は前記情報処理装置において有限な情報であり、前記デバイスリクエストは第1プロトコルによるリクエストであり、前記第1プロトコルは前記第1通信インタフェースで用いられるプロトコルであり、前記デバイスポートは、前記コンピュータにインストールされたプログラムであって前記第1プログラムとは異なるプログラムから、前記第1プロトコルによって、前記第1通信インタフェースを介さずリクエストを受け付けるためのポートであり、
前記コンピュータを、
前記第1作成手段により作成されたデバイスポートへの前記デバイスリクエストを受け付けた場合に、当該デバイスリクエストを前記第2通信インタフェースに接続されたデバイスに、第2プロトコルによって送信する送信手段と、
前記送信手段により送信された前記デバイスリクエストに対する返信を前記デバイスから前記第2通信インタフェースを介して受信する受信手段として前記第1プログラムにより機能させ、前記第2プロトコルは前記第2通信インタフェースで用いられるプロトコルであり、
前記コンピュータを、
前記受信手段により受信した返信を、前記デバイスポートへの前記デバイスリクエストのリクエスト元のプログラムに、前記第1プロトコルで出力する第1出力手段と、
前記特定手段によって特定されたポート情報の量が、前記有限な情報の量のうちの所定の範囲を超えたか否かを判断する第1判断手段と、
前記第1判断手段により前記ポート情報の量が前記所定の範囲を超えたと判断された場合に、前記第1作成手段により作成されたデバイスポートを閉じる閉鎖手段と、
して前記第1プログラムにより機能させ、
前記特定手段は、
前記閉鎖手段によりデバイスポートが閉じられた後に、当該デバイスポートを示すポート情報として、前記閉鎖手段により閉じられたデバイスポートを示すポート情報を特定することを特徴とする情報処理装置。
【請求項14】
第1通信インタフェースと第2通信インタフェースとコンピュータとを備える情報処理装置であって、
前記コンピュータに、第1プログラムと第2プログラムとがインストールされており、
前記コンピュータを、
デバイスを指定するデバイス指定情報を前記第1プログラムに出力する第3出力手段として前記第2プログラムにより機能させ、
前記コンピュータを、
前記第3出力手段により出力されたデバイス指定情報を取得する取得手段と、
前記取得手段により前記デバイス指定情報が取得される毎に、当該デバイス指定情報により指定されるデバイスに対応させるポート情報を特定する特定手段として機能させ、前記ポート情報は、対応する前記デバイスへのデバイスリクエストを受け付けるために用いられる情報であって、前記特定手段は、複数の前記デバイス指定情報によりそれぞれ指定された複数の前記デバイスに対応させるポート情報として、それぞれ異なる複数のポート情報を特定し、
前記特定手段により特定されたポート情報に応じたデバイスポートを作成する第1作成手段として前記第1プログラムにより機能させ、前記ポート情報は前記情報処理装置において有限な情報であり、前記デバイスリクエストは第1プロトコルによるリクエストであり、前記第1プロトコルは前記第1通信インタフェースで用いられるプロトコルであり、前記デバイスポートは、前記コンピュータにインストールされたプログラムであって前記第1プログラムとは異なるプログラムから、前記第1プロトコルによって、前記第1通信インタフェースを介さずリクエストを受け付けるためのポートであり、
前記コンピュータを、
前記第1作成手段により作成されたデバイスポートを示すポート情報を前記第2プログラムに出力する第4出力手段として前記第1プログラムにより機能させ、
前記コンピュータを、
前記第4出力手段により出力されたポート情報と、前記第3出力手段により出力されたデバイス指定情報とを関連づけて、前記情報処理装置のメモリに記憶させる記憶制御手段と、
前記メモリに記憶されたデバイス指定情報により指定されるデバイスに対するユーザ操作を受け付けた場合に、当該デバイスを指定するデバイス指定情報を前記第3出力手段により出力することなく、当該デバイス指定情報と関連付けて前記メモリに記憶されているポート情報を公開する公開手段と、
して前記第2プログラムにより機能させ、
前記コンピュータを、
前記公開手段により公開されたポート情報が示すデバイスポートへの前記デバイスリクエストを受け付けた場合に、当該デバイスリクエストを前記第2通信インタフェースに接続されたデバイスに、第2プロトコルによって送信する送信手段と、
前記送信手段により送信された前記デバイスリクエストに対する返信を前記デバイスから前記第2通信インタフェースを介して受信する受信手段として前記第1プログラムにより機能させ、前記第2プロトコルは前記第2通信インタフェースで用いられるプロトコルであり、
前記コンピュータを、
前記受信手段により受信した返信を、前記デバイスポートへの前記デバイスリクエストのリクエスト元のプログラムに、前記第1プロトコルで出力する第1出力手段として前記第1プログラムにより機能させることを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、デバイスポートを介してデバイスにデバイスリクエストを送信するためのプログラム等に関する。
【背景技術】
【0002】
下記特許文献に記載されているように、近年のプリンタ、スキャナ等のデバイスには、サーバ、所謂、EW S(Embedded Web Serverの略)が組み込まれており、PC等の情報処理装置により、そのサーバにアクセスすることで、そのデバイスの状態、設定情報等を確認することが可能とされている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
PC等の情報処理装置では、例えば、デバイスのEWSにアクセスする際にデバイスリクエストが出力される。この際、デバイスポートを介してデバイスリクエストが出力される。一方で、デバイスポートのポート番号等のポート情報は有限な情報であるため、有限な情報の範囲内でポート情報を利用して、デバイスポートを作成する必要がある。そこで、本発明は、有限な情報の範囲内でポート情報を利用して、デバイスポートを作成することを課題とする。
【課題を解決するための手段】
【0005】
上記課題を解決するために、実施例に開示するプログラムは、第1通信インタフェースおよび第2通信インタフェースを備える情報処理装置のコンピュータが読み取り可能なプログラムであって、前記コンピュータを、デバイスを指定するデバイス指定情報を取得する取得手段と、前記取得手段により前記デバイス指定情報が取得される毎に、当該デバイス指定情報により指定されるデバイスに対応させるポート情報を特定する特定手段として機能させ、前記ポート情報は、対応する前記デバイスへのデバイスリクエストを受け付けるために用いられる情報であって、前記特定手段は、複数の前記デバイス指定情報によりそれぞれ指定された複数の前記デバイスに対応させるポート情報として、それぞれ異なる複数のポート情報を特定し、前記特定手段により特定されたポート情報に応じたデバイスポートを作成する第1作成手段として機能させ、前記ポート情報は前記情報処理装置において有限な情報であり、前記デバイスリクエストは第1プロトコルによるリクエストであり、前記第1プロトコルは前記第1通信インタフェースで用いられるプロトコルであり、前記デバイスポートは、前記プログラムがインストールされているコンピュータにインストールされたプログラムであって前記プログラムとは異なるプログラムから、前記第1プロトコルによって、前記第1通信インタフェースを介さずリクエストを受け付けるためのポートであり、前記コンピュータを、前記第1作成手段により作成されたデバイスポートへの前記デバイスリクエストを受け付けた場合に、当該デバイスリクエストを前記第2通信インタフェースに接続されたデバイスに、第2プロトコルによって送信する送信手段と、前記送信手段により送信された前記デバイスリクエストに対する返信を前記デバイスから前記第2通信インタフェースを介して受信する受信手段として機能させ、前記第2プロトコルは前記第2通信インタフェースで用いられるプロトコルであり、前記コンピュータを、前記受信手段により受信した返信を、前記デバイスポートへの前記デバイスリクエストのリクエスト元のプログラムに、前記第1プロトコルで出力する第1出力手段と、前記特定手段によって特定されたポート情報の量が、前記有限な情報の量のうちの所定の範囲を超えたか否かを判断する第1判断手段と、前記第1判断手段により前記ポート情報の量が前記所定の範囲を超えたと判断された場合に、前記第1作成手段により作成されたデバイスポートを閉じる閉鎖手段と、して機能させ、前記特定手段は、前記閉鎖手段によりデバイスポートが閉じられた後に、前記デバイスポートを示すポート情報として、当該閉鎖手段により閉じられたデバイスポートを示すポート情報を特定することを特徴とする。
【発明の効果】
【0006】
実施例に開示するプログラムは、デバイスを指定するデバイス指定情報を取得する毎に、デバイスポートのポート情報として、異なるポート情報を特定し、特定したポート情報のデバイスポートを作成する。なお、ポート情報は有限な情報とされている。そこで、複数のデバイスポートが作成されることで、デバイスポート用に特定されるポート情報の量が、有限な情報の量のうちの所定の範囲を超えた場合に、作成済みのデバイスポートがクローズされる。このため、クローズされたデバイスポートのポート情報を用いて、新たにデバイスポートを作成することができる。これにより、有限な情報の範囲内でポート情報を利用して、デバイスポートを作成することができる。
【図面の簡単な説明】
【0007】
【
図2】通信システム1での処理を示すシーケンス図である。
【
図3】通信システム1での処理を示すシーケンス図である。
【
図4】通信システム1での処理を示すシーケンス図である。
【
図5】通信システム1での処理を示すシーケンス図である。
【
図6】通信システム1での処理を示すシーケンス図である。
【発明を実施するための形態】
【0008】
以下、適宜図面を参照して本発明の実施形態について説明する。なお、以下に説明する実施形態は、本発明の一例にすぎず、本発明の要旨を変更しない範囲で、本発明の実施形態を適宜変更できることは言うまでもない。例えば、後述する各処理の実行順序は、本発明の要旨を変更しない範囲で、適宜変更できる。
【0009】
図1は、本実施形態に係る通信システム1のブロック図である。
図1に示す通信システム1は、PC(情報処理装置の一例)10、MFP(デバイスの一例)50、MFP56を備える。MFP50,56は、スキャン処理,印刷処理等の各種処理を実行可能なデバイスである。また、MFP50には、EWS52が組み込まれており、MFP56には、EWS58が組み込まれている。EWS52,58は、ウェブサーバと同等の機能を有しており、EWS52,58には、MFP50,56の状態を示す情報,設定情報などに関するHTMLのウェブページを示す情報(以下、「EWS情報」と記載する)(サーバ情報の一例)が蓄積されている。
【0010】
PC10は、CPU(コンピュータの一例)12、メモリ14、LCD16、入力I/F18、ネットワークI/F(第1通信インタフェースの一例)19、USBI/F(第2通信インタフェースの一例)20を主に備えている。これらの構成要素は、バス22を介して互いに通信可能とされている。
【0011】
CPU12は、メモリ14内の制御プログラム(プログラム及び第1プログラムの一例)30,アプリケーション(別プログラム及び第2プログラムの一例)32,設定ツール(別プログラム及び第2プログラムの一例)34,ブラウザ36,OS38に従って処理を実行する。制御プログラム30は、MFP50のEWS52からサーバ情報を取得するためのアプリケーションプログラムである。また、アプリケーション32は、MFP50を用いて各種処理を実行するためのアプリケーションプログラムである。また、設定ツール34は、MFP50,56のEWS52,58に蓄積されているEWS情報に基づいて各種設定を行うためのアプリケーションプログラムである。なお、アプリケーション32は、ライブラリ40を含んでおり、設定ツール34は、ライブラリ42を含んでいる。ライブラリ40とライブラリ42とは、同じアプリケーションプログラムであり、制御プログラム30の処理によりMFP50のEWS52からサーバ情報を取得する際に用いられる。また、ブラウザ36は、ネットワークI/F19を介してHTTPを用いてHTML形式のデータを取得し、ウェブページをLCD16に表示するためのアプリケーションプログラムである。また、OS38は、制御プログラム30等に利用される基本的な機能を提供するプログラムである。なお、以下の説明では、制御プログラム30等を実行するCPU12のことを、単にプログラム名でも記載する場合がある。例えば、「制御プログラム30が」という記載は、「制御プログラム30を実行するCPU12が」ということを意味する場合がある。
【0012】
また、メモリ14は、データ記憶領域(メモリの一例)46を備える。データ記憶領域46は、制御プログラム30等の実行に必要なデータなどを記憶する領域である。なお、メモリ14は、RAM、ROM、フラッシュメモリ、HDD、PC10に着脱されるUSBメモリ等の可搬記憶媒体、CPU12が備えるバッファなどが組み合わされて構成されている。
【0013】
なお、メモリ14は、コンピュータが読み取り可能なストレージ媒体であってもよい。コンピュータが読み取り可能なストレージ媒体とは、non-transitoryな媒体である。non-transitoryな媒体には、上記の例の他に、CD-ROM、DVD-ROM等の記録媒体も含まれる。また、non-transitoryな媒体は、tangibleな媒体でもある。一方、インターネット上のサーバなどからダウンロードされるプログラムを搬送する電気信号は、コンピュータが読み取り可能な媒体の一種であるコンピュータが読み取り可能な信号媒体であるが、non-transitoryなコンピュータが読み取り可能なストレージ媒体には含まれない。
【0014】
また、LCD16は、PC10の各種情報を表示する。なお、本願のディスプレイは、液晶ディスプレイに限らず、有機ELディスプレイ等の他の表示方式のディスプレイでも良い。入力I/F18は、キーボード、マウス等を含み、ユーザ操作を入力するためのインタフェースである。なお、入力I/F18は、キーボード等に限らず、LCD16の表示画面に重畳された膜状のタッチセンサでも良い。
【0015】
ネットワークI/F19は、HTTP(第1プロトコルの一例)を用いてデバイスと通信を行うためのものであり、ネットワーク60を介してMFP56と通信可能とされている。また、USBI/F20は、USBプロトコル(第2プロトコルの一例)を用いてデバイスと通信を行うためのものであり、MFP50と通信可能とされている。
【0016】
なお、本明細書では、基本的に、プログラムに記述された命令に従ったCPU12の処理を示す。すなわち、以下の説明における「判断」、「抽出」、「選択」、「算出」、「決定」、「特定」、「取得」、「受付」、「制御」「設定 」等の処理は、CPU12の処理を表している。CPU12による処理は、OS38を介したハードウェア制御も含む。なお、「取得」は要求を必須とはしない概念で用いる。すなわち、CPU12が要求することなくデータを受信するという処理も、「CPU12がデータを取得する」という概念に含まれる。また、本明細書中の「データ」とは、コンピュータに読取可能なビット列で表される。そして、実質的な意味内容が同じでフォーマットが異なるデータは、同一のデータとして扱われるものとする。本明細書中の「情報」についても同様である。また、「命令」「応答」「要求」等の処理は、「命令」「応答」「要求」等を示す情報を通信することにより行われる。また、「命令」「応答」「要求」等の文言を、「命令」「応答」「要求」等を示す情報そのものという意味で記載してもよい。また、CPUによる、情報Aは事柄Bであることを示しているか否かを判断する処理を、「情報Aから、事柄Bであるか否かを判断する」のように概念的に記載することがある。CPUによる、情報Aが事柄Bであることを示しているか、事柄Cであるかを示しているかを判断する処理を、「情報Aから、事柄Bであるか事柄Cであるかを判断する」のように概念的に記載することがある。
【0017】
通信システム1では、上述した構成に従って、PC10とネットワークI/F19を介して通信可能とされたMFP56から、ブラウザ36がEWS情報を取得し、EWS情報に基づいてウェブページをLCD16に表示することが可能とされている。このような処理は、従来から行われている処理であり、ブラウザ36がHTTPを用いることで好適にMFP56からEWS情報を取得することができる。一方で、PC10とUSBI/F20を介して通信可能とされたMFP50、つまり、USB接続されたMFP50から、ブラウザ36は、従来の手法ではHTTPを用いてEWS情報を取得することはできなかったが、通信システム1では、USB接続されたMFP50から、ブラウザ36がHTTPを用いてEWS情報を取得することが可能とされている。以下に、USB接続されたMFP50から、ブラウザ36がHTTPを用いてEWS情報を取得する際の制御プログラム30等の処理について、
図2及び
図3に示すシーケンス図を用いて、詳しく説明する。
【0018】
詳しくは、制御プログラム30は、アプリケーション32のライブラリ40の処理により起動する(
図2参照:S100)。そして、制御プログラム30は、受付ポートを作成する(S102)。続いて、制御プログラム30は、その受付ポートを「Accept」で待ち受け状態とする(S104)。つまり、制御プログラム30は、受付ポートを、情報を受け付け可能な状態(以下、「受付可能状態」と記載する)とする。なお、受付ポートのポート番号は、HTTPに従ったものであり、50000とされている。そして、制御プログラム30は、その受付ポートによりアプリケーション32のライブラリ40と通信を行う。制御プログラム30は、例えば、既知のSocket方式に従ってポートの作成、ポートの状態の変更、ポートの削除などを行う。
【0019】
このように、PC10では、ライブラリ40の処理により制御プログラム30が起動し、アプリケーション32と通信を行うための受付ポートを作成する。一方で、アプリケーション32はユーザ操作により起動し、アプリケーション32が起動すると、アプリケーション32に含まれるライブラリ40が、ポート番号50000の受付ポートに接続を確認するための情報を出力する(S106)。なお、ライブラリ40には、通信対象のポートのポート番号が50000であることがプログラミングされている。そして、制御プログラム30は、受付ポートに接続確認の情報が入力されると、「OK」をライブラリ40に返信する(S108)。なお、受付ポートに接続確認の情報が入力されない場合には、「NG」がライブラリ40に返信される。ちなみに、制御プログラム30は、ポート番号50000のデバイスポートを作成することができない場合に(例えば、ポート番号50000のポートが、他のプログラムによって既に使用されている場合に)、受付ポート決定の所定のルールに従って、そのポート番号50000と異なるポート番号を受付ポートのポート番号として決定し、そのポート番号のポートを受付ポートとして作成する。この場合、ライブラリ40がポート番号50000のポートに接続確認の情報を入力しようとしても、入力できない。そこで、ライブラリ40にも、受付ポート決定の所定のルールがプログラミングされている。接続確認の情報を入力できなかった場合、ライブラリ40は、ルールに従って、異なるポート番号のポートに接続確認の情報などを入力する。ライブラリ40は、接続確認の情報を入力できたポート番号を、受付ポートの番号として使用する。便宜上、本実施例ではポート番号50000のポートを受付ポートとして説明を続ける。
【0020】
また、アプリケーション32は、上述したように、MFP50等のデバイスを用いて各種処理を実行するためのアプリケーションプログラムであり、ブラウザ36を利用して、デバイスのEWS情報に基づくウェブページをLCD16に表示することも可能とされている。このため、アプリケーション32が、EWS情報に基づくウェブページの表示要求のユーザ操作を受け付けると、ライブラリ40が、ポート番号50000の受付ポートに、ポート情報の要求を出力する(S110)。この際、ライブラリ40は、ポート情報の要求とともに、デバイス指定情報も受付ポートに出力する。デバイス指定情報は、EWS情報の取得先のデバイスを指定する情報であり、ここでは、MFP50を指定するデバイス指定情報が受付ポートに出力される。また、デバイス指定情報は、USBプロトコルで用いられる文字列の情報とされている。具体的には、例えば、デバイス指定情報として「VID/PID」が受付ポートに出力される。ちなみに、VIDは、VenderID(メーカ番号)であり、PIDは、ProductID(製品番号)である。このため、「VID/PID」により、デバイスの機種(モデル)を特定することができる。なお、1台のPCに、複数の同じ機種のプリンタをUSBで接続して利用する形態は一般的ではないと考えられる。そのため、本願実施例ではデバイス指定情報である「VID/PID」が、デバイスの個体を識別する情報としても用いられる。もちろん、「VID/PID」以外の情報、例えばシリアル番号などを、デバイスの個体を識別する情報として用いることとし、「VID/PID」と、デバイスの個体を識別する情報とを合わせてデバイス指定情報としてもよい。
【0021】
そして、制御プログラム30は、受付ポートがポート情報の要求を受け付けると、その要求に含まれるデバイス指定情報により指定されるデバイス(以下、「対象デバイス」と記載する場合がある)の確認要求をOS38に出力する(S112)。この確認要求は、対象デバイスがHTTPに対応するデバイスであるか否かを確認するためのものであり、OS38は、対象デバイスがHTTPに対応するデバイスであれば、「true」を制御プログラム30に出力する(S114)。一方、OS38は、対象デバイスがHTTPに対応するデバイスでなければ、「false」を制御プログラム30に出力する(S114)。OS38は、例えば、レジストリと呼ばれる領域にUSBデバイスの情報を記憶しており、S112では、その情報の出力をOSに要求している。USBデバイスの情報は、PC10にUSB接続したデバイスから取得した情報であってもよいし、PC10のデータ記憶領域46や、デバイスメーカのサーバから取得した情報であってもよい。対象デバイスがHTTPに対応するデバイスであるか否かを示す情報は「true」「false」以外の情報であってもよい。
【0022】
この際、制御プログラム30は、「true」をOS38から受け付けると、対象デバイスと通信を行うためのデバイスポートのポート番号を特定し、特定したポート番号(以下、「特定ポート番号」と記載する)が「52000」を超えているか否かを判断する(S118)。詳しくは、デバイスと通信を行うためのデバイスポートのポート番号は、有限な数値であり、51000~52000とされている。そして、制御プログラム30は、デバイスポートのポート番号を、まず、「51000」に特定し、順次、「10」ずつカウントアップされた数値に特定する。つまり、制御プログラム30は、最初のデバイスポートのポート番号を「51000」に特定し、2番目以降のデバイスポートのポート番号を、「51010」,「51020」,「51030」,「51040」,「51050」・・・に特定する。このように、デバイスポートのポート番号が特定されると、最終的に、デバイスポートのポート番号が「52000」に特定される。そして、そのポート番号「52000」の次に、ポート番号を「52010」に特定してもそのポート番号「52010」のデバイスポートを作成することはできない。このため、制御プログラム30は、特定ポート番号を特定し、その特定ポート番号が「52000」を超えているか否かを判断する(S118)。ここでは、制御プログラム30が最初のポート番号を特定するため、特定ポート番号は「51000」に特定され、「52000」を超えていないと判断される。
【0023】
このように、デバイスポートのポート番号が特定され、その特定ポート番号が「52000」を超えていないと判断されると(S118:NO)、制御プログラム30は、リセットフラグをOFFに設定する(S120)。リセットフラグは、デバイスポートのポート番号をリセットするためのフラグであり、後に詳しく説明する。そして、制御プログラム30は、サブスレッドを作成する(S122)。サブスレッドは、デバイスポートに関する処理を実行するためのスレッドであり、デバイスポート毎に作成される。このため、特定ポート番号が「51000」である場合には、ポート番号「51000」のデバイスポートに関する処理を実行するためのサブスレッドが作成される。なお、上記した制御プログラム30の処理は、メインスレッドにおいて行われる。
【0024】
デバイスポートに関する処理を実行するためのサブスレッドが作成されると、
図3に示すように、制御プログラム30は、そのサブスレッドにおいて、特定ポート番号に応じたデバイスポート、つまり、ポート番号「51000」のデバイスポートを作成する(S152)。なお、デバイスポートのポート番号も、HTTPに従ったものであり、制御プログラム30は、そのデバイスポートによりブラウザ36と通信を行う。そして、制御プログラム30は、作成したデバイスポートのポート番号を示す情報(以下、「ポート情報」と記載する)と、S110で受け付けているデバイス指定情報とを関連付けて、データ記憶領域46に記憶する(S154)。次に、制御プログラム30は、リセットフラグがONに設定されているか否かを判断する(S156)。ここでは、S120においてリセットフラグがOFFに設定されているため、リセットフラグはONに設定されていないと判断され(S156:NO)、制御プログラム30は、S152において作成したデバイスポートを「Accept」で待ち受け状態とする(S158)。つまり、制御プログラム30は、デバイスポートを受付可能状態とする。
【0025】
なお、サブスレッドにおいてデバイスポートが作成され、そのデバイスポートが受付可能状態とされると、制御プログラム30は、
図2に示すように、メインスレッドにおいて、S152で作成されたデバイスポートのポート番号を示すポート情報をライブラリ40に出力する(S124)。この際、制御プログラム30は、HTTP形式のポート情報をライブラリ40に出力する。具体的には、例えば、デバイスポートのポート番号が51000である場合に、制御プログラム30は、ポート情報「http://localhost:51000/」をライブラリ40に出力する。
【0026】
ライブラリ40は、制御プログラム30からポート情報を受け付けると、ブラウザ36を起動する(S126)。そして、ライブラリ40は、制御プログラム30から受け付けたポート情報「http://localhost:51000/」をブラウザ36に出力する(S128)。これにより、ブラウザ36は、ポート番号51000のデバイスポートにアクセスすることが可能となる。このため、ブラウザ36は、
図3に示すように、ライブラリ40から受け付けたポート情報を利用してポート番号「51000」のデバイスポートに、EWS情報の要求情報をHTTPで出力する(S160)。この際、制御プログラム30は、ポート番号51000のデバイスポートにHTTPでのEWS情報の要求情報を受け付けると、そのポート番号のポート情報と関連付けて記憶されているデバイス指定情報に応じたデバイス、つまり、MFP50に、EWS情報の要求情報をUSBプロトコルで出力する(S162)。このとき、制御プログラム30は、デバイスポートにHTTPで受け取った要求情報を変換することなく、USBプロトコルでMFP50に送信する。すなわち、MFP50が制御プログラム30から受信する要求情報と、仮に、MFP50がブラウザ36から直接HTTPで受信するとして、MFP50がHTTPで受信する要求情報とは、同じ要求情報である。したがって、MFP50は、制御プログラム30から受信する場合と、HTTPで受信する場合とで、要求情報に対する処理を基本的には変更する必要がない。
【0027】
次に、MFP50は、EWS情報の要求情報を受け付けると、EWS情報を制御プログラム30にUSBプロトコルで返信する(S164)。そして、制御プログラム30は、受け付けたEWS情報をブラウザ36にHTTPで出力する(S166)。このように、PC10では、制御プログラム30を介することで、ブラウザ36がHTTPを用いてEWS情報を取得することが可能とされている。そして、ブラウザ36は、取得したEWS情報に基づいてウェブページをLCD16に表示する(S168)。なお、MFP50が制御プログラム30に返信するEWS情報と、仮に、MFP50がブラウザ36に直接HTTPで返信するとして、MFP50がHTTPで返信するEWS情報とは、同じEWS情報である。また、制御プログラム30は、USBプロトコルで受信したEWS情報を変換することなく、HTTPでブラウザ36に出力する。したがって、ブラウザ36は、制御プログラム30から受け取る場合と、HTTPで受信する場合とで、EWS情報に対する処理を基本的には変更する必要がない。
【0028】
なお、デバイスポートは情報を受け付けると、次の情報を受け付けることができない状態、つまり、次の情報の受付が不能な状態となる。このため、制御プログラム30は、ブラウザからEWS情報の要求情報を受け付けたデバイスポートを、その要求情報に応じたEWS情報をブラウザ36に出力した後に(S166)、S156に戻る。これにより、制御プログラム30は、S156の処理を経由して、デバイスポートを受付可能状態とする(S158)。これにより、ブラウザ36が、再度、そのデバイスポートにEWS情報の要求情報をHTTPで出力した場合(S160)において、そのデバイスポートが、EWS情報の要求情報を受け付けることができる。なお、以降の処理(S162~S168)は、先に説明した処理と同じである。
【0029】
また、制御プログラム30のメインスレッドでは、
図2に示すように、制御プログラム30がポート情報をライブラリ40に出力すると、S110に戻る。このため、制御プログラム30は、ライブラリ40からポート情報の要求を受け付ける毎に、S112以降の処理を実行する。つまり、制御プログラム30は、ライブラリ40から2番目のポート情報の要求を受け付けると(S110)、2番目のデバイスポートのポート番号を「51010」に特定する(S118)。この際、特定ポート番号「51010」は「52000」を超えていないと判断され(S118:NO)、そのポート番号「51010」のデバイスポートに関する処理を実行するためのサブスレッドが作成される(S122)。そして、そのサブスレッドにおいて、
図3に示すように、ポート番号「51010」のデバイスポートに関する処理(S152~S168)が実行される。
【0030】
さらに、制御プログラム30が、ライブラリ40から3番目のポート情報の要求を受け付けると(
図2参照:S110)、3番目のデバイスポートのポート番号を「51020」に特定する(S118)。この際、特定ポート番号「51020」は「52000」を超えていないと判断され(S118:NO)、そのポート番号「51020」のデバイスポートに関する処理を実行するためのサブスレッドが作成される(S122)。そして、そのサブスレッドにおいて、ポート番号「51020」のデバイスポートに関する処理(
図3参照:S152~S168)が実行される。
【0031】
このように、制御プログラム30は、ライブラリ40からポート情報の要求を受け付ける毎に、異なるポート番号を特定し、そのポート番号のデバイスポートに関する処理を実行するためのサブスレッドを作成する。そして、各サブスレッドにおいて、サブスレッドに応じたポート番号のデバイスポートに関する処理が実行される。ただし、デバイスポートのポート番号は、上述したように、51000~52000とされており、有限な数値である。このため、ポート番号「52000」のデバイスポートが作成された後に、制御プログラム30が、ライブラリ40からポート情報の要求を受け付けると(
図2参照:S110)、デバイスポートのポート番号を「52010」に特定するが、その特定ポート番号「52010」は「52000」を超えていると判断される(S118:YES)。このため、制御プログラム30は、デバイスポートを作成することができないため、ポート情報の要求に対する返信として、エラー情報をライブラリ40に出力する(S170)。そして、制御プログラム30は、リセットフラグをONに設定する(S172)。このリセットフラグは、デバイスポートに関する処理を実行するサブスレッドにおいて監視されており、サブスレッドで作成されたデバイスポートをクローズする際に用いられる。また、制御プログラム30は、S118において特定するポート番号をリセットする(S174)。つまり、「52000」までカウントアップされた特定ポート番号を、「51000」にリセットする。
【0032】
また、デバイスポートに関する処理を実行するサブスレッドでは、上述したように、リセットフラグが監視されている。詳しくは、
図3に示すように、サブスレッドにおいて、デバイスポートが作成され(S152)、ポート情報とデバイス指定情報とが関連付けてデータ記憶領域46に記憶されると、制御プログラム30は、リセットフラグがONに設定されているか否かを判断する(S156)。この際、リセットフラグがOFFに設定されている場合(S156:NO)には、上述したように、制御プログラム30は、デバイスポートを受付可能状態とし(S158)、S160以降の処理を実行する。一方、リセットフラグがONに設定されている場合(S156:YES)に、制御プログラム30は、デバイスポートをクローズする(S180)。つまり、制御プログラム30は、デバイスポートを受付可能状態とする前にデバイスポートをクローズする。このため、ブラウザ36からEWS情報の要求情報を受け付けていない状態でデバイスポートをクローズすることが可能となり、安全にデバイスポートをクローズすることができる。また、制御プログラム30が、ブラウザ36からEWS情報の要求情報を受け付けた後に(S160)、リセットフラグがONに設定された場合であっても、そのEWS情報の要求情報に対する返信、つまり、EWS情報をブラウザ36に出力した後に、S156においてリセットフラグがONに設定されているか否かが判断される。このため、ブラウザ36からEWS情報の要求情報を受け付けている場合であっても、その要求情報に対する処理が完了した後に、デバイスポートがクローズされる。これにより、要求情報の処理に対する途中でデバイスポートがクローズされることはなくなり、安全にデバイスポートをクローズすることができる。そして、デバイスポートがクローズされると、サブスレッドによる処理が終了する。このように、サブスレッドでは、デバイスポートのポート番号がリセットされると、リセットされたポート番号のデバイスポートがクローズされる。なお、上述したデバイスポートの監視処理は、作成された全てのサブスレッドにおいて実行されているため、ポート番号のリセットに伴って、全てのサブスレッドにおいてデバイスポートがクローズされる。
【0033】
このように、全てのサブスレッドにおいてデバイスポートがクローズされると、クローズされたデバイスポートのポート番号を再度、用いることが可能となる。このため、
図2に示すように、特定ポート番号がリセットされた後に(S174)、制御プログラム30が、ライブラリ40からEWS情報の要求情報を受け付けると(S110)、デバイスポートのポート番号を「51000」に特定する(S118)。これにより、ポート番号「51000」は「52000」を超えていないと判断され(S118:NO)、制御プログラム30は、リセットフラグをOFFに設定する(S120)。そして、制御プログラム30は、ポート番号「51000」のデバイスポートに関する処理を実行するためのサブスレッドを作成する(S122)。これにより、そのサブスレッドにおいて、
図3に示すように、ポート番号「51000」のデバイスポートに関する処理(S152~S168,180)が実行される。
【0034】
このように、PC10では、デバイスポートのポート番号として用いることができる範囲の数値(51000~52000)の全てがデバイスポートのポート番号として使用された場合に、作成済みの全てのデバイスポートがクローズされ、ポート番号がリセットされる。これにより、制御プログラム30は、ライブラリ40からの要求に応じて、永続的にデバイスポートを作成することが可能となる。
【0035】
また、アプリケーション32では、ポート情報の要求を抑制することで、デバイスポートのポート番号の使用量が抑制されている。詳しくは、
図4に示すように、アプリケーション32はユーザ操作により起動する(S200)。また、アプリケーション32は、上述したように、MFP50等のデバイスを用いて各種処理を実行するためのアプリケーションプログラムであり、ブラウザ36を利用して、デバイスのEWS情報に基づくウェブページをLCD16に表示することも可能となされている。このため、アプリケーション32は、デバイスを指定するユーザ操作及び、その指定されたデバイスのEWS情報に基づくウェブページの表示要求を、入力I/F18を介して受け付けると(S202)、アプリケーション32は、ポート情報の要求をライブラリ40に出力する(S204)。なお、ポート情報の要求には、S202で受け付けたユーザ操作により指定されるデバイスのデバイス指定情報が含まれている。
【0036】
そして、ライブラリ40は、その要求を受け付けると、データ記憶領域46に通信情報が記憶されているか否かを判断する(S206)。通信情報は、EWS情報の取得先を示すデバイス及び、そのデバイスとの通信を行うためのデバイスポートを示す情報であり、その通信情報については、後に詳しく説明するが、ここでは、通信情報は、まだデータ記憶領域46に記憶されていない。このため、データ記憶領域46に通信情報は記憶されていないと判断され(S206:NO)、ライブラリ40は、制御プログラム30にポート情報の要求を出力する(S208)。なお、この処理は、先に説明した
図2のS110と同じ処理であり、この処理により出力されるポート情報の要求には、S204のポート情報の要求に含まれるデバイス指定情報が含まれている。このため、ライブラリ40は、制御プログラム30により作成された受付ポートに、ポート情報の要求を出力する。これにより、
図2のS112~S124の処理が実行され、ライブラリ40は、制御プログラム30により出力されたポート情報を受け付ける(S210)。つまり、例えば、S208のポート情報の要求にMFP50を指定するデバイス指定情報が含まれている場合に、
図2のS122において、MFP50と通信を行うためのデバイスポートに関する処理を実行するためのサブスレッドが作成される。そして、そのサブスレッドにおいて、MFP50と通信を行うためのデバイスポートが作成され、
図2のS124において、MFP50と通信を行うためのデバイスポートのポート情報が、制御プログラム30からライブラリ40に出力される。
【0037】
そして、ライブラリ40は、受け付けたポート情報をブラウザ36に出力する(S212)。この処理は、
図2のS128と同じ処理であり、この処理により、ブラウザ36は、
図3に示すように、EWS情報の要求情報をデバイスポートに出力し(S160)、S162~S168の処理により、EWS情報に基づくウェブページをLCD16に表示することができる。また、ライブラリ40は、
図4に示すように、制御プログラム30からポート情報を受け付けると(S210)、そのポート情報と、S204及びS208のポート情報の要求に含まれるデバイス指定情報とを関連付けて、データ記憶領域46に記憶する(S214)。この際、例えば、ポート情報の要求にMFP50を指定するデバイス指定情報が含まれている場合には、MFP50と通信を行うためのデバイスポートのポート情報と、MFP50を指定するデバイス指定情報とが関連付けてデータ記憶領域46に記憶される。なお、ここで記憶されるポート情報とデバイス指定情報とが、先に説明した通信情報となる。つまり、ライブラリ40がポート情報を制御プログラム30から受け付けることで、通信情報がデータ記憶領域46に記憶される。
【0038】
そして、ライブラリ40による処理では、ポート情報とデバイス指定情報とが関連付けてデータ記憶領域46に記憶されると、S204に戻るが、その際に、ライブラリ40が、アプリケーション32からポート情報の要求を受け付けると、そのポート情報の要求に含まれているデバイス指定情報が、通信情報としてデータ記憶領域46に記憶されているか否かを判断する(S206)。具体的には、例えば、S214において、MFP50と通信を行うためのデバイスポートのポート情報と、MFP50を指定するデバイス指定情報とが関連付けてデータ記憶領域46に記憶されており、S204において、MFP50以外のデバイスを指定するデバイス指定情報を含むポート情報の要求を受け付けた場合には、デバイス指定情報が、通信情報としてデータ記憶領域46に記憶されていないと判断される(S206:NO)。この際、ライブラリ40は、そのデバイス指定情報を含むポート情報の要求を、制御プログラム30に出力する(S208)。そして、S210以降の処理が実行される。これにより、そのデバイス指定情報により指定されるデバイス、つまり、MFP50以外のデバイスと通信を行うためのポート情報を、ライブラリ40は制御プログラム30から取得する(S210)。そして、ライブラリ40が、そのポート情報をブラウザ36に出力する(S212)。これにより、
図3のS160~S168の処理が実行されることで、MFP50以外のデバイスのEWS情報に基づくウェブページがLCD16に表示される。
【0039】
一方、例えば、S214において、MFP50と通信を行うためのデバイスポートのポート情報と、MFP50を指定するデバイス指定情報とが関連付けてデータ記憶領域46に記憶されており、S204において、MFP50を指定するデバイス指定情報を含むポート情報の要求を受け付けた場合には、デバイス指定情報が、通信情報としてデータ記憶領域46に記憶されていると判断される(S206:YES)。この際、ライブラリ40は、そのデバイス指定情報と関連付けて記憶されているポート情報を抽出する(S220)。つまり、MFP50を指定するデバイス指定情報と関連付けてデータ記憶領域46に記憶されている、MFP50と通信を行うためのポート情報を抽出する。そして、ライブラリ40は、そのポート情報をブラウザ36に出力する(S222)。これにより、
図3のS160~S168の処理が実行されることで、MFP50のEWS情報に基づくウェブページがLCD16に表示される。
【0040】
つまり、ライブラリ40は、ポート情報を制御プログラム30から受け付けると、そのポート情報と、そのポート情報が示すデバイスポートと通信を行うデバイスのデバイス指定情報とを関連付けて、通信情報としてデータ記憶領域46に記憶する。そして、ライブラリ40は、通信情報として記憶されているデバイス指定情報を含むポート情報の要求を、アプリケーション32から受け付けると、ポート情報の要求を制御プログラム30に出力せずに、データ記憶領域46に通信情報として記憶されているポート情報を、ブラウザ36に出力する。また、ライブラリ40は、通信情報として記憶されているデバイス指定情報を含まないポート情報の要求を、アプリケーション32から受け付けると、ポート情報の要求を制御プログラム30に出力する。そして、そのポート情報の要求の出力に応じて、ライブラリ40は、制御プログラム30からポート情報を取得し、そのポート情報をブラウザ36に出力する。
【0041】
このように、アプリケーション32では、ライブラリ40が、通信情報として記憶されているデバイス指定情報を含むポート情報の要求をアプリケーション32から受け付けると、その通信情報を利用することで、制御プログラム30に出力されるポート情報の要求が抑制される。これにより、制御プログラム30では、ポート情報の要求に応じたデバイスポートの作成が抑制され、デバイスポートのポート番号の使用量が抑制される。
【0042】
なお、上記説明では、アプリケーション32のライブラリ40からのポート情報の要求に応じて、制御プログラム30がデバイスポートを作成し、そのデバイスポートのポート情報をアプリケーション32のライブラリ40に出力しているが、設定ツール34にも、アプリケーション32のライブラリ40と同じライブラリ42が含まれている。このため、設定ツール34のライブラリ42も、アプリケーション32のライブラリ40と同様の処理を行うことができる。つまり、上述したライブラリ40による処理と同じ処理を、設定ツール34のライブラリ42も実行することが可能とされている。
【0043】
また、上記実施形態では、制御プログラム30により作成された全てのサブスレッドにおいて、リセットフラグが監視されており、リセットフラグがONに設定されたことをトリガとして、各サブスレッドにおいて作成されたデバイスポートがクローズされているが、制御プログラム30の再起動によりデバイスポートがクローズされてもよい。詳しくは、
図5に示すように、制御プログラム30が、ライブラリ40の処理により起動し(S100)、特定ポート番号が「52000」を超えているか否かを判断する(S118)処理までは、上記実施形態と同じである。そして、特定ポート番号が「52000」を超えていないと判断された場合(S118:NO)に、制御プログラム30は、サブスレッドを作成し(S122)、ポート情報をライブラリ40に出力する(S124)。それらの処理は、上記実施形態と同じであり、それ以降の処理(S126~S128)も、上記実施形態と同じである。また、作成されたサブスレッドでの処理は、
図3のシーケンス図において、S156及びS180の処理のみが実行されない。つまり、作成されたサブスレッドでの処理は、リセットフラグに関する処理を除いて、上記実施形態と同じである。
【0044】
また、特定ポート番号が「52000」を超えていると判断された場合(S118:YES)に、制御プログラム30は、エラー情報をライブラリ40に出力する(S300)。そして、ライブラリ40は、エラー情報を受け付けたことに応じて、終了指令を制御プログラム30に出力する(S302)。これにより、制御プログラム30は終了する。この際、制御プログラム30の終了に伴って、制御プログラム30により作成された全てのデバイスポートがクローズされる。そして、ライブラリ40は、終了指令を出力し、所定時間の経過後に、制御プログラム30を起動させる(S304)。そして、制御プログラム30は、S102以降の処理を実行する。このように、制御プログラム30を再起動させることでも、制御プログラム30により作成された全てのデバイスポートをクローズすることができ、上記実施形態と同様の効果を得ることが可能となる。
【0045】
また、上記実施形態では、制御プログラム30が作成したデバイスポートに、ブラウザ36がデバイスリクエストとして、EWS情報の要求情報を出力することで、MFP50からEWS情報を取得しているが、制御プログラム30が作成したデバイスポートに、アプリケーション32がデバイスリクエストとして、各種画像処理の要求を出力することで、MFP50に各種画像処理を実行させることができる。
【0046】
詳しくは、制御プログラム30は、
図6に示すように、サブスレッドを作成すると(S500)、そのサブスレッドにおいてデバイスポートを作成する(S502)。そして、制御プログラム30は、作成したデバイスポートのポート情報と、デバイス指定情報とを関連づけてデータ記憶領域46に記憶し(S504)、作成したデバイスポートを受付可能状態とする(S506)。次に、制御プログラム30は、そのデバイスポートのポート情報をアプリケーション32に出力する(S508)。これにより、アプリケーション32は、制御プログラム30が作成したデバイスポートにアクセス可能となり、そのデバイスポートにコピー処理の要求をHTTPで出力する(S510)。そして、制御プログラム30は、デバイスポートにHTTPでのコピー処理の要求を受け付けると、そのデバイスポートのポート情報と関連付けて記憶されているデバイス指定情報に応じたデバイス、つまり、MFP50に、コピー処理の要求をUSBプロトコルで出力する(S512)。これにより、MFP50においてコピー処理が実行される(S514)。この際、MFP50は、コピー処理を完了させると、制御プログラム30にコピー処理が完了したことを示す情報をUSBプロトコルで送信する(S516)。また、MFP50は、コピー処理にエラーが発生した場合には、エラーが発生したことを示す情報を制御プログラム30にUSBプロトコルで送信する(S516)。そして、制御プログラム30は、コピー処理が完了したことを示す情報、若しくは、エラーが発生したことを示す情報を、HTTPでアプリケーション32に出力する(S518)。このように、制御プログラム30が作成したデバイスポートに、アプリケーション32がデバイスリクエストとして、各種画像処理の要求を出力することで、MFP50に各種画像処理を実行させることもできる。
【0047】
なお、S110を実行するCPU12は、取得手段、受付手段及び第3出力手段の一例である。S118を実行するCPU12は、特定手段及び第1判断手段の一例である。S122,S500を実行するCPU12は、第2作成手段の一例である。S152,S502を実行するCPU12は、第1作成手段の一例である。S162,S512を実行するCPU12は、送信手段の一例である。S164,S516を実行するCPU12は、受信手段の一例である。S166,S518を実行するCPU12は、第1出力手段の一例である。S170を実行するCPU12は、第2出力手段の一例である。S180を実行するCPU12は、閉鎖手段の一例である。S202を実行するCPU12は、操作受付手段の一例である。S210を実行するCPU12は、第4出力手段の一例である。S214を実行するCPU12は、記憶制御手段の一例である。S222を実行するCPU12は、公開手段の一例である。S302を実行するCPU12は、閉鎖手段の一例である。
【0048】
上記した実施形態によれば、以下の効果を奏する。
【0049】
上記実施形態では、制御プログラム30が、ライブラリ40からポート情報の要求を受け付ける毎に、デバイスポートのポート番号を特定し、特定したポート番号のデバイスポートを作成している。なお、ポート番号は、51000~52000の範囲内の有限な数値とされている。そこで、デバイスポートが累積的に作成されることで、デバイスポート用に特定されるポート番号が「52000」を超える場合に、既に作成済みのデバイスポートがクローズされる。これにより、クローズされたデバイスポートのポート番号を用いて、新たにデバイスポートを作成することが可能となり、有限な数値の範囲内でポート番号を利用して、デバイスポートを作成することが可能となる。
【0050】
また、デバイスポート用に特定されるポート番号が「52000」を超えない場合に、制御プログラム30は、特定されたポート番号に応じたデバイスポートを作成する。これにより、新たなデバイスポートを作成することが可能となる。
【0051】
また、上記実施形態では、アプリケーション32のライブラリ40だけでなく、設定ツール34のライブラリ42も、制御プログラム30にポート情報の要求を出力することが可能とされている。このため、制御プログラム30により作成されるデバイスポートの数が多くなり、そのデバイスポートに用いられるポート番号の使用量も多くなる。これにより、デバイスポート用に特定されるポート番号をリセットする効果が充分に発揮される。
【0052】
また、上記実施形態では、制御プログラム30が再起動されることで、制御プログラム30により作成されたデバイスポートがクローズされる。これにより、制御プログラム30により作成された全てのデバイスポートを確実にクローズすることができる。
【0053】
また、上記実施形態では、デバイスポート用に特定されるポート番号が「52000」を超える場合に、制御プログラム30は、エラー情報をライブラリ40に出力し、そのエラー情報を出力した後に、再度、ポート情報の要求を受け付けた場合に、クローズされたデバイスポートのポート番号を、デバイスポート用のポート番号として特定する。これにより、好適にポート番号を特定することができる。
【0054】
また、上記実施形態では、制御プログラム30がサブスレッドを作成し、サブスレッドにおいてリセットフラグが監視されることで、デバイスポートがクローズされる。これにより、適切にデバイスポートをクローズすることができる。さらに、サブスレッドでは、デバイスポートがデバイスリクエストを受け付けていない場合および、デバイスポートがデバイスリクエストを受け付けていても、そのデバイスリクエストに対する返信を出力した場合に、デバイスポートがクローズされる。これにより、処理の途中でデバイスポートをクローズすることが無くなり、安全にデバイスポートをクローズすることが可能となる。
【0055】
また、上記実施形態では、ライブラリ40が、制御プログラム30からポート情報を受け付けると、そのポート情報とデバイス指定情報とを関連づけてデータ記憶領域46に記憶する。そして、ライブラリ40は、アプリケーション32からデバイス指定情報を含むポート情報の要求を受け付けると、そのデバイス指定情報がデータ記憶領域46に記憶されているか否かを判断する。この際、デバイス指定情報がデータ記憶領域46に記憶されていない場合に、ライブラリ40は、ポート情報の要求を制御プログラム30に出力する。一方、デバイス指定情報がデータ記憶領域46に記憶されている場合に、ライブラリ40は、ポート情報の要求を制御プログラム30に出力することなく、デバイス指定情報と関連付けて記憶されているポート情報をブラウザ36に出力する。これにより、制御プログラム30へのポート情報の要求を抑制することが可能となり、デバイスポートのポート番号の使用量を抑制することが可能となる。
【0056】
また、本発明は、上記実施形態に限定されるものではなく、当業者の知識に基づいて種々の変更、改良を施した種々の態様で実施することが可能である。具体的には、例えば、上記実施形態では、デバイスポートのポート番号が51000~52000の範囲で設定可能とされており、特定ポート番号が「52000」を超えた場合にデバイスポートがクローズされているが、51000~52000のうちの所定の値、例えば、「51900」を、特定ポート番号が超えた場合にデバイスポートがクローズされてもよい。
【0057】
また、上記実施形態では、制御プログラム30が再起動される際に、ライブラリ40の処理により制御プログラム30が停止した後に、ライブラリ40の処理により制御プログラム30が再起動しているが、制御プログラム30の処理により制御プログラム30が停止し、制御プログラム30の処理により制御プログラム30が再起動してもよい。
【0058】
また、上記実施形態では、HTTPでのデバイスリクエストをUSBI/F20を介してデバイスに送信し、そのデバイスからデバイスリクエストの返信をUSBI/F20を介して受信する技術に、本発明が適用されているが、第1の通信プロトコルでのデバイスリクエストを、その第1のプロトコルに応じた第1の通信インタフェースと異なる第2の通信インタフェースを介してデバイスに送信し、そのデバイスからデバイスリクエストの返信を第2の通信インタフェースを介して受信する技術に、本発明が適用されてもよい。つまり、第1の通信プロトコル及び第2の通信プロトコルが、HTTP及びUSBプロトコルに限定される必要はない。
【0059】
また、上記実施形態では、CPU12によって
図2~
図6に示す処理が実行される例を説明したが、これら処理は、CPU12に限らず、ASICや他の論理集積回路により実行されてもよいし、これら処理が、CPU等やASIC、他の論理集積回路が協働することにより実行されてもよい。
【符号の説明】
【0060】
10:PC、12:CPU、20:USBI/F、30:制御プログラム、32:アプリケーション、36:ブラウザ、40:ライブラリ、50:MFP