Comments
Description
Transcript
WS-POS - Fujitsu
WS-POS 環境セットアップ・ アプリケーション開発ガイド 富士通アイソテック株式会社 Revision 1.0.0.0 WS-POS 環境セットアップ・アプリケーション開発ガイド 目次 1. 概要 ............................................................ 3 1.1 1.2 1.3 環境構築に必要なソフトウェア .................................................................................................. 3 機器構成について .................................................................................................................. 4 商標について ........................................................................................................................ 4 2. 環境セットアップと設定について ..................................... 5 2.1 インストール .......................................................................................................................... 5 2.1.1 . N E T Fr a m ewo r k .......................................................................................................... 5 2.1.2 OPO S ドラ イバ .............................................................................................................. 6 2.1.3 C o mmo n C o n t ro l Ob ject ( 共 通 C O) .............................................................................. 8 2.1.4 POS f o r . N ET ............................................................................................................... 9 2.1.5 WS -P OS 環 境 ............................................................................................................. 1 2 2.1.6 そ の 他 の 設 定 ............................................................................................................. 1 3 2.2 インストール確認 ................................................................................................................. 1 4 2.3 実デバイスを用いた実行のための設定(POS プリンタ) ................................................................. 1 5 2.4 実デバイスでの実行(コンシューマとプロバイダが同一 PC) ........................................................... 1 7 2.5 実デバイスでの実行(コンシューマとプロバイダが別 PC) .............................................................. 1 7 2.6 WS-POS サービスプロバイダを Windows Service で実行 .............................................................. 1 9 2.7 サービスプロバイダの各種設定............................................................................................... 2 0 2.7.1 B eh a vi o r 名 、 デ バ イス名 の 変 更 ................................................................................... 2 0 2.7.2 サ ー ビスプ ロバ イダ UR L の 変 更 .................................................................................. 2 0 2.7.3 end p o i n t の 変 更 ......................................................................................................... 2 1 2.7.4 セッ ショ ンタイムアウト の 確 認 間 隔 の 変 更 ...................................................................... 2 2 2.7.5 通 信 ポ ー トの 最 大 同 時 接 続 数 の 変 更 ............................................................................ 2 2 2.7.6 使 用 す る . N E T Fr a mewo r k バ ー ジョ ンの 変 更 ................................................................ 2 2 2.8 サービスコンシューマの各種設定 ............................................................................................ 2 3 2.8.1 end p o i n t の 変 更 ......................................................................................................... 2 3 2.8.2 サ ー ビスコンシュ ー マ UR L の 変 更 ................................................................................ 2 4 3. WS-POS アプリケーションの作成..................................... 25 3. 1 開 発 環 境 .......................................................................................................................... 2 5 3. 2 開 発 言 語 .......................................................................................................................... 2 5 3. 3 作 成 手 順 .......................................................................................................................... 2 5 3.3.1 新 規 プ ロジェク トの 作 成 ............................................................................................... 2 5 3.3.2 WS POS C o n t r a ct の 追 加 .............................................................................................. 2 5 3.3.3 S ys t em. S er vi ceMo d el の 追 加 ...................................................................................... 2 5 3.3.4 アプ リ ケ ー ショ ン構 成 フ ァイル の 追 加 ............................................................................. 2 6 3.3.5 アプ リ ケ ー ショ ン構 成 フ ァイル の 編 集 ............................................................................. 2 7 3.3.6 アプ リ ケ ー ショ ンソ ー スの 編 集 ...................................................................................... 2 8 3.3.7 例 外 処 理 .................................................................................................................... 3 0 3.3.8 イベント処 理 - S el f Ho s t 方 式 ......................................................................................... 3 1 3.3.9 イベント処 理 - L on g Po l l i n g 方 式 ................................................................................... 3 5 3 . 3 . 10 Keep A l i v e 処 理 .......................................................................................................... 3 9 3. 4 O POS の メ ソッ ド ・ プ ロ パ テ ィにつ いて .................................................................................. 4 1 3. 5 W S- PO S で使 用 でき ないメ ソ ッ ド ・プ ロ パ テ ィ ....................................................................... 4 1 Copyright (C) Fujitsu Isotec Limited. 2014 1 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 4. 注意事項 ........................................................ 42 5. 改訂履歴 ........................................................ 43 Copyright (C) Fujitsu Isotec Limited. 2014 2 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 1. 概要 本ドキュメントは、FIT 製 OPOS ドライバを利用した WS-POS 環境のセットアップ方法とアプリケーションの開発方法に ついて記述します。 本ドキュメントでは、下記の表 1-1 の環境を例として解説しています。環境が異なる場合には、適宜読み替えてくださ い。 また、ダウンロード URL は 2014 年 6 月時点のものです。 WS-POS(Web Services for Point of Service)は、Web ベースの POS システムでデバイス制御を行うものです。 WS-POS の仕様については、下記 URL を参照してください。 https://nrf.com/resources/retail-technology-standards/unifiedpos 1.1 環境構築に必要なソフトウェア WS-POS 構築については以下のソフトウェアが必要となります。 表 1-1 環境構築に必要なソフトウェア 種類 説明 WS-POS 参照実装 WS-POS サービスの参照実装です。 以下からダウンロードします。 https://nrf.com/resources/retail-library/ws-pos-version-12-reference-implementation-c Microsoft Point of Service for .NET v1.12 (POS for .NET 1.12) Common Control Object 1.12 FP-1100 OPOS ドライバ .NET Framework 日本語のドキュメント等は下記 URL を参照してください。 http://www.microsoft.com/ja-jp/business/industry/retail/wspos/default.aspx WS-POS が利用します。 以下からダウンロードします。 http://www.microsoft.com/en-us/download/details.aspx?id=5355 上記モジュールが参照する CO です。 以下からダウンロードします。 http://monroecs.com/oposccos_current.htm FP-1100 OPOS ドライバ一式 以下からダウンロードします。 http://jp.fujitsu.com/group/fit/services/printers/downloads/driver/fp1100/#FP-1100OPOS WS-POS の動作には、Microsoft .NET Framework 3.5 以降が必要になります。 Microsoft のサイトからダウンロードしてください。 ・Microsoft .NET Framework 3.5 http://www.microsoft.com/ja-jp/download/details.aspx?id=21 ・Microsoft .NET Framework 3.5 Service Pack 1 http://www.microsoft.com/ja-jp/download/details.aspx?id=25150 ・Microsoft .NET Framework 4.0 http://www.microsoft.com/ja-jp/download/details.aspx?id=17718 ・Microsoft .NET Framework 4.5 http://www.microsoft.com/ja-jp/download/details.aspx?id=30653 Copyright (C) Fujitsu Isotec Limited. 2014 3 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 1.2 機器構成について クライアント PC とサーバーPC の機能配置について、以下に示します。 クライアント PC とサーバーPC は LAN/WAN で通信できる状態としてください。 ク ラ イア ン ト PC サーバー PC ( W S- POS サー ビス コンシ ュ ーマ ) ( W S - POS サー ビス プ ロ バ イ ダ ) W S- P O S 参 照 実 装 W S- P O S ア プ リ ケ ー シ ョ ン ( W S- P O S 参 照 実 装 サ ン プ ル ) Mi c r o s of t P oi n t o f S e r vi c e C om m o n C o n t r ol O b j e c t F P - 11 0 0 O P O S ド ラ イ バ LA N / WA N 図1-1 構成図 1.3 商標について 記載されている会社名、製品名は各社の登録商標または商標です。 Copyright (C) Fujitsu Isotec Limited. 2014 4 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 2. 環境セットアップと設定について 本章では、WS-POS 環境セットアップについて説明します。 ※セットアップは管理者権限で行ってください。 2.1 インストール 以下の手順で、WS-POS 環境に必要なソフトウェアをインストールします。WS-POS サービスプロバイダを構築する PC(サーバー側)にインストールします。 2.1.1 .NET Framework WS-POSの動作に .NET Framework 3.5以降が必要になります。 Windows7 以降の OS では、有効化(下記参照)することでインストールされ使用可能になります。 手順 内容 詳細 1 .NET Framework 3.5 以降 .NET Framework 3.5以降がインストールされていない場合、 のダウンロード 以下のURLからダウンロードしてインストールしてください。 ・Microsoft .NET Framework 3.5 http://www.microsoft.com/ja-jp/download/details.aspx?id=21 ・Microsoft .NET Framework 3.5 Service Pack 1 http://www.microsoft.com/ja-jp/download/details.aspx?id=25150 ・Microsoft .NET Framework 4.0 http://www.microsoft.com/ja-jp/download/details.aspx?id=17718 ・Microsoft .NET Framework 4.5 http://www.microsoft.com/ja-jp/download/details.aspx?id=30653 2 .NET Framework の有効化 コントロールパネル > プログラムと機能 > Windows の機能の有効かまたは 無効化 を選択して以下の項目にチェックを入れます。 ・Windows Communication Foundation HTTP アクティブ ・Windows Communication Foundation 非 HTTP アクティブ ・HTTP アクティブ化 Copyright (C) Fujitsu Isotec Limited. 2014 5 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 2.1.2 OPOS ドライバ ここでは 、 FP- 1 1 0 0 O POS ド ラ イ バ を 例 に説 明 しま す 。 手順 1 内容 OPOS ドライバ のインストール 詳細 <32bit OSの場合> 1. 以下のURLからダウンロードします。 http://jp.fujitsu.com/group/fit/services/printers/downloads/driver/fp1100/#FP-1100OPOS 2. ダウンロードした実行ファイルをダブルクリックして解凍します。 3. 解凍して作成されたフォルダ内(1つ下の階層のフォルダの場合があります)のSetup.exeを起動し ます。 4. 以下の画面が表示されます。画面の指示に従いインストールを行ってください。 <64bit OSの場合> 1. 以下のURLからダウンロードします。 http://jp.fujitsu.com/group/fit/services/printers/downloads/driver/fp1100/#FP-1100OPOS 2. ダウンロードした実行ファイルをダブルクリックして解凍します。 3. 管理者権限でコマンドプロンプトを起動し、解凍して作成されたフォルダ内のSetup.exeがあるフォ ルダに移動します。 4. 5. Setup.exeに起動オプション”/32bit”を付けて実行します。 コマンドプロンプトから下記を実行してください。 > Setup.exe /32bit 以下の画面が表示されます。画面の指示に従いインストールを行ってください。 Copyright (C) Fujitsu Isotec Limited. 2014 6 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 手順 2 内容 OPOS ドライバ とプリンタのセッ トアップ 詳細 1. 使用するプリンタをPCに接続し、電源を入れます。 2. OPOSのセットアップを行います。Windows8以降の場合は、アプリ一覧画面から、その他のOSの 場合は、スタートメニューから「FP Printer OPOS Setup」を起動します。 3. インターフェースを選択し、[OK]をクリックします。 ① ② ※ LAN I/Fを選択した場合 LAN接続されたプリンタを選択する画面が表示されます。 [Printer Detection]をクリックし、検索されたプリンタを選択後、[Printer Setting]をクリックします。 ③ ① 4. ② プリンタの設定を任意に変更し、[OK]をクリックします。 この画面で表示されている”Device Name”は、2.3、2.4章で使用する”デバイス名”です。 Copyright (C) Fujitsu Isotec Limited. 2014 7 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 2.1.3 Common Control Object (共通 CO) Common Control Object(共通 CO)をインストールします。 手順 1 内容 Common Control Object のインストール 詳細 1. 以下のURLから「1.12.001 CCO Runtime (Wize Install)」をダウンロードします。 http://monroecs.com/oposccos_current.htm 2. ダウンロードした OposCCOs-1_12_001.exe をダブルクリックします。 以下の画面が表示されます。画面の指示に従いインストールを行ってくださ い。 ※共通COはFP-1100 OPOSより後にインストールしてください。 共通COのインストール後にFP-1100 OPOSドライバをインストールすると、POS for .NET からデバイスが使用できなくなります。これはレジストリのOPOSデバイスのCO設定が、 共通COからFP-1100 OPOSのCOに上書きされるためです。 この場合は、共通CO をアンインストール&再インストールするか、RegSvr32.exe を使用 して、共通CO の各OCX を再度レジストリに登録し直しすると使用できるようになります。 Copyright (C) Fujitsu Isotec Limited. 2014 8 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 2.1.4 POS for .NET POS for .NET 1.12をインストールします。 ※インストールの際は、POS for .NET SDKも選択してください。 手順 1 内容 POS for .NET 1.12 のダウ ンロードと解凍 詳細 1. 以下の URL からダウンロードします。 http://www.microsoft.com/en-us/download/details.aspx?id=5355 2. ダウンロードした POS for .NET v1.12.exe をダブルクリックします。 以下の画面が表示されますので、[はい]をクリックします。 3. 以下の画面が表示されます。”Unzip to folder”に、任意の解凍先フォルダを指 定して、[Unzip]をクリックします。 ② ① 4. 解凍が完了すると、以下の画面が表示されます。[OK]をクリックします。 5. [Close]をクリックします。 Copyright (C) Fujitsu Isotec Limited. 2014 9 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 手順 2 内容 POS for .NET 1.12 の インストール 詳細 1. 解凍先フォルダ内の Setup.exe を起動します。 2. 以下の画面が表示されます。[Install]をクリックします。 3. 次の画面で[Next]をクリックし、更に次の画面で[Accept]をクリックします。 4. 以下の画面が表示されます。”Custom”を選択し、[Next]をクリックします。 ② ① 5. 以下の画面が表示されます。”SDK”にもチェックを入れ、[Next]をクリックしま す。 ① ② Copyright (C) Fujitsu Isotec Limited. 2014 10 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 手順 2 つづき 内容 POS for .NET 1.12 の インストール 詳細 6. 以下の画面が表示されます。[Install]をクリックします。 インストールが開始されます。 7. Copyright (C) Fujitsu Isotec Limited. 2014 インストールが完了すると、以下の画面が表示されます。[Finish]をクリックしま す。 11 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 2.1.5 WS-POS 環境 W S- PO S 参 照 実 装 を ダ ウン ロ ー ド し、 配 置 しま す 。 手順 1 2 内容 WS-POS 参照実装の ダウンロードと配置 WS-POS サービスプロバイダを Windows サービスとし てインストール 詳細 1. 以下からダウンロードします。 https://nrf.com/resources/retail-library/ws-pos-version-12-reference-implementation-c 2. ダウンロードした ARTS WS-POS 1.2 Reference Implementation_0.zip を解凍しま す。 3. 1. 解凍したフォルダから、WS-POS 参照実装のフォルダ(WSPOS_Refer_Impl_v3)を、 任意のフォルダにコピーします。(以降コピーしたフォルダを[WS-POS フォルダ]と 記述します。) コマンドプロンプトを管理者権限で起動します。 2. 以下のコマンドを入力し、WS-POS 参照実装のフォルダに移動します。 > cd [WS-POS フォルダ]\WSPOS_Refer_Impl_v3\Provider\_dist\Release 3. C:\Windows\Microsoft.NET\Framework\v2.0.50727 配下にある InstallUtil を利用 して WS-POS サービスプロバイダを Windows サービスとしてインストールします。 以下のコマンドを入力します。 > C:\Windows\Microsoft.NET\Framework\v2.0.50727\ InstallUtil WcfServiceHostWindowsService35.exe [ENTER] 4. コントロールパネルからサービスを表示し、”WS-POS Service Provider Hosting Container”のサービス名が表示されていることを確認します。 サービスは停止している状態にしておいてください。 次手順で、コンソールアプリケーションによるサービスプロバイダ起動確認を行い ますので、サービスが動作しているとコンソールアプリケーションと衝突してしまう ためです。 Copyright (C) Fujitsu Isotec Limited. 2014 12 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 2.1.6 手順 1 その他 の設 定 内容 ファイアウォールの設定 詳細 参照実装のデフォルトでは、WS-POS サービスプロバイダは8087 ポートにて WS-POS サービスコンシューマからのリクエストを待ちます。 このため、サービスプロバイダがポートを開いて待ち受け可能なように、オペレーテ ィングシステムやセキュリティソフトウェアにて上記ポートの通信をブロックしている 場合は、設定変更が必要です。 Copyright (C) Fujitsu Isotec Limited. 2014 13 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 2.2 インストール確認 インストールが正常に行われたかどうかを確認します。下記手順をサーバーで行ってください。 手順 内容 詳細 [WS-POS フォルダ]\WSPOS_Refer_Impl_v3\Provider\_dist\ 1 コンソールアプリケーションによ Release\WcfServiceHostConsoleExe35.exe るサービスプロバイダ起動確認 を起動します。 成功するとコマンドプロンプトが表示され、待ち受け状態となります。 2 サービスコンシューマサンプルの 実行 [WS-POS フォルダ]\WSPOS_Refer_Impl_v3\Consumer\ Console_POSPrinterConsumerBiDirectionSample\bin\ Debug\ Console_POSPrinterConsumerBiDirectionSample.exe を起動します。 成功するとコマンドプロンプトが表示され、待ち受け状態となります。 Enter キーを押すと、POSPrinter シミュレータが動作します。 Enter キーを押していくと、終了します。 これらの動作が確認できれば、インストールは正常に完了しています。 これらアプリケーションは動作確認後、終了してください。 Copyright (C) Fujitsu Isotec Limited. 2014 14 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 2.3 実デバイスを用いた実行のための設定(POS プリンタ) 環境の構築が完了したら、FP-1100 向けに固有の設定を行います。 手順 1 内容 OPOS デバイス名確認 詳細 コマンドプロンプトを管理者権限で起動します。 C:\Program Files\Microsoft Point Of Service に移動(64bit OS の場合は、 C:\Program Files (x86) \Microsoft Point Of Service)し、以下のコマンドで、 対象のドライバが出力されるかを確認します。 > posdm listsos 以下のような画面が表示されます。FP-1100 用のデバイス名が表示される ことを確認します。 2 OPOS デバイス登録 以下のコマンドでデバイスを登録します > posdm addname FP-1100 /TYPE:PosPrinter /SOName:"FP1100LANPRT_192.168.2.104" この例では、”FP-1100”というエイリアスについて、 デバイス名”FP1100LANPRT_192.168.2. 104”を登録します。 3 登録デバイス確認 以下のコマンドでデバイスを登録します > posdm listnames FP-1100 が登録されていることを確認します。 Copyright (C) Fujitsu Isotec Limited. 2014 15 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 手順 4 内容 サービスコンシューマ設定ファイ ルの変更 (クライアント側) 詳細 [WS-POS フォルダ] \WSPOS_Refer_Impl_v3\Consumer\ Console_POSPrinterConsumerBiDirectionSample\bin\Debug\ Console_POSPrinterConsumerBiDirectionSample.exe.config の以下の部位を修正します。 ◆修正前 <endpoint address= "http://localhost:8087/POSPrinter.svc/POSPrinterSimulator" binding="basicHttpBinding" contract="UnifiedPOS.POSPrinter.V1_2.POSPrinter" name="POSPrinterPort"/> ↓ ◆修正後 <endpoint address= "http://localhost:8087/POSPrinter.svc/POSPrinterFP1100" binding="basicHttpBinding" contract="UnifiedPOS.POSPrinter.V1_2.POSPrinter" name="POSPrinterPort"/> 5 サービスプロバイダ設定ファイル の変更(サーバー側) [WS-POS フォルダ]\WSPOS_Refer_Impl_v3\Provider\_dist\Release\ フォル ダにて、下記ファイルの以下に示す部位を修正します。 ・WcfServiceHostConsoleExe35.exe.config ◆修正前 <behavior name="POSPrinter_Simulator"> <wsposDevice deviceName="Microsoft PosPrinter Simulator" providerSessionTimeout="180" eventPollingTimeout="-1" eventResponseTimeout="-1"/> </behavior> ↓ ◆修正後 <behavior name="POSPrinter_FP1100"> <wsposDevice deviceName="FP-1100" providerSessionTimeout="180" eventPollingTimeout="-1" eventResponseTimeout="-1"/> </behavior> ◆修正前 <endpoint address="POSPrinterSimulator" behaviorConfiguration="POSPrinter_Simulator" binding="basicHttpBinding" contract="UnifiedPOS.POSPrinter.V1_2.POSPrinter" bindingNamespace= "http://www.nrf-arts.org/UnifiedPOS/POSPrinter/"/> ↓ ◆修正後 <endpoint address="POSPrinterFP1100" behaviorConfiguration="POSPrinter_FP1100" binding="basicHttpBinding" contract="UnifiedPOS.POSPrinter.V1_2.POSPrinter" bindingNamespace= "http://www.nrf-arts.org/UnifiedPOS/POSPrinter/"/> Copyright (C) Fujitsu Isotec Limited. 2014 16 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 2.4 実デバイスでの実行(コンシューマとプロバイダが同一 PC) コンシューマとプロバイダを同一 PC で動作させ、実デバイスの動作を実行します。 プリンタを PC に接続し、「2.2. インストール確認」の手順を実施すると、プリンタから印刷が行われます。 印刷が行われない場合は、「2.3 実デバイスを用いた実行のための設定(POS プリンタ)」に間違いがないか確 認してください。 2.5 実デバイスでの実行(コンシューマとプロバイダが別 PC) コンシューマ(クライアント)とプロバイダ(サーバー)をそれぞれ別々の PC で動作させ、実デバイスの動作を実行しま す。 手順 1 内容 サービスコンシューマファイルを クライアントPCにコピー 2 サービスコンシューマ設定ファイ ルのサービスプロバイダ URL の 変更 (クライアント PC 側) 詳細 サーバーPCのフォルダ、 [WS-POS フォルダ] \WSPOS_Refer_Impl_v3\Consumer\ Console_POSPrinterConsumerBiDirectionSample\bin\Debug\ をクライアントPCにコピーします。 サービスプロバイダ URL を変更します。 クライアントPCで、 [WS-POS フォルダ] \WSPOS_Refer_Impl_v3\Consumer\ Console_POSPrinterConsumerBiDirectionSample\bin\Debug\ Console_POSPrinterConsumerBiDirectionSample.exe.config の以下の部位を修正します。 ◆修正前 <endpoint address= "http://localhost:8087/POSPrinter.svc/POSPrinterFP1100" binding="basicHttpBinding" contract="UnifiedPOS.POSPrinter.V1_2.POSPrinter" name="POSPrinterPort"/> ↓ ◆修正後 <endpoint address= "http://10.50.13x.xxx:8087/POSPrinter.svc/POSPrinterFP1100" binding="basicHttpBinding" contract="UnifiedPOS.POSPrinter.V1_2.POSPrinter" name="POSPrinterPort"/> 「10.50.13x.xxx」はサーバーPC の IP アドレスです。 Copyright (C) Fujitsu Isotec Limited. 2014 17 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 手順 3 内容 サービスコンシューマ設定ファイ ルのサービスコンシューマ URL の変更 (クライアント PC 側) 詳細 サービスプロバイダに通知するサービスコンシューマの URL を変更します。 クライアントPCで、 [WS-POS フォルダ] \WSPOS_Refer_Impl_v3\Consumer\ Console_POSPrinterConsumerBiDirectionSample\bin\Debug\ Console_POSPrinterConsumerBiDirectionSample.exe.config の以下の部位を修正します。 ◆修正前 <host> <baseAddresses> <add baseAddress="http://localhost:8001/POSPrinterEvent"/> </baseAddresses> </host> ↓ ◆修正後 <host> <baseAddresses> <add baseAddress="http://10.50.13x.yyy:8001/POSPrinterEvent"/> </baseAddresses> </host> 「10.50.13x.yyy」はクライアント PC の IP アドレスです。 4 実デバイスでの動作確認 Copyright (C) Fujitsu Isotec Limited. 2014 プリンタを PC に接続し、「2.2. インストール確認」の手順を実施してください。 18 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 2.6 WS-POS サービスプロバイダを Windows Service で実行 ここまでは、サービスプロバイダはコンソールアプリケーションを使用していましたが、「2.1 インストール」の手順 5 で 登録した Windows Service での実行手順を説明します。 手順 1 内容 詳細 サービスプロバイダ設定ファイル [WS-POS フォルダ]\WSPOS_Refer_Impl_v3\Provider\_dist\Release\ フォル の変更(サーバー側) ダの WcfServiceHostWindowsService35.exe.config を 2.2 の手順 5 および 2.3 の手順 5 と同様に変更します。 2 サービスの起動 コントロールパネルからサービスを表示します。 ”WS-POS Service Provider Hosting Container”のサービスを選択し、 “サービス起動“をクリックします。 編集した.config ファイルに間違いがなければ、サービスが正常に開始しま す。 3 サービスコンシューマの起動 Copyright (C) Fujitsu Isotec Limited. 2014 Console_POSPrinterConsumerBiDirectionSample.exe などのコンシューマを 起動します。動作はコンソールアプリケーションのサービスプロバイダと変わ りません。 19 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 2.7 サービスプロバイダの各種設定 ここでは、サービスプロバイダの設定可能な項目について説明します。 2.7.1 Behavior 名、デバ イス名の 変更 以 下 の 部 位 を 変 更 しま す 。 <behavior name="POSPrinter_Simulator"> <wsposDevice deviceName="Microsoft PosPower Simulator" providerSessionTimeout="180" eventPollingTimeout="-1" eventResponseTimeout="-1" /> </behavior> Key behaviour name wsposDevice deviceName providerSessionTimeout eventPollingTimeout eventResponseTimeout 2.7.2 説明 使用する behavior 名を記載します。 使用するデバイス名を記載します。 セッションのタイムアウト時間を秒単位で指定します。 ロングポーリングのタイムアウト時間を秒単位で指定しま す。 -1 を指定した場合はタイムアウトしません。 ロングポーリング/自己ホストのイベント処理終了待ちのタイ ムアウト時間を秒単位で指定します。 -1 を指定した場合はタイムアウトしません。 サービ スプロバ イダ URL の変更 以 下 の 部 位 を 変 更 しま す 。 < s e r vi c e n am e = "W S PO S I ni t i at i ve. PO S Pr i nt e r. PO S Pr i n te r S er vi c e " b e h avi or C onf i g ur at i on = " W S- PO S _S e r vi c e Pr ovi d er " > < h os t > < b as eA d d r es s e s > <ad d b as e A d d r e s s = " h tt p : / /l oc al h os t : 80 8 7 / PO S Pr i nt e r. s vc " / > < / b as eA d d re s s e s > < / h ost > < e n d p oi nt ad dr e s s = " POS Pr i n t er S im u l at or " b e h avi or C onf i g ur at i on = " PO S Pri n t e r_ S im u l at or" b i n d in g = " b as i c Ht t p Bi n d i n g " c on tr ac t = " U n if i e d POS . PO S Pri n t e r. V 1_ 2 . POS Pr i n t er " b i n d in g N am e s p ac e =" h t t p: / / w w w . nr f - art s . org / U n if i e d PO S / POS Pr i n t er / " / > < / s e r vi c e> Key add baseAddress 説明 サービスプロバイダ URL を下記形式で指定します。 http://[使用するプロバイダの IP アドレス:ポート番号]/POSPrinter.svc 例) http://192.168.1.120:8087/POSPrinter.svc Copyright (C) Fujitsu Isotec Limited. 2014 20 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 2.7.3 endpoint の変更 以 下 の 部 位 を 変 更 しま す 。 < s e r vi c e n am e = "W S PO S I ni t i at i ve. PO S Pr i nt e r. PO S Pr i n te r S er vi c e " b e h avi or C onf i g ur at i on = " W S- PO S _S e r vi c e Pr ovi d er " > < h os t > < b as eA d d r es s e s > < ad d b as e A dd r e s s= " h t t p: / / l oc al h ost : 8 0 8 7 / POS Pr i n t er . s vc " / > < / b as eA d d re s s e s > < / h ost > <e n d p oi n t ad d r e s s = " PO S Pr i nt e r S im u l at or" b e h avi or C on f i g u r at i on = " PO S Pr i nt e r_ S im u l at or " b i n d in g = " b as i c Ht t p Bi n d i n g " c on tr ac t = " U n if i e d POS . PO S Pri n t e r. V 1_ 2 . POS Pr i n t er " b i n d in g N am e s p ac e =" h t t p: / / w w w . nr f - art s . org / U n if i e d PO S / POS Pr i n t er / " / > < / s e r vi c e> Key endpoint address behaviorConfiguration 説明 使用する endpoint 名を記載します。 使用する behavior 名を記載します。 ※ 同 じデ バ イ ス( 例 えば PO S Pr i nt e r ) を 複 数 使 用 す る 場 合 は 、 < e n d p oi nt > の 定 義 を コピ ー し て複 数 の デ バ イ ス定 義 を 記 載 しま す 。 例) < s e r vi c e n am e = "W S PO S I ni t i at i ve. PO S Pr i nt e r. PO S Pr i n te r S er vi c e " b e h avi or C onf i g ur at i on = " W S- PO S _S e r vi c e Pr ovi d er " > < h os t > < b as eA d d r es s e s > < ad d b as e A dd r e s s= " h t t p: / / l oc al h ost : 8 0 8 7 / POS Pr i n t er . s vc " / > < / b as eA d d re s s e s > < / h ost > < e n d p oi n t ad d r e s s = " PO S Pr i n t er 1 " b e h avi or C on f i g u r at i on = " PO S Pr i n t e r _ B e h avi or 1 " b i n d i n g = " b as i c H t t p B i nd i n g " c on t r ac t = " U n i fi e d PO S . PO S Pr i nt e r . V 1 _ 2. PO S Pr i n t e r " b i n d i n g N am e s p ac e = " h t t p : / / w w w . n rf - ar t s . or g / U n if i e d PO S / PO S Pr i n t e r / " / > < e n d p oi n t ad d r e s s = " PO S Pr i n t er 2 " b e h avi or C on f i g u r at i on = " PO S Pr i n t e r _ B e h avi or 2 " b i n d i n g = " b as i c H t t p B i nd i n g " c on t r ac t = " U n i fi e d PO S . PO S Pr i nt e r . V 1 _ 2. PO S Pr i n t e r " b i n d i n g N am e s p ac e = " h t t p : / / w w w . n rf - ar t s . or g / U n if i e d PO S / PO S Pr i n t e r / " / > < / s e r vi c e> Copyright (C) Fujitsu Isotec Limited. 2014 21 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 2.7.4 セッションタイムアウ トの 確認 間隔 の変更 以 下 の 部 位 を 変 更 しま す 。 < ap pS e t t i ng s > … <ad d k e y= " PO S Pr i n t e r S e r vi c e _ Pr ovi d e r S e s s i on T i m e ou t C h e c k Pe r i od " val u e = " 1 " / > … < / ap pS e t t in g s > add key の値 PO S Pri n t e rS e r vi c e_ Pr ovi d e rS e s s i on Ti m e out C h e c k Per i od 2.7.5 Key value 説明 セッションのタイ ムア ウトを 定期的 に確認す る間隔 (秒)を指定します。 通信 ポートの 最大 同時 接続 数の 変更 以 下 の 部 位 を 変 更 しま す 。 < s yst e m. n e t > <c on n e c t i on M an ag em e n t > < ad d ad dr e s s = " * " m ax c on n e c t i on = " 4 8 " / > </ c on n e c t i on M an ag em e n t > < /s ys t e m. n e t > Key m ax c on ne c t i on 2.7.6 説明 サービスプロバイダとサービスコンシューマ間の通信で同時 に使用する最大ポート数を指定します。 スレッド毎にポートを開くため、スレッドの数を考慮した値を 指定してください。例えば、参照実装のサンプルでは、main スレッド、Polling 処理スレッド、KeepAlive 処理スレッドの3つ が必要になります。 使用 する.NET Framework バージョンの変 更 以 下 の 部 位 を 変 更 しま す 。 < st ar t u p > <s u p p or t e d R u n t i m e ve r s i on =" v2 .0 . 5 0 7 2 7 "/ > < /s t ar t u p > Key s u pp or t e dR u n ti m e ve r s i on Copyright (C) Fujitsu Isotec Limited. 2014 説明 使用する Microsoft .NET Framework のバージョンを指定しま す。 ・Microsoft .NET Framework 4.0 : "v4.0" ・Microsoft .NET Framework 3.5 : "v2.0.50727" ・Microsoft .NET Framework 3.0 : 〃 22 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 2.8 サービスコンシューマの各種設定 ここでは、サービスコンシューマの設定可能な項目について説明します。 2.8.1 endpoint の変更 以 下 の 部 位 を 変 更 しま す 。 <c l i e n t > <e n d p oi n t ad d r e s s = "h t t p: / / l oc al h os t: 8 0 8 7 / PO S Pr i n t er . s vc / PO S Pri n t e rS i m ul at or " b i n d i ng = " b as i c Ht t p B i nd i n g " c ont r ac t = " U ni fi e d PO S . POS Pr i n t er .V 1 _ 2. PO S Pr in t e r " n am e = " POS Pr i n t er Por t " / > </ c l i e n t> Key endpoint address 説明 接続するサービスプロバイダの URL と endpoint 名を下記形 式で指定します。 http://[使用するプロバイダの IP アドレス:ポート番号]/ POSPrinter.svc/[endpoint 名] 例) http://192.168.1.120:8087/POSPrinter.svc/POSPrinterFP1100 name この接続の名称を指定します。 ※ 同 じデ バ イ ス( 例 えば PO S Pr i nt e r ) を 複 数 使 用 す る 場 合 は 、 < e n d p oi nt > の 定 義 を コピ ー し て複 数 の デ バ イ ス定 義 を 記 載 しま す 。 例) <c l i e n t > < e n d p oi n t ad dr e s s = " h t t p : / / 1 9 2 . 1 6 8. 1 . 1 2 0 : 8 0 8 7 / PO S Pr i n t e r. s vc / PO S Pr i n t e r 1 " b i n d i n g = " b as i c H t t p B i n di n g " c on t r ac t = " U n i f i e d PO S . PO S Pr i n t er . V 1_ 2 . PO S Pr i n t e r " n am e = " PO S Pr i n t e r Por t 1 " / > < e n d p oi n t ad d r e ss = " h t t p : / / 1 9 2 . 1 6 8 . 1 . 1 2 0: 8 0 8 7 / PO S Pr i n t e r . s vc /PO S Pr i n t e r 2 " b i n d i n g = " b as i c H t t p B i n di n g " c on t r ac t = " U n i f i e d PO S . PO S Pr i n t er . V 1_ 2 . PO S Pr i n t e r " n am e = " PO S Pr i n t e r Por t 2 " / > </ c l i e n t> Copyright (C) Fujitsu Isotec Limited. 2014 23 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 2.8.2 サービ スコ ンシュ ーマ URL の変更 サ ー ビ スコン シ ュ ー マが サ ー ビ スプ ロ バ イ ダ か ら イ ベ ン ト を 受 信 す る た め、 サ ー ビ スプ ロ バ イ ダ へ サ ー ビ ス コン シ ュ ー マの U RL を 下 記 設 定 によ り 通 知 しま す 。 ( O p en メ ソッ ド で通 知 され ま す) 以 下 の 部 位 を 変 更 しま す 。 < h os t > < b as e Ad d r e ss e s > <ad d b as e A d d r e s s = " h tt p : / /l oc al h os t : 80 0 1 / PO S Pr i nt e r E ve nt " / > < / b as eA d d r es s e s > < / h os t > Key add baseAddress 説明 サービスコンシューマの URL を下記形式で指定します。 http://[コンシューマの IP アドレス:ポート番号]/POSPrinterEvent.svc 例) http://192.168.1.101:8001/POSPrinterEvent.svc Copyright (C) Fujitsu Isotec Limited. 2014 24 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 3. 3.1 WS-POS アプリケーションの作成 開発環境 V is u al St u d i o 2 0 1 0 ま た は 、V i s u al S t u di o 2 0 12 を 用 いて開 発 を 行 いま す。 ここでは 、 V i s u al S t ud i o 2 01 2 を 例 に説 明 しま す 。 3.2 開発言語 W S- PO S サ ー ビ スを W i nd ow s サ ー ビ スで提 供 す る 場 合 を 説 明 しま す 。 下 記 の 開 発 言 語 が 使 用 可 能 です 。 ・M i c r os of t V i su al B as ic . N E T ・M i c r os of t V i su al C # 3.3 3.3.1 作成手順 新規 プロジ ェクトの 作成 手順 1 Vis u al B as ic . NE T Vis u al C# Vis u al B as ic の W ind o ws アプ リ ケ ー シ ョ ン C# の W ind o ws ア プ リ ケ ー シ ョ ン で作 成 しま す 。 で作 成 しま す 。 ※ 既 存 の プ ロ ジ ェク ト でも 作 成 可 能 です 。 ※ コン ソ ー ル ア プ リ ケ ー ショ ン や W in d o ws フ ォー ムア プ リ ケ ー シ ョ ン でも 作 成 可 能 です 。 3.3.2 手順 1 2 3 4 3.3.3 手順 1 2 3 WSPOSContract の追加 Vis u al B as ic . NE T Vis u al C# 参 照 実 装 に含 ま れ ている 、 ”W S P OS Con t rac t . d ll を、 プ ロ ジ ェ ク トフ ォ ル ダ にコピ ー しま す 。 ソリ ュ ー シ ョ ン エク スプ ロ ー ラ か らプ ロ ジ ェ ク ト を 右 クリ ッ ク し、 [参 照 の 追 加 ] をク リッ ク しま す 。 [ 参 照 ]タブ を 選 択 し、 ”W S P OS Con t rac t . d ll”を 選 択 後 、 [O K] を ク リッ ク しま す。 ソリ ュ ー シ ョ ン エク スプ ロ ー ラ に ”W S P OS Con t rac t . d ll”が 追 加 され ている ことを 確 認 してく だ さい。 System.ServiceModel の追加 Vis u al B as ic . NE T Vis u al C# ソリ ュ ー シ ョ ン エク スプ ロ ー ラ か らプ ロ ジ ェ ク ト を 右 クリ ッ ク し、 [参 照 の 追 加 ] をク リッ ク しま す 。 [. NE T] タブ を 選 択 し、 ”S ys t em .S er vic eMod e l ” を 選 択 後、 [ OK ] をク リ ック しま す 。 ソリ ュ ー シ ョ ン エク スプ ロ ー ラ に ”S ys t em .S er vic eMod e l ” が 追 加 され ている こ とを 確 認 し てく だ さい。 Copyright (C) Fujitsu Isotec Limited. 2014 25 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 3.3.4 アプリケーション構 成ファ イル の追 加 手順 1 Vis u al B as ic . NE T ソリ ュ ー シ ョ ン エク スプ ロ ー ラ の 「 す べ ての フ ァイ ル を 表 示 」 を ク リッ ク しま す。 2 ソリ ュ ー シ ョ ン エク スプ ロ ー ラ に ”Ap p .c on fig ” が 追 加 され ている ことを 確 認 し てく だ さい。 Vis u al C# ソリ ュ ー シ ョ ン エク スプ ロ ー ラ か らプ ロ ジ ェ ク ト を 選 択 し、 メ ニュ ー バ ー の [ プ ロ ジ ェク ト ] -[ 新 しい項 目 の 追 加 ] を 選 択 しま す 。 [ Visu al C# ア イ テ ム] -[ 全 般 ]か ら 、 [ア プ リ ケ ー シ ョ ン 構 成フ ァイ ル ]を 選 択 し、 [ 追 加 ] をク リッ ク しま す。 ※ ”Ap p .c on fig ” が 追 加 され ていな い場 合 は 、 4 以 降 を 実 施 してく だ さい。 3 ”Ap p .c on fig ” を 右ク リ ック し、 [ プ ロ ジ ェク ト に 含 める ]を ク リッ ク しま す 。 ソリ ュ ー シ ョ ン エク スプ ロ ー ラ に ”Ap p .c on fig ” が 追 加 され ている ことを 確 認 し て くだ さい。 ※ 4 以 降 の 実 施 は 不 要 です 。 4 5 6 ソリ ュ ー シ ョ ン エク スプ ロ ー ラ か らプ ロ ジ ェ ク ト を 選 択 し、 メ ニュ ー バ ー の [ プ ロ ジ ェク ト ] -[ 新 し い項 目 の 追 加 ]を 選 択 しま す 。 [ 共 通 項 目 ]- [全 般 ] か ら、 [ ア プリ ケ ー シ ョ ン 構 成 フ ァイ ル ]を 選 択 し、 [ 追 加 ] をク リ ック しま す。 ソリ ュ ー シ ョ ン エク スプ ロ ー ラ に ”Ap p .c on fig ” が 追 加 され ている ことを 確 認 し てく だ さい。 Copyright (C) Fujitsu Isotec Limited. 2014 26 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 3.3.5 アプリケーション構 成ファ イル の編 集 ア プ リ ケ ー ショ ン 構 成 フ ァイ ル に下 記 の 太 字 部 分 を 記 述 しま す 。 (Vis u al B as ic . NE T, Vis u al C# 共 通 です ) <? xm l vers i on =" 1 .0 " ? > <c on fig u rat ion > <sy ste m . se r vi ceM o de l > <c l ie n t> <e n d p o i n t a d d re ss ="h ttp : / /1 92 . 16 8. 1. 21 0: 80 87 / POS Pr i n te r. svc / POS Pr i n te r 1 " b i n d i n g ="b a si c Http Bi n d i n g " c o n tr ac t="Un i fi e d P OS . POS Pr i n te r. V 1_ 2. P OS Pr i n te r " n am e =" POS Pr i n te r Po r t1 "/ > </c li e n t> <se r vic e s> </ sy stem . se r vi ceM o d e l > <sy ste m . n e t> <c o n n e c ti o nM a n a gem e n t> <a d d a d d re ss = "* " m a xc o n n ec ti o n = "48 " / > </c o n n ec ti o nM a n a gem e n t> </ sy stem . n e t> </ c on fig u rat ion > Key endpoint address binding contract name m ax c on ne c t i on Copyright (C) Fujitsu Isotec Limited. 2014 説明 使用するサービスプロバイダの URL を指定します。 サービスプロバイダで設定している binding “basicHttpBinding”を指定します。 使用するデバイスカテゴリーのコントラクトを指定します。 この接続情報を識別するための名称を指定します。 サービスプロバイダと接続する際に、接続情報を取得するた めに使用します。 サービスプロバイダとサービスコンシューマ間の通信で同時 に使用する最大ポート数を指定します。 スレッド毎にポートを開くため、スレッドの数を考慮した値を 指定してください。例えば、参照実装のサンプルでは、main スレッド、Polling 処理スレッド、KeepAlive 処理スレッドの3つ が必要になります。 27 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 3.3.6 アプリケーションソースの 編集 ア プ リ ケ ー ショ ン の ソ ー スに、 サ ー ビ スプ ロ バ イ ダ との 接 続 処 理 を 記 述 しま す 。 サ ー ビ スプ ロ バ イ ダ との セ ッ ショ ン 開 始 ~ 終 了 の 間 に、 メ ソ ッ ド ・プ ロ パ テ ィの 処 理 を 記 述 しま す 。 <Vi su a l Ba si c . NET > ◆ 記 述 フ ァイ ル [ ア プリ ケ ー シ ョ ン で指 定 した フ ァイ ル 名 ]. vb ◆ Con s um erI D を 生 成 Con s um erI D は 、 デ バ イ スを 識 別 す る た めに使 用 しま す 。 D i m co n su m e r I D A s S t r in g = G uid . N e wG ui d( ) .To St r i ng ( ) ※ 上記 例 は 、 GU ID を 生 成 して ID と し て使 用 し てい ま す 。 ◆ メ ッセ ー ジ 送 信 用 チャ ネ ル 生 成 D i m d e vi c e A s U ni f i ed P OS .P OS P r i nt e r. V 1 _ 2 . P OS P ri nt e r ' ア プ リ ケ ー シ ョ ン構 成 フ ァ イ ル で 設定 し た e n d p o i n t の c o n t r a c t と n a m e を 指 定 す る D i m f a c t o r y A s N e w C h a nn e lF a c t o r y ( Of Un if i e dP OS . P OS P r in t e r. V 1 _ 2 . P OS P r in t e r ) ( " P OS P ri n t e r P o rt 1 " ) ' チャネルを生成 d e vi c e = f a c t o r y. C r e a t e C h an n e l( ) ◆ セッ シ ョ ン の 開 始 サー ビ スプ ロ バ イ ダ との セ ッ シ ョ ン を 開 始 しま す 。 de v i c e . Op en S e s s io n ( co n su m e r I D , N o th in g) ※ Op en S e s s i on 後 、 各 メ ソッ ド の 呼 び出 し が 可 能に なり ま す 。 ◆ メ ソッ ド ・ プ ロ パ テ ィの 使 用 prin t Norm al メ ソッ ド を 使 用 す る 場 合 、 下 記 の よ う に記 述 しま す 。 d e vi c e . Op e n D e v i c e ( co n su m e r I D ) d e vi c e . C l ai m ( c on s u m e r I D, 1 0 0 0 0 ) d e vi c e . S e t D e v i c e En a bl e d ( co n s u m e rI D , t r u e ) d e vi c e . P ri n t No r m a l ( c on s u m e r I D, U ni fi e d P OS .P OS P r i nt e r. V 1 _ 2 .P r in t e r S t a t io n. R e c e i pt , " 印 刷 す る テ キ ス ト" ) ‘ エ ス ケ ー プ シ ー ケ ン スを 使 用 し B ol d 印 刷 d e vi c e . P ri n t No r m a l ( c on s u m e r I D, U ni fi e d P OS .P OS P r i nt e r. V 1 _ 2 .P r in t e r S t a t io n. R e c e i pt , " \u 0 0 1 b |b C 太 字 印 刷" ) d e vi c e . S e t D e v i c e En a bl e d ( co n s u m e rI D , F a l s e ) d e vi c e . R e l e a s e ( c on s u m e r I D ) d e vi c e . C lo s e D e v i c e ( c o n su m e r I D ) ◆ セッ シ ョ ン の 終 了 サー ビ スプ ロ バ イ ダ との セ ッ シ ョ ン を 終 了 しま す 。 de v i c e . Cl o s e S e s s io n( c o n su m e r I D ) Copyright (C) Fujitsu Isotec Limited. 2014 28 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド <Vi su a l C# > ◆ 記 述 フ ァイ ル : [ ア プリ ケ ー シ ョ ン で指 定 した フ ァイ ル 名 ]. c s ◆ Con s um erI D を 生 成 Con s um erI D は 、 デ バ イ スを 識 別 す る た めに使 用 しま す 。 p ri v a t e s t r in g c on s u m e r I D = G ui d. N e wG ui d( ) .To S t ri ng ( ) ; ※ 上記 例 は 、 GU ID を 生 成 して ID と し て使 用 し てい ま す 。 ◆ メ ッセ ー ジ 送 信 用 チャ ネ ル 生 成 p ri v a t e Un i fi e d P OS. P OS P r in t e r.V 1 _ 2 . P OS P r in t e r d e v i c e = nu ll ; // ア プ リ ケ ー シ ョ ン 構 成 フ ァ イ ルで 設 定 し た e n d p o i n t の c o n t r a c t と n a m e を 指 定 C h a n n e l F a c t o r y < U n i f i e d P OS . P O S P r i n te r . V 1 _ 2 . P OS P r i n t e r > f a c t o r y = n e w C h a n n e l F a c to r y < U n i f ie d P O S . P O S Pr i n t e r . V 1 _2 . P O S P r i n te r > ( " P O S Pr i nt e r P o r t 1 " ) ; // チ ャ ネ ル を 生 成 d e v i c e = f a c t o ry . C r e a t e C ha n n e l ( ) ; ◆ セッ シ ョ ン の 開 始 サー ビ スプ ロ バ イ ダ との セ ッ シ ョ ン を 開 始 しま す 。 de v i c e . Op en S e s s io n ( co n su m e r I D , nu ll ) ; ※ Op en S e s s i on 後 、 各 メ ソッ ド の 呼 び出 し が 可 能に なり ま す 。 ◆ メ ソッ ド ・ プ ロ パ テ ィの 使 用 prin t Norm al メ ソッ ド を 使 用 す る 場 合 、 下 記 の よ う に記 述 しま す 。 d e vi c e . Op e n D e v i c e ( co n su m e r I D ) ; d e vi c e . C l ai m ( c on s u m e r I D, 1 0 0 0 0 ) ; d e vi c e . S e t D e v i c e En a bl e d ( co n s u m e rI D , t r u e ) ; d e vi c e . P ri n t No r m a l ( c on s u m e r I D, U ni fi e d P OS .P OS P r i nt e r. V 1 _ 2 .P r in t e r S t a t io n. R e c e i pt , " 印 刷 す る テ キ ス ト" ) ; / / エ ス ケ ー プ シ ー ケ ン ス を 使用 し B ol d 印 刷 d e vi c e . P ri n t No r m a l ( c on s u m e r I D, U ni fi e d P OS .P OS P r i nt e r. V 1 _ 2 .P r in t e r S t a t io n. R e c e i pt , " \u 0 0 1 b |b C 太 字 印 刷" ) ; d e vi c e . S e t D e v i c e En a bl e d ( co n s u m e rI D , f a l s e ) ; d e vi c e . R e l e a s e ( c on s u m e r I D ) ; d e vi c e . C lo s e D e v i c e ( c o n su m e r I D ) ; ◆ セッ シ ョ ン の 終 了 サー ビ スプ ロ バ イ ダ との セ ッ シ ョ ン を 終 了 しま す 。 d e v i c e . Cl o s e S e s s io n( c o n su m e r I D ) ; Copyright (C) Fujitsu Isotec Limited. 2014 29 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 3.3.7 例外処 理 Cat c h した 例 外 から Up os E xc ep t ion 型 の 詳 細 情 報 を 取 得 す る ことで、 エ ラ ー の 原 因 を 判 断 でき ま す。 <Vi su a l Ba si c . NET > try ' デバイスオープン d e v i c e . O p e n D e v ic e ( c o n s u m er I D ) C a t c h e x A s F a ul t E x c e p t i on ( O f U n i f ie d P O S . P O S Pr i n t e r . V 1 _2 . U p o s E x c ep t io n ) ' C a t c h し た 例 外か ら U p o s Ex c e p t i on 型 の 詳 細 情 報 を 取得 D i m u e A s U ni f i ed P OS . P OS P ri n t e r. V 1 _ 2 . Up o s E x c e pt io n = e x. D e t a i l ' E r r o r Co d e を 取 得 D i m c od e A s Un i fi e d P OS. P OS P r in t e r.V 1 _ 2 . E r r o r C od e = u e. E r r o r C od e ' E r r o r Co d e E x t en d e d を 取 得 D i m e r r o r C od e E x A s I n t eg e r = u e. E r r o r C od e E x t e nd e d End Try <Vi su a l C# > try { // デ バ イ ス オ ー プ ン d e v i c e . O p e n D e v ic e ( c o n s u m er I D ) ; } c a t ch ( F au lt E x c e p t ion < U ni f i ed P OS . P OS P ri n t e r. V 1 _ 2 . Up o s E x c e p tio n > e x ) { // C a t c h し た 例 外 から U p o s E x ce p t i o n 型の 詳 細 情 報 を 取 得 U ni fi e d P OS .P OS P r i nt e r. V 1 _ 2 . Up o s E x c ep t io n u e = e x. D e t a i l ; // E r r o r C od e を 取 得 U ni fi e d P OS .P OS P r i nt e r. V 1 _ 2 .E r r o r C od e c od e = u e . E r r o r Co d e ; // E r r o r C od e E x t e nd e d を 取 得 in t e r r o r C od e E x = u e. E r r o r C od e E x t e nd e d ; } Copyright (C) Fujitsu Isotec Limited. 2014 30 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 3.3.8 イベント処理-SelfHost 方式 サ ー ビ ス コ ン シ ュ ー マ ( ア プ リ ケ ー シ ョ ン ) に 用 意 した イ ベン ト 受 信 サ ー ビ スク ラ ス に、 サ ー ビ スプ ロ バ イ ダ か ら イ ベン ト を 通 知 しても ら う 方 式 です 。 <Vi su a l Ba si c . NET > 手順 イベント処理-SelfHost 方式 Visual Basic.NET 1 Visual Studio でイベント取得用サ ソ リ ュ ー シ ョ ン エ ク ス プ ロ ー ラ か ら プ ロ ジ ェ ク ト を 右 ク リ ッ ク し 、 [追 ービスクラスを作成 加 ] -[ 新 しい項 目 ]を クリ ッ ク しま す。 2 VB のクラスを追加 フ ァ イ ル 名 ”P OS P rint erE ven t S erv ic e. vb ”で ク ラ ス を 追 加 し ま す。 3 追加したファイル”POSPrinterEventService.vb”を編集します。以下を参考にしてください。 ◆POSPrinterEventService.vb N a m e sp a c e W S PO S E ve n tS e r vi c e < S e r vi c e B e h a vi o r ( N a m e s p a c e: =" h t tp : // w w w.n rf - a rt s . o rg / U n if i e d P O S/ PO S P r in t er E ve n t s/ " , In st a n c e C on t e xt Mo d e : = In st a n c e C on t e xt Mo d e . S in g l e ) > _ p u b l i c cl a s s P OS P r in t e rE ve n t S e r vi c e ' イベ ン ト を 取得 し た い カテ ゴ リ の イベ ン ト ク ラス を 継 承す る Imp l e m en t s Un if i e d PO S .P O SP r i n t e r E ve n t s . V1 _ 2 . P OS P r in t e r E ve n t ' Er r o r E ve n t 発生 時に 呼 ば れる メ ソ ッ ド Pu b l i c Fu n c t i on E r r o r E ve n t ( C on su m e r ID As St r in g , S o u r c e As S t r in g , E ve n t ID As In t eg er, Ti m e S t a mp As D a t e, E rr o r C o d e As U n if i e d P O S. PO S P r in t e rE ve n t s. V1 _ 2 . E rr o r C o d e, E rr o r C o d e E xt en d ed As In t eg e r, E rr o r L o c u s As Un i f i ed PO S .P O S Pr i n t e r E ve n t s . V1 _ 2 . E r r o r L o cu s, E rr o r R e s p on s e As Un i f i e d P O S. PO S P r in t e rE ve n t s. V1 _ 2 . E r r o r R e s p on s e ) _ As Un i f i ed P O S. PO S P r in t er E ve n t s. V1 _ 2 . E r r o r R e s p on s e Im p l e m en ts Un i f i ed P OS . PO S P r in t e r E ve n t s. V1 _ 2 . P O S P r in t e r E ve n t. E r r or E ve n t R e tu rn U n if i e d PO S. P OS P r in t e r E ve n t s. V1 _ 2 . E r r o r R e sp on s e . Cl e a r En d Fu n c t i on ' Ou tp u t C o mp l a t e E ve n t 発 生 時に 呼 ばれ る メ ソ ッド Pu b l i c Su b Ou t p u t C o mp l et e E ve n t ( C on su m e r ID As St r in g , S o u r c e As S t r in g , E ve n t ID As In t eg er, Ti m e S t a mp As D a t e , Ou tp u t ID As In t eg e r ) _ Imp l e m en t s Un i f i ed P OS . PO S P r in t e r E ve n t s. V1 _ 2 . P O S P r in t e r E ve n t. Ou tp u t C o mp l e t e E ve n t En d S u b ' St a tu s Up d a t e E ve n t 発 生 時に 呼 ば れる メ ソ ッド Pu b l i c Su b S t atu s Up d at e E ve n t ( C on su m e r ID As St r in g , S o u r c e As S t r in g , E ve n t ID As In t eg er, Ti m e S t a mp As D a t e, St a tu s As In t e g e r) _ Imp l e m en t s Un if i e d PO S .P O SP r i n t e r E ve n t s . V1 _ 2 . P OS P r in t e r E ve n t . St a tu s Up d a t e E ve n t En d S u b ' D i r e ct IO E ve n t 発生 時 に 呼 ば れる メ ソ ッ ド Pu b l i c Fu n c t i on D i r e ct IO E ve n t( C on su m e r ID As St r in g , S o u r c e As S t r in g , E ve n t ID As In t eg er, Ti m e S t a mp As D a t e, E ve n t N u m b e r As In t eg e r, D a t a As In t eg e r, Ob j As Ob j e ct ) _ As Un i f i ed P O S. PO S P r in t er E ve n t s. V1 _ 2 . D i r e c t IO D a t a Imp l e m e n t s Un if i e d PO S. P OS P r in t e r E ve n t s . V1 _ 2 . P OS P r in t e r E ve n t . D i r e ct IO E ve n t R e tu rn N e w U n if i e d P O S. PO S P r in t e rE ve n t s. V1 _ 2 . D i r e c t IO D at a ( ) En d Fu n c t i on En d Cl a s s En d N a m e sp a c e Copyright (C) Fujitsu Isotec Limited. 2014 31 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 手順 4 イベント処理-SelfHost 方式 Visual Basic.NET ア プ リ ケ ー ショ ン 構 成 フ ァイ ル (A pp . c on fig )を 編 集 しま す 。 ◆ Ap p . c o n fi g < c on f i g u r at i o n > < sy s t e m. s e r vi c e Mo d el > < s e r vi c e s > <! - - サ ービ ス 名を 指 定( サ ー ビス 名 は [サ ービ ス ク ラ スの n am e s p ac e ] +[ ク ラ ス 名 ]) -- > < s e r vi c e n a m e =" W S PO S E ve n tS e r vi c e . P O S Pr i n t e r E ve n tS e r vi c e b eh a v i o r C o n f i g u r at i o n =" W S PO S C l i en t . PO S P r in t e r E ve n t S e r vi c e B e h a vi o r " > <h o st > <b a s e Ad d r e s s e s > <! — b a s e Ad d r e ss に イ ベン ト 取得 用 U R L を 指 定 - - > < ad d b a s e Ad d r e s s = " h t tp :/ / 1 9 2. 1 6 8 . 1 . 1 0 1 : 8 0 0 1 / PO S P r in t e rE ve n t" / > </b a s e Ad d r e s s e s > </h o s t > <! —イ ベント 取 得 用 サ ービス の e n d p o in t 情報 を 指定 -- > < en d p o i n t ad d r e s s =" " b in d in g =" b a s i c H tt p B i n d in g " c on t r a ct =" Un i f i e d P O S. PO S P r in t e rE ve n t s. V1 _ 2 . PO S P r in t e r E ve n t" b in d in g N a m e sp a c e =h t tp : // w w w.n rf - a r ts . o rg / U n if i e d PO S/ P OS P r in t e r E ve n t s / /> </ s e r vi c e > </ s e r vi c e s > </ s y st e m .s e r vi c e Mo d e l > </ c on f ig u r a t i on > 5 ア プ リ ケ ー ショ ン ソ ー スにイ ベン ト 取 得 用 の サ ー ビ スホ スト を 生 成 す る 処 理 を 記 述 しま す 。 D i m p o sP r i n t e r E ve n t S e r vi c e H o s t As S e r vi c e H o s t ' イ ベン ト 取 得 用の サ ー ビ スの 開 始 p o s P r in t er E ve n t S e r vi c e H o s t = N e w S e r vi c e H o s t (G e t Typ e ( WS P OS E ve n t S e r vi c e . PO S P r in t e r E ve n t S e r vi c e ) ) ‘ O p en S e ss i o n の 引 数 で En d p o i n t を渡 す d e vi c e . Op e n S e s s i o n ( c o n s u m e r ID , " h ttp :/ / 1 9 2 . 1 6 8 . 1. 1 0 1 : 8 0 0 1 / P O SP r in t e r E ve n t" ) ' メ ソッ ド の 呼 び出 し な ど の処 理 ' イベ ン ト取 得 用 サ ービ ス 終 了 p o s P r in t er E ve n t S e r vi c e H o s t . Cl o s e ( ) Copyright (C) Fujitsu Isotec Limited. 2014 32 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド <Vi su a l C# > 手順 イベント処理-SelfHost 方式 Visual C# 1 Visual Studio でイベント取得用サ ソリ ュ ー シ ョ ン エク スプ ロ ー ラ か らプ ロ ジ ェ ク ト を 右 クリ ッ ク し、 [追 ービスクラスを作成 加 ] -[ 新 しい項 目 ]を クリ ッ ク しま す。 2 C#のクラスを追加 フ ァイ ル 名 ”PO S P rin t erE v en t S ervic e. c s ” でク ラ スを 追 加 しま す。 3 追加したファイル”POSPrinterEventService.cs”を編集します。以下を参考にしてください。 ◆POSPrinterEventService.cs n a m e sp a c e W S PO S E ve n tS e r vi c e { [S e r vi c e B e h a vi o r ( N a m e sp a c e = " h ttp :/ / w w w.n r f - ar t s. o rg / Un i f i ed PO S / PO S P r in t e r E ve n t s/" , In s t an c e C o n t e xt Mo d e = In st a n c e C on t e xt Mo d e . S in g l e ) ] // イ ベ ン トを 取 得 し たい カ テ ゴ リの イ ベ ン トク ラ ス を継 承 す る p u b l i c cl a s s P OS P r in t e rE ve n t S e r vi c e : Un i f i ed PO S .P O S Pr i n t e r. V1 _ 2 . PO S P r in t er E ve n t { // Er r o r E ve n t 発生 時に 呼 ば れる メ ソ ッ ド p u b l i c vi r tu a l Un i f i e d P O S. PO S P r in t e rE ve n t s. V1 _ 2 . E rr o r R e s p on s e E r r o r E ve n t ( st r in g C on su m e r ID , st r in g S ou rc e , in t E ve n t ID , D a t e Ti m e Ti m e S t a m p , Un if i e d PO S. P OS P r in t e r E ve n t s . V1 _ 2 . E r r o r C od e Er r o r C o d e, in t E r r o r C od e E xt e n d ed , Un i f i ed P OS . PO S P r in t e r E ve n t s. V1 _ 2 . E r r o r L o cu s Er r o r L o cu s , Un i f i ed P OS . PO S P r in t e r E ve n t s. V1 _ 2 . E r r o r R e sp o n s e E r r o r R e sp on s e ) { r et u r n Un i f i ed P OS . PO S P r in t e r E ve n t s. V1 _ 2 . E r r o r R e sp o n s e. Cl e a r ; } // Ou tp u t C o m p et e E ve n t 発生 時 に 呼 ば れる メ ソ ッ ド p u b l i c vi r tu a l vo i d O u tp u t C o mp l e t e E ve n t ( st r in g C on su m e r ID , st r in g S ou rc e , i n t E ve n t ID , D a t e Ti m e Ti m e S t a mp , in t O u t p u t ID ) { } // S t at u s U p d at e E ve n t 発 生時 に 呼ば れ る メ ソッ ド p u b l i c vi r tu a l vo i d St a tu s Up d a t e E ve n t ( st r in g C on su m e r ID , st r in g S ou rc e , in t E ve n t ID , D a t e Ti m e Ti m e S t a m p , i n t St a tu s ) { } // D i r e c t IO E ve n t 発 生 時に 呼 ばれ る メ ソ ッド p u b l i c vi r tu a l Un i f i e d P O S. PO S P r in t e rE ve n t s. V1 _ 2 . D i r e c t IO D a t a D i r e ct IO E ve n t( st r in g C on su m e r ID , st r in g S ou rc e , in t E ve n t ID , D a t e Ti m e Ti m e S t a m p , i n t E ve n t Nu mb e r, in t D a t a, ob j e c t Ob j ) { r et u r n n e w Un i f i ed P OS . PO S P r in t e r E ve n t s. V1 _ 2 . D i r e c t IO D a t a ( ) { D a t a = D a t a, O b j = Ob j }; } } } Copyright (C) Fujitsu Isotec Limited. 2014 33 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 手順 4 イベント処理-SelfHost 方式 Visual C# ア プ リ ケ ー ショ ン 構 成 フ ァイ ル (A pp . c on fig )を 編 集 しま す 。 ◆ Ap p . c o n fi g < c on f i g u r at i o n > < sy s t e m. s e r vi c e Mo d el > < s e r vi c e s > <! - - サ ービ ス 名を 指 定( サ ー ビス 名 は [サ ービ ス ク ラ スの n am e s p ac e ] +[ ク ラ ス 名 ]) -- > < s e r vi c e n a m e =" W S PO S E ve n tS e r vi c e . P O S Pr i n t e r E ve n tS e r vi c e b eh a v i o r C o n f i g u r at i o n =" W S PO S C l i en t . PO S P r in t e r E ve n t S e r vi c e B e h a vi o r " > <h o st > <b a s e Ad d r e s s e s > <! — b a s e Ad d r e ss に イ ベン ト 取得 用 U R L を 指 定 - - > < ad d b a s e Ad d r e s s = " h t tp :/ / 1 9 2. 1 6 8 . 1 . 1 0 1 : 8 0 0 1 / PO S P r in t e rE ve n t" / > </b a s e Ad d r e s s e s > </h o s t > <! —イ ベント 取 得 用 サ ービス の e n d p o in t 情報 を 指定 -- > < en d p o i n t ad d r e s s =" " b in d in g =" b a s i c H tt p B i n d in g " c on t r a ct =" Un i f i e d P O S. PO S P r in t e rE ve n t s. V1 _ 2 . PO S P r in t e r E ve n t" b in d in g N a m e sp a c e =h t tp : // w w w.n rf - a r ts . o rg / U n if i e d PO S/ P OS P r in t e r E ve n t s / /> </ s e r vi c e > </ s e r vi c e s > </ s y st e m .s e r vi c e Mo d e l > </ c on f ig u r a t i on > 5 ア プ リ ケ ー ショ ン ソ ー スにイ ベン ト 取 得 用 の サ ー ビ スホ スト を 生 成 す る 処 理 を 記 述 しま す 。 p r i va t e S e r vi c e H o s t p o s P r in t e r E ve n t S e r vi c e H o s t ; p o s P r in t er E ve n t S e r vi c e H o s t = n e w S e r vi c e H o s t (t yp e o f (W S P OS E ve n t S e r vi c e . PO S P r in t e r E ve n t S e r vi c e ) ) ; // イ ベ ン ト取 得 用 の サー ビ ス の 開始 p o s P r in t er E ve n t S e r vi c e H o s t .Op e n ( ) ; // O p e nS e s s i on の 引 数で E n dp o i n t を 渡 す d e vi c e . Op e n S e s s i o n ( c o n s u m e r ID , " h ttp :/ / 1 9 2 . 1 6 8 . 1. 1 0 1 : 8 0 0 1 / P O SP r in t e r E ve n t" ); // メ ソ ッ ドの 呼 び 出 しな ど の 処 理 // イ ベン ト 取 得 用サ ー ビ ス終 了 p o s P r in t er E ve n t S e r vi c e H o s t . Cl o s e ( ); Copyright (C) Fujitsu Isotec Limited. 2014 34 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 3.3.9 イベント処理-LongPolling 方式 サ ー ビ スコ ン シ ュ ー マ( ア プ リ ケ ー シ ョ ン ) か ら サ ー ビ スプ ロ バ イ ダ に、 イ ベ ン ト 取 得 リ ク エ スト を 送 信 し、 そ の レ スポ ン スとしてイ ベン ト を 通 知 しても ら う 方 式 です。 <Vi su a l Ba si c . NET > 手順 イベント処理-LongPolling 方式 Visual Basic.NET 1 LongPolling用のスレッドを動作させ、サービスプロバイダにイベント取得リクエストを送る処理を追加します。 D i m l on g P ol l i n g Th r e a d As Th r e ad i n g . Th r e ad ' セ ッ シ ョン オ ー プ ン d e vi c e . Op e n S e s s i o n ( c o n s u m e r ID , N o th in g ) ' L o n gP o l l in g 用 ス レッ ド 作 成 ・開 始 l on g P o l l in g Th r e ad = N e w Th r e ad i n g . Th r e ad ( Ad d r e s sO f PO S P r in t er E ve n t _ L o n g P ol l in g ) l on g P o l l in g Th r e ad . Is B a c kg r o u n d = Tr u e l on g P o l l in g Th r e ad .S t a rt ( ) 2 POSPrinterEvent_LongPollingメソッドにイベント取得時の処理を記載します。以下を参考にしてください。 P r i va t e Su b P O SP r in t e r E ve n t _ L o n g P ol l i n g () Wh il e N ot c on su m e r ID Is N o th i n g Tr y D i m d e vi c e E v e n t As U n if i e d PO S. P OS P r in t er. V1 _ 2 . P O S Pr i n t e r E ve n t ' イベ ン ト ポ ーリ ン グ を 実行 ( イ ベ ント 取 得 リ クエ ス ト 発行 ) d e vi c e E ve n t = d e vi c e . P ol l F o r U PO S E ve n t ( c on su m e r ID ) If d e vi c e E ve n t Is N o th i n g Th e n C on t in u e W h il e En d If D i m r e s As N e w U n if i e d PO S. P OS P r in t e r. V1 _ 2 . P O S Pr i n t e r E ve n t R e sp on s e ' 受信 し た イ ベン ト ご と の処 理 を 実 行 If N o t d e vi c e E ve n t . Er r o r E ve n t Is N o th in g Th en ' Er r o r E ve n t 取 得 時の 処 理 D i m e v As U nif i e dPO S . PO S P r i nt er . V 1_2 . E r r o r E ve nt = de v ic e E ve nt . E r r or E ve nt r es . Er r or E ve nt R e s po ns e = ne w U ni f i e dPO S . P OS P r i nter . V 1_2 . E r r o r E ve nt R es po ns e( ) r es . Er r or E ve nt R e s po ns e . E v e nt ID = e v. E v e nt ID El s e If N o t d e vi c e E v e n t .Ou tp u t C o mp l e t e E ve n t Is N o th i n g Th e n ' Ou tp u t C o mp l e t e E ve n t 取得 時 の 処 理 r es .O ut pu t C o mp le t e E ve nt R es po ns e = ne w U ni f ie dP O S . PO S Pr i nt er . V1_ 2 .O ut pu t C o mp le t e E ve nt R es po ns e( ) r es .O ut pu t C o mp le t e E ve nt R es po ns e . E ve nt I D = e v. E v e nt I D El s e If N o t d e vi c e E v e n t . St a tu s Up d a t e E ve n t Is N o th i n g Th e n ' St a tu s Up d a t e E ve n t 取得 時 の 処 理 D i m e v As U nif i e dPO S . PO S P r i nt er . V 1_2 . S t a t us U pda t e E ve nt = de v ic e E v e nt . S ta t us U pda t e E ve nt r es . S ta t us U pda te E v e ntR es po ns e = ne w U nif i e dPO S . PO S Pr i nt er . V 1_2 . S t a t us U pda t e E ve nt R es po ns e( ) r es . S ta t us U pda te E v e ntR es po ns e . E v e nt I D = e v. E v e nt I D El s e If N o t d e vi c e E v e n t . D i r e ct IO E ve n t Is N o th in g Th en ' D i r e ct IO E ve n t 取 得 時の 処 理 D i m e v As U nif i e dPO S . PO S P r i nt er . V 1_2 . D i r ec t I O E ve nt = de v ic e E ve nt . D ir ec t I O E ve nt r es .D ir ec t IO E v e ntR e s po ns e = ne w U ni f ie dPO S . P O SP r i nter . V 1_ 2 .D ir ec t I O E ve nt R es po ns e( ) r es .D ir ec t IO E v e ntR e s po ns e . E v e nt ID = e v. E v e nt ID En d If Copyright (C) Fujitsu Isotec Limited. 2014 35 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 手順 2 続き イベント処理-LongPolling 方式 Visual Basic.NET ' イベ ン ト へ の応 答 (W S - PO S サー ビ ス プロ バ イ ダ へ の 応答 ) Wh il e ( Tr u e ) Tr y d e vi c e . S e t E ve n t R e sp on s e ( c on su m e r ID , r e s ) ' 応答 が 正 常に 完 了 し た ら 、 次の イベ ント 取 得 の ため P ol l F o r U PO S E ve n t に 戻 る E xi t Wh i l e C a t ch e x As Ti m e o u t E xc e p t i on ' イベ ン ト へ の応 答 が オ フラ イ ン ま たは タ イ ム アウ ト の 場合 、 イ ベ ント 応 答 を 再試 行 C on t i n u e Wh il e C a t ch e x As F au l t E xc e p t i on ( Of Un i f i ed PO S .P O S Pr i n t e r. V1 _ 2 . Up o s E xc e p t i o n ) If e x. D e t a i l . E r r o r C od e = U n if i e d P O S. PO S P o w e r. V1 _ 2 . E r r o r C od e . Il l e g al T h en ' IL L E G AL が 帰 っ てき た 場 合 は、 S e t E ve n t R e s p on s e は 既 に受 信 さ れ てい た の で 、 ' 再度 P ol l F o r U PO S E ve n t に戻 る E xi t Wh i l e El s e Th r o w En d If En d Tr y En d Wh il e C a t ch e x As Ti m e o u t E xc e p t i on ' イベ ン ト ポー リ ン グ がオ フ ラ イ ンま た は タ イム ア ウ トの 場 合 、 P ol l F o r UP O S E ve n t を再 試 行 C on t in u e W h il e En d Tr y En d Wh il e En d S u b Copyright (C) Fujitsu Isotec Limited. 2014 36 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド <Vi su a l C# > 手順 イベント処理-LongPolling 方式 Visual C# 1 LongPolling用のスレッドを動作させ、サービスプロバイダにイベント取得リクエストを送る処理を追加します。 p r i va t e Th r e a d l o n g P ol l in g Th r e ad ; // セ ッ シ ョン オ ー プ ン d e vi c e . Op e n S e s s i o n ( c o n s u m e r ID , n u l l ) ; // L o n g P ol l i n g 用ス レ ッ ド 作成 ・ 開 始 l on g P o l l in g Th r e ad = n e w Th r e ad (n e w Th r e a d S t a rt ( PO S P r in t er E ve n t _ L on g P o l l in g ) ) ; l on g P o l l in g Th r e ad . Is B a c kg r o u n d = t ru e ; l on g P o l l in g Th r e ad .S t a rt ( ); 2 POSPrinterEvent_LongPollingメソッドにイベント取得時の処理を記載します。以下を参考にしてください。 vo i d PO S Pr i n t e r E ve n t _ L on g P ol l in g ( ) { wh i l e ( c on su m e r ID ! = n u l l ) { try { Un i f i ed PO S . PO S Pr i n t e r. V1 _ 2 . PO S P r in t er E ve n t d e vi c e E ve n t; / / イ ベ ント ポ ー リ ング を 実 行 d e vi c e E ve n t = d e vi c e . P o l l F o r UP O S E ve n t ( c on su m e r ID ) ; if (d e vi c e E ve n t == n u l l ) { c o n t i n u e; / / イ ベ ント が な か った 場 合 、 再度 ポ ー リ ング } Un i f i ed PO S . PO S Pr i n t e r. V1 _ 2 . PO S P r in t er E ve n t R e sp on s e r e s = n e w U n if i e d P O S. PO S P r in t er. V1 _ 2 . P O SP r in t e r E ve n t R e sp on s e ( ); / / 受 信 した イ ベ ン トご と の 処 理を 実 行 if (d e vi c e E ve n t . Er r o r E ve n t ! = n u l l ) { / / E r r o rE ve n t 取 得 時 の処 理 Un i f i ed PO S .P O S Pr i n t e r. V1 _ 2 . E r r o r E ve n t e v = d e vi c e E ve n t. E rr o r E ve n t ; r e s . E rr o r E ve n t R e sp on s e = n e w Un i f i ed P OS . PO S P r in t e r. V1 _ 2 . E r r o r E ve n t R e s p on s e () ; r e s . E rr o r E ve n t R e sp on s e . E ve n t ID = e v. E ve n t ID ; } el s e if ( d e vi c e E ve n t .Ou tp u t C o m p l et e E ve n t ! = n u l l ) { / / Ou tp u t C o mp l e t e E ve n t 取 得時 の 処 理 Un i f i ed PO S .P O S Pr i n t e r. V1 _ 2 . O u tp u t C o mp l e t e E ve n t e v = d e vi c e E ve n t .Ou tp u t C o m p l et e E ve n t ; r e s .O u tp u t C o mp l e t e E ve n t R e s p on s e = n e w Un if i e d PO S. P OS P r in t e r. V1 _ 2 . Ou tp u t C o mp l e t e E ve n t R e sp o n s e () ; r e s .O u tp u t C o mp l e t e E ve n t R e s p on s e. E ve n t ID = e v. E v e n t ID ; } el s e if ( d e vi c e E ve n t .S t at u s U p d at e E ve n t ! = n u l l ) { / / St a tu s Up d a t e E ve n t 取 得 時の 処 理 Un i f i ed PO S .P O S Pr i n t e r. V1 _ 2 . S t a tu s Up d a t e E ve n t e v = d e vi c e E ve n t. St a tu s Up d a t e E ve n t; r e s . St a tu s Up d a t e E ve n t R e s p on s e = n e w Un i f i ed P OS . PO S P r in t e r. V1 _ 2 . S t atu s Up d at e E ve n t R e sp on s e ( ); r e s . St a tu s Up d a t e E ve n t R e s p on s e. E ve n t ID = e v. E ve n t ID ; } el s e if ( d e vi c e E ve n t . D i r e ct IO E ve n t ! = n u l l ) { / / D i r e c t IOE ve n t 取 得 時 の処 理 Un i f i ed PO S .P O S Pr i n t e r. V1 _ 2 . D i r e c t IO E ve n t e v = d e vi c e E ve n t. D i r e ct IO E ve n t; r e s . D i r e ct IO E ve n t R e sp on s e = n e w Un i f i ed P OS . PO S P r in t e r. V1 _ 2 . D i r e c t IO E ve n t R e sp o n s e( ) ; r e s . D i r e ct IO E ve n t R e sp on s e . E ve n t ID = e v. E ve n t ID ; } Copyright (C) Fujitsu Isotec Limited. 2014 37 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 手順 2 続き イベント処理-LongPolling 方式 Visual C# // イベントへの応答(WS-POSサービスプロバイダへの応答) while (true) { try { device.SetEventResponse(consumerID, res); // 応答が正常に完了したら、次のイベントを取得するためPollForUPOSEventに戻る break; } catch (TimeoutException) { // イベントの返信がオフラインで帰ってきた場合、PollEventではなく、再度SetEventResponseを行う continue; } catch (FaultException<UnifiedPOS.POSPrinter.V1_2.UposException> ex) { if (ex.Detail.ErrorCode == UnifiedPOS.POSPrinter.V1_2.ErrorCode.Illegal) { // ILLEGALが帰ってきた場合は、SetEventResponseは既に受信されていたので、 // 再度PollForUPOSEvent に戻る break; } else { throw; } } } } catch (TimeoutException) { // イベントポーリングがオフラインまたはタイムアウトの場合、PollForUPOSEventを再試行 continue; } } } Copyright (C) Fujitsu Isotec Limited. 2014 38 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 3.3.10 KeepAlive 処理 Op en S es s ion () 後 、 ア プリ ケ ー シ ョ ン とデ バ イ ス間 で通 信 が 無 い時 間 が 、 サ ー ビ スプ ロ バ イ ダ 側 で設 定 さ れ ている タイ ムア ウト 時 間 を 超 える と、 デ バ イ ス との コネ ク シ ョ ン が 切 断 され ま す 。 K eepA liv e は これ を 防 止 す る た めの 仕 組 み です 。 <Vi su a l Ba si c . NET > 手順 KeepAlive 処理 Visual Basic.NET 1 タイマーを使用し、KeepAlive処理を行う処理を記載します。以下を参考にしてください。 D i m t i m e r As S y st e m .W in d o w s .F o r m s. Ti m e r t im e r = N e w Ti m e r ( ) Ad d H a n d l e r t i m er. Ti c k , N e w E ve n t H a n d l e r ( Ad d r e s sO f t im e r _ Ti c k ) ' ア プ リ ケ ーシ ョ ン開 始 時に K e ep Al i ve 用の タ イ マー を 開 始 D i m p r o vi d e r S es s i o n Ti m e o u t As In t eg e r = d e vi c e . G et P r o vi d e r S e s s i on Ti m e o u t( c on su m e r ID ) ' S e r vi c e P r o vi d e r で 設定 さ れ てい る タ イ ムア ウ ト 時間 を 取得 ' こ こ では 、 サ ービ ス プロ バ イ ダか ら 取 得 し た タ イ ム ア ウ ト 時 間 の半 分 を K e ep Al i ve の時 間 と し ま す t im e r. In t e r va l = ( (p r o vi d e r S e s s i on Ti m e o u t / 2 ) * 1 0 0 0 ) ' タ イマ ー 開 始 t im e r.S t a rt ( ) P r i va t e Su b t i m e r _ Ti c k ( s en d e r As Ob j e c t, e As E ve n t Arg s ) ' W S - PO S K e e p Al i ve If N o t c o n su m er ID Is N o th i n g Th e n Tr y d e vi c e . K e e p Al i ve ( c o n su m e r ID ) C a tc h e x As Ti m e o u t E xc e p t i on ' タ イ ムア ウ ト 処理 t i m e r. S t op ( ) ' K e ep Al i ve が タイ ム ア ウ ト に な っ た 場 合 ( オ フ ラ イン ) ' チ ャ ネル 情 報 、 C on su m e r ID を n u l l に し ま す c on su m e r ID = N o th in g d e vi c e = N o th in g ' L on g P ol l in g でイ ベント 取 得 時 は、 L o n g P ol l i n g スレ ッ ドを 停止 さ せ ま す ' この 後 、 再 度 Op e n し直 し て く だ さ い En d Tr y En d If En d S u b Copyright (C) Fujitsu Isotec Limited. 2014 39 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド <Vi su a l C# > 手順 KeepAlive 処理 Visual C# 1 タイマーを使用し、KeepAlive処理を行う処理を記載します。以下を参考にしてください。 p r i va t e S y st e m .W in d o w s .F o r m s. Ti m e r t i m e r; t im e r. Ti c k + = n e w S y st e m . E ve n t H a n d l e r (t i m e r _ Ti c k ) ; // ア プリ ケ ー シ ョン 開 始 時に K e e p Al i ve 用 の タ イマ ーを 開 始 する in t p r o vi d e r S e s s i on Ti m e o u t = d e vi c e . G et P r o vi d e r S e s s i on Ti m e o u t (c o n su m e r I D ); // S e r vi c e P r o vi d e r で設 定 さ れて いる タ イ ム ア ウ ト 時 間を 取 得 する // こ こ で は、 サ ービ ス プロ バ イ ダか ら 取 得 し た タ イ ム ア ウ ト 時 間 の 半分 を K e ep Al i ve の 時 間 と し ま す t im e r. In t e r va l = p r o v i d e rS e s s i o n Ti m e o u t / 2 * 1 0 0 0 ; // タ イ マ ーを 開始 t im e r.S t a rt ( ); p r i va t e vo i d t i m e r _ Ti c k ( o b j e ct s en d e r, E ve n t Ar g s e ) { / / W S -P O S K e ep Al i ve i f ( c on su m e r ID ! = n u l l ) { try { d e vi c e . K e e p Al i ve ( c o n su m e r ID ); } c a tc h ( Ti m e o u t E xc e p t i on ) { / / タイ ムアウト 処理 t i m e r. S t op ( ); / / K e e p Al i ve が タ イ ムア ウ ト に な っ た 場合 ( オ フ ラ イ ン ) / / チ ャ ネ ル 情 報、 C o n su m e r ID を n u l l に し ま す c on su m e r ID = n u l l ; d e vi c e = n u l l ; / / L o n g P ol l in g でイベ ント 取 得時 は 、 L on g P o l l in g ス レッ ドを 停 止 さ せ ま す / / こ の 後 、再 度 Op en し 直 し て く だ さい } } } Copyright (C) Fujitsu Isotec Limited. 2014 40 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 3.4 OPOS のメソッド・プロパティについて 生 成 した チャ ネ ル の メ ン バ ー とし て、 O PO S と同 様 の メ ソ ッド ・ プ ロ パ テ ィが 使 用 でき ま す。 メ ソッ ド ・ プ ロ パ テ ィにつ いては 、 O PO S の AP G (ア プ リ ケ ー ショ ン プ ロ グラ マー ズ ガ イ ド )を 参 照 してく だ さ い。 * FP - 110 0 O PO S の 場 合 は 下 記 の AP G を 参 照 してく だ さい。 「 F P -110 0 P OS P rin t er, Cas h Dra wer シ リ ア ル ・ USB ・ LA N イ ン ター フ ェ ー ス対 応 OP O S -O CX ド ラ イ バ アプ リ ケ ー シ ョ ン プ ロ グラ マー ズ ガ イ ド 」 (F P110 0_ O PO S _A P G_ ja. pd f) 3.5 WS-POS で使用できないメソッド・プロパティ 下 記 の OP O S のプ ロ パ テ ィ・ メ ソ ッド は W S-P OS で使 用 でき ま せ ん 。 コン シ ュ ー マおよ び プ ロ バ イ ダ が 停 止 す る 場 合 が あり ま す の で、 使 用 しない でく だ さい。 ◆ メ ソッ ド ・ Comp ar eF irm war eVe rs ion ・ Res et S t at is t ic s ・ P rin t Mem or yB itm ap ・ Dra wRu led L in e ◆プロパティ ・ B in ar yCon ve rs ion ・ Op en Res u lt ・ Res u lt Cod e ・ Res u lt Cod eE xt en d ed ・ Cap Rec Ru led L in e ・ Cap S lp Ru led L in e Copyright (C) Fujitsu Isotec Limited. 2014 41 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 4. 注意事項 P C を 休 止 ま た は スリ ープ 状 態 にす る 場 合 コン シ ュ ー マ実 行 中 に PC を 休 止 ま た は スリ ー プ 状 態 にす る ことは 推 奨 しま せ ん。 通 信 が ない時 間 が 続 いた 場 合 、 タイ ムア ウ ト となり 、 プ ロ バ イ ダ との セ ッ シ ョ ン が 切 断 す る 可 能 性 が あ り ま す 。 そ の 場 合 、 再 度 ア プ リ ケ ー シ ョ ン を 起 動 してく だ さい。 復 旧 し ない 場 合 は サ ー バ ー 側 でサ ー ビ スプ ロ バ イ ダ の 再 起 動 を 行 っ てく だ さい。 S e nd T im e ou t 値 の 変 更 につ いて WC F サ ー ビ スの バ イ ン デ ィン グプ ロ パ テ ィの S e n dT i m e out の 既 定 値 は ” 0 0 : 0 1: 0 0 ” です 。 コン シ ュ ー マ側 でバ ッ フ ァサ イ ズ が 大 き いデ ー タを 送 信 し、 1 分 間 処 理 が 返 っ てこない場 合 、 タイ ムア ウト と なり 、 ア プ リ ケ ー ショ ン 内 で例 外 が 発 生 す る 可 能 性 が あり ま す 。 そ の 場 合、 サ ー ビ ス コン シ ュ ー マ側 で以 下 の よ う に S e n dT im e ou t 値 を 変 更 してく だ さい。 サービスコンシューマ設定ファイルに以下の太字部分を追加します。 <client> <endpoint address="http://192.168.1.120:8087/POSPrinter.svc/POSPrinter1" binding="basicHttpBinding" bindingConfiguration="longTimeBinding" contract="UnifiedPOS.POSPrinter.V1_2.POSPrinter" name="POSPrinterPort1"/> </client> <bindings> <basicHttpBinding> <binding name="longTimeoutBinding" SendTimeout="00:01:00"/> ・・・※ </basicHttpBinding > </bindings > ※ご使用の 環境に よ り 、 適切な タイ ムアウ ト値 を設定して ください 。 W S- PO S 参 照 実 装 の 6 4 bi t 環 境 での 使 用 につ いて 現 在 提 供 され ている W S - PO S 参 照 実 装 の プ ロ バ イ ダ は 6 4 bi t 環 境 で動 作 しま せ ん。 " W cf S er vi c e H os t Wi n d ow s S er vi c e 3 5 . ex e " が 「 A n y C PU 」 でビ ル ド され て い る た め、 サ ー ビ スとして 動 作 させ る と 6 4 b i t 動 作 となり 、 3 2 b it である C C O にア クセ スでき ないた め で す。 6 4 b i t 環 境 で動 作 さ せ る には 3 2 b i t( x 8 6 ) でビ ル ド す る 必 要 が あり ま す 。 Copyright (C) Fujitsu Isotec Limited. 2014 42 of 43 WS-POS 環境セットアップ・アプリケーション開発ガイド 5. Reve si on 1.0 .0 .0 改訂履歴 更新日 初版(2 014 .09 .12 ) Copyright (C) Fujitsu Isotec Limited. 2014 43 of 43