2014/02/27
・App.config内でWSPOSProviderCommonBehavior.dllを指定する際のバージョンが
  1.0.0.0のままであったものを1.2.0.1に修正。
------------
2014/02/21
・WinRT用以外のコントラクトも署名を追加
・コントラクトのbinフォルダをbin\Debugとbin\Releaseに分割
・各プロバイダのプロジェクトのコントラクト参照先を上記bin\Releaseに変更
------------
2014/02/21
・Legacy SO を使用すると、OPOSのイベントハンドラをプロバイダが処理している
　間に、セッション切断やReleaseが行われた際、その後イベントハンドラの処理が
　終了しreturnするとメモリ状況によってはプロバイダがエラーとなりプロセスが
　強制終了する問題に対応。
・UpdateFirmwareやPOSのSetBitmap等でファイルをダウンロードする際、ファイル
　アクセスやHTTPアクセスの際にエラーとなった際、ＯＳの例外をそのまま返して
　いた問題をUposExceptionに変換するように修正。
・バージョンを1.2.1に更新。(これまでは1.2.0)
・プロバイダのRelease/Debugビルドとも最新化
------------
2013/11/22
・以下のメソッドのstring型Dataパラメータにエスケープシーケンス処理を追加。
　FiscalPrinter.PrintFixedOutput
　POSPrinter.PrintBarCode
　RemoteOrderDisplay.DisplayData
　Scale.DisplayText
・すべてのコンシューマ、プロバイダのDLLファイルバージョンを 
　1.0.0.0から1.2.0.1に修正。
・Silverlight用コントラクトのDLLファイルバージョンを
　1.0.0.0から1.2.0.0に修正。(他のコントラクトは以前から1.2.0.0)
・プロバイダのコンテナーのApp.configのイベント双方向通信の設定文字列に
　"Service"が含まれていたデバイスが多数あったものを修正。
　例×:<endpoint binding="basicHttpBinding" contract="UnifiedPOS.MSRServiceEvents.V1_2.MSREvent" name="MSREventPort"/>
　例○:<endpoint binding="basicHttpBinding" contract="UnifiedPOS.MSREvents.V1_2.MSREvent" name="MSREventPort"/>
・プロバイダのビルド後のイベントスクリプトのディレクトリ指定が誤っていたものを訂正
　例×:copy $(TargetPath) $(SolutionDir)\_dist\$(ConfigurationName)\. 
　例○:copy $(TargetPath) $(SolutionDir)_dist\$(ConfigurationName)\. 
　（ただし、×のほうでもコマンドラインエンジンが正しく解釈して、実害はありません）
・WinRT用コンシューマのVisualStudio2012による自動生成ファイル
　"StandardStyles.xaml"内に日本語化に起因する問題があるとみられ、ビルド
　環境によってはビルドエラーが発生する問題に対処。

------------
2013/08/30
・全デバイス
　同期的メソッド実行時の場合も一時ファイル削除に失敗する可能性を考慮し、
　削除に失敗してもその場でエラーとせず、その後のRelease, CloseDevice, 
　CloseSession時に再度削除する処理を追加。CompareFirmwareメソッドが対象。
・ElectronicJournal
　上記同様の処理変更。PrintContentFileメソッドが対象。
・HardTotals
　上記同様の処理変更。Createメソッドが対象。
・LineDisplay
　上記同様の処理変更。DisplayBitmap、SetBitmapメソッドが対象。
・POSPrinter
　上記同様の処理変更。PrintBitmap、SetBitmapメソッドが対象。

------------
2013/08/29
・全デバイス
　2013/08/27の実装では、非同期動作で一時ファイル使用するメソッドと
　しないメソッドを交互に実行する(PrintBitmap, PrintNormal, PrintBitmapなど)
　と、PrintNormalに対応するOutputCompleteEventで二回目のPrintBitmapのための
　一時ファイルを削除してしまう場合があるため、イベント毎に一時ファイルを
　消すことをやめ、Release、CloseDevice、および、CloseSession時に、作成した
　一時ファイルをまとめて消す実装に修正。
・ElectronicJornal
　QueryContentの非同期動作を修正。QueryContent実行中に次のQueryContentが
　呼び出されたさいに一時ファイルの情報を上書きしていた問題に対処、
　Queue管理して、QueryContentとDataEventで一時ファイル情報をFIFO制御に変更。
・POSPrinter
　TransactionPrintやRotatePrintなど、複数のメソッドに対して一つの
　OutputCompleteEventが発生する場合、最後に使用した一時ファイルのみ削除されて
　いた問題に対処。CloseDevice, CloseSessionにてまとめて削除することで解消。
・プロバイダの.configに一時ファイル用フォルダの設定を追加
・プロバイダ起動時に一時ファイルのフォルダ内容を削除するように変更

------------
2013/08/27
・非同期動作中の一時ファイルの保持を単一変数からQueueに変更、
　連続した動作についてもキューイングすることで対応。
・非同期動作中の一時ファイル削除に失敗した場合、CloseSessionで
　削除するように修正。
------------
2013/08/19
・ElectronicJournal
　QueryContentの非同期動作を修正。DataEventでの条件判定ミスを修正。
　PrintContentFileの非同期動作後のOutputCompleteEventでのファイル
　削除を追加。
・POSPrinterのSetBitmapは常に同期動作にもかかわらず非同期動作を
　実装していたためファイル削除がされない場合があった不具合を修正。
・LightsのStatusUpdateEventでUpdateFirmwareに対応してテンポラリ
　ファイルを削除する処理の不要なif文を削除
・ScaleのStatusUpdateEventでUpdateFirmwareに対応してテンポラリ
　ファイルを削除する処理の不要なif文を削除
------------
2013/08/16
・全デバイス
　UpdateFirmwareメソッドでConsumerから渡されるURIからProvider内部で
　ダウンロードしたテンポラリファイルを、StatusUpdateEventで
　UpdateFirmwareが終了するまで保持するよう修正。
　CloseSession時に上記テンポラリファイルがあったら削除する処理を追加。
　ErrorEventではRetry指定以外でテンポラリファイルがあったら削除する処理を追加。

・ElectronicJournal
　QueryContentの非同期動作を修正。
　DataEvent発生まで内部テンポラリファイルを保持し、DataEventでアップロード。

・POSPrinter SetBitmap, PrintBitmapでOutputCompleteEvent発生まで、
　内部テンポラリファイルを保持するよう修正。
---------------
2013/07/23
・.configのコメントが日本語だけだったので、英語も追加しました。
--------------
2013/07/16 2
・ElectronicJournalのQueryContentについて、httpアップロードに対応しました。
　テンポラリファイルを作成してUPOSに渡していたのですが、作成せすに渡すように
　実装を修正しました。
---------------
2013/07/16
・ElectronicJournalのQueryContentについて、httpアップロードに対応しました。
---------------
2013/07/03 
・Providerの以下のデバイスにつき、EventConvertの定数値の宣言が不足して
　いたものを追加しました。
　CAT, CheckScanner, ElectronicJournal, ElectronicValueRW, FiscalPrinter
　MICR, MSR, PINPad, PointCardRW, POSKeyboard, SmartCardRW, ToneIndicator
　RFIDScanner

・ProviderのApp.configでRemoteOrderDisplayの双方向通信用イベントポート
　指定のコントラクトがPOSPrinterと誤っていたのをしました。
・ConsumerのコンソールサンプルのロングポーリングのApp.configに不要な
　双方向通信向けの設定が記載されていたものを削除しました。
---------------
2013/06/28
・Providerの以下のメソッドに対して、エスケープシーケンスを
　POS for .NETに渡す処理を追加しました。
　　LineDisplay
　　　DisplayText
　　　DisplayTextAt
　　PointCardRW
　　　PrintNormal
　　　ValidateData
　下記は以前から同処理があるメソッドです。
　　FiscalPrinter
　　　PrintNormal
　　POSPrinter
　　　PrintImmediate
　　　PrintNormal
　　　PrintTwoNormal
　　　SetLogo
　　　ValidateData

---------------
2013/06/24
Provider
・App.configにsystem.netのconnectionManagementを追加しました。
・PINPadのBeginEFTTransactionのPINPadSystemパラメータをenumから
　文字列に変更しました。

Consumer
・App.configにsystem.netのconnectionManagementを追加しました。

Contract
・PINPadのBeginEFTTransactionのPINPadSystemパラメータをenumから
　文字列に変更しました。

---------------
2013/06/11
Provider
・CashDrawerService_ProviderSessionTimeoutCheckPeriodが.configから
　漏れていた不具合を修正しました。
・EventWait.csのWaitForAnyのイベント待ち受け処理に問題があったもの
 を修正しました。
・_distフォルダをビルド時に作成するようにしました。
・PollForUPOSEventを呼び出されている際にProviderを終了すると、
　PollForUPOSEventのタイムアウトまで１分程度待ちが発生する問題を
　修正しました。

Consumer
・スキャナの双方向サンプルプログラムのイベント受信部の実装の
　コントラクトの名前空間がPOSPrinterになっていた不具合を
　Scannerに修正しました。

Contract
・binフォルダをビルド時に作成するようにしました。

---------------

2013/6/04
・.configファイルから、.NET Fx 4.0のセキュリティポリシーの設定を削除
　(NetFx40_LegacySecurityPolicy)
・WcfServiceHostWindowsService35.exe.configから、
　webHttpのextendedProtectionPolicy属性を削除しました。
  (.net fx4の設定のため)
・WcfServiceHostConsoleExe35.exe.configから、
　webHttpのextendedProtectionPolicy属性を削除しました。
  (.net fx4の設定のため)
・ScannerのConsumerSampleからiSelect変数を完全に削除しました。
  (以前の実験の名残)
・ScannerのConsumerのapp.configからOPOSSimulatorエントリを
　削除しました。(以前の実験の名残）
・POSPrinterのBiDirectionのConsumerSampleにおいてイベントの受信
　エンドポイントのハードコーディングを改めました。
・ScannerのBiDirectionのConsumerSampleにおいてイベントの受信
　エンドポイントのハードコーディングを改めました。
・WindowsServiceも全36デバイスを有効にしました。
　(これまではPOSPrinterとScannerのみ有効設定）
・WcfServiceHostWindowsService35のWSPOSContractの参照設定が
　自分のDebugフォルダになっていたので、WSPOSContract\bin下を
　参照するように修正しました。
・文字列置換の作業で作成された.bakファイルを削除しました。

---------------
2013/6/03
・メソッドを連続して実行すると、複数回同メソッドが実行される問題に
　対応しました。STA対応のためにセッション毎スレッドを生成しメッセージ
　ループを行いながら各メソッドを実行していますが、そのフラグ制御の
　排他制御範囲に問題がありました。フラグ制御からキュー制御に変更
　しました。(WorkerThreadHolderを変更)
・WcfServiceHostConsoleExe35のプラットフォームターゲットがAnyCPUだった
　のでx86に訂正しました。(OPOS SOをオープンしようとして発覚)
・WcfServiceHostWindowsService35のプラットフォームターゲットがAnyCPU
　だったのでx86に訂正しました。(OPOS SOをオープンしようとして発覚)
・Provider下に_distディレクトリを作成し、ビルドすると実行資材がそこに
　コピーされるようにしました。

---------------
2013/5/29
・Providerに対して、コメントの英訳を追加しました

---------------
2013/5/28
・.configの内容をそろえました。(ServiceBehaviorをWS-POSServiceProviderに)
・ScannerのConsumerのSO選択機能を廃止しました。

---------------
2013/5/27
・.NET FW 3.0用のコンテナプロジェクトの.configから、webHttpの記述を
　削除しました。(webHttpは3.5からのため)

---------------
2013/5/24_2
・POSPrinterのPrintBitmapやSetBitmapなどURIでファイル名を指定した場合、
　POS for .NETに渡すファイル名が .tmp になっていたものを、指定された
　ファイルの拡張子と同じ拡張子になるように変更しました。

---------------
2013/5/24
・ServiceProviderBehaviorのデフォルトコンストラクタをprotectedにしました。
　　（誤呼び出し防止）
・ServiceProviderBehaviorのKeepAliveSettingsメソッドを廃止しました。
　　（5/23バージョンで全デバイスクラスから呼ばなくなったため）
・WindowsServiceのログ出力をコンソールではなくイベントログに設定
　　（.confg設定）
・WindowsServiceでコントロールパネルのサービスの説明が日本語文字列でしたが、
　英語にしました。
・WindowsService(.NET Fw 3.5)でサービスのインストールで失敗する問題に
　対処しました。

---------------
2013/5/23
・5/22までの対応を、Providerの36デバイスに拡張しました。

・ProviderのURI形式が変更になりました
　旧：http://Server:port/DeviceService.svc
　新：http://Server:port/Device.svc/Endpoint

・.configのbehavior-sessionCheckPeriodを廃止しました。
・.configのDEVICEService_ProviderSessionTimeoutCheckPeriodを追加しました。

---------------

2013/5/22_2

・Silverlightのコンシューマを対応しました
・WinRTのコンシューマを対応しました
・.NET Fx 3.5でclientaccesspolicy.xmlを対応しました。

---------------
2013/5/22

POSプリンタに関して、
・単一プロセスの同デバイスクラスでの複数デバイス扱い
・OpenDeviceからCloseDeviceまで、OPOS SOに対して同スレッドでのアクセス(STA考慮)
を対応しました。

-----------------------------------------------------------------------
2013/5/21

スキャナに関して、単一プロセスのデバイスクラスで複数のデバイスを扱えるように
変更しました。

-----------------------------------------------------------------------
2013/5/15

ワーカースレッドで例外が発生した際、ターゲットメソッドをクリアして
いなかったため、再入してしまう不具合を修正しました。
デバイスをOpenできなかった際のエラーメッセージが 
it can'n create instanceだったものをit can't create instanceに
修正しました。(can'n→can't)
デバイススレッドの解放を行うよう修正しました。

ExecWaitのWaitメソッドで、ワーカースレッドのループを実行するようにしました。

-----------------------------------------------------------------------

2013/5/8
イベント待ちをP/Invokeを用いてWin32ApiのMsgWaitForMultipleObjectsに
変更しました。メッセージループを処理しながらイベント待ちをしたかった
ためです。

-----------------------------------------------------------------------
2013/4/22-2
ワーカースレッドにおいてメッセージループを実装しました。
ワーカースレッドにおいてCoInitialize/CoUninitializeを呼び出しています。
(P/Invoke)

-----------------------------------------------------------------------
2013/4/22
ワーカースレッドにおいてメッセージループを実装しました。

-----------------------------------------------------------------------
2013/4/19
.NET Framwork Version 3に変更。
Linqが使えないため、foreachに変更

ただし、clientaccesspolicy.xmlのホストを行うためには、
WCF3.5が必要であるため、コンテナを２種類作成しました。
Provider\Services\WcfServiceHostConsoleExe 　　　….NET FW 3.0 コンソール用
Provider\Services\WcfServiceHostWindowsService 　….NET FW 3.0 サービス用
Provider\Services\WcfServiceHostConsoleExe35 　　….NET FW 3.0 コンソール用
Provider\Services\WcfServiceHostWindowsService35 ….NET FW 3.0 サービス用

-----------------------------------------------------------------------
2013/4/17_3
セッション毎スレッドのアパートメントモデルをSTAにしました。
(Scannerのみ対応)
-----------------------------------------------------------------------

2013/4/17_2
WcfServiceHostWindowsService.exe.configを訂正しました。
clientのendopointを削除
BeltServiceの設定を削除


-----------------------------------------------------------------------
20130417
使用しているVisual Studio を 2012に変更しました。

Visual Studioのソリューションを
・Consumer
・Contract
・Provider
に分けました。

ConsumerもProviderも、Contractのbin下のアセンブリを参照します。
(プロジェクト参照ではありません)

Consumerは、Open→Closeの一連の流れをコーディングするようにしました。
Consumerに、WindowsRT向けを追加しました。
ConsumerのSilverlightはMVVMパターンをやめ、Blendのアセンブリを不要にしました。
ConsumerのWin32サービスのapp.configでFileHostServiceのコンテナ名が誤っていたのを訂正しました。

Contractに、WindowsRT向けを追加しました。
ContractのWin32, WinRT, Silverlight向けContractはソースを共有するようにしました。

Provider動作で、ファイル名パラメータは、以下のようにURIに対応しています。
全デバイス#CompareFirmwareVersion　… URI化対応
全デバイス#UpdateFirmware　　　　　… URI化対応
ElectronicJournal#PrintContentFile … URI化未対応
ElectronicJournal#QueryContent　　 … URI化未対応
HardTotals#Create　　　　　　　　　… URI化未対応
HardTotals#Delete　　　　　　　　　… URI化未対応
HardTotals#Find　　　　　　　　　　… URI化未対応
LindDisplay#DisplayBitmap　　　　　… URI化対応
LindDisplay#SetBitmap　　　　　　　… URI化対応
POSPrinter#PrintBitmap　　　　　　 … URI化対応
POSPrinter#SetBitmap　　　　　　　 … URI化対応

Provider動作で、OpenSession後同consumerIDで再度OpenSession時の例外処理に対応しました。(Illegal）
Provider動作で、OpenSession後OpenDeviceなしの他メソッド時の例外処理に対応しました(Closed)
Provider動作で、OPOSドライバ実装のClaim管理メカニズムがスレッドベースのため、
セッションごとに同一スレッドを使うようにしました。 …(2014/04/17 試験的にScannerのみ)

