ファイル転送ユーティリティー バナー・エンジニアリング・ジャパン バナー・エンジニアリング・インターナショナル Inc. - ジャパン・ブランチ 〒532-0011 大阪市淀川区西中島3-23-15 セントアーバンビル305 TEL:06-6309-0411 E-mail:tech@bannerengineering.co.jp FAX:06-6309-0416 http://www.bannerengineering.co.jp Presence PLUS ® 1. はじめに ファイル転送ユーティリティーは、PresencePLUSビジョンセンサのファ イル転送機能と連携して使用するソフトウェアモジュールです。この機能 を使用すると、センサについての情報の取得、新たな検査の開始、センサ への検査ファイルのアップロード、およびセンサから検査ファイルのダウ ンロードを行うことができます。 このユーティリティーで提供するソフトウェアモジュールにより、この機 能を使用するアプリケーションプログラムを容易に作成できます。サンプ ルアプリケーションは、ソフトウェアモジュールに組み込まれている各種 のクラスとメソッドの使い方を示すための実例です。 この機能では、PresencePLUS software 2006R3かそれ以降が必要です。 ファイル転送ユーティリティーは、PresencePLUSのインストールCDか らインストールします。 PresencePLUS Utility Program → Install Inspection Download Utility このユーティリティーには、下記のものが組み込まれています。 − ソフトウェアモジュール − ユーザーズガイド(英語) − ヘルプファイル(英語) − サンプルアプリケーション 本書は、ユーザーズガイドとヘルプファイルを日本語化したマニュアルで す。 バナー・エンジニアリング・ジャパン 2 TEL:06-6309-0411 http://www.bannerengineering.co.jp P/N J20064Y ファイル転送ユーティリティー 2. 概要 リモートデバイス(PC)とセンサとの間で、ユーザーによる検査ファイ ルの読み込み/保存を可能にする新機能を導入しました。またこの新機能 には、センサが実行する検査ファイルを決定するメソッドが組み込まれて います。 現時点では、RUNモード時にセンサが実行する検査を制御する2つの主要 なメソッドがあります(GUIでのみ選択可能)。ユーザーは「ハードウェ ア入力」または「ソフトウェアオーバーライド」のどちらかを選択できま す。ハードウェア入力では、I/Oラインを使用して実行する検査を選択し プログラムを切り替えます。ソフトウェアオーバーライドでは、センサが 実行する検査を「ロック」できます。ソフトウェアオーバーライドを選択 した場合、センサはソフトウェアが選択した検査のみ実行します。 NOTE:ソフトウェアオーバーライドオプションでは、実行すると選択し た検査以外の全メソッドがオーバーライドされることにご注意く ださい。つまり、GUIでソフトウェアオーバーライドを選択した 場合、他の制御メソッドとは無関係に、センサは選択した検査の み実行します。 ハードウェア入力とファイル転送ユーティリティーでは、他のオ プションがオーバーライドされることはありません。つまり、 ファイル転送ユーティリティーオプションを使用している場合 は、ハードウェア入力パスから誤ったプログラム変更が行われな いように十分に注意する必要があります。 バナー・エンジニアリング・ジャパン TEL:06-6309-0411 http://www.bannerengineering.co.jp P/N J20064Y 3 Presence PLUS ® 3. 機能 ファイル転送機能を使用すると、次の処理を行えます。 ● センサからの検査ファイルの取得 ● センサへの検査ファイルの保存 ● センサでの新規検査の開始 ● センサ情報の取得 多様なプログラミング環境から使用できるAPI( アプリケーションプログ ラ ム イ ン タ ー フ ェ イ ス )が 組 み 込 ま れ て い ま す 。 こ の A P I は W i n d o w s の.DLLと.LIBという形で提供されます。 複数のサンプルアプリケーショ ン、ならびにAPIをVisual Basic、COM、.Net、およびWin32プログラミ ング環境から使用する方法についてのインストラクションも提供されてい ます。 サンプルアプリケーションは、デフォルトで下記のディレクトリにありま す。 C:¥Program Files¥Banner Engineering¥PresencePLUS Inspection Download Utility¥Sample Application BATファイルまたはその他のスクリプト言語から実行できるコンソールア プリケーションも提供されており、デフォルトでは下記の場所にあります。 C:¥Program Files¥Banner Engineering¥PresencePLUS Inspection Download Utility¥BannerInsDownload.exe 3.1 センサからの検査ファイルの取得 ファイル転送APIは、検査ファイルをセンサからホストPCに転送する GetInspection関数を提供します。検査ファイルを取得できるのは、不揮 発性(Flash)メモリに格納してある場合のみです。 3.2 センサへの検査ファイルの保存 ファイル転送APIは、検査ファイルをホストPCからセンサに転送する SaveInspection関数を提供します。検査ファイルはセンサにある不揮発 性(Flash)メモリに保存可能です。 ファイル転送機能では、検査ファイルを不揮発性メモリに保存せず、揮発 性(RAM)メモリに直接保存することも可能です。不揮発性(Flash)メモリ ではなく揮発性メモリの導入を検討する理由としては、主に速度とFlash メモリの寿命の2点が挙げられます。 RAMメモリへの保存は、Flashメモリへの保存よりはるかに高速です(約 7 倍 )。 ま た 、 F l a s h メ モ リ に は 書 き 込 み 回 数 に よ る 寿 命 制 限 ( 通 常 は 100,000回から1,000,000回)があります。Flashメモリに絶えず書き込ん でいると、Flashメモリが通常の寿命を迎える前にセンサが正常に作動し なくなることがあります。RAMメモリを使用する場合は、メモリロケー ション0を指定します。複数の検査を行う場合は、検査をロケーション0 (RAM)に保存してから、ロケーション0へのプログラムチェンジ入力を 行うことをお勧めします。 NOTE:ロケーション0に格納した検査ファイルは、揮発性メモリに保存 されます。検査ファイルの実行が再開されたり、ロケーション0 以外のロケーションにプログラムチェンジ入力を行ったりする と、ロケーション0に格納した検査ファイルは消去されます。 バナー・エンジニアリング・ジャパン 4 TEL:06-6309-0411 http://www.bannerengineering.co.jp P/N J20064Y ファイル転送ユーティリティー 3.3 センサでの新規検査の開始 ファイル転送APIは、StartInspection関数を提供します。これは、セン サに現在の検査を停止させ、StartInspection関数で指定した検査の実行を 開始させる関数です。これは、I/Oラインを使用したセンサへのプログラ ムチェンジを実行することに相当します。準備完了ステータスを確認して から、StartInspectionを行ってください。 3.4 センサ情報の取得 ファイル転送APIは、センサについての下記の情報を返すGetInfo関数を 提供します。 ● センサ名 ● ファームウェアバージョン ● 現在の検査ファイル名 ● 現在実行中の検査ファイルのロケーション。これは1〜Nの数(N = 8、12 など)で、Flashのストレージロケーションに対応しています。検査が揮 発性メモリから実行されている場合は0、センサが検査を実行していな い場合は − 1になります。 ● センサにシステムエラーが発生しているかどうかを示すフラグ ● センサに現在接続するGUIがあるかどうかを示すフラグ ● セ ン サ が 準 備 完 了 で あ る か ど う か を 示 す フ ラ グ 。( こ れ は セ ン サ の READY表示と連動しています。) 3.5 検査ログと検査ファイルのダウンロード 検査ファイルが不揮発性(Flashメモリ)のロケーションにダウンロードさ れると、その一意のロケーションに関連付けられた、センサにある検査ロ グがフラッシュされます。 例えば、ある検査がロケーション1から実行中であり、エントリがいくつ かログされているとします。次いで、ロケーション2へのプログラムチェ ンジが行われます。エントリがさらにいくつかログされます。この時点で、 ロケーション1へのSaveInspectionが行われると、ロケーション1の検査 の実行から生じるこのログエントリは消去されますが、ロケーション2の エントリはそのまま残ります。 NOTE:検査のロギングは、RAMメモリ(ロケーション0)での検査では機 能しません。ロギングを使用する必要がある場合は、不揮発性メ モリを使用する必要があります(検査ファイルはFlashメモリに格 納しなければなりません)。 3.6 重要な注意事項 ● センサには揮発性と不揮発性のメモリが内蔵されています。揮発性メモ リはロケーション0でアドレス指定します。不揮発性メモリはロケー ション1〜N(Nは1、8、12など)で指定します。 ● 多数の検査をセンサにダウンロードする場合には、揮発性メモリを使用 することを推奨します。揮発性メモリを指定すると、検査の変更をはる かに高速に実行でき、しかもFlashメモリは損耗しません。 ● プロダクトチェンジ入力を行う他の方法(ソフトウェアオーバーライド、 ハードウェア入力、またはModbus)がダウンロード機能と競合しない よう、十分ご注意ください。 ● ロギングは揮発性メモリでは機能しません ● 揮発性メモリの検査ファイルは、当該検査を再開すると消去されます バナー・エンジニアリング・ジャパン TEL:06-6309-0411 http://www.bannerengineering.co.jp P/N J20064Y 5 Presence PLUS ® 4. ファイル転送API この章では、ファイル転送APIの具体的な使用方法を説明します。この APIはHTTPを介してセンサの制御と照会を行う各種のクラスとメソッド を提供します。このAPIを使用すると、センサについての情報の取得、新 たな検査の開始、センサへの検査ファイルのアップロード、およびセンサ からのプログラムのダウンロードを行うことができます。 4.1 C/C++でのファイル転送APIの使用 内容: ビルド環境のセットアップ エラーハンドリング サンプルアプリケーション 4.1.1 ビルド環境のセットアップ NOTE:こ の ト ピ ッ ク で 示 す 図 は 、 M i c r o s o f t V i s u a l C + + 6 . 0 と V i s u a l Studio.NETを使用するファイル転送API向けに、クライアントア プリケーションを設定する方法を説明したものです。別のIDEま たはC/C++コンパイラをご使用の場合は、コンパイラとリンカの 必要なオプション設定に関するインストラクションについては、 オンラインマニュアルをご参照ください。 ファイル転送API Win32 DLL関数の使用法については、2つのオプション があります。 ● 明示的(動的)リンキング ファイル転送APIに動的にリンクする際には、手動でDLLを実行時に読 み込み、呼び出したい関数の照会を行う必要があります。この手法を 使用するクライアントアプリケーションをコンパイルするには、ヘッ ダファイルをインクルードする必要があります。 #include "BannerInspectionDownloadLib.h" DLLを動的に読み込んで使用する方法の詳細については、MSDNで公 開されている文書をご参照ください。 ● 暗黙(静的な)リンキング ファイル転送APIライブラリに静的にリンクすると、クライアントア プリケーションの起動時に、Windowsがファイル転送を自動的に読み 込みます。 その結果、API関数をローカル関数のように名前で呼び出 すことができるようになります。 ファイル転送DLLに黙示的にリンクするには、次の手順を実行します。 1. ヘッダファイルをクライアントコードにインクルードします。 #include "BannerInspectionDownloadLib.h" バナー・エンジニアリング・ジャパン 6 TEL:06-6309-0411 http://www.bannerengineering.co.jp P/N J20064Y ファイル転送ユーティリティー 2. BannerInspectionDownload.h ファイルがプロジェクトフォルダに ない場合、そのロケーションを追加のインクルードディレクトリと して追加します。 Visual C++6.0では、このオプションは「C++」タブのPreprocessor( プ リプロセッサ)カテゴリにあります。 Visual Studio.NETでは、このオプションはC++/General(C++/ 全般)ページにあります。 バナー・エンジニアリング・ジャパン TEL:06-6309-0411 http://www.bannerengineering.co.jp P/N J20064Y 7 Presence PLUS ® 3. BannerInspectionDownload.libライブラリにリンクします。 Visual C++6.0では、Link(リンク)タブのGeneral(全般)カテゴリ に あ る O b j e c t / l i b r a r y m o d u l e s( オ ブ ジ ェ ク ト / ラ イ ブ ラ リ モ ジュール)ボックスに追加します。 Visual Studio.NETでは、Linker/Input( リンカ/入力)ページの Additional Dependencies(追加の依存関係)ボックスに追加しま す。 バナー・エンジニアリング・ジャパン 8 TEL:06-6309-0411 http://www.bannerengineering.co.jp P/N J20064Y ファイル転送ユーティリティー 4. BannerInspectionDownload.libライブラリのロケーションを、追 加ライブラリディレクトリとして追加します。 Visual C++6.0では、このオプションはLink(リンク)タブのInput (入力)カテゴリにあります。 Visual Studio.NETでは、このオプションはLinker/General(リン カ/全般)ページにあります。 バナー・エンジニアリング・ジャパン TEL:06-6309-0411 http://www.bannerengineering.co.jp P/N J20064Y 9 Presence PLUS ® 4.1.2 エラーハンドリング ファイル転送APIの関数はどれも、成功・失敗を示すBOOLを返します。 関数がFALSEを返した場合、Windows関数のGetLastErrorを呼び出して、 エ ラ ー コ ー ド を 取 得 で き ま す 。 こ の エ ラ ー コ ー ド は 、 BannerInspectionDownloadLib.h ヘッダファイルに定義されたBannerエ ラーコードのいずれか、あるいは、ERROR̲FILE̲NOT̲FOUNDなどの Windowsの標準エラーコードです。 エラー発生源のいかんにかかわらず、WindowsのFormatMessage関数を 使用してエラーメッセージを取得できます。下記の関数は、 FormatMessageを使用してシステム、ファイル転送DLL、または WinInetライブラリ(これはファイル転送APIが内部的に使用)からエラー メッセージを取得する方法を説明したものです。この関数を使用するには、 エラーコードを dwMsgId パラメータとして渡します。すると、エラーメッ セージが pszBuffer パラメータで返されます。 UINT GetErrorMessage(DWORD dwMsgId, PTSTR pszBuffer, UINT cchBuffer) { HMODULE hDllModule; If (dwMsgId >= 12000 && dwMsgId <= 12174) // WinInet error hDllModule = GetModuleHandle(_T("WinInet.dll")); else hDllModule = GetModuleHandle(_T("BannerInspectionDownload.dll")); return FormatMessage( FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_FROM_SYSTEM, hDllModule, dwMsgId, LANG_NEUTRAL, pszBuffer, cchBuffer, NULL // Destination buffer // Character count of destination buffer // Insertion parameters ); } 4.1.3 サンプルアプリケーション ファイル転送APIインストールフォルダの samples/win32 サブフォルダに ある Win32Client.dsw Visual Studio C++6.0ワークスペースは、C++クラ イアントからの各API関数の呼び出し方、および発生したエラーの処理法 を具体的に説明するものです。 バナー・エンジニアリング・ジャパン 10 TEL:06-6309-0411 http://www.bannerengineering.co.jp P/N J20064Y ファイル転送ユーティリティー 4.2 COMでのファイル転送APIの使用 内容: ビルド環境のセットアップ エラーハンドリング サンプルアプリケーション 4.2.1 ビルド環境のセットアップ NOTE:このトピックでは、COMクライアントのビルドを簡略化するため にMicrosoft #importディレクティブを使用します。このディレ クティブをサポートしていないMicrosoft C++コンパイラ以外の コンパイラを使用している場合は、基本COM関数を使用する COMサーバーの使用方法に関する情報について、MSDNの文書を ご参照ください。 C++からファイル転送COMサーバーを使用するには、#importディレク ティブを使用して、定義済みインターフェイスを使用するクラスを自動的 に生成します。 #import "BannerInspectionDownload.dll" no_namespace このディレクティブは、ファイル転送インターフェイス用のスマートポイ ンタクラスを生成します。このインターフェイスは、範囲から逸脱すると Releaseをインターフェイスに自動的に呼び出します。ファイル転送 COMサーバーは、IBannerSensor、およびISensorInformationの2つの インターフェイスを定義します。IBannerSensorインターフェイスは、 各API関数のメソッド、およびセンサアドレスを格納するための SensorAddressプロパティを定義します。ISensorInformationイン ターフェイスは、SENSOR̲INFORMATION構造体のCOM変換です。い ずれかのインターフェイスのために生成されるスマートポインタクラスの 名前は、インターフェイス名に接尾辞として Ptr が付いた名前となりま す。 下記の例は、IBannerSensorインターフェイスを使用して(スマートポイ ンタクラスを通じて)、StartInspection関数を呼び出す方法を示したも のです。 #import "BannerInspectionDownload.dll" no_namespace … { _bstr_t sensorAddress = L"sensorHostName"; IBannerSensorPtr pSensor(__uuidof(BannerSensor)); pSensor->SensorAddress = sensorAddress; pSensor->StartInspection(2); } バナー・エンジニアリング・ジャパン TEL:06-6309-0411 http://www.bannerengineering.co.jp P/N J20064Y 11 Presence PLUS ® 4.2.2 エラーハンドリング ファイル転送APIのCOMメソッドは、失敗するとHRESULTを返して発生 したエラーについての情報を提供します。Banner固有のエラーHRESULTの値は、ErrorCodes目録に記載してあります。 ErrorSensorUnreachable ErrorSensorServer ErrorInvalidStorageLocation ErrorInsufficientStorage ErrorInvalidInspectionFile ErrorInvalidInspectionType ErrorInspectionExecuting ErrorNotTransferred ErrorInvalidInp ErrorInpConversion ErrorInsConversion あるメソッドから返されたHRESULTが、この目録の値のいずれかと一致 した場合には、ファイル転送COMサーバーのIErrorInfoインターフェイス に照会して、エラーについて詳細な情報を入手できます(エラーメッセー ジなど)。 NOTE:# i m p o r t デ ィ レ ク テ ィ ブ は 、 C + + 例 外 と し て ス ロ ー さ れ た ̲com̲errorクラスにエラーの詳細を埋め込んで、このプロセス を簡略化します。下記の例は、̲com̲errorをキャッチして、そ のHRESULTをエラーの説明(ある場合)と共に表示する例を示し たものです。 try { // call Banner Downloadable Inspections API functions through smart pointer... } Catch (_com_error e) { If (e.Description().length() > 0) _tprintf(_T("\nERROR %X: %s\n"), e.Error(), (LPTSTR)e.Description()); else _tprintf(_T("\nERROR %X: %s\n"), e.Error(), e.ErrorMessage()); } 4.2.3 サンプルアプリケーション ファイル転送APIインストールフォルダの samples/com サブフォルダにあ る ComClient.dsw Visual Studio C++6.0ワークスペースは、C++COMク ライアントからの各API関数の呼び出し方、および発生したエラーの処理 法を具体的に説明するものです。 バナー・エンジニアリング・ジャパン 12 TEL:06-6309-0411 http://www.bannerengineering.co.jp P/N J20064Y ファイル転送ユーティリティー 4.3 Visual Basicでのファイル転送APIの使用 内容: ビルド環境をセットアップします。 ハンドリングエラー サンプルアプリケーション 4.3.1 ビルド環境のセットアップ Visual Basicからファイル転送APIを使用するには、References(参照) ダイアログにある Banner Downloadable Inspections 1.0 Type Library に参照を追加します。 これで、ファイル転送APIメンバーをObject Browserで参照できるようにな ります。API関数がBannerSensorクラスのメソッドになっていること、お よびSENSOR̲INFORMATION構造体がVBに都合の良いSensorInformation クラスに変換されていることに注意してください。APIが生成できるエラー を記載したErrorCode目録もあります。 バナー・エンジニアリング・ジャパン TEL:06-6309-0411 http://www.bannerengineering.co.jp P/N J20064Y 13 Presence PLUS ® 4.3.2 エラーハンドリング ファイル転送APIメソッドのいずれかが失敗すると、Visual Basicの標準 エラーハンドリングプロシージャを使用してトラップできるエラーを生成 します。詳細なエラー情報は、Errオブジェクトにあります。下記の例は、 ファイル転送API使用時のエラー処理法を示したものです。 On Error GoTo ErrHandler Dim sensor As New BannerInspectionDownloadLib.BannerSensor sensor.SensorAddress = "sensorHostName" ' call Banner Downloadable Inspections API functions... Exit Sub ErrHandler: MsgBox Err.Description, vbOKOnly + vbCritical, Err.Number 4.3.3 サンプルアプリケーション ファイル転送APIインストールフォルダの samples/vb サブフォルダにある VbClient.vbp Visual Basic 6.0プロジェクトは、Visual Basicクライアン トからの各API関数の呼び出し方、および発生したエラーの処理法を具体 的に説明するものです。 バナー・エンジニアリング・ジャパン 14 TEL:06-6309-0411 http://www.bannerengineering.co.jp P/N J20064Y ファイル転送ユーティリティー 4.4 NETからのファイル転送APIの使用 内容: ビルド環境のセットアップ エラーハンドリング サンプルアプリケーション 4.4.1 ビルド環境のセットアップ NETからファイル転送APIを使用するには、Add Reference(参照の追加) ダイアログのCOMタブにあるBanner Downloadable Inspections 1.0 Type Libraryに参照を追加します。 これで、ファイル転送APIメンバーをObject Browserで参照できるように なります。API関数がBannerSensorClassクラスのメソッドになってい ること、およびSENSOR̲INFORMATION構造体が.NETに都合の良い SensorInformationClassクラスに変換されていることに注意してくださ い。APIが返したエラーコードのHRESULTを記載したErrorCode目録も あります。 バナー・エンジニアリング・ジャパン TEL:06-6309-0411 http://www.bannerengineering.co.jp P/N J20064Y 15 Presence PLUS ® 4.4.2 エラーハンドリング フ ァ イ ル 転 送 A P I メ ソ ッ ド の い ず れ か が 失 敗 す る と 、 標 準 の . N E T 例 外 を ス ロ ー し ま す 。 こ の 例 外 は 、 通 常 は System.Runtime.InteropServices.COMExceptionです。特定の Bannerエラーをフィルタリングするには、例外のHResultプロパティと BannerInspectionDownloadLib.ErrorCode目録の値のいずれかとを比 較します。可能な場合は常に、システムエラーは対応する標準の.NET例 外に自動的に変換されます。たとえば、検査ファイルが見つからない場合、 System.IO.FileNotFoundExceptionがスローされます。下記の例は、 ファイル転送API使用時のエラー処理法を示したものです。 Try { BannerSensor sensor = new BannerSensorClass(); sensor.SensorAddress = "sensorHostName"; // call Banner Downloadable Inspections API functions... } catch (Exception ex) { Console.WriteLine(ex.ToString()); } 4.4.3 サンプルアプリケーション ファイル転送APIインストールフォルダの samples/dotNet サブフォルダに ある DotNetClient.csproj Visual C#2003プロジェクトは、C#クライアン トからの各API関数の呼び出し方、および発生したエラーの処理法を具体 的に説明するものです。 4.5 APIアプリケーションの再配布 ファイル転送APIをアプリケーションに添付して再配布する際には、目的 とするシステムが要件を満たしていることを確認し、下記のインストール 手順に従ってください。 システム要件 ● Microsoft Windows versions 9x/NT 4.0以上 ● Microsoft Internet Explorer 4.0以上 インストール手順 1. BannerInspectionDownload.dll と msvcr71.dll(Microsoft Visual C 7.1 Runtime) ファイルを、アプリケーションディレクトリにコピーします。 2. 使 用 し て い る ア プ リ ケ ー シ ョ ン が 、 C O M イ ン タ ー フ ェ イ ス を 介 し て ファイル転送APIと接続している場合(これにはVisual Basicと.NETの クライアントアプリケーションも含まれます)、regsvr32ツールを使 用してDLLを登録する必要があります。 バナー・エンジニアリング・ジャパン 16 TEL:06-6309-0411 http://www.bannerengineering.co.jp P/N J20064Y ファイル転送ユーティリティー 5. 関数 5.1 GetInfo GetInfo関数は、センサおよび現在実行している検査についての情報を取 得します。 BOOL GetInfo( LPCSTR lpszSensorAddress, LPSENSOR_INFORMATION lpSensorInformation ); パラメータ lpszSensorAddress [in] センサのホスト名を指定する、NULL文字で終わる文字列のポインタ です。 あるいは、文字列にセンサのIP番号をASCIIドット付き10進記法で含める こともできます(例:11.0.1.45)。 lpSensorInformation [out] 見つかったファイルまたはサブディレクトリについての情報を受け 取るSENSOR̲INFORMATION構造体のポインタです。 戻り値 関数は正常に機能すると、TRUEを返します。 失敗すると、FALSEを返します。詳細なエラー情報を取得するには、 GetLastErrorを呼び出します。 例 GetInfoの最小限の使用方法を示すサンプルコードを下記に示します。 #include <iostream> #include <tchar.h> #include <windows.h> #include "BannerInspectionDownloadLib.h" int main(int argc, char *argv[]) { SENSOR_INFORMATION sensor; CHAR sensorName[128]; sensor.SensorName = sensorName; sensor.SensorNameLength = 128; CHAR firmwareVersion[128]; sensor.FirmwareVersion = firmwareVersion; sensor.FirmwareVersionLength = 128; CHAR currentInspectionFileName[128]; sensor.CurrentInspectionFileName = currentInspectionFileName; sensor.CurrentInspectionFileNameLength = 128; if (GetInfo(argv[1], &sensor)) { printf("GetInfo succeeded.\n\n"); printf("Sensor Name: %s\n", sensor.SensorName); printf("Firmware Version: %s\n", sensor.FirmwareVersion); printf("Current inspection filename: %s\n", sensor. CurrentInspectionFileName); printf("Current inspection location: %d\n", sensor. CurrentInspectionLocation); printf("System Error: %s\n", sensor.SystemError ? _T("TRUE"): バナー・エンジニアリング・ジャパン TEL:06-6309-0411 http://www.bannerengineering.co.jp P/N J20064Y 17 Presence PLUS ® _T("FALSE")); printf("GUI attached: %s\n", sensor.GuiAttached ? _T("TRUE"): _T("FALSE")); } Else printf("GetInfo failed! Error code = %d\n", GetLastError()); } 要求事項 Client Windows XP、Windows 2000 Professional、Windows NT Workstation 4.0、Windows Me、Windows 98、またはWindows 95 Server Windows Server 2003、Windows 2000 Server、またはWindows NT Server 4.0 Version Internet Explorer 4.0以降 Header BannerInspectionDownloadLib.hで宣言 Library BannerInspectionDownload.libにリンク DLL BannerInspectionDownload.dll Unicode ANSIバージョンで実装 関連情報 SENSOR̲INFORMATION 5.2 StartInspection StartInspection関数は、センサで新規検査を開始します。 BOOL StartInspection( LPCSTR lpszSensorAddress, STORAGE_LOCATION location ); パラメータ lpszSensorAddress [in] センサのホスト名を指定する、NULL文字で終わる文字列のポインタ です。 あるいは、文字列にセンサのIP番号をASCIIドット付き10進記法で含める こともできます(例:11.0.1.45)。 Location [in] 開始する検査のストレージロケーションです。RAMディスクにある検 査を開始するには、STORAGE̲LOCATION̲RAMDISK、またはゼロ(0) を使用します。 戻り値 関数は正常に機能すると、TRUEを返します。 失敗すると、FALSEを返します。詳細なエラー情報を取得するには、 GetLastErrorを呼び出します。 例 StartInspectionの最小限の使用方法を示すサンプルコードを下記に示し ます。 #include <iostream> #include <tchar.h> #include <windows.h> #include "BannerInspectionDownloadLib.h" int main(int argc, char *argv[]) { if (StartInspection(argv[1], 2)) { バナー・エンジニアリング・ジャパン 18 TEL:06-6309-0411 http://www.bannerengineering.co.jp P/N J20064Y ファイル転送ユーティリティー printf("Inspection in location 2 started.\n"); } else { printf("StartInspection failed! Error code = %d\n", GetLastError()); } } 要求事項 Client Windows XP、Windows 2000 Professional、Windows NT Workstation 4.0、Windows Me、Windows 98、またはWindows 95 Server Windows Server 2003、Windows 2000 Server、またはWindows NT Server 4.0 Version Internet Explorer 4.0以降 Header BannerInspectionDownloadLib.hで宣言 Library BannerInspectionDownload.libにリンク DLL BannerInspectionDownload.dll Unicode ANSIバージョンで実装 関連情報 GetInspection、SaveInspection、STORAGE̲LOCATION 5.3 GetInspection GetInspection関数は、センサから検査ファイルをダウンロードします。 BOOL GetInspection( LPCSTR lpszSensorAddress, STORAGE_LOCATION location, LPCSTR lpszFileName ); パラメータ lpszSensorAddress [in] センサのホスト名を指定する、NULL文字で終わる文字列のポインタ です。 あるいは、文字列にセンサのIP番号をASCIIドット付き10進記法で含める こともできます(例:11.0.1.45)。 Location [in] ダウンロードする検査ファイルを格納するストレージロケーションで す。RAMディスクに格納された検査ファイル(STORAGE̲LOCATION̲RAMDISK)は、ダウンロードできません。 lpszFileName [in] ダウンロードした検査ファイルの保存先となるファイル名とパスで す。 戻り値 関数は正常に機能すると、TRUEを返します。 失敗すると、FALSEを返します。詳細なエラー情報を取得するには、 GetLastErrorを呼び出します。 備考 センサに格納できるのは、.INS形式の検査ファイルのみです。 lpszFileNameの拡張子が.INPの場合、ダウンロードした検査ファイル は.INS形式から.INP形式に自動的に変換されます。 例 GetInspectionの最小限の使用方法を示すサンプルコードを下記に示しま す。 バナー・エンジニアリング・ジャパン TEL:06-6309-0411 http://www.bannerengineering.co.jp P/N J20064Y 19 Presence PLUS ® #include <iostream> #include <tchar.h> #include <windows.h> #include "BannerInspectionDownloadLib.h" int main(int argc, char *argv[]) { if (GetInspection(argv[1], 2, "C:\\inspection.ins")) { printf("Inspection in location 2 downloaded to C:\\inspection.ins.\n") ; } else { printf("GetInspection failed! Error code = %d\n", GetLastError()); } } 要求事項 Client Windows XP、Windows 2000 Professional、Windows NT Workstation 4.0、Windows Me、Windows 98、またはWindows 95 Server Windows Server 2003、Windows 2000 Server、またはWindows NT Server 4.0 Version Internet Explorer 4.0以降 Header BannerInspectionDownloadLib.hで宣言 Library BannerInspectionDownload.libにリンク DLL BannerInspectionDownload.dll Unicode ANSIバージョンで実装 関連情報 StartInspection、SaveInspection、STORAGE̲LOCATION 5.4 SaveInspection SaveInspection関数は、センサに検査ファイルをアップロードします。 BOOL SaveInspection( LPCSTR lpszSensorAddress, STORAGE_LOCATION location, LPCSTR lpszFileName ); パラメータ lpszSensorAddress [in] センサのホスト名を指定する、NULL文字で終わる文字列のポインタ です。 あるいは、文字列にセンサのIP番号をASCIIドット付き10進記法で含める こともできます(例:11.0.1.45)。 Location [in] 検査ファイルのアップロード先となるストレージロケーションです。 検 査 フ ァ イ ル を R A M デ ィ ス ク に ア ッ プ ロ ー ド す る に は 、 STORAGE̲LOCATION̲RAMDISK、またはゼロ(0)を使用します。 lpszFileName [in] センサにアップロードする検査ファイルのファイル名とパスです。 戻り値 関数は正常に機能すると、TRUEを返します。 失敗すると、FALSEを返します。詳細なエラー情報を取得するには、 GetLastErrorを呼び出します。 バナー・エンジニアリング・ジャパン 20 TEL:06-6309-0411 http://www.bannerengineering.co.jp P/N J20064Y ファイル転送ユーティリティー 備考 センサに格納できるのは、.INS形式の検査ファイルのみです。 lpszFileName の拡張子が.INPの場合、検査は.INP形式から.INS形式に自 動的に変換されてから、センサにアップロードされます。 例 SaveInspectionの最小限の使用方法を示すサンプルコードを下記に示し ます。 #include <iostream> #include <tchar.h> #include <windows.h> #include "BannerInspectionDownloadLib.h" int main(int argc, char *argv[]) { if (SaveInspection(argv[1], 2, "C:\\inspection.ins")) { printf("Inspection at C:\\inspection.ins uploaded to sensor in location 2.\n"); } else { printf("SaveInspection failed! Error code = %d\n", GetLastError()); } } 要求事項 Client Windows XP、Windows 2000 Professional、Windows NT Workstation 4.0、Windows Me、Windows 98、またはWindows 95 Server Windows Server 2003、Windows 2000 Server、またはWindows NT Server 4.0 Version Internet Explorer 4.0以降 Header BannerInspectionDownloadLib.hで宣言 Library BannerInspectionDownload.libにリンク DLL BannerInspectionDownload.dll Unicode ANSIバージョンで実装 関連情報 StartInspection、GetInspection、STORAGE̲LOCATION バナー・エンジニアリング・ジャパン TEL:06-6309-0411 http://www.bannerengineering.co.jp P/N J20064Y 21 Presence PLUS ® 6. ストラクチャー 6.1 SENSOR̲INFORMATION SENSOR̲INFORMATION構造体は、GetInfo関数で照会されたセンサに ついての情報を格納します。 typedef struct { LPSTR SensorName; DWORD SensorNameLength; LPSTR FirmwareVersion; DWORD FirmwareVersionLength; LPSTR CurrentInspectionFileName; DWORD CurrentInspectionFileNameLength; STORAGE_LOCATION CurrentInspectionLocation; BOOL SystemError; BOOL GuiAttached; } SENSOR_INFORMATION; typedef SENSOR_INFORMATION* LPSENSOR_INFORMATION; Members SensorName センサの名前 SensorNameLength SensorNameメンバーの長さ FirmwareVersion センサのファームウェアのバージョン FirmwareVersionLength FirmwareVersionメンバーの長さ CurrentInspectionFileName 現在実行中の検査ファイルのファイル名 CurrentInspectionFileNameLength CurrentInspectionFileNameメンバーの長さ CurrentInspectionLocation 現在実行中の検査ファイルのストレージロケーション。現在実行中の検査 ファイルがない場合は、このパラメータの値はSTORAGE̲LOCATION̲NONE(-1)となります。 SystemError センサにシステムエラーが発生しているかどうかを示します。 GuiAttached センサにGUIが接続しているかどうかを示します。 戻り値 関数は正常に機能すると、TRUEを返します。 失敗すると、FALSEを返します。詳細なエラー情報を取得するには、 GetLastErrorを呼び出します。 例 SENSOR̲INFORMATION構造体の使用例については、GetInfoのトピッ クをご参照ください バナー・エンジニアリング・ジャパン 22 TEL:06-6309-0411 http://www.bannerengineering.co.jp P/N J20064Y ファイル転送ユーティリティー 要求事項 Client Windows XP、Windows 2000 Professional、Windows NT Workstation 4.0、Windows Me、Windows 98、またはWindows 95 Server Windows Server 2003、Windows 2000 Server、またはWindows NT Server 4.0 Version Internet Explorer 4.0以降 Header BannerInspectionDownloadLib.hで宣言 Library BannerInspectionDownload.libにリンク DLL BannerInspectionDownload.dll Unicode ANSIバージョンで実装 関連情報 GetInfo、STORAGE̲LOCATION 6.2 データタイプ 下記の表は、ファイル転送APIで使用するカスタムタイプの定義を示した ものです。 項 説明 LPSENSOR̲INFORMATION SENSOR̲INFORMATION構造体のポインタです。 この型は下記のようにBannerInspectionDownloadLib.hで宣言します。 Typedof SENSOR_INFORMATION* LPSENSOR_INFORMATION; STRAGE̲LOCATION センサ内のストレージロケーションです。 この型は下記のようにBannerInspectionDownloadLib.hで宣言します。 Tyepedof LONG, STORAGE_LOCATION; バナー・エンジニアリング・ジャパン TEL:06-6309-0411 http://www.bannerengineering.co.jp P/N J20064Y 23 Presence PLUS ® 7. エラーコード 下表は、ファイル転送API固有のエラーコード一覧です。GetInfo、 StartInspection、GetInspection、またはSaveInspection関数が失敗 すると、GetLastError関数がこれらのエラーを返します。使用している アプリケーションにエラーメッセージを取得するには、Windowsの FormatMessage関数にFORMAT̲MESSAGE̲FROM̲HMODULEフラグ を付けて使用します。 定数/値 説明 BANNER̲ERROR̲SENSOR̲UNREACHABLE 0xE0000000 センササーバーに接続できません。 BANNER̲ERROR̲SENSOR̲SERVER 0xE0000001 センササーバーが予期しない応答を返しました。 BANNER̲ERROR̲INVALID̲LOCATOIN 0xE0000002 ロケーションパラメータが範囲外です。 BANNER̲ERROR̲INSUFFICIENT̲STRAGE 0xE0000003 検査ファイルに十分なストレージがセンサにありません。 BANNER̲ERROR̲INVALID̲INSPECTION̲FILE 0xE0000004 検査ファイルは有効な検査コンテナではありません。 BANNER̲ERROR̲INVALID̲INSPECTION̲TYPE 0xE0000005 検査ファイルの型がこのセンサには適合しません。 BANNER̲ERROR̲INSPECTION̲EXECUTING 0xE0000006 このロケーションにある検査は既に実行中です。 BANNER̲ERROR̲INSPECTION̲NOT̲TRANSFERRED 0xE0000007 検査ファイルをセンサに転送できませんでした。 BANNER̲ERROR̲INVALID̲INP 0xE0000008 検査ファイルは有効な.INPファイルではありません。 BANNER̲ERROR̲INP̲CONVERSION 0xE0000009 INPファイルの読み込み/書き出し時の変換エラーです。 BANNER̲ERROR̲INS̲CONVERSION 0xE000000A 一時.INPファイルの読み込み/書き出し時の変換エラーです。 保証:製品保証期間は1年と致します。当社の責任により不具合が発生した場合、保証 期間内にご返却頂きました製品については無償で修理または代替致します。ただし、お 客様によりダメージを受けた場合や、アプリケーションが適切でなく製品動作が不安定 な場合等は、保証範囲外とさせて頂きます。 ご注意:本製品および本書の内容については、改良のため予告なく変更することがあります。 Printed in Japan 07/06 J20064Y
© Copyright 2024 Paperzz