(57)【要約】  ネットワーク接続された端末によりデバイスを制御できるようにする。  ウェブブラウザー３１を備えた端末３と、接続されたデバイスを制御するプリンター５とを備えたデバイス制御システムである。端末３は、ウェブアプリケーション３２によってデバイスを制御するデバイスＡＰＩ３３がデバイスに対応して有するオブジェクトを呼び出し、プリンター５にリクエストを送信し、プリンター５は、デバイスを制御するデバイス制御スクリプト５０２を実行し、デバイスＡＰＩ３３を介して送信されたリクエストを受信してデバイスを制御する。
2014106882.tif 000002
【特許請求の範囲】
【請求項１】
デバイスと、
前記デバイスと接続する接続部、及び前記接続部に接続された前記デバイスを制御するデバイス制御部を有するデバイス制御装置と、
前記デバイス制御装置と接続し、ウェブアプリケーションの表示及び前記デバイスを制御するデバイスアプリケーションプログラムインターフェースを実行させるウェブブラウザーを動作させる端末と、
を備えることを特徴とするデバイス制御システム。
【請求項２】
前記デバイスアプリケーションプログラムインターフェースは、前記デバイスに対応するオブジェクトを有し、
前記ウェブアプリケーションは前記オブジェクトを呼び出し、前記デバイス制御装置にリクエストを送信する請求項１に記載のデバイス制御システム。
【請求項３】
前記デバイス制御装置は、
前記デバイスを制御するデバイス制御スクリプトを実行し、
前記デバイス制御スクリプトは、前記オブジェクトと接続し、前記端末で送信された前記リクエストを受信して前記接続部に接続された前記デバイスを制御する請求項２に記載のデバイス制御システム。
【請求項４】
前記デバイス制御スクリプトは、前記デバイスとデータを送受信するデバイス接続オブジェクト、及び前記デバイスＡＰＩにデータを送信するクライアント接続オブジェクトを有する請求項３に記載のデバイス制御システム。
【請求項５】
前記リクエストは、前記デバイス制御装置に接続された前記デバイスを指定して前記デバイスの制御の開始を指示する制御開始リクエストであり、
前記コマンドは、前記デバイスの制御の開始を指示する制御開始コマンドであり、
前記端末が前記制御開始リクエストを前記デバイス制御装置に送信した時、前記デバイス制御装置は前記制御開始リクエストで指定された前記デバイスに前記制御開始コマンドを送信し、前記デバイスを前記端末で制御可能とする請求項３に記載のデバイス制御システム。
【請求項６】
前記デバイス制御装置と接続し、第２のウェブアプリケーションの表示及び前記デバイスを制御する第２のデバイスアプリケーションプログラムインターフェースを実行させるウェブブラウザーを動作させる第２の端末を備え、
前記第２のデバイスアプリケーションプログラムインターフェースは、前記デバイスに対応する第２のオブジェクトを有する請求項５に記載のデバイス制御システム。
【請求項７】
前記端末で前記デバイスの制御が可能な時に、前記デバイス制御装置は前記デバイスを排他ロック状態とし、前記第２のウェブアプリケーションが前記第２のオブジェクトを呼び出して前記デバイス制御装置に第２のリクエストを送信した場合に前記第２のリクエストでの前記デバイスの制御を実行させない請求項６に記載のデバイス制御システム。
【請求項８】
前記端末で前記デバイスの制御が可能な時に前記第２の端末が前記第２のリクエストを前記デバイス制御装置に送信した場合、前記デバイス制御装置は、前記第２の端末に前記デバイスが使用中であることを示す通知を送信する請求項６に記載のデバイス制御システム。
【請求項９】
前記デバイスは、印刷を行うプリンターであり、
前記端末で前記プリンターの制御が可能な時に前記第２の端末が前記第２のリクエストを前記デバイス制御装置に送信した場合、前記デバイス制御装置は前記第２のリクエストに基づいて前記デバイス制御スクリプトで前記プリンターを前記第２の端末での制御を可能にする請求項６に記載のデバイス制御システム。
【請求項１０】
前記端末の前記ウェブアプリケーションは前記オブジェクトを呼び出し、前記デバイス制御装置に前記デバイスを指定して前記デバイスの制御終了を指示する制御終了リクエストを送信し、
前記端末が前記制御終了リクエストを前記デバイス制御装置に送信した時、前記デバイス制御装置は前記制御終了リクエストで指定された前記デバイスに前記デバイス制御スクリプトで制御の終了を指示する第２のコマンドを送信し、前記端末での前記デバイスの制御を終了させる請求項６に記載のデバイス制御システム。
【請求項１１】
前記デバイス制御装置が前記端末での前記デバイスの制御を終了させた後に前記第２の端末が前記第２のリクエストを前記デバイス制御装置に送信した場合、前記デバイス制御装置は前記第２のリクエストに基づいて前記デバイス制御スクリプトで前記デバイスを前記第２の端末での制御を可能にする請求項１０に記載のデバイス制御システム。
【請求項１２】
前記デバイスアプリケーションプログラムインターフェースは、前記オブジェクトと前記デバイス制御装置のデバイス制御スクリプトとの接続を検出する請求項３に記載のデバイス制御システム。
【請求項１３】
前記オブジェクトは、前記デバイス制御スクリプトに含まれるイベントを呼び出す請求項３に記載のデバイス制御システム。
【請求項１４】
前記デバイスは、表示を行うディスプレイであり、
前記リクエストは、前記ディスプレイを指定して前記ディスプレイの表示を要求する表示リクエストであり、
前記端末が前記表示リクエストを前記デバイス制御装置に送信した時、前記デバイス制御装置は前記表示リクエストで指定された前記ディスプレイに前記デバイス制御スクリプトで表示を要求する表示コマンドを送信する請求項３に記載のデバイス制御システム。
【請求項１５】
前記表示リクエストで要求するディスプレイの表示は、時刻の表示である請求項１４に記載のデバイス制御システム。
【請求項１６】
前記リクエストは、前記デバイスを指定して前記デバイスにイメージデータの登録を要求する登録リクエストであり、
前記端末が前記登録リクエストを前記デバイス制御装置に送信した時、前記デバイス制御装置は前記登録リクエストで指定された前記デバイスに前記デバイス制御スクリプトで前記イメージの登録を指示する登録コマンドを送信する請求項３に記載のデバイス制御システム。
【請求項１７】
前記端末は、前記イメージデータを前記デバイス制御装置に送信し、
前記デバイス制御スクリプトは、前記イメージデータを前記ラスターイメージデータに変換する請求項１６に記載のデバイス制御システム。
【請求項１８】
前記リクエストは、前記デバイスを指定して、前記デバイスと前記端末との間で送受信されるデータの暗号化の要否の設定を指示する暗号化リクエストである請求項３に記載のデバイス制御システム。
【請求項１９】
デバイスと接続する接続部と、
デバイスを制御するデバイス制御スクリプトを実行して、前記接続部に接続された前記デバイスを制御するデバイス制御部と、
印刷を行う印刷部と、
を有することを特徴とする印刷装置。
【請求項２０】
ウェブブラウザーを動作させる端末、デバイス、及び前記デバイスと接続するデバイス制御装置を有し、
前記ウェブブラウザーで動作するウェブアプリケーションで前記デバイスに対応するオブジェクトを呼び出し、
前記デバイス制御装置にリクエストを送信し、
前記デバイス制御装置で前記デバイスを制御するデバイス制御スクリプトを実行し、
前記デバイス制御装置で受信した前記リクエストに基づいて前記デバイス制御スクリプトで前記デバイスを制御するコマンドを前記デバイスに送信し、
前記端末での前記デバイスの制御を確立することを特徴とするデバイス制御システムの制御方法。
【請求項２１】
前記リクエストは、前記デバイス制御装置に接続された前記デバイスを指定して前記デバイスの制御の開始を指示する制御開始リクエストであり、
前記端末が前記制御開始リクエストを前記デバイス制御装置に送信した時、前記デバイス制御装置は前記制御コマンドを前記デバイスに送信し、前記デバイスを前記端末での制御を開始させる請求項２０に記載のデバイス制御システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバイスを制御するデバイス制御システム、印刷装置、及び、デバイス制御システムの制御方法に関する。
【背景技術】
【０００２】
従来、ネットワークに接続された端末により、キーボード、バーコードスキャナー等のデバイスを制御するシステムでは、デバイスの制御用に、コントローラーとなる機器（コンピューターなど）が用意されていた。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−１５２２５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、シンプルな構成で上述したようなデバイスを使用したいというニーズがあった。
本発明は、上述した事情に鑑みてなされたものであり、ネットワーク接続された端末によりデバイスを制御できるデバイス制御システム、印刷装置、及び、デバイス制御システムの制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するために、本発明のデバイス制御システムは、デバイスと、前記デバイスと接続する接続部、及び前記接続部に接続された前記デバイスを制御するデバイス制御部を有するデバイス制御装置と、前記デバイス制御装置と接続し、ウェブアプリケーションの表示及び前記デバイスを制御するデバイスアプリケーションプログラムインターフェースを実行させるウェブブラウザーを動作させる端末と、を備えることを特徴とする。
本発明によれば、端末のウェブブラウザーによって、デバイス制御装置に接続されたデバイスを制御できる。【０００６】
また、本発明は、前記デバイスアプリケーションプログラムインターフェースは、前記デバイスに対応するオブジェクトを有し、前記ウェブアプリケーションは前記オブジェクトを呼び出し、前記デバイス制御装置にリクエストを送信する。【０００７】
また、本発明の構成によれば、前記デバイス制御装置は、前記デバイスを制御するデバイス制御スクリプトを実行し、前記デバイス制御スクリプトは、前記オブジェクトと接続し、前記端末で送信された前記リクエストを受信して前記接続部に接続された前記デバイスを制御する。【０００８】
また、本発明の構成によれば、前記デバイス制御スクリプトは、前記デバイスとデータを送受信するデバイス接続オブジェクト、及び前記デバイスＡＰＩにデータを送信するクライアント接続オブジェクトを有する。【０００９】
また、本発明の構成によれば、前記リクエストは、前記デバイス制御装置に接続された前記デバイスを指定して前記デバイスの制御の開始を指示する制御開始リクエストであり、前記コマンドは、前記デバイスの制御の開始を指示する制御開始コマンドであり、前記端末が前記制御開始リクエストを前記デバイス制御装置に送信した時、前記デバイス制御装置は前記制御開始リクエストで指定された前記デバイスに前記制御開始コマンドを送信し、前記デバイスを前記端末で制御可能とする。【００１０】
また、本発明によれば、前記デバイス制御装置と接続し、第２のウェブアプリケーションの表示及び前記デバイスを制御する第２のデバイスアプリケーションプログラムインターフェースを実行させるウェブブラウザーを動作させる第２の端末を備え、前記第２のデバイスアプリケーションプログラムインターフェースは、前記デバイスに対応する第２のオブジェクトを有する。【００１１】
また、前記端末で前記デバイスの制御が可能な時に、前記デバイス制御装置は前記デバイスを排他ロック状態とし、前記第２のウェブアプリケーションが前記第２のオブジェクトを呼び出して前記デバイス制御装置に第２のリクエストを送信した場合に前記第２のリクエストでの前記デバイスの制御を実行させない。【００１２】
また、前記端末で前記デバイスの制御が可能な時に前記第２の端末が前記第２のリクエストを前記デバイス制御装置に送信した場合、前記デバイス制御装置は、前記第２の端末に前記デバイスが使用中であることを示す通知を送信する。【００１３】
また、前記デバイスは、印刷を行うプリンターであり、前記端末で前記プリンターの制御が可能な時に前記第２の端末が前記第２のリクエストを前記デバイス制御装置に送信した場合、前記デバイス制御装置は前記第２のリクエストに基づいて前記デバイス制御スクリプトで前記プリンターを前記第２の端末での制御を可能にする。【００１４】
また、前記端末の前記ウェブアプリケーションは前記オブジェクトを呼び出し、前記デバイス制御装置に前記デバイスを指定して前記デバイスの制御終了を指示する制御終了リクエストを送信し、前記端末が前記制御終了リクエストを前記デバイス制御装置に送信した時、前記デバイス制御装置は前記制御終了リクエストで指定された前記デバイスに前記デバイス制御スクリプトで制御の終了を指示する第２のコマンドを送信し、前記端末での前記デバイスの制御を終了させる。【００１５】
また、前記デバイス制御装置が前記端末での前記デバイスの制御を終了させた後に前記第２の端末が前記第２のリクエストを前記デバイス制御装置に送信した場合、前記デバイス制御装置は前記第２のリクエストに基づいて前記デバイス制御スクリプトで前記デバイスを前記第２の端末での制御を可能にする。【００１６】
また、前記デバイスアプリケーションプログラムインターフェースは、前記オブジェクトと前記デバイス制御装置のデバイス制御スクリプトとの接続を検出する。
また、前記オブジェクトは、前記デバイス制御スクリプトに含まれるイベントを呼び出す。【００１７】
また、前記デバイスは、表示を行うディスプレイであり、前記リクエストは、前記ディスプレイを指定して前記ディスプレイの表示を要求する表示リクエストであり、前記端末が前記表示リクエストを前記デバイス制御装置に送信した時、前記デバイス制御装置は前記表示リクエストで指定された前記ディスプレイに前記デバイス制御スクリプトで表示を要求する表示コマンドを送信する。【００１８】
また、前記表示リクエストで要求するディスプレイの表示は、時刻の表示である。【００１９】
また、前記リクエストは、前記デバイスを指定して前記デバイスにイメージデータの登録を要求する登録リクエストであり、前記端末が前記登録リクエストを前記デバイス制御装置に送信した時、前記デバイス制御装置は前記登録リクエストで指定された前記デバイスに前記デバイス制御スクリプトで前記イメージの登録を指示する登録コマンドを送信する。
また、前記端末は、前記イメージデータを前記デバイス制御装置に送信し、前記デバイス制御スクリプトは、前記イメージデータを前記ラスターイメージデータに変換する。
また、前記リクエストは、前記デバイスを指定して、前記デバイスと前記端末との間で送受信されるデータの暗号化の要否の設定を指示する暗号化リクエストである。【００２０】
また、本発明の構成によれば、印刷装置は、デバイスと接続する接続部と、デバイスを制御するデバイス制御スクリプトを実行して、前記接続部に接続された前記デバイスを制御するデバイス制御部と、印刷を行う印刷部と、を有することを特徴とする。【００２１】
また、本発明のデバイス制御システムの制御方法は、ウェブブラウザーを動作させる端末、デバイス、及び前記デバイスと接続するデバイス制御装置を有し、前記ウェブブラウザーで動作するウェブアプリケーションで前記デバイスに対応するオブジェクトを呼び出し、前記デバイス制御装置にリクエストを送信し、前記デバイス制御装置で前記デバイスを制御するデバイス制御スクリプトを実行し、前記デバイス制御装置で受信した前記リクエストに基づいて前記デバイス制御スクリプトで前記デバイスを制御するコマンドを前記デバイスに送信し、前記端末での前記デバイスの制御を確立することを特徴とする。
また、前記リクエストは、前記デバイス制御装置に接続された前記デバイスを指定して前記デバイスの制御の開始を指示する制御開始リクエストであり、前記端末が前記制御開始リクエストを前記デバイス制御装置に送信した時、前記デバイス制御装置は前記制御コマンドを前記デバイスに送信し、前記デバイスを前記端末での制御を開始させる。
【図面の簡単な説明】
【００２２】
【図１】本発明の第１の実施形態に係るデバイス制御システムの構成図である。
【図２】本発明の第２の実施形態に係るデバイス制御システムの構成図である。
【図３】本発明の第３の実施形態に係るデバイス制御システムの構成図である。
【図４】インテリジェントプリンターに接続されるデバイスの接続例を示す図である。
【図５】インテリジェントプリンターの外観斜視図である。
【図６】コネクターパネルを示す図である。
【図７】無線ＬＡＮユニットの接続例を示す図である。
【図８】デバイス制御システムの機能的構成を示す図である。
【図９】キーボードから取得可能なキーコードの例を示す図である。
【図１０】環境の構築のワークフローを示す図である。
【図１１】ウェブコンテンツの登録方法を示す図である。
【図１２】ウェブコンテンツの登録方法を示す図である。
【図１３】デバイス制御スクリプトの登録方法を示す図である。
【図１４】デバイスの登録方法を示す図である。
【図１５】デバイスの登録で選択されるデバイスの種類を示す図である。
【図１６】ネットワークプリンターを登録する場合の入力項目を示す図である。
【図１７】カスタマーディスプレイを登録する場合の入力項目を示す図である。
【図１８】キー入力デバイスを登録する場合の入力項目を示す図である。
【図１９】シリアル通信デバイスを登録する場合の入力項目を示す図である。
【図２０】その他のデバイスを登録する場合の入力項目を示す図である。
【図２１】プログラミングフローを示す図である。
【図２２】Deviceオブジェクトを示す図である。
【図２３】デバイスオブジェクト共通のオブジェクトを示す図である。
【図２４】Displayオブジェクトを示す図である。
【図２５】Keyboardオブジェクトを示す図である。
【図２６Ａ】Printerオブジェクトを示す図である。
【図２６Ｂ】Printerオブジェクトを示す図である。
【図２６Ｃ】Printerオブジェクトを示す図である。
【図２７】Scannerオブジェクトを示す図である。
【図２８】SimpleSerialオブジェクトを示す図である。
【図２９】connectメソッドの詳細を示す図である。
【図３０】isConnectメソッドの説明図である。
【図３１】createDeviceメソッドの説明図である。
【図３２】createDeviceメソッドの説明図である。
【図３３】deleteDeviceメソッドの説明図である。
【図３４】createWindowメソッドの説明図である。
【図３５】moveCursorPositionメソッドの説明図である。
【図３６】setCursorTypeメソッドの説明図である。
【図３７】addTextメソッドの説明図である。
【図３８】addReverseTextメソッドの説明図である。
【図３９】addMarqueeメソッドの説明図である。
【図４０】addMarqueeメソッドの説明図である。
【図４１】setBrightnessメソッドの説明図である。
【図４２Ａ】onreceiveイベントの説明図である。
【図４２Ｂ】onreceiveイベントの説明図である。
【図４２Ｃ】onreceiveイベントの説明図である。
【図４３】onkeypressイベントの説明図である。
【図４４】onstringイベントの説明図である。
【図４５Ａ】addTextAlignメソッドの説明図である。
【図４５Ｂ】addTextAlignメソッドの説明図である。
【図４５Ｃ】addTextAlignメソッドの説明図である。
【図４６Ａ】addTextLineSpaceメソッドの説明図である。
【図４６Ｂ】addTextLineSpaceメソッドの説明図である。
【図４７Ａ】addTextRotateメソッドの説明図である。
【図４７Ｂ】addTextRotateメソッドの説明図である。
【図４７Ｃ】addTextRotateメソッドの説明図である。
【図４８Ａ】addTextメソッドの説明図である。
【図４８Ｂ】addTextメソッドの説明図である。
【図４８Ｃ】addTextメソッドの説明図である。
【図４９Ａ】addTextLangメソッドの説明図である。
【図４９Ｂ】addTextLangメソッドの説明図である。
【図４９Ｃ】addTextLangメソッドの説明図である。
【図５０Ａ】addTextFontメソッドの説明図である。
【図５０Ｂ】addTextFontメソッドの説明図である。
【図５０Ｃ】addTextFontメソッドの説明図である。
【図５１Ａ】addTextSmoothメソッドの説明図である。
【図５１Ｂ】addTextSmoothメソッドの説明図である。
【図５１Ｃ】addTextSmoothメソッドの説明図である。
【図５２Ａ】addTextDoubleメソッドの説明図である。
【図５２Ｂ】addTextDoubleメソッドの説明図である。
【図５２Ｃ】addTextDoubleメソッドの説明図である。
【図５２Ｄ】addTextDoubleメソッドの説明図である。
【図５３Ａ】addTextSizeメソッドの説明図である。
【図５３Ｂ】addTextSizeメソッドの説明図である。
【図５３Ｃ】addTextSizeメソッドの説明図である。
【図５３Ｄ】addTextSizeメソッドの説明図である。
【図５４Ａ】addTextStyleメソッドの説明図である。
【図５４Ｂ】addTextStyleメソッドの説明図である。
【図５４Ｃ】addTextStyleメソッドの説明図である。
【図５４Ｄ】addTextStyleメソッドの説明図である。
【図５４Ｅ】addTextStyleメソッドの説明図である。
【図５４Ｆ】addTextStyleメソッドの説明図である。
【図５５Ａ】addTextPositionメソッドの説明図である。
【図５５Ｂ】addTextPositionメソッドの説明図である。
【図５６Ａ】addFeedUnitメソッドの説明図である。
【図５６Ｂ】addFeedUnitメソッドの説明図である。
【図５７Ａ】addFeedLineメソッドの説明図である。
【図５７Ｂ】addFeedLineメソッドの説明図である。
【図５８Ａ】addImageメソッドの説明図である。
【図５８Ｂ】addImageメソッドの説明図である。
【図５８Ｃ】addImageメソッドの説明図である。
【図５８Ｄ】addImageメソッドの説明図である。
【図５９Ａ】addLogoメソッドの説明図である。
【図５９Ｂ】addLogoメソッドの説明図である。
【図６０Ａ】addBarcodeメソッドの説明図である。
【図６０Ｂ】addBarcodeメソッドの説明図である。
【図６０Ｃ】addBarcodeメソッドの説明図である。
【図６０Ｄ】addBarcodeメソッドの説明図である。
【図６０Ｅ】addBarcodeメソッドの説明図である。
【図６０Ｆ】addBarcodeメソッドの説明図である。
【図６０Ｇ】addBarcodeメソッドの説明図である。
【図６０Ｈ】addBarcodeメソッドの説明図である。
【図６０Ｉ】addBarcodeメソッドの説明図である。
【図６１Ａ】addSymbolメソッドの説明図である。
【図６１Ｂ】addSymbolメソッドの説明図である。
【図６１Ｃ】addSymbolメソッドの説明図である。
【図６１Ｄ】addSymbolメソッドの説明図である。
【図６１Ｅ】addSymbolメソッドの説明図である。
【図６１Ｆ】addSymbolメソッドの説明図である。
【図６１Ｇ】addSymbolメソッドの説明図である。
【図６２Ａ】addHLineメソッドの説明図である。
【図６２Ｂ】addHLineメソッドの説明図である。
【図６２Ｃ】addHLineメソッドの説明図である。
【図６３Ａ】addVLineBeginメソッドの説明図である。
【図６３Ｂ】addVLineBeginメソッドの説明図である。
【図６３Ｃ】addVLineBeginメソッドの説明図である。
【図６４Ａ】addVLineEndメソッドの説明図である。
【図６４Ｂ】addVLineEndメソッドの説明図である。
【図６４Ｃ】addVLineEndメソッドの説明図である。
【図６５】addPageBeginメソッドの説明図である。
【図６６】addPageEndメソッドの説明図である。
【図６７Ａ】addPageAreaメソッドの説明図である。
【図６７Ｂ】addPageAreaメソッドの説明図である。
【図６８Ａ】addPageDirectionメソッドの説明図である。
【図６８Ｂ】addPageDirectionメソッドの説明図である。
【図６８Ｃ】addPageDirectionメソッドの説明図である。
【図６９Ａ】addPagePositionメソッドの説明図である。
【図６９Ｂ】addPagePositionメソッドの説明図である。
【図７０Ａ】addPageLineメソッドの説明図である。
【図７０Ｂ】addPageLineメソッドの説明図である。
【図７０Ｃ】addPageLineメソッドの説明図である。
【図７１Ａ】addPageRectangleメソッドの説明図である。
【図７１Ｂ】addPageRectangleメソッドの説明図である。
【図７１Ｃ】addPageRectangleメソッドの説明図である。
【図７２Ａ】addCutメソッドの説明図である。
【図７２Ｂ】addCutメソッドの説明図である。
【図７２Ｃ】addCutメソッドの説明図である。
【図７３Ａ】addPulseメソッドの説明図である。
【図７３Ｂ】addPulseメソッドの説明図である。
【図７３Ｃ】addPulseメソッドの説明図である。
【図７３Ｄ】addPulseメソッドの説明図である。
【図７４Ａ】addSoundメソッドの説明図である。
【図７４Ｂ】addSoundメソッドの説明図である。
【図７４Ｃ】addSoundメソッドの説明図である。
【図７４Ｄ】addSoundメソッドの説明図である。
【図７５Ａ】addCommandメソッドの説明図である。
【図７５Ｂ】addCommandメソッドの説明図である。
【図７６Ａ】printメソッドの説明図である。
【図７６Ｂ】printメソッドの説明図である。
【図７６Ｃ】printメソッドの説明図である。
【図７７】halftoneプロパティの説明図である。
【図７８Ａ】onreceiveイベントの説明図である。
【図７８Ｂ】onreceiveイベントの説明図である。
【図７８Ｃ】onreceiveイベントの説明図である。
【図７８Ｄ】onreceiveイベントの説明図である。
【図７９】onerrorイベントの説明図である。
【図８０】ondataイベントの説明図である。
【図８１】デバイス制御スクリプトの使用に関する説明図である。
【図８２】デバイス制御スクリプトのオブジェクトの説明図である。
【図８３】デバイス制御スクリプトのプロパティの一覧を示す図である。
【図８４】デバイス制御スクリプトのプロパティの一覧を示す図である。
【図８５】デバイス制御スクリプト５０２の構成例を示す図である。
【図８６】ClientConnectionオブジェクトのAPIの一覧を示す図である。
【図８７】DeviceConnectionオブジェクトのAPIの一覧を示す図である。
【図８８】デバイス制御スクリプト名オブジェクトのAPIの一覧を示す図である。
【図８９】ClientConnectionオブジェクトのAPIの説明図である。
【図９０】onDeviceDataイベントの説明図である。
【図９１】ＰＯＳ端末のサンプルの一例を示す図である。
【図９２】プリンターのサンプルプログラムの一例を示す図である。
【図９３】サンプルプログラムの環境設定のフローを示す図である。
【図９４】サンプルプログラムを登録する画面の例を示す図である。
【図９５】カスタマーディスプレイを設定する画面を示す図である。
【図９６】POSキーボード/バーコードスキャナーを設定する画面を示す図である。
【図９７】デバイスの設定の例を示す図である。
【図９８】サンプルプログラムの表示例を示す図である。
【図９９Ａ】Customer Display Sample画面の例を示す図である。
【図９９Ｂ】Customer Display Sample画面の例を示す図である。
【図９９Ｃ】Customer Display Sample画面の例を示す図である。
【図１００Ａ】Keyboard Sample画面の例を示す図である。
【図１００Ｂ】Keyboard Sample画面の入力と結果の例を示す図である。
【図１００Ｃ】Keyboard Sample画面の例を示す図である。
【図１０１Ａ】Printer Sample画面の例を示す図である。
【図１０１Ｂ】Printer Sample画面の例を示す図である。
【図１０１Ｃ】Printer Sample画面の例を示す図である。
【図１０２Ａ】Barcode Scanner Sample画面の例を示す図である。
【図１０２Ｂ】Barcode Scanner Sample画面の例を示す図である。
【図１０３Ａ】POS Terminal Sample画面の例を示す図である。
【図１０３Ｂ】設定画面の例を示す図である。
【図１０４Ａ】POS Terminal Sample画面の例を示す図である。
【図１０４Ｂ】POS Terminal Sample画面の例を示す図である。
【図１０４Ｃ】POS Terminal Sample画面の例を示す図である。
【発明を実施するための形態】
【００２３】
以下、図面を参照して本発明の実施形態について説明する。
図１は、本発明を適用した第１の実施形態であり、アプリケーションサーバー２を備えたデバイス制御システム１００の構成例を示す図である。
デバイス制御システム１００は、アプリケーションサーバー２、端末３、及び、プリンター５（インテリジェントプリンター）を備えている。デバイス制御システム１００では、アプリケーションサーバー２、端末３及びプリンター５が通信ネットワークを介して接続される。図１の例では、デバイス制御システム１００は、無線ＬＡＮアクセスポイント１１を有し、アプリケーションサーバー２、プリンター５及び無線ＬＡＮアクセスポイント１１は有線ＬＡＮにより接続される。無線ＬＡＮアクセスポイント１１は端末３を有線ＬＡＮに接続する。これにより、端末３は無線ＬＡＮアクセスポイント１１と通信可能な範囲であれば使用できる。
【００２４】
プリンター５には、制御対象のデバイスとして、ネットワークプリンター７、カスタマーディスプレイ８、及びバーコードスキャナー９が接続される。ネットワークプリンター７は、プリンター５に対してネットワークを介して接続される。カスタマーディスプレイ８及びバーコードスキャナー９は、後述するＵＳＢインターフェースを介して接続される。これらのデバイスは、一般的に周辺機器（peripheral）と呼ばれるが、以下の説明ではデバイスと呼ぶ。
プリンター５に接続するデバイスは図１に示す機器に限定されない。例えば、ディスプレイ、及び、キーボード等のキー入力デバイスを含む。また、ＯＳ標準のＨＩＤ（Human interface device）ドライバーで制御可能なデバイス、ＯＳ標準のシリアル通信ドライバーで動作可能なシリアル通信デバイス、及び、シリアル通信デバイスと同様に制御可能なＵＳＢデバイスを含む。
【００２５】
端末３は、ネットワーク接続可能なウェブブラウザーを有し、このウェブブラウザーによって、プリンター５に接続されたデバイスを制御できる。
端末３は、ネットワーク接続可能なウェブブラウザー搭載端末であればよく、例えば、図１に示すように周知のタブレットを用いることができる。デバイス制御システム１００では、デバイスの制御用に、別途、コントローラーとなる機器（コンピューターなど）を用意する必要がない。
【００２６】
デバイス制御システム１００の動作は、次の通りである。
（１）アプリケーションサーバー２にウェブアプリケーションを配置する。
（２）端末３のウェブブラウザーにより、ウェブアプリケーションを表示する。
（３）端末３のウェブブラウザーがプリンター５に対し、リクエストメッセージを送信する。
（４）プリンター５がリクエストメッセージを受信する。プリンター５は、受信したリクエストメッセージに基づいて、プリンター５によって制御可能なデバイスにデータを送信する。
（５）プリンター５に接続されるネットワークプリンター７、カスタマーディスプレイ８及びバーコードスキャナー９が制御される。
（６）プリンター５がウェブアプリケーションにレスポンスを返す。
【００２７】
図２は、本発明を適用した第２の実施形態であり、アプリケーションサーバー２を備えたデバイス制御システム２００の構成例を示す図である。デバイス制御システム２００は、端末３及びプリンター５を備えている。デバイス制御システム２００では、アプリケーションサーバー２が、インターネット等の遠隔通信ネットワークにより端末３に接続される。図２の例ではカスタマーディスプレイ８がプリンター５に接続される。
【００２８】
デバイス制御システム２００の動作は、次の通りである。
（１）アプリケーションサーバー２にウェブアプリケーションを配置する。
（２）端末３のウェブブラウザーにより、ウェブアプリケーションを表示する。
（３）端末３のウェブブラウザーがプリンター５に対し、リクエストメッセージを送信する。
（４）プリンター５がリクエストメッセージを受信する。プリンター５は、受信したリクエストメッセージに基づいて、プリンター５によって制御可能なデバイスにデータを送信する。
（５）プリンター５に接続されているネットワークプリンター７、カスタマーディスプレイ８及びバーコードスキャナー９が制御される。
（６）プリンター５がウェブアプリケーションにレスポンスを返す。
【００２９】
図３は、本発明を適用した第３の実施形態のデバイス制御システム３００を示す図である。デバイス制御システム３００は、アプリケーションサーバーとして用いる例である。デバイス制御システム３００では、端末３がプリンター５に接続される。
デバイス制御システム３００の動作は、次の通りである。
（１）プリンター５にウェブアプリケーションを配置する。
（２）端末３のウェブブラウザーにより、ウェブアプリケーションを表示する。
（３）端末３のウェブブラウザーがプリンター５に対し、リクエストメッセージを送信する。
（４）プリンター５がリクエストメッセージを受信する。プリンター５は、受信したリクエストメッセージに基づいて、プリンター５によって制御可能なデバイスにデータを送信する。
（５）プリンター５に接続されているネットワークプリンター７、カスタマーディスプレイ８及びバーコードスキャナー９が制御される。
（６）プリンター５がウェブアプリケーションにレスポンスを返す。
【００３０】
このように、本発明を適用したシステムでは、ウェブブラウザーを搭載した端末３が、ウェブアプリケーションを表示して、プリンター５に接続されたデバイスを制御できる。
【００３１】
プリンター５の構成について説明する。
プリンター５は、ＣＰＵ、ＲＡＭ、フラッシュＲＯＭ、ＮＶ（不揮発性メモリー）、ビデオコントローラー、補助記憶装置（ＳＳＤ：solidstatedrive）、インターフェース、及び、ローカルプリンター（印刷部）を備えている。プリンター５は、スピーカーを備えていてもよい。ローカルプリンターは、80mm幅または58mm幅のロール紙に印刷するサーマルプリンターである。
プリンター５にはＰＯＳ（pointofsales）システムをインストールできる。プリンター５のＯＳ（operatingsystem）は、例えばＷｉｎｄｏｗｓ（登録商標）ベースであり、補助記憶装置に記憶される。
【００３２】
プリンター５は、プリンター５に接続されるデバイスを端末３が制御するソフトウェアである、デバイス制御プログラムを備えている。このため、端末３はドライバープログラムを必要としない。
プリンター５は、プリンター５が備えるローカルプリンター、及び、デバイスを制御するソフトウェアである、Ｗｉｎｄｏｗｓ（登録商標）標準のデバイスドライバープログラム（ＡＰＤ）、ＵＰＯＳドライバー、ＯＰＯＳドライバー等を備えている。
プリンター５には、ウェブアプリケーションをインストールできる。これにより、図３に示すようにプリンター５をアプリケーションサーバーとして利用できる。ウェブアプリケーションは、例えば、ＰＨＰ及びＰｅｒｌのサーバーサイドスクリプト、ＳＱＬｉｔｅデータベースアクセス（サーバーサイドスクリプト）が可能である。
【００３３】
図４は、プリンター５に接続されるデバイスの接続例を示す図である。
プリンター５には、上述したネットワークプリンター７、カスタマーディスプレイ８及びバーコードスキャナー９を接続できる。プリンター５にディスプレイ１２、キャッシュドロワー１３、及びキーボード１４を接続できる。
図５は、プリンター５の外観斜視図である。
プリンター５の上部には、ロール紙カバー５１が設けられる。ロール紙カバーはカバーオープンボタン５２を押すと開き、ロール紙を出し入れできる。印刷後のロール紙を排出する排出口には、手動でロール紙をカットするマニュアルカッター５３、及び、カッターカバー５４を有する。カッターカバー５４はプリンター５のローカルプリンターで紙ジャムが発生した場合及びロール紙カバー５１が開かない場合に開かれる。カッターカバー５４を開くとマニュアルカッター５３のブレードが基準位置に戻る。プリンター５は、電源スイッチ５６Ｂ、リセットボタン５６Ａ、ＬＥＤ表示部５７、及び、コントロールパネル５８を備える。ＬＥＤ表示部５７は、補助記憶装置のアクセスを示すディスクアクセスＬＥＤ、及び、ステータスＬＥＤを備える。ステータスＬＥＤは、ＯＳの動作状態、ＯＳのスタンバイモード、電源オフ状態、ＯＳの起動シーケンス中、ＣＰＵの高温警告を通知する。
コントロールパネル５８はパワーＬＥＤ、エラーＬＥＤ、ロール紙ＬＥＤ、及び送りボタンを備える。パワーＬＥＤは電源が供給されている場合に点灯する。エラーＬＥＤは通常動作時は消灯し、リセットされたとき、及び、ロール紙の末端が検出されて印刷が停止したときに点灯する。ペーパーＬＥＤはロール紙の残量が十分なときは消灯し、残量がすくなくなると点灯し、自己診断機能の実行時に点滅する。送りボタンを押すと１行ずつ、または連続してロール紙が搬送される。
【００３４】
プリンター５の後部にはコネクターカバー５９が設けられる。コネクターカバー５９を外すと、プリンター５の背面のコネクターパネル（connection panel）が現れる。
図６はコネクターパネル６０を示す図である。コネクターパネル６０は、ドロワーキックコネクター６１、イーサネットコネクター６２、ＵＳＢコネクター６３、ＶＧＡコネクター６４、ＣＯＭコネクター６５、ライン出力６６、及びＤＣ入力６７を有する。コネクターパネル６０は、本発明の接続部に相当する。但し、プリンター５のデバイスには、プリンター５本体が備えるローカルプリンター５５が含まれる。従って、接続部は、コネクターパネル６０、及び、プリンター５内部のインターフェースを含む。
ドロワーキックコネクター６１には、キャッシュドロワー１３またはオプションのブザーが接続される。イーサネットコネクター６２はネットワークに接続される。ＵＳＢコネクター６３は６個のＵＳＢポートを有する。ＵＳＢコネクター６３にはカスタマーディスプレイ８、バーコードスキャナー９、キーボード１４及びその他のデバイスが接続される。ＶＧＡコネクター６４にはディスプレイ１２が接続される。ＣＯＭコネクター６５にはシリアル通信を行うデバイスのシリアルインターフェースが接続される。ライン出力６６は外部のスピーカーに接続される。
図７は、無線ＬＡＮユニット１７の接続例を示す図である。無線ＬＡＮユニット１７は、ＵＳＢ延長ケーブル１５に差し込まれ、ＵＳＢ延長ケーブル１５はＵＳＢコネクター６３に差し込まれる。これにより、プリンター５を無線ＬＡＮ接続することができる。
【００３５】
以下、デバイス制御システム１００を例に挙げて、本発明の実施形態を詳細に説明する。
図８は、デバイス制御システム１００の機能的構成を示す図である。
端末３は、アプリケーションサーバー２によって提供されるウェブアプリケーション３２を、ウェブブラウザー３１により表示する。ウェブアプリケーション３２は、ウェブブラウザー３１が有するデバイスアプリケーションプログラムインターフェース（ＡＰＩ）３３を呼び出す。デバイスＡＰＩ３３は、例えばＪａｖａ（登録商標）スクリプトであり、後述するように、プリンター５に接続されたデバイスを制御するオブジェクトを生成する。ウェブアプリケーション３２はデバイスＡＰＩ３３のオブジェクトを呼び出す（APICall）。デバイスＡＰＩ３３は、呼び出されたオブジェクトの機能により、プリンター５に対してリクエストを送信する（Request）。
【００３６】
プリンター５では、デバイスサービスインターフェース５０１がリクエストを受け付けて、デバイス制御スクリプト５０２を制御する。デバイス制御スクリプト５０２は、キー入力デバイス１８及びシリアル通信デバイス１９を制御する。デバイス制御スクリプト５０２は、キー入力デバイス１８により入力されたデータを取得して、デバイスサービスインターフェース５０１にデータを出力する。デバイス制御スクリプト５０２は、シリアル通信デバイス１９との間でデータ通信を実行し、シリアル通信デバイス１９から受信したデータをデバイスサービスインターフェース５０１に出力する。ここで、キー入力デバイス１８はキーボード１４を含み、シリアル通信デバイス１９はバーコードスキャナー９及びキャッシュドロワー１３を含む。
【００３７】
デバイスサービスインターフェース５０１は、ローカルプリンター５５とデータを送受信する。ローカルプリンター５５は、プリンター５が備えるローカルプリンターである。また、デバイスサービスインターフェース５０１は、ネットワークプリンター７及びカスタマーディスプレイ８とデータを送受信する。デバイスサービスインターフェース５０１は、デバイスのイベント（Event）やデバイスからの応答（Response）を、デバイスＡＰＩ３３に出力する。デバイスＡＰＩ３３は、ウェブアプリケーション３２に応答（Callback）を出力する。
【００３８】
以上の動作により、デバイス制御システム１００では、端末３によってプリンター５に接続されたデバイスを制御する。
このように、本発明は、プリンター５に接続されたデバイス（周辺機器）をマルチプラットフォーム環境で制御するときに用いられる。このシステムを利用すれば、ウェブブラウザーを搭載したパーソナルコンピューター、スマートフォン、あるいはタブレットコンピューターを用いてデバイスを制御できる。
【００３９】
また、デバイスＡＰＩ３３は、以下の特徴を有する。
・デバイスとの通信内容を暗号化できる。
・プリンター５のＯＳ標準のドライバーで動作するデバイスは、プリンター５にドライバーをインストールせずに、デバイス制御スクリプト５０２で使用できる。デバイス制御スクリプト５０２はJavaScript（商標）で記述するため、ウェブアプリケーション３２と同じ言語で開発できる。
・デバイスＡＰＩ３３を使ってデバイスにアクセスすると、デバイスは自動的に、排他ロックされる。このため、複数端末から同時アクセスしても、制御が混在しない。デバイス制御していた端末３がデバイスを解放すると、このデバイスは他の端末３から制御可能となる。
【００４０】
さらに、デバイスＡＰＩ３３は、以下の特徴を有する。
・罫線を印刷するコマンドは、プリンター５のローカルプリンター５５またはネットワークプリンター７が「罫線コマンド」をサポートしている場合に使用できる。
・ブザーの機能は、プリンター５またはネットワークプリンター７にブザーが接続されている場合に使用できる。
・キーボード１４から取得できるキーコードに制限がある。キーボード１４から取得可能なキーコードは、図９の通りである。
【００４１】
続いて、デバイスサービスインターフェース５０１の環境構築について説明する。
図１０は、環境の構築のワークフローを示す。
１．ネットワーク設定
システム及びプリンター５のネットワーク設定をする。この設定は、Windows（登録商標）のネットワーク設定と同じ手順で行うことができる。
【００４２】
２．ウェブコンテンツの登録
ウェブブラウザーからプリンター５に、ウェブコンテンツを登録する。
プリンター５はウェブサーバーとして、ウェブコンテンツを登録できる。登録されたウェブコンテンツは、端末３のウェブブラウザー３１から閲覧できる。
登録されるウェブコンテンツは、コンテンツのファイルすべてを1つにまとめてzipファイル形式に圧縮した形式にされる。zipファイル名は任意に指定できる。zipファイル名およびサブフォルダー名は、半角英数字（ASCII文字）を使用する。
ウェブコンテンツは追加登録ができず、すべてのファイルが上書き登録される。プリンター５に登録したウェブコンテンツに、端末３などからアクセスする場合、zipファイルのフォルダー構成によって、参照するURLが異なる。具体的な例を図１１の［１］、［２］に示す。
【００４３】
３．プリンター５にデバイスを接続
プリンター５にデバイスを接続する。接続可能なデバイスは、上述したように、カスタマーディスプレイ８、バーコードスキャナー９、ディスプレイ１２、キャッシュドロワー１３、キーボード１４等である。さらに、ＯＳ標準のＨＩＤドライバーで制御可能なデバイス、ＯＳ標準のシリアル通信ドライバーで動作可能なシリアル通信デバイス、及び、シリアル通信デバイスと同様に制御可能なＵＳＢデバイスを含む。図６のコネクターパネル６０には、ＣＯＭコネクター６５が１つしかないが、シリアル−USB変換ケーブル、及び、シリアル−USB変換に対応したドライバープログラムがあれば、複数のシリアル通信デバイスを接続できる。
４．デバイス制御スクリプトの登録
プリンター５が対応した製品以外のデバイスをプリンター５で制御する場合、ユーザーが用意したデバイス制御スクリプトを登録する。登録は、ウェブブラウザーから行う。
５．デバイスの登録
プリンター５に接続するデバイスをプリンター５のソフトウェアに登録する。登録は、ウェブブラウザーから行う。
手順１．〜５で使用するウェブブラウザーはウェブブラウザー３１を含む。
【００４４】
手順２．のウェブコンテンツの登録方法を詳細に示す。
ウェブコンテンツの登録ファイルは、図１２に示すように、ウェブブラウザーでTMNetWebConfigを表示して登録する。
登録の手順は以下の通りである。
（１）登録するWebコンテンツをzipファイルで1つにまとめる。
（２）プリンター５の電源をオンにする。
（３）ウェブブラウザーを起動し、URL（http://プリンター５のIPアドレス/TMNetWebConfig/）を入力する。
（４）TMNetWebConfigが起動する。図１１の画面の［Webサービス設定］-［更新設定］をクリックする。
（５）“Webコンテンツの更新設定”画面が表示される。
［Webコンテンツファイル］の［参照］をクリックし、（１）で用意したWebコンテンツをまとめたzipファイルを選択する。
（６）［アップロード］をクリックする。
【００４５】
手順４．デバイス制御スクリプトの登録を詳細に示す。
ユーザーが用意したデバイス制御スクリプトは、図１３に示すように、ウェブブラウザーでTMNetWebConfigを表示して登録する。この方法では、ユーザーが用意したデバイスをプリンター５に接続して制御し、または、デバイスデータ処理のカスタマイズをする場合に、ユーザーがデバイス制御スクリプトを開発して登録できる。
登録の手順は以下の通りである。
（１）カスタマイズしたデバイス制御スクリプトを用意する。
（２）プリンター５の電源をオンにする。
（３）ウェブブラウザーを起動し、URL（http://プリンター５のIPアドレス/TMNetWebConfig/）を入力する。
（４）TMNetWebConfigを起動する。図１２の画面の［Webサービス設定］-［登録と削除］をクリックする。
（５）“制御スクリプト”画面が表示される。
［登録する制御スクリプト］の［参照］をクリックし、登録するデバイス制御スクリプトを選択する。
（６）［登録］をクリックする。
デバイス制御スクリプトが登録され、画面下の［登録済み制御スクリプト］に一覧表示される。
【００４６】
手順５．のデバイスの登録方法を詳細に示す。
図１４に示すように、ウェブブラウザーでTMNetWebConfigを表示してデバイスを登録する。
登録の手順は以下の通りである。
（１）ウェブブラウザーを起動し、URL（http://プリンター５のIPアドレス/TMNetWebConfig/）を入力する。
（２）TMNetWebConfigを起動する。図１４の画面の［Webサービス設定］-［デバイス登録］より登録するデバイスの種類にしたがってクリックする。図１４の画面で［デバイス登録］にはデバイス一覧３０１が表示される。デバイス一覧３０１から登録するデバイスの種類をクリックする。本実施形態ではデバイスの種類は、図１５に示すように、プリンター、ディスプレイ、キー入力デバイス、シリアル通信デバイス、その他、の５種類から選択される。デバイスの種類の詳細は図１５に示す通りである。
【００４７】
（３）各デバイスの設定画面が表示される。接続したデバイスをプリンター５に登録する。
（３−１）プリンターを登録する場合
プリンター５の本体が備えるローカルプリンターが登録されていることを、以下の手順で確認する。
（３−１−１）図１４の画面で［登録済みプリンター］のデバイスID”local_printer”に、”プリンター５”が登録されていることを確認する。
（３−１−２）［テスト印字］をクリックする。ローカルプリンターにより「TEST_PRINT」が印字されることを確認する。
（３−１−３）接続しているネットワークプリンター７を登録する。
以下の手順で登録する。
（３−１−３−１）図１６に示す項目（デバイスID、タイプ、型番、IPアドレス、リトライ間隔）を設定し、［登録］をクリックする。
（３−１−３−２）［登録済みプリンター］に追加されたことを確認したら、［テスト印字］をクリックする。登録したネットワークプリンター７により「TEST_PRINT」が印字されることを確認する。
（３−２）ディスプレイ（カスタマーディスプレイ８）を登録する場合。
カスタマーディスプレイのデバイスIDは、"local_display"固定である。接続しているカスタマーディスプレイ８を、以下の手順で登録する。
（３−２−１）図１４の画面で［使用する］を選択する。
（３−２−２）図１７の項目（通信設定、輝度）を設定し、［登録］をクリックする。
（３−２−３）［テスト表示］をクリックする。カスタマーディスプレイ８に文字が表示されることを確認する。
（３−３）キー入力デバイス１８を登録する場合
接続しているキー入力デバイス１８を、以下の手順で登録する。
（３−３−１）図１８の項目（デバイスID、デバイス名、制御スクリプト）を設定し、［登録］をクリックする。
（３−３−２）［登録済みキー入力デバイス］に追加されたことを確認したら、［動作テスト］をクリックする。
（３−３−３）ウェブブラウザーにより画面が表示される。キー入力デバイス１８を操作し、操作したとおりの結果が表示されることを確認する。
（３−４）シリアル通信デバイス１９を登録する場合
接続しているシリアル通信デバイス１９を、以下の手順で登録する。
（３−４−１）接続しているシリアル通信デバイス１９について、図１９の項目（デバイスID、デバイス名、制御スクリプト、通信速度、データビット、パリティ、ストップビット、フリー制御）を設定し、［登録］をクリックする。
（３−４−２）［登録済みシリアル通信デバイス］に追加されたことを確認する。
（３−５）その他のデバイスを登録する場合
接続しているデバイスを、以下の手順で登録する。
（３−５−１）接続しているデバイスについて、図２０の項目（デバイスID、制御スクリプト）を設定し、［登録］をクリックする。
（３−５−２）［登録済みその他デバイス］に追加されたことを確認する。
【００４８】
ここで、デバイスＡＰＩ３３を使用したアプリケーション開発のプログラミング方法について説明する。
デバイスＡＰＩ３３の組み込みは、次の通りである。
本システムのデバイス制御機能をクライアントサイドJavaScriptから利用するために、デバイスＡＰＩ３３が用意されている。デバイスＡＰＩ３３はJavaScriptで提供される。例えばファイル名は「device-*.js」である。
【００４９】
まず、device-*.jsをアプリケーションに組み込んで使用する。
準備として、デバイスＡＰＩ３３を利用するために、Webサーバーにdevice-*.jsを配置する。
続いて、Webページへの組み込みを行う。HTMLの<script>タグでWebページにスクリプトを組み込む。
（組み込み例）
<scripttype="text/javascript"src="device-1.0.0.js"></script>
【００５０】
プログラミングフローを図２１に示す。
図２１の”Applications”はウェブアプリケーション３２に相当し、”DeviceControl”はデバイス制御機能（デバイスＡＰＩ３３とデバイスサービスインターフェース５０１）に相当し、”Device”は制御されるデバイスを示す。
【００５１】
１：ウェブアプリケーション３２が”newEpsonDevice（）”コマンドを送信し、デバイスオブジェクトが生成される。
２：ウェブアプリケーション３２が”Connect（）”コマンドを送信し、デバイス制御機能との間の通信パスを確立する。
２．１：デバイス制御機能によりは”Callback（OK）”を返す。
３：ウェブアプリケーション３２が”CreateDevice（DEVICE_TYPE_PRINTER）”コマンドを送信する。
３．１：デバイスサービスインターフェース５０１によりデバイスに”Cmd（）”コマンドが送信される。
４：デバイスは”Deviceopen”を返す。
４．１：デバイス制御機能により”callback（Object,'OK'）”を返す。
３〜４．１の手順によりウェブアプリケーション３２がデバイスオブジェクトを取得する。
５：ウェブアプリケーション３２がデバイスに応じたcallbackの登録を行う。
６：ウェブアプリケーション３２がデバイスに応じたメソッドを呼び出す。
６．１：デバイスに”Cmd（）”コマンドが送信される。
６．１．１：デバイスが実行する。
５．１：デバイスが実行結果を返す。
５．２：デバイス制御機能により”callback（'success'）”を返す。
７：ウェブアプリケーション３２が”deleteDevice（Object）”を送信し、デバイスオブジェクトを開放する。
７．１：デバイスに”Cmd（）”コマンドが送信される。
８：デバイスがデバイスクローズを返す。
８．１：デバイス制御機能により”callback（'OK'）”を返す。
９：ウェブアプリケーション３２が”disconnect（）”コマンドを送信し、デバイスサービスインターフェース５０１との通信経路を遮断する。
【００５２】
デバイスＡＰＩ３３について詳細に説明する。
デバイスＡＰＩ３３には、以下のオブジェクトが用意されている。
・Deviceオブジェクト（図２２）
・デバイスオブジェクト共通（図２３）
・Displayオブジェクト（図２４）
・Keyboardオブジェクト（図２５）
・Printerオブジェクト（図２６Ａ、図２６Ｂ、図２６Ｃ）
・Scannerオブジェクト（図２７）
・SimpleSerialオブジェクト（図２８）
【００５３】
Deviceオブジェクトについて詳細に説明する。
「コンストラクター」Deviceオブジェクトのコンストラクターであり、Deviceオブジェクトを新しく作成し、初期化する。
［構文］
Device（）;
［戻り値］
Deviceオブジェクト
【００５４】
「connectメソッド」
デバイスサービスインターフェース５０１との接続経路を確立する。
［構文］
connect（ipAddress,port,callback）;
［パラメーター］
ipAddress:オブジェクト種類:（String）
プリンター５のIPアドレスを指定する。
・port:オブジェクト種類:（Number）
・8008（デバイスサービスインターフェース５０１のポート番号）を指定する。
・callback:オブジェクト種類:（Function）
・処理結果を受け取るコールバックを指定する。コールバックの第1パラメーターに図２８の文字列が返る。
【００５５】
「disconnectメソッド」
connectによって接続された通信経路を切断する。
［構文］
disconnect（）;
【００５６】
「isConnectメソッド」
connectによって接続された通信経路の確立状態を取得する。
［構文］
isConnect（）;
［戻り値］
図３０に示すように、戻り値は通信経路の確立状態である。
【００５７】
deviceAPオブジェクトについて詳細に説明する。
「createDeviceメソッド」
デバイスとのインターフェースとなるデバイスオブジェクトを取得する。
本メソッドの実行に成功すると、指定デバイスは排他的にロックされ、他のブラウザーからcreateDeviceを呼び出すと”DEVICE_IN_USE”が返るようになる。なお、プリンターは排他ロックされないので、複数ブラウザーからcreateDeviceによるデバイスオブジェクトの取得が可能である。
ondisconnectイベント発生の復帰処理で、すぐにcreateDeviceを実行すると、”DEVICE_IN_USE”が発生する。この場合、”DEVICE_IN_USE”以外が取得できるまで、再試行を行うことになる。
［構文］
createDevice（deviceId,deviceType,crypto,callback）;
［パラメーター］
deviceId:オブジェクト種類:（String）
デバイスIDを指定する。
第2パラメーター（deviceType）にDEVICE_TYPE_DISPLAYを指定する場合、"local_display"を指定する。
deviceType:オブジェクト種類:（String）
図３１のいずれかのデバイス種類を指定する。
crypto：オブジェクト種類:（Boolean）
通信データの暗号化の要否を指定する。
callback:オブジェクト種類:（Function）
処理結果を受け取るコールバックを指定する。コールバックの第2パラメーターが”OK”の場合、第1パラメーターにデバイスオブジェクトが返る。第2パラメーターは図３２の文字列が返る。
【００５８】
「deleteDeviceメソッド」
デバイスを解放し、他のクライアントから使用可能な状態にする。
［構文］
deleteDevice（deviceObject,callback）;
［パラメーター］
deviceObject:オブジェクト種類:（Object）
デバイスオブジェクトを指定する。
callback:オブジェクト種類:（Function）
処理結果を受け取るコールバックを指定する。コールバックのパラメーターに図３３の文字列が返る。
【００５９】
「getAdminメソッド」
プリンター５に設定された管理者名を取得する。（管理者名はTMNetWebConfigによって設定できる。）
［構文］
getAdmin（）;
［戻り値］
・管理者名の文字列（String）
【００６０】
「getLocationメソッド」
プリンター５に設定された設置場所情報を取得する。設置場所の文字列はTMNetWebConfigで設定できる。
［構文］
getLocation（）;
［戻り値］
設置場所の文字列（String）
【００６１】
「ondisconnectイベント」
再接続処理が失敗したことを受け取る。本イベントが発生した場合、再度接続を確立するなど、ネットワーク切断対策のための処理を行うことになる。
［構文］
Function（）
【００６２】
デバイスオブジェクト共通のオブジェクトについて説明する。
「callEventメソッド」
デバイスオブジェクトに対応するデバイス制御スクリプト５０２側の任意イベントを呼び出す。デバイス制御スクリプト５０２のイベントの詳細は、デバイス制御スクリプト５０２の説明において後述する。
［構文］
callEvent（eventName,data）;
［パラメーター］
eventName:オブジェクト種類:（String）
デバイス制御スクリプト側のイベント名を指定する。
data:オブジェクト種類:（Object）
呼び出すイベントに渡すデータを指定する。
プロパティ名と値のセットからなる、単純なJSONデータが指定可能である。
【００６３】
Displayオブジェクトについて説明する。
「resetメソッド」
カスタマーディスプレイ８の初期化設定を命令バッファーに追加する。初期化により、以下の状態になる。
・表示文字が全て消去され、登録された全てのウィンドウが破棄される。
・カーソルはデフォルト状態に戻り、ディスプレイ原点に移動する。
・表示点滅、表示輝度がデフォルト状態に戻る。
［構文］
reset（）;
［戻り値］
Displayオブジェクト
【００６４】
「createWindowメソッド」
ウィンドウ設定を命令バッファーに追加する。ウィンドウは定義済ウィンドウと重ならないように定義される。また、ディスプレイのサイズ（20桁×2行）に収まる大きさが指定される。
［構文］
createWindow（number,x,y,width,height,scrollMode）;
［パラメーター］
number:オブジェクト種類:（Number）
ウィンドウ番号を指定する。1〜4から指定される。
x:オブジェクト種類:（Number）
ウインドウ原点のディスプレイ上でのｘ座標を指定する。1〜20から指定される。・y:オブジェクト種類:（Number）
ウインドウ原点のディスプレイ上でのｙ座標を指定する。1か2を指定される。
width:オブジェクト種類:（Number）
ウィンドウの幅を指定する。
height:オブジェクト種類:（Number）
ウィンドウの高さを指定する。
scrollMode:オブジェクト種類:（String）
ウィンドウのスクロールモードの指定をする。図３４に示すパラメーターから選択する。
［戻り値］
Displayオブジェクト
【００６５】
「destroyWindowメソッド」
定義済ウィンドウの破棄設定を命令バッファーに追加する。
［構文］
destroyWindow（number）;
［パラメーター］
number:オブジェクト種類:（Number）
破棄するウィンドウ番号を指定する。1〜4から指定される。
［戻り値］
Displayオブジェクト
【００６６】
「setCurrentWindowメソッド」
カレントウィンドウの変更設定を命令バッファーに追加する。指定ウィンドウをカレントウィンドウとし、カーソルをカレントウィンドウの原点位置に移動させる。
［構文］
setCurrentWindow（number）;
［パラメーター］
number:オブジェクト種類:（Number）
移動先のウィンドウ番号を指定する。1〜4から指定される。
［戻り値］
Displayオブジェクト
【００６７】
「clearWindowメソッド」
カレントウィンドウ内の表示消去を命令バッファーに追加する。
［構文］
clearWindow（）;
［戻り値］
Displayオブジェクト
【００６８】
「setCursorPositionメソッド」
カーソル位置設定を命令バッファーに追加する。
［構文］
setCursorPosition（x,y）;
［パラメーター］
x:オブジェクト種類:（Number）
移動先となるx座標を指定する。1〜20から指定する。
y:オブジェクト種類:（Number）
移動先となるy座標を指定する。1か2を指定する。
［戻り値］
Displayオブジェクト
【００６９】
「moveCursorPositionメソッド」
カレントウィンドウ内でのカーソル位置設定を命令バッファーに追加する。
［構文］
moveCursorPosition（position）;
［パラメーター］
position:オブジェクト種類:（String）
カレントウィンドウ内でのカーソルの移動先を指定する。図３５のパラメーターから選択する。
［戻り値］
Displayオブジェクト
【００７０】
「setCursorTypeメソッド」
カーソル表示設定を命令バッファーに追加する。
［構文］
setCursorType（type）;
［パラメーター］
type:オブジェクト種類:（String）
カーソルの表示方法を指定する。図３６のパラメーターから選択する。
［戻り値］
Displayオブジェクト
【００７１】
「addTextメソッド」
文字列の表示を命令バッファーに追加する。
［構文］
addText（data）;
addText（data,lang）;
addText（data,x,y）;
addText（data,x,y,lang）;
［パラメーター］
data:オブジェクト種類:（String）
表示文字列を指定する。
lang:オブジェクト種類:（String）
文字列の表示言語を指定する。図３７の文字列から指定する。
x:オブジェクト種類:（Number）
表示位置のx座標を指定する。1〜20から指定する。
y:オブジェクト種類:（Number）
表示位置のy座標を指定する。1か2を指定する。
［戻り値］
Displayオブジェクト
【００７２】
「addReverseTextメソッド」
反転文字列の表示を命令バッファーに追加する。
［構文］
addReverseText（data）;
addReverseText（data,lang）;
addReverseText（data,x,y）;
addReverseText（data,x,y,lang）;
［パラメーター］
data:オブジェクト種類:（String）
表示文字列を指定する。
lang:オブジェクト種類:（String）
文字列の表示言語を指定する。図３８の文字列から指定する。
x:オブジェクト種類:（Number）
表示位置のx座標を指定する。1〜20から指定する。
ｙ:オブジェクト種類:（Number）
表示位置のy座標を指定する。1か2を指定する。
［戻り値］
Displayオブジェクト
【００７３】
「addMarqueeメソッド」
マーキー表示を命令バッファーに追加する。マーキー表示は、表示ウィンドウのスクロールモード設定とは無関係に、１行の水平スクロールモードで表示される。
［構文］
addMarquee（data,format,unitWait,repeatWait,repeatCount,lang）;
［パラメーター］
data:オブジェクト種類:（String）
表示文字列を指定する。
format:オブジェクト種類:（String）
文字列の表示方法を指定する。図３９から選択する。
unitWait:オブジェクト種類:（Number）
1文字ごとの表示間隔（ms）を指定する。指定可能な値は1〜2000である。
repeatWait:オブジェクト種類:（Number）
文字列表示の繰り返し間隔（ms）を指定する。指定可能な値は1〜2000である。
repeatCount:オブジェクト種類:（Number）
文字列表示の繰り返し回数を指定する。指定可能な値は0〜127である。0を指定すると無制限に繰り返す。
lang:オブジェクト種類:（String）
文字列の表示言語を指定する。図４０の文字列から指定する。
［戻り値］
Displayオブジェクト
【００７４】
「setBlinkメソッド」
画面の点滅設定を命令バッファーに追加する。
［構文］
setBlink（interval）;
［パラメーター］
interval:オブジェクト種類:（Number）
点滅時間（ms）を指定する。0〜12700から指定する。設定値は50ms単位に丸められる。0を指定すると点灯状態となる。
［戻り値］
Displayオブジェクト
【００７５】
「setBrightnessメソッド」
ディスプレイの輝度設定を命令バッファーに追加する。
［構文］
setBrightness（brightness）;
［パラメーター］
brightness:オブジェクト種類:（Number）
ディスプレイの輝度値を指定する。図４１のパラメーターから選択される。
［戻り値］
Displayオブジェクト
【００７６】
「showClockメソッド」
時刻の表示を命令バッファーに追加する。
時刻表示を行うと、表示中の文字列はすべて消去される。また、時刻表示中に他の命令を送信すると、時刻表示を終了する。
［構文］
showClock（）;
［戻り値］
Displayオブジェクト
【００７７】
「addCommandメソッド」
コマンドを命令バッファーに追加する。
［構文］
addCommand（data）;
［パラメーター］
data:オブジェクト種類:（String）
ESC/POSコマンドを文字列で指定する。コマンドの文字列は、”\x”で区切って指定される。例:“＼x1B＼x40”
［戻り値］
Displayオブジェクト
【００７８】
「sendメソッド」
命令バッファー内の命令を送信する。
［構文］
send（）;
【００７９】
「onreceiveイベント」
命令の実行結果を受け取る。
［構文］
Function（response）;
［コールバック関数のパラメーター］
response:オブジェクト種類:（Object）
命令の実行結果を受け取る。図４２Ａに示すプロパティが含まれる。successの値は図４２Ｂに示す通りであり、codeの値は図４２Ｃに示す。
【００８０】
Keyboardオブジェクトについて説明する。
「setPrefixメソッド」
キーボード入力を文字列としてまとめて受け取る際、文字列の始まりと判断するためのキーコードを設定する。
［構文］
setPrefix（data）;
［パラメーター］
data:オブジェクト種類:（Array）
キーコードの配列を指定する。キーコードは、例えば図９に示すキーコード一覧の通りである。
【００８１】
「onkeypressイベント」
キー押下イベントを受け取る。
［構文］
Function（data）;
［コールバック関数のパラメーター］
data:オブジェクト種類:（Object）
図４３に示すプロパティを受け取る。
【００８２】
「onstringイベント」
setPrefixで指定した文字群のいずれかで始まり、Enterキーを検出するまでの間に検出した文字入力を文字列として受け取る。
［構文］
Function（data）;
［コールバック関数のパラメーター］
data:オブジェクト種類:（Object）
図４４に示すプロパティを受け取る。
【００８３】
Printerオブジェクトを説明する。
「addTextAlignメソッド」
位置揃え設定を命令バッファーに追加する。
本APIの設定は、バーコード/2次元シンボルにも適用される。
印字モードがページモードで倒立印字を設定する場合、本APIではなく、後述する「addPageDirectionメソッド」で設定される。
［構文］
addTextAlign（align）;
［パラメーター］
align（必須パラメーター,オブジェクト種類:String）
位置揃えを指定する。
定数を図４５Ａに、戻り値を図４５Ｂに、例外を図４５Ｃに示す。
【００８４】
「addTextLineSpaceメソッド」
改行量設定を命令バッファーに追加する。
［構文］
addTextLineSpace（linespc）;
［パラメーター］
linespc:（必須パラメーター,オブジェクト種類:Number）
改行量（ドット単位）を指定する。0〜255の整数値で指定する。
戻り値を図４６Ａに、例外を図４６Ｂに示す。
【００８５】
「addTextRotateメソッド」
倒立印字設定を命令バッファーに追加する。
本APIの設定は、バーコード/2次元シンボルにも適用される。
印字モードがページモードで倒立印字を設定する場合、本APIではなく、後述する「addPageDirectionメソッド」で設定される。
［構文］
addTextRotate（rotate）;
［パラメーター］
rotate（必須パラメーター,オブジェクト種類:Boolean）
倒立印字の有無を指定する。
設定値を図４７Ａに示す、戻り値を図４７Ｂに、例外を図４７Ｃに示す。
【００８６】
「addTextメソッド」
文字の印字を命令バッファーに追加する。
テキストの印字後、テキスト以外を印字する場合、改行または紙送りを実行される。
ページモードでは、文字のベースラインドット（141ページ「付録」）を基準として、現在の印字位置に文字を展開する。
［構文］
addText（data）;
［パラメーター］
data（必須パラメーター,オブジェクト種類:String）
印字する文字列を指定する。水平タブ/改行は、図４８Ａのエスケープシーケンスを使用する。
戻り値を図４８Ｂに示し、例外を図４８Ｃに示す。
【００８７】
「addTextLangメソッド」
言語設定を命令バッファーに追加する。
［構文］
addTextLang（lang）;
［パラメーター］
lang:（必須パラメーター,オブジェクト種類:String）
対象言語を図４９Ａのようにう指定する。印字できる文字コードはプリンターの仕様による。
戻り値を図４９Ｂに示し、例外を図４９Ｃに示す。
【００８８】
「addTextFontメソッド」
文字のフォント設定を命令バッファーに追加する。
［構文］
addTextFont（font）;
［パラメーター］
font:（必須パラメーター,オブジェクト種類:String）
図５０Ａに示すように、フォントを指定する。
戻り値を図５０Ｂに示し、例外を図５０Ｃに示す。
【００８９】
「addTextSmoothメソッド」
スムージング設定を命令バッファーに追加する。
［構文］
addTextSmooth（smooth）;
［パラメーター］
smooth:（必須パラメーター,オブジェクト種類:Boolean）
スムージングの有無を指定する。
戻り値を図５１Ｂに示し、例外を図５１Ｃに示す。
【００９０】
「addTextDoubleメソッド」
文字の倍角設定を命令バッファーに追加する。
［構文］
addTextDouble（dw,dh）;
［パラメーター］
dw:（省略可能パラメーター,オブジェクト種類:Boolean）
文字の横倍角を指定する。設定値を図５２Aに示す。
dh（省略可能パラメーター,オブジェクト種類:Boolean）文字の縦倍角を指定する。
dwとdhのパラメーターの両方をture/1にした場合、4倍角の文字が印字される。設定値を図５２Bに示す。
戻り値を図５２Ｃに、例外を図５２Ｄに示す。
【００９１】
「addTextSizeメソッド」
文字の倍率設定を命令バッファーに追加する。
［構文］
addTextSize（width,height）;
［パラメーター］
width:（省略可能パラメーター,オブジェクト種類:Number）
文字の横倍率を指定する。設定値を図５３Ａに示す。
height（省略可能パラメーター,オブジェクト種類:Number）
文字の縦倍率を指定する。設定値を図５３Ｂに示す。
戻り値を図５３Ｃに、例外を図５３Ｄに示す。
【００９２】
「addTextStyleメソッド」
文字の装飾設定を命令バッファーに追加する。
［構文］
addTextStyle（reverse,ul,em,color）;
［パラメーター］
reverse:（省略可能パラメーター,オブジェクト種類:Boolean）
白黒反転文字を指定する。設定値を図５４Ａに示す。
ul（省略可能パラメーター,オブジェクト種類:Boolean）
アンダーラインを指定する。設定値を図５４Ｂに示す。
em（省略可能パラメーター,オブジェクト種類:Boolean）
太字を指定する。設定値を図５４Ｃに示す。
color（省略可能パラメーター,オブジェクト種類:String）
色を指定する。設定値を図５３Ｄに示す。
戻り値を図５４Ｅに、例外を図５４Ｆに示す。
【００９３】
「addTextPositionメソッド」
横方向の印字開始位置を命令バッファーに追加する。
［構文］
addTextPosition（x）;
［パラメーター］
x:（必須パラメーター,オブジェクト種類:Number）
横方向の印字開始位置（ドット単位）を指定する。0〜65535の整数値で指定する。
戻り値を図５５Ａに、例外を図５５Ｂに示す。
【００９４】
「addFeedUnitメソッド」
ドット単位の紙送りを命令バッファーに追加する。
［構文］
addFeedUnit（unit）;
［パラメーター］
unit:（必須パラメーター,オブジェクト種類:Number）
紙送り量（ドット単位）を指定する。0〜255の整数値で指定する。
戻り値を図５６Ａに、例外を図５６Ｂに示す。
【００９５】
「addFeedLineメソッド」
行単位の紙送りを命令バッファーに追加する。
［構文］
addFeedLine（line）;
［パラメーター］
line:（必須パラメーター,オブジェクト種類:Number）
紙送り量（行単位）を指定する。0〜255の整数値で指定する。
戻り値を図５７Ａに、例外を図５７Ｂに示す。
【００９６】
「addImageメソッド」
ラスターイメージの印字を命令バッファーに追加する。
HTML5Canvasの描画したグラフィックを印字する。
HTML5CanvasのRGBAフルカラー画像のうち、指定範囲をhalftoneプロパティとbrightnessプロパティの設定にしたがって、ラスターイメージデータに変換する。画像の1ピクセルがプリンターの1ドットに相当する。透明色が含まれている場合、画像の背景を白とみなす。
ラスターイメージを高速に印字する場合、上述のaddTextAlignメソッドをALIGN_LEFTに指定し、本APIのwidthパラメーターの値を、プリンターの用紙幅を超えない8の倍数に指定する。
ページモードでは、ラスターイメージの左下ドットを基準として、現在の印字位置にラスターイメージを展開する。印字位置は移動しない。
異なるドメインからダウンロードした画像が含まれたHTML5Canvasは印刷できない。JavaScriptの同一ポリシーにより、セキュリティーエラーが発生する。
［構文］
addImage（context,x,y,width,height,color,mode）;
［パラメーター］
context:（必須パラメーター,オブジェクト種類:Context）
HTML5Canvasの2Dコンテキストを指定する。
x:（必須パラメーター,オブジェクト種類:Number）
印字範囲の横方向の開始位置を指定する。0〜65535の整数値で指定する。
y:（必須パラメーター,オブジェクト種類:Number）
印字範囲の縦方向の開始位置を指定する。0〜65535の整数値で指定する。
width:（必須パラメーター,オブジェクト種類:Number）
印字範囲の幅を指定する。0〜65535の整数値で指定する。
height:（必須パラメーター,オブジェクト種類:Number）
印字範囲の高さを指定する。0〜65535の整数値で指定する。
color:（省略可能パラメーター,オブジェクト種類:String）
色を指定する。設定値を図５８Aに示す。
mode（省略可能パラメーター,オブジェクト種類:String）
カラーモードを指定する。設定値を図５８Ｂに示す。
戻り値を図５８Ｃに、例外を図５８Ｄに示す。
【００９７】
「addLogoメソッド」
NV（不揮発性メモリー）に記憶されたロゴの印字を命令バッファーに追加する。
プリンターのNVメモリーに登録されているロゴを印字する。
ロゴは、機種専用ユーティリティーやロゴ登録ユーティリティー（TMFLogo）を使って、あらかじめプリンターに登録される。
ページモードでは、ロゴの左下ドットを基準として、現在の印字位置にロゴを展開する。
［構文］
addLogo（key1,key2）;
［パラメーター］
key1（必須パラメーター,オブジェクト種類:Number）
NVロゴのキーコード1を指定する。0〜255の整数値で指定する。
key2（必須パラメーター,オブジェクト種類:Number）
NVロゴのキーコード2を指定する。0〜255の整数値で指定する。
戻り値を図５９Ａに、例外を図５９Ｂに示す。
【００９８】
「addBarcodeメソッド」
バーコード印字を命令バッファーに追加する。
ページモードでは、バーコードの左下ドット（HRIを除く）を基準として、現在の印字位置にバーコードを展開する。
［構文］
addBarcode（data,type,hri,font,width,height）;
［パラメーター］
data（必須パラメーター,オブジェクト種類:String）
バーコードデータを文字列で指定する。バーコードタイプを図６０Ａ、図６０Ｂ、図６０Ｃに示す。
文字列で表現できないバイナリーデータを指定する場合、図６０Ｄのエスケープシーケンスで指定する。
type（必須パラメーター,オブジェクト種類:String）
バーコードの種類を指定する。定数を図６０Ｅに示す。
hri（省略可能パラメーター,オブジェクト種類:String）
HRIの位置を指定する。定数を図６０Ｆに示す。
font（省略可能パラメーター,オブジェクト種類:String）
HRIフォントを指定する。定数を図６０Ｇに示す。
width（省略可能パラメーター,オブジェクト種類:Number）
1モジュールの幅をドット単位で指定する。2〜6の整数値で指定する。
height（省略可能パラメーター,オブジェクト種類:Number）
バーコードの高さをドット単位で指定する。1〜255の整数値で指定する。
戻り値を図６０Ｈに、例外を図６０Ｉに示す。
【００９９】
「addSymbolメソッド」
2次元シンボル印字を命令バッファーに追加する。
ページモードでは、2次元シンボルの左上ドットを基準として、現在の印字位置にバーコードを展開する。
［構文］
addSymbol（data,type,level,width,height,size）;
［パラメーター］
data（必須パラメーター,オブジェクト種類:String）
2次元シンボルデータを文字列で指定する。２次元コードタイプを図６１Ａ、図６１Ｂに示す。
文字列で表現できないバイナリーデータを指定する場合、図６１Ｃのエスケープシーケンスで指定する。
type（必須パラメーター,オブジェクト種類:String）
2次元シンボルの種類を指定する。定数を図６１Ｄに示す。
level（省略可能パラメーター,オブジェクト種類:String）
エラー訂正レベルを指定する。定数を図６１Ｅに示す。
レベルは2次元シンボルの種類に合わせて選択される。MaxiCode,2次元GS1DataBarの場合、LEVEL_DEFAULTを選択される。
width（省略可能パラメーター,オブジェクト種類:Number）
モジュールの幅を指定する。0〜255の整数値で指定する。MaxiCodeは無視される。
height（省略可能パラメーター,オブジェクト種類:Number）
モジュールの高さを指定する。0〜255の整数値で指定する。QRCodeとMaxiCodeは無視される。
size（省略可能パラメーター,オブジェクト種類:Number）
2次元シンボルの最大サイズを指定する。0〜65535の整数値で指定する。QRCodeとMaxiCodeは無視される。
戻り値を図６１Ｆに、例外を図６１Ｇに示す。
【０１００】
「addHLineメソッド」
横罫線印字を命令バッファーに追加する。横罫線の描画をする。ページモードでは使用できない。
［構文］
addHLine（x1,x2,style）;
［パラメーター］
x1:（必須パラメーター,オブジェクト種類:Number）
横罫線の描画開始位置（ドット単位）を指定する。0〜65535の整数値で指定する。
x2:（必須パラメーター,オブジェクト種類:Number）
横罫線の描画終了位置（ドット単位）を指定する。0〜65535の整数値で指定する。
style:（省略可能パラメーター,オブジェクト種類:String）
罫線の種類を指定する。定数を図６２Ａに示す。
戻り値を図６２Ｂに、例外を図６２Ｃに示す。
【０１０１】
「addVLineBeginメソッド」
縦罫線の開始を命令バッファーに追加する。縦罫線の描画を開始する。ページモードでは使用できない。縦罫線は、後述するaddVLineEndメソッドで終了を指定するまで描画する。本APIはaddVLineEndと一緒に使用される。
［構文］
addVLineBegin（x,style）;
［パラメーター］
x（必須パラメーター,オブジェクト種類:Number）
縦罫線の描画開始位置（ドット単位）を指定する。0〜65535の整数値で指定する。
style（省略可能パラメーター,オブジェクト種類:String）
罫線の種類を指定する。定数を図６３Ａに示す。
戻り値を図６３Ｂに、例外を図６３Ｃに示す。
【０１０２】
「addVLineEndメソッド」
縦罫線の終了を命令バッファーに追加する。縦罫線の描画を終了する。ページモードでは使用できない。本APIは前述のaddVLineBeginメソッドと一緒に使用される。
［構文］
addVLineEnd（x,style）;
［パラメーター］
x（必須パラメーター,オブジェクト種類:Number）
縦罫線の描画を終了する位置（ドット単位）を指定する。0〜65535の整数値で指定する。
style（省略可能パラメーター,オブジェクト種類:String）
描画を終了する罫線の種類を指定する。定数を図６４Ａに示す。
戻り値を図６４Ｂに、例外を図６４Ｃに示す。
【０１０３】
「addPageBeginメソッド」
ページモード開始を命令バッファーに追加する。ページモードの処理が開始する。
縦罫線は、次に説明するPageEndメソッドで終了を指定するまでページモードで処理する。本APIはPageEndメソッドと一緒に使用される。
［構文］
addPageBegin（）;
戻り値を図６５に示す。
【０１０４】
「addPageEndメソッド」
ページモード終了を命令バッファーに追加する。ページモードの処理が終了する。本APIは前述のaddPageBeginメソッドと一緒に使用される。
［構文］
addPageEnd（）;
戻り値を図６６に示す。
【０１０５】
「addPageAreaメソッド」
ページモード印字領域を命令バッファーに追加する。
ページモード印字領域（座標）を指定する。本APIに続けて、addTextメソッドなど印刷データのAPIを指定する。
印字内容に合わせて印字領域を指定される。印字データが印字領域をはみ出た場合、印字データが途中で切れた印字結果になる。本APIは上述のaddPageBeginメソッドと上述のPageEndメソッドに挟んで使用される。
［構文］
addPageArea（x,y,width,height）;
［パラメーター］
x（必須パラメーター,オブジェクト種類:Number）
横方向の原点（ドット単位）を指定する。0〜65535の整数値で指定する。0はプリンターの印字可能領域の左端になる。
y（必須パラメーター,オブジェクト種類:Number）
縦方向の原点（ドット単位）を指定する。0〜65535の整数値で指定する。0は紙送りをしていない位置である。
width（必須パラメーター,オブジェクト種類:Number）
印字領域の幅（ドット単位）を指定する。0〜65535の整数値で指定する。
height（必須パラメーター,オブジェクト種類:Number）
印字領域の高さ（ドット単位）を指定する。0〜65535の整数値で指定する。
印字領域の幅と高さは、印字方向の設定に合わせて確定される。印字データが切れてしまう場合がある。
戻り値を図６７Ａに、例外を図６７Ｂに示す。
【０１０６】
「addPageDirectionメソッド」
ページモード印字方向設定を命令バッファーに追加する。ページモードの印字方向を指定する。回転させない場合は、省略できる。本APIは上述のaddPageBeginメソッドとPageEndメソッドに挟んで使用される。
［構文］
addPageDirection（dir）;
［パラメーター］
dir（必須パラメーター,オブジェクト種類:String）
ページモードの印字方向を指定する。定数を図６８Ａに示す。
戻り値を図６８Ｂに、例外を図６８Ｃに示す。
【０１０７】
「addPagePositionメソッド」
ページモードの印字位置設定領域を命令バッファーに追加する。
addPageAreaメソッドで指定したエリア内での、印字開始位置（座標）を指定する。本APIは上述のaddPageBeginメソッドとPageEndメソッドに挟んで使用される。
［構文］
addPagePosition（x,y）;
［パラメーター］
x:（必須パラメーター,オブジェクト種類:Number）
横方向の印字位置（ドット単位）を指定する。0〜65535の整数値で指定する。
y:（必須パラメーター,オブジェクト種類:Number）
縦方向の印字位置（ドット単位）を指定する。0〜65535の整数値で指定する。
印字開始位置（座標）は、印字内容に合わせて指定される。以下を参考にされる。
・文字列を印字する場合
最初の文字のベースライン左端を指定する。
標準の大きさで、左詰めで印字する場合は省略可能である。高さが2倍の文字を印刷する場合は、yを42以上に指定する。
・バーコードを印字する場合
シンボルの左下を指定する。yにバーコードの高さを指定される。
・グラフィック/ロゴを印字する場合
グラフィックデータの左下を指定する。yにグラフィックデータの高さを指定される。
・2次元シンボルを印字する場合
シンボルの左上を指定する。左上から印字する場合は、省略可能である。
戻り値を図６９Ａに、例外を図６９Ｂに示す。
【０１０８】
「addPageLineメソッド」
ページモードの直線描画を命令バッファーに追加する。ページモードで直線を描画する。斜線は描画できない。本APIは上述のaddPageBeginメソッドとPageEndメソッドに挟んで使用される。
［構文］
addPageLine（x1,y1,x2,y2,style）;
［パラメーター］
x1（必須パラメーター,オブジェクト種類:Number）
横方向の描画開始位置（ドット単位）を指定する。0〜65535の整数値で指定する。
y1（必須パラメーター,オブジェクト種類:Number）
縦方向の描画開始位置（ドット単位）を指定する。0〜65535の整数値で指定する。
x2（必須パラメーター,オブジェクト種類:Number）
横方向の描画終了位置（ドット単位）を指定する。0〜65535の整数値で指定する。
y2（必須パラメーター,オブジェクト種類:Number）
縦方向の描画終了位置（ドット単位）を指定する。0〜65535の整数値で指定する。
style（省略可能パラメーター,オブジェクト種類:String）
罫線の種類を指定する。定数を図７０Ａに示す。
戻り値を図７０Ｂに、例外を図７０Ｃに示す。
【０１０９】
「addPageRectangleメソッド」
ページモードの四角形描画を命令バッファーに追加する。ページモードで四角形を描画する。本APIは上述のaddPageBeginメソッドとPageEndメソッドに挟んで使用される。
［構文］
addPageRectangle（x1,y1,x2,y2,style）;
［パラメーター］
x1（必須パラメーター,オブジェクト種類:Number）
横方向の描画開始位置（ドット単位）を指定する。0〜65535の整数値で指定する。
y1（必須パラメーター,オブジェクト種類:Number）
縦方向の描画開始位置（ドット単位）を指定する。0〜65535の整数値で指定する。
x2（必須パラメーター,オブジェクト種類:Number）
横方向の描画終了位置（ドット単位）を指定する。0〜65535の整数値で指定する。
y2（必須パラメーター,オブジェクト種類:Number）
縦方向の描画終了位置（ドット単位）を指定する。0〜65535の整数値で指定する。
style（省略可能パラメーター,オブジェクト種類:String）
線の種類を指定する。定数を図７１Ａに示す。
戻り値を図７１Ｂに、例外を図７１Ｃに示す。
【０１１０】
「addCutメソッド」
用紙カットを命令バッファーに追加する。用紙カットを設定する。ページモードでは使用できない。
［構文］
addCut（type）;
［パラメーター］
type（省略可能パラメーター,オブジェクト種類:String）
用紙カット方法を指定する。設定値を図７２Ａに示す。
戻り値を図７２Ｂに、例外を図７２Ｃに示す。
【０１１１】
「addPulseメソッド」
ドロアーキックを命令バッファーに追加する。ドロアーキックを設定する。ページモードでは使用できない。ドロアーは、ブザーと一緒に使用できない。
［構文］
addPulse（drawer,time）;
［パラメーター］
drawer（省略可能パラメーター,オブジェクト種類:String）
ドロアーキックコネクターを指定する。設定値を図７３Ａに示す。
time（省略可能パラメーター,オブジェクト種類:String）
ドロアーキック信号のオン時間を指定する。設定値を図７３Ｂに示す。
戻り値を図７３Ｃに、例外を図７３Ｄに示す。
【０１１２】
「addSoundメソッド」
ブザーの鳴動を命令バッファーに追加する。ブザーを設定する。
ページモードでは使用できない。
ブザーの機能は、ドロアーと一緒に使用できない。
本APIはプリンターにブザーが付いてなければ使用できない。
［構文］
addSound（pattern,repeat）;
［パラメーター］
pattern:（省略可能パラメーター,オブジェクト種類:String）
ブザーの音色を指定する。設定値を図７４Ａに示す。
repeat（省略可能パラメーター,オブジェクト種類:String）
繰り返し回数を指定する。設定値を図７４Ｂに示す。
repeatに"0"を指定後、ブザーを停止したい場合、本APIを再度実行し、patternにPATTERN_NONEを指定する。
戻り値を図７４Ｃに示し、例外を図７４Ｄに示す。
【０１１３】
「addCommandメソッド」
コマンドを命令バッファーに追加する。ESC/POSコマンドを送信する。
addCommandメソッドで、コマンドの命令バッファーを送信する場合、コマンドデータの文字列は、”＼x”で区切って指定される。
例:“＼x1B＼x40”
［構文］
addCommand（data）;
［パラメーター］
data（省略可能パラメーター,オブジェクト種類:String）
ESC/POSコマンドを文字列で指定する。
戻り値を図７５Ａに示し、例外を図７５Ｂに示す。
【０１１４】
「sendメソッド」
命令バッファーを送信する。
［構文］
send（）;
【０１１５】
「printメソッド」
HTML5Canvasで描画したプリントイメージを印刷する。
HTML5CanvasのRGBAフルカラー画像のうち、指定範囲をhalftoneプロパティとbrightnessプロパティの設定にしたがって、ラスターイメージデータに変換する。画像の1ピクセルがプリンターの1ドットに相当する。透明色が含まれている場合、画像の背景を白とみなす。
異なるドメインからダウンロードした画像が含まれたHTML5Canvasは印刷できない。JavaScriptの同一出身ポリシーにより、セキュリティーエラーが発生する。
［構文］
print（canvas,cut,mode）;
［パラメーター］
canvas（必須パラメーター,オブジェクト種類:canvas）
印刷するHTML5Canvasオブジェクトを指定する。
cut（省略可能パラメーター,オブジェクト種類:Boolean）
用紙カットの有無を設定する。設定値を図７６Ａに示す。
mode（省略可能パラメーター,オブジェクト種類:String）
カラーモードを指定する。設定値を図７６Ｂに示す。
例害を図７６Ｃに示す。
【０１１６】
「startMonitorメソッド」
ステータスイベントを有効化する。プリンターのステータスをイベントで通知する。intervalプロパティで指定した間隔でステータスを更新する。
［構文］
startMonitor（）;
【０１１７】
「stopMonitorメソッド」
ステータスイベントを無効化する。
［構文］
stopMonitor（）;
【０１１８】
「halftoneプロパティ」
モノクロ（2階調）印刷で適用するハーフトーン処理方法を指定する。初期値はHALFTONE_DITHERである。
オブジェクト種類：String
設定値を図７７に示す。
【０１１９】
「brightnessプロパティ」
明るさ補正値をガンマー値0.1〜10.0の範囲で指定する。初期値は1.0である。
オブジェクト種類：Number
【０１２０】
「timeoutプロパティ」
上述したsendメソッドで送信するメッセージのタイムアウト（ms）を指定する。初期値は10,000である。
オブジェクト種類：Number
【０１２１】
「ntervalプロパティ」
ステータスを更新する間隔を指定する。
オブジェクト種類：Number
［説明］
ステータスを更新する間隔をミリ秒単位で指定する。
初期値：3000（3秒）
最小値：1000（1秒以上）
不正な値を指定した場合、3000とみなされる。
【０１２２】
「onreceiveイベント」
コールバック関数を登録して、応答ドキュメント受信イベントを取得する。
［構文］
Function（response）
［コールバック関数のパラメーター］
パラメーター:response（後述する「responseオブジェクトのプロパティ」を参照）
名称:応答ドキュメント
オブジェクト種類:Object
［responseオブジェクトのプロパティ］
図７８Ａにプロパティの一覧を示す。
［successの値］
図７８Ｂに、successの値の一覧を示す。
［codeの値］
図７８Ｃに、codeの値の一覧を示す。
［statusの値］
図７８Ｄに、statusの値の一覧を示す。
【０１２３】
「onerrorイベント」
コールバック関数を登録して、通信エラーイベントを取得する。
［構文］
Function（error）
［コールバック関数のパラメーター］
パラメーター:error（後述する「errorオブジェクトのプロパティ」を参照）
名称:通信エラー情報
オブジェクト種類:Object
［errorオブジェクトのプロパティ］
errorオブジェクトのプロパティの一覧を図７９に示す。
【０１２４】
「onstatuschangeイベント」
コールバック関数を登録して、ステータス変更イベントを取得する。
［構文］
Function（status）
［コールバック関数のパラメーター］
パラメーター:status
名称:ステータス
オブジェクト種類:Number
【０１２５】
「ononlineイベント」
コールバック関数を登録して、オンラインイベントを取得する。
オブジェクト種類：Function（）
【０１２６】
「onofflineイベント」
コールバック関数を登録して、オフラインイベントを取得する。
オブジェクト種類：Function（）
【０１２７】
「onpoweroffイベント」
コールバック関数を登録して、無応答イベントを取得する。
オブジェクト種類：Function（）
【０１２８】
「oncoverokイベント」
コールバック関数を登録して、カバークローズイベントを取得する。
オブジェクト種類：Function（）
【０１２９】
「oncoveropenイベント」
コールバック関数を登録して、カバーオープンイベントを取得する。
オブジェクト種類：Function（）
【０１３０】
「onpaperokイベント」
コールバック関数を登録して、用紙ありイベントを取得する。
オブジェクト種類：Function（）
【０１３１】
「onpapernearendイベント」
コールバック関数を登録して、用紙ニアエンドイベントを取得する。
オブジェクト種類：Function（）
【０１３２】
「onpaperendイベント」
コールバック関数を登録して、用紙エンドイベントを取得する。
オブジェクト種類：Function（）
【０１３３】
「ondrawerclosedイベント」
コールバック関数を登録して、ドロアークローズイベントを取得する。
オブジェクト種類：Function（）
【０１３４】
「ondraweropenイベント」
コールバック関数を登録して、ドロアーオープンイベントを取得する。
オブジェクト種類：Function（）
【０１３５】
Scannerオブジェクトについて説明する。
「ondataイベント」
バーコード情報の読み取りイベントを受け取る。
［構文］
Function（data）;
［コールバック関数のパラメーター］
data
オブジェクト種類:（Object）
図８０に示すプロパティを受け取る。
【０１３６】
SimpleSerialオブジェクトについて説明する。
API仕様はデバイス制御スクリプトの作成により、カスタマイズすることができる。
「sendCommand」
任意のコマンドを送信する。
［構文］
sendCommand（data）;
［パラメーター］
data
オブジェクト種類:（String）
コマンドを16進数文字列で指定する。
コマンドの文字列は、”＼x”で区切って指定される。
<例>
0x020x1F0x03を送信する場合は、文字列”＼x02＼x1F＼x03”を指定する。
【０１３７】
「oncommandreplyイベント」
デバイスからの応答イベントを受け取る。
［構文］
Function（data）;
［コールバック関数のパラメーター］
data
オブジェクト種類:（String）
応答データの16進数文字列を受け取る。
受け取る16進数文字列は、”＼x”で区切られている。例:“＼x1B＼x40”
【０１３８】
続いて、デバイス制御スクリプト５０２について説明する。
まず、プログラミングについて説明する。
図８１は、デバイス制御スクリプトの使用に関する説明図である。
本発明のデバイス制御機能で提供するデバイス制御スクリプト５０２を使うことにより、デバイスのデータ処理のカスタマイズをしたり、新たなデバイスをウェブアプリケーションから使用したりすることができる。図８１に示すように、デバイス制御スクリプト５０２は、デバイスコネクション５０３と、クライアントコネクション５０４とを有する。この図８１ではプリンター５のデバイスを総称してデバイス２０として示す。
【０１３９】
上述したDeviceオブジェクトの「createDeviceメソッド」が実行されると、プリンター５上のデバイスサービスインターフェース５０１が、要求されたデバイスに対応するデバイス制御スクリプトを使用できるようにオブジェクトを生成する。生成されたオブジェクトにより、デバイスを制御できる。
【０１４０】
デバイス制御スクリプト５０２には、デバイスサービスインターフェース５０１から、図８２に示すオブジェクトが渡される。
これらのデバイスコネクション５０３及びクライアントコネクション５０４を使うことで、図８１に示したように、デバイス制御スクリプト５０２はウェブアプリケーション３２およびデバイス２０と通信することができる。デバイスコネクション５０３は、デバイス２０とのデータ送受信を行うオブジェクトである。クライアントコネクション５０４は、ウェブブラウザー３１側のデバイスオブジェクトにデータ送信を行うオブジェクトであり、デバイスサービスインターフェース５０１にアクセスする。
【０１４１】
デバイス制御スクリプトのオブジェクト使った機能について説明する。
デバイス制御スクリプト用APIを使って以下の機能を使用できる。
・ブラウザー側のデバイスオブジェクトの任意のイベントを呼び出し可能である。
・デバイスにデータを送信可能である。
・デバイスから発生したデータを受信可能である。
【０１４２】
デバイス制御スクリプトの構成について説明する。
デバイス制御スクリプトは以下の条件を満たすようにコーディングされる。
・デバイス制御に必要なコードは、1つのファイルにまとめて記述される。
（TMNetWebConfigを使ってデバイスの設定をする際、1つのファイルしか登録できないこととする。）
・ファイル名の最初のドット"."までの名称と、コンストラクター名称を同じにする。
（例）ファイル名:Keyboard_Generic.ver1.0.js→コンストラクターの名称:Keyboard_Generic
・コンストラクターの外部参照のために、exports宣言する。
（例）exports.Keyboard_Generic=Keyboard_Generic;
・デバイス制御スクリプトには、図８３及び図８４に示すプロパティを持たせる。コンストラクターで適切な名称を設定される。
DEVICE_TYPEプロパティ（オブジェクト種類:String）
設定値の一覧を図８３に示す。
DEVICE_GROUPプロパティ（オブジェクト種類:String
設定値の一覧を図８４に示す。
・デバイスで発生したデータを受け取るためonDeviceDataメソッドを用意する。詳細は、後述する「デバイス制御スクリプト名オブジェクト」で説明する。
・ウェブブラウザー３１側で動作するデバイスオブジェクトのメソッドに対応するメソッドを用意する。詳細は、後述する「任意イベント」で説明する。
デバイス制御スクリプト５０２の構成例を、図８５に示す。
【０１４３】
デバイス制御スクリプトAPIについて説明する。
デバイス制御スクリプトAPIには、次のオブジェクトが用意されている。
・クライアント接続（ClientConnection）オブジェクト（図８６にAPIの一覧を示す。）
・デバイス接続（DeviceConnection）オブジェクト（図８７にAPIの一覧を示す。）
・デバイス制御スクリプト名オブジェクト（図８８にAPIの一覧を示す。）
【０１４４】
ClientConnectionオブジェクトについて説明する。
このオブジェクトは、デバイス制御スクリプト５０２のコンストラクターの第1パラメーターに渡されるオブジェクトである。
API「send」は、ブラウザーで動作するデバイスオブジェクトにデータを送信する。
［構文］
send（event,data）;
［パラメーター］
・event:オブジェクト種類:（String）
デバイスオブジェクトのイベント名を設定する。
・data:オブジェクト種類:（Object）
デバイスオブジェクトのイベントに渡すデータを指定する。
例を図８９に示す。この例では、デバイスオブジェクトのonkeypressイベントが呼び出され、onkeypressイベントのdataパラメーターを使い、data.keycodeから49、data.asciiから'1'を取得する。
【０１４５】
DeviceConnectionオブジェクトについて説明する。
このオブジェクトは、デバイス制御スクリプト５０２のコンストラクターの第2パラメーターに渡されるオブジェクトである。
API「send」は、シリアル通信デバイスにデータを送信する。
なお、HIDドライバーで動作可能な入力デバイスの場合には、送信されない。
［構文］
send（data）;
［パラメーター］
data:オブジェクト種類:（Buffer）
デバイスに送信するデータを指定する。
【０１４６】
デバイス制御スクリプト名オブジェクトについて説明する。
「onDeviceDataイベント」（HIDドライバーで動作可能な入力デバイス）
このイベントは、キー入力デバイスから検出されたデータを受信するイベントである。
キー入力デバイス用のデバイス制御スクリプト５０２の場合、この形式でイベントが記述される。
［構文］
onDeviceData（event,keycode,ascii）;
［パラメーター］
event:オブジェクト種類:（Number）
キー操作の方向を受け取る。値の一覧を図９０に示す。
keycode:オブジェクト種類:（Number）
キーコードを受け取る。キーコードの例は図９のキーコード一覧に示した。
ascii:オブジェクト種類:（String）
操作されたキーに対応する文字を受け取る。
キーコードに対応する文字がない場合（F1キーなど）、undefinedになる。
【０１４７】
「onDeviceDataイベント」（シリアル通信デバイス）
このイベントはシリアル通信デバイスからデータを受信するイベントである。
シリアル通信用のデバイス制御スクリプト５０２の場合、この形式でイベントが記述される。
［構文］
onDeviceData（data）;
［パラメーター］
data:オブジェクト種類:（Buffer）
シリアル通信デバイスから受信したデータを受け取る。
【０１４８】
「任意イベント」
ブラウザーで動作するデバイスオブジェクトのAPI実行結果を受信するイベントである。
［構文］
callEventで指定した名称（data）;
［パラメーター］
data:オブジェクト種類:（Object）
デバイスオブジェクトのcallEventでパラメーター指定したオブジェクトを受け取る。
【０１４９】
サンプルプログラムについて説明する。
以下に説明するサンプルプログラムは、ＰＯＳシステムのような使い方をすることが可能である。また、デバイス毎のデバイスＡＰＩ３３のサンプルコードを作成できる。
図９１には、ＰＯＳ端末のサンプルの一例を示す。図９２には、プリンターのサンプルプログラムの一例を示す。
サンプルプログラムを動作させるのに必要な動作環境は、次の通りである。
（１）必要なデバイス（全てのデバイスを準備しなくても、サンプルプログラムを使用する事は可能である）
・プリンター５
・カスタマーディスプレイ８
・POSキーボード
・バーコードスキャナー
（２）プリンター５の操作に必要なもの
・ディスプレイ
・キーボード
・マウス
（３）その他
・LANケーブル
・サンプルプログラム
【０１５０】
サンプルプログラムの環境設定のフローを図９３に示す。
なお、TMNet TMNetWebConfig使用中に、“Windowsセキュリティ”画面が表示された場合、ユーザー名とパスワードを入力する。
１．LANケーブルの接続
プリンター５にLANケーブルを接続する。
２．サンプルプログラムの登録
サンプルプログラム（device_API_J_Sample.zip）をプリンター５に登録する。
３．デバイスの接続
使用するデバイスを、プリンター５に接続する。
４．デバイスの設定
TMNet TMNetWebConfigを使って、設定する。
【０１５１】
サンプルプログラムの登録について説明する。
図９４は、サンプルプログラムを登録する画面である。サンプルプログラム（device_API_UM_J_Sample.zip）を、TMNet TMNetWebConfigを使ってプリンター５に登録する。
以下の手順で登録する。
１．プリンター５の電源をオンにする。
２．デスクトップにあるショートカットから、TMNet TMNetWebConfigを起動する。
図９４中に［２］で示す［Webサービス設定］-［Webコンテンツ］-［更新設定］を選択する。
３．図９４の右側のフレームに示すように、“Webコンテンツの更新設定”画面が表示される。図９４中に［３］で示す［参照］ボタンをクリックし、サンプルプログラムを設定する。
４．次に図９４中に［４］で示す［アップロード］ボタンをクリックし、サンプルプログラムをプリンター５に登録する。
【０１５２】
デバイスの設定について説明する。
ここでは、TMNet TMNetWebConfigを使って、以下のデバイスを設定する。
・カスタマーディスプレイ
・POSキーボード
・バーコードスキャナー
【０１５３】
カスタマーディスプレイの設定について説明する。
図９５は、カスタマーディスプレイを設定する画面を示す。
以下の手順で登録する。
１．デスクトップにあるショートカットから、TMNet TMNetWebConfigを起動する。
図９５に［１］で示す［Webサービス設定］-［デバイス管理］-［ディスプレイ］を選択する。
２．図９５の“カスタマーディスプレイの設定”画面が表示される。図９５に［２］で示す［使用する］を選択し、［設定］ボタンをクリックする。ここで、設定値を変更する必要はない。
【０１５４】
POSキーボード/バーコードスキャナーの設定について説明する。
図９６は、POSキーボード/バーコードスキャナーを設定する画面を示す。
以下の手順で登録する。
１．POSキーボード/MSR/バーコードスキャナーが、プリンター５に接続されているか確認する。
２．デスクトップにあるショートカットから、TMNet TMNetWebConfigを起動する。
図９６の［２］に示す［Webサービス設定］-［デバイス管理］-［キー入力デバイス］  を選択する。
３．図９６の“キー入力デバイス”画面が表示される。図９６の［３］の箇所にデバイスID/デバイス名/制御スクリプトを設定し、［登録］ボタンをクリックする。設定の例を図９７に示す。登録は、１デバイスずつ登録する。
４．登録したデバイスが、図９６の［４］の［登録済みキー入力デバイス］に表示される。
【０１５５】
サンプルプログラムの起動について説明する。
次のようにサンプルプログラム（device_API_UM_J_Sample.zip）を起動する。
１．Webブラウザーを起動し、アドレスバーにプリンター５のIPアドレスを入力する。プリンター５のIPアドレスの初期値は、"192.168.192.168"である。
２．サンプルプログラムが表示される。図９８に表示例を示す。サンプルプログラムが表示されない場合、LANケーブルが接続されているか確認する。
【０１５６】
サンプルプログラムの使い方
サンプルプログラムには、以下の項目がある。各項目を選択すると対応する画面に移動する。各サンプルプログラムの詳細は後述する。
・POS Terminal Sample
・Customer Display Sample
・Keyboard Sample
・Printer Sample
・Barcode Scanner Sample
【０１５７】
Customer Display Sampleの詳細を説明する。
このサンプルプログラムにより、カスタマーディスプレイを動作させたり、カスタマーディスプレイのサンプルコードを生成したりすることが可能になる。
Customer Display Sampleは以下の手順で使用される。
１．サンプルプログラムを起動する。図９８で［Customer Display Sample］を選択する。
２．図９９Ａの"Customer Display Sample"画面が表示される。この画面の［接続］ボタンをクリックする。
接続に成功すると、［Console］に以下のメッセージが表示される。また、カスタマーディスプレイの表示が変わる。
なお、［Device Setting］の設定を変更する必要はない。ただし、IPアドレスなどを変更している場合、変更した値に合わせて［Device Setting］の設定を変更する。
３．図９９Ｂの画面で動作させたい機能を設定し、［追加］ボタンをクリックする。
４．図９９Ｃの［Display Objectサンプルコード］に、手順3で追加した機能のソースが表示される。コピーして使用することができる。
５．図９９Ｃの画面の［送信］ボタンをクリックすると、手順3で追加した機能に合わせてディスプレイの表示が変わる。
【０１５８】
Keyboard Sampleの詳細を説明する。
このサンプルプログラムにより、POSキーボードからの入力を取得することができる。
は以下の手順で使用される。
１．サンプルプログラムを起動する。図９８で［Keyboard Sample］を選択する。
２．図１００Ａの"Keyboard Sample"画面が表示される。［接続］ボタンをクリックする。接続に成功すると、［Console］に以下のメッセージが表示される。
なお、［Device Setting］の設定を変更する必要はない。ただし、IPアドレスなどを変更している場合、変更した値に合わせて［Device Setting］の設定を変更する。
３．文字列の始まりと判断するキーを選択し、［登録］ボタンをクリックする。
この設定には、あらかじめPOSキーボード側の登録が必要である。
例：F1+指定文字列+Enter
４．POSキーボードから入力すると、入力結果が図１００Ｃの［ePOS Device API Keyboard Object］に表示される。入力と結果の例を図１００Ｂに示す。
【０１５９】
Printer Sample の詳細を説明する。
このサンプルプログラムにより、プリンターを動作させたり、プリンターのサンプルコードを生成したりすることができる。
Printer Sampleは以下の手順で使用される。
１．サンプルプログラムを起動する。図９８で［Printer Sample］を選択する。
２．図１０１Ａの"Printer Sample"画面が表示される。［接続］ボタンをクリックする。接続に成功すると、［Console］に以下のメッセージが表示される。
なお、［Device Setting］の設定を変更する必要はない。ただし、IPアドレスなどを変更している場合、変更した値に合わせて［Device Setting］の設定を変更する。
３．動作させたい機能を設定し、図１０１Ｂの画面の［追加］ボタンをクリックする。
４．図１０１Ｃの画面の［printer-Print APIサンプルコード］に、手順3で追加した機能のソースが表示される。コピーして使用することができる。
５．［送信］ボタンをクリックすると、手順3で追加した機能に合わせてテスト印字される。
【０１６０】
Barcode Scanner Sampleの詳細を説明する。
このサンプルプログラムにより、バーコードスキャナーからの入力を取得することができる。
Barcode Scanner Sampleは以下の手順で使用される。
１．サンプルプログラムを起動する。図９８で［Barcode Scanner Sample］を選択する。
２．図１０２Ａの"Barcode Scanner Sample"画面が表示される。［接続］ボタンをクリックする。接続に成功すると、［Console］に以下のメッセージが表示される。
なお、［Device Setting］の設定を変更する必要はない。ただし、IPアドレスなどを変更している場合、変更した値に合わせて［Device Setting］の設定を変更する。
３．バーコードスキャナーにバーコードを読み込ませると、読み込まれた情報が図１０２Ｂの画面の［ePOS Device API Scanner Object］に表示される。
【０１６１】
POS Terminal Sampleの詳細を説明する。
このサンプルプログラムにより、POSシステムのような動作をさせることができる。
POS Terminal Sampleは以下の手順で使用される。
まず、準備が行われる。この準備では、サンプルプログラムを起動し、各デバイスを設定する。
１．サンプルプログラムを起動する。図９８の［POS Terminal Sample］を選択する。
２．図１０３Ａの"POS Terminal Sample"画面が表示される。［設定］ボタンをクリックする。
３．図１０３Ｂの"設定"画面が表示される。この設定画面でIPアドレス/ポート/デバイスIDを設定できる。設定を変更した場合、［接続］ボタンをクリックしステータスが［OK］になるか確認する。確認後、画面を閉じる。なお、通常、設定を変更する必要はない。
【０１６２】
次に、操作について説明する。
商品の読み込みから、レシート発行までの手順は下記のとおりである。
１．バーコードスキャナーまたは、POSキーボードから商品を入力する。
商品入力後、図１０４Ａの画面で［小計］ボタンをクリックする。
・［商品取消］ボタンをクリックすると、選択中の商品が削除される。また、［商品全取消］ボタンを押すと全ての商品を削除する。
・数量を変更する場合、商品入力後に［数量］ボタンをクリックし、数字を入力する。数量を確定する時は［現計］ボタンをクリックする。
２．図１０４Ｂの画面で預かり金額を入力する。金額入力後、［現計］ボタンをクリックする。
３．図１０４Ｃの画面に示すように釣り銭が表示され、プリンターからレシートが印刷される。
【０１６３】
以上説明したように、本発明を適用した実施形態のデバイス制御システム１００は、ウェブアプリケーション３２を提供するアプリケーションサーバー２と、ネットワークを介してアプリケーションサーバー２に接続され、ウェブアプリケーション３２を表示するウェブブラウザー３１を備えた端末３と、デバイスが接続されるコネクターパネル６０を有し、コネクターパネル６０に接続されたデバイスを制御するプリンター５と、を備える。端末３は、ウェブアプリケーション３２によってデバイスを制御するデバイスＡＰＩ３３がデバイスに対応して有するオブジェクトを呼び出し、プリンター５にリクエストを送信し、プリンター５は、デバイスを制御するデバイス制御スクリプト５０２を実行し、デバイスＡＰＩ３３を介して送信されたリクエストを受信してコネクターパネル６０に接続されたデバイスを制御する。
ここで、デバイス制御システム１００に限らず、デバイス制御システム２００、３００においても同様の構成とすることができる。デバイス制御システム３００では、プリンター５がアプリケーションサーバー２（図１）の機能を具備する。
【０１６４】
デバイス制御システム１００において、デバイス制御スクリプト５０２は、デバイスとデータを送受信するDeviceConnectionオブジェクトと、デバイス制御ＡＰＩにデータを送信するClientConnectionオブジェクトとを有する。
【０１６５】
デバイス制御システム１００において、端末３は、プリンター５に接続されたデバイスを指定して、デバイスの制御開始を指示するリクエストをプリンター５に送信し、プリンター５はリクエストで指定されたデバイスに対し、デバイス制御スクリプト５０２によりコマンドを送信し、デバイスを制御可能な状態に移行する。
【０１６６】
デバイス制御システム１００において、第１の端末３及び第２の端末３を備える場合に、第１の端末３がプリンター５に接続されたデバイスを指定して、デバイスの制御開始を指示するリクエストをプリンター５に送信し、プリンター５がリクエストで指定されたデバイスを制御可能な状態に移行した場合に、デバイスは第２の端末３が送信するリクエストにより制御できない排他ロック状態となる。
この場合、第２の端末３が、デバイスＡＰＩ３３が有するデバイスに対応するオブジェクトを呼び出してリクエストを送信した場合に、プリンター５は第２の端末３に対しデバイスの使用中を通知する。
また、デバイス制御システム１００において、プリンター５に接続されたデバイスがローカルプリンターまたはネットワークプリンター７であり、プリンター５がリクエストで指定されたデバイスを制御可能な状態に移行した場合に、ローカルプリンターまたはネットワークプリンター７は第２の端末３が送信するリクエストに従ってデバイス制御スクリプト５０２により制御可能である。
【０１６７】
デバイス制御システム１００において、端末３は、プリンター５に接続されたデバイスを指定して、デバイスの制御終了を指示するリクエストをプリンター５に送信し、プリンター５はリクエストで指定されたデバイスに対し、デバイス制御スクリプト５０２によりコマンドを送信し、デバイスを制御可能な状態を終了する。
【０１６８】
デバイス制御システム１００において、端末３は、プリンター５に接続されたデバイスを指定して、デバイスの制御終了を指示するリクエストをプリンター５に送信し、プリンター５はリクエストで指定されたデバイスに対し、デバイス制御スクリプト５０２によりコマンドを送信し、デバイスを制御可能な状態を終了し、デバイスはプリンター５が第２の端末３が送信するリクエストにより制御可能となる。
【０１６９】
デバイス制御システム１００において、端末３は、デバイスＡＰＩ３３により、デバイスＡＰＩ３３が有するオブジェクトとプリンター５のデバイス制御スクリプト５０２との接続状態を検出する。
【０１７０】
デバイス制御システム１００において、端末３は、ウェブアプリケーション３２によってデバイスＡＰＩ３３が有するオブジェクトを制御し、デバイス制御スクリプト５０２のイベントを呼び出す。
【０１７１】
デバイス制御システム１００において、プリンター５にはデバイスとしてカスタマーディスプレイが接続され、端末３はカスタマーディスプレイの表示に係るリクエストを送信し、プリンター５はリクエストに従って、デバイス制御スクリプト５０２によりカスタマーディスプレイの表示を制御する。
【０１７２】
デバイス制御システム１００において、プリンター５にはデバイスとしてカスタマーディスプレイが接続され、端末３はカスタマーディスプレイの表示に係るリクエストを送信し、プリンター５はリクエストに従って、デバイス制御スクリプト５０２によりカスタマーディスプレイに時刻を表示させ、時刻の表示中に第２のリクエストが送信された場合に時刻の表示を停止させる。
【０１７３】
デバイス制御システム１００において、プリンター５に接続されたデバイスがプリンターであり、端末３は、デバイス制御ＡＰＩのオブジェクトにより、プリンターにイメージデータを登録させるリクエストを送信し、プリンター５はリクエストで指定されたプリンターにイメージデータを登録させ、プリンターは登録したイメージデータを印刷する。
【０１７４】
デバイス制御システム１００において、端末３が送信するリクエストに従って、HTML5Canvasで描画されるカラーのイメージデータがラスターイメージデータに変換され、プリンターに登録される。
【０１７５】
デバイス制御システム１００において、端末３は、デバイス制御ＡＰＩのオブジェクトにより、デバイスを指定して、デバイスと端末３との間で送受信されるデータの暗号化の要否の設定を指示するリクエストを送信する。
【０１７６】
端末３は、ウェブアプリケーション３２を提供するアプリケーションサーバー２、及び、デバイスが接続されるコネクターパネル６０を有し、コネクターパネル６０に接続されたデバイスを制御するプリンター５に、ネットワークを介して接続され、ウェブアプリケーション３２を表示するウェブブラウザー３１を備え、ウェブアプリケーション３２によってデバイスを制御するデバイスＡＰＩ３３がデバイスに対応して有するオブジェクトを呼び出し、プリンター５にリクエストを送信し、プリンター５にデバイスを制御するデバイス制御スクリプト５０２を実行させる。
【０１７７】
なお、上述した実施の形態は、あくまでも本発明の一態様を示すものであり、本発明の範囲内で任意に変形および応用が可能である。
【産業上の利用可能性】
【０１７８】
以上説明したように、本発明は、デバイスを制御するデバイス制御システムに有用であり、ＰＯＳシステムに用いられるデバイスの制御や印刷装置に適用可能である。
【符号の説明】
【０１７９】
２…アプリケーションサーバー、３…端末、５…プリンター、７…ネットワークプリンター、８…カスタマーディスプレイ、９…バーコードスキャナー、１１…無線ＬＡＮアクセスポイント、１２…ディスプレイ、１３…キャッシュドロワー、１４…キーボード、１５…ＵＳＢ延長ケーブル、１７…無線ＬＡＮユニット、１８…キー入力デバイス、１９…シリアル通信デバイス、２０…デバイス、３１…ウェブブラウザー、３２…ウェブアプリケーション、３３…デバイスＡＰＩ、５１…ロール紙カバー、５２…カバーオープンボタン、５３…マニュアルカッター、５４…カッターカバー、５５…ローカルプリンター、５６Ａ…リセットボタン、５６Ｂ…電源スイッチ、５７…ＬＥＤ表示部、５８…コントロールパネル、５９…コネクターカバー、６０…コネクターパネル、６１…ドロワーキックコネクター、６２…イーサネットコネクター、６３…ＵＳＢコネクター、６４…ＶＧＡコネクター、６５…ＣＯＭコネクター、１００…デバイス制御システム、２００…デバイス制御システム、３００…デバイス制御システム、３０１…デバイス一覧、５０１…デバイスサービスインターフェース、５０２…デバイス制御スクリプト、５０３…デバイスコネクション、５０４…クライアントコネクション。
【図１】
2014106882.tif 000003
【図２】
2014106882.tif 000004
【図３】
2014106882.tif 000005
【図４】
2014106882.tif 000006
【図５】
2014106882.tif 000007
【図６】
2014106882.tif 000008
【図７】
2014106882.tif 000009
【図８】
2014106882.tif 000010
【図９】
2014106882.tif 000011
【図１０】
2014106882.tif 000012
【図１１】
2014106882.tif 000013
【図１２】
2014106882.tif 000014
【図１３】
2014106882.tif 000015
【図１４】
2014106882.tif 000016
【図１５】
2014106882.tif 000017
【図１６】
2014106882.tif 000018
【図１７】
2014106882.tif 000019
【図１８】
2014106882.tif 000020
【図１９】
2014106882.tif 000021
【図２０】
2014106882.tif 000022
【図２１】
2014106882.tif 000023
【図２２】
2014106882.tif 000024
【図２３】
2014106882.tif 000025
【図２４】
2014106882.tif 000026
【図２５】
2014106882.tif 000027
【図２６Ａ】
2014106882.tif 000028
【図２６Ｂ】
2014106882.tif 000029
【図２６Ｃ】
2014106882.tif 000030
【図２７】
2014106882.tif 000031
【図２８】
2014106882.tif 000032
【図２９】
2014106882.tif 000033
【図３０】
2014106882.tif 000034
【図３１】
2014106882.tif 000035
【図３２】
2014106882.tif 000036
【図３３】
2014106882.tif 000037
【図３４】
2014106882.tif 000038
【図３５】
2014106882.tif 000039
【図３６】
2014106882.tif 000040
【図３７】
2014106882.tif 000041
【図３８】
2014106882.tif 000042
【図３９】
2014106882.tif 000043
【図４０】
2014106882.tif 000044
【図４１】
2014106882.tif 000045
【図４２Ａ】
2014106882.tif 000046
【図４２Ｂ】
2014106882.tif 000047
【図４２Ｃ】
2014106882.tif 000048
【図４３】
2014106882.tif 000049
【図４４】
2014106882.tif 000050
【図４５Ａ】
2014106882.tif 000051
【図４５Ｂ】
2014106882.tif 000052
【図４５Ｃ】
2014106882.tif 000053
【図４６Ａ】
2014106882.tif 000054
【図４６Ｂ】
2014106882.tif 000055
【図４７Ａ】
2014106882.tif 000056
【図４７Ｂ】
2014106882.tif 000057
【図４７Ｃ】
2014106882.tif 000058
【図４８Ａ】
2014106882.tif 000059
【図４８Ｂ】
2014106882.tif 000060
【図４８Ｃ】
2014106882.tif 000061
【図４９Ａ】
2014106882.tif 000062
【図４９Ｂ】
2014106882.tif 000063
【図４９Ｃ】
2014106882.tif 000064
【図５０Ａ】
2014106882.tif 000065
【図５０Ｂ】
2014106882.tif 000066
【図５０Ｃ】
2014106882.tif 000067
【図５１Ａ】
2014106882.tif 000068
【図５１Ｂ】
2014106882.tif 000069
【図５１Ｃ】
2014106882.tif 000070
【図５２Ａ】
2014106882.tif 000071
【図５２Ｂ】
2014106882.tif 000072
【図５２Ｃ】
2014106882.tif 000073
【図５２Ｄ】
2014106882.tif 000074
【図５３Ａ】
2014106882.tif 000075
【図５３Ｂ】
2014106882.tif 000076
【図５３Ｃ】
2014106882.tif 000077
【図５３Ｄ】
2014106882.tif 000078
【図５４Ａ】
2014106882.tif 000079
【図５４Ｂ】
2014106882.tif 000080
【図５４Ｃ】
2014106882.tif 000081
【図５４Ｄ】
2014106882.tif 000082
【図５４Ｅ】
2014106882.tif 000083
【図５４Ｆ】
2014106882.tif 000084
【図５５Ａ】
2014106882.tif 000085
【図５５Ｂ】
2014106882.tif 000086
【図５６Ａ】
2014106882.tif 000087
【図５６Ｂ】
2014106882.tif 000088
【図５７Ａ】
2014106882.tif 000089
【図５７Ｂ】
2014106882.tif 000090
【図５８Ａ】
2014106882.tif 000091
【図５８Ｂ】
2014106882.tif 000092
【図５８Ｃ】
2014106882.tif 000093
【図５８Ｄ】
2014106882.tif 000094
【図５９Ａ】
2014106882.tif 000095
【図５９Ｂ】
2014106882.tif 000096
【図６０Ａ】
2014106882.tif 000097
【図６０Ｂ】
2014106882.tif 000098
【図６０Ｃ】
2014106882.tif 000099
【図６０Ｄ】
2014106882.tif 000100
【図６０Ｅ】
2014106882.tif 000101
【図６０Ｆ】
2014106882.tif 000102
【図６０Ｇ】
2014106882.tif 000103
【図６０Ｈ】
2014106882.tif 000104
【図６０Ｉ】
2014106882.tif 000105
【図６１Ａ】
2014106882.tif 000106
【図６１Ｂ】
2014106882.tif 000107
【図６１Ｃ】
2014106882.tif 000108
【図６１Ｄ】
2014106882.tif 000109
【図６１Ｅ】
2014106882.tif 000110
【図６１Ｆ】
2014106882.tif 000111
【図６１Ｇ】
2014106882.tif 000112
【図６２Ａ】
2014106882.tif 000113
【図６２Ｂ】
2014106882.tif 000114
【図６２Ｃ】
2014106882.tif 000115
【図６３Ａ】
2014106882.tif 000116
【図６３Ｂ】
2014106882.tif 000117
【図６３Ｃ】
2014106882.tif 000118
【図６４Ａ】
2014106882.tif 000119
【図６４Ｂ】
2014106882.tif 000120
【図６４Ｃ】
2014106882.tif 000121
【図６５】
2014106882.tif 000122
【図６６】
2014106882.tif 000123
【図６７Ａ】
2014106882.tif 000124
【図６７Ｂ】
2014106882.tif 000125
【図６８Ａ】
2014106882.tif 000126
【図６８Ｂ】
2014106882.tif 000127
【図６８Ｃ】
2014106882.tif 000128
【図６９Ａ】
2014106882.tif 000129
【図６９Ｂ】
2014106882.tif 000130
【図７０Ａ】
2014106882.tif 000131
【図７０Ｂ】
2014106882.tif 000132
【図７０Ｃ】
2014106882.tif 000133
【図７１Ａ】
2014106882.tif 000134
【図７１Ｂ】
2014106882.tif 000135
【図７１Ｃ】
2014106882.tif 000136
【図７２Ａ】
2014106882.tif 000137
【図７２Ｂ】
2014106882.tif 000138
【図７２Ｃ】
2014106882.tif 000139
【図７３Ａ】
2014106882.tif 000140
【図７３Ｂ】
2014106882.tif 000141
【図７３Ｃ】
2014106882.tif 000142
【図７３Ｄ】
2014106882.tif 000143
【図７４Ａ】
2014106882.tif 000144
【図７４Ｂ】
2014106882.tif 000145
【図７４Ｃ】
2014106882.tif 000146
【図７４Ｄ】
2014106882.tif 000147
【図７５Ａ】
2014106882.tif 000148
【図７５Ｂ】
2014106882.tif 000149
【図７６Ａ】
2014106882.tif 000150
【図７６Ｂ】
2014106882.tif 000151
【図７６Ｃ】
2014106882.tif 000152
【図７７】
2014106882.tif 000153
【図７８Ａ】
2014106882.tif 000154
【図７８Ｂ】
2014106882.tif 000155
【図７８Ｃ】
2014106882.tif 000156
【図７８Ｄ】
2014106882.tif 000157
【図７９】
2014106882.tif 000158
【図８０】
2014106882.tif 000159
【図８１】
2014106882.tif 000160
【図８２】
2014106882.tif 000161
【図８３】
2014106882.tif 000162
【図８４】
2014106882.tif 000163
【図８５】
2014106882.tif 000164
【図８６】
2014106882.tif 000165
【図８７】
2014106882.tif 000166
【図８８】
2014106882.tif 000167
【図８９】
2014106882.tif 000168
【図９０】
2014106882.tif 000169
【図９１】
2014106882.tif 000170
【図９２】
2014106882.tif 000171
【図９３】
2014106882.tif 000172
【図９４】
2014106882.tif 000173
【図９５】
2014106882.tif 000174
【図９６】
2014106882.tif 000175
【図９７】
2014106882.tif 000176
【図９８】
2014106882.tif 000177
【図９９Ａ】
2014106882.tif 000178
【図９９Ｂ】
2014106882.tif 000179
【図９９Ｃ】
2014106882.tif 000180
【図１００Ａ】
2014106882.tif 000181
【図１００Ｂ】
2014106882.tif 000182
【図１００Ｃ】
2014106882.tif 000183
【図１０１Ａ】
2014106882.tif 000184
【図１０１Ｂ】
2014106882.tif 000185
【図１０１Ｃ】
2014106882.tif 000186
【図１０２Ａ】
2014106882.tif 000187
【図１０２Ｂ】
2014106882.tif 000188
【図１０３Ａ】
2014106882.tif 000189
【図１０３Ｂ】
2014106882.tif 000190
【図１０４Ａ】
2014106882.tif 000191
【図１０４Ｂ】
2014106882.tif 000192
【図１０４Ｃ】
2014106882.tif 000193
【国際調査報告】
2014106882.tif 000194
2014106882.tif 000195
2014106882.tif 000196
2014106882.tif 000197