(57)【要約】      （修正有）【課題】コンピュータが映像信号を２機のディスプレイに逆に出力しないようにする。【解決手段】ハブ４０のポート４１，４３にそれぞれ接続された第一投影機２１及び第二投影機２３にハブ４０を介してそれぞれ映像信号を出力するホスト装置５が、投影機２１，２３の接続先のポート番号と、投影機２１，２３のシリアル番号とを対応付けて取得する対応付け処理と、投影機２１，２３を列挙して、投影機２１，２３のディスプレイデバイス情報を取得するとともに、投影機２１，２３のシリアル番号を列挙順に取得する列挙処理と、対応付け処理により取得した対応付けと列挙処理により取得した列挙とを照合して、ポート番号順と同一配列順で、ディスプレイデバイス情報を配列の要素に格納する配列生成処理と、を実行する。【選択図】図２
2018116503.tif 000002
【特許請求の範囲】
【請求項１】
ハブの第一下流側ポート及び第二下流側ポートにそれぞれ接続された第一ディスプレイ及び第二ディスプレイに前記ハブを介して映像信号を出力するコンピュータに、
前記第一ディスプレイ及び前記第二ディスプレイのそれぞれの接続先のポート番号と、前記第一ディスプレイ及び前記第二ディスプレイのシリアル番号とを対応付けて取得する対応付け処理と、
前記第一ディスプレイ及び前記第二ディスプレイを列挙して、前記第一ディスプレイ及び前記第二ディスプレイのそれぞれのディスプレイデバイス情報を取得するとともに、前記第一ディスプレイ及び前記第二ディスプレイのシリアル番号を列挙順に取得する列挙処理と、
前記対応付け処理により取得した対応付けと前記列挙処理により取得した列挙とを照合して、前記対応付け処理により取得した前記ポート番号順と同一配列順で、前記列挙処理により取得した前記ディスプレイデバイス情報を配列の要素に格納する配列生成処理と、を実行させるためのプログラム。
【請求項２】
前記ハブのデバイスＩＤを取得することによって前記ハブを特定する特定処理を更に前記コンピュータに実行させるとともに、
前記対応付け処理において、前記特定処理に取得したデバイスＩＤを指定して、前記コンピュータのオペレーティングシステムに問い合わせることによって、前記ポート番号と前記シリアル番号を対応付けて取得する
請求項１に記載のプログラム。
【請求項３】
ハブの第一下流側ポート及び第二下流側ポートにそれぞれ接続された第一ディスプレイ及び第二ディスプレイに前記ハブを介してそれぞれ映像信号を出力するホスト装置であって、
前記第一ディスプレイ及び前記第二ディスプレイのそれぞれの接続先のポート番号と、前記第一ディスプレイ及び前記第二ディスプレイのシリアル番号とを対応付けて取得する対応付け処理と、
前記第一ディスプレイ及び前記第二ディスプレイを列挙して、前記第一ディスプレイ及び前記第二ディスプレイのそれぞれのディスプレイデバイス情報を取得するとともに、前記第一ディスプレイ及び前記第二ディスプレイのシリアル番号を列挙順に取得する列挙処理と、
前記対応付け処理により取得した対応付けと前記列挙処理により取得した列挙とを照合して、前記対応付け処理により取得した前記ポート番号順と同一配列順で、前記列挙処理により取得した前記ディスプレイデバイス情報を配列の要素に格納する配列生成処理と、を実行するホスト装置。
【請求項４】
ハブの第一下流側ポート及び第二下流側ポートにそれぞれ接続された第一ディスプレイ及び第二ディスプレイに前記ハブを介してそれぞれ映像信号を出力するホスト装置が、
前記第一ディスプレイ及び前記第二ディスプレイのそれぞれの接続先のポート番号と、前記第一ディスプレイ及び前記第二ディスプレイのシリアル番号とを対応付けて取得する対応付け処理と、
前記第一ディスプレイ及び前記第二ディスプレイを列挙して、前記第一ディスプレイ及び前記第二ディスプレイのそれぞれのディスプレイデバイス情報を取得するとともに、前記第一ディスプレイ及び前記第二ディスプレイのシリアル番号を列挙順に取得する列挙処理と、
前記対応付け処理により取得した対応付けと前記列挙処理により取得した列挙とを照合して、前記対応付け処理により取得した前記ポート番号順と同一配列順で、前記列挙処理により取得した前記ディスプレイデバイス情報を配列の要素に格納する配列生成処理と、を実行する配列順特定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、ホスト装置及び配列特定方法に関する。
【背景技術】
【０００２】
光硬化性樹脂に光を照射して、立体物を造形する造形装置が知られている（特許文献１〜３参照）。
特許文献１には、樹脂槽内の光硬化性樹脂の上方に設置された２機の走査型レーザー照射器を備えた造形装置が開示されている。２機の走査型レーザー照射器によってレーザー光のスポットを光硬化性樹脂の表面に沿って二次元的に変位させる。これにより、光硬化性樹脂のうち露光部分が硬化し、造形物が形成される。
特許文献２，３には、樹脂槽内の光硬化性樹脂の下方に設置された２機の投影機を備えた造形装置が開示されている。コンピュータが２機の投影機に別々の映像信号を出力するので、映像信号に従った映像が２機の投影機によって光硬化性樹脂に投影される。これにより、光硬化性樹脂のうち露光部分が硬化し、造形物が形成される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平４−１１３８２８号公報
【特許文献２】特開２０１５−１６６１０号公報
【特許文献３】特開２０１５−２０１７６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、造形装置の２機の投影機がＵＳＢハブ等のハブに接続されている場合、そのハブがコンピュータに初めて接続されると、コンピュータがプラグアンドプレイ機能によって２機の投影機を接続順に投影機を自動的に認識する。ハブを用いるため、２機の投影機の認識順が不定であり、どちらの投影機が先に認識されるか分からない。
一方、コンピュータが２機の投影機を識別して制御するために、２機の投影機の制御プログラムでは配列が宣言されている。配列の要素には、投影機のディスプレイデバイス情報が格納される。ディスプレイデバイス情報は、コンピュータ上で稼働中のオペレーティングシステムから列挙処理によって取得されたものである。この列挙処理がコンピュータによって実行されると、２機の投影機のディスプレイデバイス情報は、最初のプラグアンドプレイ処理における投影機の認識順に列挙される。その認識順と同じ列挙順序でディスプレイデバイス情報が配列の要素に格納されると、先に認識された投影機のディスプレイデバイス情報が配列の１番目の要素に格納され、後に認識された投影機のディスプレイデバイス情報が配列の２番目の要素に格納される。ところが、上述のように２機の投影機の認識順、つまり列挙順が不定であるので、先に認識・列挙された投影機のディスプレイデバイス情報が配列の２番目の要素に格納すべきものを、配列の１番目の要素に誤って格納してしまうという事象が生じることがある。この場合、投影機によって投影される映像が逆になってしまう。つまり、一方の投影機に出力すべき映像信号が他方の投影機に出力されてしまい、他方の投影機に出力すべき映像信号が一方の投影機によって投影されてしまう。
そこで、本発明は上記事情に鑑みてなされたものであり、本発明が解決しようとする課題は、コンピュータが映像信号を２機のディスプレイに逆に出力しないようにすることである。
【課題を解決するための手段】
【０００５】
上記課題を解決するための主たる発明は、ハブの第一下流側ポート及び第二下流側ポートにそれぞれ接続された第一ディスプレイ及び第二ディスプレイに前記ハブを介して映像信号を出力するコンピュータに、前記第一ディスプレイ及び前記第二ディスプレイのそれぞれの接続先のポート番号と、前記第一ディスプレイ及び前記第二ディスプレイのシリアル番号とを対応付けて取得する対応付け処理と、前記第一ディスプレイ及び前記第二ディスプレイを列挙して、前記第一ディスプレイ及び前記第二ディスプレイのそれぞれのディスプレイデバイス情報を取得するとともに、前記第一ディスプレイ及び前記第二ディスプレイのシリアル番号を列挙順に取得する列挙処理と、前記対応付け処理により取得した対応付けと前記列挙処理により取得した列挙とを照合して、前記対応付け処理により取得した前記ポート番号順と同一配列順で、前記列挙処理により取得した前記ディスプレイデバイス情報を配列の要素に格納する配列生成処理と、を実行させるためのプログラムである。
【０００６】
本発明の他の特徴については、後述する明細書及び図面の記載により明らかにする。
【発明の効果】
【０００７】
本発明によれば、第一ディスプレイに出力すべき映像信号を確実に第一ディスプレイに出力することができ、第二ディスプレイに出力すべき映像信号を確実に第二ディスプレイに出力することができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、破断された状態で示された造形装置及びホスト装置を備える造形システムの構成図である。
【図２】図２は、造形装置のブロック図である。
【図３】図３は、ホスト装置のブロック図である。
【図４】図４は、設定情報データベースの説明図である。
【図５】図５は、ホスト装置の処理の流れを示したフローチャートである。
【図６】図６は、互いに対応付けられたポート番号との説明図である。
【図７】図７は、列挙したディスプレイデバイスのディスプレイデバイス情報とシリアル番号の説明図である。
【図８】図８は、列挙したディスプレイデバイスのディスプレイデバイス情報とシリアル番号の説明図である。
【図９】図９は、配列の説明図である。
【発明を実施するための形態】
【０００９】
以下、図面を参照して、本発明の実施形態について説明する。但し、以下に述べる実施形態には、本発明を実施するために技術的に好ましい種々の限定が付されているが、本発明の範囲を以下の実施形態及び図示例に限定するものではない。
【００１０】
＜１．造形システム＞
図１は造形システム１の概略図である。図１に示すように、造形システム１は造形装置２及びホスト装置５を備える。ホスト装置５と造形装置２は、ＵＳＢ（Universal Serial Bus）の規格に準拠したＵＳＢケーブル４を介して接続されている。ホスト装置５と造形装置２はＵＳＢの規格に準拠した方式で相互に通信を行う。ホスト装置５がＵＳＢ規格の通信におけるホスト（親）であり、造形装置２がＵＳＢ規格の通信におけるデバイス（子）である。特に、造形装置２はハブ接続型のコンパウンドデバイス（compound device）である。
【００１１】
＜２．造形装置＞
造形装置２は、二次元的なスライス造形物を順次生成して積層することによって、これらスライス造形物の積層体である三次元的な造形物を造形する装置である。図１及び図２を参照して、造形装置２について詳細に説明する。ここで、図２は造形装置２のブロック図である。
【００１２】
図１に示すように、造形装置２は筐体２０、第一投影機２１、第二投影機２３、樹脂槽２４、昇降装置２５及びホルダ２６等を備える。更に、図２に示すように、造形装置２はメインコントローラ２２、ＵＳＢハブ４０、メモリ２９及びデバイス３０を備える。
【００１３】
図１に示すように、筐体２０は中空を有した箱状に形成されている。筐体２０の天板が透光性材料（透明材料）からなるか、筐体２０の天板には開口が形成されている。筐体２０の天板上には樹脂槽２４が設置されている。樹脂槽２４の上面が開放されており、樹脂槽２４の少なくとも底板が透光性材料（透明材料）からなる。樹脂槽２４には、紫外線等の光によって硬化する光硬化性樹脂２７が貯留される。
【００１４】
筐体２０上には昇降装置２５が設けられている。昇降装置２５にはホルダ２６が設けられており、昇降装置２５がメインコントローラ２２によって制御されることによってホルダ２６を昇降させる。昇降装置２５がホルダ２６を下降させると、ホルダ２６が樹脂槽２４内の光硬化性樹脂２７に浸漬される。
【００１５】
筐体２０内には、樹脂槽２４の底に映像を投影する第一投影機２１及び第二投影機２３が設けられている。投影機２１，２３は何れも投影方式のディスプレイであり、樹脂槽２４の底には、投影機２１，２３の投影映像が合成されて表示される。投影機２１，２３によって投影される映像は、光の明暗の分布によって表される映像（例えば、モノクロ映像、二値映像又はグレースケール映像）である。
【００１６】
図２に示すように、ＵＳＢハブ４０は下流側ポート４１〜４３、上流側ポート４５及びハブコントローラ４６を有する。上流側ポート４５がＵＳＢケーブル４を介してホスト装置５に接続されている。第一下流側ポート４１が第一投影機２１に接続され、第二下流側ポート４３が第二投影機２３に接続され、第三下流側ポート４２がメインコントローラ２２に接続されている。ＵＳＢハブ４０は、ＵＳＢの規格に準拠した方式で、ホスト装置５と投影機２１，２３及びメインコントローラ２２との間の信号を管理する。
【００１７】
下流側ポート４１〜４３には、互いに異なる値のポート番号が割り当てられている。例えば、第一下流側ポート４１のポート番号が“１”であり、第二下流側ポート４３のポート番号が“３”であり、第三下流側ポート４２のポート番号が“２”である。
【００１８】
第一投影機２１にはＵＳＢコントローラが内蔵されている。第一投影機２１は、ホスト装置５からＵＳＢハブ４０を介して転送された第一映像信号をＵＳＢコントローラにより入力し、その第一映像信号に従った映像を樹脂槽２４の底に投影する。第二投影機２３にもＵＳＢコントローラが内蔵され、第二投影機２３はホスト装置５から転送された第二映像信号に従った映像を樹脂槽２４の底に投影する。
【００１９】
メインコントローラ２２はマイクロコンピュータを有する。投影機２１，２３及び昇降装置２５がメインコントローラ２２によって制御され、その制御のためにホスト装置５がＵＳＢハブ４０を介してメインコントローラ２２に指令を出力する。つまり、メインコントローラ２２は、ホスト装置５の指令に従って投影機２１，２３及び昇降装置２５を制御する。これにより、造形装置２が造形動作する。
【００２０】
造形装置２の造形動作は以下の通りである。まず、図１において二点鎖線で示すように、昇降装置２５がホルダ２６を下降させることによって、ホルダ２６が樹脂槽２４内の樹脂２７に浸漬される。その後、投影機２１，２３の光源が間欠的に点灯するとともに、昇降装置２５がホルダ２６を間欠的に一定距離だけ上昇させる。ここで、投影機２１，２３の光源の消灯タイミングが昇降装置２５の作動タイミング（ホルダ２６が上昇するタイミング）に同期し、投影機２１，２３の光源の点灯タイミングが昇降装置２５の停止タイミング（ホルダ２６の上昇が停止するタイミング）に同期する。それゆえ、昇降装置２５の各回の停止時には、投影機２１，２３が映像信号に従った映像を樹脂槽２４の底に所定露光時間だけ投影する。従って、昇降装置２５の各回の停止時には、樹脂槽２４の底にある樹脂２７のうち映像の明部に相当する部分（露光部分）が光（例えば紫外線）によって硬化し、映像の明部の形状をした二次元的なスライス造形物（硬化樹脂）が樹脂槽２４の底に形成される。昇降装置２５の各回の作動時には、スライス造形物がホルダ２６とともに上昇される。このように、投影機２１，２３による投影・露光とホルダ２６の上昇とが交互に繰り返されることにより、ホルダ２６の下の三次元的な造形物が下方へ成長する。
【００２１】
図２に示すように、ＵＳＢハブ４０にはハブコントローラ４６が内蔵されている。ＵＳＢハブ４０のハブコントローラ４６は、ホスト装置５（特にＵＳＢホストコントローラ５４）がＵＳＢハブ４０を認識するための識別情報を予め記憶している。識別情報には、ベンダＩＤ（idVendor）、プロダクトＩＤ（idProduct）及びシリアル番号（iSerialNumber）等が含まれる。
【００２２】
ホスト装置５と造形装置２がＵＳＢケーブル４によって接続されると、ＵＳＢの規格に準拠したエニュメレーション（enumeration）処理がＵＳＢハブ４０のハブコントローラ４６とホスト装置５のＵＳＢホストコントローラ５４（図３参照）との間で行われ、ホスト装置５がＵＳＢハブ４０をＵＳＢハブデバイスとして認識する（いわゆる、プラグアンドプレイ機能）。エニュメレーション処理の際、ＵＳＢハブ４０のハブコントローラ４６がホスト装置５のＵＳＢホストコントローラ５４の要求に応じてＵＳＢハブ４０の識別情報（ベンダＩＤ、プロダクトＩＤ及びシリアル番号）をＵＳＢホストコントローラ５４に転送する。
【００２３】
第一投影機２１のＵＳＢコントローラは、ホスト装置５が第一投影機２１を識別するための識別情報（デバイスディスクリプタ）を予め記憶している。ホスト装置５と造形装置２がＵＳＢケーブル４によって接続されると、ＵＳＢの規格に準拠したエニュメレーション処理が第一投影機２１のＵＳＢコントローラとホスト装置５のＵＳＢホストコントローラ５４との間で行われ、ホスト装置５が第一投影機２１をディスプレイデバイスとして認識する。
【００２４】
第一投影機２１と同様に、第二投影機２３のＵＳＢコントローラが第二投影機２３の識別情報（デバイスディスクリプタ）を予め記憶しており、エニュメレーション処理の際、第二投影機２３のＵＳＢコントローラが第二投影機２３の識別情報をホスト装置５のＵＳＢホストコントローラ５４に転送する。投影機２１，２３は同一機種であるので、第一投影機２１のベンダＩＤ及びプロダクトＩＤは第二投影機２３のベンダＩＤとプロダクトＩＤと同じであるが、第一投影機２１のシリアル番号が第二投影機２３のシリアル番号と相違する。
【００２５】
メインコントローラ２２には、ＵＳＢコントローラが内蔵されている。メインコントローラ２２のＵＳＢコントローラは、ホスト装置５が造形装置２（特にメインコントローラ２２）を認識するための識別情報（ベンダＩＤ、プロダクトＩＤ及びシリアル番号）を予め記憶している。ホスト装置５と造形装置２がＵＳＢケーブル４によって接続されると、ＵＳＢコントローラとＵＳＢホストコントローラ５４との間のエニュメレーション処理によってホスト装置５が造形装置２を特定プリンタ及びＵＳＢ標準プリンタとして認識する。エニュメレーション処理の際、ＵＳＢコントローラが識別情報をＵＳＢホストコントローラ５４に転送する。
【００２６】
ここで、ＵＳＢハブ４０とホスト装置５との間のエニュメレーション処理は、投影機２１，２３及びメインコントローラ２２とホスト装置５との間のエニュメレーション処理よりも前に行われる。投影機２１，２３及びメインコントローラ２２のエニュメレーション処理の順番は不定であり、ＵＳＢハブ４０を介してホスト装置５との接続が確立された順である。
【００２７】
メインコントローラ２２の処理に必要なプログラムはメモリ２９に格納されている。また、メモリ２９は、メインコントローラ２２の処理の際にワークエリアをメインコントローラ２２に提供する。メインコントローラ２２には、各種のデバイス３０が接続されている。デバイス３０は例えば入力装置（例えば、押しボタン、押しキー、スイッチ等）、出力装置（例えば、発光素子、スピーカ、ドットマトリックス表示器等）である。
【００２８】
＜３．ホスト装置＞
ホスト装置５はパーソナルコンピュータである。ホスト装置５は、処理ユニット５１、システムメモリ５２、補助記憶装置５３、ＵＳＢホストコントローラ５４、システムバス５５及びビデオコントローラ５６を備える。処理ユニット５１、システムメモリ５２、補助記憶装置５３、ＵＳＢホストコントローラ５４及びビデオコントローラ５６はシステムバス５５に接続されている。処理ユニット５１はＣＰＵ（central processing unit）を有する。システムメモリ５２はＲＡＭ（random access memory）を有する。補助記憶装置５３は半導体記憶装置又はハードディスクドライブを有する。
【００２９】
ビデオコントローラ５６には表示装置８が接続されている。ビデオコントローラ５６は、処理ユニット５１の指令に従って映像信号を生成して、その映像信号を表示装置８に出力する。これにより、表示装置８には、映像信号に従った映像が表示される。
【００３０】
ＵＳＢホストコントローラ５４には、入力装置（例えばキーボード、ポインティングデバイス等）７が接続されている。ＵＳＢホストコントローラ５４が入力装置７とシステムバス５５との間の信号の転送を制御し、これによりユーザーは入力装置７を通じてコマンドや情報等をホスト装置５に入力することができる。
【００３１】
ＵＳＢホストコントローラ５４は、処理ユニット５１の指令に従って、ＵＳＢの規格に準拠した方式で、ＵＳＢハブ４０との通信を制御する。更に、ＵＳＢホストコントローラ５４は、処理ユニット５１の指令に従って、ＵＳＢハブ４０を介して投影機２１，２３及びメインコントローラ２２との通信を制御する。
【００３２】
補助記憶装置５３には、オペレーティングシステム（以下、ＯＳという）６１及び制御プログラム６２が格納されている。ＯＳ６１は、例えばWindows（登録商標）、Android（登録商標）、Linux（登録商標）、iOS（登録商標）又はmacOS（登録商標）である。ＯＳ６１は、処理ユニット５１によって実行されて、コンピュータとしてのホスト装置５上で稼働する。システムメモリ５２は処理ユニット５１にワークエリアを提供するものであり、稼働されたＯＳ６１はシステムメモリ５２に展開される。
【００３３】
ＯＳ６１には、設定情報データベース６９が組み込まれている。設定情報データベース６９には、ＯＳ６１に関する各種の設定情報や、ＯＳ６１に認識された各種のデバイスの設定情報等が登録されている。
【００３４】
ＯＳ６１にはプラグアンドプレイ（plug-and-play）機能が組み込まれている。ＯＳ６１のプラグアンドプレイ機能は、造形装置２がホスト装置５に初めて接続された場合に、ホスト装置５に対して、ＵＳＢハブ４０、第一投影機２１、第二投影機２３及び造形装置２の検出及び認識をさせて、これらのドライバをＯＳ６１にインストールさせる。ホスト装置５上で稼働されたＯＳ６１では、投影機２１，２３がＯＳ６１上において抽象化されたディスプレイデバイスとして認識され、造形装置２（特にメインコントローラ２２）がＯＳ６１上において抽象化された特定プリンタ及びＵＳＢ標準プリンタとして認識され、ＵＳＢハブ４０がＯＳ６１上において抽象化されたＵＳＢハブデバイスとして認識される。
なお、投影機２１，２３が抽象化されたディスプレイデバイスは、ＵＳＢデバイスとしてもＯＳ６１に設定登録されている。造形装置２が抽象化されたＵＳＢ標準プリンタも、ＵＳＢデバイスとしてもＯＳ６１に設定登録されている。
【００３５】
造形装置２が抽象化された特定プリンタには、名称及び一意のプラグアンドプレイデバイスＩＤがＯＳ６１のプラグアンドプレイ機能によって割り当てられている。図４に示すように、特定プリンタの名称情報６９ａ及びプラグアンドプレイデバイスＩＤ６９ｂは、設定情報データベース６９に登録されている。
【００３６】
また、造形装置２が抽象化されたＵＳＢ標準プリンタには、一意のデバイスＩＤがＯＳ６１のプラグアンドプレイ機能によって割り当てられている。図４に示すように、ＵＳＢ標準プリンタのデバイスＩＤ６９ｃは、設定情報データベース６９に登録されている。ＵＳＢ標準プリンタのデバイスＩＤ６９ｃは、メインコントローラ２２のＵＳＢコントローラからホスト装置５に転送されたベンダＩＤとプロダクトＩＤとシリアル番号の組合せである。
【００３７】
ＵＳＢハブ４０が抽象化されたＵＳＢハブデバイスには、一意のデバイスＩＤがＯＳ６１のプラグアンドプレイ機能によって割り当てられている。図４に示すように、ＵＳＢハブデバイスのデバイスＩＤ６９ｄは、設定情報データベース６９に登録されている。ＵＳＢハブデバイスのデバイスＩＤ６９ｄは、ＵＳＢハブ４０のハブコントローラ４６からホスト装置５に転送されたベンダＩＤとプロダクトＩＤとシリアル番号の組合せである。
【００３８】
第一投影機２１が抽象化された第一ディスプレイデバイスには、一意のデバイスＩＤがＯＳ６１のプラグアンドプレイ機能によって割り当てられている。第二投影機２３が抽象化された第二ディスプレイデバイスには、一意のデバイスＩＤがＯＳ６１のプラグアンドプレイ機能によって割り当てられている。図４に示すように、第一ディスプレイデバイス及び第二ディスプレイデバイスのデバイスＩＤ６９ｅ，６９ｈは、設定情報データベース６９に登録されている。第一ディスプレイデバイスのデバイスＩＤは、第一投影機２１のＵＳＢハブコントローラ４６からホスト装置５に転送されたベンダＩＤとプロダクトＩＤとシリアル番号の組合せである。第二ディスプレイデバイスのデバイスＩＤは、第二投影機２３のＵＳＢハブコントローラ４６からホスト装置５に転送されたベンダＩＤとプロダクトＩＤとシリアル番号の組合せである。
【００３９】
また、図４に示すように、第一投影機２１のディスプレイデバイス情報６９ｆが、第一ディスプレイデバイスのデバイスＩＤ６９ｅに対応付けられて、設定情報データベース６９に登録されている。第一投影機２１が接続された第一下流側ポート４１のポート番号６９ｇが、ＯＳ６１のプラグアンドプレイ機能によって、第一ディスプレイデバイスのデバイスＩＤに対応付けられて、設定情報データベース６９に登録されている。
また、第二投影機２３のディスプレイデバイス情報６９ｉが、第二ディスプレイデバイスのデバイスＩＤ６９ｈに対応付けられて、設定情報データベース６９に登録されている。第二投影機２３が接続された第二下流側ポート４３のポート番号６９ｊが、ＯＳ６１のプラグアンドプレイ機能によって、第二ディスプレイデバイスのデバイスＩＤ６９ｈに対応付けられて、設定情報データベース６９に登録されている。
【００４０】
ＯＳ６１には、制御プログラム６２がインストールされている。処理ユニット５１が稼働中のＯＳ６１上において制御プログラム６２を実行すると、造形装置２がホスト装置５によって制御される。造形装置２がホスト装置５によって制御されると、造形装置２が上述のような造形動作をする。造形動作以外の動作（例えば、試運転動作、メンテナンス動作、初期化動作等）も処理ユニット５１による制御プログラム６２の実行によって実現される。
【００４１】
制御プログラム６２には、制御プログラム６２における投影機２１，２３の配列順を特定するための配列順特定プログラムモジュール６３が組み込まれている。このモジュール６３もプログラムである。ユーザーが入力装置７によってホスト装置５に制御開始の指令した場合、処理ユニット５１が制御プログラム６２を実行するが、最初に配列順特定プログラムモジュール６３が処理ユニット５１によって実行される。図５は、配列順特定プログラムモジュール６３に従った処理ユニット５１の処理順序を示したフローチャートである。
【００４２】
（１）  ステップＳ１：ハブ特定処理
ステップＳ１では、処理ユニット５１は、ＵＳＢハブ４０がＯＳ６１上において抽象化されたＵＳＢハブデバイスのデバイスＩＤを取得することによって、そのＵＳＢハブデバイスを特定する。具体的には次の通りである。
【００４３】
まず、処理ユニット５１は、特定プリンタの名称を指定することによって特定プリンタに割り当てられたプラグアンドプレイデバイスＩＤを稼働中のＯＳ６１に問い合わせ、その結果を特定プリンタのプラグアンドプレイデバイスＩＤとして取得する（ステップＳ１１）。ＯＳ６１がWindowsである場合、ＯＳ６１に組み込まれているWindows API（アプリケーションプログラムインタフェース）の幾つかの関数（例えば、EnumPrinter()関数、OpenPrinter()関数及びGetPrinterDataEx()関数）の処理が処理ユニット５１によって実行されることによって、稼働中のＯＳ６１が設定情報データベース６９を参照して、特定プリンタのプラグアンドプレイデバイスＩＤ６９ｂの値が結果として返る。
【００４４】
次に、処理ユニット５１が、特定プリンタのプラグアンドプレイデバイスＩＤを指定することによってＵＳＢ標準プリンタのデバイスＩＤをＯＳ６１に問い合わせ、問い合わせの結果をＵＳＢ標準プリンタのデバイスＩＤとして取得する（ステップＳ１２）。ＯＳ６１がWindowsである場合、Windows APIの幾つかの関数（例えば、CM_Get_Device_ID()関数等）の処理が処理ユニット５１によって実行されることによって、稼働中のＯＳ６１が設定情報データベース６９を参照して、ＵＳＢ標準プリンタのデバイスＩＤ６９ｃの値が結果として返る。
【００４５】
次に、処理ユニット５１が、ＵＳＢ標準プリンタのデバイスＩＤを指定することによってＵＳＢハブデバイスのデバイスＩＤをＯＳ６１に問い合わせ、その結果をＵＳＢハブのデバイスＩＤを取得する（ステップＳ１３）。ＯＳ６１がWindowsである場合、Windows APIの幾つかの関数（例えば、CM_Get_Device_ID()関数等）の処理が処理ユニット５１によって実行されることによって、稼働中のＯＳ６１が設定情報データベース６９を参照して、ＵＳＢハブのデバイスＩＤ６９ｄの値が結果として返る。以上のステップＳ１１〜Ｓ１３の処理によってホスト装置５に組み込まれた複数のＵＳＢハブ（ルートハブも含む）の中からＵＳＢハブ４０が特定される。
【００４６】
（２）  ステップＳ２：対応付け処理
次のステップＳ２では、処理ユニット５１が、ＵＳＢハブデバイスのデバイスＩＤを指定してＯＳ６１に要求することによって、ＵＳＢハブデバイスの下位にあるＵＳＢデバイス（但し、ＵＳＢ標準プリンタを除く）の接続先のポート番号と、そのＵＳＢデバイスのシリアル番号とを対応付けて取得する。具体的には、処理ユニット５１が、ＵＳＢデバイスとしてのディスプレイデバイス毎に、接続先のポート番号の特定とシリアル番号の取得を行う。ＯＳ６１がWindowsである場合、Windows APIの幾つかの関数（例えばSetupDiGetDeviceRegistryProperty()関数等）の処理が処理ユニット５１によって実行されることによって、稼働中のＯＳ６１が設定情報データベース６９を参照して、接続先のポート番号６９ｇ，６９ｊの値が結果として返る。また、Windows APIの幾つかの関数（例えばCM_Get_Device_ID()関数等）の処理が処理ユニット５１によって実行されることによって、稼働中のＯＳ６１が設定情報データベース６９を参照して、ＵＳＢデバイスとしての第一ディスプレイデバイス及び第二ディスプレイデバイスのデバイスＩＤ６９ｅ，６９ｈの値が結果として返る。ここで、返り値であるデバイスＩＤはベンダＩＤとプロダクトＩＤとシリアル番号の組合せであるので、処理ユニット５１がデバイスＩＤからシリアル番号を抽出する。
【００４７】
図６は、処理ユニット５１が取得したポート番号とシリアル番号との対応付けの一例を示したものである。第一下流側ポート４１の下位に第一投影機２１が接続されているので、第一下流側ポート４１に割り当てられたポート番号（図６における値は“1”）は、第一投影機２１が抽象化された第一ディスプレイデバイスのデバイスＩＤ中のシリアル番号（図６における値は“0123456789ABCDEF”）に対応付けられる。第二下流側ポート４３に割り当てられたポート番号（図６における値は“3”）は、第一投影機２１が抽象化された第一ディスプレイデバイスのデバイスＩＤ中のシリアル番号（図６における値は“0987654321FEDCBA”）に対応付けられる。なお、ポート番号及びシリアル番号の具体的な値は図６に示すものに限るものではない。
【００４８】
（３）  ステップＳ３：列挙処理
次のステップＳ３では、処理ユニット５１が、投影機２１，２３が抽象化された第一ディスプレイデバイス及び第二ディスプレイデバイスのデバイス情報とシリアル番号を取得する。具体的には、次の通りである。
【００４９】
処理ユニット５１が、ＯＳ６１に認識された第一ディスプレイデバイス及び第二ディスプレイデバイスをＯＳ６１に列挙させて、ＯＳ６１に認識された第一ディスプレイデバイス及び第二ディスプレイデバイスのデバイス情報を取得する（ステップＳ３１）。ＯＳ６１がWindowsである場合、Windows APIの関数（例えばEnumDisplayDevices()関数）の処理が処理ユニット５１によって実行されることによって、稼働中のＯＳ６１が設定情報データベース６９を参照して、ディスプレイデバイス情報が列挙されて返る。
【００５０】
ここで、ディスプレイデバイスの列挙順は、造形装置２が最初にホスト装置５に接続された際のＯＳ６１がプラグアンドプレイ機能によって投影機２１，２３を初めて認識した順である。つまり、ＯＳ６１がプラグアンドプレイ機能によって第二投影機２３より先に第一投影機２１を認識した場合、図７に示すように、処理ユニット５１は先に列挙された第一ディスプレイデバイスのデバイス情報（図７における値は“AAAAAA”）を先に取得し、その後、後に列挙された第二ディスプレイデバイスのデバイス情報（図７における値は“BBBBBB”）を取得する。一方、ＯＳ６１がプラグアンドプレイ機能によって第一投影機２１より先に第二投影機２３を認識した場合、図８に示すように、処理ユニット５１は先に列挙された第二ディスプレイデバイスのデバイス情報（図８における値は“BBBBBB”）を先に取得し、その後、後に列挙された第二ディスプレイデバイスのデバイス情報（図８における値は“AAAAAA”）を取得する。なお、図７及び図８は、ディスプレイデバイス情報とシリアル番号の列挙の一例を示したものである。
【００５１】
次に、処理ユニット５１が、ＯＳ６１に要求することによって、列挙された第一ディスプレイデバイス及び第二ディスプレイデバイスのシリアル番号をディスプレイデバイス情報の列挙順に取得する（ステップＳ３２）。ＯＳ６１がWindowsである場合、Windows APIの幾つかの関数（例えばRegEnumValue()関数等）の処理が処理ユニット５１によって実行されることによって、稼働中のＯＳ６１が設定情報データベース６９を参照して、ディスプレイデバイスのデバイスＩＤが返る。返り値であるデバイスＩＤはベンダＩＤとプロダクトＩＤとシリアル番号であるので、処理ユニット５１がデバイスＩＤからシリアル番号を抽出する。
【００５２】
ここで、ＯＳ６１がプラグアンドプレイ機能によって第二投影機２３よりも先に第一投影機２１を認識した場合、図７に示すように、処理ユニット５１は先に列挙された第一ディスプレイデバイスのシリアル番号（図７における値は“0123456789ABCDEF”）を先に取得し、その後、後に列挙された第二ディスプレイデバイスのシリアル番号（図７における値は“0987654321FEDCBA”）を取得する。一方、ＯＳ６１がプラグアンドプレイ機能によって第一投影機２１より先に第二投影機２３を認識した場合、図８に示すように、処理ユニット５１は先に列挙された第二ディスプレイデバイスのシリアル番号（図８における値は“0987654321FEDCBA”）を先に取得し、その後、後に列挙された第二ディスプレイデバイスのシリアル番号（図８における値は“0123456789ABCDEF”）を取得する。
【００５３】
（４）  ステップＳ４
次のステップＳ４では、処理ユニット５１が、ステップＳ２の対応付けとステップＳ３の列挙とを照合して、ステップＳ２の対応付けにおけるポート番号の順（具体的には昇順）と同一配列順で、ディスプレイデバイス情報を配列の要素に格納する。
【００５４】
具体的には、処理ユニット５１は、ステップＳ２の対応付けとステップＳ３の列挙とを照合して、ポート番号順にステップＳ２の対応付けのシリアル番号と同一の値のシリアル番号をステップＳ３の列挙の中から検索する。そして、処理ユニット５１は、ステップＳ３の列挙を参照して、検索順と同一の配列順で、検索したシリアル番号と同一列挙順のディスプレイデバイス情報を配列の要素に格納する。
【００５５】
ステップＳ２において取得したポート番号とシリアル番号が図６に示すような値であり、ステップＳ３で取得したディスプレイデバイス情報及びシリアル番号が図７又は図８に示すような値である場合、ステップＳ４で生成される配列は図９に示すようになる。図６〜図９に示すように、第一ディスプレイデバイス及び第二ディスプレイデバイスのデバイス情報の列挙順に関わらず、配列Array[ ]の１番目の要素には第一ディスプレイデバイスのデバイス情報が格納され、配列Array[ ]の２番目の要素には第二ディスプレイデバイスのデバイス情報が格納される。
【００５６】
この配列は制御プログラム６２において宣言された配列であって、制御プログラム６２における第一ディスプレイデバイスと第二ディスプレイデバイスの配列順を特定するものである。この配列が宣言された制御プログラム６２が処理ユニット５１によって実行されると、第一投影機２１と第二投影機２３が正しい配列順で制御される。つまり、処理ユニット５１は、第一投影機２１に出力すべき第一映像信号を第一投影機２１に確実に出力するように制御し、第二投影機２３に出力すべき第二映像信号を第二投影機２３に確実に出力するように制御する。
【００５７】
＜４．  効果＞
以上のように、ステップＳ２の対応付けとステップＳ３の列挙とが照合されることによって、ステップＳ２の対応付けにおけるポート番号順と同一配列順で、第一ディスプレイデバイスと第二ディスプレイデバイスのデバイス情報が配列の要素に格納されたため、制御プログラム６２における第一ディスプレイデバイスと第二ディスプレイデバイスの配列順が第一投影機２１と第二投影機２３の配列順に確実に一致する。つまり、第一投影機２１に出力すべき第一映像信号が第一投影機２１に確実に出力され、第二投影機２３に出力すべき第二映像信号が第二投影機２３に確実に出力される。
【００５８】
また、ステップＳ１１〜Ｓ１３の処理によって、ホスト装置５に組み込まれた複数のＵＳＢハブ（ルートハブも含む）の中からＵＳＢハブ４０を特定することができる。
【００５９】
＜５．  変形例＞
上記実施形態では、ホスト装置５によって制御される装置が造形装置２であり、その装置に内蔵されたディスプレイが投影方式のディスプレイ２１，２３であり、ホスト装置５からそれらディスプレイ２１，２３にぞれぞれ映像信号が出力された。
それに対して、ホスト装置５によって制御される装置は、２台のディスプレイ（例えば、液晶ディスプレイ）、ＵＳＢハブ及びメインコントローラを有したハブ接続型コンパウンドデバイスであれば、造形装置に限るものではない。この場合、その装置を制御プログラム６２によって制御するべく制御プログラム６２の内容を設計変更するが、設計変更された制御プログラム６２に組み込まれた配列順特定プログラムモジュール６３の内容は、上述したものと同様である。
【００６０】
また、上記実施形態では、第一投影機２１が接続される第一下流側ポート４１のポート番号が、第二投影機２３が接続される第二下流側ポート４３のポート番号よりも小さかった。それに対して、第一投影機２１が接続される第一下流側ポート４１のポート番号が、第二投影機２３が接続される第二下流側ポート４３のポート番号よりも大きくてもよい。この場合、次のステップＳ４では、処理ユニット５１が、ステップＳ２の対応付けとステップＳ３の列挙とを照合して、ステップＳ２の対応付けにおけるポート番号の降順と同一配列順で、ディスプレイデバイス情報を配列の要素に格納する。
【００６１】
また、第一投影機２１及び第二投影機２３に加えて更に別の投影機がＵＳＢハブ４０に接続されてもよい。
【符号の説明】
【００６２】
１…造形システム，  ２…造形装置，  ５…ホスト装置，  ２１…第一投影機（第一ディスプレイ），  ２３…第二投影機（第二ディスプレイ），  ４０…ＵＳＢハブ（ハブ），  ４１…第一下流側ポート，  ４２…第二下流側ポート，  ５１…処理ユニット，  ５３…補助記憶装置，  ６１…オペレーティングシステム，  ６２…制御プログラム，  ６３…配列順特定プログラムモジュール
【図１】
2018116503.tif 000003
【図２】
2018116503.tif 000004
【図３】
2018116503.tif 000005
【図４】
2018116503.tif 000006
【図５】
2018116503.tif 000007
【図６】
2018116503.tif 000008
【図７】
2018116503.tif 000009
【図８】
2018116503.tif 000010
【図９】
2018116503.tif 000011