IMAGE(PCI/C-PCI) GPC-5520 カラー画像入力インタフェースモジュール用 Windows ドライバ Help for Windows www.interface.co.jp GPC-5520 Help for Windows 目 次 第 1 章 はじめに .................................................2 1.1 1.2 概要 ...........................................................................2 特長 ...........................................................................2 第 2 章 製品仕様 .................................................3 2.1 2.2 2.3 基本仕様 .......................................................................3 製品構成 .......................................................................5 x64 環境上の使用について ........................................................7 第 3 章 導入方法 .................................................9 3.1 3.2 3.3 3.4 インストール手順 ...............................................................9 実行手順 .......................................................................9 インタフェースモジュール固有情報 ..............................................27 クラスライブラリの参照方法 ....................................................33 第 4 章 リファレンス ............................................35 4.1 4.2 4.3 4.4 4.5 4.6 関数一覧 ......................................................................35 機能対応一覧 ..................................................................38 関数個別説明 ..................................................................41 構造体説明 ...................................................................467 戻り値一覧 ...................................................................519 動作仕様 .....................................................................521 第 5 章 サンプルプログラム .....................................564 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 5.11 5.12 5.13 5.14 5.15 ImgSmpl ......................................................................565 ImgBin .......................................................................566 ImgTrigger ...................................................................567 ImgSdram .....................................................................568 ImgPtn .......................................................................569 ImgContinuation ..............................................................570 ImgMeasure ...................................................................571 ImgLUT .......................................................................572 ImgFilter ....................................................................573 ImgDilationErosion ...........................................................574 ImgLbl .......................................................................575 ImgSaveAvi ...................................................................576 ImgCap .......................................................................577 ImgSprString .................................................................578 ImgSprDateTime ...............................................................578 第 6 章 ユーティリティ .........................................579 6.1 6.2 画像キャプチャユーティリティ .................................................579 自己診断プログラム ...........................................................593 第 7 章 重要な情報 .............................................595 © 2003, 2016 Interface Corporation. All rights reserved. 1 GPC-5520 Help for Windows 第1章 はじめに 1.1 概要 GPC-5520 は、Windows 上のアプリケーションから、弊社カラー画像入力インタフェースモジュ ール、および CardBus 画像入力カードを制御する為のソフトウェアです。 弊社カラー画像入力インタフェースモジュールを Windows 上のアプリケーションから DLL をダイ ナミックリンクし、API をコールすることにより制御します。 本ドキュメントは、Windows 上で GPC-5520 を使用するための情報を掲載しています。 1.2 特長 ●NTSC 規格のコンポジット信号をキャプチャすることができます。 ●PAL 規格のコンポジット信号をキャプチャすることができます。 ●外部ノイズ等のカメラとの同期が取れなくなった場合、自動的にキャプチャを停止して同期を 取り直して、キャプチャを再開します。(PCI/CTP/CPZ-550131,550135 のみ) ●RGB32,RGB24,RGB15,GRAY8 のデータフォーマット形式で画像を取り込むことができます。 ●バスマスタ DMA 転送により、入力画像をパソコンのメモリへダイレクトに取り込むことができ ます。 ●インタフェースモジュールに搭載した SDRAM へキャプチャした画像データを転送することがで きます。 ●キャプチャした画像データに対して、2 値化処理が行えます。 ●2 値化した画像データに対して、指定対象物の面積、重心値を求めることが可能です。 ●対象物体の面積値がしきい値内(もしくは外)になった場合、トリガを発生させる事が可能です。 ●対象物体の重心値が指定範囲内(もしくは外)になった場合、トリガを発生させる事が可能です。 ●ユーザが用意した比較用データからパターン一致検出が可能です。 ●ソフトによるチャンネル切り換えが可能です。 ●取り込んだ画像を簡単に表示できるキャプチャユーティリティが付属しています。 ●画面上で機能や使い方を説明する Help をサポートしていますので、開発中に関数の詳細説明な ど、簡単に参照することができます ●インタフェースモジュールの自己診断を行うプログラムが付属しています。 © 2003, 2016 Interface Corporation. All rights reserved. 2 GPC-4116 On-line Help for Windows 第2章 製品仕様 2.1 基本仕様 最大デバイス数 ビデオ・デコーダ 256 デバイス 映像入力信号 PCI/CPZ/CTP-55xx CBI/CSI/PEX/LPC-530x15 PCI-530111 PCI/CPZ/CTP-55013x PEX-530135 入力チャンネル数 PCI/CPZ/CTP-552x PCI/CPZ/CTP-550131 PCI-530111 PCI-550312 解像度 ビデオ・エンコーダ 映像出力信号 解像度 汎用入力点数 汎用出力点数 割り込み NTSC 規格準拠 PAL 規格準拠 1 チャンネル 3 チャンネル PCI/CPZ/CTP-553x 5 チャンネル PCI/CPZ/CTP-550135 CBI/CSI/PEX/LPC-530115 PEX-530135 PEX-H531322 2 チャンネル NTSC 信号 640×480、320×240、160×120 PAL 信号 768×572、384×286、192×143 CameraLink 640×480 PCI/CPZ/CTP-55xx NTSC 規格準拠 CBI/CSI/PEX/LPC-530x15 PCI/CPZ/CTP-55013x PAL 規格準拠 PEX-530135 NTSC 信号 640×480、RGB24bit PAL 信号 768×572、RGB24bit 8 点(IN8~IN1) ※PEX-H531322 は 16 点(IN16~IN1) PCI/CTP/CPZ-55xx 6 点(OUT6~OUT1) PCI/CTP/CPZ-55013x 6 点(OUT6~OUT1) CBI-530x15(Tx) 8 点(OUT8~OUT1) CSI-530x15 8 点(OUT8~OUT1) PEX/LPC-530x15 8 点(OUT8~OUT1) PCI-530111 8 点(OUT8~OUT1) PCI-550231 8 点(OUT8~OUT1) ※PEX-H531322 16 点(OUT16~OUT1) 汎用入力(IN8~IN1) フレーム転送完了 © 2002 Interface Corporation. All rights reserved. 3 GPC-5520 Help for Windows 面積トリガ 重心トリガ 面積 AND 重心トリガ パターン一致検出 同期ズレ発生 © 2003, 2016 Interface Corporation. All rights reserved. 4 GPC-5520 Help for Windows 2.2 製品構成 製品構成 弊社管理用ファイル 最新情報ドキュメント インストールプログラム キャプチャプログラム 自己診断プログラム サンプルプログラム Visual C++ 6.0 Visual Basic 6.0 Delphi 5/6/7 Studio ファイル名 GPC5520.ver Readme.htm Setup.exe ImgCapture.exe ImgDiag.exe 説明 弊社ソフト管理用ファイル 最新ドキュメント掲載ファイル インストール用ファイル インタフェースモジュール動作確認用プログラム インタフェースモジュール自己診断プログラム ImgCap ImgSmpl ImgBin ImgTrigger ImgSdram ImgPtn ImgContinuation ImgMeasure ImgLut ImgFilter ImgDilationErosion ImgLbl ImgSaveAvi ImgSprString ImgSprDateTime ImgCap ImgSmpl ImgBin ImgTrigger ImgSdram ImgPtn ImgContinuation ImgMeasure ImgLut ImgFilter ImgDilationErosion ImgLbl ImgSprString ImgSprDateTime ImgSmpl ImgBin ImgTrigger ImgSdram ImgPtn ImgContinuation ImgMeasure ImgLut ImgFilter ImgDilationErosion ImgLbl キャプチャサンプルプログラム(マニュアル記載プログラム) 1 フレームキャプチャサンプルプログラム 2 値化サンプルプログラム 面積、重心一致トリガサンプルプログラム SDRAM キャプチャサンプルプログラム パターン一致サンプルプログラム 連続フレーム取込みサンプルプログラム 2 値画像処理サンプルプログラム 階調変換処理サンプルプログラム フィルタ処理サンプルプログラム 膨張・収縮処理サンプルプログラム ラベリング処理サンプルプログラム 動画(Avi 形式)ファイルを保存するサンプルプログラム 文字列をスーパーインポーズするサンプルプログラム 日時時間をスーパーインポーズするサンプルプログラム キャプチャサンプルプログラム(マニュアル記載プログラム) 1 フレームキャプチャサンプルプログラム 2 値化サンプルプログラム 面積、重心一致トリガサンプルプログラム SDRAM キャプチャサンプルプログラム パターン一致サンプルプログラム 連続フレーム取込みサンプルプログラム 2 値画像処理サンプルプログラム 階調変換処理サンプルプログラム フィルタ処理サンプルプログラム 膨張・収縮処理サンプルプログラム ラベリング処理サンプルプログラム 文字列をスーパーインポーズするサンプルプログラム 日時時間をスーパーインポーズするサンプルプログラム 1 フレームキャプチャサンプルプログラム 2 値化サンプルプログラム 面積、重心一致トリガサンプルプログラム SDRAM キャプチャサンプルプログラム パターン一致サンプルプログラム 連続フレーム取込みサンプルプログラム 2 値画像処理サンプルプログラム 階調変換処理サンプルプログラム フィルタ処理サンプルプログラム 膨張・収縮処理サンプルプログラム ラベリング処理サンプルプログラム © 2003, 2016 Interface Corporation. All rights reserved. 5 GPC-5520 Help for Windows 製品構成 Visual C# .NET Visual Basic .NET Delphi .NET DLL デバイスドライバ ファイル名 ImgSmpl ImgSprString ImgSprDateTime ImgSmpl ImgSprString ImgSprDateTime ImgSmpl IfImg.dll IfImg.lib IfSaveFile.dll IfSaveFile.lib CP552x.sys CP553x.sys CP530x15.sys 説明 バスマスタ キャプチャサンプルプログラム 文字列をスーパーインポーズするサンプルプログラム 日時時間をスーパーインポーズするサンプルプログラム バスマスタ キャプチャサンプルプログラム 文字列をスーパーインポーズするサンプルプログラム 日時時間をスーパーインポーズするサンプルプログラム バスマスタ キャプチャサンプルプログラム ダイナミックリンクライブラリファイル インポートライブラリファイル(Visual C++用) ダイナミックリンクライブラリファイル インポートライブラリファイル(Visual C++用) Windows 2000 以降の OS 用ドライバ CP530135.sys inf ファイル GPC552x.inf Windows 2000 以降の OS 用ドライバインストールファイル GPC553x.inf GPC530x15.inf GPC530135.inf SLD ファイル ヘッダファイル Help GPC552x.SLD GPC553x.SLD GPC530x15.SLD GPC530135.SLD IfImg.h IfImg.bas IfImg.pas IfSaveFile.h IfSaveFile.bas IfSaveFile.pas Help.pdf Help_NET.pdf Windows Embedded 用ドライバ SLD ファイル Visual C++ 用ヘッダファイル Visual Basic 用ヘッダファイル Delphi 用ヘッダファイル Visual C++ 用ヘッダファイル Visual Basic 用ヘッダファイル Delphi 用ヘッダファイル Help(PDF 形式) .NET 用補足 Help ※Visual C# .NET,Visual Basic.NET 用サンプルプログラムは、それぞれ Viausl C# .NET 2003, Visual Basic .NET 2003 を使用して作成しています。 ※Delphi .NET 用サンプルプログラムは、Delphi 8 for the Microsoft .NET Framework を使用し て作成しています。 © 2003, 2016 Interface Corporation. All rights reserved. 6 GPC-5520 Help for Windows 2.3 x64 環境上の使用について メインメモリの操作 x64 環境では、ユーザアプリケーション上で確保したメインメモリ領域に対して DMA 転送する 事ができません。 弊社 Windows ドライバは、OS が起動してドライバがロードされるタイミングで、連続した物理 メモリをカーネル内で確保し、確保したメモリ領域に DMA 転送を行います。確保するデータサイ ズは 256MB 分 (※ Windows Xp/Server2003 の場合は約 32MB)で、確保する場所は 32bit 空間内と なります。 ドライバは、ユーザアプリケーション側で ImgSetBuffer 関数を介して要求を受けると、指定サ イズ分の物理メモリを論理空間へマッピングして、ユーザアプリ上でメモリアクセス可能にしま す。ImgGetMemPtrValue 関数で論理メモリの先頭アドレスをポインタ変数として取得し、画像デ ータをポインタ操作で使用する事ができます。 ユーザアプリケーション ポインタ変数 論理メモリ ユーザ空間 カーネル空間 論理メモリへマッピング 0xFFFFFFFF_FFFFFFFF 0x00000000_FFFFFFFF 256MB 分確保 0x00000000_00000000 物理メモリ空間 ※PEX-H531322 は 2ch 分の物理メモリをそれぞれ割り当てています。 © 2003, 2016 Interface Corporation. All rights reserved. 7 GPC-5520 Help for Windows 物理メモリの確保結果の確認 OS 起動時に物理メモリを確保しますが、確保結果はイベントログとして保存されています。イ ベントビューアの「システム」にドライバファイルと同じソース名でログとして情報を残してい ます。 物理メモリの確保に成功すると、説明欄に「ドライバファイル -- It succeeded in allocating a physical memory.」と記載されます。確保に失敗すると「ドライバファイル -- It failed in the allocation of a physical memory.」と記載されます。 物理メモリの確保サイズの変更 OS 起動時に物理メモリを確保するサイズを変更する事も可能です。 サイズの変更は、キャプチャユーティリティ(ImgCapture.exe)で行う事ができます。 詳細は、「6.1 画像キャプチャユーティリティ」の「12. 画面説明(物理メモリ設定)」を参照してく ださい。 © 2003, 2016 Interface Corporation. All rights reserved. 8 GPC-5520 Help for Windows 第3章 導入方法 3.1 インストール手順 README.HTM のインストール方法を参照してください。 3.2 実行手順 同一型式のインタフェースモジュールを複数枚使用する場合は、インタフェースモジュール上の ロータリスイッチ RSW1,RSW2 の設定値が同一型式同士で重複しないように設定してからシステム に実装してください。 同一型式で複数のインタフェースモジュールが存在する場合、インタフェースモジュールを一意 に識別するための番号となります。重複していた場合、本ソフトウェアは正常に動作いたしませ ん。 以下に基本的な実行手順の流れを説明します。 PEX-H531322 をご使用になる場合は、本章と「4.6 動作仕様」の「■PEX-H531322 の制御方法」 の内容も参照してください。 © 2003, 2016 Interface Corporation. All rights reserved. 9 GPC-5520 Help for Windows キャプチャ(バスマスタ) 1.初期化 インタフェースモジュールを ImgOpen 関数で初期化します。 初期化が正常終了すると、以後、インタフェースモジュールへのアクセスが可能となります。 2.接続カメラ設定(PEX-H531322 の場合) ImgSetCLCaptureConfig 関数で、接続する CameraLink カメラの設定を行います。接続する CameraLink カメラが PoCL 規格の場合、ImgOutputPower 関数でカメラへの電源を供給します。 3.キャプチャ準備 ImgSetBuffer 関数(Visual Basic の場合は ImgSetBufferVB 関数)で画像データを転送するメイ ンメモリの設定を行います。設定を行わないと ImgStartCapture 関数実行時にエラーとなりま す。 ■x86 環境の場合 ア プ リ ケ ー シ ョ ン に て バ ッ フ ァ ( メ モ リ 領 域 ) を 用 意 し 、 ImgSetBuffer 関 数 ( ま た ImgSetBufferVB 関数)へ渡す IMGBUFFERINFO 構造体の pBufferAddress 変数には先頭アドレ スを、dwBufferSize 変数にはバッファのサイズを指定してください。 ■x64 環境の場合 アプリケーション上のバッファでなく、ドライバ内で確保したメモリを使用します。 ImgSetBuffer 関 数 ( ま た ImgSetBufferVB 関 数 ) へ 渡 す IMGBUFFERINFO 構 造 体 の pBufferAddress 変数には-1 を、dwBufferSize 変数には確保したいサイズを指定します。 ImgSetBuffer 関数成功後、ImgGetMemPtrValue 関数によりメモリの先頭アドレスをポインタ 変数として取得できます。 4.キャプチャ開始 ImgStartCapture 関数の引数 dwStartMode に IFIMG_DMACAPTURE_START を指定して、キャプチャ を開始します。 ImgStartCapture 関数の引数 dwFrameCnt には、キャプチャするフレームの数を指定してくださ い。 映像入力機器より取り込んだデータを、ImgSetBuffer 関数で設定したバッファ領域へバスマス タ転送します。 dwFrameCnt に 0 を指定した場合、ImgStopCapture 関数を実行するまでキャプチャします。 5.キャプチャ停止 ImgStartCapture 関数の引数 dwFrameCnt に 0 を指定した場合、ImgStopCapture 関数でキャプチ ャの停止を実行します。 dwFrameCnt を 0 以上に設定した場合は、設定値のフレーム数をキャプチャした後、自動停止し ます。 © 2003, 2016 Interface Corporation. All rights reserved. 10 GPC-5520 Help for Windows 6.キャプチャ終了の監視 ImgGetCaptureStatus 関数でキャプチャ状態を定期的に監視します。ImgGetCaptureStatus 関数 で取得した IMGCAPSTATUS 構造体のメンバ引数 dwCapture 変数の bit0 が 0 になるまで監視しま す。 bit0 が 0 になったとき、キャプチャが終了したと判断します。 また、IMGCAPSTATUS 構造体のメンバ変数 dwFrameCnt で、転送完了したフレーム数を取得でき るので、ImgStartCapture 関数で指定した転送フレーム数と比較する方法もあります。 7.キャプチャデータ取得 キャプチャデータは、ImgSetBuffer 関数にて設定したメモリ領域にバスマスタ転送されます。 キャプチャーデータは、最初奇数フィールドのデータが転送され、奇数フィールドのデータが 全て転送後、偶数フィールドのデータが転送されます。 8.描画、画像処理 取得したキャプチャデータを元に、画像処理、描画等を行います。 9.終了処理 ImgClose 関数でデバイスの終了処理を行います。アプリケーションでは、必ずクローズ処理を 行ってから終了してください。 © 2003, 2016 Interface Corporation. All rights reserved. 11 GPC-5520 Help for Windows キャプチャ(バスマスタ、割り込み使用時) 1.初期化 インタフェースモジュールを ImgOpen 関数で初期化します。 初期化が正常終了すると、以後、インタフェースモジュールへのアクセスが可能となります。 2.接続カメラ設定(PEX-H531322 の場合) ImgSetCLCaptureConfig 関数で、接続する CameraLink カメラの設定を行います。接続する CameraLink カメラが PoCL 規格の場合、ImgOutputPower 関数でカメラへの電源を供給します。 3.キャプチャ準備 ImgSetBuffer 関数(Visual Basic の場合は ImgSetBufferVB 関数)で画像データを転送するメイ ンメモリの設定を行います。設定を行わないと ImgStartCapture 関数実行時にエラーとなりま す。 ■x86 環境の場合 ア プ リ ケ ー シ ョ ン に て バ ッ フ ァ ( メ モ リ 領 域 ) を 用 意 し 、 ImgSetBuffer 関 数 ( ま た ImgSetBufferVB 関数)へ渡す IMGBUFFERINFO 構造体の pBufferAddress 変数には先頭アドレ スを、dwBufferSize 変数にはバッファのサイズを指定してください。 ■x64 環境の場合 アプリケーション上のバッファでなく、ドライバ内で確保したメモリを使用します。 ImgSetBuffer 関 数 ( ま た ImgSetBufferVB 関 数 ) へ 渡 す IMGBUFFERINFO 構 造 体 の pBufferAddress 変数には-1 を、dwBufferSize 変数には確保したいサイズを指定します。 ImgSetBuffer 関数成功後、ImgGetMemPtrValue 関数によりメモリの先頭アドレスをポインタ 変数として取得できます。 4.割り込み設定 ImgSetEventMask 関数と ImgSetEvent 関数で割り込み設定を行います。 IMGEVENTTABLE 構造体のメンバ変数 dwFrame の bit0 を 1 にして、1 フレーム毎転送完了割り込 みをアンマスクします。ImgSetEventMask 関数に IMGEVENTTABLE 構造体変数を渡します。 ImgSetEvent 関数で割り込みイベントを設定します。 5.キャプチャ開始 ImgStartCapture 関数の引数 dwStartMode に IFIMG_DMACAPTURE_START を指定して、キャプチャ を開始します。 ImgStartCapture 関数の引数 dwFrameCnt には、キャプチャするフレームの数を指定してくださ い。 映像入力機器より取り込んだデータを、ImgSetBuffer 関数で設定したバッファ領域へバスマス タ転送します。 dwFrameCnt に 0 を指定した場合、ImgStopCapture 関数を実行するまでキャプチャします。 © 2003, 2016 Interface Corporation. All rights reserved. 12 GPC-5520 Help for Windows 6.割り込みイベント発生 1 フレーム転送完了毎に割り込みイベントが発生します。 ImgGetCaptureStatus 関数でキャプチャ完了フレーム数を確認することが可能です。 キャプチャデータは、ImgSetBuffer 関数にて設定したメモリ領域にバスマスタ転送されます。 取得したキャプチャデータを元に、画像処理、描画等を行います。 ※画像処理、描画処理に約 33ms 以上の時間を費やす場合、次のフレーム転送完了割り込みイベ ントを取りこぼす可能性がありますので、ご注意ください。 7.キャプチャ終了の監視 ImgGetCaptureStatus 関数でキャプチャ状態を定期的に監視します。ImgGetCaptureStatus 関数 で取得した IMGCAPSTATUS 構造体のメンバ変数 dwCapture の bit0 が 0 になるまで監視します。 bit0 が 0 になったとき、キャプチャが終了したと判断します。 また、IMGCAPSTATUS 構造体のメンバ変数 dwFrameCnt で、転送完了したフレーム数を取得でき るので、ImgStartCapture 関数で指定した転送フレーム数と比較する方法もあります。 8.キャプチャ停止 ImgStartCapture 関数の引数 dwFrameCnt に 0 を指定した場合、ImgStopCapture 関数でキャプチ ャの停止を実行します。 9.終了処理 割り込みイベントを利用している場合は、ImgSetEventMask 関数で全ての割り込みをマスクし ます。 ImgClose 関数でデバイスの終了処理を行います。アプリケーションでは、必ずクローズ処理を 行ってから終了してください。 © 2003, 2016 Interface Corporation. All rights reserved. 13 GPC-5520 Help for Windows キャプチャ(SDRAM) 1.初期化 インタフェースモジュールを ImgOpen 関数で初期化します。 初期化が正常終了すると、以後、インタフェースモジュールへのアクセスが可能となります。 2.キャプチャ準備 ImgAllocateSDRAM 関数にて SDRAM 領域を確保し、ImgSetSDRAM 関数でキャプチャする SDRAM 領 域を指定してください。 SDRAM 領域を指定していない場合、ImgStartCapture 関数実行時にエラーとなります。 3.キャプチャ開始 ImgStartCapture 関数の引数 dwStartMode に IFIMG_SDRAMCAPTURE_START を指定して、キャプチ ャを開始します。 ImgStartCapture 関数の引数 dwFrameCnt には、キャプチャするフレームの数を指定してくださ い。 映像入力機器より取り込んだデータを、ImgSetSDRAM 関数で設定した SDRAM 領域へ転送します。 dwFrameCnt に 0 を指定した場合、ImgStopCapture 関数を実行するまでキャプチャします。 4.キャプチャ停止 ImgStartCapture 関数の引数 dwFrameCnt に 0 を指定した場合、ImgStopCapture 関数でキャプチ ャの停止を実行します。 dwFrameCnt を 0 以上に設定した場合は、設定値分のフレーム数をキャプチャした後、自動停止 します。 5.キャプチャ終了の監視 ImgGetCaptureStatusEx 関数でキャプチャ状態を定期的に監視します。ImgGetCaptureStatusEx 関数で取得した IMGCAPSTATUSEX 構造体のメンバ引数 dwCapture 変数の bit3 が 0 になるまで監 視します。 bit3 が 0 になったとき、SDRAM によるキャプチャが終了したと判断します。 また、IMGCAPSTATUSEX 構造体のメンバ変数 dwFrameCntSDRAM で、転送完了したフレーム数を取 得できるので、ImgStartCapture 関数で指定した転送フレーム数と比較する方法もあります。 6.キャプチャデータ取得 キャプチャデータは、ImgSetSDRAM 関数にて設定した SDRAM 領域に転送されます。 SDRAM 領域に転送されたキャプチャデータは、ImgReadCaptureData 関数を使用して取得します。 キャプチャーデータは、最初奇数フィールドのデータが転送され、奇数フィールドのデータが 全て転送後、偶数フィールドのデータが転送されます。 7.描画、画像処理 取得したキャプチャデータを元に、画像処理、描画等を行います。 8.終了処理 キャプチャのために用意した SDRAM 領域を、ImgFreeSDRAM 関数で開放します。 ImgClose 関数でデバイスの終了処理を行います。アプリケーションでは、必ずクローズ処理を 行ってから終了してください。 © 2003, 2016 Interface Corporation. All rights reserved. 14 GPC-5520 Help for Windows キャプチャ(SDRAM、割り込み使用時) 1.初期化 インタフェースモジュールを ImgOpen 関数で初期化します。 初期化が正常終了すると、以後、インタフェースモジュールへのアクセスが可能となります。 2.キャプチャ準備 ImgAllocateSDRAM 関数にて SDRAM 領域を確保し、ImgSetSDRAM 関数でキャプチャする SDRAM 領 域を指定してください。 SDRAM 流域を指定していない場合、ImgStartCapture 関数実行時にエラーとなります。 3.割り込み設定 ImgSetEventMask 関数と ImgSetEventEx 関数で割り込み設定を行います。 IMGEVENTTABLE 構造体のメンバ変数 dwFrame の bit1 を 1 にして、SDRAM キャプチャによる 1 フ レーム毎転送完了割り込みをアンマスクします。ImgSetEventMask 関数に IMGEVENTTABLE 構造 体変数を渡します。 ImgSetEventEx 関数で割り込みイベントを設定します。 4.キャプチャ開始 ImgStartCapture 関数の引数 dwStartMode に IFIMG_SDRAMCAPTURE_START を指定して、キャプチ ャを開始します。 ImgStartCapture 関数の引数 dwFrameCnt には、キャプチャするフレームの数を指定してくださ い。 映像入力機器より取り込んだデータを、ImgSetSDRAM 関数で設定した SDRAM 領域へ転送します。 dwFrameCnt に 0 を指定した場合、ImgStopCapture 関数を実行するまでキャプチャします。 5.割り込みイベント発生 1 フレーム転送完了毎に割り込みイベントが発生します。 ImgGetCaptureStatusEx 関数でキャプチャ完了フレーム数を確認することが可能です。 キャプチャデータは、ImgSetSDRAM 関数にて設定した SDRAM 領域に転送されます。 SDRAM 領域に転送されたキャプチャデータは、ImgReadCaptureData 関数を使用して取得します。 取得したキャプチャデータを元に、画像処理、描画等を行います。 ※画像処理、描画処理に約 33ms 以上の時間を費やす場合、次のフレーム転送完了割り込みイベ ントを取りこぼす可能性がありますので、ご注意ください。 6.キャプチャ終了の監視 ImgGetCaptureStautsEx 関数でキャプチャ状態を定期的に監視します。ImgGetCaptureStatusEx 関数で取得した IMGCAPSTATUSEX 構造体のメンバ変数 dwCapture の bit3 が 0 になるまで監視し ます。 bit3 が 0 になったとき、キャプチャが終了したと判断します。 また、IMGCAPSTATUSEX 構造体のメンバ変数 dwFrameCntSDRAM で、転送完了したフレーム数を取 得できるので、ImgStartCapture 関数で指定した転送フレーム数と比較する方法もあります。 7.キャプチャ停止 ImgStartCapture 関数の引数 dwFrameCnt に 0 を指定した場合、ImgStopCapture 関数でキャプチ ャの停止を実行します。 © 2003, 2016 Interface Corporation. All rights reserved. 15 GPC-5520 Help for Windows 8.終了処理 割り込みイベントを利用している場合は、ImgSetEventMask 関数で全ての割り込みをマスクし ます。 キャプチャのために用意した SDRAM 領域を、ImgFreeSDRAM 関数で開放します。 ImgClose 関数でデバイスの終了処理を行います。アプリケーションでは、必ずクローズ処理を 行ってから終了してください。 2 値化画像の取り込み 1.初期化 インタフェースモジュールを ImgOpen 関数で初期化します。 初期化が正常終了すると、以後、インタフェースモジュールへのアクセスが可能となります。 2.2 値化処理の設定 ImgSetBinarizationConfig 関数にて、2 値化処理設定を行います。 3.キャプチャ準備~キャプチャ開始~キャプチャ終了 前述の「キャプチャ(バスマスタ)」に記載している手順と同様の処理を行ってください。 4.描画、画像処理 取得したキャプチャデータを元に、画像処理、描画等を行います。 5.終了処理 ImgClose 関数でデバイスの終了処理を行います。アプリケーションでは、必ずクローズ処理を 行ってから終了してください。 指定対象物の面積値、重心値の取得(5522,5532,5523,5533) 1.初期化 インタフェースモジュールを ImgOpen 関数で初期化します。 初期化が正常終了すると、以後、インタフェースモジュールへのアクセスが可能となります。 2.2 値化処理の設定 ImgSetBinarizationConfig 関数にて、2 値化処理設定を行います。 3.測定範囲の設定 ImgSetMeasurementRange 関数でフレーム内における測定範囲を指定します。 4.面積値、重心値の取得 ImgGetMeasurementValue 関数で面積値、重心値を取得します。 5.終了処理 ImgClose 関数でデバイスの終了処理を行います。アプリケーションでは、必ずクローズ処理を 行ってから終了してください。 © 2003, 2016 Interface Corporation. All rights reserved. 16 GPC-5520 Help for Windows トリガ発生条件の設定とトリガ検知 1.初期化 インタフェースモジュールを ImgOpen 関数で初期化します。 初期化が正常終了すると、以後、インタフェースモジュールへのアクセスが可能となります。 2.2 値化処理の設定 ImgSetBinarizationConfig 関数にて、2 値化処理設定を行います。 3.測定範囲の設定 ImgSetMeasurementRange 関数でフレーム内における測定範囲を指定します。 4.トリガ発生条件を指定 ImgSetTriggerConfig 関数で面積トリガ、重心トリガ、面積 AND 重心トリガの発生の有無と発 生条件を設定します。 5.割り込み設定 割り込みイベントを利用してトリガ検知したい場合は、ImgSetEventMask 関数と ImgSetEvent 関数で割り込み設定を行います。 IMGEVENTTABLE 構造体のメンバ変数 dwTrigger で割り込み検知したいトリガ割り込みをアンマ スクします。ImgSetEventMask 関数に IMGEVENTTABLE 構造体変数を渡します。 ImgSetEvent 関数で割り込みイベントを指定します。 6.トリガ検知 ImgGetCaptureStatus 関数でトリガ状態を定期的に監視します。IMGCAPSTATUS 構造体のメンバ 引数 dwTrigger でトリガ状態を知ることが可能です。 7.トリガ検知(割り込み設定時) トリガ条件を満たした時に、割り込みイベントが通知されます。 ImgGetCaptureStatus 関数で、どのトリガが発生したか知ることが可能です。 割り込みイベント通知が必要ない場合は、ImgSetEventMask 関数でトリガ割り込みをマスクし てください。 8.終了処理 割り込みイベントを利用している場合は、ImgSetEventMask 関数で全ての割り込みをマスクし ます。 ImgClose 関数でデバイスの終了処理を行います。アプリケーションでは、必ずクローズ処理を 行ってから終了してください。 © 2003, 2016 Interface Corporation. All rights reserved. 17 GPC-5520 Help for Windows パターン一致 1.初期化 インタフェースモジュールを ImgOpen 関数で初期化します。 初期化が正常終了すると、以後、インタフェースモジュールへのアクセスが可能となります。 2.2 値化処理の設定 ImgSetBinarizationConfig 関数にて、2 値化処理設定を行います。 3.比較データの設定 ImgAllocateSDARAM 関数にて SDRAM 領域を確保し、ImgWriteComparisonData 関数で比較データ を SDRAM 領域に書き込みます。 4.比較条件を指定 ImgSetConparisonConfig 関数で比較エリアの自動補正機能、比較開始 X 座標、比較開始 Y 座標、 比較データとの一致率、パターン一致トリガの発生条件を設定します。 5.割り込み設定 割り込みイベントを利用してトリガ検知したい場合は、ImgSetEventMask関数と ImgSetEventEx 関数で割り込み設定を行います。 IMGEVENTTABLE 構造体のメンバ変数 dwTrigger の bit3 を 1 にして、パターン一致割り込みをア ンマスクします。ImgSetEventMask 関数に IMGEVENTTABLE 構造体変数を渡します。 ImgSetEventEx 関数で割り込みイベントを指定します。 6.トリガ検知 ImgGetCaptureStatusEx 関数でトリガ状態を定期的に監視します。IMGCAPSTATUSEX 構造体のメ ンバ引数 dwTrigger の bit4 でパターン一致トリガの発生状態を知ることが可能です。 7.トリガ検知(割り込み設定時) パターン一致トリガが発生した時に、割り込みイベントが通知されます。 ImgGetCaptureStatusEx 関数で、パターン一致トリガの発生を知ることが可能です。 割り込みイベント通知が必要ない場合は、ImgSetEventMask 関数でトリガ割り込みをマスクし てください。 8.終了処理 割り込みイベントを利用している場合は、ImgSetEventMask 関数で全ての割り込みをマスクし ます。 比較データのために用意した SDRAM 領域を、ImgFreeSDRAM 関数で開放します。 ImgClose 関数でデバイスの終了処理を行います。アプリケーションでは、必ずクローズ処理を 行ってから終了してください。 © 2003, 2016 Interface Corporation. All rights reserved. 18 GPC-5520 Help for Windows 指定対象物の面積値、重心値、フェレ径、傾き角の取得 55x4 系,55x5 系,55x6 系,PEX-H531322 専用です。 1.初期化 インタフェースモジュールを ImgOpen 関数で初期化します。 初期化が正常終了すると、以後、インタフェースモジュールへのアクセスが可能となります。 2.2 値化処理の設定 ImgSetBinarizationConfig 関数にて、2 値化処理設定を行います。 3.測定範囲の設定 ImgSetMeasurementRange 関数でフレーム内における測定範囲を指定します。 4.面積値、重心値、フェレ径、慣性等価楕円の傾き角 ImgGetMeasurementValueEx 関数で面積値、重心値、フェレ径、慣性等価楕円の傾き角を取得し ます。 5.終了処理 ImgClose 関数でデバイスの終了処理を行います。アプリケーションでは、必ずクローズ処理を 行ってから終了してください。 取込み画像の濃度分布の取得 (5524,5525,5526,5534,5535,5536,PEX-H531322 専用) 1.初期化 インタフェースモジュールを ImgOpen 関数で初期化します。 初期化が正常終了すると、以後、インタフェースモジュールへのアクセスが可能となります。 2.対象色成分の指定 ImgSetColorIngredient 関数で、色成分を指定します。 3.転送領域の指定 ア プ リ ケ ー シ ョ ン に て バ ッ フ ァ ( メ モ リ 領 域 ) を 用 意 し 、 ImgSetBuffer 関 数 ( ま た は ImgSetBufferVB 関数)でその領域の先頭アドレスとバッファサイズを設定してください。 バッファを設定していない場合、ImgStartCapture 関数実行時にエラーとなります。 4.バスマスタ転送開始 ImgStartCapture 関数の引数 dwStartMode に IFIMG_DMACAPTURE_START を指定して、キャプチャ を開始します。 濃度分布データは、ImgSetBuffer 関数にて設定したメモリ領域にバスマスタ転送されます。 5.終了処理 ImgClose 関数でデバイスの終了処理を行います。アプリケーションでは、必ずクローズ処理を 行ってから終了してください。 © 2003, 2016 Interface Corporation. All rights reserved. 19 GPC-5520 Help for Windows 指定対象物の射影データの取得 (5524,5525,5526,5534,5535,5536,PEX-H531322 専用) 1.初期化 インタフェースモジュールを ImgOpen 関数で初期化します。 初期化が正常終了すると、以後、インタフェースモジュールへのアクセスが可能となります。 2.2 値化処理の設定 ImgSetBinarizationConfig 関数にて、2 値化処理設定を行います。 3.測定範囲の設定 ImgSetMeasurementRange 関数でフレーム内における測定範囲を指定します。 4.転送領域の指定 ア プ リ ケ ー シ ョ ン に て バ ッ フ ァ ( メ モ リ 領 域 ) を 用 意 し 、 ImgSetBuffer 関 数 ( ま た は ImgSetBufferVB 関数)でその領域の先頭アドレスとバッファサイズを設定してください。 バッファを設定していない場合、ImgStartCapture 関数実行時にエラーとなります。 5.バスマスタ転送開始 ImgStartCapture 関数の引数 dwStartMode に IFIMG_DMACAPTURE_START を指定して、キャプチャ を開始します。 射影データは、ImgSetBuffer 関数にて設定したメモリ領域にバスマスタ転送されます。 6.終了処理 ImgClose 関数でデバイスの終了処理を行います。アプリケーションでは、必ずクローズ処理を 行ってから終了してください。 © 2003, 2016 Interface Corporation. All rights reserved. 20 GPC-5520 Help for Windows 階調変換画像の取込み 55x5 系,55x6 系,PEX-H531322 専用です。 1.初期化 インタフェースモジュールを ImgOpen 関数で初期化します。 初期化が正常終了すると、以後、インタフェースモジュールへのアクセスが可能となります。 2.階調変換テーブルの設定 ImgSetLut 関数にて、階調変換テーブルのデータを設定します。 3.階調変換有効 ImgSetConversionConfig 関数の引数 dwCnvEnabled へ 0x01 を指定します。 4.キャプチャ準備~キャプチャ開始~キャプチャ終了 前述の キャプチャ手順と同様の処理を行ってください。 5.描画、画像処理 取得したキャプチャデータを元に、画像処理、描画等を行います。 6.終了処理 ImgClose 関数でデバイスの終了処理を行います。アプリケーションでは、必ずクローズ処理を 行ってから終了してください。 © 2003, 2016 Interface Corporation. All rights reserved. 21 GPC-5520 Help for Windows フィルタ画像の取込み 55x5 系,55x6 系,PEX-H531322 専用です。 1.初期化 インタフェースモジュールを ImgOpen 関数で初期化します。 初期化が正常終了すると、以後、インタフェースモジュールへのアクセスが可能となります。 2.対象色成分の指定 ImgSetColorIngredient 関数で、色成分を指定します。 3.フィルタ処理の選択 ImgSetFilter 関数でフィルタ係数を設定します。 4.フィルタ処理の有効 ImgSetConversionConfig 関数の引数 dwCnvEnabled へ 0x02 を指定します。 5.キャプチャ準備~キャプチャ開始~キャプチャ終了 前述の キャプチャ手順と同様の処理を行ってください。 6.描画、画像処理 取得したキャプチャデータを元に、画像処理、描画等を行います。 7.終了処理 ImgClose 関数でデバイスの終了処理を行います。アプリケーションでは、必ずクローズ処理を 行ってから終了してください。 © 2003, 2016 Interface Corporation. All rights reserved. 22 GPC-5520 Help for Windows 膨張・収縮画像の取込み 55x5 系,55x6 系,PEX-H531322 専用です。 1.初期化 インタフェースモジュールを ImgOpen 関数で初期化します。 初期化が正常終了すると、以後、インタフェースモジュールへのアクセスが可能となります。 2.対象色成分の指定 ImgSetColorIngredient 関数で、色成分を指定します。 3.膨張・収縮設定 ImgSetDil_Er 関数にて、処理段数と各段に対する膨張処理、収縮処理の選択、そして連結数を 選択します。 4.2 値化処理の設定 ImgSetBinarizationConfig 関数にて、2 値化処理設定を行います。 5.キャプチャ準備~キャプチャ開始~キャプチャ終了 前述の キャプチャ手順と同様の処理を行ってください。 6.描画、画像処理 取得したキャプチャデータを元に、画像処理、描画等を行います。 7.終了処理 ImgClose 関数でデバイスの終了処理を行います。アプリケーションでは、必ずクローズ処理を 行ってから終了してください。 © 2003, 2016 Interface Corporation. All rights reserved. 23 GPC-5520 Help for Windows ラベリング画像の取込み 55x6 系,PEX-H531322 専用です。 1.初期化 インタフェースモジュールを ImgOpen 関数で初期化します。 初期化が正常終了すると、以後、インタフェースモジュールへのアクセスが可能となります。 3.2 値化処理の設定 ImgSetBinarizationConfig 関数にて、2 値化処理設定を行います。 4.ラベリング処理の設定 ImgSetLabelingConfig 関数にて、ラベリング処理時の連結数を選択します。 5.キャプチャ準備~キャプチャ開始~キャプチャ終了 前述の キャプチャ手順と同様の処理を行ってください。 6.描画、画像処理 取得したキャプチャデータを元に、画像処理、描画等を行います。 7.終了処理 ImgClose 関数でデバイスの終了処理を行います。アプリケーションでは、必ずクローズ処理を 行ってから終了してください。 © 2003, 2016 Interface Corporation. All rights reserved. 24 GPC-5520 Help for Windows ラベリング処理画像による画像処理結果の取得 55x5 系,55x6 系,PEX-H531322 専用です。 1.初期化 インタフェースモジュールを ImgOpen 関数で初期化します。 初期化が正常終了すると、以後、インタフェースモジュールへのアクセスが可能となります。 3.2 値化処理の設定 ImgSetBinarizationConfig 関数にて、2 値化処理設定を行います。 3.ラベリング処理の設定 ImgSetLabelingConfig 関数にて、ラベリング処理時の連結数を選択します。 4.転送領域の指定 ラベリング画像に対する各ブロックの画像処理結果を取得する為には、ラベリング画像も同時 にキャプチャする必要があります。 アプリケーションにて画像と画像処理結果用のバッファ(メモリ領域)を用意し、ImgSetBuffer 関数(または ImgSetBufferVB 関数)でその領域の先頭アドレスとバッファサイズを設定してく ださい。 バッファを設定していない場合、ImgStartCapture 関数実行時にエラーとなります。 5.バスマスタ転送開始 ImgStartCapture 関数の引数 dwStartMode に IFIMG_DMACAPTURE_START を指定して、キャプチャ を開始します。 6.各ブロックの面積値、重心値、フェレ径、慣性等価楕円の傾き角 ImgGetMeasurementValueLBL 関数でラベル数とラベル付けされたブロックの面積値、重心値、 フェレ径、慣性等価楕円の傾き角を取得します。 7.終了処理 ImgClose 関数でデバイスの終了処理を行います。アプリケーションでは、必ずクローズ処理を 行ってから終了してください。 © 2003, 2016 Interface Corporation. All rights reserved. 25 GPC-5520 Help for Windows スーパーインポーズ PCI-540111、PEX-H550411、CPZ-550411 専用です。 1.初期化 インタフェースモジュールを ImgOpen 関数で初期化します。 初期化が正常終了すると、以後、インタフェースモジュールへのアクセスが可能となります。 2.スーパーインポーズ画像の作成 スーパーインポーズ用の RGB24bit のビットマップ形式の画像データを作成します。 3.スーパーインポーズ画像の設定 ImgSetImposeImage 関数で、デバイスのオンボードメモリへ画像データを転送します。 4.スーパーインポーズ画像の有効 ImgSetImposeImage 関数で、スーパーインポーズの設定と、スーパーインポーズを有効にしま す。 5.終了処理 ImgClose 関数でデバイスの終了処理を行います。アプリケーションでは、必ずクローズ処理を 行ってから終了してください。 © 2003, 2016 Interface Corporation. All rights reserved. 26 GPC-5520 Help for Windows 3.3 インタフェースモジュール固有情報 ●PCI-530111 固有情報 弊社タフコン製品(ITC-x5537(y))、弊社 I/O タッチパネル CD シリーズ(TIO-N5537x(y))、弊社マザコ ン製品(IMC-T5541(y))、エコ 3 製品(ECC-xxxxxx)に搭載されている画像機能には、使用できる関数に 制限があります。 対象型式は、デバイスマネージャ上で下記のように表示されます。 ・CH1 のデバイス「Interface PCI-530111<CH1>」 ・CH2 のデバイス「Interface PCI-530111<CH2>」 ・CH3 のデバイス「Interface PCI-530111<CH3>」 上記製品は画像デバイスが 3 個搭載されている製品です。 そのため、3 つのデバイスのそれぞれにデバイス名が割り振られます。 各関数による制御を行う際は、それぞれでデバイスオープンを行い、制御を行ってください。 またタフコン製品(ITC-x5537(y))は、DIO 機能を GPC-2000 と共用で使用する事が出来ます。 各デバイスで制御できるビットは以下のようになります。 GPC-2000 での DI/DO の制御方法は、GPC-2000 の Help を参照してください。 ※マザコン製品(IMC-T5541(y))は GPC-2000 では使用出来ません。 使用するドライバ 制御可能な端子 GPC-2000 IN/OUT32 ~ IN/OUT1 GPC-5520(CH1) GPC-5520(CH2) GPC-5520(CH3) IN/OUT8 ~ IN/OUT1 IN/OUT16 ~ IN/OUT9 IN/OUT24 ~ IN/OUT17 © 2003, 2016 Interface Corporation. All rights reserved. 27 GPC-5520 Help for Windows ImgInputDI関数, ImgOutputDO関数を実行した場合、それぞれ以下の入出力ピンを制御します。 <CH1 のデバイス> デバイスの ピン番号 ImgInputDI関数で 制御する INx デバイスの ピン番号 ImgOutputDO関数で 制御する OUTx <CH2 のデバイス> デバイスの ピン番号 ImgInputDI関数で 制御する INx デバイスの ピン番号 ImgOutputDO関数で 制御する OUTx IN8 IN7 ・・・ IN2 IN1 IN8 IN7 ・・・ IN2 IN1 OUT8 OUT7 ・・・ OUT2 OUT1 OUT8 OUT7 ・・・ OUT2 OUT1 IN16 IN15 ・・・ IN10 IN9 IN8 IN7 ・・・ IN2 IN1 OUT16 OUT15 ・・・ OUT10 OUT9 OUT8 OUT7 ・・・ OUT2 OUT1 ・・・ IN18 IN17 ・・・ IN2 IN1 ・・・ OUT18 OUT17 ・・・ OUT2 OUT1 <CH3 のデバイス> IMC-T5541(y)では制御することが出来ません。 デバイスの IN24 IN23 ピン番号 ImgInputDI関数で IN8 IN7 制御する INx IMC-T5541(y)では制御することが出来ません。 デバイスの OUT24 OUT23 ピン番号 ImgOutputDO関数で OUT8 OUT7 制御する OUTx © 2003, 2016 Interface Corporation. All rights reserved. 28 GPC-5520 Help for Windows 使用可能関数 ・ImgOpen ・ImgClose ・ImgGetDeviceInfo ・ImgGetCaptureStatus ・ImgSetBuffer ・ImgGetMemPtrValue ・ImgStartCapture ・ImgStopCapture ・ImgSetPosition ・ImgSetOutputMode ・ImgInputDI ・ImgOutputDO ・ImgSetEventMask ・ImgGetEventMask ・ImgSetEvent ・ImgSetBufferVB ・ImgSetCaptureConfig ・ImgClipData ・IfSaveBitMapFile ・ImgSetDecoderConfig ・ImgSetEncoderConfig ・ImgSetGainControl ・ImgSetBlankingLevel ・ImgSetSyncErrorDetection ・ImgGetCameraConnectionStatus ・ImgGetOsArchitecture © 2003, 2016 Interface Corporation. All rights reserved. 29 GPC-5520 Help for Windows ●PCI-550231, PEX-H550411, CPZ-550411 固有情報 弊社タフコン製品(ITC-x5538(y))、弊社 I/O タッチパネル CD シリーズ(TIO-N5538x(y))、弊社マザコ ン製品(IMC-T5540(y))、エコ 3 製品(ECC-xxxxxx), PEX-H550411、CPZ-550411 に搭載されている画像 機能には、使用できる関数に制限があります。 製品名 タフコン製品(ITC-x5539(y)) I/O タッチパネル CD シリーズ(TIO-N5539x(y)) マザコン製品(IMC-T5542(y)) エコ 3 製品(ECC-xxxxxx) PEX-H550411 CPZ-550411 デバイス名 DIO 機能 PCI-550231 サポート PEX-H550411 CPZ-550411 サポート サポート タフコン、I/O タッチパネル、マザコン、エコ 3 製品は、DIO 機能を GPC-2000 と共用で使用する事が出 来ます。 各デバイスで制御できるビットは以下のようになります。 GPC-2000 での DI/DO の制御方法は、GPC-2000 の Help を参照してください。 使用するドライバ 制御可能な端子 GPG-2000 IN/OUT32 ~ IN/OUT1 GPG-5520 IN/OUT8 ~ IN/OUT1 ImgInputDI関数, ImgOutputDO関数を実行した場合、それぞれ以下の入出力ピンを制御します。 デバイスの ピン番号 ImgInputDI関数で 制御する INx デバイスの ピン番号 ImgOutputDO関数で 制御する OUTx IN8 IN7 ・・・ IN2 IN1 IN8 IN7 ・・・ IN2 IN1 OUT8 OUT7 ・・・ OUT2 OUT1 OUT8 OUT7 ・・・ OUT2 OUT1 © 2003, 2016 Interface Corporation. All rights reserved. 30 GPC-5520 Help for Windows 使用可能関数 ・ImgOpen ・ImgClose ・ImgGetDeviceInfo ・ImgGetCaptureStatus ・ImgSetBuffer ・ImgGetMemPtrValue ・ImgStartCapture ・ImgStopCapture ・ImgSetPosition ・ImgSetOutputMode ・ImgInputDI ・ImgOutputDO ・ImgSetEventMask ・ImgGetEventMask ・ImgSetEvent ・ImgSetBufferVB ・ImgSetChannel ・ImgSetCaptureConfig ・ImgClipData ・IfSaveBitMapFile ・ImgSetDecoderConfig ・ImgSetEncoderConfig ・ImgSetGainControl ・ImgSetBlankingLevel ・ImgSetSyncErrorDetection ・ImgGetCameraConnectionStatus ・ImgGetOsArchitecture © 2003, 2016 Interface Corporation. All rights reserved. 31 GPC-5520 Help for Windows ●PCI/CPZ-540111, PEX-H540111 固有情報 弊社タフコン製品(ITC-x5539(y))、弊社 I/O タッチパネル CD シリーズ(TIO-N5539x(y))、弊社マザ コン製品(IMC-T5542(y))、エコ 3 製品(ECC-xxxxxx)、PEX-H550411、CPZ-550411 には、スーパーイ ンポーズ機能が搭載しています。 製品名 タフコン製品(ITC-x5539(y)) I/O タッチパネル CD シリーズ(TIO-N5539x(y)) マザコン製品(IMC-T5542(y)) エコ 3 製品(ECC-xxxxxx) PEX-H550411 CPZ-550411 デバイス名 DIO 機能 PCI-540111 サポート PEX-H540111 CPZ-540111 未サポート 未サポート スーパーインポーズを制御する機能に特化されたデバイスです。キャプチャ、画像処理全般の機能 はご利用できません。 スーパーインポーズの機能については、「4.6 動作仕様」-「■ スーパーインポーズ機能」を参照し てください。 タフコン、I/O タッチパネル、マザコン、エコ 3 製品は、DIO 機能を GPC-2000 と共用で使用する事 が出来ます。 各デバイスで制御できるビットは以下のようになります。 GPC-2000 での DI/DO の制御方法は、GPC-2000 の Help を参照してください。 使用するドライバ 制御可能な端子 GPC-2000 IN/OUT16 ~ IN/OUT1 GPC-5520 IN/OUT16 ~ IN/OUT9 ImgInputDI関数, ImgOutputDO関数を実行した場合、それぞれ以下の入出力ピンを制御します。 デバイスの ピン番号 ImgInputDI関数で 制御する INx デバイスの ピン番号 ImgOutputDO関数で 制御する OUTx IN16 IN15 ・・・ IN10 IN9 IN8 IN7 ・・・ IN2 IN1 OUT16 OUT15 ・・・ OUT10 OUT9 OUT8 OUT7 ・・・ OUT2 OUT1 © 2003, 2016 Interface Corporation. All rights reserved. 32 GPC-5520 Help for Windows 3.4 クラスライブラリの参照方法 .NET において DLL 関数の定義を容易にする為にクラスライブラリを用意しています。まず下の ように参照の設定を行います。 クラスライブラリのソースファイルも用意しています。DLL 関数の呼び出しを貸すカスタマイズ したい場合は、クラスライブラリのソースを参照してください。 GPC-5520 をインストールしても、DLL は存在しません。用意しているソースファイルからビルド を行ない DLL を事前に作成してください。 IFCIMG クラスは x86 専用の定義です。以前のバージョンとの互換性のために残されています。 新たにアプリケーションを作成される場合には、IFCIMG_ANY クラス(x86、x64 共用)の定義をご 使用下さい。 ・Visual C# .NET, Visual Basic .NET の場合 Visual Studio のメニューの「プロジェクト」の「参照の追加」を選択してください。 参照」ボタンをクリックして参照したいクラスライブラリ DLL を指定します。 <インストール先>\interface\GPC5520\samples\CS_NET\IFCIMG\bin\release\IFCIMG.dll <インストール先>\interface\GPC5520\samples\CS_NET\IFCSAVEFIL\ bin\release\IFCSAVEFILE.dll <インストール先>\interface\GPC5520\samples\VB_NET\IFCIMG\bin\release\IFCIMG.dll <インストール先>\interface\GPC5520\samples\VB_NET\IFCSAVEFIL\ bin\release\IFCSAVEFILE.dll 「選択されたコンポーネント」に指定した DLL が表示されます。 「OK」ボタンをクリックすると設定は完了です。 次にソースのヘッダで各言語毎に下記のように InterfaceCorpDllWrap の名前空間を追加すれば DLL 関数を次章の「使用例」の方法で呼び出すことができるようになります。 ・Borland Delphi 8 for the Microsoft .NET Framework の場合 Delphi 8 のメニューの「プロジェクト」の「参照の追加」を選択してください。 「参照」ボタンをクリックして参照したいクラスライブラリ DLL を指定します。 <インストール先>\interface\GPC5520\samples\DELPHI_NET\IFCIMG\IFCIMG.DLL <インストール先>\interface\GPC5520\samples\DELPHI_NET\IFCSAVEFILE\IFCSAVEFILE.DLL 「新しい参照」に指定した DLL が表示されます。 「OK」ボタンをクリックすると設定は完了です。 また、プロジェクト参照を使用する事も出来ます。詳しくは、Delphi8 のヘルプ、付属の.NET 用サンプルプログラムを参照して下さい。 ・Visual C# .NET の場合 using InterfaceCorpDllWrap; ・Visual Basic .NET の場合 Imports InterfaceCorpDllWrap ・Delphi 8 の場合 uses InterfaceCorpDllWrap InterfaceCorpDllWrap.IFCIMG(コールバック関数を使用する場合) © 2003, 2016 Interface Corporation. All rights reserved. 33 GPC-5520 Help for Windows ■参照渡しする変数について 各関数はアンマネージ DLL 関数です。マネージオブジェクトの参照渡しをする際は、 GCHandle 構造体を使用してマネージオブジェクトがコレクトされるのを防いでください。 ■構造体について StructLayout クラスのオプションに「LayoutKind.Sequential」を指定しています。 © 2003, 2016 Interface Corporation. All rights reserved. 34 GPC-5520 Help for Windows 第4章 リファレンス 4.1 関数一覧 No 関数名 ●初期化関連 1 ImgOpen 2 ImgClose 3 ImgGetDeviceInfo ●キャプチャ/映像出力関連 4 ImgGetCaptureStatus 5 ImgGetCaptureStatusEx 6 ImgSetBuffer 7 ImgGetMemPtrValue 8 ImgStartCapture 9 ImgStopCapture 10 ImgSetPosition 11 ImgSetOutputMode ●2 値画像処理関連 12 ImgSetBinarizationConfig 13 ImgSetMeasurementRange 14 ImgGetMeasurementValue 15 ImgSetTriggerConfig ●汎用入出力関連 16 ImgInputDI 17 ImgOutputDO ●割り込み関連 18 ImgSetEventMask 19 ImgGetEventMask 20 ImgSetEvent 21 ImgSetEventEx ●PCI/CTP/CPZ-553x シリーズ 22 ImgSetChannel 23 ImgSetCaptureConfig ●Visual Basic 専用関数 24 ImgSetBufferVB ●SDRAM 関連 25 ImgAllocateSDRAM 26 ImgFreeSDRAM 27 ImgSetSDRAM 28 ImgReadCaptureData 機能 デバイスをオープンします。 デバイスをクローズします。 型式、RSW1,RSW2 の設定を取得します。 キャプチャ状態を取得します。 キャプチャ状態を取得します。 (PCI/CTP/CPZ-5521/5523/5531/5533 用) 画像データ転送先バッファを設定します。(64bit 環境専用関数) 確保したメモリの先頭アドレスを取得します。 キャプチャを開始します。 キャプチャを停止します。 水平/垂直方向の取り込み開始位置を設定します。 映像出力信号の出力モードを設定します。 2 値化処理の設定を行います。 2 値画像処理の測定範囲を設定します。 2 値画像処理の測定結果を取得します。 トリガ発生条件を設定します。 汎用入力の状態を取得します。 汎用出力を制御します。 割り込みマスクの設定を行います。 割り込みマスクの設定を取得します。 割り込みの設定を行います。 割り込みの設定を行います。 使用チャンネルを設定します。 フレーム間引き設定、指定タイミングでのチャンネルの切り換え設 定を行います。 画像データ転送先バッファを設定します。 SDRAM 内に領域を確保します。 SDRAM 内の領域を開放します。 キャプチャする SDRAM 領域を指定します。 指定した SDRAM 領域に対して、キャプチャデータを取り出します。 © 2003, 2016 Interface Corporation. All rights reserved. 35 GPC-5520 Help for Windows 29 ImgBmCaptureData 30 ImgClipData ●パターン一致関連 31 ImgWriteComparisonData 32 ImgSetComparisonConfig 33 ImgGetMatchingLevel ●画像計測関連 34 ImgSetColorIngredient 35 ImgGetMeasurementValueEx ●画像変換関連 36 ImgSetConversionConfig 37 ImgSetLUT 38 ImgSetFilter 39 ImgSetDil_Er ●静止画出力関連 40 ImgSetStillPictureData 41 ImgGetStillPictureData ●ラベリング関連 42 ImgSetLabelingConfig 43 ImgGetMeasurementValueLBL 指定した SDRAM 領域に対して、キャプチャデータをバスマスタ方式 で取り出します。 指定したバッファ領域に対して、キャプチャデータを取り出しま す。 比較データを書き込みます。 比較条件を指定します。 パターン一致率を取得します。 濃度分布処理を行なう色成分を指定します。 面積値、重心値、フェレ径、慣性等価楕円の傾き角を取得します。 階調変換処理、フィルタ処理、膨張・収縮処理を有効/無効にします。 階調変換テーブルを設定します。 フィルタ処理を選択します。 膨張・収縮処理の設定を行ないます。 映像出力用の静止画像をセットします。 映像出力用の静止画像を取得します。 ラベリング処理する際の連結手段を選択します。 ラベル付けされた各ブロックの面積値、重心値、フェレ径、慣性等 価楕円の傾き角を取得します。 ●ファイル保存関連 ビットマップ形式でキャプチャデータを保存します。 44 IfSaveBitMapFile ●ビデオデコーダ/エンコーダ制御関連 ビデオデコーダの設定を行います。 45 ImgSetDecoderConfig ビデオエンコーダの設定を行います。 46 ImgSetEncoderConfig ゲイン調整を行います。 47 ImgSetGainControl ブランキングレベルの調整を行います。 48 ImgSetBlankingLevel ●同期信号異常検出関連 49 ImgSetSyncErrorDetection ●カメラ接続関連 50 ImgGetCameraConnectionSta tus ●OS 情報確認 51 ImgGetOsArchitecture ●PEX-H531322 専用制御 52 ImgSetCLCaptureConfig 53 ImgSetCCMode 54 ImgOutputPluse 55 ImgSerialSend 56 ImgSerialReceive 57 ImgGetSerialStatus 58 ImgSerialClear 59 ImgOutputPower 異常検出を行う同期信号を選択します。 カメラとの接続状態を取得します。 OS 情報を取得します。 接続カメラの設定を行います。 CC 信号の出力方式を設定します。 CC 信号を 1 パルス分出力します。 シリアル通信方式でカメラへデータを送信します。 シリアル通信方式でカメラからのデータを受信します。 シリアル通信方式によるデータ受信状態を取得します。 シリアル通信用の FIFO をクリアします。 PoCL 規格カメラに外部電源を供給します。 © 2003, 2016 Interface Corporation. All rights reserved. 36 GPC-5520 Help for Windows 60 ImgSetEncodeCntMode 61 ImgSetCounterCycle 62 ImgGetCounterValue ●スーパーインポーズ機能 63 ImgSetImposeImage 64 65 ImgSetImposeTime ImgSetImposeDate エンコーダパルスカウンタの設定を行います。 カウンタの周期を設定します。 カウンタ値を取得します。 スーパーインポーズ画像の設定、スーパーインポーズの有効/無効 の切替え、演算方法を設定します。 スーパーインポーズする時刻の設定を行います。 スーパーインポーズする日時の設定を行います。 © 2003, 2016 Interface Corporation. All rights reserved. 37 GPC-5520 Help for Windows 4.2 機能対応一覧 ●各インタフェースモジュール型式による対応関数一覧 関数名 5521 5531 5522 5532 5523 5533 5524 5534 5525 5535 5526 5536 530115 530215 540111 ImgOpen 5520 5530 550131 550135 530111 550231 ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ImgClose ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ImgGetDeviceInfo ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ImgGetCaptureStatus ○ ○ ○ ○ ○ ○ ○ ○ ○ - ImgGetCaptureStatusEx - ○ - ○ - - - - - - ImgSetBuffer ○ ○ ○ ○ ○ ○ ○ ○ ○ - ImgGetMemPtrValue ○ ○ ○ ○ ○ ○ ○ ○ ○ - ImgStartCapture ○ ○ ○ ○ ○ ○ ○ ○ ○ - ImgStopCapture ○ ○ ○ ○ ○ ○ ○ ○ ○ - ImgSetPosition ○ ○ ○ ○ ○ ○ ○ ○ ○ - ImgSetOutputMode ○ ○ ○ ○ ○ ○ ○ ○ ○ - ImgSetBinarizationConfig - - ○ ○ ○ ○ ○ - ○ - ImgSetMeasurementRange - - ○ ○ ○ ○ ○ - ○ - ImgGetMeasurementValue - - ○ ○ ○ ○ ○ - ○ - - ImgSetTriggerConfig - - ○ ○ ○ ○ ○ - ○ ImgInputDI ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ImgOutputDO ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ImgSetEventMask ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ImgGetEventMask ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ImgSetEvent ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ImgSetEventEx - ○ - ○ - - - - - ○ ImgSetBufferVB ○ ○ ○ ○ ○ ○ ○ ○ ○ - ImgSetChannel ○※ ○※ ○※ ○※ ○※ ○※ ○※ ○ ○ - ImgSetCaptureConfig ○ ○ ○ ○ ○ ○ ○ ○ ○ - ImgAllocateSDRAM - ○ - ○ - - - - - - ImgFreeSDRAM - ○ - ○ - - - - - - ImgSetSDRAM - ○ - ○ - - - - - - - ImgReadCaptureData - ○ - ○ - - - - - ImgBmCapture - ○ - ○ - - - - - - ImgClipData ○ ○ ○ ○ ○ ○ ○ ○ ○ - ImgWriteComparisonData - - - ○ - - - - - - ImgSetComparisonConfig - - - ○ - - - - - - ImgGetMatchingLevel - - - ○ - - - - - - IfSaveBitMapFile ○ ○ ○ ○ ○ ○ ○ ○ ○ - ImgSetColorIngredient - - - - ○ ○ ○ - - - ImgGetMeasurementValueEx - - - - ○ ○ ○ - - - ImgSetConversionConfig - - - - - ○ ○ - - - ImgSetLUT - - - - - ○ ○ - - - ImgSetFilter - - - - - ○ ○ - - - ImgSetDil_Er ImgSetStillPictureData ImgGetStillPictureData ImgSetLabelingConfig ImgGetMeasurementValueLBL - - - - - - - - - - - - - - - - - - - - - - - - - ○ ○ ○ - - ○ ○ ○ ○ ○ - - - - - - - - - - - - - - - © 2003, 2016 Interface Corporation. All rights reserved. 38 GPC-5520 Help for Windows 関数名 ImgSetDecoderConfig ImgSetEncoderConfig ImgSetGainControl ImgSetBlankingLevel ImgSetSyncErrorDetection ImgGetCameraConnectionSta tus ImgGetOsArchitecture ImgSetCLCaptureConfig ImgSetCCMode ImgOutputPluse ImgSerialSend ImgSerialReceive ImgGetSerialStatus ImgSerialClear ImgOutputPower ImgSetEncodeCntMode ImgSetCounterCycle ImgGetCounterValue ImgSetImposeImage ImgSetImposeTime ImgSetImposeDate 5520 5530 550131 550135 530111 550231 ○ ○ ○ ○ ○ 5521 5531 5522 5532 5523 5533 5524 5534 5525 5535 5526 5536 530115 530215 540111 ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ - - - - - ○ ○ ○ ○ ○ ○ ○ ○ ○ - ○ - - - - - - - - - - - - - - ○ - - - - - - - - - - - - - - ○ - - - - - - - - - - - - - - ○ - - - - - - - - - - - - - - ○ - - - - - - - - - - - - - - ○ - - - - - - - - - - - - - - ○ - - - - - - - - - - - - - - ○ - - - - - - - - - - - - - - ○ - - - - - - - - - - - - - - ○ - - - - - - - - - - - ○ ○ ○ © 2003, 2016 Interface Corporation. All rights reserved. 39 GPC-5520 Help for Windows インタフェースモジュールの CH 番号によって、一部の機能が対応・未対応となっています。 版数、CH 番号の確認方法は User’s Manual をご参照ください。 型式 PCI-5520 PCI-5521 PCI-5522 PCI-5523 PCI-5530 PCI-5531 PCI-5532 PCI-5533 CTP/CPZ-552 0 CTP/CPZ-552 1 CTP/CPZ-552 2 CTP/CPZ-552 3 CTP/CPZ-553 0 CTP/CPZ-553 1 CTP/CPZ-553 2 CTP/CPZ-553 3 CSI/CBI-530 115 CSI/CBI-530 215 版数/CH 番号 解像度 320×240 160×120 12 版 12 版/CH01 12 版/CH02 12 版/CH03 以降 12 版 12 版/CH01 以降 12 版 12 版/CH01 12 版/CH02 以降 12 版 12 版/CH01 以降 12 版 12 版/CH01 12 版/CH02 以降 12 版 12 版/CH01 以降 12 版 12 版/CH01 以降 12 版 12 版/CH01 以降 12 版 12 版/CH01 以降 12 版 12 版/CH01 以降 12 版 12 版/CH01 以降 12 版 12 版/CH01 以降 12 版 12 版/CH01 以降 12 版 12 版/CH01 以降 12 版 12 版/CH01 以降 12 版 12 版/CH01 以降 12 版 以降 - - ○ ○ ○ ○ - ○ ○ ○ ○ - ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ - - ○ ○ ○ ○ - ○ ○ ○ ○ - ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ R 8bit - - ○ ○ ○ ○ - ○ ○ ○ ○ - ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ 12 版 以降 ○ ○ ○ カラーフォーマット G B RGB 8bit 8bit 16bit - - - - - - ○ ○ - ○ ○ ○ ○ ○ - ○ ○ ○ - - - ○ ○ - ○ ○ ○ ○ ○ - ○ ○ ○ - - - ○ ○ - ○ ○ ○ ○ ○ - ○ ○ ○ ○ ○ - ○ ○ ○ ○ ○ - ○ ○ ○ ○ ○ - ○ ○ ○ ○ ○ - ○ ○ ○ ○ ○ - ○ ○ ○ ○ ○ - ○ ○ ○ ○ ○ - ○ ○ ○ ○ ○ - ○ ○ ○ ○ ○ - ○ ○ ○ ○ ○ - ○ ○ ○ ○ ○ ○ ○ © 2003, 2016 Interface Corporation. All rights reserved. 40 ○ ○ SDRAM データのメイ ンメモリへの DMA 転 送 - - - - - ○ - - - - ○ - - - - ○ - - - ○ - - - ○ - - - ○ - - - ○ - - - ○ - - GPC-5520 Help for Windows 4.3 関数個別説明 1. ImgOpen 【機能】 カラー画像入力インタフェースモジュールのオープンを行い、以後のインタフェースモジュー ルへのアクセスを行えるようにします。 【書式】 ●C 言語(x86 専用) HANDLE ImgOpen( LPCTSTR lpszName ); ●C 言語(x64 専用) HANDLE ImgOpen( LPCSTR lpszName ); // デバイス名 // デバイス名 ●Visual Basic Declare Function ImgOpen Lib "IfImg.dll"( _ ByVal LpszName As String _ ‘ デバイス名 )As Long ●Delphi function ImgOpen( LpszName: String // デバイス名 ):THandle; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll", CharSet=CharSet.Ansi)] public static extern IntPtr ImgOpen ( string LpszName // デバイス名 ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll", CharSet=CharSet.Ansi)] public static extern uint ImgOpen ( string LpszName // デバイス名 ); ●Visual Basic .NET(x86、x64 共用) Declare Function ImgOpen Lib "IfImg.DLL"( ByVal LpszName As String ‘ デバイス名 )As IntPtr ●Visual Basic .NET Declare Function ImgOpen Lib "IfImg.DLL"( © 2003, 2016 Interface Corporation. All rights reserved. 41 GPC-5520 Help for Windows ByVal LpszName )As Integer As String ‘ デバイス名 ●Delphi 8 class function ImgOpen( lpszName: String; ): Integer; static; 【パラメータ】 lpszName オープンするインタフェースモジュールのデバイス名を指定してください。 デバイス名は、以下のようになります。 インタフェースモジュール型式 デバイス名 PCI/CTP/CPZ-5520 PCI/CTP/CPZ-5530 IFIMGSTx(x : 1~256) CBI-530115(Tx) CSI-530115 PEX/LPC-530115 PCI/CTP/CPZ-550131 PCI/CTP/CPZ-550135 PEX-530135 PCI-530111 PCI-550231 PCI-5521 PCI-5531 IFIMGMEMx(x:1~256) CTP/CPZ-5521 CTP/CPZ-5531 PCI-5522 PCI-5532 IFIMGBINx(x : 1~256) CTP/CPZ-5522 CTP/CPZ-5532 CBI-530215(Tx) CSI-530215 PEX/LPC-530215 PCI-5523 PCI-5533 IFIMGPTNx(x : 1~256) CTP/CPZ-5523 CTP/CPZ-5533 PCI-5524 PCI-5534 IFIMGMSRx(x : 1~16) CTP/CPZ-5524 CTP/CPZ-5534 PCI-5525 PCI-5535 IFIMGCNVx(x : 1~16) CTP/CPZ-5525 CTP/CPZ-5535 PCI-5526 PCI-5536 IFIMGLBLx(x : 1~16) CTP/CPZ-5526 CTP/CPZ-5536 PEX-H531322 IFIMGLBLx(x : 17~32) PCI-540111 IFIMGST2 PEX-H540111 CPZ-550411 IFIMGSTx(x : 17~32) 【戻り値】 ImgOpen 関数が正常に終了した場合には、有効なハンドルが返されます。 他の関数は、本関数により取得したハンドルを使用してデバイスの制御を行います。 オープンに失敗した場合には、INVALID_HANDLE_VALUE(FFFFFFFFh)が返されます。 © 2003, 2016 Interface Corporation. All rights reserved. 42 GPC-5520 Help for Windows 【備考】 ●デバイス名について オープンするにはデバイス名を指定します。 カラー画像入力インタフェースモジュールのデバイス名、RSW1,RSW2 の設定値によって割り当 てられます。 例)PCI-5520 の場合 RSW2 RSW1 デバイス名 0 0 IFIMGST1 0 1 IFIMGST2 : : : 0 F IFIMGST16 1 0 IFIMGST17 1 1 IFIMGST18 : : : F F IFIMGST256 CBI-530115(Tx)、CSI-53015、CBI-530215(Tx) 、CSI-53025 のデバイス名はカードバス ID 設定 ユーティリティで設定した ID 番号で割り当てられます。(1~16 まで) 例)CBI-530115 の場合 ID 番号 デバイス名 0 IFIMGST1 1 IFIMGST2 : : E IFIMGST15 F IFIMGST16 PCI/CTP/CPZ-5524 以降の型式と PEX/LPC-530x15 のデバイス名は RSW1 の設定値です。 例)PCI-5524 の場合 RSW1 デバイス名 0 IFIMGMSR1 1 IFIMGMSR2 : : F IFIMGMSR16 複数枚ご使用になる場合は、制御するインタフェースモジュールのデバイス名を事前にご確認 ください。 各デバイス名は、デバイスマネージャにて確認できます。 キャプチャプログラム(ImgCapture.exe)、または診断プログラム(ImgDiag.exe)でも確認で きます。 © 2003, 2016 Interface Corporation. All rights reserved. 43 GPC-5520 Help for Windows 【使用例】 ●C 言語 HANDLE hDeviceHandle; hDeviceHandle = ImgOpen(“IFIMGST1”); ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long lpszName = “IFIMGST1” hDeviceHandle = ImgOpen(lpszName) ●Delphi var lpszName: String; hDeviceHandle: THandle; lpszName := 'IFIMGST1'; hDeviceHandle := ImgOpen(lpszName); ●Visual C# .NET IntPtr hDeviceHandle; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGST1”); ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr lpszName = “IFIMGST1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) ●Delphi 8 var lpszName: String; begin lpszName := ‘IFIMGST1; hDeviceHandle := IFCIMG.ImgOpen(lpszName); デバイス名「IFIMGST1」のデバイスをオープンします。 © 2003, 2016 Interface Corporation. All rights reserved. 44 GPC-5520 Help for Windows 2. ImgClose 【機能】 カラー画像入力インタフェースモジュールをクローズします。 インタフェースモジュールアクセスのために使用されていた各種リソースの解放を行い、以後 のインタフェースモジュールへのアクセスを禁止します。 【書式】 ●C 言語 INT ImgClose( HANDLE hDeviceHandle ); // デバイスハンドル ●Visual Basic Declare Function ImgClose Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long _ ‘ デバイスハンドル )As Long ●Delphi function ImgClose ( hDeviceHandle: THandle // デバイスハンドル ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgClose( IntPtr hDeviceHandle ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgClose( uint hDeviceHandle ); // デバイスハンドル // デバイスハンドル ●Visual Basic .NET(x86、x64 共用) Declare Function ImgClose Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr ‘ デバイスハンドル )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgClose Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer ‘ デバイスハンドル )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 45 GPC-5520 Help for Windows ●Delphi 8 class function ImgClose( hDeviceHandle: Integer ): Integer; static; 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 【備考】 キャプチャ中の場合、キャプチャ処理を停止します。 インタフェースモジュールクローズ後の各種設定はクリアされます。 再度、インタフェースモジュールへのアクセスを行う場合にはオープン処理(ImgOpen関数)を 呼び出してください。 【使用例】 ●C 言語 HANDLE hDeviceHandle; int nRet; hDeviceHandle = ImgOpen(“IFIMGST1”); : : nRet = ImgClose(hDeviceHandle); ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim nRet As Long lpszName = “IFIMGST1” hDeviceHandle = ImgOpen(lpszName) : : nRet = ImgClose(hDeviceHandle) © 2003, 2016 Interface Corporation. All rights reserved. 46 GPC-5520 Help for Windows ●Delphi var lpszName: String; hDeviceHandle: THandle; nRet: Integer; lpszName := 'IFIMGST1'; hDeviceHandle := ImgOpen(lpszName); : : nRet := ImgClose(hDeviceHandle); ●Visual C# .NET IntPtr hDeviceHandle; int nRet; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGST1”); : : nRet = IFCIMG_ANY.ImgClose(hDeviceHandle); ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim nRet As Integer lpszName = “IFIMGST1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : : nRet = IFCIMG_ANY.ImgClose(hDeviceHandle) ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; nRet: Integer; begin lpszName := ' IFIMGST1'; hDeviceHandle := IFCIMG.ImgClose(lpszName); : : nRet := IFCIMG.ImgClose(hDeviceHandle); デバイス名「IFIMGST1」のデバイスのクローズ処理を行います。 © 2003, 2016 Interface Corporation. All rights reserved. 47 GPC-5520 Help for Windows 3. ImgGetDeviceInfo 【機能】 カラー画像入力インタフェースモジュールのデバイス情報(型式、RSW1,RSW2 の設定値)を取 得します。 【書式】 ●C 言語 INT ImgGetDeviceInfo( HANDLE hDeviceHandle, PIMGDEVICEINFO pDeviceInfo // デバイスハンドル // IMGDEVICEINFO 構造体 へのポインタ ); ●Visual Basic Declare Function ImgGetDeviceInfo Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByRef pDeviceInfo As IMGDEVICEINFO _ ‘ IMGDEVICEINFO 構造体 への参照渡し )As Long ●Delphi function ImgGetDeviceInfo ( hDeviceHandle: THandle; var pDeviceInfo: IMGDEVICEINFO // デバイスハンドル // IMGDEVICEINFO 構造体 への参照渡し ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgGetDeviceInfo( IntPtr hDeviceHandle, out IMGDEVICEINFO pDeviceInfo // デバイスハンドル // IMGDEVICEINFO 構造体 へのポインタ ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgGetDeviceInfo( uint hDeviceHandle, out IMGDEVICEINFO pDeviceInfo // デバイスハンドル // IMGDEVICEINFO 構造体 へのポインタ ); © 2003, 2016 Interface Corporation. All rights reserved. 48 GPC-5520 Help for Windows ●Visual Basic .NET(x86、x64 共用) Declare Function ImgGetDeviceInfo Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByRef pDeviceInfo As IMGDEVICEINFO ‘ IMGDEVICEINFO 構造体 への参照渡し )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgGetDeviceInfo Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByRef pDeviceInfo As IMGDEVICEINFO ‘ IMGDEVICEINFO 構造体 への参照渡し )As Integer ●Delphi 8 class function ImgGetDeviceInfo ( hDeviceHandle: Integer; var pDeviceInfo: IMGDEVICEINFO // デバイスハンドル // IMGDEVICEINFO 構造体 への参照渡し ): Integer; static; 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 pDeviceInfo 取得したデバイス情報を格納するデバイス情報構造体(IMGDEVICEINFO)へのポインタを指 定してください。 構造体の説明については、『4.4 構造体』をご参照ください。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 © 2003, 2016 Interface Corporation. All rights reserved. 49 GPC-5520 Help for Windows 【使用例】 ●C 言語 HANDLE hDeviceHandle; IMGDEVICEINFO Device; int nRet; hDeviceHandle = ImgOpen(“IFIMGST1”); : : nRet = ImgGetDeviceInfo(hDeviceHandle, &Device); ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim Device As IMGDEVICEINFO Dim nRet As Long lpszName = “IFIMGST1” hDeviceHandle = ImgOpen(lpszName) : : nRet = ImgGetDeviceInfo(hDeviceHandle, Device) ●Delphi var lpszName: String; hDeviceHandle: THandle; Device: IMGDEVICEINFO; nRet: Integer; lpszName := 'IFIMGST1'; hDeviceHandle := ImgOpen(lpszName); : : nRet := ImgGetDeviceInfo(hDeviceHandle, Device); ●Visual C# .NET IntPtr hDeviceHandle; IFCIMG_ANY.IMGDEVICEINFO Device; int nRet; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGST1”); : : nRet = IFCIMG_ANY.ImgGetDeviceInfo(hDeviceHandle, out Device); © 2003, 2016 Interface Corporation. All rights reserved. 50 GPC-5520 Help for Windows ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim Device As IFCIMG_ANY.IMGDEVICEINFO Dim nRet As Integer lpszName = “IFIMGST1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : : nRet = IFCIMG_ANY.ImgGetDeviceInfo(hDeviceHandle, Device) ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; Device: IFCIMG_ANY.IMGDEVICEINFO; nRet: Integer; lpszName := 'IFIMGST1'; hDeviceHandle := IFCIMG_ANY.ImgOpen(lpszName); : : nRet := IFCIMG_ANY.ImgGetDeviceInfo(hDeviceHandle, Device); デバイス名「IFIMGST1」のデバイス情報を取得します。 © 2003, 2016 Interface Corporation. All rights reserved. 51 GPC-5520 Help for Windows 4. ImgGetCaptureStatus 【機能】 現在のキャプチャ状態とトリガ発生状態を取得します。 【書式】 ●C 言語 INT ImgGetCaptureStatus( HANDLE hDeviceHandle, PIMGCAPSTATUS pStatus // デバイスハンドル // IMGCAPSTATUS 構造体 へのポインタ ); ●Visual Basic Declare Function ImgGetCaptureStatus Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByRef pStatus As IMGCAPSTATUS _ ‘ IMGCAPSTATUS 構造体 への参照渡し )As Long ●Delphi function ImgGetCaptureStatus ( hDeviceHandle: THandle; var pStatus: IMGCAPSTATUS // デバイスハンドル // IMGCAPSTATUS 構造体 への参照渡し ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgGetCaptureStatus( IntPtr hDeviceHandle, out IMGCAPSTATUS pStatus // デバイスハンドル // IMGCAPSTATUS 構造体 へのポインタ ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgGetCaptureStatus( uint hDeviceHandle, out IMGCAPSTATUS pStatus // デバイスハンドル // IMGCAPSTATUS 構造体 へのポインタ ); © 2003, 2016 Interface Corporation. All rights reserved. 52 GPC-5520 Help for Windows ●Visual Basic .NET(x86、x64 共用) Declare Function ImgGetCaptureStatus Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByRef pStatus As IMGCAPSTATUS ‘ IMGCAPSTATUS 構造体 への参照渡し )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgGetCaptureStatus Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByRef pStatus As IMGCAPSTATUS ‘ IMGCAPSTATUS 構造体 への参照渡し )As Integer ●Delphi 8 class function ImgGetCaptureStatus ( hDeviceHandle: Integer; var pStatus: IMGCAPSTATUS // デバイスハンドル // IMGCAPSTATUS 構造体 への参照渡し ): Integer; static; 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 pStatus 取得したキャプチャ状態を格納するキャプチャ状態構造体(IMGCAPSTATUS)へのポインタ を指定してください。 構造体の説明については、『4.4 構造体』をご参照ください。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 © 2003, 2016 Interface Corporation. All rights reserved. 53 GPC-5520 Help for Windows 【使用例】 ●C 言語 HANDLE hDeviceHandle; IMGCAPSTATUS Status; int nRet; hDeviceHandle = ImgOpen(“IFIMGST1”); : : nRet = ImgGetCaptureStatus(hDeviceHandle, &Status); ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim Status As IMGCAPSTATUS Dim nRet As Long lpszName = “IFIMGST1” hDeviceHandle = ImgOpen(lpszName) : : nRet = ImgGetCaptureStatus(hDeviceHandle, Status) ●Delphi var lpszName: String; hDeviceHandle: THandle; Status: IMGCAPSTATUS; nRet: Integer; lpszName := 'IFIMGST1'; hDeviceHandle := ImgOpen(lpszName); : : nRet := ImgGetCaptureStatus(hDeviceHandle, Status); ●Visual C# .NET IntPtr hDeviceHandle; IFCIMG_ANY.IMGCAPSTATUS Status; int nRet; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGST1”); : : nRet = IFCIMG_ANY.ImgGetCaptureStatus(hDeviceHandle, out Status); © 2003, 2016 Interface Corporation. All rights reserved. 54 GPC-5520 Help for Windows ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim Status As IFCIMG_ANY.IMGCAPSTATUS Dim nRet As Integer lpszName = “IFIMGST1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : : nRet = IFCIMG_ANY.ImgGetCaptureStatus(hDeviceHandle, Status) ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; Status: IFCIMG.IMGCAPSTATUS; nRet: Integer; lpszName := 'IFIMGST1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); : : nRet := IFCIMG.ImgGetCaptureStatus(hDeviceHandle, Status); デバイス名「IFIMGST1」のキャプチャ状態を取得します。 © 2003, 2016 Interface Corporation. All rights reserved. 55 GPC-5520 Help for Windows 5. ImgGetCaptureStatusEx 【機能】 現在のキャプチャ状態とトリガ発生状態を取得します。 【書式】 ●C 言語 INT ImgGetCaptureStatusEx( HANDLE hDeviceHandle, PIMGCAPSTATUSEX pStatus // デバイスハンドル // IMGCAPSTATUSEX 構造体 へのポインタ ); ●Visual Basic Declare Function ImgGetCaptureStatusEx Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByRef pStatus As IMGCAPSTATUSEX _ ‘ IMGCAPSTATUSEX 構造体 への参照渡し )As Long ●Delphi function ImgGetCaptureStatusEx ( hDeviceHandle: THandle; var pStatus: IMGCAPSTATUSEX // デバイスハンドル // IMGCAPSTATUSEX 構造体 への参照渡し ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgGetCaptureStatusEx( IntPtr hDeviceHandle, // デバイスハンドル out IMGCAPSTATUSEX pStatus // IMGCAPSTATUSEX 構造体 へのポインタ ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgGetCaptureStatusEx( uint hDeviceHandle, // デバイスハンドル out IMGCAPSTATUSEX pStatus // IMGCAPSTATUSEX 構造体 へのポインタ ); © 2003, 2016 Interface Corporation. All rights reserved. 56 GPC-5520 Help for Windows ●Visual Basic .NET(x86、x64 共用) Declare Function ImgGetCaptureStatusEx Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByRef pStatus As IMGCAPSTATUSEX ‘ IMGCAPSTATUSEX 構造体 への参照渡し )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgGetCaptureStatusEx Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByRef pStatus As IMGCAPSTATUSEX ‘ IMGCAPSTATUSEX 構造体 への参照渡し )As Integer ●Delphi 8 class function ImgGetCaptureStatusEx ( hDeviceHandle: Integer; var pStatus: IMGCAPSTATUSEX // デバイスハンドル // IMGCAPSTATUSEX 構造体 への参照渡し ): Integer; static; 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 pStatus 取得したキャプチャ状態を格納するキャプチャ状態構造体(IMGCAPSTATUSEX)へのポイン タを指定してください。 構造体の説明については、『4.4 構造体』をご参照ください。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 © 2003, 2016 Interface Corporation. All rights reserved. 57 GPC-5520 Help for Windows 【使用例】 ●C 言語 HANDLE hDeviceHandle; IMGCAPSTATUSEX Status; int nRet; hDeviceHandle = ImgOpen(“IFIMGMEM1”); : : nRet = ImgGetCaptureStatus(hDeviceHandle, &Status); ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim Status As IMGCAPSTATUSEX Dim nRet As Long lpszName = “IFIMGMEM1” hDeviceHandle = ImgOpen(lpszName) : : nRet = ImgGetCaptureStatus(hDeviceHandle, Status) ●Delphi var lpszName: String; hDeviceHandle: THandle; Status: IMGCAPSTATUSEX; nRet: Integer; lpszName := 'IFIMGMEM1'; hDeviceHandle := ImgOpen(lpszName); : : nRet := ImgGetCaptureStatusEx(hDeviceHandle, Status); ●Visual C# .NET IntPtr hDeviceHandle; IFCIMG_ANY.IMGCAPSTATUSEX Status; int nRet; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGMEM1”); : : nRet = IFCIMG_ANY.ImgGetCaptureStatusEx(hDeviceHandle, out Status); © 2003, 2016 Interface Corporation. All rights reserved. 58 GPC-5520 Help for Windows ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim Status As IFCIMG_ANY.IMGCAPSTATUSEX Dim nRet As Integer lpszName = “IFIMGMEM1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : : nRet = IFCIMG_ANY.ImgGetCaptureStatusEx(hDeviceHandle, Status) ●Delphi var lpszName: String; hDeviceHandle: Integer; Status: IFCIMG.IMGCAPSTATUSEX; nRet: Integer; lpszName := 'IFIMGMEM1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); : : nRet := IFCIMG.ImgGetCaptureStatusEx(hDeviceHandle, Status); デバイス名「IFIMGMEM1」のキャプチャ状態を取得します。 © 2003, 2016 Interface Corporation. All rights reserved. 59 GPC-5520 Help for Windows 6. ImgSetBuffer 【機能】 転送先バッファの先頭ポインタとサイズ、画像のフォーマットを設定します。 また、SDRAM 領域内のデータ転送用(DMA 転送)のバッファを設定します。 【書式】 ●C 言語 INT ImgSetBuffer( HANDLE PIMGBUFFERINFO DWORD hDeviceHandle, pBuffer, // デバイスハンドル // IMGBUFFERINFO 構造体 へのポインタ // カラーフォーマット dwBufferFormat ); ●Visual Basic 『24 ImgSetBufferVB』を参照ください。 ●Delphi function ImgSetBuffer ( hDeviceHandle: THandle; var pBuffer: IMGBUFFERINFO; // デバイスハンドル // IMGBUFFERINFO 構造体 への参照渡し dwBufferFormat: DWORD ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetBuffer( IntPtr hDeviceHandle, ref IMGBUFFERINFO pBuffer, uint dwBufferFormat // カラーフォーマット // デバイスハンドル // IMGBUFFERINFO 構造体への ポインタ // カラーフォーマット ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetBuffer( uint hDeviceHandle, ref IMGBUFFERINFO pBuffer, uint dwBufferFormat // デバイスハンドル // IMGBUFFERINFO 構造体への ポインタ // カラーフォーマット ); © 2003, 2016 Interface Corporation. All rights reserved. 60 GPC-5520 Help for Windows ●Visual Basic .NET 『24 ImgSetBufferVB』を参照ください。 ●Delphi 8 class function ImgSetBuffer ( hDeviceHandle: Integer; var pBuffer: IMGBUFFERINFO; // デバイスハンドル // IMGBUFFERINFO 構造体 への参照渡し dwBufferFormat: Cardinal // カラーフォーマット ): Integer; static; 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 pBuffer 設定するバッファ情報を格納したバッファ情報構造体(IMGBUFFERINFO)へのポインタを指 定してください。 ここで指定した領域へ、 「キャプチャデータ」または「SDRAM領域内のデータ」を転送しま す。 構造体の説明については、『4.4 構造体』をご参照ください。 dwBufferFormat DMA 転送データのフォーマットを指定します。 SDRAM 領域内のデータ転送時は、「IFIMG_COLOR_RGB24」を指定して下さい。 ●カラーフォーマット識別子 画像データを DMA 転送する場合は、以下のカラーフォーマット識別子を指定します。 識別子 値 意味 IFIMG_COLOR_RGB32 00000001h RGB32 bit IFIMG_COLOR_RGB24 00000002h RGB24 bit IFIMG_COLOR_RGB15 00000003h RGB15 bit IFIMG_COLOR_RGB16 0000000Bh RGB16 bit IFIMG_COLOR_GRAY8 00000004h GRAY8 bit IFIMG_COLOR_RED8 00000005h R 8bit IFIMG_COLOR_GREEN8 00000006h G 8bit IFIMG_COLOR_BLUE8 00000007h B 8bit IFIMG_COLOR_BIN8 00000008h 2 値化処理データ 8bit IFIMG_COLOR_FIL8 0000000Ch フィルタ 8bit IFIMG_COLOR_LABEL8 0000000Dh ラベリング 8bit IFIMG_COLOR_GRAY10 0000000Eh GRAY 10bit ※ IFIMG_COLOR_GRAY12 0000000Fh GRAY 12bit ※ IFIMG_COLOR_GRAY14 00000010h GRAY 14bit ※ IFIMG_COLOR_GRAY16 00000011h GRAY 16bit ※ ※PEX-H531322 専用です。 © 2003, 2016 Interface Corporation. All rights reserved. 61 GPC-5520 Help for Windows ●解像度識別子 解像度を変更する場合、以下の識別子を OR 指定します。 識別子 値 意味 NTSC/CameraLink 製品 IFIMG_RESOLUTION_640_480 00000000h 640×480 IFIMG_RESOLUTION_320_240 80000000h 320×240 IFIMG_RESOLUTION_160_120 40000000h 160×120 IFIMG_RESOLUTION_768_572 08000000h 未対応 IFIMG_RESOLUTION_384_286 04000000h 未対応 IFIMG_RESOLUTION_192_143 02000000h 未対応 ●画像処理データ識別子 識別子 IFIMG_MEASUEMENT_HSIT IFIMG_MEASUEMENT_PRO IFIMG_MEASUEMENT_LBLCNT IFIMG_MEASUEMENT_AREA IFIMG_MEASUEMENT_GRV IFIMG_MEASUEMENT_FERE IFIMG_MEASUEMENT_ELLIPSE 値 00000200h 00000400h 00000800h 00001000h 00002000h 00004000h 00008000h 意味 濃度分布 射影 ラベル数 各ブロックの面積 各ブロックのΣX、ΣY 各ブロックのフェレ径座標 各ブロックのΣX2、ΣXY、ΣY2 以下の識別子の組み合わせで、各画像処理結果を指定してください。 ラベル数 面積値 重心値 フェレ径 識別子 IFIMG_MEASUEMENT_LBLCNT ○ ○ ○ ○ IFIMG_MEASUEMENT_AREA - ○ ○ - IFIMG_MEASUEMENT_GRV - - ○ - IFIMG_MEASUEMENT_FERE - - - ○ IFIMG_MEASUEMENT_ELLIPSE - - - - © 2003, 2016 Interface Corporation. All rights reserved. 62 PAL 製品 未対応 未対応 未対応 768×572 384×286 192×143 慣性等価楕円の傾き角 ○ ○ ○ - ○ GPC-5520 Help for Windows 識別子の対応表 識別子 IFIMG_COLOR_RGB32 IFIMG_COLOR_RGB24 IFIMG_COLOR_RGB15 IFIMG_COLOR_RGB16 IFIMG_COLOR_GRAY8 IFIMG_COLOR_RED8 ※ IFIMG_COLOR_GREEN8 ※ IFIMG_COLOR_BLUE8 ※ IFIMG_COLOR_BIN8 IFIMG_COLOR_FIL8 IFIMG_COLOR_LABEL8 IFIMG_RESOLUTION_320_240 IFIMG_RESOLUTION_160_120 IFIMG_MEASUEMENT_HSIT IFIMG_MEASUEMENT_PRO IFIMG_MEASUEMENT_LBLCNT IFIMG_MEASUEMENT_AREA IFIMG_MEASUEMENT_GRV IFIMG_MEASUEMENT_FERE IFIMG_MEASUEMENT_ELLIPSE IFIMG_RESOLUTION_768_572 IFIMG_RESOLUTION_384_286 IFIMG_RESOLUTION_192_143 IFIMG_COLOR_GRAY10 IFIMG_COLOR_GRAY12 IFIMG_COLOR_GRAY14 IFIMG_COLOR_GRAY16 55x0 ○ ○ ○ ○ ○ ○ ○ ○ ― ― ― ○ ○ ― ― ― ― ― ― ― ― ― ― ― ― ― ― 55x1 ○ ○ ○ ○ ○ ○ ○ ○ ― ― ― ○ ○ ― ― ― ― ― ― ― ― ― ― ― ― ― ― 55x2 ○ ○ ○ ○ ○ ○ ○ ○ ○ ― ― ○ ○ ― ― ― ― ― ― ― ― ― ― ― ― ― ― 55x3 ○ ○ ○ ○ ○ ○ ○ ○ ○ ― ― ○ ○ ― ― ― ― ― ― ― ― ― ― ― ― ― ― 55x4 ○ ○ ○ ○ ○ ○ ○ ○ ○ ― ― ○ ○ ○ ○ ― ― ― ― ― ― ― ― ― ― ― ― 55x5 ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ― ○ ○ ○ ○ ― ― ― ― ― ― ― ― ― ― ― ― 55x6 ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ― ― ― ― ― ― ― 530115 ○ ○ ○ ○ ○ ○ ○ ○ ― ― ― ○ ○ ― ― ― ― ― ― ― ― ― ― ― ― ― ― 530215 ○ ○ ○ ○ ○ ○ ○ ○ ○ ― ― ○ ○ ― ― ― ― ― ― ― ― ― ― ― ― ― ― ※ PCI-5520 は、[12]C02 以降のインタフェースモジュールが対応しています。 © 2003, 2016 Interface Corporation. All rights reserved. 63 530215 ○ ○ ○ ○ ○ ○ ○ ○ ○ ― ― ○ ○ ― ― ― ― ― ― ― ― ― ― ― ― ― ― GPC-5520 Help for Windows 識別子 IFIMG_COLOR_RGB32 IFIMG_COLOR_RGB24 IFIMG_COLOR_RGB15 IFIMG_COLOR_RGB16 IFIMG_COLOR_GRAY8 IFIMG_COLOR_RED8 IFIMG_COLOR_GREEN8 IFIMG_COLOR_BLUE8 IFIMG_COLOR_BIN8 IFIMG_COLOR_FIL8 IFIMG_COLOR_LABEL8 IFIMG_RESOLUTION_320_240 IFIMG_RESOLUTION_160_120 IFIMG_MEASUEMENT_HSIT IFIMG_MEASUEMENT_PRO IFIMG_MEASUEMENT_LBLCNT IFIMG_MEASUEMENT_AREA IFIMG_MEASUEMENT_GRV IFIMG_MEASUEMENT_FERE IFIMG_MEASUEMENT_ELLIPSE IFIMG_RESOLUTION_768_572 IFIMG_RESOLUTION_384_286 IFIMG_RESOLUTION_192_143 IFIMG_COLOR_GRAY10 IFIMG_COLOR_GRAY12 IFIMG_COLOR_GRAY14 IFIMG_COLOR_GRAY16 55013x ○ ○ ○ ○ ○ ○ ○ ○ ― ― ― ― ― ― ― ― ― ― ― ― ○ ○ ○ ― ― ― ― 551322 ― ○ ― ― ○ ― ― ― ― ○ ○ ― ― ○ ○ ○ ○ ○ ○ ○ ― ― ― ○ ○ ○ ○ 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 © 2003, 2016 Interface Corporation. All rights reserved. 64 GPC-5520 Help for Windows 【使用例】 ●C 言語(x86) IHANDLE hDeviceHandle; IMGBUFFERINFO Buffer; int nRet; hDeviceHandle = ImgOpen(“IFIMGST1”); : : Buffer.pBufferAddress = malloc(640*480*3); Buffer.dwBufferSize = 640*480*3; nRet = ImgSetBuffer(hDeviceHandle, &Buffer, IFIMG_COLOR_RGB24); ●C 言語(x64) IHANDLE hDeviceHandle; IMGBUFFERINFO Buffer; int nRet; hDeviceHandle = ImgOpen(“IFIMGST1”); : Buffer.pBufferAddress = (PVOID)-1; Buffer.dwBufferSize = 640*480*3; : nRet = ImgSetBuffer(hDeviceHandle, &Buffer, IFIMG_COLOR_RGB24); ●Visual Basic 『24 ImgSetBufferVB』を参照ください。 © 2003, 2016 Interface Corporation. All rights reserved. 65 GPC-5520 Help for Windows ●Delphi var lpszName: String; hDeviceHandle: THandle; Buffer: IMGBUFFERINFO; nRet: Integer; lpszName := 'IFIMGST1'; hDeviceHandle := ImgOpen(lpszName); : : Buffer.pBufferAddress := AllocMem(640*480*3); Buffer.dwBufferSize := 640*480*3; nRet := ImgSetBuffer(hDeviceHandle, Buffer, IFIMG_COLOR_RGB24); ●Visual C# .NET(x86) IntPtr hDeviceHandle; IFCIMG_ANY.IMGBUFFERINFO Buffer; int nRet; IntPtr array_p; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGST1”); : : array_p = Marshal.AllocCoTaskMem(640*480*3); Buffer.pBufferAddress = array_p; Buffer.dwBufferSize = 640*480*3; nRet = IFCIMG_ANY.ImgSetBuffer(hDeviceHandle, ref Buffer, IFCIMG_ANY.IFIMG_COLOR_RGB24); © 2003, 2016 Interface Corporation. All rights reserved. 66 GPC-5520 Help for Windows ●Visual C# .NET(x64) IntPtr hDeviceHandle; IFCIMG_ANY.IMGBUFFERINFO Buffer; int nRet; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGST1”); : : Buffer.pBufferAddress = new IntPtr(-1); Buffer.dwBufferSize = 640*480*3; nRet = IFCIMG_ANY.ImgSetBuffer(hDeviceHandle, ref Buffer, IFCIMG_ANY.IFIMG_COLOR_RGB24); ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; Buffer: IFCIMG.IMGBUFFERINFO; nRet: Integer; lpszName := 'IFIMGST1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); : : Buffer.pBufferAddress := Marshal.AllocHGlobal(640*480*3); Buffer.dwBufferSize := 640*480*3; nRet := IFCIMG.ImgSetBuffer(hDeviceHandle, Buffer, IFCIMG.IFIMG_COLOR_RGB24); デバイス名「IFIMGST1」のデバイスに対してキャプチャ用バッファを設定します。 カラーフォーマットは RGB24 で、解像度は 640×480 です。 © 2003, 2016 Interface Corporation. All rights reserved. 67 GPC-5520 Help for Windows 7. ImgGetMemPtrValue 【機能】 x64 専用関数です。ImgSetBuffer 関数で論理空間へマッピングされたメインメモリの先頭アドレ スを取得する事ができます。 【書式】 ●C 言語 INT ImgGetMemPtrValue( HANDLE hDeviceHandle, PVOID *MemoryAddress ); // // デバイスハンドル 先頭アドレス ●Visual Basic Declare Function ImgGetMemPtrValue Lib "IFCml.DLL"( _ ByVal DeviceHandle As Long, _ ‘ デバイスハンドル ByRef MemoryAddress As Any ‘ 先頭アドレス )As Long ●Delphi function ImgGetMemPtrValue ( DeviceHandle: THandle; // var MemoryAddress: Pointer // ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x64 専用) [DllImport("IfImg.dll")] public static extern int ImgGetMemPtrValue ( IntPtr hDeviceHandle, out IntPtr MemoryAddress ); デバイスハンドル 先頭アドレス // // デバイスハンドル 先頭アドレス ●Visual Basic .NET(x64 専用) Declare Function ImgGetMemPtrValue Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByRef MemoryAddress As IntPtr _ ‘ 先頭アドレス )As Integer 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 MemoryAddress 確保されたメインメモリのポインタを取得する変数へのポインタを指定してください。 © 2003, 2016 Interface Corporation. All rights reserved. 68 GPC-5520 Help for Windows 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 【使用例】 ●C 言語 HANDLE hDeviceHandle; IMGBUFFERINFO Buffer; int nRet; PVOID BuffPtr; hDeviceHandle = ImgOpen(“IFIMGST1”); : Buffer.pBufferAddress = (PVOID)-1; Buffer.dwBufferSize = 640*480*3; : nRet = ImgSetBuffer(hDeviceHandle, &Buffer, IFIMG_COLOR_RGB24); nRet = ImgGetMemPtrValue(DeviceHandle, &BuffPtr); ●Visual Basic Dim hDeviceHandle As Long Dim nRet As Long Dim BuffPtr As Long lpszName = “IFIMGST1” hDeviceHandle = ImgOpen(lpszName) : nRet = ImgSetBufferVB(hDeviceHandle, ByVal -1, 640*480*3, IFIMG_COLOR_RGB24) nRet = ImgGetMemPtrValue(hDeviceHandle, BuffPtr) © 2003, 2016 Interface Corporation. All rights reserved. 69 GPC-5520 Help for Windows ●Delphi var lpszName: String; hDeviceHandle: THandle; Buffer: IMGBUFFERINFO; nRet: Integer; pBuffer: Pointer; lpszName := 'IFIMGST1'; hDeviceHandle := ImgOpen(lpszName); : BufInfo.pBufferAddress := Pointer(-1); BufInfo.dwBufferSize := 640*480*3; : nRet := ImgSetBuffer(hDeviceHandle, Buffer, IFIMG_COLOR_RGB24); nRet := ImgGetMemPtrValue(hDevice, pBuffer); ●Visual C# .NET(x64) IntPtr hDeviceHandle; IFCIMG_ANY.IMGBUFFERINFO Buffer; int nRet; IntPtr array_p; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGST1”); : Buffer.pBufferAddress = new IntPtr(-1); Buffer.dwBufferSize = 640*480*3; nRet = IFCIMG_ANY.ImgSetBuffer(hDeviceHandle, ref Buffer, IFCIMG_ANY.IFIMG_COLOR_RGB24); nRet = IFCIMG_ANY.ImgGetMemPtrValue(hDeviceHandle, out array_p); © 2003, 2016 Interface Corporation. All rights reserved. 70 GPC-5520 Help for Windows ●Visual Basic .NET(x64) Dim lpszName As String Dim hDeviceHandle As IntPtr Dim buffersize As Integer Dim array_p As IntPtr lpszName = “IFIMGST1” hDeviceHandle = IFCIMG.ImgOpen(lpszName) : : buffersize = 640*480*3 nRet = IFCIMG_ANY.ImgSetBufferVB(_ hDeviceHandle, New IntPtr(-1), buffersize, IFCIMG.IFIMG_COLOR_RGB24) nRet = IFCIMG_ANY.ImgGetMemPtrValue(hDeviceHandle, array_p) メインメモリから先頭アドレスを取得します。 © 2003, 2016 Interface Corporation. All rights reserved. 71 GPC-5520 Help for Windows 8. ImgStartCapture 【機能】 キャプチャ、または画像処理データ転送を開始します。 (画像処理データの転送は CTP/CPZ/PCI-5524/5534/5525/5535/5526/5536 専用です。) 【書式】 ●C 言語 INT ImgStartCapture( HANDLE DWORD DWORD ); hDeviceHandle, dwFrameCnt, dwStartMode // // // ●Visual Basic Declare Function ImgStartCapture Lib "IfImg.dll"( ByVal hDeviceHandle As Long, _ ‘ ByVal dwFrameCnt As Long, _ ‘ ByVal dwStartMode As Long _ ‘ )As Long ●Delphi function ImgStartCapture ( hDeviceHandle: THandle; dwFrameCnt: DWORD; dwStartMode DWORD ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgStartCapture( IntPtr hDeviceHandle, uint dwFrameCnt, uint dwStartMode ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgStartCapture( uint hDeviceHandle, uint dwFrameCnt, uint dwStartMode ); _ デバイスハンドル キャプチャフレーム数 キャプチャ開始モード // // // デバイスハンドル キャプチャフレーム数 キャプチャ開始モード // // // デバイスハンドル キャプチャフレーム数 キャプチャ開始モード // // // デバイスハンドル キャプチャフレーム数 キャプチャ開始モード © 2003, 2016 Interface Corporation. All rights reserved. 72 デバイスハンドル キャプチャフレーム数 キャプチャ開始モード GPC-5520 Help for Windows ●Visual Basic .NET(x86、x64 共用) Declare Function ImgStartCapture Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByVal dwFrameCnt As Integer, ‘ キャプチャフレーム数 ByVal dwStartMode As Integer ‘ キャプチャ開始モード )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgStartCapture Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByVal dwFrameCnt As Integer, ‘ キャプチャフレーム数 ByVal dwStartMode As Integer ‘ キャプチャ開始モード )As Integer ●Delphi 8 class function ImgStartCapture ( hDeviceHandle: Integer; dwFrameCnt: Cardinal; dwStartMode Cardinal ): Integer; static; // // // デバイスハンドル キャプチャフレーム数 キャプチャ開始モード 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 dwFrameCnt キャプチャフレーム数を指定します。 値 0 0 以外(1~) 意味 繰り返し ImgStopCapture関数を実行するまでキャプチャします。 指定フレーム数キャプチャ後、停止します。 dwStartMode キャプチャ開始モードを指定します。識別子の OR 論理を渡すことにより、DMA、SDRAM の よるキャプチャを同時に実行することが可能です。 ただし、データフォーマットは必ず、同じフォーマットを指定してください。 識別子 IFIMG_DMACAPTURE_START IFIMG_SDRAMCAPTURE_START 値 00000001h 00000002h 意味 DMA 転送によるキャプチャ SDRAM へのキャプチャ 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 © 2003, 2016 Interface Corporation. All rights reserved. 73 GPC-5520 Help for Windows 【備考】 繰り返しキャプチャを実行する場合、リングバッファ形式で設定したバッファ領域に対して上 書きされます。 ImgSetBuffer 関数、ImgSetBufferVB 関数で解像度を 640×480 モード(PAL 対応画像入力製品の 場合は 768×572 モード)で指定した場合、映像入力機器から取り込んだデータは、奇数フィー ルドと偶数フィールドに分離した状態でメインメモリへと転送します。 ■NTSC 製品の場合 640 pixel 奇数フィールド (ライン 1~240) 480 pixel 偶数フィールド (ライン 241~480) ■PAL 製品の場合 768 pixel 奇数フィールド (ライン 1~286) 572 pixel 偶数フィールド (ライン 287~572) © 2003, 2016 Interface Corporation. All rights reserved. 74 GPC-5520 Help for Windows 奇数フィールドデータと偶数フィールドデータを交互に配置することで、1 フレームのデータ となります。 (NTSC 製品の場合) 1 奇数フィールドデータ 2 偶数フィールドデータ 3 奇数フィールドデータ 4 偶数フィールドデータ 5 奇数フィールドデータ 6 偶数フィールドデータ 7 奇数フィールドデータ 8 偶数フィールドデータ … … 479 奇数フィールドデータ 480 偶数フィールドデータ ライン 1 ライン 241 ライン 2 ライン 242 ライン 3 ライン 243 ライン 4 ライン 244 … ライン 240 ライン 480 (PAL 製品の場合) 1 奇数フィールドデータ 2 偶数フィールドデータ 3 奇数フィールドデータ 4 偶数フィールドデータ 5 奇数フィールドデータ 6 偶数フィールドデータ 7 奇数フィールドデータ 8 偶数フィールドデータ … … 571 奇数フィールドデータ 572 偶数フィールドデータ ライン 1 ライン 287 ライン 2 ライン 288 ライン 3 ライン 289 ライン 4 ライン 290 … ライン 286 ライン 572 詳細については『4.6 動作仕様』 を参照ください。 © 2003, 2016 Interface Corporation. All rights reserved. 75 GPC-5520 Help for Windows 【使用例】 ●C 言語 HANDLE hDeviceHandle; IMGBUFFERINFO Buffer; int nRet; hDeviceHandle = ImgOpen(“IFIMGST1”); : : nRet = ImgSetBuffer(hDeviceHandle, &Buffer, IFIMG_COLOR_RGB24); : nRet = ImgStartCapture(hDeviceHandle, 10, IFIMG_DMACAPTURE_START); ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long IMGBUFFERINFO Buffer Dim nRet As Long lpszName = “IFIMGST1” hDeviceHandle = ImgOpen(lpszName) : : nRet = ImgSetBuffer(hDeviceHandle, Buffer, IFIMG_COLOR_RGB24) : nRet = ImgStartCapture(hDeviceHandle, 10, IFIMG_DMACAPTURE_START) ●Delphi var lpszName: String; hDeviceHandle: THandle; Buffer: IMGBUFFERINFO; nRet: Integer; lpszName := 'IFIMGST1'; hDeviceHandle := ImgOpen(lpszName); : : nRet := ImgSetBuffer(hDeviceHandle, Buffer, IFIMG_COLOR_RGB24); : nRet := ImgStartCapture(hDeviceHandle, 10, IFIMG_DMACAPTURE_START); © 2003, 2016 Interface Corporation. All rights reserved. 76 GPC-5520 Help for Windows ●Visual C# .NET IntPtr hDeviceHandle; IFCIMG.IMGBUFFERINFO Buffer; int nRet; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGST1”); : : nRet = IFCIMG_ANY.ImgSetBuffer(hDeviceHandle, G_COLOR_RGB24); : nRet = IFCIMG.ImgStartCapture(hDeviceHandle, 10, IFCIMG.IFIMG_DMACAPTURE_START); ●Visual C# .NET(x86) IntPtr hDeviceHandle; IFCIMG_ANY.IMGBUFFERINFO Buffer; int nRet; IntPtr array_p; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGST1”); : : array_p = Marshal.AllocCoTaskMem(640*480*3*10); Buffer.pBufferAddress = array_p; Buffer.dwBufferSize = 640*480*3*10; nRet = IFCIMG_ANY.ImgSetBuffer(hDeviceHandle, ref Buffer, IFCIMG_ANY.IFIMG_COLOR_RGB24); nRet = IFCIMG_ANY.ImgStartCapture(hDeviceHandle, 10, IFCIMG_ANY.IFIMG_DMACAPTURE_START); © 2003, 2016 Interface Corporation. All rights reserved. 77 GPC-5520 Help for Windows ●Visual C# .NET(x64) IntPtr hDeviceHandle; IFCIMG_ANY.IMGBUFFERINFO Buffer; int nRet; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGST1”); : : Buffer.pBufferAddress = new IntPtr(-1); Buffer.dwBufferSize = 640*480*3*10; nRet = IFCIMG_ANY.ImgSetBuffer(hDeviceHandle, ref Buffer, IFCIMG_ANY.IFIMG_COLOR_RGB24); nRet = IFCIMG_ANY.ImgStartCapture(hDeviceHandle, 10, IFCIMG_ANY.IFIMG_DMACAPTURE_START); ●Visual Basic .NET(x86) Dim lpszName As String Dim hDeviceHandle As IntPtr Dim buffersize As Integer Dim buffer(640*480*3*10) As Byte lpszName = “IFIMGST1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : : buffersize = 640*480*3*10 nRet = IFCIMG_ANY.ImgSetBufferVB(_ hDeviceHandle, buffer, buffersize, IFCIMG_ANY.IFIMG_COLOR_RGB24) nRet = IFCIMG_ANY.ImgStartCapture(hDeviceHandle,_ 10, IFCIMG_ANY.IFIMG_DMACAPTURE_START) © 2003, 2016 Interface Corporation. All rights reserved. 78 GPC-5520 Help for Windows ●Visual Basic .NET(x64) Dim lpszName As String Dim hDeviceHandle As IntPtr Dim buffersize As Integer Dim array_p As IntPtr lpszName = “IFIMGST1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : : buffersize = 640*480*3*10 nRet = IFCIMG_ANY.ImgSetBufferVB(_ hDeviceHandle, New IntPtr(-1), buffersize, IFCIMG_ANY.IFIMG_COLOR_RGB24) nRet = IFCIMG_ANY.ImgStartCapture(hDeviceHandle,_ 10, IFCIMG_ANY.IFIMG_DMACAPTURE_START) ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; Buffer: IFCIMG.IMGBUFFERINFO; nRet: Integer; lpszName := 'IFIMGST1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); : : nRet := IFCIMG.ImgSetBuffer(hDeviceHandle, Buffer, IFCIMG.IFIMG_COLOR_RGB24); : nRet := IFCIMG.ImgStartCapture(hDeviceHandle, 10, IFCIMG.IFIMG_DMACAPTURE_START); デバイス名「IFIMGST1」のデバイスに対して DMA 転送によるキャプチャを開始します。 © 2003, 2016 Interface Corporation. All rights reserved. 79 GPC-5520 Help for Windows 9. ImgStopCapture 【機能】 キャプチャ、または画像処理データ転送を停止します。 【書式】 ●C 言語 INT ImgStopCapture( HANDLE DWORD ); hDeviceHandle, dwStopMode // // デバイスハンドル 停止モード ●Visual Basic Declare Function ImgStopCapture Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByVal dwStopMode As Long _ ‘ 停止モード )As Long ●Delphi function ImgStopCapture ( hDeviceHandle: THandle; dwStopMode: DWORD ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ( IntPtr hDeviceHandle, uint dwStopMode ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ( uint hDeviceHandle, uint dwStopMode ); // // デバイスハンドル 停止モード // // デバイスハンドル 停止モード // // デバイスハンドル 停止モード ●Visual Basic .NET(x86、x64 共用) Declare Function ImgStopCapture Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ ByVal dwStopMode As Integer ‘ )As Integer デバイスハンドル 停止モード © 2003, 2016 Interface Corporation. All rights reserved. 80 GPC-5520 Help for Windows ●Visual Basic .NET(x86 専用) Declare Function ImgStopCapture Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ ByVal dwStopMode As Integer ‘ )As Integer ●Delphi 8 class function ImgStopCapture ( hDeviceHandle: Integer; dwStopMode: Cardinal ): Integer; static; デバイスハンドル 停止モード // // デバイスハンドル 停止モード 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 dwStopMode キャプチャ停止モードを指定します。識別子の論理和で指定します。 識別子 IFIMG_FRAME_STOP 値 00000001h IFIMG_IMMEDIATE_STOP IFIMG_SDRAM_FRAME_STOP 00000002h 00000004h IFIMG_SDRAM_IMMEDIATE_STOP 00000008h 意味 DMA キャプチャによる フレーム単位で転送停止 DMA キャプチャによる即停止 SDRAM キャプチャ によるフレーム単位で転送停止 SDRAM キャプチャによる即停止 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 【備考】 dwStopMode にフレーム単位での転送停止を指定した場合、関数から戻っても、キャプチャは動 作しています。(フレーム転送が完了するまで) 即停止が有効となります。 © 2003, 2016 Interface Corporation. All rights reserved. 81 GPC-5520 Help for Windows 【使用例】 ●C 言語 HANDLE hDeviceHandle; int nRet; hDeviceHandle = ImgOpen(“IFIMGST1”); : nRet = ImgSetBuffer(hDeviceHandle, &Buffer, IFIMG_COLOR_RGB24); : nRet = ImgStartCapture(hDeviceHandle, 0, IFIMG_DMACAPTURE_START); : nRet = ImgStopCapture(hDeviceHandle, IFIMG_FRAME_STOP); ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim nRet As Long lpszName = “IFIMGST1” hDeviceHandle = ImgOpen(lpszName) : nRet = ImgSetBuffer(hDeviceHandle, Buffer, IFIMG_COLOR_RGB24) : nRet = ImgStartCapture(hDeviceHandle, 0, IFIMG_DMACAPTURE_START) : nRet = ImgStopCapture(hDeviceHandle, IFIMG_FRAME_STOP) ●Delphi var lpszName: String; hDeviceHandle: THandle; nRet: Integer; lpszName := 'IFIMGST1'; hDeviceHandle := ImgOpen(lpszName); : nRet := ImgSetBuffer(hDeviceHandle, Buffer, IFIMG_COLOR_RGB24); : nRet := ImgStartCapture(hDeviceHandle, 0, IFIMG_DMACAPTURE_START); : nRet := ImgStopCapture(hDeviceHandle, IFIMG_FRAME_STOP); © 2003, 2016 Interface Corporation. All rights reserved. 82 GPC-5520 Help for Windows ●Visual C# .NET IntPtr hDeviceHandle; int nRet; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGST1”); : nRet = IFCIMG_ANY.ImgSetBuffer(hDeviceHandle, ref Buffer, IFCIMG_ANY.IFIMG_COLOR_RGB24); : nRet = IFCIMG_ANY.ImgStartCapture(hDeviceHandle, 0, IFCIMG_ANY.IFIMG_DMACAPTURE_START); : nRet = IFCIMG_ANY.ImgStopCapture(hDeviceHandle, IFCIMG_ANY.IFIMG_FRAME_STOP); ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim nRet As Integer lpszName = “IFIMGST1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : nRet = IFCIMG_ANY.ImgSetBuffer(hDeviceHandle, Buffer, IFCIMG_ANY.IFIMG_COLOR_RGB24) : nRet = IFCIMG_ANY.ImgStartCapture(hDeviceHandle, 0, _ IFCIMG_ANY.IFIMG_DMACAPTURE_START) : nRet = IFCIMG_ANY.ImgStopCapture(hDeviceHandle, IFCIMG_ANY.IFIMG_FRAME_STOP) ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; nRet: Integer; lpszName := 'IFIMGST1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); : nRet := IFCIMG.ImgSetBuffer(hDeviceHandle, Buffer, IFCIMG.IFIMG_COLOR_RGB24); : nRet := IFCIMG.ImgStartCapture(hDeviceHandle, 0, IFCIMG.IFIMG_DMACAPTURE_START); : nRet := IFCIMG.ImgStopCapture(hDeviceHandle, IFCIMG.IFIMG_FRAME_STOP); デバイス名「IFIMGST1」のデバイスに対してキャプチャを停止します。 © 2003, 2016 Interface Corporation. All rights reserved. 83 GPC-5520 Help for Windows 10. ImgSetPosition 【機能】 キャプチャする画像の、水平位置と垂直位置を調整します。 【書式】 ●C 言語 INT ImgSetPosition( HANDLE INT INT hDeviceHandle, nHorizontal, nVertical // // デバイスハンドル 水平位置 // 垂直位置 ); ●Visual Basic Declare Function ImgSetPosition Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByVal nHorizontal As Long, _ ‘ 水平位置 ByVal nVertical As Long _ ‘ 垂直位置 )As Long ●Delphi function ImgSetPosition ( hDeviceHandle: THandle; nHorizontal: Cardinal; nVertical Cardinal ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetPosition( IntPtr hDeviceHandle, int nHorizontal, int nVertical // // デバイスハンドル 水平位置 // 垂直位置 // // デバイスハンドル 水平位置 // 垂直位置 // // デバイスハンドル 水平位置 // 垂直位置 ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetPosition( uint hDeviceHandle, int nHorizontal, int nVertical ); © 2003, 2016 Interface Corporation. All rights reserved. 84 GPC-5520 Help for Windows ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetPosition Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ ByVal nHorizontal As Integer, ‘ ByVal nVertical As Integer ‘ デバイスハンドル 水平位置 垂直位置 )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgSetPosition Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ ByVal nHorizontal As Integer, ‘ ByVal nVertical As Integer ‘ デバイスハンドル 水平位置 垂直位置 )As Integer ●Delphi 8 class function ImgSetPosition ( hDeviceHandle: Integer; nHorizontal: Cardinal; nVertical Cardinal // // デバイスハンドル 水平位置 // 垂直位置 ): Integer; static; 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 nHorizontal 水平位置を指定して下さい。 設定範囲:-8 ~ +7 -8~-1 右へ移動 0 基準位置(初期位置) 1~7 左へ移動 nVertical 垂直位置を指定して下さい。 設定範囲:-4 ~ +4 -4~-1 下へ移動 0 基準位置(初期位置) 1~4 上へ移動 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 © 2003, 2016 Interface Corporation. All rights reserved. 85 GPC-5520 Help for Windows 【備考】 キャプチャ中に本関数を実行することは出来ません。 【使用例】 ●C 言語 HANDLE hDeviceHandle; int nRet; hDeviceHandle = ImgOpen(“IFIMGST1”); : : nRet = ImgSetPosition(hDeviceHandle, 1. 1); ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim nRet As Long lpszName = “IFIMGST1” hDeviceHandle = ImgOpen(lpszName) : : nRet = ImgSetPosition(hDeviceHandle, 1, 1) ●Delphi var lpszName: String; hDeviceHandle: THandle; nRet: Integer lpszName := 'IFIMGST1'; hDeviceHandle := ImgOpen(lpszName); : : nRet := ImgSetPosition(hDeviceHandle, 1, 1); ●Visual C# .NET IntPtr hDeviceHandle; int nRet; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGST1”); : : nRet = IFCIMG_ANY.ImgSetPosition(hDeviceHandle, 1. 1); © 2003, 2016 Interface Corporation. All rights reserved. 86 GPC-5520 Help for Windows ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim nRet As Integer lpszName = “IFIMGST1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : : nRet = IFCIMG_ANY.ImgSetPosition(hDeviceHandle, 1, 1) ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; nRet: Integer lpszName := 'IFIMGST1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); : : nRet := IFCIMG.ImgSetPosition(hDeviceHandle, 1, 1); デバイス名「IFIMGST1」のデバイスに対して、 「水平位置 = +1」 「垂直位置 = +1」の設定を行 います。 © 2003, 2016 Interface Corporation. All rights reserved. 87 GPC-5520 Help for Windows 11. ImgSetOutputMode 【機能】 映像出力(チャンネル 2)の出力モードの設定を行います。 【書式】 ●C 言語 INT ImgSetOutputMode( HANDLE hDeviceHandle, WORD wMode ); // // デバイスハンドル 出力モード ●Visual Basic Declare Function ImgSetOutputMode Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByVal wMode As Integer _ ‘ 出力モード )As Long ●Delphi function ImgSetOutputMode ( hDeviceHandle: THandle; wMode: WORD ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetOutputMode( IntPtr hDeviceHandle, short wMode ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetOutputMode( uint hDeviceHandle, short wMode ); // // デバイスハンドル 出力モード // // デバイスハンドル 出力モード // // デバイスハンドル 出力モード ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetOutputMode Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByVal wMode As Short ‘ 出力モード )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 88 GPC-5520 Help for Windows ●Visual Basic .NET(x86 専用) Declare Function ImgSetOutputMode Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByVal wMode As Short ‘ 出力モード )As Integer ●Delphi 8 class function ImgSetOutputMode ( hDeviceHandle: Integer; wMode: Word ): Integer; static; // // デバイスハンドル 出力モード 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 wMode 出力モードを指定して下さい。 識別子 IFIMG_OUTMODE_THROUGH 値 00000001h IFIMG_OUTMODE_COLORBAR IFIMG_OUTMODE_STILL_PICTURE 00000002h 00000003h 意味 映像入力端子に入力されたデータ をそのまま出力します。 カラーバーを出力します。 静止画を出力します。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 【備考】 IFIMG_OUTMODE_STILL_PICTURE 指定による静止画出力機能は PCI/CPZ/CTP-5525,5535,5526,5536 専用の機能です。 本関数を実行した瞬間の画像を静止画像として出力します。 静止画出力中に ImgSetConversionConfig 関数で、フィルタ処理や膨張・収縮処理を無効に設定 しないでください。静止画出力が解除されます。 また、静止画出力中にキャプチャを行なうと静止画像がキャプチャされます。 2 値画像、フィルタ画像でキャプチャすると、静止画を 2 値化、フィルタ処理した画像がキャ プチャされます。 映像出力端子から出力される画像も同様に処理されます。 © 2003, 2016 Interface Corporation. All rights reserved. 89 GPC-5520 Help for Windows 【使用例】 ●C 言語 int nRet; HANDLE hDeviceHandle; hDeviceHandle = ImgOpen(“IFIMGST1”); : : nRet = ImgSetOutputMode(hDeviceHandle, IFIMG_OUTMODE_COLORBAR); ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim nRet As Long lpszName = “IFIMGST1” hDeviceHandle = ImgOpen(lpszName) : : nRet = ImgSetOutputMode(hDeviceHandle, IFIMG_OUTMODE_COLORBAR) ●Delphi var lpszName: String; hDeviceHandle: THandle; nRet: Integer; lpszName := 'IFIMGST1'; hDeviceHandle := ImgOpen(lpszName); : : nRet := ImgSetOutputMode(hDeviceHandle, IFIMG_OUTMODE_COLORBAR); ●Visual C# .NET int nRet; IntPtr hDeviceHandle; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGST1”); : : nRet = IFCIMG_ANY.ImgSetOutputMode(hDeviceHandle, IFCIMG_ANY.IFIMG_OUTMODE_COLORBAR); © 2003, 2016 Interface Corporation. All rights reserved. 90 GPC-5520 Help for Windows ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim nRet As Integer lpszName = “IFIMGST1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : : nRet = IFCIMG_ANY.ImgSetOutputMode(hDeviceHandle, IFCIMG_ANY.IFIMG_OUTMODE_COLORBAR) ●Delphi 8 var lpszName: String; hDeviceHandle: Integr; nRet: Integer; lpszName := 'IFIMGST1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); : : nRet := IFCIMG.ImgSetOutputMode(hDeviceHandle, IFCIMG.IFIMG_OUTMODE_COLORBAR); デバイス名「IFIMGST1」のチャンネル 2 をカラーバー出力に設定します。 © 2003, 2016 Interface Corporation. All rights reserved. 91 GPC-5520 Help for Windows 12. ImgSetBinarizationConfig 2 値化処理条件を設定します。 【書式】 ●C 言語 INT ImgSetBinarizationConfig( HANDLE hDeviceHandle, PIMGBINCONFIG pBinConfig // デバイスハンドル // IMGBINCONFIG 構造体 へのポインタ ); ●Visual Basic Declare Function ImgSetBinarizationConfig Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByRef pBinConfig As IMGBINCONFIG _ ‘ IMGBINCONFIG 構造体 への参照渡し )As Long ●Delphi function ImgSetBinarizationConfig ( hDeviceHandle: THandle; var pBinConfig: IMGBINCONFIG // デバイスハンドル // IMGBINCONFIG 構造体 への参照渡し ): Integer; stdcall; external 'IfImg.dll'; ●VISUAL C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetBinarizationConfig( IntPtr hDeviceHandle, // デバイスハンドル ref IMGBINCONFIG pBinConfig // IMGBINCONFIG 構造体 へのポインタ ); ●VISUAL C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetBinarizationConfig( uint hDeviceHandle, // デバイスハンドル ref IMGBINCONFIG pBinConfig // IMGBINCONFIG 構造体 へのポインタ ); ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetBinarizationConfig Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByRef pBinConfig As IMGBINCONFIG ‘ IMGBINCONFIG 構造体 への参照渡し )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 92 GPC-5520 Help for Windows ●Visual Basic .NET(x86 専用) Declare Function ImgSetBinarizationConfig Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByRef pBinConfig As IMGBINCONFIG ‘ IMGBINCONFIG 構造体 への参照渡し )As Integer ●Delphi 8 class function ImgSetBinarizationConfig ( hDeviceHandle: Integer; var pBinConfig: IMGBINCONFIG // デバイスハンドル // IMGBINCONFIG 構造体 への参照渡し ): Integer; static; 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 pBinConfig IMGBINCONFIG構造体へのポインタを指定してください。 構造体の説明については、『4.4 構造体』をご参照ください。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 【使用例】 ●C 言語 IMGBINCONFIG BinConf; HANDLE hDeviceHandle; int nRet; hDeviceHandle = ImgOpen(“IFIMGBIN1”); : BinConf.dwColorIngredient = IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold = 255; BinConf.dwMinthreshold = 128; BinConf.dwBinarizationMode = IFIMG_BINMODE_NORMAL; nRet = ImgSetBinarizationConfig(hDeviceHandle, &BinConf); © 2003, 2016 Interface Corporation. All rights reserved. 93 GPC-5520 Help for Windows ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim BinConf As IMGBINCONFIG Dim nRet As Long lpszName = “IFIMGBIN1” hDeviceHandle = ImgOpen(lpszName) : BinConf.dwColorIngredient = IFIMG_INGREDIENT_GRAY BinConf.dwMaxthreshold = 255 BinConf.dwMinthreshold = 128 BinConf.dwBinarizationMode = IFIMG_BINMODE_NORMAL nRet = ImgSetBinarizationConfig (hDeviceHandle, BinConf) ●Delphi var lpszName: String; hDeviceHandle: THandle; nRet: Integer; BinConf: IMGBINCONFIG; lpszName := 'IFIMGBIN1'; hDeviceHandle := ImgOpen(lpszName); : : BinConf.dwColorIngredient := IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold := 255; BinConf.dwMinthreshold := 128; BinConf.dwBinarizationMode := IFIMG_BINMODE_NORMAL; nRet := ImgSetBinarizationConfig(hDeviceHandle, BinConf); © 2003, 2016 Interface Corporation. All rights reserved. 94 GPC-5520 Help for Windows ●Visual C# .NET IFCIMG_ANY.IMGBINCONFIG BinConf; IntPtr hDeviceHandle; int nRet; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGBIN1”); : BinConf.dwColorIngredient = IFCIMG_ANY.IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold = 255; BinConf.dwMinthreshold = 128; BinConf.dwBinarizationMode = IFCIMG_ANY.IFIMG_BINMODE_NORMAL; nRet = IFCIMG_ANY.ImgSetBinarizationConfig(hDeviceHandle, ref BinConf); ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim BinConf As IFCIMG_ANY.IMGBINCONFIG Dim nRet As Integer lpszName = “IFIMGBIN1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : BinConf.dwColorIngredient = IFCIMG_ANY.IFIMG_INGREDIENT_GRAY BinConf.dwMaxthreshold = 255 BinConf.dwMinthreshold = 128 BinConf.dwBinarizationMode = IFCIMG_ANY.IFIMG_BINMODE_NORMAL nRet = IFCIMG_ANY.ImgSetBinarizationConfig (hDeviceHandle, BinConf) © 2003, 2016 Interface Corporation. All rights reserved. 95 GPC-5520 Help for Windows ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; nRet: Integer; BinConf: IFCIMG.IMGBINCONFIG; lpszName := 'IFIMGBIN1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); : : BinConf.dwColorIngredient := IFCIMG.IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold := 255; BinConf.dwMinthreshold := 128; BinConf.dwBinarizationMode := IFCIMG.IFIMG_BINMODE_NORMAL; nRet := IFCIMG.ImgSetBinarizationConfig(hDeviceHandle, BinConf); デバイス名「IFIMGBIN1」のデバイスに対して、2 値化処理設定を行います。 2 値化対象とする画像データの色成分を輝度成分、上限しきい値を 255、下限しきい値を 128、 上限と下限の間の場合、2 値化データを”0xFF”にします。 © 2003, 2016 Interface Corporation. All rights reserved. 96 GPC-5520 Help for Windows 13. ImgSetMeasurementRange 面積、重心の測定範囲を設定します。 ※解像度設定が「320×240」または「160×120」の場合、面積、重心の機能は使用できません。 【書式】 ●C 言語 INT ImgSetMeasurementRange( HANDLE hDeviceHandle, DWORD dwStartPointX, DWORD dwStartPointY, DWORD dwXLength, DWORD dwYLength ); // デバイスハンドル // 始点の X 座標 // 始点の Y 座標 // 始点からの長さ(X 方向) // 始点からの長さ(Y 方向) ●Visual Basic Declare Function ImgSetMeasurementRange Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByVal dwStartPointX As Long, _ ‘ 始点の X 座標 ByVal dwStartPointY As Long, _ ‘ 始点の Y 座標 ByVal dwXLength As Long, _ ‘ 始点からの長さ(X 方向) ByVal dwYLength As Long _ ‘ 始点からの長さ(Y 方向) )As Long ●Delphi function ImgSetMeasurementRange ( hDeviceHandle: THandle; dwStartPointX: DWORD; dwStartPointY: DWORD; dwXLength: DWORD; dwYLength: DWORD ): Integer; stdcall; external 'IfImg.dll'; // デバイスハンドル // 始点の X 座標 // 始点の Y 座標 // 始点からの長さ(X 方向) // 始点からの長さ(Y 方向) ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetMeasurementRange( IntPtr hDeviceHandle, // デバイスハンドル uint dwStartPointX, // 始点の X 座標 uint dwStartPointY, // 始点の Y 座標 uint dwXLength, // 始点からの長さ(X 方向) uint dwYLength // 始点からの長さ(Y 方向) ); © 2003, 2016 Interface Corporation. All rights reserved. 97 GPC-5520 Help for Windows ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetMeasurementRange( uint hDeviceHandle, // デバイスハンドル uint dwStartPointX, // 始点の X 座標 uint dwStartPointY, // 始点の Y 座標 uint dwXLength, // 始点からの長さ(X 方向) uint dwYLength // 始点からの長さ(Y 方向) ); ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetMeasurementRange Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByVal dwStartPointX As Integer, ‘ 始点の X 座標 ByVal dwStartPointY As Integer, ‘ 始点の Y 座標 ByVal dwXLength As Integer, ‘ 始点からの長さ(X 方向) ByVal dwYLength As Integer ‘ 始点からの長さ(Y 方向) )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgSetMeasurementRange Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByVal dwStartPointX As Integer, ‘ 始点の X 座標 ByVal dwStartPointY As Integer, ‘ 始点の Y 座標 ByVal dwXLength As Integer, ‘ 始点からの長さ(X 方向) ByVal dwYLength As Integer ‘ 始点からの長さ(Y 方向) )As Integer ●Delphi 8 class function ImgSetMeasurementRange ( hDeviceHandle: Integer; dwStartPointX: Cardinal; dwStartPointY: Cardinal; dwXLength: Cardinal; dwYLength: Cardinal ): Integer; static; // デバイスハンドル // 始点の X 座標 // 始点の Y 座標 // 始点からの長さ(X 方向) // 始点からの長さ(Y 方向) 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 dwStartPointX 測定範囲の開始座標における X 座標を指定します。(0~639) dwStartPointY 測定範囲の開始座標における Y 座標を指定します。(0~479) © 2003, 2016 Interface Corporation. All rights reserved. 98 GPC-5520 Help for Windows dwXLength 開始座標からの X 軸方向への長さを指定します。(1~640) dwYLength 開始座標からの Y 軸方向への長さを指定します。(1~480) 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESS が返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 【備考】 開始座標は測定範囲の左上となります。 640 (0,0) X:dwStartPointX 開始座標 dwXLength Y:dwStartPointY (X,Y) 480 dwYLength (479,639) 【使用例】 ●C 言語 HANDLE hDeviceHandle; IMGBINCONFIG BinConf; HANDLE hDeviceHandle; int nRet; hDeviceHandle = ImgOpen(“IFIMGBIN1”); : BinConf.dwColorIngredient = IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold = 255; BinConf.dwMinthreshold = 128; BinConf.dwBinarizationMode = IFIMG_BINMODE_NORMAL; : nRet = ImgSetBinarizationConfig(hDeviceHandle, &BinConf); : nRet = ImgSetMeasurementRange(hDeviceHandle, 0, 0, 320, 240); © 2003, 2016 Interface Corporation. All rights reserved. 99 GPC-5520 Help for Windows ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim nRet As Long Dim pBinConf As IMGBINCONFIG lpszName = “IFIMGBIN1” hDeviceHandle = ImgOpen(lpszName) : BinConf.dwColorIngredient = IFIMG_INGREDIENT_GRAY BinConf.dwMaxthreshold = 255 BinConf.dwMinthreshold = 128 BinConf.dwBinarizationMode = IFIMG_BINMODE_NORMAL : nRet = ImgSetBinarizationConfig (hDeviceHandle, BinConf) : : nRet = ImgSetMeasurementRange (hDeviceHandle, 0, 0, 320, 240) ●Delphi var lpszName: String; hDeviceHandle: THandle; nRet: Integer; BinConf: IMGBINCONFIG; lpszName := 'IFIMGBIN1'; hDeviceHandle := ImgOpen(lpszName); : : BinConf.dwColorIngredient := IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold := 255; BinConf.dwMinthreshold := 128; BinConf.dwBinarizationMode := IFIMG_BINMODE_NORMAL; nRet := ImgSetBinarizationConfig(hDeviceHandle, BinConf); : nRet := ImgSetMeasurementRange(hDeviceHandle, 0, 0, 320, 240); © 2003, 2016 Interface Corporation. All rights reserved. 100 GPC-5520 Help for Windows ●Visual C# .NET IntPtr hDeviceHandle; IFCIMG_ANY.IMGBINCONFG BinConf; int nRet; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGBIN1”); : BinConf.dwColorIngredient = IFCIMG_ANY.IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold = 255; BinConf.dwMinthreshold = 128; BinConf.dwBinarizationMode = IFCIMG_ANY.IFIMG_BINMODE_NORMAL; : nRet = IFCIMG_ANY.ImgSetBinarizationConfig(hDeviceHandle, ref BinConf); : nRet = IFCIMG_ANY.ImgSetMeasurementRange(hDeviceHandle, 0, 0, 320, 240); ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim nRet As Integer Dim pBinConf As IFCIMG_ANY.IMGBINCONFIG lpszName = “IFIMGBIN1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : BinConf.dwColorIngredient = IFCIMG_ANY.IFIMG_INGREDIENT_GRAY BinConf.dwMaxthreshold = 255 BinConf.dwMinthreshold = 128 BinConf.dwBinarizationMode = IFCIMG_ANY.IFIMG_BINMODE_NORMAL : nRet = IFCIMG_ANY.ImgSetBinarizationConfig (hDeviceHandle, BinConf) : : nRet = IFCIMG_ANY.ImgSetMeasurementRange (hDeviceHandle, 0, 0, 320, 240) © 2003, 2016 Interface Corporation. All rights reserved. 101 GPC-5520 Help for Windows ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; nRet: Integer; BinConf: IFCIMG.IMGBINCONFIG; lpszName := 'IFIMGBIN1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); : : BinConf.dwColorIngredient := IFCIMG.IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold := 255; BinConf.dwMinthreshold := 128; BinConf.dwBinarizationMode := IFCIMG.IFIMG_BINMODE_NORMAL; nRet := IFCIMG.ImgSetBinarizationConfig(hDeviceHandle, BinConf); : nRet := IFCIMG.ImgSetEventMask(hDeviceHandle, 0, 0, 320, 240); デバイス名「IFIMGBIN1」のデバイスに対して、2 値化処理設定を行います。 2 値化対象の色成分を輝度成分、上限しきい値を 255、下限しきい値を 128、上限と下限の間の 場合、2 値化データを 0xFF にします。 また、面積値、重心値を求める為の測定範囲を指定します。開始点(0,0)(左上)とし、開始点 からの X 方向を 320、Y 方向を 240 とした測定範囲を設定します。 © 2003, 2016 Interface Corporation. All rights reserved. 102 GPC-5520 Help for Windows 14. ImgGetMeasurementValue キャプチャ処理を完了した最新のフレームに対する面積、重心値を取得します。 ※解像度の設定が「320×240」または「160×120」の場合、本関数は実行できません。 【書式】 ●C 言語 INT ImgGetMeasurementValue( HANDLE hDeviceHandle, PDWORD pdwArea, PDWORD pdwXcoordinates, PDWORD pdwYcoordinates, PDWORD pdwFrameNum ); // // // // // デバイスハンドル 面積 重心 X 座標 重心 Y 座標 フレーム数 ●Visual Basic Declare Function ImgGetMeasurementValue Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByRef pdwArea As Long, _ ‘ 面積 ByRef pdwXcoordinates As Long, _ ‘ 重心 X 座標 ByRef pdwYcoordinates As Long, _ ‘ 重心 Y 座標 ByRef pdwFrameNum As Long _ ‘ フレーム数 )As Long ●Delphi function ImgGetMeasurementValue ( hDeviceHandle: var pdwArea: var pdwXcoordinates: var pdwYcoordinate: var pdwFrameNum: THandle; DWORD; DWORD; DWORD; DWORD ): Integer; stdcall; external 'IfImg.dll'; // // // // // ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgGetMeasurementValue( IntPtr hDeviceHandle, // out uint pdwArea, // out uint pdwXcoordinates, // out uint pdwYcoordinates, // out uint pdwFrameNum // ); © 2003, 2016 Interface Corporation. All rights reserved. 103 デバイスハンドル 面積 X 座標 Y 座標 フレーム数 デバイスハンドル 面積 重心 X 座標 重心 Y 座標 フレーム数 GPC-5520 Help for Windows ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgGetMeasurementValue( uint hDeviceHandle, // out uint pdwArea, // out uint pdwXcoordinates, // out uint pdwYcoordinates, // out uint pdwFrameNum // ); デバイスハンドル 面積 重心 X 座標 重心 Y 座標 フレーム数 ●Visual Basic .NET(x86、x64 共用) Declare Function ImgGetMeasurementValue Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByRef pdwArea As Integer, ‘ 面積 ByRef pdwXcoordinates As Integer, ‘ 重心 X 座標 ByRef pdwYcoordinates As Integer, ‘ 重心 Y 座標 ByRef pdwFrameNum As Integer ‘ フレーム数 )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgGetMeasurementValue Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByRef pdwArea As Integer, ‘ 面積 ByRef pdwXcoordinates As Integer, ‘ 重心 X 座標 ByRef pdwYcoordinates As Integer, ‘ 重心 Y 座標 ByRef pdwFrameNum As Integer ‘ フレーム数 )As Integer ●Delphi 8 class function ImgGetMeasurementValue ( hDeviceHandle: Integer; var pdwArea: Cardinal; var pdwXcoordinates: Cardinal; var pdwYcoordinate: Cardinal; var pdwFrameNum: Cardinal ): Integer; static; // // // // // デバイスハンドル 面積 X 座標 Y 座標 フレーム数 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 pdwArea 計算された面積値を格納するバッファポインタを指定してください。 pdwXcoordinates 計算された重心の X 座標を格納するバッファポインタを指定してください。 © 2003, 2016 Interface Corporation. All rights reserved. 104 GPC-5520 Help for Windows pdwYcoordinates 計算された重心の Y 座標を格納するバッファポインタを指定してください。 pdwFrameNum 計算されたフレーム番号を格納するバッファポインタを指定してください。 このフレーム番号はバスマスタによるキャプチャ時の番号です。 SDRAM キャプチャのフレーム番号は取得できません。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESS が返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 【使用例】 ●C 言語 HANDLE hDeviceHandle; DWORD dwArea; DWORD dwXcoordinates; DWORD dwYcoordinates; DWORD dwFrameNum; HANDLE hDeviceHandle; IMGBINCONFIG pBinConf; int nRet; hDeviceHandle = ImgOpen(“IFIMGBIN1”); : pBinConf.dwColorIngredient = IFIMG_INGREDIENT_GRAY; pBinConf.dwMaxthreshold = 255; pBinConf.dwMinthreshold = 128; pBinConf.dwBinarizationMode = IFIMG_BINMODE_NORMAL; : nRet = ImgSetBinarizationConfig(hDeviceHandle, &pBinConf); : nRet = ImgSetMeasurementRange(hDeviceHandle, 0, 0, 320, 240); : nRet = ImgGetMeasurementValue ( hDeviceHandle, &dwArea, &dwXcoordinates, &dwYcoordinates, &dwFrameNum ); © 2003, 2016 Interface Corporation. All rights reserved. 105 GPC-5520 Help for Windows ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim dwArea As Long Dim dwXcoordinates As Long Dim dwYcoordinates As Long Dim dwFrameNum As Long Dim pBinConf As IMGBINCONFIG Dim nRet As Long lpszName = “IFIMGBIN1” hDeviceHandle = ImgOpen(lpszName) : pBinConf.dwColorIngredient = IFIMG_INGREDIENT_GRAY pBinConf.dwMaxthreshold = 255 pBinConf.dwMinthreshold = 128 pBinConf.dwBinarizationMode = IFIMG_BINMODE_NORMAL : nRet = ImgSetBinarizationConfig (hDeviceHandle, pBinConf) : : nRet = ImgSetMeasurementRange (hDeviceHandle, 0, 0, 320, 240) : : nRet = ImgGetMeasurementValue ( _ hDeviceHandle, _ dwArea, _ dwXcoordinates, _ dwYcoordinates, _ dwFrameNum_ ) © 2003, 2016 Interface Corporation. All rights reserved. 106 GPC-5520 Help for Windows ●Delphi var lpsName:String; hDeviceHandle: THandle; dwArea; DWORD: dwXcoordinates; DWORD: dwYcoordinates; DWORD; dwFrameNum; DWORD; nRet: Integer; pBinConf: IMGBINCONFIG; lpszName := 'IFIMGBIN1'; hDeviceHandle := ImgOpen(lpszName); : : pBinConf.dwColorIngredient := IFIMG_INGREDIENT_GRAY; pBinConf.dwMaxthreshold := 255; pBinConf.dwMinthreshold := 128; pBinConf.dwBinarizationMode := IFIMG_BINMODE_NORMAL; nRet := ImgSetBinarizationConfig(hDeviceHandle, pBinConf); : : nRet := ImgSetEventMask(hDeviceHandle, 0, 0, 320, 240); : : nRet := ImgGetMeasurementValue ( hDeviceHandle, dwArea, dwXcoordinates, dwYcoordinates, dwFrameNum ); © 2003, 2016 Interface Corporation. All rights reserved. 107 GPC-5520 Help for Windows ●Visual C# .NET IntPtr hDeviceHandle; uint dwArea; uint dwXcoordinates; uint dwYcoordinates; uint dwFrameNum; IFCIMG_ANY.IMGBINCONFIG pBinConf; int nRet; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGBIN1”); : pBinConf.dwColorIngredient = IFCIMG_ANY.IFIMG_INGREDIENT_GRAY; pBinConf.dwMaxthreshold = 255; pBinConf.dwMinthreshold = 128; pBinConf.dwBinarizationMode = IFCIMG_ANY.IFIMG_BINMODE_NORMAL; : nRet = IFCIMG_ANY.ImgSetBinarizationConfig(hDeviceHandle, ref pBinConf); : nRet = IFCIMG_ANY.ImgSetMeasurementRange(hDeviceHandle, 0, 0, 320, 240); : nRet = IFCIMG_ANY.ImgGetMeasurementValue ( hDeviceHandle, out dwArea, out dwXcoordinates, out dwYcoordinates, out dwFrameNum ); © 2003, 2016 Interface Corporation. All rights reserved. 108 GPC-5520 Help for Windows ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim dwArea As Integer Dim dwXcoordinates As Integer Dim dwYcoordinates As Integer Dim dwFrameNum As Integer Dim pBinConf As IFCIMG_ANY.IMGBINCONFIG Dim nRet As Integer lpszName = “IFIMGBIN1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : pBinConf.dwColorIngredient = IFCIMG_ANY.IFIMG_INGREDIENT_GRAY pBinConf.dwMaxthreshold = 255 pBinConf.dwMinthreshold = 128 pBinConf.dwBinarizationMode = IFCIMG_ANY.IFIMG_BINMODE_NORMAL : nRet = IFCIMG_ANY.ImgSetBinarizationConfig(hDeviceHandle, pBinConf) : : nRet = IFCIMG_ANY.ImgSetMeasurementRange(hDeviceHandle, 0, 0, 320, 240) : : nRet = IFCIMG_ANY.ImgGetMeasurementValue( _ hDeviceHandle, _ dwArea, _ dwXcoordinates, _ dwYcoordinates, _ dwFrameNum_ ) © 2003, 2016 Interface Corporation. All rights reserved. 109 GPC-5520 Help for Windows ●Delphi 8 var hDeviceHandle: Integer; dwArea; Cardinal: dwXcoordinates; Cardinal: dwYcoordinates; Cardinal; dwFrameNum; Cardinal; nRet: Integer; pBinConf: IFCIMG_ANY.IMGBINCONFG; lpszName := 'IFIMGBIN1'; hDeviceHandle := IFCIMG_ANY.ImgOpen(lpszName); : pBinConf.dwColorIngredient := IFCIMG_ANY.IFIMG_INGREDIENT_GRAY; pBinConf.dwMaxthreshold := 255; pBinConf.dwMinthreshold := 128; pBinConf.dwBinarizationMode := IFCIMG_ANY.IFIMG_BINMODE_NORMAL; nRet := IFCIMG_ANY.ImgSetBinarizationConfig(hDeviceHandle, pBinConf); : : nRet := IFCIMG_ANY.ImgSetEventMask(hDeviceHandle, 0, 0, 320, 240); : nRet := IFCIMG_ANY.ImgGetMeasurementValue ( hDeviceHandle, dwArea, dwXcoordinates, dwYcoordinates, dwFrameNum ); デバイス名「IFIMGBIN1」のデバイスに対して、2 値化処理設定を行います。 2 値化対象の色成分を輝度成分、上限しきい値を 255、下限しきい値を 128、上限と下限の間の 場合、2 値化データを 0xFF にします。 面積値、重心値を求める為の測定範囲を指定します。開始点(0,0)(左上)とし、開始点からの X 方向を 320、Y 方向を 240 とした測定範囲を設定します。 その後、面積値、重心値(X 座標値と Y 座標値)を取得します。 キャプチャ中に ImgGetMeasurementValue 関数を実行した場合、フレーム数を取得します。 dwFrame の値で何フレーム目のデータに対して測定を行ったのか、知ることができます。 ※キャプチャを実行せずともカメラ等に接続している限り、取り込んでいるフレームデータに 対して、面積値、重心値を取得することも可能です。ただし、dwFrame の値は無効なデータ です。 © 2003, 2016 Interface Corporation. All rights reserved. 110 GPC-5520 Help for Windows 15. ImgSetTriggerConfig トリガ発生条件を設定します。 【書式】 ●C 言語 INT ImgSetTriggerConfig( HANDLE hDeviceHandle, PIMGTRGCONFIG pTriggerConfig // デバイスハンドル // IMGTRGCONFIG 構造体の ポインタ ); ●Visual Basic Declare Function ImgSetTriggerConfig Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByRef pTriggerConfig As IMGTRGCONFIG _ ‘ IMGTRGCONFIG 構造体 への参照渡し )As Long ●Delphi function ImgSetTriggerConfig ( hDeviceHandle: THandle; var pTriggerConfig: IMGTRGCONFIG // デバイスハンドル // IMGTRGCONFIG 構造体 への参照渡し ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetTriggerConfig( IntPtr hDeviceHandle, ref IMGTRGCONFIG pTriggerConfig // デバイスハンドル // IMGTRGCONF 構造体の ポインタ ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetTriggerConfig( uint hDeviceHandle, ref IMGTRGCONFIG pTriggerConfig // デバイスハンドル // IMGTRGCONF 構造体の ポインタ ); ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetTriggerConfig Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByRef pTriggerConfig As IMGTRGCONFIG ‘ IMGTRGCONF 構造体 への参照渡し )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 111 GPC-5520 Help for Windows ●Visual Basic .NET(x86 専用) Declare Function ImgSetTriggerConfig Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByRef pTriggerConfig As IMGTRGCONFIG ‘ IMGTRGCONF 構造体 への参照渡し )As Integer ●Delphi 8 class function ImgSetTriggerConfig ( hDeviceHandle: Integer; var pTriggerConfig: IMGTRGCONFIG // デバイスハンドル // IMGTRGCONF 構造体 への参照渡し ): Integer; static; 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 pTriggerConfig IMGTRGCONFIG 構造体へのポインタを指定してください。 構造体の説明については、『4.4 構造体』をご参照ください。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 © 2003, 2016 Interface Corporation. All rights reserved. 112 GPC-5520 Help for Windows ●C 言語 HANDLE hDeviceHandle; IMGBINCONFG pBinConf; IMGTRGCONFIG pTrigConf; int nRet; hDeviceHandle = ImgOpen(“IFIMGBIN1”); : pBinConf.dwColorIngredient = IFIMG_INGREDIENT_GRAY; pBinConf.dwMaxthreshold = 255; pBinConf.dwMinthreshold = 128; pBinConf.dwBinarizationMode = IFIMG_BINMODE_NORMAL; : nRet = ImgSetBinarizationConfig(hDeviceHandle, &pBinConf); : nRet = ImgSetMeasurementRange(hDeviceHandle, 159, 119, 320, 240); : pTrigConf.dwTriggerEnabled = 0x07; // 面積、重心、面積 AND 重心トリガ発生の有効 pTrigConf.dwAreaMax = 3000; // 面積上限値 pTrigConf.dwAreaMin = 2000; // 面積下限値 pTrigConf.dwStartPointX = 239; // トリガ範囲開始点(X 座標) pTrigConf.dwStartPointY = 179; // トリガ範囲開始点(Y 座標) pTrigConf.dwXLength = 160; // 開始点からの X 方向への長さ pTrigConf.dwYLength = 120; // 開始点からの Y 方向への長さ pTrigConf.dwTriggerRangeMode = 0x00; // 論理反転設定 : nRet = ImgSetTriggerConfig(hDeviceHandle, &pTrigConf); : © 2003, 2016 Interface Corporation. All rights reserved. 113 GPC-5520 Help for Windows ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim dwArea As Long Dim dwXcoordinates As Long Dim dwYcoordinates As Long Dim dwFrameNum As Long Dim pBinConf As IMGBINCONFIG Dim pTrigConf As IMGTRGCONFIG Dim nRet As Long lpszName = “IFIMGBIN1” hDeviceHandle = ImgOpen(lpszName) : pBinConf.dwColorIngredient = IFIMG_INGREDIENT_GRAY pBinConf.dwMaxthreshold = 255 pBinConf.dwMinthreshold = 128 pBinConf.dwBinarizationMode = IFIMG_BINMODE_NORMAL : nRet = ImgSetBinarizationConfig (hDeviceHandle, pBinConf) : nRet = ImgSetMeasurementRange(hDeviceHandle, 159, 119, 320, 240) : pTrigConf.dwTriggerEnabled = &H07 ‘ 面積、重心、面積 AND 重心トリガ発生の有効 pTrigConf.dwAreaMax = 3000 ‘ 面積上限値 pTrigConf.dwAreaMin = 2000 ‘ 面積下限値 pTrigConf.dwStartPointX = 239 ‘ トリガ範囲開始点(X 座標) pTrigConf.dwStartPointY = 179 ‘ トリガ範囲開始点(Y 座標) pTrigConf.dwXLength = 160 ‘ 開始点からの X 方向への長さ pTrigConf.dwYLength = 120 ‘ 開始点からの Y 方向への長さ pTrigConf.dwTriggerRangeMode = &H00 ‘ 転設定 : nRet = ImgSetTriggerConfig(hDeviceHandle, pTrigConf) © 2003, 2016 Interface Corporation. All rights reserved. 114 GPC-5520 Help for Windows ●Delphi var lpsName:String; hDeviceHandle: THandle; dwArea; DWORD: dwXcoordinates; DWORD: dwYcoordinates; DWORD; dwFrameNum; DWORD; nRet: Integer; pBinConf: IMGBINCONFIG; pTrigConf: IMGTRGCONFIG; lpszName := 'IFIMGBIN1'; hDeviceHandle := ImgOpen(lpszName); : : pBinConf.dwColorIngredient := IFIMG_INGREDIENT_GRAY; pBinConf.dwMaxthreshold := 255; pBinConf.dwMinthreshold := 128; pBinConf.dwBinarizationMode := IFIMG_BINMODE_NORMAL; : nRet := ImgSetBinarizationConfig(hDeviceHandle, pBinConf); : nRet := ImgSetMeasurementRange(hDeviceHandle, 159, 119, 320, 240); : pTrigConf.dwTriggerEnabled := 0x07; // 面積、重心、面積 AND 重心トリガ発生の有効 pTrigConf.dwAreaMax := 3000; // 面積上限値 pTrigConf.dwAreaMin := 2000; // 面積下限値 pTrigConf.dwStartPointX := 239; // トリガ範囲開始点(X 座標) pTrigConf.dwStartPointY := 179; // トリガ範囲開始点(Y 座標) pTrigConf.dwXLength := 160; // 開始点からの X 方向への長さ pTrigConf.dwYLength := 120; // 開始点からの Y 方向への長さ pTrigConf.dwTriggerRangeMode := 0x00; // 論理反転設定 : nRet := ImgSetTriggerConfig(hDeviceHandle, pTrigConf); © 2003, 2016 Interface Corporation. All rights reserved. 115 GPC-5520 Help for Windows ●Visual C# .NET IntPtr hDeviceHandle; IFCIMG_ANY.IMGBINCONFG pBinConf; IFCIMG_ANY.IMGTRGCONFIG pTrigConf; int nRet; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGBIN1”); : pBinConf.dwColorIngredient = IFCIMG_ANY.IFIMG_INGREDIENT_GRAY; pBinConf.dwMaxthreshold = 255; pBinConf.dwMinthreshold = 128; pBinConf.dwBinarizationMode = IFCIMG_ANY.IFIMG_BINMODE_NORMAL; : nRet = IFCIMG_ANY.ImgSetBinarizationConfig(hDeviceHandle, ref pBinConf); : nRet = IFCIMG_ANY.ImgSetMeasurementRange(hDeviceHandle, 159, 119, 320, 240); : pTrigConf.dwTriggerEnabled = 0x07; // 面積、重心、面積 AND 重心トリガ発生の有効 pTrigConf.dwAreaMax = 3000; // 面積上限値 pTrigConf.dwAreaMin = 2000; // 面積下限値 pTrigConf.dwStartPointX = 239; // トリガ範囲開始点(X 座標) pTrigConf.dwStartPointY = 179; // トリガ範囲開始点(Y 座標) pTrigConf.dwXLength = 160; // 開始点からの X 方向への長さ pTrigConf.dwYLength = 120; // 開始点からの Y 方向への長さ pTrigConf.dwTriggerRangeMode = 0x00; // 論理反転設定 : nRet = IFCIMG_ANY.ImgSetTriggerConfig(hDeviceHandle, ref pTrigConf); : © 2003, 2016 Interface Corporation. All rights reserved. 116 GPC-5520 Help for Windows ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim dwArea As Integer Dim dwXcoordinates As Integer Dim dwYcoordinates As Integer Dim dwFrameNum As Integer Dim pBinConf As IFCIMG_ANY.IMGBINCONFIG Dim pTrigConf As IFCIMG_ANY.IMGTRGCONFIG Dim nRet As Integer lpszName = “IFIMGBIN1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : pBinConf.dwColorIngredient = IFCIMG_ANY.IFIMG_INGREDIENT_GRAY pBinConf.dwMaxthreshold = 255 pBinConf.dwMinthreshold = 128 pBinConf.dwBinarizationMode = IFCIMG_ANY.IFIMG_BINMOED_NORMAL : nRet = IFCIMG_ANY.ImgSetBinarizationConfig (hDeviceHandle, pBinConf) : nRet = IFCIMG_ANY.ImgSetMeasurementRange(hDeviceHandle, 159, 119, 320, 240) : pTrigConf.dwTriggerEnabled = &H07 ‘ 面積、重心、面積 AND 重心トリガ発生の有効 pTrigConf.dwAreaMax = 3000 ‘ 面積上限値 pTrigConf.dwAreaMin = 2000 ‘ 面積下限値 pTrigConf.dwStartPointX = 239 ‘ トリガ範囲開始点(X 座標) pTrigConf.dwStartPointY = 179 ‘ トリガ範囲開始点(Y 座標) pTrigConf.dwXLength = 160 ‘ 開始点からの X 方向への長さ pTrigConf.dwYLength = 120 ‘ 開始点からの Y 方向への長さ pTrigConf.dwTriggerRangeMode = &H00 ‘ 転設定 : nRet = IFCIMG_ANY.ImgSetTriggerConfig(hDeviceHandle, pTrigConf) © 2003, 2016 Interface Corporation. All rights reserved. 117 GPC-5520 Help for Windows ●Delphi 8 var hDeviceHandle: Integer; dwArea; Cardinal: dwXcoordinates; Cardinal: dwYcoordinates; Cardinal; dwFrameNum; Cardinal; nRet: Integer; pBinConf: IFCIMG.IMGBINCONFG; pTrigConf: IFCIMG.IMGTRGCONFG; lpszName := 'IFIMGBIN1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); : : pBinConf.dwColorIngredient := IFCIMG.IFIMG_INGREDIENT_GRAY; pBinConf.dwMaxthreshold := 255; pBinConf.dwMinthreshold := 128; pBinConf.dwBinarizationMode := IFCIMG.IFIMG_BINMOED_NORMAL; : nRet := IFCIMG.ImgSetBinarizationConfig(hDeviceHandle, pBinConf); : nRet := IFCIMG.ImgSetMeasurementRange(hDeviceHandle, 159, 119, 320, 240); : pTrigConf.dwTriggerEnabled := 0x07; // 面積、重心、面積 AND 重心トリガ発生の有効 pTrigConf.dwAreaMax := 3000; // 面積上限値 pTrigConf.dwAreaMin := 2000; // 面積下限値 pTrigConf.dwStartPointX := 239; // トリガ範囲開始点(X 座標) pTrigConf.dwStartPointY := 179; // トリガ範囲開始点(Y 座標) pTrigConf.dwXLength := 160; // 開始点からの X 方向への長さ pTrigConf.dwYLength := 120; // 開始点からの Y 方向への長さ pTrigConf.dwTriggerRangeMode := 0x00; // 論理反転設定 : nRet := IFCIMG.ImgSetTriggerConfig(hDeviceHandle, pTrigConf); デバイス名「IFIMGBIN1」のデバイスに対して、トリが発生条件を指定します。 2 値化対象の色成分を輝度成分、上限しきい値を 255、下限しきい値を 128、上限と下限の間の 場合、2 値化データを 0xFF にします。 面積値、重心値を求める為の測定範囲を指定します。開始点(159,119)とし、開始点からの X 方向を 320、Y 方向を 240 とした測定範囲を設定します。 トリが発生条件を設定します。 面積トリガ、重心トリガ、面積 AND 重心トリガの発生を有効にします。 面積値の上限値を 3000、下限値を 2000 に設定します。 重心値トリガ発生エリアの開始点を(239,179)とし、開始点からの X 方向を 160、Y 方向を 120 とした測定範囲を設定します。 © 2003, 2016 Interface Corporation. All rights reserved. 118 GPC-5520 Help for Windows ※キャプチャを実行せずとも、カメラ等の映像機器に接続している限り、取り込んでいるフレ ームデータに対して、トリガ発生状態を取得することが可能です。ImgGetCaptureStatus関数 で、トリガ発生状態を取得する事が可能です。また、ImgSetEventMask関数で割り込み発生を 有効にすることにより、割り込みイベントによる検知も可能です。 © 2003, 2016 Interface Corporation. All rights reserved. 119 GPC-5520 Help for Windows 16. ImgInputDI 【機能】 汎用入力の状態を取得します。 【書式】 ●C 言語 INT ImgInputDI( HANDLE hDeviceHandle, PWORD pwDI ); // // デバイスハンドル 状態を格納する変数のポインタ ●Visual Basic Declare Function ImgInputDI Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByRef pwDI As Integer _ ‘ 状態を格納する変数への参照渡し )As Long ●Delphi function ImgInoutDI ( hDeviceHandle: THandle; // デバイスハンドル var pwDI: WORD // 状態を格納する変数の参照渡し ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgInputDI( IntPtr hDeviceHandle, ref short pwDI ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgInputDI( uint hDeviceHandle, ref short pwDI ); // // デバイスハンドル 状態を格納する変数のポインタ // // デバイスハンドル 状態を格納する変数のポインタ ●Visual Basic .NET(x86、x64 共用) Declare Function ImgInputDI Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByRef pwDI As Short ‘ 状態を格納する変数への参照渡し )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 120 GPC-5520 Help for Windows ●Visual Basic .NET(x86 専用) Declare Function ImgInputDI Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByRef pwDI As Short ‘ 状態を格納する変数のへ参照渡し )As Integer ●Delphi 8 class function ImgInoutDI ( hDeviceHandle: THandle; var pwDI: Word ): Integer; static; // // デバイスハンドル 状態を格納する変数の参照渡し 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 pwDI 入力状態を格納する変数へのポインタを指定してください。 入力値のフォーマットは以下のとおりです。 ビット 内容 ビット 内容 bit15 IN16 bit7 IN8 bit14 IN15 bit6 IN7 0:High 1:Low bit13 IN14 bit5 IN6 bit12 IN13 bit4 IN5 bit11 IN12 bit3 IN4 bit10 IN11 bit2 IN3 bit9 IN10 bit1 IN2 bit8 IN9 bit0 IN1 IN9~IN16 は、PEX-H531322 専用です。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 【使用例】 ●C 言語 INT nRet; HANDLE hDeviceHandle; WORD wDI; hDeviceHandle = ImgOpen(“IFIMGST1”); : : nRet = ImgInputDI(hDeviceHandle, &wDI); © 2003, 2016 Interface Corporation. All rights reserved. 121 GPC-5520 Help for Windows ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim wDI As Integer lpszName = “IFIMGST1” hDeviceHandle = ImgOpen(lpszName) : : nRet = ImgInputDI(hDeviceHandle, wDI) ●Delphi var lpszName: String; hDeviceHandle: THandle; DI; WORD: lpszName := 'IFIMGST1'; hDeviceHandle := ImgOpen(lpszName); : : nRet := ImgInputDI(hDeviceHandle, wDI); ●Visual C# .NET int nRet; IntPtr hDeviceHandle; short wDI; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGST1”); nRet = IFCIMG_ANY.ImgInputDI(hDeviceHandle, ref wDI); ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim wDI As Short lpszName = “IFIMGST1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) nRet = IFCIMG_ANY.ImgInputDI(hDeviceHandle, wDI) © 2003, 2016 Interface Corporation. All rights reserved. 122 GPC-5520 Help for Windows ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; wDI; Word: lpszName := 'IFIMGST1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); nRet := IFCIMG.ImgInputDI(hDeviceHandle, wDI); デバイス名「IFIMGST1」の汎用入力状態を取得します。(変数 wDI に格納します) © 2003, 2016 Interface Corporation. All rights reserved. 123 GPC-5520 Help for Windows 17. ImgOutputDO 【機能】 汎用出力の制御を行います。 【書式】 ●C 言語 INT ImgOutputDO( HANDLE WORD ); hDeviceHandle, wDO // // ●Visual Basic Declare Function ImgOutputDO Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ ByVal wDO As Integer _ ‘ )As Long ●Delphi function ImgOutputDO ( hDeviceHandle: THandle; wDO: WORD ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgOutputDO( IntPtr hDeviceHandle, short wDO ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgOutputDO( uint hDeviceHandle, short wDO ); ●Visual Basic .NET(x86、x64 共用) Declare Function ImgOutputDO Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ByVal wDO As Short )As Integer デバイスハンドル 出力の設定 デバイスハンドル 出力の設定 // // デバイスハンドル 出力の設定 // // デバイスハンドル 出力の設定 // // デバイスハンドル 出力の設定 ‘ ‘ デバイスハンドル 出力の設定 © 2003, 2016 Interface Corporation. All rights reserved. 124 GPC-5520 Help for Windows ●Visual Basic .NET(x86 専用) Declare Function ImgOutputDO Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ByVal wDO As Short )As Integer ●Delphi 8 class function ImgOutputDO ( hDeviceHandle: Integer; wDO: Word ): Integer; static; ‘ ‘ デバイスハンドル 出力の設定 // // デバイスハンドル 出力の設定 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 wDO 出力の設定を指定してください。 出力値のフォーマットは以下のとおりです。 ビット bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 内容 OUT 16 OUT 15 OUT 14 OUT 13 OUT 12 OUT 11 OUT 10 OUT 9 ビット bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 内容 OUT8 OUT7 OUT6 OUT 5 OUT 4 OUT 3 OUT 2 OUT 1 ※ OUT8/OUT7:CBI-530115(Tx) CSI-530115 CBI-530215(Tx) CSI-530215 に対応 ※ OUT9~OUT16 は、PEX-H531322 専用です。 0:High を出力 1:Low を出力 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 【使用例】 ●C 言語 INT nRet; HANDLE hDeviceHandle; hDeviceHandle = ImgOpen(“IFIMGST1”); : : nRet = ImgOutputDO(hDeviceHandle, 0x01); © 2003, 2016 Interface Corporation. All rights reserved. 125 GPC-5520 Help for Windows ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long lpszName = “IFIMGST1” hDeviceHandle = ImgOpen(lpszName) : : nRet = ImgOutputDO(hDeviceHandle, &H01) ●Delphi var lpszName: String; hDeviceHandle: THandle; lpszName := 'IFIMGST1'; hDeviceHandle := ImgOpen(lpszName); : : nRet := ImgOutputDO(hDeviceHandle, $01); ●Visual C# .NET int nRet; IntPtr hDeviceHandle; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGST1”); nRet = IFCIMG_ANY.ImgOutputDO(hDeviceHandle, 0x01); ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr lpszName = “IFIMGST1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) nRet = IFCIMG_ANY.ImgOutputDO(hDeviceHandle, &H01) © 2003, 2016 Interface Corporation. All rights reserved. 126 GPC-5520 Help for Windows ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; lpszName := 'IFIMGST1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); nRet := IFCIMG.ImgOutputDO(hDeviceHandle, $01); デバイス名「IFIMGST1」の汎用出力の OUT1 のみ Low 出力に設定します。 © 2003, 2016 Interface Corporation. All rights reserved. 127 GPC-5520 Help for Windows 18. ImgSetEventMask 【機能】 汎用入力割り込み、1 フレーム転送完了割り込み、各種トリガ割り込みのマスク、アンマスク を設定します。 【書式】 ●C 言語 INT ImgSetEventMask( HANDLE PIMGEVENTTABLE hDeviceHandle, pMask // デバイスハンドル // IMGEVENTTABLE 構造体 へのポインタ ); ●Visual Basic Declare Function ImgSetEventMask Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByRef pMask As IMGEVENTTABLE _ ‘ IMGEVENTTABLE 構造体 への参照渡し )As Long ●Delphi function ImgSetEventMask ( hDeviceHandle: THandle; var pMask: IMGEVENTTABLE // デバイスハンドル // IMGEVENTTABLE 構造体 への参照渡し ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetEventMask( IntPtr hDeviceHandle, ref IMGEVENTTABLE pMask // デバイスハンドル // IMGEVENTTABLE 構造体 へのポインタ ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetEventMask( uint hDeviceHandle, ref IMGEVENTTABLE pMask // デバイスハンドル // IMGEVENTTABLE 構造体 へのポインタ ); © 2003, 2016 Interface Corporation. All rights reserved. 128 GPC-5520 Help for Windows ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetEventMask Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByRef pMask As IMGEVENTTABLE ‘ IMGEVENTTABLE 構造体 への参照渡し )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgSetEventMask Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByRef pMask As IMGEVENTTABLE ‘ IMGEVENTTABLE 構造体 への参照渡し )As Integer ●Delphi 8 class function ImgSetEventMask ( hDeviceHandle: Integer; var pMask: IMEVENTTABLE // デバイスハンドル // IMGEVENTTABLE 構造体 への参照渡し ): Integer; static; 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 pMask 割り込みマスク設定構造体(IMGEVENTTABLE)へのポインタを指定してください。 構造体の説明については、『4.4 構造体』をご参照ください。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 【使用例】 ●C 言語 HANDLE hDeviceHandle; IMGEVENTTABLE Mask; hDeviceHandle = ImgOpen(“IFIMGST1”); : : Mask.dwDI = 0x01; Mask.dwFrame = 0x01; Mask.dwTrigger = 0; nRet = ImgSetEventMask(hDeviceHandle, &Mask); © 2003, 2016 Interface Corporation. All rights reserved. 129 GPC-5520 Help for Windows ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim Mask As IMGEVENTTABLE lpszName = “IFIMGST1” hDeviceHandle = ImgOpen(lpszName) : : Mask.dwDI = &H01 Mask.dwFrame = &H01 Mask.dwTrigger = 0 nRet = ImgSetEventMask(hDeviceHandle, Mask) ●Delphi var lpsName:String; hDeviceHandle: THandle; Mask: IMGEVENTTABLE; hDeviceHandle := ImgOpen(“IFIMGST1”); : : Mask.dwDI := $01; Mask.dwFrame := $01; Maskd.dwTrigger := 0; nRet := ImgSetEventMask(hDeviceHandle, Mask); ●Visual C# .NET IntPtr hDeviceHandle; IFCIMG_ANY.IMGEVENTTABLE Mask; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGST1”); : : Mask.dwDI = 0x01; Mask.dwFrame = 0x01; Mask.dwTrigger = 0; nRet = IFCIMG_ANY.ImgSetEventMask(hDeviceHandle, ref Mask); © 2003, 2016 Interface Corporation. All rights reserved. 130 GPC-5520 Help for Windows ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim Mask As IFCIMG_ANY.IMGEVENTTABLE lpszName = “IFIMGST1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : : Mask.dwDI = &H01 Mask.dwFrame = &H01 Mask.dwTrigger = 0 nRet = IFCIMG_ANY.ImgSetEventMask(hDeviceHandle, Mask) ●Delphi 8 var hDeviceHandle: Inetger; Mask: IFCIMG.IMGEVENTTABLE; hDeviceHandle := IFCIMG.ImgOpen(“IFIMGST1”); : : Mask.dwDI := $01; Mask.dwFrame := $01; Maskd.dwTrigger := 0; nRet := IFCIMG.ImgSetEventMask(hDeviceHandle, Mask); デバイス名「IFIMGST1」のデバイスに対して、 「IN1 割り込み」「フレーム転送完了割り込み」 をアンマスク(有効に)します。 © 2003, 2016 Interface Corporation. All rights reserved. 131 GPC-5520 Help for Windows 【使用例 2】 ●C 言語 HANDLE hDeviceHandle; IMGEVENTTABLE Mask; hDeviceHandle = ImgOpen(“IFIMGMEM1”); : : Mask.dwDI = 0x01; Mask.dwFrame = 0x02; Mask.dwTrigger = 0; nRet = ImgSetEventMask(hDeviceHandle, &Mask); ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim Mask As IMGEVENTTABLE lpszName = “IFIMGMEM1” hDeviceHandle = ImgOpen(lpszName) : : Mask.dwDI = &H01 Mask.dwFrame = &H02 Mask.dwTrigger = 0 nRet = ImgSetEventMask(hDeviceHandle, Mask) ●Delphi var hDeviceHandle: THandle; Mask: IMGEVENTTABLE; hDeviceHandle := ImgOpen(“IFIMGMEM1”); : : Mask.dwDI := $01; Mask.dwFrame := $02; Maskd.dwTrigger := 0; nRet := ImgSetEventMask(hDeviceHandle, Mask); © 2003, 2016 Interface Corporation. All rights reserved. 132 GPC-5520 Help for Windows ●Visual C# .NET IntPtr hDeviceHandle; IFCIMG_ANY.IMGEVENTTABLE Mask; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGMEM1”); : : Mask.dwDI = 0x01; Mask.dwFrame = 0x02; Mask.dwTrigger = 0; nRet = IFCIMG_ANY.ImgSetEventMask(hDeviceHandle, ref Mask); ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim Mask As IFCIMG_ANY.IMGEVENTTABLE lpszName = “IFIMGMEM1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : : Mask.dwDI = &H01 Mask.dwFrame = &H02 Mask.dwTrigger = 0 nRet = IFCIMG_ANY.ImgSetEventMask(hDeviceHandle, Mask) ●Delphi 8 var hDeviceHandle: Integer; Mask: IFCIMG.IMGEVENTTABLE; hDeviceHandle := IFCIMG.ImgOpen(“IFIMGMEM1”); : : Mask.dwDI := $01; Mask.dwFrame := $02; Maskd.dwTrigger := 0; nRet := IFCIMG.ImgSetEventMask(hDeviceHandle, Mask); デバイス名「IFIMGMEM1」のデバイスに対して、 「IN1 割り込み」「フレーム転送完了割り込み」 をアンマスク(有効に)します。この場合 SDRAM によるキャプチャでのフレーム転送完了割り 込みのアンマスクが実行されます。 © 2003, 2016 Interface Corporation. All rights reserved. 133 GPC-5520 Help for Windows 【使用例 3】 ●C 言語 HANDLE hDeviceHandle; IMGEVENTTABLE Mask; hDeviceHandle = ImgOpen(“IFIMGBIN1”); : : Mask.dwDI = 0x01; Mask.dwFrame = 0x01; Mask.dwTrigger = 0x07; nRet = ImgSetEventMask(hDeviceHandle, &Mask); ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim Mask As IMGEVENTTABLE lpszName = “IFIMGBIN1” hDeviceHandle = ImgOpen(lpszName) : : Mask.dwDI = &H01 Mask.dwFrame = &H01 Mask.dwTrigger = &H07 nRet = ImgSetEventMask(hDeviceHandle, Mask) ●Delphi var hDeviceHandle: THandle; Mask: IMGEVENTTABLE; hDeviceHandle := ImgOpen(“IFIMGBIN1”); : : Mask.dwDI := $01; Mask.dwFrame := $01; Maskd.dwTrigger := $07; nRet := ImgSetEventMask(hDeviceHandle, Mask); © 2003, 2016 Interface Corporation. All rights reserved. 134 GPC-5520 Help for Windows zzzzzzzzzzzzzzzzzz ●Visual C# .NET IntPtr hDeviceHandle; IFCIMG_ANY.IMGEVENTTABLE Mask; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGBIN1”); : : Mask.dwDI = 0x01; Mask.dwFrame = 0x01; Mask.dwTrigger = 0x07; nRet = IFCIMG_ANY.ImgSetEventMask(hDeviceHandle, ref Mask); ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim Mask As IFCIMG_ANY.IMGEVENTTABLE lpszName = “IFIMGBIN1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : : Mask.dwDI = &H01 Mask.dwFrame = &H01 Mask.dwTrigger = &H07 nRet = IFCIMG_ANY.ImgSetEventMask(hDeviceHandle, Mask) ●Delphi 8 var hDeviceHandle: Integer; Mask: IFCIMG.IMGEVENTTABLE; hDeviceHandle := IFCIMG.ImgOpen(“IFIMGBIN1”); : : Mask.dwDI := $01; Mask.dwFrame := $01; Maskd.dwTrigger := $07; nRet := IFCIMG.ImgSetEventMask(hDeviceHandle, Mask); デバイス名「IFIMGBIN1」のデバイスに対して、 「IN1 割り込み」「フレーム転送完了割り込み」 をアンマスク(有効に)します。 PCI/CTP/CPZ-55x2,55x3,55x4,55x5,55x6、CSI/LPC/PEX/LPC-530215 はトリガ発生の割り込みも 設定できます。この場合、「面積トリガ」、「重心トリガ」、 「面積 AND 重心トリガ」をアンマス クします。キャプチャを開始せずとも、「面積トリガ」、「重心トリガ」、 「面積 AND 重心トリガ」 は条件を満たしていれば割り込みは発生します。 © 2003, 2016 Interface Corporation. All rights reserved. 135 GPC-5520 Help for Windows 19. ImgGetEventMask 【機能】 各種割り込みマスクの設定状態を取得します。 【書式】 ●C 言語 INT ImgGetEventMask( HANDLE PIMGEVENTTABLE hDeviceHandle, pMask // デバイスハンドル // IMGEVENTTABLE 構造体 へのポインタ ); ●Visual Basic Declare Function ImgGetEventMask Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByRef pMask As IMGEVENTTABLE _ ‘ IMGEVENTTABLE 構造体 への参照渡し )As Long ●Delphi function ImgGetEventMask ( hDeviceHandle: THandle; var pMask: IMEVENTTABLE // デバイスハンドル // IMGEVENTTABLE 構造体 へのポインタ ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgGetEventMask( IntPtr hDeviceHandle, out IMGEVENTTABLE pMask // デバイスハンドル // IMGEVENTTABLE 構造体 へのポインタ ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgGetEventMask( uint hDeviceHandle, out IMGEVENTTABLE pMask // デバイスハンドル // IMGEVENTTABLE 構造体 へのポインタ ); ●Visual Basic .NET(x86、x64 共用) Declare Function ImgGetEventMask Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByRef pMask As IMGEVENTTABLE ‘ IMGEVENTTABLE 構造体 への参照渡し )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 136 GPC-5520 Help for Windows ●Visual Basic .NET(x86 専用) Declare Function ImgGetEventMask Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByRef pMask As IMGEVENTTABLE ‘ IMGEVENTTABLE 構造体 への参照渡し )As Integer ●Delphi class function ImgGetEventMask ( hDeviceHandle: Integer; var pMask: IMEVENTTABLE // デバイスハンドル // IMGEVENTTABLE 構造体 へのポインタ ): Integer; static; 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 pMask 割り込みマスク設定構造体(IMGEVENTTABLE)へのポインタを指定してください。 構造体の説明については、『4.4 構造体』をご参照ください。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 【使用例】 ●C 言語 HANDLE hDeviceHandle; IMGEVENTTABLE Mask; hDeviceHandle = ImgOpen(“IFIMGST1”); : : nRet = ImgGetEventMask(hDeviceHandle, &Mask); © 2003, 2016 Interface Corporation. All rights reserved. 137 GPC-5520 Help for Windows ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim Mask As IMGEVENTTABLE lpszName = “IFIMGST1” hDeviceHandle = ImgOpen(lpszName) : : nRet = ImgGetEventMask(hDeviceHandle, Mask) ●Delphi var hDeviceHandle: THandle; Mask: IMGEVENTTABLE; hDeviceHandle := ImgOpen(“IFIMGST1”); : : nRet := ImgGetEventMask(hDeviceHandle, Mask); ●Visual C# .NET IntPtr hDeviceHandle; IFCIMG_ANY.IMGEVENTTABLE Mask; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGST1”); : : nRet = IFCIMG_ANY.ImgGetEventMask(hDeviceHandle, out Mask); ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim Mask As IFCIMG_ANY.IMGEVENTTABLE lpszName = “IFIMGST1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : : nRet = IFCIMG_ANY.ImgGetEventMask(hDeviceHandle, Mask) © 2003, 2016 Interface Corporation. All rights reserved. 138 GPC-5520 Help for Windows ●Delphi 8 var hDeviceHandle: Integer; Mask: IFCIMG.IMGEVENTTABLE; hDeviceHandle := IFCIMG.ImgOpen(“IFIMGST1”); : : nRet := IFCIMG.ImgGetEventMask(hDeviceHandle, Mask); デバイス名「IFIMGST1」のデバイスの割り込みマスク設定を取得します。 © 2003, 2016 Interface Corporation. All rights reserved. 139 GPC-5520 Help for Windows 20. ImgSetEvent 【機能】 割り込み処理の設定(メッセージ、イベント、コールバック関数の登録)を行います。 ImgSetEventMask でアンマスクした割り込み要因が発生した場合、本関数で設定した割り込み 処理が実行されます。 【書式】 ●C 言語 INT ImgSetEvent( HANDLE PIMGEVENTREQ hDeviceHandle, pEvent // デバイスハンドル // IMGEVENTREQ 構造体 へのポインタ ); ●Visual Basic Declare Function ImgSetEvent Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ ByRef pEvent As IMGEVENTREQ _ ‘ デバイスハンドル IMGEVENTREQ 構造体 への参照渡し )As Long ●Delphi function ImgSetEvent ( hDeviceHandle: THandle; var pEvent: // IMGEVENTREQ デバイスハンドル // IMGEVENTREQ 構造体 への参照渡し ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetEvent( IntPtr hDeviceHandle, ref IMGEVENTREQ pEvent // デバイスハンドル // IMGEVENTREQ 構造体 へのポインタ ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetEvent( uint hDeviceHandle, ref IMGEVENTREQ pEvent // デバイスハンドル // IMGEVENTREQ 構造体 へのポインタ ); © 2003, 2016 Interface Corporation. All rights reserved. 140 GPC-5520 Help for Windows ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetEvent Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ByRef pEvent As IMGEVENTREQ ‘ ‘ デバイスハンドル IMGEVENTREQ 構造体 への参照渡し ‘ ‘ デバイスハンドル IMGEVENTREQ 構造体 への参照渡し )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgSetEvent Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ByRef pEvent As IMGEVENTREQ )As Integer ●Delphi 8 class function ImgSetEvent ( hDeviceHandle: Integer; var pEvent: // IMGEVENTREQ デバイスハンドル // IMGEVENTREQ 構造体 への参照渡し ): Integer; static; 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 pEvent 割り込み設定構造体へのポインタを指定してください。 構造体の説明については、『4.4 構造体』をご参照ください。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 © 2003, 2016 Interface Corporation. All rights reserved. 141 GPC-5520 Help for Windows 【備考】 ※ Visual Basic 6.0 ではコールバック関数が使用できません。メッセージ機能、またはイベ ントを使用してください。 メッセージ機能を使用する場合には、メッセージを送出するフォームのウィンドウ・プロ シージャを Win32API の SetWindowLong 関数を使用してフックする必要があります。使用方 法については、付属のサンプルプログラム、および Win32API のリファレンスを参照してく ださい。 ●コールバック関数の書式 コールバック関数の書式は以下の通りです。 (x86 専用) VOID CALLBACK pCallBackProc ( IMGEVENTTABLE Event, DWORD dwFrameCnt, DWORD dwUser ); (x64 専用) VOID CALLBACK pCallBackProc ( IMGEVENTTABLE Event, DWORD dwFrameCnt, PVOID pUser ); ●VISUAL C# .NET(x86、x64 共用) public delegate void PIMGCALLBACK( IMGEVENTTABLE Event, uint dwFrameCnt, IntPtr pUser ); ●VISUAL C# .NET(x86 専用) public delegate void PIMGCALLBACK( IMGEVENTTABLE Event, uint dwFrameCnt, uint dwUser ); // // // 割込み要因 転送完了フレーム数 ユーザデータ // // // 割込み要因 転送完了フレーム数 ユーザデータ // // // 割り込み要因 フレームカウンタ ユーザデータ // // // 割り込み要因 フレームカウンタ ユーザデータ ●Visual Basic .NET(x86、x64 共用) Delegate Sub PIMGCALLBACK( _ ByVal Event As IMGEVENTTABLE, _ ‘ ByVal dwFrameCnt As Integer, _ ‘ ByRef pUser As IntPtr_ ‘ ) 割り込み要因 フレームカウンタ ユーザデータ ●Visual Basic .NET(x86 専用) © 2003, 2016 Interface Corporation. All rights reserved. 142 GPC-5520 Help for Windows Delegate Sub PIMGCALLBACK( _ ByVal Event As IMGEVENTTABLE, _ ‘ ByVal dwFrameCnt As Integer, _ ‘ ByVal dwUser As Integer _ ‘ ) ●Delphi 8 var procedure CallProc( Event: IMGEVENTTABLE; dwFrameCnt User: Cardinal; Cardinal 割り込み要因 フレームカウンタ ユーザデータ // 割り込み要因 // // フレームカウンタ ユーザデータ );forwad; const CallProcDelegete: CMLCALLBACK= @CallProc; ○Event 割り込み要因構造 コールバック関数が実行された要因が格納されています。 構造体の説明については、『4.4 構造体』をご参照ください。 ○dwFrameCnt コールバック関数が実行された時点での転送されたフレーム数です。 (1~FFFFFFFFh) FFFFFFFFh までカウント後、1 に戻ります。 ○dwUser(pUser) ユーザ・データ ImgSetEvent 関数実行時で指定したユーザ・データが取得されます。 x86 環境の場合は DWORD 型、x64 環境の場合は PVOID 型となります。 © 2003, 2016 Interface Corporation. All rights reserved. 143 GPC-5520 Help for Windows 【使用例】 ●C 言語(x86 専用) // コールバック関数 VOID CALLBACK lpCallBackProc(IMGEVENTTABLE Event, DWORD dwFrameCnt, DWORD dwUser){ // 割り込み処理を記述します : : } // メインルーチン INT nRet; HANDLE hDeviceHandle; IMGEVENTTABLE Mask; IMGEVENTREQ Event; hDeviceHandle = ImgOpen(“IFIMGST1”); : : Event.hWnd = NULL; Event.uMessage = NULL; Event.hEvent = NULL; Event.pCallBackProc = (PIMGCALLBACK)lpCallBackProc Event.dwUser = 0x1234; nRet = ImgSetEvent(hDeviceHandle, &Event); Mask.dwDI = 0x01; Mask.dwFrame = 0x01; Mask.dwTrigger = 0; nRet = ImgSetEventMask(hDeviceHandle, &Mask); © 2003, 2016 Interface Corporation. All rights reserved. 144 GPC-5520 Help for Windows ●C 言語(x64 専用) // コールバック関数 VOID CALLBACK lpCallBackProc(IMGEVENTTABLE Event, DWORD dwFrameCnt, PVOID pUser) { DWORD UserData; UserData = *((PDWORD)pUser); } // メインルーチン INT nRet; HANDLE hDeviceHandle; IMGEVENTTABLE Mask; IMGEVENTREQ Event; DWORD UserData; hDeviceHandle = ImgOpen(“IFIMGST1”); : : Event.hWnd = NULL; Event.uMessage = NULL; Event.hEvent = NULL; Event.pCallBackProc = (PIMGCALLBACK)lpCallBackProc UserData = 0x1234; Event.pUser = &UserData; nRet = ImgSetEvent(hDeviceHandle, &Event); Mask.dwDI = 0x01; Mask.dwFrame = 0x01; Mask.dwTrigger = 0; nRet = ImgSetEventMask(hDeviceHandle, &Mask); © 2003, 2016 Interface Corporation. All rights reserved. 145 GPC-5520 Help for Windows ●Visual Basic Visual Basic 6.0 では、コールバック関数が使用できないため、メッセージ機能を使用しま す。 ‘ 元のウィンドウ・プロシージャのアドレス保存用変数 Public lpPrevWndProc As Long ‘ ウィンドウ・プロシージャ Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, _ ByVal wParam As Long, ByVal lParam As Long) As Long ‘ 割り込み処理(WM_USER に対する処理)を記述します If uMsg = WM_USER Then : End If ‘ 元のウィンドウ・プロシージャを呼び出します WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lParam) End Function ‘ メインルーチン Dim nRet As Long Dim lpszName As String Dim hDeviceHandle As Long Dim Mask As IMGEVENTTABLE Dim Event As IMGEVENTREQ lpszName = “IFIMGST1” hDeviceHandle = ImgOpen(lpszName) : : ' ウィンドウ・プロシージャをフックします lpPrevWndProc = SetWindowLong(Form1.hWnd, GWL_WNDPROC, AddressOf WindowProc) Event.hWnd = Form1.hWnd Event.uMessage = WM_USER Event.hEvent = 0 Event.lpCallBackProc = 0 Event.dwUser = &H1234 nRet = ImgSetEvent(hDeviceHandle, Event); Mask.dwDI = &H01 Mask.dwFrame = &H01 Mask.dwTrigger = 0 nRet = ImgSetEventMask(hDeviceHandle, Mask) © 2003, 2016 Interface Corporation. All rights reserved. 146 GPC-5520 Help for Windows ●Delphi // コールバック関数 procedure lpCallBackProc(Event: IMGEVENTTABLE, dwFrameCnt: DWORD, dwUser: DWORD); stdcall; var //変数定義 begin // 割り込み処理を記述します : : end; // メインルーチン var nRet: Integer; hDeviceHandle: THandle; Mask: IMGEVENTTABLE; Event: IMGEVENTTABLE;; hDeviceHandle := ImgOpen(“IFIMGST1”); : : Event.hWnd := 0; Event.uMessage := 0; Event.hEvent := 0; Event.lpCallBackProc := Addr(lpCallBackProc); Event.dwUser := $1234; nRet := ImgSetEvent(hDeviceHandle, Event); Mask.dwDI := $01; Mask.dwFrame := $01; Mask.dwTrigger := 0; nRet := ImgSetEventMask(hDeviceHandle, Mask); © 2003, 2016 Interface Corporation. All rights reserved. 147 GPC-5520 Help for Windows ●Visual C# .NET // コールバック関数 public void lpCallBackProc(IFCIMG_ANY.IMGEVENTTABLE Event, uint dwFrameCnt, IntPtr pUser) { // 割り込み処理を記述します : : } // メインルーチン uint nRet; IntPtr hDeviceHandle; IFCIMG_ANY.IMGEVENTTABLE Mask; IFCIMG_ANY.IMGEVENTREQ Event; IFCIMG_ANY.PIMGCALLBACK proc = new IFCIMG_ANY.PIMGCALLBACK(lpCallBackProc); hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGST1”); : : Event.hWnd = NULL; Event.uMessage = NULL; Event.hEvent = NULL; Event.pCallBackProc = proc; Event.pUser = new IntPtr(0x1234); nRet = IFCIMG_ANY.ImgSetEvent(hDeviceHandle, ref Event); Mask.dwDI = 0x01; Mask.dwFrame = 0x01; Mask.dwTrigger = 0; nRet = IFCIMG_ANY.ImgSetEventMask(hDeviceHandle, ref Mask); © 2003, 2016 Interface Corporation. All rights reserved. 148 GPC-5520 Help for Windows ●Visual Basic .NET ' コールバック関数 Private Sub lpCallBackProc ( ByVal IntrFlg As IFCIMG_ANY.IMGEVENTTABLE,_ ByVal dwFrameCnt As Integer, ByRef User As IntPtr) ‘ 割り込み処理を記述します : : End Sub ‘ メインルーチン Dim nRet As Integer Dim lpszName As String Dim hDeviceHandle As IntPtr Dim Mask As IFCIMG_ANY.IMGEVENTTABLE Dim Event As IFCIMG_ANY.IMGEVENTREQ Dim proc As IFCIMG_ANY.PIMGCALLBACK lpszName = “IFIMGST1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : : proc = New IFCIMG_ANY.PIMGCALLBACK(AddressOf lpCallBackProc); Event.hWnd = 0 Event.uMessage = 0 Event.hEvent = 0 Event.lpCallBackProc = proc Event.pUser = New IntPtr(0x1234); nRet = IFCIMG_ANY.ImgSetEvent(hDeviceHandle, Event) Mask.dwDI = &H01 Mask.dwFrame = &H01 Mask.dwTrigger = 0 nRet = IFCIMG_ANY.ImgSetEventMask(hDeviceHandle, Mask) © 2003, 2016 Interface Corporation. All rights reserved. 149 GPC-5520 Help for Windows ●Delphi 8 var procedure lpCallBackProc(Event: IFCIMG.IMGEVENTTABLE; dwFrameCnt:Cardinal; dwUser:Cardinal);forwad; // ガーベージコレクトによってデリゲートが破棄されないようにデリゲートを // グローバル変数に代入し、その変数をアンマネージ関数へ渡します。 const CallProcDelegete: IMGCALLBACK= @lpCallBackProc; : //コールバック関数 procedure lpCallBackProc (Event: IFCIMG.IMGEVENTTABLE; dwFrameCnt:Cardinal; dwUser:Cardinal) begin //ここに割り込み発生時に処理するコードを記述します。 : end; // メインルーチン var nRet: Integer; hDeviceHandle: Integer; Mask: IFCIMG.IMGEVENTTABLE; Event: IFCIMG.IMGEVENTTABLE; hDeviceHandle := IFCIMG.ImgOpen(“IFIMGST1”); : : Event.hWnd := 0; Event.uMessage := 0; Event.hEvent := 0; Event.lpCallBackProc := CallProcDelegete; Event.dwUser := $1234; nRet := IFCIMG.ImgSetEvent(hDeviceHandle, Event); Mask.dwDI := $01; Mask.dwFrame := $01; Mask.dwTrigger := 0; nRet := IFCIMG.ImgSetEventMask(hDeviceHandle, Mask); デバイス名「IFIMGST1」のデバイスに対して、 「IN1 割り込み」「フレーム転送完了割り込み」 時に実行する割り込みイベントを設定します。 Visual C++ : コールバック関数(lpCallBackProc)を実行。 Visual Basic : メッセージ(WM_USER)を送出。 Delphi : コールバック関数(lpCallBackProc)を実行。 © 2003, 2016 Interface Corporation. All rights reserved. 150 GPC-5520 Help for Windows 21. ImgSetEventEx 【機能】 割り込みの設定(メッセージ、イベント、コールバック関数の登録)を行います。 ImgSetEventMask でアンマスクした割り込み要因が発生した場合、本関数で設定した割り込み 処理が実行されます。 【書式】 ●C 言語 INT ImgSetEventEx( HANDLE PIMGEVENTREQEX hDeviceHandle, pEventEx // デバイスハンドル // IMGEVENTREQEX 構造体 へのポインタ ); ●Visual Basic Declare Function ImgSetEventEx Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByRef pEventEx As IMGEVENTREQEX _ ‘ IMGEVENTREQEX 構造体 への参照渡し )As Long ●Delphi function ImgSetEventEx ( hDeviceHandle: THandle; var pEventEx: // IMGEVENTREQEX デバイスハンドル // IMGEVENTREQEX 構造体 への参照渡し ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetEventEx( IntPtr hDeviceHandle, ref IMGEVENTREQEX pEventEx // デバイスハンドル // IMGEVENTREQEX 構造体 へのポインタ ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetEventEx( uint hDeviceHandle, ref IMGEVENTREQEX pEventEx // デバイスハンドル // IMGEVENTREQEX 構造体 へのポインタ ); © 2003, 2016 Interface Corporation. All rights reserved. 151 GPC-5520 Help for Windows ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetEventEx Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ ByRef pEventEx As IMGEVENTREQEX ‘ デバイスハンドル IMGEVENTREQEX 構造体 への参照渡し )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgSetEventEx Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ ByRef pEventEx As IMGEVENTREQEX ‘ デバイスハンドル IMGEVENTREQEX 構造体 への参照渡し )As Integer ●Delphi 8 class function ImgSetEventEx ( hDeviceHandle: Integer; var pEventEx: // IMGEVENTREQEX デバイスハンドル // IMGEVENTREQEX 構造体 への参照渡し ): Integer; static; 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 pEventEx 割り込み設定構造体へのポインタを指定してください。 構造体の説明については、『4.4 構造体』をご参照ください。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 © 2003, 2016 Interface Corporation. All rights reserved. 152 GPC-5520 Help for Windows 【備考】 ※ Visual Basic 6.0 ではコールバック関数が使用できません。メッセージ機能、またはイベ ントを使用してください。 メッセージ機能を使用する場合には、メッセージを送出するフォームのウィンドウ・プロ シージャを Win32API の SetWindowLong 関数を使用してフックする必要があります。使用方 法については、付属のサンプルプログラム、および Win32API のリファレンスを参照してく ださい。 ●コールバック関数の書式 コールバック関数の書式は以下の通りです。 (x86 専用) VOID CALLBACK pCallBackProcEx ( IMGEVENTTABLEEX EventEx, // DWORD dwUser // ); (x64 専用) VOID CALLBACK pCallBackProcEx ( IMGEVENTTABLEEX EventEx, PVOID pUser ); ●VISUAL C# .NET(x86、x64 共用) public delegate void PIMGCALLBACKEX( IMGEVENTTABLEEX Event, IntPtr pUser ); ●VISUAL C# .NET(x86 専用) public delegate void PIMGCALLBACKEX( IMGEVENTTABLEEX Event, uint dwUser ); 割込み要因 ユーザデータ // // 割込み要因 ユーザデータ // // 割り込み要因 ユーザデータ // // 割り込み要因 ユーザデータ ●Visual Basic .NET(x86、x64 共用) Delegate Sub PIMGCALLBACKEX ( _ ByVal Event As IMGEVENTTABLEEX, _ ByRef pUser As IntPtr_ ) ●Visual Basic .NET Delegate Sub PIMGCALLBACKEX ( _ ByVal Event As IMGEVENTTABLEEX, _ ByVal dwUser As Integer _ ) ‘ ‘ 割り込み要因 ユーザデータ ‘ ‘ 割り込み要因 ユーザデータ ●Delphi 8 © 2003, 2016 Interface Corporation. All rights reserved. 153 GPC-5520 Help for Windows var procedure CallProc( Event: IMGEVENTTABLEEX; // 割り込み要因 User: Cardinal // ユーザデータ );forwad; const CallProcDelegete: CMLCALLBACK= @CallProc; ○EventEx 割り込み要因情報です。割り込みの情報とフレームカウンタを取得できます。 構造体の説明については、『4.4 構造体』をご参照ください。 ○dwUser(pUser) ユーザ・データ ImgSetEventEx 関数実行時で指定したユーザ・データが取得されます。 【使用例】 ●C 言語(x86) // コールバック関数 VOID CALLBACK lpCallBackProcEx(IMGEVENTTABLEEX EventEx, DWORD dwUser){ // 割り込み処理を記述します : : } // メインルーチン INT nRet; HANDLE hDeviceHandle; IMGEVENTTABLE Mask; IMGEVENTREQEX EventEx; hDeviceHandle = ImgOpen(“IFIMGMEM1”); : EventEx.hWnd = NULL; EventEx.uMessage = NULL; EventEx.hEvent = NULL; EventEx.pCallBackProcEx = (PIMGCALLBACKEX)lpCallBackProcEx EventEx.dwUser = 0x1234; nRet = ImgSetEventEx(hDeviceHandle, &EventEx); Mask.dwDI = 0x01; Mask.dwFrame = 0x01; Mask.dwTrigger = 0; nRet = ImgSetEventMask(hDeviceHandle, &Mask); © 2003, 2016 Interface Corporation. All rights reserved. 154 GPC-5520 Help for Windows ●C 言語(x64) // コールバック関数 VOID CALLBACK lpCallBackProcEx(IMGEVENTTABLEEX EventEx, PVOID pUser) { DWORD UserData; UserData = *((PDWORD)pUser); } // メインルーチン INT nRet; HANDLE hDeviceHandle; IMGEVENTTABLE Mask; IMGEVENTREQEX EventEx; DWORD UserData; hDeviceHandle = ImgOpen(“IFIMGMEM1”); : : EventEx.hWnd = NULL; EventEx.uMessage = NULL; EventEx.hEvent = NULL; EventEx.pCallBackProcEx = (PIMGCALLBACKEX)lpCallBackProcEx UserData = 0x1234; EventEx.pUser = &UserData; nRet = ImgSetEventEx(hDeviceHandle, &EventEx); Mask.dwDI = 0x01; Mask.dwFrame = 0x01; Mask.dwTrigger = 0; nRet = ImgSetEventMask(hDeviceHandle, &Mask); © 2003, 2016 Interface Corporation. All rights reserved. 155 GPC-5520 Help for Windows ●Visual Basic Visual Basic 6.0 では、コールバック関数が使用できないため、メッセージ機能を使用しま す。 ‘ 元のウィンドウ・プロシージャのアドレス保存用変数 Public lpPrevWndProc As Long ‘ ウィンドウ・プロシージャ Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, _ ByVal wParam As Long, ByVal lParam As Long) As Long ‘ 割り込み処理(WM_USER に対する処理)を記述します If uMsg = WM_USER Then : End If ‘ 元のウィンドウ・プロシージャを呼び出します WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lParam) End Function ‘ メインルーチン Dim nRet As Long Dim lpszName As String Dim hDeviceHandle As Long Dim Mask As IMGEVENTTABLE Dim EventEx As IMGEVENTREQEX lpszName = “IFIMGMEM1” hDeviceHandle = ImgOpen(lpszName) : : ' ウィンドウ・プロシージャをフックします lpPrevWndProc = SetWindowLong(Form1.hWnd, GWL_WNDPROC, AddressOf WindowProc) EventEx.hWnd = Form1.hWnd EventEx.uMessage = WM_USER EventEx.hEvent = 0 EventEx.lpCallBackProc = 0 EventEx.dwUser = &H1234 nRet = ImgSetEventEx(hDeviceHandle, EventEx) Mask.dwDI = &H01 Mask.dwFrame = &H01 Mask.dwTrigger = 0 nRet = ImgSetEventMask(hDeviceHandle, Mask) © 2003, 2016 Interface Corporation. All rights reserved. 156 GPC-5520 Help for Windows ●Delphi // コールバック関数 procedure lpCallBackProcEx(EventEx: IMGEVENTTABLEEX, dwUser: DWORD); stdcall; var //変数定義 begin // 割り込み処理を記述します : : end; // メインルーチン var nRet: Integer; hDeviceHandle: THandle; Mask: IMGEVENTTABLE; EventEx: IMGEVENTREQEX; hDeviceHandle := ImgOpen(“IFIMGMEM1”); : : EventEx.hWnd := 0; EventEx.uMessage := 0; EventEx.hEvent := 0; EventEx.lpCallBackProcEx := Addr(lpCallBackProcEx); EventEx.dwUser := $1234; nRet := ImgSetEventEx(hDeviceHandle, EventEx); Mask.dwDI := $01; Mask.dwFrame := $01; Mask.dwTrigger := 0; nRet := ImgSetEventMask(hDeviceHandle, Mask); © 2003, 2016 Interface Corporation. All rights reserved. 157 GPC-5520 Help for Windows ●Visual C# .NET // コールバック関数 public void lpCallBackProc(IFCIMG_ANY.IMGEVENTTABLEEX EventEx, IntPtr pUser) { // 割り込み処理を記述します : : } // メインルーチン uint nRet; IntPtr hDeviceHandle; IFCIMG_ANY.IMGEVENTTABLE Mask; IFCIMG_ANY.IMGEVENTREQEX EventEx; IFCIMG_ANY.PIMGCALLBACKEX proc = new IFCIMG_ANY.PIMGCALLBACKEX(lpCallBackProc); hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGMEM1”); : : EventEx.hWnd = NULL; EventEx.uMessage = NULL; EventEx.hEvent = NULL; EventEx.pCallBackProcEx = proc; EventEx.pUser = new IntPtr(0x1234); nRet = IFCIMG_ANY.ImgSetEventEx(hDeviceHandle, ref EventEx); Mask.dwDI = 0x01; Mask.dwFrame = 0x01; Mask.dwTrigger = 0; nRet = IFCIMG_ANY.ImgSetEventMask(hDeviceHandle, ref Mask); © 2003, 2016 Interface Corporation. All rights reserved. 158 GPC-5520 Help for Windows ●Visual Basic .NET ' コールバック関数 Private Sub lpCallBackProc( ByVal EventEx As IFCIMG_ANY.IMGEVENTTABLEEX, _ ByRef pUser As IntPtr) ‘ 割り込み処理を記述します : : End Sub ‘ メインルーチン Dim nRet As Integer Dim lpszName As String Dim hDeviceHandle As IntPtr Dim Mask As IFCIMG_ANY.IMGEVENTTABLE Dim EventEx As IFCIMG_ANY.IMGEVENTREQEX Dim proc As IFCIMG_ANY.PIMGCALLBACKEX lpszName = “IFIMGMEM1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : : proc = New IFCIMG_ANY.PIMGCALLBACKEX(AddressOf lpCallBackProc); EventEx.hWnd = 0 EventEx.uMessage = 0 EventEx.hEvent = 0 EventEx.lpCallBackProc = proc EventEx.pUser = New IntPtr(&H1234) nRet = IFCIMG_ANY.ImgSetEventEx(hDeviceHandle, EventEx) Mask.dwDI = &H01 Mask.dwFrame = &H01 Mask.dwTrigger = 0 nRet = IFCIMG_ANY.ImgSetEventMask(hDeviceHandle, Mask) © 2003, 2016 Interface Corporation. All rights reserved. 159 GPC-5520 Help for Windows ●Delphi 8 var procedure CallProc(EventEx:IFCIMG.IMGEVENTTABLEEX; dwUser:Cardinal);forwad; // ガーベージコレクトによってデリゲートが破棄されないようにデリゲートを // グローバル変数に代入し、その変数をアンマネージ関数へ渡します。 const CallProcDelegete: IMGCALLBACKEX= @CallProc; : //コールバック関数 procedure CallProc(EventEx:IFCIMG.IMGEVENTTABLEEX; dwUser:Cardinal) begin //ここに割り込み発生時に処理するコードを記述します。 : end; // メインルーチン var nRet: Integer; hDeviceHandle: Integer; Mask: IFCIMG.IMGEVENTTABLE; EventEx: IFCIMG.IMGEVENTTABLEEX; hDeviceHandle := IFCIMG.ImgOpen(“IFIMGMEM1”); : : EventEx.hWnd := 0; EventEx.uMessage := 0; EventEx.hEvent := 0; EventEx.lpCallBackProcEx := CallProcDelegete; EventEx.dwUser := $1234; nRet := IFCIMG.ImgSetEventEx(hDeviceHandle, EventEx); Mask.dwDI := $01; Mask.dwFrame := $01; Mask.dwTrigger := 0; nRet := IFCIMG.ImgSetEventMask(hDeviceHandle, Mask); デバイス名「IFIMGMEM1」のデバイスに対して、 「IN1 割り込み」「フレーム転送完了割り込み」 時に実行する割り込みイベントを設定します。 Visual C++ : コールバック関数(lpCallBackProc)を実行。 Visual Basic : メッセージ(WM_USER)を送出。 Delphi : コールバック関数(lpCallBackProc)を実行。 © 2003, 2016 Interface Corporation. All rights reserved. 160 GPC-5520 Help for Windows 22. ImgSetChannel 【機能】 指定したチャンネルに切換えます。 【書式】 ●C 言語 INT ImgSetChannel( HANDLE DWORD ); hDeviceHandle, dwChannelNum // // デバイスハンドル チャンネル番号 ●Visual Basic Declare Function ImgSetChannel Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByVal dwChannelNum As Long _ ‘ チャンネル番号 )As Long ●Delphi function ImgSetChannel ( hDeviceHandle: THandle; dwChannelNum: DWORD ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetChannel( IntPtr hDeviceHandle, uint dwChannelNum ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetChannel( uint hDeviceHandle, uint dwChannelNum ); // // デバイスハンドル チャンネル番号 // // デバイスハンドル チャンネル番号 // // デバイスハンドル チャンネル番号 ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetChannel Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ ByVal dwChannelNum As Integer ‘ )As Integer デバイスハンドル チャンネル番号 © 2003, 2016 Interface Corporation. All rights reserved. 161 GPC-5520 Help for Windows ●Visual Basic .NET(x86 専用) Declare Function ImgSetChannel Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ ByVal dwChannelNum As Integer ‘ )As Integer ●Delphi 8 class function ImgSetChannel ( hDeviceHandle: Integer; dwChannelNum: Cardinal ): Integer; static; デバイスハンドル チャンネル番号 // // デバイスハンドル チャンネル番号 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 dwChannelNum 切り換えるチャンネルを指定します。 識別子 値 IFIMG_CHANNEL_CN1 IFIMG_CHANNEL_CN4 IFIMG_CHANNEL_CN5 IFIMG_CHANNEL_CN6 IFIMG_CHANNEL_CN7 00000001h 00000004h 00000005h 00000006h 00000007h チャンネル番号 PCI 型式 PCI 型式以外 CN1 VIN1 CN4 VIN2 CN5 VIN3 CN6 VIN4 CN7 VIN5 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 【備考】 ・CTP/CPZ/PCI-5531、CTP/CPZ/PCI-5533 を使用する場合、チャンネル切り換えは SDRAM キャプ チャにも反映されます。 ・本関数実行直後に ImgStartCapture 関数を呼び出してキャプチャを開始した場合、正常にキ ャプチャした画像が得られない場合があります。これは切換えによって、インタフェースモ ジュールとカメラの出力が同期していない為です。 本関数実行後、約 33ms ほどの同期時間を設ける事により回避してください。 © 2003, 2016 Interface Corporation. All rights reserved. 162 GPC-5520 Help for Windows 【使用例】 ●C 言語 HANDLE hDeviceHandle; int nRet; hDeviceHandle = ImgOpen(“IFIMGST1”); : nRet = ImgSetChannel(hDeviceHandle, IFIMG_CHANNEL_CN4); ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim nRet As Long lpszName = “IFIMGST1” hDeviceHandle = ImgOpen(lpszName) : nRet = ImgSetChannel(hDeviceHandle, IFIMG_CHANNEL_CN4) ●Delphi var lpszName: String; hDeviceHandle: THandle; nRet: Integer; lpszName := 'IFIMGST1'; hDeviceHandle := ImgOpen(lpszName); : nRet := ImgSetChannel(hDeviceHandle, IFIMG_CHANNEL_CN4); ●Visual C# .NET IntPtr hDeviceHandle; int nRet; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGST1”); : nRet = IFCIMG_ANY.ImgSetChannel(hDeviceHandle, IFCIMG_ANY.IFIMG_CHANNEL_CN4); ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim nRet As Integer lpszName = “IFIMGST1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : nRet = IFCIMG_ANY.ImgSetChannel(hDeviceHandle, IFCIMG_ANY.IFIMG_CHANNEL_CN4) © 2003, 2016 Interface Corporation. All rights reserved. 163 GPC-5520 Help for Windows ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; nRet: Integer; lpszName := 'IFIMGST1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); : nRet := IFCIMG.ImgSetChannel(hDeviceHandle, IFCIMG.IFIMG_CHANNEL_CN4); デバイス名「IFIMGST1」のデバイスに対して、使用するチャンネルを CN4 に設定します。 © 2003, 2016 Interface Corporation. All rights reserved. 164 GPC-5520 Help for Windows 23. ImgSetCaptureConfig バスマスタによるキャプチャの動作を設定します。 間引きによるキャプチャの設定(1Ch 使用時限定)や、多チャンネル版でのチャンネル切り換え タイミングを設定します。SDRAM によるキャプチャには反映されません。 【書式】 ●C 言語 INT ImgSetCaptureConfig( HANDLE hDeviceHandle, PIMGCAPCONFIG pCaptureConfig // デバイスハンドル // IMGCAPCONFIG 構造体 へのポインタ ); ●Visual Basic Declare Function ImgSetCaptureConfig Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByRef pCaptureConfig As IMGCAPCONFIG _ ‘ IMGCAPCONFIG 構造体 への参照渡し )As Long ●Delphi function ImgSetCaptureConfig ( hDeviceHandle: THandle; var pCaptureConfig: IMGCAPCONFIG // デバイスハンドル // IMGCAPCONFIG 構造体 への参照渡し ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetCaptureConfig( IntPtr hDeviceHandle, ref IMGCAPCONFIG pCaptureConfig // デバイスハンドル // IMGCAPCONFIG 構造体 へのポインタ ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetCaptureConfig( uint hDeviceHandle, ref IMGCAPCONFIG pCaptureConfig // デバイスハンドル // IMGCAPCONFIG 構造体 へのポインタ ); © 2003, 2016 Interface Corporation. All rights reserved. 165 GPC-5520 Help for Windows ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetCaptureConfig Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByRef pCaptureConfig As IMGCAPCONFIG ‘ IMGCAPCONFIG 構造体 への参照渡し )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgSetCaptureConfig Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByRef pCaptureConfig As IMGCAPCONFIG ‘ IMGCAPCONFIG 構造体 への参照渡し )As Integer ●Delphi 8 class function ImgSetCaptureConfig ( hDeviceHandle: Integer; var pCaptureConfig: IMGCAPCONFIG // デバイスハンドル // IMGCAPCONFIG 構造体 への参照渡し ): Integer; static; 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 pCaptureConfig IMGCAPCONFIG構造体へのポインタを指定してください。 構造体の説明については、『4.4 構造体』をご参照ください。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 © 2003, 2016 Interface Corporation. All rights reserved. 166 GPC-5520 Help for Windows 【使用例】 ●C 言語 IMGCAPCONFIG CapConf; HANDLE hDeviceHandle; int nRet; hDeviceHandle = ImgOpen(“IFIMGBIN1”); : // 指定フレーム間隔モードの場合は以下のように設定します。 CapConf.dwMode = IFIMG_CAPTURE_THINOUT; CapConf.dwThinFrameCnt = 10; // 指定時間間隔モードの場合は以下のように設定します。 CapConf.dwMode = IFIMG_CAPTURE_TIMER; CapConf.dwTimerCycle = 1000; // 周期 1000ms // 指定フレーム毎チャンネル切り換えモードの場合は以下のように設定します。 CapConf.dwMode = IFIMG_CAPTURE_CH_FRAME; CapConf.dwTimerCycle = 1000; // 周期 1000ms CapConf.dwChFrameCnt = 10; // 10 フレーム毎で切り換え // CN1→CN4→CN5 の順番で切り換え CapConf.dwChangepattern[0] = IFIMG_CHANNEL_CN1; CapConf.dwChangepattern[1] = IFIMG_CHANNEL_CN4; CapConf.dwChangepattern[2] = IFIMG_CHANNEL_CN5; CapConf.dwChangepattern[3] = 0; CapConf.dwChangepattern[4] = 0; // 指定時間毎チャンネル切り換えモードの場合は以下のように設定します。 CapConf.dwMode = IFIMG_CAPTURE_CH_TIMER; CapConf.dwTimerCycle = 1000; // 周期 1000ms 毎で切り換え CapConf.dwChFrameCnt = 10; // 1ch 当たり 10 フレームのキャプチャ // CN1→CN4→CN5 の順番で切り換え CapConf.dwChangepattern[0] = IFIMG_CHANNEL_CN1; CapConf.dwChangepattern[1] = IFIMG_CHANNEL_CN4; CapConf.dwChangepattern[2] = IFIMG_CHANNEL_CN5; CapConf.dwChangepattern[3] = 0; CapConf.dwChangepattern[4] = 0; nRet = ImgSetCaptureConfig(hDeviceHandle, &CapConf); © 2003, 2016 Interface Corporation. All rights reserved. 167 GPC-5520 Help for Windows ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim CapConf As IMGCAPCONFIG Dim nRet As Long lpszName = “IFIMGBIN1” hDeviceHandle = ImgOpen(lpszName) : ‘ 指定フレーム間隔モードの場合は以下のように設定します。 CapConf.dwMode = IFIMG_CAPTURE_THINOUT CapConf.dwThinFrameCnt = 10 ‘ 指定時間間隔モードの場合は以下のように設定します。 CapConf.dwMode = IFIMG_CAPTURE_TIMER CapConf.dwTimerCycle = 1000 ‘ 周期 1000ms ‘ 指定フレーム毎チャンネル切り換えモードの場合は以下のように設定します。 CapConf.dwMode = IFIMG_CAPTURE_CH_FRAME CapConf.dwTimerCycle = 1000 ‘ 周期 1000ms CapConf.dwChFrameCnt = 10 ‘ 10 フレーム毎で切り換え ‘ CN1→CN4→CN5 の順番で切り換え CapConf.dwChangepattern(0) = IFIMG_CHANNEL_CN1 CapConf.dwChangepattern(1) = IFIMG_CHANNEL_CN4 CapConf.dwChangepattern(2) = IFIMG_CHANNEL_CN5 CapConf.dwChangepattern(3) = 0 CapConf.dwChangepattern(4) = 0 ‘ 指定時間毎チャンネル切り換えモードの場合は以下のように設定します。 CapConf.dwMode = IFIMG_CAPTURE_CH_TIMER CapConf.dwTimerCycle = 1000 ‘ 周期 1000ms 毎で切り換え CapConf.dwChFrameCnt = 10; ‘ 1ch 当たり 10 フレームのキャプチャ ‘ CN1→CN4→CN5 の順番で切り換え CapConf.dwChangepattern(0) = IFIMG_CHANNEL_CN1 CapConf.dwChangepattern(1) = IFIMG_CHANNEL_CN4 CapConf.dwChangepattern(2) = IFIMG_CHANNEL_CN5 CapConf.dwChangepattern(3) = 0 CapConf.dwChangepattern(4) = 0 nRet = ImgSetCaptureConfig(hDeviceHandle, CapConf) © 2003, 2016 Interface Corporation. All rights reserved. 168 GPC-5520 Help for Windows ●Delphi var lpszName: String; hDeviceHandle: THandle; nRet: Integer; CapConf: IMGCAPCONFIG; lpszName := 'IFIMGBIN1'; hDeviceHandle := ImgOpen(lpszName); : // 指定フレーム間隔モードの場合は以下のように設定します。 CapConf.dwMode := IFIMG_ CAPTURE_THINOUT; CapConf.dwThinFrameCnt := 10; // 指定時間間隔モードの場合は以下のように設定します。 CapConf.dwMode := IFIMG_CAPTURE_TIMER; CapConf.dwTimerCycle := 1000; // 周期 1000ms // 指定フレーム毎チャンネル切り換えモードの場合は以下のように設定します。 CapConf.dwMode := IFIMG_CAPTURE_CH_FRAME; CapConf.dwTimerCycle := 1000; // 周期 1000ms CapConf.dwChFrameCnt := 10; // 10 フレーム毎で切り換え // CN1→CN4→CN5 の順番で切り換え CapConf.dwChangepattern[0] := IFIMG_CHANNEL_CN1; CapConf.dwChangepattern[1] := IFIMG_CHANNEL_CN4; CapConf.dwChangepattern[2] := IFIMG_CHANNEL_CN5; CapConf.dwChangepattern[3] := 0; CapConf.dwChangepattern[4] := 0; // 指定時間毎チャンネル切り換えモードの場合は以下のように設定します。 CapConf.dwMode := IFIMG_CAPTURE_CH_TIMER; CapConf.dwTimerCycle := 1000; // 周期 1000ms 毎で切り換え CapConf.dwChFrameCnt := 10; // 1ch 当たり 10 フレームのキャプチャ // CN1→CN4→CN5 の順番で切り換え CapConf.dwChangepattern[0] := IFIMG_CHANNEL_CN1; CapConf.dwChangepattern[1] := IFIMG_CHANNEL_CN4; CapConf.dwChangepattern[2] := IFIMG_CHANNEL_CN5; CapConf.dwChangepattern[3] := 0; CapConf.dwChangepattern[4] := 0; nRet := ImgSetCaptureConfig(hDeviceHandle, pCapConf); © 2003, 2016 Interface Corporation. All rights reserved. 169 GPC-5520 Help for Windows ●Visual C# .NET IFCIMG_ANY.IMGCAPCONFIG CapConf; IntPtr hDeviceHandle; int nRet; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGBIN1”); : CapConf.InitializeArray(); // 指定フレーム間隔モードの場合は以下のように設定します。 CapConf.dwMode = IFCIMG_ANY.IFIMG_CAPTURE_THINOUT; CapConf.dwThinFrameCnt = 10; // 指定時間間隔モードの場合は以下のように設定します。 CapConf.dwMode = IFCIMG_ANY.IFIMG_CAPTURE_TIMER; CapConf.dwTimerCycle = 1000; // 周期 1000ms // 指定フレーム毎チャンネル切り換えモードの場合は以下のように設定します。 CapConf.dwMode = IFCIMG_ANY.IFIMG_CAPTURE_CH_FRAME; CapConf.dwTimerCycle = 1000; // 周期 1000ms CapConf.dwChFrameCnt = 10; // 10 フレーム毎で切り換え // CN1→CN4→CN5 の順番で切り換え CapConf.SetChangePattern(0 , IFCIMG_ANY.IFIMG_CHANNEL_CN1); CapConf.SetChangePattern(0 , IFCIMG_ANY.IFIMG_CHANNEL_CN4); CapConf.SetChangePattern(0 , IFCIMG_ANY.IFIMG_CHANNEL_CN5); CapConf.SetChangePattern(0 , 0); CapConf.SetChangePattern(0 , 0); // 指定時間毎チャンネル切り換えモードの場合は以下のように設定します。 CapConf.dwMode = IFCIMG_ANY.IFIMG_CAPTURE_CH_TIMER; CapConf.dwTimerCycle = 1000; // 周期 1000ms 毎で切り換え CapConf.dwChFrameCnt = 10; // 1ch 当たり 10 フレームのキャプチャ // CN1→CN4→CN5 の順番で切り換え CapConf.SetChangePattern(0 , IFCIMG_ANY.IFIMG_CHANNEL_CN1); CapConf.SetChangePattern(0 , IFCIMG_ANY.IFIMG_CHANNEL_CN4); CapConf.SetChangePattern(0 , IFCIMG_ANY.IFIMG_CHANNEL_CN5); CapConf.SetChangePattern(0 , 0); CapConf.SetChangePattern(0 , 0); nRet = IFCIMG_ANY.ImgSetCaptureConfig(hDeviceHandle, ref CapConf); © 2003, 2016 Interface Corporation. All rights reserved. 170 GPC-5520 Help for Windows ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim CapConf As IFCIMG_ANY.IMGCAPCONFIG Dim nRet As Integer lpszName = “IFIMGBIN1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : ‘ 指定フレーム間隔モードの場合は以下のように設定します。 CapConf.dwMode = IFCIMG_ANY.IFIMG_CAPTURE_THINOUT CapConf.dwThinFrameCnt = 10 ‘ 指定時間間隔モードの場合は以下のように設定します。 CapConf.dwMode = IFCIMG_ANY.IFIMG_CAPTURE_TIMER CapConf.dwTimerCycle = 1000 ‘ 周期 1000ms ‘ 指定フレーム毎チャンネル切り換えモードの場合は以下のように設定します。 CapConf.dwMode = IFCIMG_ANY.IFIMG_CAPTURE_CH_FRAME CapConf.dwTimerCycle = 1000 ‘ 周期 1000ms CapConf.dwChFrameCnt = 10 ‘ 10 フレーム毎で切り換え ‘ CN1→CN4→CN5 の順番で切り換え CapConf.SetChangePattern(0 , IFCIMG_ANY.IFIMG_CHANNEL_CN1) CapConf.SetChangePattern(0 , IFCIMG_ANY.IFIMG_CHANNEL_CN4) CapConf.SetChangePattern(0 , IFCIMG_ANY.IFIMG_CHANNEL_CN5) CapConf.SetChangePattern(0 , 0) CapConf.SetChangePattern(0 , 0) ‘ 指定時間毎チャンネル切り換えモードの場合は以下のように設定します。 CapConf.dwMode = IFCIMG_ANY.IFIMG_CAPTURE_CH_TIMER CapConf.dwTimerCycle = 1000 ‘ 周期 1000ms 毎で切り換え CapConf.dwChFrameCnt = 10 ‘ 1ch 当たり 10 フレームのキャプチャ ‘ CN1→CN4→CN5 の順番で切り換え CapConf.SetChangePattern(0 , IFCIMG_ANY.IFIMG_CHANNEL_CN1) CapConf.SetChangePattern(0 , IFCIMG_ANY.IFIMG_CHANNEL_CN4) CapConf.SetChangePattern(0 , IFCIMG_ANY.IFIMG_CHANNEL_CN5) CapConf.SetChangePattern(0 , 0) CapConf.SetChangePattern(0 , 0) nRet = IFCIMG_ANY.ImgSetCaptureConfig(hDeviceHandle, CapConf) © 2003, 2016 Interface Corporation. All rights reserved. 171 GPC-5520 Help for Windows ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; nRet: Integer; CapConf: IFCIMG.IMGCAPCONFIG; lpszName := 'IFIMGBIN1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); : // 指定フレーム間隔モードの場合は以下のように設定します。 CapConf.dwMode := IFCIMG.IFIMG_CAPTURE_THINOUT; CapConf.dwThinFrameCnt := 10; // 指定時間間隔モードの場合は以下のように設定します。 CapConf.dwMode := IFCIMG.IFIMG_CAPTURE_TIMER; CapConf.dwTimerCycle := 1000; // 周期 1000ms // 指定フレーム毎チャンネル切り換えモードの場合は以下のように設定します。 CapConf.dwMode := IFCIMG.IFIMG_CAPTURE_CH_FRAME; CapConf.dwTimerCycle := 1000; // 周期 1000ms CapConf.dwChFrameCnt := 10; // 10 フレーム毎で切り換え // CN1→CN4→CN5 の順番で切り換え CapConf.dwChangepattern[0] := IFCIMG.IFIMG_CHANNEL_CN1; CapConf.dwChangepattern[1] := IFCIMG.IFIMG_CHANNEL_CN4; CapConf.dwChangepattern[2] := IFCIMG.IFIMG_CHANNEL_CN5; CapConf.dwChangepattern[3] := 0; CapConf.dwChangepattern[4] := 0; // 指定時間毎チャンネル切り換えモードの場合は以下のように設定します。 CapConf.dwMode := IFCIMG.IFIMG_CAPTURE_CH_TIMER; CapConf.dwTimerCycle := 1000; // 周期 1000ms 毎で切り換え CapConf.dwChFrameCnt := 10; // 1ch 当たり 10 フレームのキャプチャ // CN1→CN4→CN5 の順番で切り換え CapConf.dwChangepattern[0] := IFCIMG.IFIMG_CHANNEL_CN1; CapConf.dwChangepattern[1] := IFCIMG.IFIMG_CHANNEL_CN4; CapConf.dwChangepattern[2] := IFCIMG.IFIMG_CHANNEL_CN5; CapConf.dwChangepattern[3] := 0; CapConf.dwChangepattern[4] := 0; nRet := IFCIMG.ImgSetCaptureConfig(hDeviceHandle, pCapConf); デバイス名「IFIMGBIN1」のデバイスに対して、間引きによるキャプチャ、または多チャンネ ル切り換え時の設置を行います。 © 2003, 2016 Interface Corporation. All rights reserved. 172 GPC-5520 Help for Windows 24. ImgSetBufferVB 【機能】 転送先バッファの先頭ポインタとサイズ、画像のフォーマットを設定します。(Visual Basic 専用関数) 【書式】 ●Visual Basic Declare Function ImgSetbufferVB Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByRef pBufferAddress As Any, _ ‘ 転送先バッファ領域への 参照渡し ByVal ByVal )As Long dwBufferSize dwBufferFormat As Long, _ As Long _ ‘ ‘ ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetbufferVB Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ ByVal pBufferAddress As IntPtr, ‘ ByVal dwBufferSize ByVal dwBufferFormat )As Integer As Integer, As Integer ‘ ‘ Declare Function ImgSetbufferVB Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ ByRef pBufferAddress As Byte, ‘ ByVal dwBufferSize ByVal dwBufferFormat )As Integer As Integer, As Integer ‘ ‘ Declare Function ImgSetbufferVB Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ ByRef pBufferAddress As Short, ‘ ByVal dwBufferSize ByVal dwBufferFormat )As Integer As Integer, As Integer ‘ ‘ 転送先バッファサイズ カラーファーマット デバイスハンドル 転送先バッファ領域への 参照渡し 転送先バッファサイズ カラーファーマット デバイスハンドル 転送先バッファ領域への 参照渡し 転送先バッファサイズ カラーファーマット デバイスハンドル 転送先バッファ領域への 参照渡し 転送先バッファサイズ カラーファーマット © 2003, 2016 Interface Corporation. All rights reserved. 173 GPC-5520 Help for Windows Declare Function ImgSetbufferVB Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ ByRef pBufferAddress As Integer, ‘ ByVal dwBufferSize ByVal dwBufferFormat )As Integer As Integer, As Integer ‘ ‘ Declare Function ImgSetbufferVB Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ ByVal pBufferAddress( ) As Byte, ‘ ByVal dwBufferSize ByVal dwBufferFormat )As Integer As Integer, As Integer ‘ ‘ Declare Function ImgSetbufferVB Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ ByVal pBufferAddress( ) As Short, ‘ ByVal dwBufferSize ByVal dwBufferFormat )As Integer As Integer, As Integer ‘ ‘ Declare Function ImgSetbufferVB Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ ByVal pBufferAddress( ) As Integer, ‘ ByVal dwBufferSize ByVal dwBufferFormat )As Integer As Integer, As Integer ‘ ‘ ●Visual Basic .NET(x86 専用) Declare Function ImgSetbufferVB Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ ByRef pBufferAddress As Byte, ‘ ByVal dwBufferSize ByVal dwBufferFormat )As Integer As Integer, As Integer ‘ ‘ デバイスハンドル 転送先バッファ領域への 参照渡し 転送先バッファサイズ カラーファーマット デバイスハンドル 転送先バッファ領域への 参照渡し 転送先バッファサイズ カラーファーマット デバイスハンドル 転送先バッファ領域への 参照渡し 転送先バッファサイズ カラーファーマット デバイスハンドル 転送先バッファ領域への 参照渡し 転送先バッファサイズ カラーファーマット デバイスハンドル 転送先バッファ領域への 参照渡し 転送先バッファサイズ カラーファーマット © 2003, 2016 Interface Corporation. All rights reserved. 174 GPC-5520 Help for Windows Declare Function ImgSetbufferVB Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ ByRef pBufferAddress As Short, ‘ ByVal dwBufferSize ByVal dwBufferFormat )As Integer As Integer, As Integer ‘ ‘ Declare Function ImgSetbufferVB Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ ByRef pBufferAddress As Integer, ‘ ByVal dwBufferSize ByVal dwBufferFormat )As Integer As Integer, As Integer ‘ ‘ Declare Function ImgSetbufferVB Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ ByVal pBufferAddress( ) As Byte, ‘ ByVal dwBufferSize ByVal dwBufferFormat )As Integer As Integer, As Integer ‘ ‘ Declare Function ImgSetbufferVB Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ ByVal pBufferAddress( ) As Short, ‘ ByVal dwBufferSize ByVal dwBufferFormat )As Integer As Integer, As Integer ‘ ‘ Declare Function ImgSetbufferVB Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ ByVal pBufferAddress( ) As Integer, ‘ ByVal dwBufferSize ByVal dwBufferFormat )As Integer As Integer, As Integer ‘ ‘ デバイスハンドル 転送先バッファ領域への 参照渡し 転送先バッファサイズ カラーファーマット デバイスハンドル 転送先バッファ領域への 参照渡し 転送先バッファサイズ カラーファーマット デバイスハンドル 転送先バッファ領域への 参照渡し 転送先バッファサイズ カラーファーマット デバイスハンドル 転送先バッファ領域への 参照渡し 転送先バッファサイズ カラーファーマット デバイスハンドル 転送先バッファ領域への 参照渡し 転送先バッファサイズ カラーファーマット 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 © 2003, 2016 Interface Corporation. All rights reserved. 175 GPC-5520 Help for Windows pBufferAddress 転送先バッファ領域へ先頭アドレスを指定します。 ■x86 環境使用時 PC のメインメモリ(ユーザアプリケーション上のバッファ)を使用する場合はそのバッ ファの参照渡しを指定します。 ■x64 環境使用時 ドライバ内で確保した物理メモリを使用する場合は、-1 を指定します。 pBufferSize 転送先バッファ領域のサイズを指定してください。(Byte 単位) dwBufferFormat 画像のフォーマットフォーマットを指定します。 SDRAM 領域内のデータ転送時は、「IFIMG_COLOR_RGB24」を指定して下さい。 ●カラーフォーマット識別子 画像データを DMA 転送する場合は、以下のカラーフォーマット識別子を指定します。 識別子 値 意味 IFIMG_COLOR_RGB32 00000001h RGB32 bit IFIMG_COLOR_RGB24 00000002h RGB24 bit IFIMG_COLOR_RGB15 00000003h RGB15 bit IFIMG_COLOR_RGB16 0000000Bh RGB16 bit IFIMG_COLOR_GRAY8 00000004h GRAY8 bit IFIMG_COLOR_RED8 00000005h R 8bit IFIMG_COLOR_GREEN8 00000006h G 8bit IFIMG_COLOR_BLUE8 00000007h B 8bit IFIMG_COLOR_BIN8 00000008h 2 値化処理データ 8bit IFIMG_COLOR_FIL8 0000000Ch フィルタ 8bit IFIMG_COLOR_LABEL8 0000000Dh ラベリング 8bit ●解像度識別子 解像度を変更する場合、以下の識別子を OR 指定します。 識別子 値 NTSC 製品 IFIMG_RESOLUTION_640_480 00000000h 640×480 IFIMG_RESOLUTION_320_240 80000000h 320×240 IFIMG_RESOLUTION_160_120 40000000h 160×120 IFIMG_RESOLUTION_768_572 08000000h 未対応 IFIMG_RESOLUTION_384_286 04000000h 未対応 IFIMG_RESOLUTION_192_143 02000000h 未対応 ●画像処理データ識別子 識別子 IFIMG_MEASUEMENT_HSIT IFIMG_MEASUEMENT_PRO IFIMG_MEASUEMENT_LBLCNT IFIMG_MEASUEMENT_AREA © 2003, 2016 Interface Corporation. All 値 00000200h 00000400h 00000800h 00001000h rights reserved. 176 意味 PAL 製品 未対応 未対応 未対応 768×572 384×286 192×143 意味 濃度分布 射影 ラベル数 各ブロックの面積 GPC-5520 Help for Windows IFIMG_MEASUEMENT_GRV IFIMG_MEASUEMENT_FERE IFIMG_MEASUEMENT_ELLIPSE 00002000h 00004000h 00008000h © 2003, 2016 Interface Corporation. All rights reserved. 177 各ブロックのΣX、ΣY 各ブロックのフェレ径座標 各ブロックのΣX2、ΣXY、ΣY2 GPC-5520 Help for Windows 以下の識別子の組み合わせで、各画像処理結果を指定してください。 ラベル数 面積値 重心値 フェレ径 識別子 IFIMG_MEASUEMENT_LBLCNT ○ ○ ○ ○ IFIMG_MEASUEMENT_AREA - ○ ○ - IFIMG_MEASUEMENT_GRV - - ○ - IFIMG_MEASUEMENT_FERE - - - ○ IFIMG_MEASUEMENT_ELLIPSE - - - - 慣性等価楕円の傾き角 ○ ○ ○ - ○ 識別子の対応表 識別子 IFIMG_COLOR_RGB32 IFIMG_COLOR_RGB24 IFIMG_COLOR_RGB15 IFIMG_COLOR_RGB16 IFIMG_COLOR_GRAY8 IFIMG_COLOR_RED8 ※ IFIMG_COLOR_GREEN8 ※ IFIMG_COLOR_BLUE8 ※ IFIMG_COLOR_BIN8 IFIMG_COLOR_FIL8 IFIMG_COLOR_LABEL8 IFIMG_RESOLUTION_320_240 IFIMG_RESOLUTION_160_120 IFIMG_MEASUEMENT_HSIT IFIMG_MEASUEMENT_PRO IFIMG_MEASUEMENT_LBLCNT IFIMG_MEASUEMENT_AREA IFIMG_MEASUEMENT_GRV IFIMG_MEASUEMENT_FERE IFIMG_MEASUEMENT_ELLIPSE 55x0 ○ ○ ○ ○ ○ ○ ○ ○ ― ― ― ○ ○ ― ― ― ― ― ― ― 55x1 ○ ○ ○ ○ ○ ○ ○ ○ ― ― ― ○ ○ ― ― ― ― ― ― ― 55x2 ○ ○ ○ ○ ○ ○ ○ ○ ○ ― ― ○ ○ ― ― ― ― ― ― ― 55x3 ○ ○ ○ ○ ○ ○ ○ ○ ○ ― ― ○ ○ ― ― ― ― ― ― ― 55x4 ○ ○ ○ ○ ○ ○ ○ ○ ○ ― ― ○ ○ ○ ○ ― ― ― ― ― 55x5 ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ― ○ ○ ○ ○ ― ― ― ― ― 55x6 ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ 530115 ○ ○ ○ ○ ○ ○ ○ ○ ― ― ― ○ ○ ― ― ― ― ― ― ― 530215 ○ ○ ○ ○ ○ ○ ○ ○ ○ ― ― ○ ○ ― ― ― ― ― ― ― ※ PCI-5520 は、[12]C02 以降のインタフェースモジュールが対応しています。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 © 2003, 2016 Interface Corporation. All rights reserved. 178 GPC-5520 Help for Windows 【使用例】 ●x86 環境 Dim lpszName As String Dim hDeviceHandle As Long Dim buffer(921600) As byte Dim buffersize As Long lpszName = “IFIMGST1” hDeviceHandle = ImgOpen(lpszName) : : buffersize = 921600 nRet = ImgSetBufferVB(hDeviceHandle, buffer(0), buffersize, IFIMG_COLOR_RGB32) ●x64 環境 Dim hDeviceHandle As Long Dim nRet As Long Dim BuffPtr As Long lpszName = “IFIMGST1” hDeviceHandle = ImgOpen(lpszName) : nRet = ImgSetBufferVB(hDeviceHandle, ByVal -1, 640*480*3, IFIMG_COLOR_RGB24) nRet = ImgGetMemPtrValue(hDeviceHandle, BuffPtr) ●Visual Basic .NET(x86 用) Dim lpszName As String Dim hDeviceHandle As IntPtr Dim buffer(307200) As Integer Dim buffersize As Integer lpszName = “IFIMGST1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : : buffersize = 640*480*4 nRet = IFCIMG_ANY.ImgSetBufferVB(_ hDeviceHandle, buffer, buffersize, IFCIMG_ANY.IFIMG_COLOR_RGB32) © 2003, 2016 Interface Corporation. All rights reserved. 179 GPC-5520 Help for Windows ●Visual Basic .NET(x64) Dim lpszName As String Dim hDeviceHandle As IntPtr Dim buffersize As Integer Dim array_p As IntPtr lpszName = “IFIMGST1” hDeviceHandle = IFCIMG.ImgOpen(lpszName) : : buffersize = 640*480*4 nRet = IFCIMG_ANY.ImgSetBufferVB(_ hDeviceHandle, New IntPtr(-1), buffersize, IFCIMG.IFIMG_COLOR_RGB32) デバイス名「IFIMGST1」のデバイスに対してキャプチャ用バッファを設定します。 カラーフォーマットは RGB32 にします。 © 2003, 2016 Interface Corporation. All rights reserved. 180 GPC-5520 Help for Windows 25. ImgAllocateSDRAM SDRAM 領域を確保して、ハンドルを取得します。 このハンドルを使用して、SDRAM によるキャプチャ、データの読み出し、比較用画像データの 書き込みを行います。 【書式】 ●C 言語 INT ImgAllocateSDRAM( HANDLE hDeviceHandle, DWORD dwDataFormat, DWORD dwXLength, DWORD dwYLength, DWORD dwFrameCnt, PHANDE phSDRAMhandle ); // // // // // // デバイスハンドル データフォーマット X 方向長さ Y 方向長さ 確保フレーム数 SDRAM ハンドルを格納先バッファポインタ ●Visual Basic Declare Function ImgAllocateSDRAM Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByVal dwDataFormat As Long, _ ‘ データフォーマット ByVal dwXLength As Long, _ ‘ X 方向長さ ByVal dwYLength As Long, _ ‘ Y 方向長さ ByVal dwFrameCnt As Long, _ ‘ 確保フレーム数 ByRef phSDRAMhandle As Long _ ‘ SDRAM ハンドルを格納先 ‘ バッファの参照渡し )As Long ●Delphi function ImgAllocateSDRAM ( hDeviceHandle: THandle; // デバイスハンドル dwDataFormat: DWORD; // データフォーマット dwXLength: DWORD; // X 方向長さ dwYLentgh: DWORD; // Y 方向長さ dwFrameCnt: DWORD; // 確保フレーム数 var phSDRAMhandle: Thandle // SDRAM ハンドルを格納先の参照渡し ): Integer; stdcall; external 'IfImg.dll'; © 2003, 2016 Interface Corporation. All rights reserved. 181 GPC-5520 Help for Windows ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgAllocateSDRAM( IntPtr hDeviceHandle, // デバイスハンドル uint dwDataFormat, // データフォーマット uint dwXLength, // X 方向長さ uint dwYLength, // Y 方向長さ uint dwFrameCnt, // 確保フレーム数 out IntPtr phSDRAMhandle // SDRAM ハンドルを格納先バッファポインタ ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgAllocateSDRAM( uint hDeviceHandle, // デバイスハンドル uint dwDataFormat, // データフォーマット uint dwXLength, // X 方向長さ uint dwYLength, // Y 方向長さ uint dwFrameCnt, // 確保フレーム数 out uint phSDRAMhandle // SDRAM ハンドルを格納先バッファポインタ ); ●Visual Basic .NET(x86、x64 共用) Declare Function ImgAllocateSDRAM Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByVal dwDataFormat As Integer, ‘ データフォーマット ByVal dwXLength As Integer, ‘ X 方向長さ ByVal dwYLength As Integer, ‘ Y 方向長さ ByVal dwFrameCnt As Integer, ‘ 確保フレーム数 ByRef phSDRAMhandle As IntPtr ‘ SDRAM ハンドルを格納先バッファの 参照渡し )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgAllocateSDRAM Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByVal dwDataFormat As Integer, ‘ データフォーマット ByVal dwXLength As Integer, ‘ X 方向長さ ByVal dwYLength As Integer, ‘ Y 方向長さ ByVal dwFrameCnt As Integer, ‘ 確保フレーム数 ByRef phSDRAMhandle As Integer ‘ SDRAM ハンドルを格納先バッファの 参照渡し )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 182 GPC-5520 Help for Windows ●Delphi 8 class function ImgAllocateSDRAM ( hDeviceHandle: Integer; dwDataFormat: Cardinal; dwXLength: Cardinal; dwYLentgh: Cardinal; dwFrameCnt: Cardinal; var phSDRAMhandle: Integer ): Integer; static; // // // // // // デバイスハンドル データフォーマット X 方向長さ Y 方向長さ 確保フレーム数 SDRAM ハンドルを格納先の参照渡し 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 dwDataFormat データフォーマットを指定します。 識別子 値 IFIMG_COLOR_RGB32 00000001h IFIMG_COLOR_RGB24 00000002h IFIMG_COLOR_RGB15 00000003h IFIMG_COLOR_RGB16 0000000Bh IFIMG_COLOR_GRAY8 00000004h IFIMG_COLOR_RED8 00000005h IFIMG_COLOR_GREEN8 00000006h IFIMG_COLOR_BLUE8 00000007h IFIMG_COLOR_BIN8 00000008h IFIMG_COLOR_CMP8 0000000Ah 意味 RGB32 bit RGB24 bit RGB15 bit RGB16 bit GRAY8 bit R 8bit G 8bit B 8bit 2 値化処理データ 8bit 比較用データ 8bit また、以下の識別子を OR 指定することで、解像度を変更できます。 何も指定しない場合は、 「640×480」になります。 識別子 意味 IFIMG_RESOLUTION_320_240 320×240 IFIMG_RESOLUTION_160_120 160×120 dwXLength 比較データ(IFIMG_COLOR_CMP8)の X 方向長さを指定します。 範囲:1~640 ※比較データ以外の場合、0 を指定して下さい。 dwYLength 比較データ(IFIMG_COLOR_CMP8)の Y 方向長さを指定します。 範囲:1~480 ※比較データ以外の場合、0 を指定して下さい。 © 2003, 2016 Interface Corporation. All rights reserved. 183 GPC-5520 Help for Windows dwFrameCnt dwXLength と dwYLength で指定した領域を確保する数を指定します。 比較データの場合は 1 を指定してください。 phSDRAMhandle SDRAM ハンドルを格納するバッファポインタを指定します。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 【備考】 SDRAM に確保される領域は以下の用になります。 ○IFIMG_COLOR_RGB32 の場合 確保サイズ(byte) = フレームサイズ×dwFrameCnt ○IFIMG_COLOR_RGB24 の場合 確保サイズ(byte) = フレームサイズ×dwFrameCnt ○IFIMG_COLOR_RGB15/IFIMG_COLOR_RGB16 の場合 確保サイズ(byte) = フレームサイズ×dwFrameCnt ○IFIMG_COLOR_GRAY8/IFIMG_COLOR_RED8/IFIMG_COLOR_GREEN8/ /IFIMG_COLOR_BLUE8 IFIMG_COLOR_BIN8 の場合 確保サイズ(byte) = フレームサイズ×dwFrameCnt ○IFIMG_COLOR_CMP8 の場合 dwXLength の値と dwYLength の値を掛け合わせた値の約 1/4 のサイズになります。(dwXLength の値と dwYLength の値により数 Byte 増える事もあります。) 【使用例 1】 ●C 言語 HANDLE hDeviceHandle; int nRet; HANDLE hSDRAMHandle hDeviceHandle = ImgOpen(“IFIMGMEM1”); : // SDRAM 内にキャプチャ用領域を確保 nRet = ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_RGB24, 0, 0, 50, &hSDRAMHandle); © 2003, 2016 Interface Corporation. All rights reserved. 184 GPC-5520 Help for Windows ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim hSDRAMHandle As Long Dim nRet As Long lpszName = “IFIMGMEM hDeviceHandle = ImgOpen(lpszName) : ‘ SDRAM 内にキャプチャ用領域を確保 nRet = ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_RGB24, 0, 0, 50, hSDRAMHandle) ●Delphi var lpszName: String; hDeviceHandle: THandle; hSDRAMHandle: THandle; nRet: Integer; lpszName := 'IFIMGMEM1'; hDeviceHandle := ImgOpen(lpszName); : // SDRAM 内にキャプチャ用領域を確保 nRet := ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_RGB24, 0, 0, 50, hSDRAMHandle); ●Visual C# .NET IntPtr hDeviceHandle; int nRet; IntPtr hSDRAMHandle hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGMEM1”); : // SDRAM 内にキャプチャ用領域を確保 nRet = IFCIMG_ANY.ImgAllocateSDRAM(hDeviceHandle, IFCIMG_ANY.IFIMG_SDRAM_RGB24, 0, 0, 50, out hSDRAMHandle); © 2003, 2016 Interface Corporation. All rights reserved. 185 GPC-5520 Help for Windows ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim hSDRAMHandle As IntPtr Dim nRet As Integer lpszName = “IFIMGMEM” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : ‘ SDRAM 内にキャプチャ用領域を確保 nRet = IFCIMG_ANY.ImgAllocateSDRAM(hDeviceHandle, IFCIMG_ANY.IFIMG_SDRAM_RGB24, 0, 0, 50, hSDRAMHandle) ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; hSDRAMHandle: Integer; nRet: Integer; lpszName := 'IFIMGMEM1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); : // SDRAM 内にキャプチャ用領域を確保 nRet := IFCIMG.ImgAllocateSDRAM(hDeviceHandle, IFCIMG.IFIMG_SDRAM_RGB24, 0, 0, 50, hSDRAMHandle); デバイス名「IFIMGMEM1」のデバイスに対して、SDRAM 内の領域を確保します。 RGB24bit データフォーマットで 50 フレーム分確保して、ハンドル値を取得します。 © 2003, 2016 Interface Corporation. All rights reserved. 186 GPC-5520 Help for Windows 【使用例 2】 ●C 言語 HANDLE hDeviceHandle; int nRet; HANDLE hSDRAMHandle hDeviceHandle = ImgOpen(“IFIMGPTN1”); : // SDRAM 内に比較用データ領域を確保 nRet = ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_CMP8, 100, 100, 1, &hSDRAMHandle); ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim hSDRAMHandle As Long Dim nRet As Long lpszName = “IFIMGPTN1” hDeviceHandle = ImgOpen(lpszName) : ‘ SDRAM 内に比較用データ領域を確保 nRet = ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_CMP8, 100, 100, 1, hSDRAMHandle) ●Delphi var lpszName: String; hDeviceHandle: THandle; hSDRAMHandle: THandle; nRet: Integer; lpszName := 'IFIMGPTN1'; hDeviceHandle := ImgOpen(lpszName); : // SDRAM 内に比較用データ領域を確保 nRet := ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_CMP8, 100, 100, 1, hSDRAMHandle); © 2003, 2016 Interface Corporation. All rights reserved. 187 GPC-5520 Help for Windows ●Visual C# .NET IntPtr hDeviceHandle; int nRet; IntPtr hSDRAMHandle hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGPTN1”); : // SDRAM 内に比較用データ領域を確保 nRet = IFCIMG_ANY.ImgAllocateSDRAM(hDeviceHandle, IFCIMG_ANY.IFIMG_SDRAM_CMP8, 100, 100, 1, out hSDRAMHandle); ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim hSDRAMHandle As IntPtr Dim nRet As Integer lpszName = “IFIMGPTN1 hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : ‘ SDRAM 内に比較用データ領域を確保 nRet = IFCIMG_ANY.ImgAllocateSDRAM(hDeviceHandle, IFCIMG_ANY.IFIMG_SDRAM_CMP8, 100, 100, 1, hSDRAMHandle) ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; hSDRAMHandle: Integer; nRet: Integer; lpszName := 'IFIMGPTN1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); : // SDRAM 内に比較用データ領域を確保 nRet := IFCIMG.ImgAllocateSDRAM(hDeviceHandle, IFCIMG.IFIMG_SDRAM_CMP8, 100, 100, 1, hSDRAMHandle); デバイス名「IFIMGPTN1」のデバイスに対して、SDRAM 内の領域を確保します。 100×100 の比較用データ(8bit)を確保してハンドルを取得します。 © 2003, 2016 Interface Corporation. All rights reserved. 188 GPC-5520 Help for Windows 26. ImgFreeSDRAM 指定したハンドルに相当する SDRAM 領域を解放します。 【書式】 ●C 言語 INT ImgFreeSDRAM( HANDLE hDeviceHandle, HANDLE hSDRAMHandle ); // // デバイスハンドル SDRAM 管理ハンドル ●Visual Basic Declare Function ImgFreeSDRAM Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByVal hSDRAMHandle As Long _ ‘ SDRAM 管理ハンドル )As Long ●Delphi function ImgFreeSDRAM ( hDeviceHandle: hSDRAMHandle: THandle; // デバイスハンドル THandle // SDRAM 管理ハンドル ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgFreeSDRAM( IntPtr hDeviceHandle, // デバイスハンドル uint hSDRAMHandle // SDRAM 管理ハンドル ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgFreeSDRAM( uint hDeviceHandle, // デバイスハンドル uint hSDRAMHandle // SDRAM 管理ハンドル ); ●Visual Basic .NET(x86、x64 共用) Declare Function ImgFreeSDRAM Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByVal hSDRAMHandle As Integer ‘ SDRAM 管理ハンドル )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 189 GPC-5520 Help for Windows ●Visual Basic .NET(x86 専用) Declare Function ImgFreeSDRAM Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByVal hSDRAMHandle As Integer ‘ SDRAM 管理ハンドル )As Integer ●Delphi 8 class function ImgFreeSDRAM ( hDeviceHandle: Integer; hSDRAMHandle: Integer ): Integer; static; // // デバイスハンドル SDRAM 管理ハンドル 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 hSDRAMHandle ImgAllocateSDRAM関数で取得したハンドルを指定します。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 【使用例】 ●C 言語 HANDLE hDeviceHandle; int nRet; HANDLE hSDRAMHandle hDeviceHandle = ImgOpen(“IFIMGMEM1”); : // SDRAM 内にキャプチャ用領域を確保 nRet = ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_RGB24, 0, 0, 50, &hSDRAMHandle); : // 確保した SDRAM 領域を解放します。 nRet = ImgFreeSDRAM(hDeviceHandle, hSDRAMHandle); © 2003, 2016 Interface Corporation. All rights reserved. 190 GPC-5520 Help for Windows ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim hSDRAMHandle As Long Dim nRet As Long lpszName = “IFIMGMEM1” hDeviceHandle = ImgOpen(lpszName) : ‘ SDRAM 内にキャプチャ用領域を確保 nRet = ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_RGB24, 0, 0, 50, hSDRAMHandle) : ‘ 確保した SDRAM 領域を解放します。 nRet = ImgFreeSDRAM(hDeviceHandle, hSDRAMHandle) ●Delphi var lpszName: String; hDeviceHandle: THandle; hSDRAMHandle: THandle; nRet: Integer; lpszName := 'IFIMGMEM1'; hDeviceHandle := ImgOpen(lpszName); : // SDRAM 内にキャプチャ用領域を確保 nRet := ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_RGB24, 0, 0, 50, hSDRAMHandle); : // 確保した SDRAM 領域を解放します。 nRet := ImgFreeSDRAM(hDeviceHandle, hSDRAMHandle); ●Visual C# .NET IntPtr hDeviceHandle; int nRet; IntPtr hSDRAMHandle hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGMEM1”); : // SDRAM 内にキャプチャ用領域を確保 nRet = IFCIMG_ANY.ImgAllocateSDRAM(hDeviceHandle, IFCIMG_ANY.IFIMG_SDRAM_RGB24, 0, 0, 50, out hSDRAMHandle); : // 確保した SDRAM 領域を解放します。 nRet = IFCIMG_ANY.ImgFreeSDRAM(hDeviceHandle, hSDRAMHandle); ●Visual Basic .NET © 2003, 2016 Interface Corporation. All rights reserved. 191 GPC-5520 Help for Windows Dim Dim Dim Dim lpszName As String hDeviceHandle As IntPtr hSDRAMHandle As IntPtr nRet As Integer lpszName = “IFIMGMEM1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : ‘ SDRAM 内にキャプチャ用領域を確保 nRet = IFCIMG_ANY.ImgAllocateSDRAM(hDeviceHandle, IFCIMG_ANY.IFIMG_SDRAM_RGB24, 0, 0, 50, hSDRAMHandle) : ‘ 確保した SDRAM 領域を解放します。 nRet = IFCIMG_ANY.ImgFreeSDRAM(hDeviceHandle, hSDRAMHandle) ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; hSDRAMHandle: Integer; nRet: Integer; lpszName := 'IFIMGMEM1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); : // SDRAM 内にキャプチャ用領域を確保 nRet := IFCIMG.ImgAllocateSDRAM(hDeviceHandle, IFCIMG.IFIMG_SDRAM_RGB24, 0, 0, 50, hSDRAMHandle); : // 確保した SDRAM 領域を解放します。 nRet := IFCIMG.ImgFreeSDRAM(hDeviceHandle, hSDRAMHandle); デバイス名「IFIMGMEM1」のデバイスに対して、SDRAM 領域を解放します。 © 2003, 2016 Interface Corporation. All rights reserved. 192 GPC-5520 Help for Windows 27. ImgSetSDRAM キャプチャする SDRAM 領域を指定します。 【書式】 ●C 言語 INT ImgSetSDRAM( HANDLE hDeviceHandle, HANDLE hSDRAMHandle ); // // デバイスハンドル SDRAM 管理ハンドル ●Visual Basic Declare Function ImgSetSDRAM Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByVal hSDRAMHandle As Long _ ‘ SDRAM 管理ハンドル )As Long ●Delphi function ImgSetSDRAM ( hDeviceHandle: hSDRAMHandle: THandle; // デバイスハンドル THandle // SDRAM 管理ハンドル ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetSDRAM( IntPtr hDeviceHandle, // デバイスハンドル uint hSDRAMHandle // SDRAM 管理ハンドル ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetSDRAM( uint hDeviceHandle, // デバイスハンドル uint hSDRAMHandle // SDRAM 管理ハンドル ); ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetSDRAM Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByVal hSDRAMHandle As Integer ‘ SDRAM 管理ハンドル )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 193 GPC-5520 Help for Windows ●Visual Basic .NET(x86 専用) Declare Function ImgSetSDRAM Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByVal hSDRAMHandle As Integer ‘ SDRAM 管理ハンドル )As Integer ●Delphi 8 class function ImgSetSDRAM ( hDeviceHandle: Integer; hSDRAMHandle: Integer ): Integer; static; // // デバイスハンドル SDRAM 管理ハンドル 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 hSDRAMHandle ImgAllocateSDRAM関数で取得したハンドルを指定します。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 【備考】 バスマスタでのキャプチャも同時に実行する場合は、ImgSetBuffer 関数で指定したカラーフォ ーマットの SDRAM 領域を指定してください。 DMA 転送によるキャプチャ中または、SDRAM へのキャプチャ中に本関数を実行することは出来 ません。 【使用例】 ●C 言語 HANDLE hDeviceHandle; int nRet; HANDLE hSDRAMHandle hDeviceHandle = ImgOpen(“IFIMGMEM1”); : // SDRAM 内にキャプチャ用領域を確保 nRet = ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_RGB24, 0, 0, 50, &hSDRAMHandle); : // キャプチャしたい SDRAM 領域を指定します。 nRet = ImgSetSDRAM(hDeviceHandle, hSDRAMHandle); © 2003, 2016 Interface Corporation. All rights reserved. 194 GPC-5520 Help for Windows ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim hSDRAMHandle As Long Dim nRet As Long lpszName = “IFIMGMEM1” hDeviceHandle = ImgOpen(lpszName) : ‘ SDRAM 内にキャプチャ用領域を確保 nRet = ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_RGB24, 0, 0, 50, hSDRAMHandle) : ‘ キャプチャしたい SDRAM 領域を指定します。 nRet = ImgSetSDRAM(hDeviceHandle, hSDRAMHandle) ●Delphi var lpszName: String; hDeviceHandle: THandle; hSDRAMHandle: THandle; nRet: Integer; lpszName := 'IFIMGMEM1'; hDeviceHandle := ImgOpen(lpszName); : // SDRAM 内にキャプチャ用領域を確保 nRet := ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_RGB24, 0, 0, 50, hSDRAMHandle); : // キャプチャしたい SDRAM 領域を指定します。 nRet := ImgSetSDRAM(hDeviceHandle, hSDRAMHandle); ●Visual C# .NET IntPtr hDeviceHandle; int nRet; uint hSDRAMHandle hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGMEM1”); : // SDRAM 内にキャプチャ用領域を確保 nRet = IFCIMG_ANY.ImgAllocateSDRAM(hDeviceHandle, IFCIMG_ANY.IFIMG_SDRAM_RGB24, 0, 0, 50, out hSDRAMHandle); : // キャプチャしたい SDRAM 領域を指定します。 nRet = IFCIMG_ANY.ImgSetSDRAM(hDeviceHandle, hSDRAMHandle); ●Visual Basic .NET © 2003, 2016 Interface Corporation. All rights reserved. 195 GPC-5520 Help for Windows Dim Dim Dim Dim lpszName As String hDeviceHandle As IntPtr hSDRAMHandle As Integer nRet As Integer lpszName = “IFIMGMEM1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : ‘ SDRAM 内にキャプチャ用領域を確保 nRet = IFCIMG_ANY.ImgAllocateSDRAM(hDeviceHandle, IFCIMG_ANY.IFIMG_SDRAM_RGB24, 0, 0, 50, hSDRAMHandle) : ‘ キャプチャしたい SDRAM 領域を指定します。 nRet = IFCIMG_ANY.ImgSetSDRAM(hDeviceHandle, hSDRAMHandle) ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; hSDRAMHandle: Integer; nRet: Integer; lpszName := 'IFIMGMEM1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); : // SDRAM 内にキャプチャ用領域を確保 nRet := IFCIMG.ImgAllocateSDRAM(hDeviceHandle, IFCIMG.IFIMG_SDRAM_RGB24, 0, 0, 50, hSDRAMHandle); : // キャプチャしたい SDRAM 領域を指定します。 nRet := IFCIMG.ImgSetSDRAM(hDeviceHandle, hSDRAMHandle); デバイス名「IFIMGMEM1」のデバイスに対して、キャプチャを行いたい SDRAM 領域を指定しま す。 © 2003, 2016 Interface Corporation. All rights reserved. 196 GPC-5520 Help for Windows 28. ImgReadCaptureData 指定した SDRAM 領域に対して、キャプチャデータを取り出します。 【書式】 ●C 言語 INT ImgReadCaptureData( HANDLE hDeviceHandle, HANDLE hSDRAMHandle, DWORD dwStartFrameNum, DWORD dwFrameCnt, PVOID pReadData, DWORD dwSize ); // // // // // // デバイスハンドル SDRAM 管理ハンドル 開始フレーム番号 読み込みフレーム数 格納先バッファのポインタ 格納先バッファのサイズ ●Visual Basic Declare Function ImgReadCaptureData Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByVal hSDRAMHandle As Long, _ ‘ SDRAM 管理ハンドル ByVal dwStartFrameNum As Long, _ ‘ 開始フレーム番号 ByVal dwFrameCnt As Long, _ ‘ 読み込みフレーム数 ByRef pReadData As Long, _ ‘ 格納先バッファの参照渡し ByVal dwSize As Long _ ‘ 格納先バッファのサイズ )As Long ●Delphi function ImgReadCaptureData ( hDeviceHandle: THandle; // デバイスハンドル hSDRAMHandle: THandle; // 書き込み開始オフセットアドレス dwStartFrameNum: DWORD; // 開始フレーム番号 dwFrameCnt: DWORD; // 読み込みフレーム数 pReadData: Pointer; // 格納先バッファのポインタ dwSise: DWORD // 格納先バッファのサイズ ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgReadCaptureData( IntPtr hDeviceHandle, // IntPtr hSDRAMHandle, // uint dwStartFrameNum, // uint dwFrameCnt, // byte[] pReadData, // uint dwSize // ); デバイスハンドル SDRAM 管理ハンドル 開始フレーム番号 読み込みフレーム数 格納先バッファのポインタ 格納先バッファのサイズ © 2003, 2016 Interface Corporation. All rights reserved. 197 GPC-5520 Help for Windows [DllImport("IfImg.dll")] public static extern int ImgReadCaptureData( IntPtr hDeviceHandle, // IntPtr hSDRAMHandle, // uint dwStartFrameNum, // uint dwFrameCnt, // ushort[] pReadData, // uint dwSize // ); [DllImport("IfImg.dll")] public static extern int ImgReadCaptureData( IntPtr hDeviceHandle, // IntPtr hSDRAMHandle, // uint dwStartFrameNum, // uint dwFrameCnt, // uint[] pReadData, // uint dwSize // ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgReadCaptureData( uint hDeviceHandle, // uint hSDRAMHandle, // uint dwStartFrameNum, // uint dwFrameCnt, // byte[] pReadData, // uint dwSize // ); [DllImport("IfImg.dll")] public static extern int ImgReadCaptureData( uint hDeviceHandle, // uint hSDRAMHandle, // uint dwStartFrameNum, // uint dwFrameCnt, // ushort[] pReadData, // uint dwSize // ); デバイスハンドル SDRAM 管理ハンドル 開始フレーム番号 読み込みフレーム数 格納先バッファのポインタ 格納先バッファのサイズ デバイスハンドル SDRAM 管理ハンドル 開始フレーム番号 読み込みフレーム数 格納先バッファのポインタ 格納先バッファのサイズ デバイスハンドル SDRAM 管理ハンドル 開始フレーム番号 読み込みフレーム数 格納先バッファのポインタ 格納先バッファのサイズ デバイスハンドル SDRAM 管理ハンドル 開始フレーム番号 読み込みフレーム数 格納先バッファのポインタ 格納先バッファのサイズ © 2003, 2016 Interface Corporation. All rights reserved. 198 GPC-5520 Help for Windows [DllImport("IfImg.dll")] public static extern int ImgReadCaptureData( uint hDeviceHandle, // uint hSDRAMHandle, // uint dwStartFrameNum, // uint dwFrameCnt, // uint[] pReadData, // uint dwSize // ); デバイスハンドル SDRAM 管理ハンドル 開始フレーム番号 読み込みフレーム数 格納先バッファのポインタ 格納先バッファのサイズ ●Visual Basic .NET(x86、x64 共用) Declare Function ImgReadCaptureData Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByVal hSDRAMHandle As IntPtr, ‘ SDRAM 管理ハンドル ByVal dwStartFrameNum As Integer, ‘ 開始フレーム番号 ByVal dwFrameCnt As Integer, ‘ 読み込みフレーム数 ByVal pReadData( ) As Byte, ‘ 格納先バッファの参照渡し ByVal dwSize As Integer ‘ 格納先バッファのサイズ )As Integer Declare Function ImgReadCaptureData Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByVal hSDRAMHandle As IntPtr, ‘ SDRAM 管理ハンドル ByVal dwStartFrameNum As Integer, ‘ 開始フレーム番号 ByVal dwFrameCnt As Integer, ‘ 読み込みフレーム数 ByVal pReadData( ) As Short, ‘ 格納先バッファの参照渡し ByVal dwSize As Integer ‘ 格納先バッファのサイズ )As Integer Declare Function ImgReadCaptureData Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByVal hSDRAMHandle As IntPtr, ‘ SDRAM 管理ハンドル ByVal dwStartFrameNum As Integer, ‘ 開始フレーム番号 ByVal dwFrameCnt As Integer, ‘ 読み込みフレーム数 ByVal pReadData( ) As Integer, ‘ 格納先バッファの参照渡し ByVal dwSize As Integer ‘ 格納先バッファのサイズ )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 199 GPC-5520 Help for Windows ●Visual Basic .NET(x86 専用) Declare Function ImgReadCaptureData Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByVal hSDRAMHandle As Integer, ‘ SDRAM 管理ハンドル ByVal dwStartFrameNum As Integer, ‘ 開始フレーム番号 ByVal dwFrameCnt As Integer, ‘ 読み込みフレーム数 ByVal pReadData( ) As Byte, ‘ 格納先バッファの参照渡し ByVal dwSize As Integer ‘ 格納先バッファのサイズ )As Integer Declare Function ImgReadCaptureData Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByVal hSDRAMHandle As Integer, ‘ SDRAM 管理ハンドル ByVal dwStartFrameNum As Integer, ‘ 開始フレーム番号 ByVal dwFrameCnt As Integer, ‘ 読み込みフレーム数 ByVal pReadData( ) As Short, ‘ 格納先バッファの参照渡し ByVal dwSize As Integer ‘ 格納先バッファのサイズ )As Integer Declare Function ImgReadCaptureData Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByVal hSDRAMHandle As Integer, ‘ SDRAM 管理ハンドル ByVal dwStartFrameNum As Integer, ‘ 開始フレーム番号 ByVal dwFrameCnt As Integer, ‘ 読み込みフレーム数 ByVal pReadData( ) As Integer, ‘ 格納先バッファの参照渡し ByVal dwSize As Integer ‘ 格納先バッファのサイズ )As Integer ●Delphi 8 class function ImgReadCaptureData ( hDeviceHandle: Integer; hSDRAMHandle: Integer; dwStartFrameNum: Cardinal; dwFrameCnt: Cardinal; pReadData: IntPtr; dwSise: Cardinal ): Integer; static; class function ImgReadCaptureData ( hDeviceHandle: Integer; hSDRAMHandle: Integer; dwStartFrameNum: Cardinal; dwFrameCnt: Cardinal; pReadData: array of Byte; dwSise: Cardinal ): Integer; static; // // // // // // デバイスハンドル 書き込み開始オフセットアドレス 開始フレーム番号 読み込みフレーム数 格納先バッファのポインタ 格納先バッファのサイズ // // // // // // デバイスハンドル 書き込み開始オフセットアドレス 開始フレーム番号 読み込みフレーム数 格納先バッファのポインタ 格納先バッファのサイズ © 2003, 2016 Interface Corporation. All rights reserved. 200 GPC-5520 Help for Windows class function ImgReadCaptureData ( hDeviceHandle: Integer; hSDRAMHandle: Integer; dwStartFrameNum: Cardinal; dwFrameCnt: Cardinal; pReadData: array of Word; dwSise: Cardinal ): Integer; static; // // // // // // class function ImgReadCaptureData ( hDeviceHandle: Integer; hSDRAMHandle: Integer; dwStartFrameNum: dwFrameCnt: pReadData: dwSise: デバイスハンドル 書き込み開始オフセットアドレス 開始フレーム番号 読み込みフレーム数 格納先バッファのポインタ 格納先バッファのサイズ // // ス Cardinal; // Cardinal; // array of Cardinal; // Cardinal // デバイスハンドル 書き込み開始オフセットアドレ 開始フレーム番号 読み込みフレーム数 格納先バッファのポインタ 格納先バッファのサイズ ): Integer; static; 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 hSDRAMHandle ImgAllocateSDRAM関数で取得したハンドルを指定します。 dwStartFrameNum 読み込み開始フレーム番号(1~ SDRAM 領域に確保したフレーム数) キャプチャしたフレーム番号ではないので、ご注意ください。 dwFrameCnt 読み込みフレーム数 pReadData 格納先のバッファの先頭ポインタ dwSize 格納先のバッファのサイズ 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 © 2003, 2016 Interface Corporation. All rights reserved. 201 GPC-5520 Help for Windows 【備考】 本関数は指定した SDRAM 領域内のフレームデータを確保します。dwStartFrameNum を含めた dwFrameCnt 分のフレームデータを取り出します。 読み込み元 SDRAM 領域 dwSratFlameNum = X 転送先バッファ 1 X : X+1 : X+2 X X+3 : X+4 : dwFlameCnt = N : : X+N-1 : : M © 2003, 2016 Interface Corporation. All rights reserved. 202 GPC-5520 Help for Windows 【使用例】 ●C 言語 HANDLE hDeviceHandle; int nRet; HANDLE hSDRAMHandle PBYTE pCaptureData; DWORD dwSize; hDeviceHandle = ImgOpen(“IFIMGMEM1”); : // SDRAM 内にキャプチャ用領域を確保 nRet = ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_RGB24, 0, 0, 50, &hSDRAMHandle); : // キャプチャ処理を行います。 : // 格納用バッファを動的確保。RGB24 を 10 フレーム dwSize = 921600L * 10; pCaptureData = (PBYTE)malloc(dwSize); // SDRAM からデータ取り出し。20 フレーム目から 10 フレーム分。 nRet = ImgReadCaptureData( hDeviceHandle, hSDRAMHandle, 20, 10, pCaptureData, dwSize); ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim hSDRAMHandle As Long Dim nRet As Long Dim CaptureData(9216000) As Byte ‘RGB24 を 10 フレーム lpszName = “IFIMGMEM1” hDeviceHandle = ImgOpen(lpszName) : ‘ SDRAM 内にキャプチャ用領域を確保 nRet = ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_RGB24, 0, 0, 50, hSDRAMHandle) : ‘ キャプチャ処理を行います。 : ‘ SDRAM からデータ取り出し。20 フレーム目から 10 フレーム分。 nRet = ImgReadCaptureData( hDeviceHandle, hSDRAMHandle, 20, 10, CaptureData, 9216000) © 2003, 2016 Interface Corporation. All rights reserved. 203 GPC-5520 Help for Windows ●Delphi var lpszName: String; hDeviceHandle: THandle; hSDRAMHandle: THandle; nRet: Integer; pCaptureData: Pointer; dwSize: DWORD; lpszName := 'IFIMGMEM1'; hDeviceHandle := ImgOpen(lpszName); : // SDRAM 内にキャプチャ用領域を確保 nRet := ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_RGB24, 0, 0, 50, hSDRAMHandle); : // キャプチャ処理を行います。 : // 格納用バッファを動的確保。RGB24 を 10 フレーム dwSize := 9216000; pCaptureData := AllocMem(dwSize); // SDRAM からデータ取り出し。20 フレーム目から 10 フレーム分。 nRet := ImgReadCaptureData( hDeviceHandle, hSDRAMHandle, 20, 10, pCaptureData, dwSize); ●Visual C# .NET IntPtr hDeviceHandle; int nRet; IntPtr hSDRAMHandle byte CaptureData[921600*10]; DWORD dwSize; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGMEM1”); : // SDRAM 内にキャプチャ用領域を確保 nRet = IFCIMG_ANY.ImgAllocateSDRAM(hDeviceHandle, IFCIMG_ANY.IFIMG_SDRAM_RGB24, 0, 0, 50, out hSDRAMHandle); : // キャプチャ処理を行います。 : // 格納用バッファを動的確保。RGB24 を 10 フレーム dwSize = 921600L * 10; // SDRAM からデータ取り出し。20 フレーム目から 10 フレーム分。 nRet = IFCIMG_ANY.ImgReadCaptureData( hDeviceHandle, hSDRAMHandle, 20, 10, CaptureData, dwSize); © 2003, 2016 Interface Corporation. All rights reserved. 204 GPC-5520 Help for Windows ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim hSDRAMHandle As IntPtr Dim nRet As Integer Dim CaptureData(9216000) As Byte ‘RGB24 を 10 フレーム lpszName = “IFIMGMEM1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : ‘ SDRAM 内にキャプチャ用領域を確保 nRet = IFCIMG_ANY.ImgAllocateSDRAM(hDeviceHandle, IFCIMG_ANY.IFIMG_SDRAM_RGB24, 0, 0, 50, hSDRAMHandle) : ‘ キャプチャ処理を行います。 : ‘ SDRAM からデータ取り出し。20 フレーム目から 10 フレーム分。 nRet = IFCIMG_ANY.ImgReadCaptureData( hDeviceHandle, hSDRAMHandle, 20, 10, CaptureData, 9216000) ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; hSDRAMHandle: Integer; nRet: Integer; pCaptureData: array of Byte; dwSize: Cardinal; lpszName := 'IFIMGMEM1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); : // SDRAM 内にキャプチャ用領域を確保 nRet := IFCIMG.ImgAllocateSDRAM(hDeviceHandle, IFCIMG.IFIMG_SDRAM_RGB24, 0, 0, 50, hSDRAMHandle); : // キャプチャ処理を行います。 : // 格納用バッファを動的確保。RGB24 を 10 フレーム dwSize := 9216000; Setlength(pCaptureData, dwSize); // SDRAM からデータ取り出し。20 フレーム目から 10 フレーム分。 nRet := IFCIMG.ImgReadCaptureData( hDeviceHandle, hSDRAMHandle, 20, 10, pCaptureData, dwSize); デバイス名「IFIMGMEM1」のデバイスに対して、SDRAM からキャプチャデータを取り出します。 © 2003, 2016 Interface Corporation. All rights reserved. 205 GPC-5520 Help for Windows 29. ImgBmCaptureData 指定した SDRAM 領域のキャプチャデータをメインメモリへ DMA 転送します。 (PCI/CTP-5521,5523,5531,5533 専用) 【書式】 ●C 言語 INT ImgBmCaptureData( HANDLE hDeviceHandle, HANDLE hSDRAMHandle, DWORD dwStartFrameNum, DWORD dwFrameCnt, DWORD dwPosition ); // // // // // デバイスハンドル SDRAM 管理ハンドル 開始フレーム番号 読み込みフレーム数 転送開始位置 ●Visual Basic Declare Function ImgBmCaptureData Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByVal hSDRAMHandle As Long, _ ‘ SDRAM 管理ハンドル ByVal dwStartFrameNum As Long, _ ‘ 開始フレーム番号 ByVal dwFrameCnt As Long, _ ‘ 読み込みフレーム数 ByVal dwPosition As Long _ ‘ 転送開始位置 )As Long ●Delphi function ImgBmCaptureData ( hDeviceHandle: THandle; // デバイスハンドル hSDRAMHandle: THandle; // 書き込み開始オフセットアドレス dwStartFrameNum: DWORD; // 開始フレーム番号 dwFrameCnt: DWORD; // 読み込みフレーム数 dwPosition: DWORD // 転送開始位置 ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgBmCaptureData( IntPtr hDeviceHandle, // IntPtr hSDRAMHandle, // int dwStartFrameNum, // int dwFrameCnt, // int dwPosition // ); デバイスハンドル SDRAM 管理ハンドル 開始フレーム番号 読み込みフレーム数 転送開始位置 © 2003, 2016 Interface Corporation. All rights reserved. 206 GPC-5520 Help for Windows ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgBmCaptureData( uint hDeviceHandle, // uint hSDRAMHandle, // int dwStartFrameNum, // int dwFrameCnt, // int dwPosition // ); デバイスハンドル SDRAM 管理ハンドル 開始フレーム番号 読み込みフレーム数 転送開始位置 ●Visual Basic .NET(x86、x64 共用) Declare Function ImgBmCaptureData Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByVal hSDRAMHandle As IntPtr, ‘ SDRAM 管理ハンドル ByVal dwStartFrameNum As Integer, ‘ 開始フレーム番号 ByVal dwFrameCnt As Integer, ‘ 読み込みフレーム数 ByVal dwPosition As Integer ‘ 転送開始位置 )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgBmCaptureData Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByVal hSDRAMHandle As Integer, ‘ SDRAM 管理ハンドル ByVal dwStartFrameNum As Integer, ‘ 開始フレーム番号 ByVal dwFrameCnt As Integer, ‘ 読み込みフレーム数 ByVal dwPosition As Integer ‘ 転送開始位置 )As Integer ●Delphi 8 class function ImgBmCaptureData ( hDeviceHandle: Integer; hSDRAMHandle: Integer; dwStartFrameNum: Cardinal; dwFrameCnt: Cardinal; dwPosition: Cardinal ): Integer; static; // // // // // デバイスハンドル 書き込み開始オフセットアドレス 開始フレーム番号 読み込みフレーム数 転送開始位置 【パラメータ】 hDeviceHandle ImgOpen 関数でオープンしたインタフェースモジュールのデバイス番号を指定してくださ い。 hSDRAMHandle ImgAllocateSDRAM 関数で取得した SDRAM ハンドルを指定してください。 © 2003, 2016 Interface Corporation. All rights reserved. 207 GPC-5520 Help for Windows dwStartFrameNum 読み込み開始フレーム番号(1~SDRAM 内に確保したフレーム数) ※キャプチャしたフレーム番号ではないので、ご注意ください。 dwFrameCnt 読み込みフレーム数 dwPosition データ転送先のバッファの位置を指定します。 識別子 値 内容 IFIMG_BUFF_HEAD 00000000h バッファの先頭からデータを転送する IFIMG_BUFF_CONTINUATION 00000001h 前回転送した続きからデータを転送する 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 【備考】 本関数は、指定した SDRAM 領域内のフレームデータをバスマスタ方式によりメインメモリへ転 送します。 SDRAM 領域内のデータをメインメモリへ転送する際に、ImgReadCaptureData 関数よりも速い時 間で転送できます。 データ転送の構造は、ImgReadCaptureData 関数と同じです。(ImgReadCaptureData 関数の「備 考」参照) 本関数実行により、データ転送中(DMA 転送中)は、ImgStartCapture 関数によるキャプチャ は実行できません。 また、キャプチャ中に、本関数を実行することも出来ません。 データ転送の完了は、割り込みイベントもしくは、ImgGetCaptureStatusEx 関数にて知ること が可能です。 © 2003, 2016 Interface Corporation. All rights reserved. 208 GPC-5520 Help for Windows <データ転送先について> dwPosition の指定により、データ転送先の領域が異なります。 ●IFIMG_BUFF_HEAD ImgSetBuffer 関数、ImgSetBufferVB 関数で指定したバッファ領域の先頭から転送します。 ●IFIMG_BUFF_CONTINUATION 前回転送した続きから転送します。(初回は、先頭から転送します) メインメモリへの転送は、リングバッファ形式です。 SDRAM 領域からのデータ転送サイズよりもメインメモリのバッファサイズが少ない場合、上書 きされます。 IFIMG_BUFF_HEAD SDRAM 前回の転送 SDRAM N N + 3 N + 1 N + 4 N + 2 N + 5 N + 3 メインメモリ メインメモリ 転送 N + 6 N + 4 N N + 1 N + 2 N 転送 N + 5 N + 1 N + 6 N + 2 N + 3 IFIMG_BUFF_CONTINUATION SDRAM N + 4 メインメモリ N + 5 N N N + 6 N + 1 N + 1 N + 2 N + 2 N + 3 N + 3 N + 4 N + 5 N + 5 N + 6 N + 6 © 2003, 2016 Interface Corporation. All rights reserved. 209 N + 4 転送 GPC-5520 Help for Windows 【使用例】 ●C 言語(x86) HANDLE hDeviceHandle; int nRet; HANDLE hSDRAMHandle; PBYTE pCaptureData; DWORD dwSize; IMGBUFFERINFO Buffer; hDeviceHandle = ImgOpen(“IFIMGMEM1”); : // SDRAM 内にキャプチャ用領域を確保 nRet = ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_RGB24, 0, 0, 50, &hSDRAMHandle); : // キャプチャ処理を行います。 : // 格納用バッファを動的確保。RGB24 を 10 フレーム dwSize = 921600L * 10; pCaptureData = (PBYTE)malloc(dwSize); Buffer.pBufferAddress = pCaptureData; Buffer.dwBufferSize = dwSize; nRet = ImgSetBuffer(hDeviceHandle, &Buffer, IFIMG_COLOR_RGB24); // SDRAM からデータ取り出し。20 フレーム目から 10 フレーム分。 nRet = ImgBmCaptureData( hDeviceHandle, hSDRAMHandle, 20, 10, IFIMG_BUFF_HEAD); © 2003, 2016 Interface Corporation. All rights reserved. 210 GPC-5520 Help for Windows ●C 言語(x64) HANDLE hDeviceHandle; int nRet; HANDLE hSDRAMHandle; PBYTE pCaptureData; DWORD dwSize; IMGBUFFERINFO Buffer; PVOID BufferPtr; hDeviceHandle = ImgOpen(“IFIMGMEM1”); : // SDRAM 内にキャプチャ用領域を確保 nRet = ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_RGB24, 0, 0, 50, &hSDRAMHandle); : // キャプチャ処理を行います。 : // 格納用バッファを動的確保。RGB24 を 10 フレーム dwSize = 921600L * 10; Buffer.pBufferAddress = (PVOID)-1; Buffer.dwBufferSize = dwSize; nRet = ImgSetBuffer(hDeviceHandle, &Buffer, IFIMG_COLOR_RGB24); nRet = ImgGetMemPtrValue(hDeviceHandle, &BufferPtr); pCaptureData = (PBYTE)BufferPtr; // SDRAM からデータ取り出し。20 フレーム目から 10 フレーム分。 nRet = ImgBmCaptureData( hDeviceHandle, hSDRAMHandle, 20, 10, IFIMG_BUFF_HEAD); © 2003, 2016 Interface Corporation. All rights reserved. 211 GPC-5520 Help for Windows ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim hSDRAMHandle As Long Dim nRet As Long Dim CaptureData(9216000) As Byte ‘RGB24 を 50 フレーム lpszName = “IFIMGMEM1” hDeviceHandle = ImgOpen(lpszName) : ‘ SDRAM 内にキャプチャ用領域を確保 nRet = ImgAllocateSDRAM(hDeviceHandle, _ IFIMG_SDRAM_RGB24, 0, 0, 50, hSDRAMHandle) : buffersize = 9216000 nRet = ImgSetBufferVB(hDeviceHandle, CaptureData (0), buffersize, IFIMG_COLOR_RGB24) : ‘ SDRAM からデータ取り出し。20 フレーム目から 10 フレーム分。 nRet = ImgBmCaptureData( hDeviceHandle, hSDRAMHandle, 20, 10, IFIMG_BUFF_HEAD) © 2003, 2016 Interface Corporation. All rights reserved. 212 GPC-5520 Help for Windows ●Delphi var lpszName: String; hDeviceHandle: THandle; hSDRAMHandle: THandle; nRet: Integer; pCaptureData: Pointer; dwSize: DWORD; Buffer: IMGBUFFERINFO; lpszName := 'IFIMGMEM1'; hDeviceHandle := ImgOpen(lpszName); : // SDRAM 内にキャプチャ用領域を確保 nRet := ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_RGB24, 0, 0, 50, hSDRAMHandle); : // 格納用バッファを動的確保。RGB24 を 10 フレーム dwSize := 9216000; pCaptureData := AllocMem(dwSize); Buffer.pBufferAddress := pCaptureData; Buffer. dwBufferSize := dwSize; nRet := ImgSetBuffer(hDeviceHandle, Buffer, IFIMG_COLOR_RGB24); : // SDRAM からデータ取り出し。20 フレーム目から 10 フレーム分。 nRet := ImgBmCaptureData( hDeviceHandle, hSDRAMHandle, 20, 10, IFIMG_BUFF_HEAD); © 2003, 2016 Interface Corporation. All rights reserved. 213 GPC-5520 Help for Windows ●Visual C# .NET(x86) IntPtr hDeviceHandle; int nRet; intPtr hSDRAMHandle; IntPtr array_p; uint dwSize; IFCIMG_ANY.IMGBUFFERINFO Buffer; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGMEM1”); : // SDRAM 内にキャプチャ用領域を確保 nRet = IFCIMG_ANY.ImgAllocateSDRAM(hDeviceHandle, IFCIMG_ANY.IFIMG_SDRAM_RGB24, 0, 0, 50, &hSDRAMHandle); : // SDRAM キャプチャを行います。 : // 格納用バッファを動的確保。RGB24 を 10 フレーム dwSize = 921600 * 10; array_p = Marshal.AllocCoTaskMem((int)dwSize); : Buffer.pBufferAddress = array_p; Buffer.dwBufferSize = dwSize; : nRet = IFCIMG_ANY.ImgSetBuffer(hDeviceHandle, ref Buffer, IFCIMG_ANY.IFIMG_COLOR_RGB24); : // SDRAM からデータ取り出し。20 フレーム目から 10 フレーム分。 nRet = IFCIMG_ANY.ImgBmCaptureData( hDeviceHandle, hSDRAMHandle, 20, 10, IFCIMG_ANY.IFIMG_BUFF_HEAD); © 2003, 2016 Interface Corporation. All rights reserved. 214 GPC-5520 Help for Windows ●Visual C# .NET(x64) IntPtr hDeviceHandle; int nRet; intPtr hSDRAMHandle; uint dwSize; IFCIMG_ANY.IMGBUFFERINFO Buffer; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGMEM1”); : // SDRAM 内にキャプチャ用領域を確保 nRet = IFCIMG_ANY.ImgAllocateSDRAM(hDeviceHandle, IFCIMG_ANY.IFIMG_SDRAM_RGB24, 0, 0, 50, &hSDRAMHandle); : // SDRAM キャプチャを行います。 : // 格納用バッファを動的確保。RGB24 を 10 フレーム dwSize = 921600 * 10; : Buffer.pBufferAddress = new IntPtr(-1); Buffer.dwBufferSize = dwSize; : nRet = IFCIMG_ANY.ImgSetBuffer(hDeviceHandle, ref Buffer, IFCIMG_ANY.IFIMG_COLOR_RGB24); : // SDRAM からデータ取り出し。20 フレーム目から 10 フレーム分。 nRet = IFCIMG_ANY.ImgBmCaptureData( hDeviceHandle, hSDRAMHandle, 20, 10, IFCIMG_ANY.IFIMG_BUFF_HEAD); © 2003, 2016 Interface Corporation. All rights reserved. 215 GPC-5520 Help for Windows ●Visual Basic .NET(x86) Dim lpszName As String Dim hDeviceHandle As IntPtr Dim hSDRAMHandle As IntPtr Dim nRet As Integer Dim CaptureData(9216000) As Byte ‘RGB24 を 50 フレーム lpszName = “IFIMGMEM1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : ‘ SDRAM 内にキャプチャ用領域を確保 nRet = IFCIMG_ANY.ImgAllocateSDRAM(hDeviceHandle, _ IFCIMG_ANY.IFIMG_SDRAM_RGB24, 0, 0, 50, hSDRAMHandle) : buffersize = 9216000 nRet = IFCIMG_ANY.ImgSetBufferVB(hDeviceHandle, CaptureData, buffersize, IFCIMG_ANY.IFIMG_COLOR_RGB24) : ‘ SDRAM からデータ取り出し。20 フレーム目から 10 フレーム分。 nRet = IFCIMG_ANY.ImgBmCaptureData( hDeviceHandle, hSDRAMHandle, 20, 10, IFCIMG_ANY.IFIMG_BUFF_HEAD) ●Visual Basic .NET(x64) Dim lpszName As String Dim hDeviceHandle As IntPtr Dim hSDRAMHandle As IntPtr Dim nRet As Integer lpszName = “IFIMGMEM1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : ‘ SDRAM 内にキャプチャ用領域を確保 nRet = IFCIMG_ANY.ImgAllocateSDRAM(hDeviceHandle, _ IFCIMG_ANY.IFIMG_SDRAM_RGB24, 0, 0, 50, hSDRAMHandle) : buffersize = 9216000 nRet = IFCIMG_ANY.ImgSetBufferVB(hDeviceHandle, New IntPtr(-1), buffersize, IFCIMG_ANY.IFIMG_COLOR_RGB24) : ‘ SDRAM からデータ取り出し。20 フレーム目から 10 フレーム分。 nRet = IFCIMG_ANY.ImgBmCaptureData( hDeviceHandle, hSDRAMHandle, 20, 10, IFCIMG_ANY.IFIMG_BUFF_HEAD) © 2003, 2016 Interface Corporation. All rights reserved. 216 GPC-5520 Help for Windows ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; hSDRAMHandle: Integer; nRet: Integer; pCaptureData: IntPtr; dwSize: Cardinal; Buffer: IFCIMG.IMGBUFFERINFO; lpszName := 'IFIMGMEM1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); : // SDRAM 内にキャプチャ用領域を確保 nRet := IFCIMG.ImgAllocateSDRAM(hDeviceHandle, IFCIMG.IFIMG_SDRAM_RGB24, 0, 0, 50, hSDRAMHandle); : // 格納用バッファを動的確保。RGB24 を 10 フレーム dwSize := 9216000; pCaptureData := Marshal.AllocHGlobal(dwSize); Buffer.pBufferAddress := pCaptureData; Buffer. dwBufferSize := dwSize; nRet := IFCIMG.ImgSetBuffer(hDeviceHandle, Buffer, IFCIMG.IFIMG_COLOR_RGB24); : // SDRAM からデータ取り出し。20 フレーム目から 10 フレーム分。 nRet := IFCIMG.ImgBmCaptureData( hDeviceHandle, hSDRAMHandle, 20, 10, IFCIMG.IFIMG_BUFF_HEAD); デバイス名「IFIMGMEM1」のデバイスに対して、SDRAM からキャプチャデータを取り出します。 © 2003, 2016 Interface Corporation. All rights reserved. 217 GPC-5520 Help for Windows 30. ImgClipData ImgSetBuffer 関数(または ImgSetBufferVB 関数)で指定したバッファ領域に対して、指定した フレームと指定した矩形領域の画像データを別のバッファへコピーします。 さらに画像データを拡大させてコピーさせる事もできます。 【書式】 ●C 言語 INT ImgClipData( PVOID PVOID DWORD PIMGCLIPCONFIG ); pdest, psrc, dwFrameNum, pClipConfig // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ ●Visual Basic Declare Function ImgClipData Lib "IfImg.dll"( _ ByRef pdest As Any, _ ‘ 格納先バッファの参照渡し ByRef psrc As Any, _ ‘ 読み込み元バッファの参照渡し ByVal dwFrameNum As Long, _ ‘ フレーム番号 ByRef pClipConfig As IMGCLIPCONFIG _ ‘ IMGCLIPCONFIG 構造体の参照渡 し )As Long ●Delphi function ImgClipData ( pdest: psrc: dwFrameNum: var pClipConfig: Pointer; // Pointer; // DWORD; // IMGCLIPCONFIG // ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgClipData( IntPtr pdest, IntPtr psrc, uint dwFrameNum, ref IMGCLIPCONFIG pClipConfig ); 格納先バッファのポインタ 読み込み元バッファのポインタ フレーム番号 IMGCLIPCONFIG 構造体のポインタ // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ [DllImport("IfImg.dll")] public static extern int ImgClipData( out byte pdest, IntPtr psrc, uint dwFrameNum, ref IMGCLIPCONFIG pClipConfig ); // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ © 2003, 2016 Interface Corporation. All rights reserved. 218 GPC-5520 Help for Windows © 2003, 2016 Interface Corporation. All rights reserved. 219 GPC-5520 Help for Windows [DllImport("IfImg.dll")] public static extern int ImgClipData( out ushort pdest, IntPtr psrc, uint dwFrameNum, ref IMGCLIPCONFIG pClipConfig ); // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ [DllImport("IfImg.dll")] public static extern int ImgClipData( out uint pdest, IntPtr psrc, uint dwFrameNum, ref IMGCLIPCONFIG pClipConfig ); // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ [DllImport("IfImg.dll")] public static extern int ImgClipData( byte[] pdest, IntPtr psrc, uint dwFrameNum, ref IMGCLIPCONFIG pClipConfig ); // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ [DllImport("IfImg.dll")] public static extern int ImgClipData( ushort[] pdest, IntPtr psrc, uint dwFrameNum, ref IMGCLIPCONFIG pClipConfig ); // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ [DllImport("IfImg.dll")] public static extern int ImgClipData( uint[] pdest, IntPtr psrc, uint dwFrameNum, ref IMGCLIPCONFIG pClipConfig ); // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ [DllImport("IfImg.dll")] public static extern int ImgClipData( out byte pdest, byte[] psrc, uint dwFrameNum, ref IMGCLIPCONFIG pClipConfig ); © 2003, 2016 Interface Corporation. All rights 220 // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ reserved. GPC-5520 Help for Windows [DllImport("IfImg.dll")] public static extern int ImgClipData( out ushort pdest, byte[] psrc, uint dwFrameNum, ref IMGCLIPCONFIG pClipConfig ); // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ [DllImport("IfImg.dll")] public static extern int ImgClipData( out uint pdest, byte[] psrc, uint dwFrameNum, ref IMGCLIPCONFIG pClipConfig ); // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ [DllImport("IfImg.dll")] public static extern int ImgClipData( byte[] pdest, byte[] psrc, uint dwFrameNum, ref IMGCLIPCONFIG pClipConfig ); // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ [DllImport("IfImg.dll")] public static extern int ImgClipData( ushort[] pdest, byte[] psrc, uint dwFrameNum, ref IMGCLIPCONFIG pClipConfig ); // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ [DllImport("IfImg.dll")] public static extern int ImgClipData( uint[] pdest, byte[] psrc, uint dwFrameNum, ref IMGCLIPCONFIG pClipConfig ); // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ [DllImport("IfImg.dll")] public static extern int ImgClipData( out byte pdest, ushort[] psrc, uint dwFrameNum, ref IMGCLIPCONFIG pClipConfig ); © 2003, 2016 Interface Corporation. All rights 221 // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ reserved. GPC-5520 Help for Windows [DllImport("IfImg.dll")] public static extern int ImgClipData( out ushort pdest, ushort[] psrc, uint dwFrameNum, ref IMGCLIPCONFIG pClipConfig ); // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ [DllImport("IfImg.dll")] public static extern int ImgClipData( out uint pdest, ushort[] psrc, uint dwFrameNum, ref IMGCLIPCONFIG pClipConfig ); // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ [DllImport("IfImg.dll")] public static extern int ImgClipData( byte[] pdest, ushort[] psrc, uint dwFrameNum, ref IMGCLIPCONFIG pClipConfig ); // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ [DllImport("IfImg.dll")] public static extern int ImgClipData( ushort[] pdest, ushort[] psrc, uint dwFrameNum, ref IMGCLIPCONFIG pClipConfig ); // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ [DllImport("IfImg.dll")] public static extern int ImgClipData( uint[] pdest, ushort[] psrc, uint dwFrameNum, ref IMGCLIPCONFIG pClipConfig ); // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ [DllImport("IfImg.dll")] public static extern int ImgClipData( out byte pdest, uint[] psrc, uint dwFrameNum, ref IMGCLIPCONFIG pClipConfig ); © 2003, 2016 Interface Corporation. All rights 222 // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ reserved. GPC-5520 Help for Windows [DllImport("IfImg.dll")] public static extern int ImgClipData( out ushort pdest, uint[] psrc, uint dwFrameNum, ref IMGCLIPCONFIG pClipConfig ); // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ [DllImport("IfImg.dll")] public static extern int ImgClipData( out uint pdest, uint[] psrc, uint dwFrameNum, ref IMGCLIPCONFIG pClipConfig ); // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ [DllImport("IfImg.dll")] public static extern int ImgClipData( byte[] pdest, uint[] psrc, uint dwFrameNum, ref IMGCLIPCONFIG pClipConfig ); // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ [DllImport("IfImg.dll")] public static extern int ImgClipData( ushort[] pdest, uint[] psrc, uint dwFrameNum, ref IMGCLIPCONFIG pClipConfig ); // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ [DllImport("IfImg.dll")] public static extern int ImgClipData( uint[] pdest, uint[] psrc, uint dwFrameNum, ref IMGCLIPCONFIG pClipConfig ); // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ © 2003, 2016 Interface Corporation. All rights reserved. 223 GPC-5520 Help for Windows ●Visual Basic .NET(x86、x64 共用) Declare Function ImgClipData Lib "IfImg.DLL"( ByVal pdest As IntPtr, ‘ ByVal psrc As IntPtr, ‘ ByVal dwFrameNum As Integer, ‘ ByRef pClipConfig As IMGCLIPCONFIG ‘ )As Integer 格納先バッファの参照渡し 読み込み元バッファの参照渡し フレーム番号 IMGCLIPCONFIG 構造体の参照渡し Declare Function ImgClipData Lib "IfImg.DLL"( ByRef pdest As Byte, ‘ ByVal psrc As IntPtr, ‘ ByVal dwFrameNum As Integer, ‘ ByRef pClipConfig As IMGCLIPCONFIG ‘ )As Integer 格納先バッファの参照渡し 読み込み元バッファの参照渡し フレーム番号 IMGCLIPCONFIG 構造体の参照渡し Declare Function ImgClipData Lib "IfImg.DLL"( ByRef pdest As Short, ‘ ByVal psrc As IntPtr, ‘ ByVal dwFrameNum As Integer, ‘ ByRef pClipConfig As IMGCLIPCONFIG ‘ )As Integer 格納先バッファの参照渡し 読み込み元バッファの参照渡し フレーム番号 IMGCLIPCONFIG 構造体の参照渡し Declare Function ImgClipData Lib "IfImg.DLL"( ByRef pdest As Integer, ‘ ByVal psrc As IntPtr, ‘ ByVal dwFrameNum As Integer, ‘ ByRef pClipConfig As IMGCLIPCONFIG ‘ )As Integer 格納先バッファの参照渡し 読み込み元バッファの参照渡し フレーム番号 IMGCLIPCONFIG 構造体の参照渡し Declare Function ImgClipData Lib "IfImg.DLL"( ByVal pdest( ) As Byte, ‘ ByVal psrc As IntPtr, ‘ ByVal dwFrameNum As Integer, ‘ ByRef pClipConfig As IMGCLIPCONFIG ‘ )As Integer 格納先バッファの参照渡し 読み込み元バッファの参照渡し フレーム番号 IMGCLIPCONFIG 構造体の参照渡し Declare Function ImgClipData Lib "IfImg.DLL"( ByVal pdest( ) As Short, ‘ ByVal psrc As IntPtr, ‘ ByVal dwFrameNum As Integer, ‘ ByRef pClipConfig As IMGCLIPCONFIG ‘ )As Integer 格納先バッファの参照渡し 読み込み元バッファの参照渡し フレーム番号 IMGCLIPCONFIG 構造体の参照渡し © 2003, 2016 Interface Corporation. All rights reserved. 224 GPC-5520 Help for Windows Declare Function ImgClipData Lib "IfImg.DLL"( ByVal pdest( ) As Integer, ‘ ByVal psrc As IntPtr, ‘ ByVal dwFrameNum As Integer, ‘ ByRef pClipConfig As IMGCLIPCONFIG ‘ )As Integer 格納先バッファの参照渡し 読み込み元バッファの参照渡し フレーム番号 IMGCLIPCONFIG 構造体の参照渡し Declare Function ImgClipData Lib "IfImg.DLL"( ByRef pdest As Byte, ‘ ByVal psrc( ) As Byte, ‘ ByVal dwFrameNum As Integer, ‘ ByRef pClipConfig As IMGCLIPCONFIG ‘ )As Integer 格納先バッファの参照渡し 読み込み元バッファの参照渡し フレーム番号 IMGCLIPCONFIG 構造体の参照渡し Declare Function ImgClipData Lib "IfImg.DLL"( ByRef pdest As Short, ‘ ByVal psrc( ) As Byte, ‘ ByVal dwFrameNum As Integer, ‘ ByRef pClipConfig As IMGCLIPCONFIG ‘ )As Integer 格納先バッファの参照渡し 読み込み元バッファの参照渡し フレーム番号 IMGCLIPCONFIG 構造体の参照渡し Declare Function ImgClipData Lib "IfImg.DLL"( ByRef pdest As Integer, ‘ ByVal psrc( ) As Byte, ‘ ByVal dwFrameNum As Integer, ‘ ByRef pClipConfig As IMGCLIPCONFIG ‘ )As Integer 格納先バッファの参照渡し 読み込み元バッファの参照渡し フレーム番号 IMGCLIPCONFIG 構造体の参照渡し Declare Function ImgClipData Lib "IfImg.DLL"( ByVal pdest( ) As Byte, ‘ ByVal psrc( ) As Byte, ‘ ByVal dwFrameNum As Integer, ‘ ByRef pClipConfig As IMGCLIPCONFIG ‘ )As Integer 格納先バッファの参照渡し 読み込み元バッファの参照渡し フレーム番号 IMGCLIPCONFIG 構造体の参照渡し Declare Function ImgClipData Lib "IfImg.DLL"( ByVal pdest( ) As Short, ‘ ByVal psrc( ) As Byte, ‘ ByVal dwFrameNum As Integer, ‘ ByRef pClipConfig As IMGCLIPCONFIG ‘ )As Integer 格納先バッファの参照渡し 読み込み元バッファの参照渡し フレーム番号 IMGCLIPCONFIG 構造体の参照渡し © 2003, 2016 Interface Corporation. All rights reserved. 225 GPC-5520 Help for Windows Declare Function ImgClipData Lib "IfImg.DLL"( ByVal pdest( ) As Integer, ‘ ByVal psrc( ) As Byte, ‘ ByVal dwFrameNum As Integer, ‘ ByRef pClipConfig As IMGCLIPCONFIG ‘ )As Integer 格納先バッファの参照渡し 読み込み元バッファの参照渡し フレーム番号 IMGCLIPCONFIG 構造体の参照渡し Declare Function ImgClipData Lib "IfImg.DLL"( ByRef pdest As Byte, ‘ ByVal psrc( ) As Short, ‘ ByVal dwFrameNum As Integer, ‘ ByRef pClipConfig As IMGCLIPCONFIG ‘ )As Integer 格納先バッファの参照渡し 読み込み元バッファの参照渡し フレーム番号 IMGCLIPCONFIG 構造体の参照渡し Declare Function ImgClipData Lib "IfImg.DLL"( ByRef pdest As Short, ‘ ByVal psrc( ) As Short, ‘ ByVal dwFrameNum As Integer, ‘ ByRef pClipConfig As IMGCLIPCONFIG ‘ )As Integer 格納先バッファの参照渡し 読み込み元バッファの参照渡し フレーム番号 IMGCLIPCONFIG 構造体の参照渡し Declare Function ImgClipData Lib "IfImg.DLL"( ByRef pdest As Integer, ‘ ByVal psrc( ) As Short, ‘ ByVal dwFrameNum As Integer, ‘ ByRef pClipConfig As IMGCLIPCONFIG ‘ )As Integer 格納先バッファの参照渡し 読み込み元バッファの参照渡し フレーム番号 IMGCLIPCONFIG 構造体の参照渡し Declare Function ImgClipData Lib "IfImg.DLL"( ByVal pdest( ) As Byte, ‘ ByVal psrc( ) As Short, ‘ ByVal dwFrameNum As Integer, ‘ ByRef pClipConfig As IMGCLIPCONFIG ‘ )As Integer 格納先バッファの参照渡し 読み込み元バッファの参照渡し フレーム番号 IMGCLIPCONFIG 構造体の参照渡し Declare Function ImgClipData Lib "IfImg.DLL"( ByVal pdest( ) As Short, ‘ ByVal psrc( ) As Short, ‘ ByVal dwFrameNum As Integer, ‘ ByRef pClipConfig As IMGCLIPCONFIG ‘ )As Integer 格納先バッファの参照渡し 読み込み元バッファの参照渡し フレーム番号 IMGCLIPCONFIG 構造体の参照渡し © 2003, 2016 Interface Corporation. All rights reserved. 226 GPC-5520 Help for Windows Declare Function ImgClipData Lib "IfImg.DLL"( ByVal pdest( ) As Integer, ‘ ByVal psrc( ) As Short, ‘ ByVal dwFrameNum As Integer, ‘ ByRef pClipConfig As IMGCLIPCONFIG ‘ )As Integer 格納先バッファの参照渡し 読み込み元バッファの参照渡し フレーム番号 IMGCLIPCONFIG 構造体の参照渡し Declare Function ImgClipData Lib "IfImg.DLL"( ByRef pdest As Byte, ‘ ByVal psrc( ) As Integer, ‘ ByVal dwFrameNum As Integer, ‘ ByRef pClipConfig As IMGCLIPCONFIG ‘ )As Integer 格納先バッファの参照渡し 読み込み元バッファの参照渡し フレーム番号 IMGCLIPCONFIG 構造体の参照渡し Declare Function ImgClipData Lib "IfImg.DLL"( ByRef pdest As Short, ‘ ByVal psrc( ) As Integer, ‘ ByVal dwFrameNum As Integer, ‘ ByRef pClipConfig As IMGCLIPCONFIG ‘ )As Integer 格納先バッファの参照渡し 読み込み元バッファの参照渡し フレーム番号 IMGCLIPCONFIG 構造体の参照渡し Declare Function ImgClipData Lib "IfImg.DLL"( ByRef pdest As Integer, ‘ ByVal psrc( ) As Integer, ‘ ByVal dwFrameNum As Integer, ‘ ByRef pClipConfig As IMGCLIPCONFIG ‘ )As Integer 格納先バッファの参照渡し 読み込み元バッファの参照渡し フレーム番号 IMGCLIPCONFIG 構造体の参照渡し Declare Function ImgClipData Lib "IfImg.DLL"( ByVal pdest( ) As Byte, ‘ ByVal psrc( ) As Integer, ‘ ByVal dwFrameNum As Integer, ‘ ByRef pClipConfig As IMGCLIPCONFIG ‘ )As Integer 格納先バッファの参照渡し 読み込み元バッファの参照渡し フレーム番号 IMGCLIPCONFIG 構造体の参照渡し Declare Function ImgClipData Lib "IfImg.DLL"( ByVal pdest( ) As Short, ‘ ByVal psrc( ) As Integer, ‘ ByVal dwFrameNum As Integer, ‘ ByRef pClipConfig As IMGCLIPCONFIG ‘ )As Integer 格納先バッファの参照渡し 読み込み元バッファの参照渡し フレーム番号 IMGCLIPCONFIG 構造体の参照渡し © 2003, 2016 Interface Corporation. All rights reserved. 227 GPC-5520 Help for Windows Declare Function ImgClipData Lib "IfImg.DLL"( ByVal pdest( ) As Integer, ‘ ByVal psrc( ) As Integer, ‘ ByVal dwFrameNum As Integer, ‘ ByRef pClipConfig As IMGCLIPCONFIG ‘ )As Integer ●Delphi 8 class function ImgClipData ( pdest: IntPtr; psrc: IntPtr; dwFrameNum: Cardinal; var pClipConfig: IMGCLIPCONFIG ): Integer; static; 格納先バッファの参照渡し 読み込み元バッファの参照渡し フレーム番号 IMGCLIPCONFIG 構造体の参照渡し // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ class function ImgClipData ( var pdest: Byte; psrc: IntPtr; dwFrameNum: Cardinal; var pClipConfig: IMGCLIPCONFIG ): Integer; static; // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ class function ImgClipData ( var pdest: Word; psrc: IntPtr; dwFrameNum: Cardinal; var pClipConfig: IMGCLIPCONFIG ): Integer; static; // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ class function ImgClipData ( var pdest: Cardinal; psrc: IntPtr; dwFrameNum: Cardinal; var pClipConfig: IMGCLIPCONFIG ): Integer; static; // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ class function ImgClipData ( pdest: array of Byte; psrc: IntPtr; dwFrameNum: Cardinal; var pClipConfig: IMGCLIPCONFIG ): Integer; static; // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ © 2003, 2016 Interface Corporation. All rights reserved. 228 GPC-5520 Help for Windows class function ImgClipData ( pdest: array of Word; psrc: IntPtr; dwFrameNum: Cardinal; var pClipConfig: IMGCLIPCONFIG ): Integer; static; // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ class function ImgClipData ( pdest: array of Cardinal; psrc: IntPtr; dwFrameNum: Cardinal; var pClipConfig: IMGCLIPCONFIG ): Integer; static; // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ class function ImgClipData ( pdest: IntPtr; pdest: array of Byte; dwFrameNum: Cardinal; var pClipConfig: IMGCLIPCONFIG ): Integer; static; // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ class function ImgClipData ( var pdest: Byte; pdest: array of Byte; dwFrameNum: Cardinal; var pClipConfig: IMGCLIPCONFIG ): Integer; static; // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ class function ImgClipData ( var pdest: Word; pdest: array of Byte; dwFrameNum: Cardinal; var pClipConfig: IMGCLIPCONFIG ): Integer; static; // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ class function ImgClipData ( var pdest: Cardinal; pdest: array of Byte; dwFrameNum: Cardinal; var pClipConfig: IMGCLIPCONFIG ): Integer; static; // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ © 2003, 2016 Interface Corporation. All rights reserved. 229 GPC-5520 Help for Windows class function ImgClipData ( pdest: array of Byte; pdest: array of Byte; dwFrameNum: Cardinal; var pClipConfig: IMGCLIPCONFIG ): Integer; static; // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ class function ImgClipData ( pdest: array of Word; pdest: array of Byte; dwFrameNum: Cardinal; var pClipConfig: IMGCLIPCONFIG ): Integer; static; // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ class function ImgClipData ( pdest: array of Cardinal; pdest: array of Byte; dwFrameNum: Cardinal; var pClipConfig: IMGCLIPCONFIG ): Integer; static; // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ class function ImgClipData ( pdest: IntPtr; pdest: array of Word; dwFrameNum: Cardinal; var pClipConfig: IMGCLIPCONFIG ): Integer; static; // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ class function ImgClipData ( var pdest: Byte; pdest: array of Word; dwFrameNum: Cardinal; var pClipConfig: IMGCLIPCONFIG ): Integer; static; // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ class function ImgClipData ( var pdest: Word; pdest: array of Word; dwFrameNum: Cardinal; var pClipConfig: IMGCLIPCONFIG ): Integer; static; // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ © 2003, 2016 Interface Corporation. All rights reserved. 230 GPC-5520 Help for Windows class function ImgClipData ( var pdest: Cardinal; pdest: array of Word; dwFrameNum: Cardinal; var pClipConfig: IMGCLIPCONFIG ): Integer; static; // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ class function ImgClipData ( pdest: array of Byte; pdest: array of Word; dwFrameNum: Cardinal; var pClipConfig: IMGCLIPCONFIG ): Integer; static; // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ class function ImgClipData ( pdest: array of Word; pdest: array of Word; dwFrameNum: Cardinal; var pClipConfig: IMGCLIPCONFIG ): Integer; static; // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ class function ImgClipData ( pdest: array of Cardinal; pdest: array of Word; dwFrameNum: Cardinal; var pClipConfig: IMGCLIPCONFIG ): Integer; static; // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポインタ class function ImgClipData ( pdest: IntPtr; pdest: array of Cardinal; dwFrameNum: Cardinal; var pClipConfig: IMGCLIPCONFIG // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポイン タ ): Integer; static; class function ImgClipData ( var pdest: Byte; pdest: array of Cardinal; dwFrameNum: Cardinal; var pClipConfig: IMGCLIPCONFIG // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポイン タ ): Integer; static; © 2003, 2016 Interface Corporation. All rights reserved. 231 GPC-5520 Help for Windows class function ImgClipData ( var pdest: Word; pdest: array of Cardinal; dwFrameNum: Cardinal; var pClipConfig: IMGCLIPCONFIG // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポイン タ ): Integer; static; class function ImgClipData ( var pdest: Cardinal; pdest: array of Cardinal; dwFrameNum: Cardinal; var pClipConfig: IMGCLIPCONFIG // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポイン タ ): Integer; static; class function ImgClipData ( pdest: array of Byte; pdest: array of Cardinal; dwFrameNum: Cardinal; var pClipConfig: IMGCLIPCONFIG // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポイン タ ): Integer; static; class function ImgClipData ( pdest: array of Word; pdest: array of Cardinal; dwFrameNum: Cardinal; var pClipConfig: IMGCLIPCONFIG // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポイン タ ): Integer; static; class function ImgClipData ( pdest: array of Cardinal; pdest: array of Cardinal; dwFrameNum: Cardinal; var pClipConfig: IMGCLIPCONFIG // 格納先バッファのポインタ // 読み込み元バッファのポインタ // フレーム番号 // IMGCLIPCONFIG 構造体のポイン タ ): Integer; static; 【パラメータ】 pdest 格納先のバッファのポインタを指定します。 psrc 読み込み元のバッファのポインタを指定します。 © 2003, 2016 Interface Corporation. All rights reserved. 232 GPC-5520 Help for Windows dwFrameNum 抜き出すフレーム番号を指定します。 pClipConfig IMGCLIPCONFIG 構造体で取り出す矩形領域を指定します。変数のポインタを指定します。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 【画像拡大機能】 pClipConfig 引数で指定した矩形領域の画像データを、拡大させてコピーする事ができます。 コピー元画像を縦横 2 倍、縦横 4 倍、縦横 8 倍の倍率で拡大します。 拡大方法はコピー元の各画素データを右と下と右下方向に配置させています。 画素 1 画素 2 画素 3 画素 4 2倍 画素 1 画素 1 画素 2 画素 2 画素 1 画素 1 画素 2 画素 2 画素 3 画素 3 画素 4 画素 4 画素 3 画素 3 画素 4 画素 4 したがって pdest 引数へ渡すバッファのサイズは拡大倍率の二乗倍で確保する必要があります。 例) RGB24bit 画像で 100×100 の矩形領域を 2 倍に拡大させてコピーする場合、 pdest へ渡すバッファのサイズは、縦幅×横幅×ピクセルサイズ×倍率の二乗で 100×100×3×4 = 120000(byte) となります。 倍率の指定は、IMGCLIPCONFIG 構造体の dwDataFormat 引数に、以下の識別子を OR します。 識別子 値 内容 IFIMG_DIGITALZOOM_2 100000h 縦横 2 倍のサイズで拡大します。 IFIMG_DIGITALZOOM_4 200000h 縦横 4 倍のサイズで拡大します。 IFIMG_DIGITALZOOM_8 300000h 縦横 8 倍のサイズで拡大します。 © 2003, 2016 Interface Corporation. All rights reserved. 233 GPC-5520 Help for Windows 【備考】 psrc で指定するキャプチャデータの解像度が 640×480(PAL 製品の場合は 768×572)の場合、 奇数フィールド、偶数フィールドに分離された状態のデータを指定してください。 本関数は解像度が 640×480(PAL 製品の場合は 768×572)のデータに対しては奇数フィールド と偶数フィールドを交互に配置した状態のデータを返します。 読み込み元のバッファ … 格納先のバッファ 奇数ィールドデータ 奇数フィールドデータ 偶数フィールドデータ 偶数フィールドデータ … … © 2003, 2016 Interface Corporation. All rights reserved. 234 の交互 GPC-5520 Help for Windows 【使用例 1】 ●C 言語 HANDLE hDeviceHandle; int nRet; PBYTE pCaptureData; PBYTE pClipData DWORD dwSize; IMGCLIPCONFIG ClipConf; hDeviceHandle = ImgOpen(“IFIMGST1”); : // 格納用バッファを動的確保。RGB24 を 10 フレーム dwSize = 921600L * 10; pCaptureData = (PBYTE)malloc(dwSize); // 画像情報を設定 BufInfo.pBufferAddress = pCaptureData; BufInfo.dwBufferSize = dwSize; nRet=ImgSetBuffer(hDeviceHandle,&BufInfo, IFIMG_COLOR_RGB24); // キャプチャ処理 : : // 切り取り範囲を指定します。 ClipConf.dwDataFormat = IFIMG_SDRAM_RGB24; ClipConf.dwXCoordinates = 220; ClipConf.dwYCoordinates = 140; ClipConf.dwXLength = 100; ClipConf.dwYLength = 100; // クリップデータを動的確保 dwSize = 100 * 100 * 3; pClipData = (PBYTE)malloc(dwSize); // 5 フレーム目のデータを指定範囲で切り取ります。 nRet = ImgClipData( pCaptureData, pClipData, 5, &ClipConf ); © 2003, 2016 Interface Corporation. All rights reserved. 235 GPC-5520 Help for Windows ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim nRet As Long Dim CaptureData(9216000) As Byte ‘ RGB24 を 10 フレーム Dim ClipData (30000) As Byte ‘ RGB24 の 100×100 のデータ Dim ClipConf As IMGCLIPCONFIG lpszName = “IFIMGST1” hDeviceHandle = ImgOpen(lpszName) nRet = ImgSetBufferVB(hDeviceHandle, CaptureData (0), 9216000, IFIMG_COLOR_RGB24) ‘ : キャプチャ処理を行います。 : ‘ 切り取り範囲を指定します。 ClipConf.dwDataFormat = IFIMG_SDRAM_RGB24 ClipConf.dwXCoordinates = 220 ClipConf.dwYCoordinates = 140 ClipConf.dwXLength = 100 ClipConf.dwYLength = 100 ‘ 5 フレーム目のデータを指定範囲で取り出します。 nRet = ImgClipData( CaptureData, ClipData, 5, ClipConf ) © 2003, 2016 Interface Corporation. All rights reserved. 236 GPC-5520 Help for Windows ●Delphi var lpszName: String; hDeviceHandle: THandle; nRet: Integer; pCaptureData: Pointer; pClipData: Pointer; dwSize: DWORD; ClipConf: IMGCLIPCONFIG; BufInfo: IMGBUFFERINFO; lpszName := 'IFIMGST1'; hDeviceHandle := ImgOpen(lpszName); // 格納用バッファを動的確保。RGB24 を 10 フレーム dwSize := 9216000; pCaptureData := AllocMem(dwSize); // 画像情報を設定 BufInfo.pBufferAddress := pCaptureData; BufInfo.dwBufferSize := dwSize; nRet := ImgSetBuffer(hDeviceHandle, BufInfo, IFIMG_COLOR_RGB24); // キャプチャ処理を行います。 : : // 切り取り範囲を指定します。 ClipConf.dwDataFormat := IFIMG_SDRAM_RGB24; ClipConf.dwXCoordinates := 220; ClipConf.dwYCoordinates := 140; ClipConf.dwXLength := 100; ClipConf.dwYLength := 100; // 格納用バッファを動的確保。100×100 を 3 フレーム dwSize := 100 * 100 * 3; pClipData:= AllocMem(dwSize); // 5 フレーム目のデータを指定範囲で取り出します。 nRet := ImgClipData( pCaptureData, pClipData, 5, ClipConf); © 2003, 2016 Interface Corporation. All rights reserved. 237 GPC-5520 Help for Windows ●Visual C# .NET IntPtr hDeviceHandle; IFCIMG_ANY.IMGBUFFERINFO Buffer; IntPtr array_p; int nRet; byte[] buffer_clip; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGST1”); : : array_p = Marshal.AllocCoTaskMem(640*480*3); Buffer.pBufferAddress = array_p; Buffer.dwBufferSize = 640*480*3*10; nRet = IFCIMG_ANY.ImgSetBuffer(hDeviceHandle, ref Buffer, IFCIMG_ANY.IFIMG_COLOR_RGB24); // キャプチャ処理を行います。 // 切り取り範囲を指定します。 ClipConf.dwDataFormat = IFCIMG_ANY.IFIMG_SDRAM_RGB24; ClipConf.dwXCoordinates = 0; ClipConf.dwYCoordinates = 0; ClipConf.dwXLength = 640; ClipConf.dwYLength = 480; // クリップデータを動的確保 buffer_clip = new byte[640*480*3]; // 5 フレーム目のデータを指定範囲で切り取ります。 nRet = IFCIMG_ANY.ImgClipData( array_p, buffer_clip, 5, out ClipConf ); © 2003, 2016 Interface Corporation. All rights reserved. 238 GPC-5520 Help for Windows ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim buffersize As Integer Dim buffer(640*480*3*10) As Byte Dim buffer_clip(640*480*3) As Byte lpszName = “IFIMGST1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : : buffersize = 640*480*3*10 nRet = IFCIMG_ANY.ImgSetBufferVB(_ hDeviceHandle, buffer, buffersize, IFCIMG_ANY.IFIMG_COLOR_RGB24) ‘ キャプチャ処理を行います。 ‘ 切り取り範囲を指定します。 ClipConf.dwDataFormat = IFCIMG_ANY.IFIMG_SDRAM_RGB24 ClipConf.dwXCoordinates = 0 ClipConf.dwYCoordinates = 0 ClipConf.dwXLength = 640 ClipConf.dwYLength = 480 ‘ 5 フレーム目のデータを指定範囲で取り出します。 nRet = IFCIMG_ANY.ImgClipData(buffer, buffer_clip, 5, ClipConf ) © 2003, 2016 Interface Corporation. All rights reserved. 239 GPC-5520 Help for Windows ●Delphi var lpszName: String; hDeviceHandle: Integer; Buffer: IFCIMG.IMGBUFFERINFO; nRet: Integer; pClipData: array of Byte; ClipConf: IFCIMG.IMGCLIPCONFIG; lpszName := 'IFIMGST1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); : // 格納用バッファを動的確保。RGB24 を 10 フレーム Buffer.pBufferAddress := Marshal.AllocHGlobal(640*480*3*10); Buffer.dwBufferSize := 640*480*3*10; nRet := IFCIMG.ImgSetBuffer(hDeviceHandle, Buffer, IFCIMG.IFIMG_COLOR_RGB24); // 切り取り範囲を指定します。 ClipConf.dwDataFormat = IFCIMG.IFIMG_SDRAM_RGB24; ClipConf.dwXCoordinates := 0; ClipConf.dwYCoordinates := 0; ClipConf.dwXLength := 640; ClipConf.dwYLength := 480; dwSize := 640*480*3; Setlength(pClipData, dwSize); // 5 フレーム目のデータを指定範囲で切り取ります。 nRet := IFCIMG.ImgClipData( Buffer.pBufferAddress, pClipData, 5, ClipConf ); デバイス名「IFIMGST1」のデバイスに対して、キャプチャ 5 フレーム目の画像から 100×100 領域を取り出します。 © 2003, 2016 Interface Corporation. All rights reserved. 240 GPC-5520 Help for Windows 【使用例 2】 ●C 言語 HANDLE hDeviceHandle; int nRet; HANDLE hSDRAMHandle PBYTE pCaptureData; PBYTE pClipData DWORD dwSize; IMGCLIPCONFIG ClipConf; hDeviceHandle = ImgOpen(“IFIMGMEM1”); : // SDRAM 内にキャプチャ用領域を確保 nRet = ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_RGB24, 0, 0, 50, &hSDRAMHandle); : // キャプチャ処理を行います。 : // 格納用バッファを動的確保。RGB24 を 10 フレーム dwSize = 921600L * 10; pCaptureData = (PBYTE)malloc(dwSize); // SDRAM からデータ取り出し。20 フレーム目から 10 フレーム分。 nRet = ImgReadCaptureData( hDeviceHandle, hSDRAMHandle, 20, 10, pCaptureData, dwSize); // 切り取り範囲を指定します。 ClipConf.dwDataFormat = IFIMG_SDRAM_RGB24; ClipConf.dwXCoordinates = 220; ClipConf.dwYCoordinates = 140; ClipConf.dwXLength = 100; ClipConf.dwYLength = 100; // クリップデータを動的確保 dwSize = 100 * 100 * 3; pClipData = (PBYTE)malloc(dwSize); // 5 フレーム目のデータを指定範囲で切り取ります。 nRet = ImgClipData( pCaptureData, pClipData, 5, &ClipConf ); © 2003, 2016 Interface Corporation. All rights reserved. 241 GPC-5520 Help for Windows ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim hSDRAMHandle As Long Dim nRet As Long Dim CaptureData(9216000) As Byte ‘ RGB24 を 10 フレーム Dim ClipData (30000) As Byte ‘ RGB24 の 100×100 のデータ Dim ClipConf As IMGCLIPCONFIG lpszName = “IFIMGMEM1” hDeviceHandle = ImgOpen(lpszName) : ‘ SDRAM 内にキャプチャ用領域を確保 nRet = ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_RGB24, 0, 0, 50, hSDRAMHandle) : ‘ キャプチャ処理を行います。 : ‘ SDRAM からデータ取り出し。20 フレーム目から 10 フレーム分。 nRet = ImgReadCaptureData( hDeviceHandle, hSDRAMHandle, 20, 10, CaptureData, 9216000) ‘ 切り取り範囲を指定します。 ClipConf.dwDataFormat = IFIMG_SDRAM_RGB24 ClipConf.dwXCoordinates = 220 ClipConf.dwYCoordinates = 140 ClipConf.dwXLength = 100 ClipConf.dwYLength = 100 ‘ 5 フレーム目のデータを指定範囲で取り出します。 nRet = ImgClipData( CaptureData, ClipData, 5, ClipConf ) © 2003, 2016 Interface Corporation. All rights reserved. 242 GPC-5520 Help for Windows ●Delphi var lpszName: String; hDeviceHandle: THandle; hSDRAMHandle: THandle; nRet: Integer; pCaptureData: Pointer; pClipData: Pointer; dwSize: DWORD; ClipConf: IMGCLIPCONFIG; lpszName := 'IFIMGMEM1'; hDeviceHandle := ImgOpen(lpszName); : // SDRAM 内にキャプチャ用領域を確保 nRet := ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_RGB24, 0, 0, 50, hSDRAMHandle); : // キャプチャ処理を行います。 : // 格納用バッファを動的確保。RGB24 を 10 フレーム dwSize := 9216000; pCaptureData := AllocMem(dwSize); // SDRAM からデータ取り出し。20 フレーム目から 10 フレーム分 nRet := ImgReadCaptureData( hDeviceHandle, hSDRAMHandle, 20, 10, pCaptureData, dwSize); // 切り取り範囲を指定します。 ClipConf.dwDataFormat := IFIMG_SDRAM_RGB24; ClipConf.dwXCoordinates := 220; ClipConf.dwYCoordinates := 140; ClipConf.dwXLength := 100; ClipConf.dwYLength := 100; // 格納用バッファを動的確保。100×100 を 3 フレーム dwSize := 100 * 100 * 3; pClipData:= AllocMem(dwSize); // 5 フレーム目のデータを指定範囲で取り出します。 nRet := ImgClipData( pCaptureData, pClipData, 5, ClipConf); © 2003, 2016 Interface Corporation. All rights reserved. 243 GPC-5520 Help for Windows ●Visual C# .NET IntPtr hDeviceHandle; int nRet; IntPtr hSDRAMHandle byte[] buffer; byte[] buffer_clip; uint dwSize; IFCIMG_ANY.IMGCLIPCONFIG ClipConf; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGMEM1”); : : // キャプチャ処理を行います。 : // 格納用バッファを動的確保。RGB24 を 10 フレーム buffer = new byte[640*480*3*10]; dwSize = 640*480*3*10; // SDRAM からデータ取り出し。20 フレーム目から 10 フレーム分。 nRet = IFCIMG_ANY.ImgReadCaptureData( hDeviceHandle, hSDRAMHandle, 20, 10, buffer, dwSize); // 切り取り範囲を指定します。 ClipConf.dwDataFormat = IFCIMG_ANY.IFIMG_SDRAM_RGB24; ClipConf.dwXCoordinates = 220; ClipConf.dwYCoordinates = 140; ClipConf.dwXLength = 100; ClipConf.dwYLength = 100; // クリップデータを動的確保 buffer_clip = new byte[100*100*3]; // 5 フレーム目のデータを指定範囲で切り取ります。 nRet = IFCIMG_ANY.ImgClipData( buffer, buffer_clip, © 2003, 2016 Interface Corporation. All rights reserved. 244 5, out ClipConf ); GPC-5520 Help for Windows ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim hSDRAMHandle As IntPtr Dim nRet As Integer Dim CaptureData(9216000) As Byte ‘ RGB24 を 10 フレーム Dim ClipData (30000) As Byte ‘ RGB24 の 100×100 のデータ Dim ClipConf As IFCIMG_ANY.IMGCLIPCONFIG lpszName = “IFIMGMEM1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : ‘ SDRAM 内にキャプチャ用領域を確保 nRet = IFCIMG_ANY.ImgAllocateSDRAM(hDeviceHandle, IFCIMG_ANY.IFIMG_SDRAM_RGB24, 0, 0, 50, hSDRAMHandle) : ‘ キャプチャ処理を行います。 : ‘ SDRAM からデータ取り出し。20 フレーム目から 10 フレーム分。 nRet = IFCIMG_ANY.ImgReadCaptureData( hDeviceHandle, hSDRAMHandle, 20, 10, CaptureData, 9216000) ‘ 切り取り範囲を指定します。 ClipConf.dwDataFormat = IFCIMG_ANY.IFIMG_SDRAM_RGB24 ClipConf.dwXCoordinates = 220 ClipConf.dwYCoordinates = 140 ClipConf.dwXLength = 100 ClipConf.dwYLength = 100 ‘ 5 フレーム目のデータを指定範囲で取り出します。 nRet = IFCIMG_ANY.ImgClipData( CaptureData, ClipData, 5, ClipConf ) © 2003, 2016 Interface Corporation. All rights reserved. 245 GPC-5520 Help for Windows ●Delphi var lpszName: String; hDeviceHandle: Integer; hSDRAMHandle: Integer; nRet: Integer; pCaptureData: array of Byte; pClipData: array of Byte; dwSize: Cardinal; ClipConf: IFCIMG.IMGCLIPCONFIG; lpszName := 'IFIMGMEM1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); : // SDRAM 内にキャプチャ用領域を確保 nRet := IFCIMG.ImgAllocateSDRAM(hDeviceHandle, IFCIMG.IFIMG_SDRAM_RGB24, 0, 0, 50, hSDRAMHandle); : // キャプチャ処理を行います。 : // 格納用バッファを動的確保。RGB24 を 10 フレーム dwSize := 9216000; Setlength(pCaptureData, dwSize); // SDRAM からデータ取り出し。20 フレーム目から 10 フレーム分 nRet := IFCIMG.ImgReadCaptureData( hDeviceHandle, hSDRAMHandle, 20, 10, pCaptureData, dwSize); // 切り取り範囲を指定します。 ClipConf.dwDataFormat := IFCIMG.IFIMG_SDRAM_RGB24; ClipConf.dwXCoordinates := 220; ClipConf.dwYCoordinates := 140; ClipConf.dwXLength := 100; ClipConf.dwYLength := 100; // 格納用バッファを動的確保。100×100 を 3 フレーム dwSize := 100 * 100 * 3; Setlength(pClipData, dwSize); // 5 フレーム目のデータを指定範囲で取り出します。 nRet := IFCIMG.ImgClipData( pCaptureData, pClipData, 5, ClipConf); デバイス名「IFIMGMEM1」のデバイスに対して、SDRAM からキャプチャデータを取り出します。 © 2003, 2016 Interface Corporation. All rights reserved. 246 GPC-5520 Help for Windows 31. ImgWriteComparisonData 指定したバッファ領域に対して,比較データを書き込みます。 【書式】 ●C 言語 INT ImgWriteComparisonData( HANDLE hDeviceHandle, HANDLE hSDRAMHandle, PVOID pdwWriteData, DWORD dwSize ); // // // // デバイスハンドル SDRAM 管理ハンドル 比較データバッファのポインタ 比較データバッファのサイズ ●Visual Basic Declare Function ImgWriteComparisonData Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByVal hSDRAMHandle As Long, _ ‘ SDRAM 管理ハンドル ByRef pdwWriteData As Any, _ ‘ 比較データバッファの参照渡し ByVal dwSize As Long _ ‘ 比較データバッファのサイズ )As Long ●Delphi function ImgWriteComparisonData( hDeviceHandle: THandle; // デバイスハンドル hSDRAMHandle: THandle; // SDRAM 管理ハンドル pdwWriteData: Pointer; // 比較データバッファの参照渡し dwSise: DWORD // 比較データバッファのサイズ ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgWriteComparisonData( IntPtr hDeviceHandle, // デバイスハンドル IntPtr hSDRAMHandle, // SDRAM 管理ハンドル byte[] pdwWriteData, // 比較データバッファのポインタ uint dwSize // 比較データバッファのサイズ ); [DllImport("IfImg.dll")] public static extern int ImgWriteComparisonData( IntPtr hDeviceHandle, // デバイスハンドル IntPtr hSDRAMHandle, // SDRAM 管理ハンドル ushort[] pdwWriteData, // 比較データバッファのポインタ uint dwSize // 比較データバッファのサイズ ); [DllImport("IfImg.dll")] public static extern int ImgWriteComparisonData( © 2003, 2016 Interface Corporation. All rights reserved. 247 GPC-5520 Help for Windows IntPtr IntPtr uint[] uint hDeviceHandle, hSDRAMHandle, pdwWriteData, dwSize // // // // デバイスハンドル SDRAM 管理ハンドル 比較データバッファのポインタ 比較データバッファのサイズ ); © 2003, 2016 Interface Corporation. All rights reserved. 248 GPC-5520 Help for Windows ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgWriteComparisonData( uint hDeviceHandle, // デバイスハンドル uint hSDRAMHandle, // SDRAM 管理ハンドル byte[] pdwWriteData, // 比較データバッファのポインタ uint dwSize // 比較データバッファのサイズ ); [DllImport("IfImg.dll")] public static extern int ImgWriteComparisonData( uint hDeviceHandle, // デバイスハンドル uint hSDRAMHandle, // SDRAM 管理ハンドル ushort[] pdwWriteData, // 比較データバッファのポインタ uint dwSize // 比較データバッファのサイズ ); [DllImport("IfImg.dll")] public static extern int ImgWriteComparisonData( uint hDeviceHandle, // デバイスハンドル uint hSDRAMHandle, // SDRAM 管理ハンドル uint[] pdwWriteData, // 比較データバッファのポインタ uint dwSize // 比較データバッファのサイズ ); ●Visual Basic .NET(x86、x64 共用) Declare Function ImgWriteComparisonData Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByVal hSDRAMHandle As IntPtr, ‘ SDRAM 管理ハンドル ByRef pdwWriteData( ) As byte, ‘ 比較データバッファの参照渡し ByVal dwSize As Integer ‘ 比較データバッファのサイズ )As Integer Declare Function ImgWriteComparisonData Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByVal hSDRAMHandle As IntPtr, ‘ SDRAM 管理ハンドル ByRef pdwWriteData( ) As Short, ‘ 比較データバッファの参照渡し ByVal dwSize As Integer ‘ 比較データバッファのサイズ )As Integer Declare Function ImgWriteComparisonData Lib ByVal hDeviceHandle As IntPtr, ‘ ByVal hSDRAMHandle As IntPtr, ‘ ByRef pdwWriteData( ) As Integer, ‘ ByVal dwSize As Integer ‘ )As Integer "IfImg.DLL"( デバイスハンドル SDRAM 管理ハンドル 比較データバッファの参照渡し 比較データバッファのサイズ © 2003, 2016 Interface Corporation. All rights reserved. 249 GPC-5520 Help for Windows ●Visual Basic .NET(x86 専用) Declare Function ImgWriteComparisonData Lib ByVal hDeviceHandle As Integer, ‘ ByVal hSDRAMHandle As Integer, ‘ ByRef pdwWriteData( ) As byte, ‘ ByVal dwSize As Integer ‘ )As Integer "IfImg.DLL"( デバイスハンドル SDRAM 管理ハンドル 比較データバッファの参照渡し 比較データバッファのサイズ Declare Function ImgWriteComparisonData Lib ByVal hDeviceHandle As Integer, ‘ ByVal hSDRAMHandle As Integer, ‘ ByRef pdwWriteData( ) As Short, ‘ ByVal dwSize As Integer ‘ )As Integer "IfImg.DLL"( デバイスハンドル SDRAM 管理ハンドル 比較データバッファの参照渡し 比較データバッファのサイズ Declare Function ImgWriteComparisonData Lib ByVal hDeviceHandle As Integer, ‘ ByVal hSDRAMHandle As Integer, ‘ ByRef pdwWriteData( ) As Integer, ‘ ByVal dwSize As Integer ‘ )As Integer "IfImg.DLL"( デバイスハンドル SDRAM 管理ハンドル 比較データバッファの参照渡し 比較データバッファのサイズ ●Delphi 8 class function ImgWriteComparisonData( hDeviceHandle: Integer; // hSDRAMHandle: Integer; // pdwWriteData: IntPtr; // dwSise: Cardinal // ): Integer; static; デバイスハンドル SDRAM 管理ハンドル 比較データバッファの参照渡し 比較データバッファのサイズ class function ImgWriteComparisonData( hDeviceHandle: Integer; // hSDRAMHandle: Integer; // pdwWriteData: array of Byte // dwSise: Cardinal // ): Integer; static; デバイスハンドル SDRAM 管理ハンドル 比較データバッファの参照渡し 比較データバッファのサイズ class function ImgWriteComparisonData( hDeviceHandle: Integer; // hSDRAMHandle: Integer; // pdwWriteData: array of Word; // dwSise: Cardinal // ): Integer; static; デバイスハンドル SDRAM 管理ハンドル 比較データバッファの参照渡し 比較データバッファのサイズ © 2003, 2016 Interface Corporation. All rights reserved. 250 GPC-5520 Help for Windows class function ImgWriteComparisonData( hDeviceHandle: Integer; hSDRAMHandle: Integer; pdwWriteData: array of Cardinal; dwSise: Cardinal ): Integer; static; // // // // デバイスハンドル SDRAM 管理ハンドル 比較データバッファの参照渡し 比較データバッファのサイズ 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 hSDRAMHandle ImgAllocateSDRAM関数で取得したハンドルを指定します。 pdwWriteData 比較データバッファの先頭ポインタ dwSize 比較データバッファのサイズ 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 【備考】 本関数で取り扱う比較用画像データは 0x00、0xFF で構成される 8bit の 2 値化されたフォーマ ットのデータです。 比較用画像データのサイズは ImgAllocateSDRAM 関数で指定した dwXLength、dwYLength の値を 掛け合わせた値となります。 比較用画像データを用意する手段としては、ユーザが直接作成する場合と、本製品を利用して 2 値化モードによるキャプチャで比較用画像データを実際に取り込む方法があります。この場 合、奇数フィールドデータ、偶数フィールドデータを交互に配置替えする必要があります。 © 2003, 2016 Interface Corporation. All rights reserved. 251 GPC-5520 Help for Windows 【使用例】 ●C 言語 HANDLE hDeviceHandle; int nRet; HANDLE hSDRAMHandle BYTE CmpData[10000]; hDeviceHandle = ImgOpen(“IFIMGPTN1”); : // SDRAM 内に比較用データ領域を確保 nRet = ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_CMP8, 100, 100, 1, &hSDRAMHandle); : // CmpData 配列に比較データを格納します。 : // 比較データを SDRAM へ書き込みます。 nRet = ImgWriteComparisonData(hDeviceHandle, hSDRAMHandle, CmpData, 10000); ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim hSDRAMHandle As Long Dim nRet As Long Dim CmpData (10000) As Byte lpszName = “IFIMGPTN1” hDeviceHandle = ImgOpen(lpszName) : ‘ SDRAM 内に比較用データ領域を確保 nRet = ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_CMP8, 100, 100, 1, hSDRAMHandle) : ‘ CmpData 配列に比較用データを格納します。 : ‘ 比較データを指定の SDRAM 領域へ書き込みます。 nRet = ImgWriteComparisonData(hDeviceHandle, hSDRAMHandle, CmpData, 10000) © 2003, 2016 Interface Corporation. All rights reserved. 252 GPC-5520 Help for Windows ●Delphi var lpszName: String; hDeviceHandle: THandle; hSDRAMHandle: THandle; nRet: Integer; CmpData: array[0..9999] of BYTE lpszName := 'IFIMGPTN1' hDeviceHandle := ImgOpen(lpszName); : // SDRAM 内に比較用データ領域を確保 nRet := ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_CMP8, 100, 100, 1, hSDRAMHandle); : // CmpData 配列に比較データを格納します。 : // 比較データを SDRAM へ書き込みます。 nRet := ImgWriteComparisonData(hDeviceHandle, hSDRAMHandle, CmpData, 10000); ●Visual C# .NET IntPtr hDeviceHandle; int nRet; IntPtr hSDRAMHandle BYTE CmpData[10000]; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGPTN1”); : // SDRAM 内に比較用データ領域を確保 nRet = IFCIMG_ANY.ImgAllocateSDRAM(hDeviceHandle, IFCIMG_ANY.IFIMG_SDRAM_CMP8, 100, 100, 1, out hSDRAMHandle); : // CmpData 配列に比較データを格納します。 : // 比較データを SDRAM へ書き込みます。 nRet = IFCIMG_ANY.ImgWriteComparisonData(hDeviceHandle, hSDRAMHandle, CmpData, 10000); © 2003, 2016 Interface Corporation. All rights reserved. 253 GPC-5520 Help for Windows ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim hSDRAMHandle As IntPtr Dim nRet As Integer Dim CmpData (10000) As Byte lpszName = “IFIMGPTN1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : ‘ SDRAM 内に比較用データ領域を確保 nRet = IFCIMG_ANY.ImgAllocateSDRAM(hDeviceHandle, _ IFCIMG_ANY.IFIMG_SDRAM_CMP8, 100, 100, 1, hSDRAMHandle) : ‘ CmpData 配列に比較用データを格納します。 : ‘ 比較データを指定の SDRAM 領域へ書き込みます。 nRet = IFCIMG_ANY.ImgWriteComparisonData(hDeviceHandle, hSDRAMHandle, _ CmpData, 10000) ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; hSDRAMHandle: Integer; nRet: Integer; CmpData: array[0..9999] of Byte; lpszName := 'IFIMGPTN1' hDeviceHandle := IFCIMG.ImgOpen(lpszName); : // SDRAM 内に比較用データ領域を確保 nRet := IFCIMG.ImgAllocateSDRAM(hDeviceHandle, IFCIMG.IFIMG_SDRAM_CMP8, 100, 100, 1, hSDRAMHandle); : // CmpData 配列に比較データを格納します。 : // 比較データを SDRAM へ書き込みます。 nRet := IFCIMG.ImgWriteComparisonData(hDeviceHandle, hSDRAMHandle, 10000); CmpData, デバイス名「IFIMGPTN1」のデバイスに対して、SDRAM に 100×100 の比較用画像データ(8bit) を格納します。 © 2003, 2016 Interface Corporation. All rights reserved. 254 GPC-5520 Help for Windows 32. ImgSetComparisonConfig パターン一致機能で比較条件を指定します。 ※解像度設定が「320×240」または「160×120」の場合、パターン一致機能は使用できません。 【書式】 ●C 言語 INT ImgSetComparisonConfig ( HANDLE hDeviceHandle, PIMGPTNCONFIG pPatternConfig ); // デバイスハンドル // IMGPTNCONFIG 構造体のポインタ ●Visual Basic Declare Function ImgSetComparisonConfig Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByRef pPatternConfig As PIMGPTNCONFIG _ ‘ IMGPTNCONFIG 構造体の ‘ 参照渡し )As Long ●Delphi function ImgSetComparisonConfig( hDeviceHandle: THandle; // デバイスハンドル var pPatternConfig: IMGPTNCONFIG // IMGPTNCONFIG 構造体の参照渡し ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetComparisonConfig ( IntPtr hDeviceHandle, // デバイスハンドル ref IMGPTNCONFIG pPatternConfig // IMGPTNCONFIG 構造体のポインタ ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetComparisonConfig ( uint hDeviceHandle, // デバイスハンドル ref IMGPTNCONFIG pPatternConfig // IMGPTNCONFIG 構造体のポインタ ); ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetComparisonConfig Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByRef pPatternConfig As IMGPTNCONFIG ‘ IMGPTNCONFIG 構造体の参 照渡し )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 255 GPC-5520 Help for Windows ●Visual Basic .NET(x86 専用) Declare Function ImgSetComparisonConfig Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByRef pPatternConfig As IMGPTNCONFIG ‘ IMGPTNCONFIG 構造体の参 照渡し )As Integer ●Delphi 8 class function ImgSetComparisonConfig( hDeviceHandle: Integer; var pPatternConfig: IMGPTNCONFIG ): Integer; static; // デバイスハンドル // IMGPTNCONFIG 構造体の参照渡し 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 pPatternConfig IMGPTNCONFIG 構造体へのポインタを指定してください。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 © 2003, 2016 Interface Corporation. All rights reserved. 256 GPC-5520 Help for Windows 【使用例】 ●C 言語 HANDLE hDeviceHandle; int nRet; HANDLE hSDRAMHandle BYTE CmpData[10000]; IMGPTNCONFIG PtnConfig; IMGBINCONFIG BinConf; hDeviceHandle = ImgOpen(“IFIMGPTN1”); : // SDRAM 内に比較用データ領域を確保 nRet = ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_CMP, 100, 100, 1, &hSDRAMHandle); : // CmpData 配列に比較データを格納します。 : // 比較データを SDRAM へ書き込みます。 nRet = ImgWriteComparisonData(hDeviceHandle, hSDRAMHandle, CmpData, 10000); // 2 値化の設定を行います。 BinConf.dwColorIngredient = IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold = 255; BinConf.dwMinthreshold = 128; BinConf.dwBinarizationMode = IFIMG_BINMODE_NORMAL; nRet = ImgSetBinarizationConfig(hDeviceHandle, &BinConf); // 測定範囲を指定します。 nRet = ImgSetMeasurementRange(hDeviceHandle, 220, 140, 100, 100); // パターン一致条件を設定します。 PtnConfig.dwSDRAMhandle = hSDRAMHandle; PtnConfig.dwAutoRevision = IFIMG_AUTO_ENABLE; PtnConfig.dwXCoordinates = 220; PtnConfig.dwYCoordinates = 140; PtnConfig.dwPercentage = 80; PtnConfig.dwTriggerMode = IFIMG_PTNMATCH_NORMAL; nRet = ImgSetComparisonConfig(hDeviceHandle, &PtnConfig); // トリガを無効にする場合は、PtnConfig.dwTriggerMode に IFIMG_PTNMATCH_NONE を指定し // ます。 PtnConfig.dwTriggerMode = IFIMG_PTNMATCH_NONE; nRet = ImgSetComparisonConfig(hDeviceHandle, &PtnConfig); © 2003, 2016 Interface Corporation. All rights reserved. 257 GPC-5520 Help for Windows ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim hSDRAMHandle As Long Dim nRet As Long Dim CmpData (10000) As Byte Dim BinConf As IMGBINCONFIG Dim PtnConfig As IMGPTNCONFIG lpszName = “IFIMGPTN1” hDeviceHandle = ImgOpen(lpszName) : ‘ SDRAM 内に比較用データ領域を確保 nRet = ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_CMP, 100, 100, 1, hSDRAMHandle) : ‘ CmpData 配列に比較用データを格納します。 : ‘ 比較データを指定の SDRAM 領域へ書き込みます。 nRet = ImgWriteComparisonData(hDeviceHandle, hSDRAMHandle, CmpData, 10000) ‘ 2 値化の設定を行います。 BinConf.dwColorIngredient = IFIMG_INGREDIENT_GRAY BinConf.dwMaxthreshold = 255 BinConf.dwMinthreshold = 128 BinConf.dwBinarizationMode = IFIMG_BINMODE_NORMAL ‘ 測定範囲を指定します。 nRet = ImgSetBinarizationConfig (hDeviceHandle, BinConf) nRet = ImgSetMeasurementRange (hDeviceHandle, 220, 140, 100, 100) ‘ パターン一致条件を設定します。 PtnConfig.dwSDRAMhandle = hSDRAMHandle PtnConfig.dwAutoRevision = IFIMG_AUTO_ENABLE PtnConfig.dwXCoordinates = 220 PtnConfig.dwYCoordinates = 140 PtnConfig.dwPercentage = 80 PtnConfig.dwTriggerMode = IFIMG_PTNMATCH_NORMAL ‘ パターン一致検出トリガを有効にします。 nRet = ImgSetComparisonConfig(hDeviceHandle, PtnConfig) ‘ トリガを無効にする場合は、PtnConfig.dwTriggerMode に ‘ IFIMG_PTNMATCH_NONE を指定します。 PtnConfig.dwTriggerMode = IFIMG_PTNMATCH_NONE; nRet = ImgSetComparisonConfig(hDeviceHandle, PtnConfig) © 2003, 2016 Interface Corporation. All rights reserved. 258 GPC-5520 Help for Windows ●Delphi var lpszName: String; hDeviceHandle: THandle; hSDRAMHandle: THandle; nRet: Integer; CmpData: array[0..9999] of BYTE lpszName := 'IFIMGPTN1'; hDeviceHandle := ImgOpen(lpszName); : // SDRAM 内に比較用データ領域を確保 nRet := ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_CMP, 100, 100, 1, hSDRAMHandle); : // CmpData 配列に比較データを格納します : // 比較データを SDRAM へ書き込みます nRet := ImgWriteComparisonData(hDeviceHandle, hSDRAMHandle, CmpData, 10000); // 2 値化の設定を行います。 BinConf.dwColorIngredient := IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold := 255; BinConf.dwMinthreshold := 128; BinConf.dwBinarizationMode := IFIMG_BINMODE_NORMAL; nRet := ImgSetBinarizationConfig(hDeviceHandle, BinConf); // 測定範囲を指定します。 nRet := ImgSetMeasurementRange(hDeviceHandle, 220, 140, 100, 100); // パターン一致条件を設定します。 PtnConfig.dwSDRAMhandle := hSDRAMHandle; PtnConfig.dwAutoRevision := IFIMG_AUTO_ENABLE; PtnConfig.dwXCoordinates := 220; PtnConfig.dwYCoordinates := 140; PtnConfig.dwPercentage := 80; PtnConfig.dwTriggerMode := IFIMG_PTNMATCH_NORMAL; nRet := ImgSetComparisonConfig(hDeviceHandle, PtnConfig); // トリガを無効にする場合は、PtnConfig.dwTriggerMode に IFIMG_PTNMATCH_NONE を指定し // ます。 PtnConfig.dwTriggerMode := IFIMG_PTNMATCH_NONE; nRet := ImgSetComparisonConfig(hDeviceHandle, PtnConfig); © 2003, 2016 Interface Corporation. All rights reserved. 259 GPC-5520 Help for Windows ●Visual C# .NET IntPtr hDeviceHandle; int nRet; uint hSDRAMHandle byte CmpData[10000]; IFCIMG_ANY.IMGPTNCONFIG PtnConfig; IFCIMG_ANY.IMGBINCONFIG BinConf; hDeviceHandle = IFCIMG.ImgOpen(“IFIMGPTN1”); : // SDRAM 内に比較用データ領域を確保 nRet = IFCIMG_ANY.ImgAllocateSDRAM(hDeviceHandle, IFCIMG_ANY.IFIMG_SDRAM_CMP, 100, 100, 1, out hSDRAMHandle); : // CmpData 配列に比較データを格納します。 : // 比較データを SDRAM へ書き込みます。 nRet = IFCIMG_ANY.ImgWriteComparisonData(hDeviceHandle, hSDRAMHandle, CmpData, 10000); // 2 値化の設定を行います。 BinConf.dwColorIngredient = IFCIMG_ANY.IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold = 255; BinConf.dwMinthreshold = 128; BinConf.dwBinarizationMode = IFCIMG_ANY.IFIMG_BINMODE_NORMAL; nRet = IFCIMG_ANY.ImgSetBinarizationConfig(hDeviceHandle, ref BinConf); // 測定範囲を指定します。 nRet = IFCIMG_ANY.ImgSetMeasurementRange(hDeviceHandle, 220, 140, 100, 100); // パターン一致条件を設定します。 PtnConfig.dwSDRAMhandle = hSDRAMHandle; PtnConfig.dwAutoRevision = IFCIMG_ANY.IFIMG_AUTO_ENABLE; PtnConfig.dwXCoordinates = 220; PtnConfig.dwYCoordinates = 140; PtnConfig.dwPercentage = 80; PtnConfig.dwTriggerMode = IFCIMG_ANY.IFIMG_PTNMATCH_NORMAL; nRet = IFCIMG_ANY.ImgSetComparisonConfig(hDeviceHandle, ref PtnConfig); // トリガを無効にする場合は、PtnConfig.dwTriggerMode に // IFCIMG_ANY.IFIMG_PTNMATCH_NONE を指定します。 PtnConfig.dwTriggerMode = IFCIMG_ANY.IFIMG_PTNMATCH_NONE; nRet = IFCIMG_ANY.ImgSetComparisonConfig(hDeviceHandle, ref PtnConfig); © 2003, 2016 Interface Corporation. All rights reserved. 260 GPC-5520 Help for Windows ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim hSDRAMHandle As IntPtr Dim nRet As Integer Dim CmpData (10000) As Byte Dim BinConf As IFCIMG_ANY.IMGBINCONFIG Dim PtnConfig As IFCIMG_ANY.IMGPTNCONFIG lpszName = “IFIMGPTN1” hDeviceHandle = IFCIMG.ImgOpen(lpszName) : ‘ SDRAM 内に比較用データ領域を確保 nRet = IFCIMG_ANY.ImgAllocateSDRAM(hDeviceHandle, IFCIMG_ANY.IFIMG_SDRAM_CMP, 100, 100, 1, hSDRAMHandle) : ‘ CmpData 配列に比較用データを格納します。 : ‘ 比較データを指定の SDRAM 領域へ書き込みます。 nRet = IFCIMG_ANY.ImgWriteComparisonData(hDeviceHandle, hSDRAMHandle, CmpData, 10000) ‘ 2 値化の設定を行います。 BinConf.dwColorIngredient = IFCIMG_ANY.IFIMG_INGREDIENT_GRAY BinConf.dwMaxthreshold = 255 BinConf.dwMinthreshold = 128 BinConf.dwBinarizationMode = IFCIMG_ANY.IFIMG_BINMODE_NORMAL ‘ 測定範囲を指定します。 nRet = IFCIMG_ANY.ImgSetBinarizationConfig (hDeviceHandle, BinConf) nRet = IFCIMG_ANY.ImgSetMeasurementRange (hDeviceHandle, 220, 140, 100, 100) ‘ パターン一致条件を設定します。 PtnConfig.dwSDRAMhandle = hSDRAMHandle PtnConfig.dwAutoRevision = IFCIMG_ANY.IFIMG_AUTO_ENABLE PtnConfig.dwXCoordinates = 220 PtnConfig.dwYCoordinates = 140 PtnConfig.dwPercentage = 80 PtnConfig.dwTriggerMode = IFCIMG_ANY.IFIMG_PTNMATCH_NORMAL ‘ パターン一致検出トリガを有効にします。 nRet = IFCIMG_ANY.ImgSetComparisonConfig(hDeviceHandle, PtnConfig) ‘ トリガを無効にする場合は、PtnConfig.dwTriggerMode に ‘ IFCIMG_ANY.IFIMG_PTNMATCH_NONE を指定します。 PtnConfig.dwTriggerMode = IFCIMG_ANY.IFIMG_PTNMATCH_NONE; nRet = IFCIMG_ANY.ImgSetComparisonConfig(hDeviceHandle, PtnConfig) © 2003, 2016 Interface Corporation. All rights reserved. 261 GPC-5520 Help for Windows ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; hSDRAMHandle: Integer; nRet: Integer; CmpData: array[0..9999] of Byte; BinConf: IFCIMG.IMGBINCONFIG; PtnConfig: IFCIMG.IMGPTNCONFIG; lpszName := 'IFIMGPTN1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); : // SDRAM 内に比較用データ領域を確保 nRet := IFCIMG.ImgAllocateSDRAM(hDeviceHandle, IFCIMG.IFIMG_SDRAM_CMP, 100, 100, 1, hSDRAMHandle); : // CmpData 配列に比較データを格納します : // 比較データを SDRAM へ書き込みます nRet := IFCIMG.ImgWriteComparisonData(hDeviceHandle, hSDRAMHandle, 10000); CmpData, // 2値化の設定を行います。 BinConf.dwColorIngredient := IFCIMG.IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold := 255; BinConf.dwMinthreshold := 128; BinConf.dwBinarizationMode := IFCIMG.IFIMG_BINMODE_NORMAL; nRet := IFCIMG.ImgSetBinarizationConfig(hDeviceHandle, &BinConf); // 測定範囲を指定します。 nRet := IFCIMG.ImgSetMeasurementRange(hDeviceHandle, 220, 140, 100, 100); // パターン一致条件を設定します。 PtnConfig.dwSDRAMhandle := hSDRAMHandle; PtnConfig.dwAutoRevision := IFCIMG.IFIMG_AUTO_ENABLE; PtnConfig.dwXCoordinates := 220; PtnConfig.dwYCoordinates := 140; PtnConfig.dwPercentage := 80; PtnConfig.dwTriggerMode := IFCIMG.IFIMG_PTNMATCH_NORMAL; nRet := IFCIMG.ImgSetComparisonConfig(hDeviceHandle, PtnConfig); // トリガを無効にする場合は、PtnConfig.dwTriggerMode に IFIMG_PTNMATCH_NONE // を指定します。 PtnConfig.dwTriggerMode := IFCIMG.IFIMG_PTNMATCH_NONE; nRet := IFCIMG.ImgSetComparisonConfig(hDeviceHandle, PtnConfig); © 2003, 2016 Interface Corporation. All rights reserved. 262 GPC-5520 Help for Windows デバイス名「IFIMGPTN1」のデバイスに対して、SDRAM に 100×100 の比較データ(8bit)を格納 します。 © 2003, 2016 Interface Corporation. All rights reserved. 263 GPC-5520 Help for Windows 33. ImgGetMatchingLevel パターン一致における一致率を取得します。 ※解像度設定が「320×240」または「160×120」の場合、パターン一致機能は使用できません。 【書式】 ●C 言語 INT ImgGetMatchingLevel( HANDLE hDeviceHandle, PDWORD pdwPercentage, PDWORD pdwFrameCnt ); // // // デバイスハンドル 一致率格納用バッファのポインタ フレーム番号格納用バッファポインタ ●Visual Basic Declare Function ImgGetMatchingLevel Lib ByVal hDeviceHandle As Long, _ ‘ ByRef pdwPercentage As Long, _ ‘ ByRef pdwFrameCnt As Long _ ‘ ‘ )As Long "IfImg.dll"( _ デバイスハンドル 一致率格納用バッファの参照渡し フレーム番号格納用バッファの 参照渡し ●Delphi function ImgGetMatchingLevel ( hDeviceHandle: THandle; // デバイスハンドル var pdwPercentage: DWORD; // 一致率格納用バッファのポインタ var pdwFrameCnt: DWORD // フレーム番号格納用バッファポインタ ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgGetMatchingLevel( IntPtr hDeviceHandle, // デバイスハンドル ref uint pdwPercentage, // 一致率格納用バッファのポインタ ref uint pdwFrameCnt // フレーム番号格納用バッファポインタ ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgGetMatchingLevel( uint hDeviceHandle, // デバイスハンドル ref uint pdwPercentage, // 一致率格納用バッファのポインタ ref uint pdwFrameCnt // フレーム番号格納用バッファポインタ ); © 2003, 2016 Interface Corporation. All rights reserved. 264 GPC-5520 Help for Windows ●Visual Basic .NET(x86、x64 共用) Declare Function ImgGetMatchingLevel Lib ByVal hDeviceHandle As IntPtr, ByRef pdwPercentage As Integer, ByRef pdwFrameCnt As Integer "IfImg.DLL"( ‘ デバイスハンドル ‘ 一致率格納用バッファの参照渡し ‘ フレーム番号格納用バッファの参 照渡し )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgGetMatchingLevel Lib ByVal hDeviceHandle As Integer, ByRef pdwPercentage As Integer, ByRef pdwFrameCnt As Integer "IfImg.DLL"( ‘ デバイスハンドル ‘ 一致率格納用バッファの参照渡し ‘ フレーム番号格納用バッファの参 照渡し )As Integer ●Delphi 8 class function ImgGetMatchingLevel hDeviceHandle: Integer; var pdwPercentage: Cardinal; var pdwFrameCnt: Cardinal ): Integer; static; ( // // // デバイスハンドル 一致率格納用バッファのポインタ フレーム番号格納用バッファポインタ 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 pdwPercentage 比較一致率格納用のバッファの先頭ポインタです。 pdwFrameCnt 比較したフレーム番号を格納するバッファの先頭ポインタです。(バスマスタ対応) 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 © 2003, 2016 Interface Corporation. All rights reserved. 265 GPC-5520 Help for Windows 【使用例】 ●C 言語 HANDLE hDeviceHandle; int nRet; HANDLE hSDRAMHandle BYTE CmpData[10000]; IMGPTNCONFIG PtnConfig; IMGBINCONFIG BinConf; DWORD dwPerCentage; DWORD dwFrameCnt; hDeviceHandle = ImgOpen(“IFIMGPTN1”); : // SDRAM 内に比較用データ領域を確保 nRet = ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_CMP, 100, 100, 1, &hSDRAMHandle); : // CmpData 配列に比較データを格納します。 : // 比較データを SDRAM へ書き込みます。 nRet = ImgWriteComparisonData(hDeviceHandle, hSDRAMHandle, CmpData, 10000); // 2 値化の設定を行います。 BinConf.dwColorIngredient = IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold = 255; BinConf.dwMinthreshold = 128; BinConf.dwBinarizationMode = IFIMG_BINMODE_NORMAL; nRet = ImgSetBinarizationConfig(hDeviceHandle, &BinConf); // 測定範囲を指定します。 nRet = ImgSetMeasurementRange(hDeviceHandle, 220, 140, 100, 100); // パターン一致条件を設定します。 PtnConfig.dwSDRAMhandle = hSDRAMHandle; PtnConfig.dwAutoRevision = IFIMG_AUTO_ENABLE; PtnConfig.dwXCoordinates = 220; PtnConfig.dwYCoordinates = 140; PtnConfig.dwPercentage = 80; PtnConfig.dwTriggerMode = IFIMG_PTNMATCH_NORMAL; nRet = ImgSetComparisonConfig(hDeviceHandle, &PtnConfig); // キャプチャ開始 : // 一致率を取得します。 nRet = ImgGetMatchingLevel(hDeviceHandle, &dwPerCentage, &dwFrameCnt); © 2003, 2016 Interface Corporation. All rights reserved. 266 GPC-5520 Help for Windows ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim hSDRAMHandle As Long Dim nRet As Long Dim CmpData (10000) As Byte Dim BinConf As IMGBINCONFIG Dim PtnConfig As IMGPTNCONFIG Dim dwPerCentage As Long Dim dwFrameCnt As Long lpszName = “IFIMGPTN1” hDeviceHandle = ImgOpen(lpszName) : ‘ SDRAM 内に比較用データ領域を確保 nRet = ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_CMP, 100, 100, 1, hSDRAMHandle) : ‘ CmpData 配列に比較用データを格納します。 : ‘ 比較データを指定の SDRAM 領域へ書き込みます。 nRet = ImgWriteComparisonData(hDeviceHandle, hSDRAMHandle, CmpData, 10000) ‘ 2 値化の設定を行います。 BinConf.dwColorIngredient = IFIMG_INGREDIENT_GRAY BinConf.dwMaxthreshold = 255 BinConf.dwMinthreshold = 128 BinConf.dwBinarizationMode = IFIMG_BINMODE_NORMAL nRet = ImgSetBinarizationConfig (hDeviceHandle, BinConf) nRet = ImgSetMeasurementRange (hDeviceHandle, 220, 140, 100, 100) ‘ パターン一致条件を設定します。 PtnConfig.dwSDRAMhandle = hSDRAMHandle PtnConfig.dwAutoRevision = IFIMG_AUTO_ENABLE PtnConfig.dwXCoordinates = 220 PtnConfig.dwYCoordinates = 140 PtnConfig.dwPercentage = 80 PtnConfig.dwTriggerMode = IFIMG_PTNMATCH_NORMAL nRet = ImgSetComparisonConfig(hDeviceHandle, PtnConfig) ‘ キャプチャ開始 : ‘ 一致率を取得します。 nRet = ImgGetMatchingLevel(hDeviceHandle, dwPerCentage, dwFrameCnt) © 2003, 2016 Interface Corporation. All rights reserved. 267 GPC-5520 Help for Windows ●Delphi var lpszName: String; hDeviceHandle: THandle; hSDRAMHandle: THandle; nRet: Integer; CmpData: array[0..9999] of BYTE dwPerCentage; DWORD: dwFrameCnt; DWORD; lpszName := 'IFIMGPTN1'; hDeviceHandle := ImgOpen(lpszName); : // SDRAM 内に比較用データ領域を確保 nRet := ImgAllocateSDRAM(hDeviceHandle, IFIMG_SDRAM_CMP, 100, 100, 1, hSDRAMHandle); : // CmpData 配列に比較データを格納します : // 比較データを SDRAM へ書き込みます nRet := ImgWriteComparisonData(hDeviceHandle, hSDRAMHandle, CmpData, 10000); // 2 値化の設定を行います。 BinConf.dwColorIngredient := IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold := 255; BinConf.dwMinthreshold := 128; BinConf.dwBinarizationMode := IFIMG_BINMODE_NORMAL; nRet := ImgSetBinarizationConfig(hDeviceHandle, &BinConf); // 測定範囲を指定します。 nRet := ImgSetMeasurementRange(hDeviceHandle, 220, 140, 100, 100); // パターン一致条件を設定します。 PtnConfig.dwSDRAMhandle := hSDRAMHandle; PtnConfig.dwAutoRevision := IFIMG_AUTO_ENABLE; PtnConfig.dwXCoordinates := 220; PtnConfig.dwYCoordinates := 140; PtnConfig.dwPercentage := 80; PtnConfig.dwTriggerMode := IFIMG_PTNMATCH_NORMAL; nRet := ImgSetComparisonConfig(hDeviceHandle, PtnConfig); // キャプチャ開始 : // 一致率を取得します。 nRet := ImgGetMatchingLevel(hDeviceHandle, dwPerCentage, dwFrameCnt); © 2003, 2016 Interface Corporation. All rights reserved. 268 GPC-5520 Help for Windows ●Visual C# .NET IntPtr hDeviceHandle; int nRet; IntPtr hSDRAMHandle byte CmpData[10000]; IFCIMG_ANY.IMGPTNCONFIG PtnConfig; IFCIMG_ANY.IMGBINCONFIG BinConf; uint dwPerCentage; uint dwFrameCnt; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGPTN1”); : // SDRAM 内に比較用データ領域を確保 nRet = IFCIMG_ANY.ImgAllocateSDRAM(hDeviceHandle, IFCIMG_ANY.IFIMG_SDRAM_CMP, 100, 100, 1, out hSDRAMHandle); : // CmpData 配列に比較データを格納します。 : // 比較データを SDRAM へ書き込みます。 nRet = IFCIMG_ANY.ImgWriteComparisonData(hDeviceHandle, hSDRAMHandle, CmpData, 10000); // 2 値化の設定を行います。 BinConf.dwColorIngredient = IFCIMG_ANY.IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold = 255; BinConf.dwMinthreshold = 128; BinConf.dwBinarizationMode = IFCIMG_ANY.IFIMG_BINMODE_NORMAL; nRet = IFCIMG_ANY.ImgSetBinarizationConfig(hDeviceHandle, ref BinConf); // 測定範囲を指定します。 nRet = IFCIMG_ANY.ImgSetMeasurementRange(hDeviceHandle, 220, 140, 100, 100); // パターン一致条件を設定します。 PtnConfig.dwSDRAMhandle = hSDRAMHandle; PtnConfig.dwAutoRevision = IFCIMG_ANY.IFIMG_AUTO_ENABLE; PtnConfig.dwXCoordinates = 220; PtnConfig.dwYCoordinates = 140; PtnConfig.dwPercentage = 80; PtnConfig.dwTriggerMode = IFCIMG_ANY.IFIMG_PTNMATCH_NORMAL; nRet = IFCIMG_ANY.ImgSetComparisonConfig(hDeviceHandle, ref PtnConfig); // キャプチャ開始 : // 一致率を取得します。 nRet = IFCIMG_ANY.ImgGetMatchingLevel(hDeviceHandle, out dwPerCentage, out dwFrameCnt); © 2003, 2016 Interface Corporation. All rights reserved. 269 GPC-5520 Help for Windows ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim hSDRAMHandle As IntPtr Dim nRet As Integer Dim CmpData (10000) As Byte Dim BinConf As IFCIMG_ANY.IMGBINCONFIG Dim PtnConfig As IFCIMG_ANY.IMGPTNCONFIG Dim dwPerCentage As Integer Dim dwFrameCnt As Integer lpszName = “IFIMGPTN1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : ‘ SDRAM 内に比較用データ領域を確保 nRet = IFCIMG_ANY.ImgAllocateSDRAM(hDeviceHandle, IFCIMG_ANY.IFIMG_SDRAM_CMP, 100, 100, 1, hSDRAMHandle) : ‘ CmpData 配列に比較用データを格納します。 : ‘ 比較データを指定の SDRAM 領域へ書き込みます。 nRet = IFCIMG_ANY.ImgWriteComparisonData(hDeviceHandle, hSDRAMHandle, CmpData, 10000) ‘ 2 値化の設定を行います。 BinConf.dwColorIngredient = IFCIMG_ANY.IFIMG_INGREDIENT_GRAY BinConf.dwMaxthreshold = 255 BinConf.dwMinthreshold = 128 BinConf.dwBinarizationMode = IFCIMG_ANY.IFIMG_BINMODE_NORMAL nRet = IFCIMG_ANY.ImgSetBinarizationConfig(hDeviceHandle, BinConf) nRet = IFCIMG_ANY.ImgSetMeasurementRange(hDeviceHandle, 220, 140, 100, 100) ‘ パターン一致条件を設定します。 PtnConfig.dwSDRAMhandle = hSDRAMHandle PtnConfig.dwAutoRevision = IFCIMG_ANY.IFIMG_AUTO_ENABLE PtnConfig.dwXCoordinates = 220 PtnConfig.dwYCoordinates = 140 PtnConfig.dwPercentage = 80 PtnConfig.dwTriggerMode = IFCIMG_ANY.IFIMG_PTNMATCH_NORMAL nRet = IFCIMG_ANY.ImgSetComparisonConfig(hDeviceHandle, PtnConfig) ‘ キャプチャ開始 : ‘ 一致率を取得します。 nRet = IFCIMG_ANY.ImgGetMatchingLevel(hDeviceHandle, dwPerCentage, dwFrameCnt) © 2003, 2016 Interface Corporation. All rights reserved. 270 GPC-5520 Help for Windows ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; hSDRAMHandle: Integer; nRet: Integer; CmpData: array[0..9999] of Byte; BinConf: IFCIMG.IMGBINCONFIG; PtnConfig: IFCIMG.IMGPTNCONFIG; lpszName := 'IFIMGPTN1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); : // SDRAM 内に比較用データ領域を確保 nRet := IFCIMG.ImgAllocateSDRAM(hDeviceHandle, IFCIMG.IFIMG_SDRAM_CMP, 100, 100, 1, hSDRAMHandle); : // CmpData 配列に比較データを格納します : // 比較データを SDRAM へ書き込みます nRet := IFCIMG.ImgWriteComparisonData(hDeviceHandle, hSDRAMHandle, 10000); CmpData, // 2 値化の設定を行います。 BinConf.dwColorIngredient := IFCIMG.IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold := 255; BinConf.dwMinthreshold := 128; BinConf.dwBinarizationMode := IFCIMG.IFIMG_BINMODE_NORMAL; nRet := IFCIMG.ImgSetBinarizationConfig(hDeviceHandle, BinConf); // 測定範囲を指定します。 nRet := IFCIMG.ImgSetMeasurementRange(hDeviceHandle, 220, 140, 100, 100); // パターン一致条件を設定します。 PtnConfig.dwSDRAMhandle := hSDRAMHandle; PtnConfig.dwAutoRevision := IFCIMG.IFIMG_AUTO_ENABLE; PtnConfig.dwXCoordinates := 220; PtnConfig.dwYCoordinates := 140; PtnConfig.dwPercentage := 80; PtnConfig.dwTriggerMode := IFCIMG.IFIMG_PTNMATCH_NORMAL; nRet := IFCIMG.ImgSetComparisonConfig(hDeviceHandle, PtnConfig); // トリガを無効にする場合は、PtnConfig.dwTriggerMode に IFIMG_PTNMATCH_NONE を指定し // ます。 PtnConfig.dwTriggerMode := IFCIMG.IFIMG_PTNMATCH_NONE; nRet := IFCIMG.ImgSetComparisonConfig(hDeviceHandle, PtnConfig); デバイス名「IFIMGPTN1」のデバイスに対して、一致率を取得します。 © 2003, 2016 Interface Corporation. All rights reserved. 271 GPC-5520 Help for Windows 34. ImgSetColorIngredient 画像処理するカメラ画像の色成分を指定します。 対象画像処理は濃度分布、3×3 空間エッジ検出フィルタ、3×3 差分型エッジ検出フィルタ。 【書式】 ●C 言語 INT ImgSetColorIngredient ( HANDLE hDeviceHandle, DWORD dwIngredient ); // // ファイルパス 色成分 ●Visual Basic Declare Function ImgSetColorIngredient Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByVal dwIngredient As Long _ ‘ 色成分 )As Long ●Delphi function ImgSetColorIngredient ( hDeviceHandle: THandle; dwIngredient: DWORD ): Integer; stdcall; external 'IfImg.dll'; // // デバイスハンドル 色成分 ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetColorIngredient ( IntPtr hDeviceHandle, // ファイルパス uint dwIngredient // 色成分 ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetColorIngredient ( uint hDeviceHandle, // ファイルパス uint dwIngredient // 色成分 ); ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetColorIngredient Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByVal dwIngredient As Integer ‘ 色成分 )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 272 GPC-5520 Help for Windows ●Visual Basic .NET(x86 専用) Declare Function ImgSetColorIngredient Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByVal dwIngredient As Integer ‘ 色成分 )As Integer ●Delphi 8 class function ImgSetColorIngredient ( hDeviceHandle: Integer; dwIngredient: Cardinal ): Integer; static; // // デバイスハンドル 色成分 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 dwIngredient 色成分を指定します。 識別子 IFIMG_INGREDIENT_RED IFIMG_INGREDIENT_GREEN IFIMG_INGREDIENT_BLUE IFIMG_INGREDIENT_GRAY 値 00000001h 00000002h 00000003h 00000004h 意味 赤成分 緑成分 青成分 グレイスケール(輝度成分) 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 【備考】 2 値化設定を同時に行なう場合は、ImgSetBinarizationConfig 関数で指定する 2 値化対象色成 分と同じ色成分にしてください。 IMGBINCONFIG 構造体のメンバ引数 dwColorIngredient の色指定情報と同じ設定値にしてくだ さい。 【使用例】 ●C 言語 HANDLE hDeviceHandle; int nRet; hDeviceHandle = ImgOpen(“IFIMGMSR1”); : : nRet = ImgSetColorIngredient(hDeviceHandle, IFIMG_INGREDIENT_RED); © 2003, 2016 Interface Corporation. All rights reserved. 273 GPC-5520 Help for Windows ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim nRet As Long lpszName = “IFIMGMSR1” hDeviceHandle = ImgOpen(lpszName) : : nRet = ImgSetColorIngredient(hDeviceHandle, IFIMG_INGREDIENT_RED) ●Delphi var lpszName: String; hDeviceHandle: THandle; nRet: Integer; lpszName := 'IFIMGMSR1'; hDeviceHandle := ImgOpen(lpszName); : : nRet = ImgSetColorIngredient(hDeviceHandle, IFIMG_INGREDIENT_RED); ●Visual C# .NET IntPtr hDeviceHandle; int nRet; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGMSR1”); : : nRet = IFCIMG_ANY.ImgSetColorIngredient(hDeviceHandle, IFCIMG_ANY.IFIMG_INGREDIENT_RED); ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim nRet As Integer lpszName = “IFIMGMSR1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : : nRet = IFCIMG_ANY.ImgSetColorIngredient(hDeviceHandle,_ IFCIMG_ANY.IFIMG_INGREDIENT_RED) © 2003, 2016 Interface Corporation. All rights reserved. 274 GPC-5520 Help for Windows ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; nRet: Integer; lpszName := 'IFIMGMSR1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); : : nRet = IFCIMG.ImgSetColorIngredient(hDeviceHandle, IFCIMG.IFIMG_INGREDIENT_RED); デバイス名「IFIMGMSR1」のデバイスに対して、画像処理を行なう成分を赤色成分に指定しま す。 © 2003, 2016 Interface Corporation. All rights reserved. 275 GPC-5520 Help for Windows 35. ImgGetMeasurementValueEx 面積値、重心座標、フェレ径、慣性主軸の角度を取得します。 キャプチャ中に呼び出した場合、フレーム番号も取得します。 ※解像度の設定が「320×240」または「160×120」の場合、本関数は実行できません。 【書式】 ●C 言語 INT ImgGetMeasurementValueEx( HANDLE hDeviceHandle, PIMGMEASURE pImgMeaSure, PDWORD pFrameNum ); // デバイスハンドル // IMGMEASURE 構造体 // フレーム番号 ●Visual Basic Declare Function ImgGetMeasurementValueEx Lib "IfImg.dll"( _ ByVal hDeviceHandle, As Long, _ ‘ デバイスハンドル RyRef pImgMeaSure, As PIMGMEASURE, _ ‘ IMGMEASURE 構造体 ByRef pFrameNum As Long _ ‘ フレーム番号 )As Long ●Delphi function ImgGetMeasurementValueEx ( hDeviceHandle: THandle; var pImgMeasure: PIMGMEASURE; var pFrameNum DWORD ): Integer; stdcall; external 'IfImg.dll'; // デバイスハンドル // IMGMEASURE 構造体 // フレーム番号 ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgGetMeasurementValueEx( IntPtr hDeviceHandle, // デバイスハンドル out IMGMEASUE pImgMeasure, // IMGMEASUE 構造体 out uint pFrameNum // フレーム番号 ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgGetMeasurementValueEx( uint hDeviceHandle, // デバイスハンドル out IMGMEASUE pImgMeasure, // IMGMEASUE 構造体 out uint pFrameNum // フレーム番号 ); © 2003, 2016 Interface Corporation. All rights reserved. 276 GPC-5520 Help for Windows ●Visual Basic .NET(x86、x64 共用) Declare Function ImgGetMeasurementValueEx Lib "IfImg.DLL"( ByVal hDeviceHandle, As IntPtr, ‘ デバイスハンドル RyRef pImgMeasure, As PIMGMEASUE, ‘ IMGMEASUE 構造体 ByRef pFrameNum As Integer ‘ フレーム番号 )As Long ●Visual Basic .NET(x86 専用) Declare Function ImgGetMeasurementValueEx Lib "IfImg.DLL"( ByVal hDeviceHandle, As Integer, ‘ デバイスハンドル RyRef pImgMeasure, As PIMGMEASUE, ‘ IMGMEASUE 構造体 ByRef pFrameNum As Integer ‘ フレーム番号 )As Long ●Delphi 8 class function ImgGetMeasurementValueEx ( hDeviceHandle: Integer; var pImgMeasure: PIMGMEASURE; var pFrameNum Cardinal ): Integer; static; // デバイスハンドル // IMGMEASURE 構造体 // フレーム番号 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 pImgMeasure IMGMEASURE 構造体へのポインタを指定してください。 構造体の説明については、『4.4 構造体』をご参照ください。 pFrameNum フレーム番号を格納するバッファポインタを指定してください。 キャプチャ未実行の状態で本関数を呼び出した場合は、0 が格納されます。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 © 2003, 2016 Interface Corporation. All rights reserved. 277 GPC-5520 Help for Windows 【使用例】 ●C 言語 HANDLE hDeviceHandle; IMGMEASURE pMeasure; IMGBINCONFIG pBinConf; DWORD dwFrameNum; int nRet; hDeviceHandle = ImgOpen(“IFIMGMSR1”); : pBinConf.dwColorIngredient = IFIMG_INGREDIENT_GRAY; pBinConf.dwMaxthreshold = 255; pBinConf.dwMinthreshold = 128; pBinConf.dwBinarizationMode = IFIMG_BINMODE_NORMAL; : nRet = ImgSetBinarizationConfig(hDeviceHandle, &pBinConf); : nRet = ImgSetMeasurementRange(hDeviceHandle, 0, 0, 320, 240); nRet = ImgGetMeasurementValueEx (hDeviceHandle, &pMeasure, &dwFrameNum); ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim pMeasure As IMGMEASURE Dim dwFrameNum As Long Dim pBinConf As IMGBINCONFIG Dim nRet As Long lpszName = “IFIMGMSR1” hDeviceHandle = ImgOpen(lpszName) : pBinConf.dwColorIngredient = IFIMG_INGREDIENT_GRAY pBinConf.dwMaxthreshold = 255 pBinConf.dwMinthreshold = 128 pBinConf.dwBinarizationMode = IFIMG_BINMODE_NORMAL : nRet = ImgSetBinarizationConfig (hDeviceHandle, pBinConf) : nRet = ImgSetMeasurementRange (hDeviceHandle, 0, 0, 320, 240) : nRet = ImgGetMeasurementValueEx (hDeviceHandle, pMeasure, dwFrameNum) © 2003, 2016 Interface Corporation. All rights reserved. 278 GPC-5520 Help for Windows ●Delphi var lpszName: String; hDeviceHandle: THandle; pMeasure: IMGMEASURE dwFrameNum: DWORD nRet: Integer; pBinConf: IMGBINCONFIG; lpszName := 'IFIMGMSR1'; hDeviceHandle := ImgOpen(lpszName); : pBinConf.dwColorIngredient := IFIMG_INGREDIENT_GRAY; pBinConf.dwMaxthreshold := 255; pBinConf.dwMinthreshold := 128; pBinConf.dwBinarizationMode := IFIMG_BINMODE_NORMAL; nRet := ImgSetBinarizationConfig(hDeviceHandle, pBinConf); : : nRet := ImgSetEventMask(hDeviceHandle, 0, 0, 320, 240); : nRet := ImgGetMeasurementValueEx (hDeviceHandle, pMeasure, dwFrameNum); ●Visual C# .NET IntPtr hDeviceHandle; IFCIMG_ANY.IMGMEASURE Measure; IFCIMG_ANY.IMGBINCONFIG pBinConf; uint dwFrameNum; int nRet; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGMSR1”); : pBinConf.dwColorIngredient = IFCIMG_ANY.IFIMG_INGREDIENT_GRAY; pBinConf.dwMaxthreshold = 255; pBinConf.dwMinthreshold = 128; pBinConf.dwBinarizationMode = IFCIMG_ANY.IFIMG_BINMODE_NORMAL; : nRet = IFCIMG_ANY.ImgSetBinarizationConfig(hDeviceHandle, ref pBinConf); : nRet = IFCIMG_ANY.ImgSetMeasurementRange(hDeviceHandle, 0, 0, 320, 240); : nRet = IFCIMG_ANY.ImgGetMeasurementValueEx(hDeviceHandle, out Measure, out dwFrameNum); © 2003, 2016 Interface Corporation. All rights reserved. 279 GPC-5520 Help for Windows ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim Measure As IFCIMG_ANY.IMGMEASURE Dim pBinConf As IFCIMG_ANY.IMGBINCONFIG Dim dwFrameNum As Integer; Dim nRet As Integer lpszName = “IFIMGMSR1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : pBinConf.dwColorIngredient = IFCIMG_ANY.IFIMG_INGREDIENT_GRAY pBinConf.dwMaxthreshold = 255 pBinConf.dwMinthreshold = 128 pBinConf.dwBinarizationMode = IFCIMG_ANY.IFIMG_BINMODE_NORMAL : nRet = IFCIMG_ANY.ImgSetBinarizationConfig(hDeviceHandle, pBinConf) : nRet = IFCIMG_ANY.ImgSetMeasurementRange(hDeviceHandle, 0, 0, 320, 240) : nRet = IFCIMG_ANY.ImgGetMeasurementValueEx (hDeviceHandle, Measure, dwFrameNum) ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; pMeasure: IFCIMG.IMGMEASURE; dwFrameNum: Cardinal; nRet: Integer; pBinConf: IFCIMG.IMGBINCONFG; lpszName := 'IFIMGMSR1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); : pBinConf.dwColorIngredient := IFCIMG.IFIMG_INGREDIENT_GRAY; pBinConf.dwMaxthreshold := 255; pBinConf.dwMinthreshold := 128; pBinConf.dwBinarizationMode := IFCIMG.IFIMG_BINMODE_NORMAL; nRet := IFCIMG.ImgSetBinarizationConfig(hDeviceHandle, pBinConf); : : nRet := IFCIMG.ImgSetEventMask(hDeviceHandle, 0, 0, 320, 240); : nRet := IFCIMG.ImgGetMeasurementValueEx(hDeviceHandle, pMeasure, dwFrameNum); © 2003, 2016 Interface Corporation. All rights reserved. 280 GPC-5520 Help for Windows デバイス名「IFIMGMSR1」のデバイスに対して、2 値化処理設定を行います。 2 値化対象の色成分を輝度成分、上限しきい値を 255、下限しきい値を 128、上限と下限の間の 場合、2 値化データを 0xFF にします。 面積値、重心値を求める為の測定範囲を指定します。開始点(0,0)(左上)とし、開始点からの X 方向を 320、Y 方向を 240 とした測定範囲を設定します。 その後、面積値、重心値、フェレ径、慣性等価楕円の傾き角を取得します。 キャプチャ中に ImgGetMeasurementValueEx 関数を実行した場合、フレーム数を取得します。 dwFrameNum の値で何フレーム目のデータに対して測定を行ったのか、知ることができます。 ※キャプチャを実行せずともカメラ等に接続している限り、取り込んでいるフレームデータに 対して、面積値、重心値を取得することも可能です。ただし、dwFrameNum の値は無効なデータ です。 © 2003, 2016 Interface Corporation. All rights reserved. 281 GPC-5520 Help for Windows 36. ImgSetConversionConfig 階調変換処理、フィルタ処理、膨張・収縮処理の有効/無効を設定します。 各画像処理後の画像をキャプチャする場合は、有効に設定します。 【書式】 ●C 言語 INT ImgSetConversionConfig( HANDLE hDeviceHandle, DWORD dwCnvEnabled ); // // デバイスハンドル 画像処理有効設定 ●Visual Basic Declare Function ImgSetConversionConfig Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル RyVal dwCnvEnabled As Long _ ‘ 画像処理有効設定 )As Long ●Delphi function ImgSetConversionConfig( hDeviceHandle: THandle; // dwCnvEnabled: DWORD // ): Integer; stdcall; external 'IfImg.dll'; デバイスハンドル 画像処理有効設定 ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetConversionConfig( IntPtr hDeviceHandle, // デバイスハンドル uint dwCnvEnabled // 画像処理有効設定 ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetConversionConfig( uint hDeviceHandle, // デバイスハンドル uint dwCnvEnabled // 画像処理有効設定 ); ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetConversionConfig Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル RyVal dwCnvEnabled As Integer ‘ 画像処理有効設定 )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 282 GPC-5520 Help for Windows ●Visual Basic .NET(x86 専用) Declare Function ImgSetConversionConfig Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル RyVal dwCnvEnabled As Integer ‘ 画像処理有効設定 )As Integer ●Delphi 8 class function ImgSetConversionConfig( hDeviceHandle: Integer; dwCnvEnabled: Cardinal ): Integer; static; // // デバイスハンドル 画像処理有効設定 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 dwCnvEnabled 階調変換処理、フィルタ処理、膨張・収縮処理の有効/無効を選択します。 ビット 内容 bit31~bit3 予約 bit2 膨張・収縮処理 1:有効 0:無効 bit1 フィルタ処理 1:有効 0:無効 bit0 階調変換 1:有効 0:無効 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 【使用例】 ●C 言語 int nRet; HANDLE hDeviceHandle; hDeviceHandle = ImgOpen("IFIMGCNV1"); // 階調変換、フィルタ処理、膨張・収縮有効 nRet = ImgSetConversionConfig(hDeviceHandle, 0x07); © 2003, 2016 Interface Corporation. All rights reserved. 283 GPC-5520 Help for Windows ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim nRet As Long lpszName = “IFIMGCNV1” hDeviceHandle = ImgOpen(lpszName) ' 階調変換、フィルタ処理、膨張・収縮有効 nRet = ImgSetConversionConfig(hDeviceHandle, &H07) ●Delphi var lpszName: String; hDeviceHandle: THandle; nRet: Integer; begin lpszName := 'IFIMGCNV1'; hDeviceHandle := ImgOpen(lpszName); // 階調変換、フィルタ処理、膨張・収縮有効 nRet := ImgSetConversionConfig(hDeviceHandle, $07); ●Visual C# .NET int nRet; IntPtr hDeviceHandle; hDeviceHandle = IFCIMG_ANY.ImgOpen("IFIMGCNV1"); // 階調変換、フィルタ処理、膨張・収縮有効 nRet = IFCIMG_ANY.ImgSetConversionConfig(hDeviceHandle, 0x07); ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim nRet As Integer lpszName = “IFIMGCNV1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) ' 階調変換、フィルタ処理、膨張・収縮有効 nRet = IFCIMG_ANY.ImgSetConversionConfig(hDeviceHandle, &H07) © 2003, 2016 Interface Corporation. All rights reserved. 284 GPC-5520 Help for Windows ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; nRet: Integer; begin lpszName := 'IFIMGCNV1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); // 階調変換、フィルタ処理、膨張・収縮有効 nRet := IFCIMG.ImgSetConversionConfig(hDeviceHandle, $07); デバイス名「IFIMGCNV1」のデバイスに対して、階調変換、フィルタ処理、膨張・収縮処理を有 効にします。 © 2003, 2016 Interface Corporation. All rights reserved. 285 GPC-5520 Help for Windows 37. ImgSetLUT 指定した色成分に対する階調変換テーブルを設定します。 【書式】 ●C 言語 INT ImgSetLUT( HANDLE PIMGLUTINFO ); hDeviceHandle, pLutinfo // // デバイスハンドル 階調変換テーブル ●Visual Basic Declare Function ImgSetLUT Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ RyRef pLutinfo As IMGLUTINFO _ )As Long ‘ ‘ デバイスハンドル 階調変換テーブル ●Delphi function ImgSetLUT ( hDeviceHandle: var pLutinfo: THandle; IMGLUTINFO ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetLUT( IntPtr hDeviceHandle, ref IMGLUTINFO pLutinfo ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetLUT( uint hDeviceHandle, ref IMGLUTINFO pLutinfo ); // // デバイスハンドル 階調変換テーブル // デバイスハンドル // IMGLUTINFO 構造体のポインタ // デバイスハンドル // IMGLUTINFO 構造体のポインタ ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetLUT Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ RyRef pLutinfo As IMGLUTINFO ‘ )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgSetLUT Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ RyRef pLutinfo As IMGLUTINFO ‘ )As Integer デバイスハンドル IMGLUTINFO 構造体への参照渡し デバイスハンドル IMGLUTINFO 構造体への参照渡し © 2003, 2016 Interface Corporation. All rights reserved. 286 GPC-5520 Help for Windows ●Delphi 8 class function ImgSetLUT ( hDeviceHandle: Integer; var pLutinfo: IMGLUTINFO ): Integer; static; // デバイスハンドル // IMGLUTINFO 構造体への参照渡し 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 pLutinfo IMGLUTINFO 構造体へのポインタを指定してください。 構造体の説明については、『4.4 構造体』をご参照ください。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 © 2003, 2016 Interface Corporation. All rights reserved. 287 GPC-5520 Help for Windows 【使用例】 ●C 言語 int nRet; int i,j; HANDLE hDeviceHandle; PBYTE pSrcBuf; DWORD dwBufSise; IMGCAPSTATUS Status; IMGBUFFERINFO BufInfo; IMGLUTINFO LUTInfo; hDeviceHandle = ImgOpen("IFIMGCNV1"); // 階調変換テーブルの設定 (明度を反転する) for(i=0, j=255; i<256; i++,j-- ){ LUTInfo.rgbBlue[i] = j; LUTInfo.rgbGreen[i] = j; LUTInfo.rgbRed[i] = j; } nRet = ImgSetLUT(hDeviceHandle, &LUTInfo); // 階調変換処理有効 nRet = ImgSetConversionConfig(hDeviceHandle, 0x01); // RGB24bit 画像領域確保 dwBufSise = 640*480*3; pSrcBuf = (PBYTE)malloc(dwBufSise); // 画像情報を設定 BufInfo.pBufferAddress = pSrcBuf; BufInfo.dwBufferSize = dwBufSise; nRet=ImgSetBuffer(hDeviceHandle,&BufInfo, IFIMG_COLOR_RGB24); // 1 フレームキャプチャ開始 nRet = ImgStartCapture(hDeviceHandle,1, IFIMG_DMACAPTURE_START); // 完了まで待つ。 do{ nRet = ImgGetCaptureStatus(hDeviceHandle, &Status); }while(Status.dwCapture & 0x01); © 2003, 2016 Interface Corporation. All rights reserved. 288 GPC-5520 Help for Windows ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim Status As IMGCAPSTATUS Dim LUTInfo As IMGLUTINFO Dim nRet As Long Dim buffer(921600) As Byte Dim buffersize As Long Dim i As Long Dim j As Long lpszName = "IFIMGCNV1" hDeviceHandle = ImgOpen(lpszName) ' 階調変換テーブルの設定 (明度を反転する) j = 255 For i = 0 To 255 LUTInfo.rgbBlue(i) = j LUTInfo.rgbGreen(i) = j LUTInfo.rgbRed(i) = j j = j - 1 Next nRet = ImgSetLUT(hDeviceHandle, LUTInfo) ' 階調変換処理有効 nRet = ImgSetConversionConfig(hDeviceHandle, &H1) buffersize = 921600 nRet = ImgSetBufferVB(hDeviceHandle, buffer(0), buffersize, IFIMG_COLOR_RGB24) ' 1 フレームキャプチャ開始 nRet = ImgStartCapture(hDeviceHandle, 1, IFIMG_DMACAPTURE_START) ' キャプチャ完了まで待つ Do nRet = ImgGetCaptureStatus(hDeviceHandle, Status) Loop While Status.dwCapture And &H1 © 2003, 2016 Interface Corporation. All rights reserved. 289 GPC-5520 Help for Windows ●Delphi var lpszName: String; hDeviceHandle: THandle; nRet: Integer; i: Integer; pSrcBuf: Pointer; dwSize: DWORD; Status: IMGCAPSTATUS; BufInfo: IMGBUFFERINFO; LUTInfo: IMGLUTINFO; begin lpszName := 'IFIMGCNV1'; hDeviceHandle := ImgOpen(lpszName); // 階調変換テーブルの設定 (明度を反転する) for i := 0 to 255 do begin with LUTInfo do begin rgbBlue[i] := 255 - i; rgbGreen[i] := 255 - i; rgbRed[i] := 255 - i; end; end; nRet := ImgSetLUT(hDeviceHandle, LUTInfo); // 階調変換処理有効 nRet := ImgSetConversionConfig (hDeviceHandle, $01); // RGB24bit 画像領域確保 dwSize := 640*480*3; pSrcBuf := AllocMem(dwSize); // 画像情報を設定 BufInfo.pBufferAddress := pSrcBuf; BufInfo.dwBufferSize := dwSize; nRet := ImgSetBuffer(hDeviceHandle, BufInfo, IFIMG_COLOR_RGB24); // 1 フレームキャプチャ開始 nRet := ImgStartCapture(hDeviceHandle,1, IFIMG_DMACAPTURE_START); // 完了まで待つ repeat nRet := ImgGetCaptureStatus(hDeviceHandle, Status); until (Status.dwCapture and $01) <> $01; © 2003, 2016 Interface Corporation. All rights reserved. 290 GPC-5520 Help for Windows ●Visual C# .NET int nRet; int i,j; IntPtr hDeviceHandle; IntPtr pSrcBuf; uint dwBufSise; IFCIMG_ANY.IMGCAPSTATUS Status; IFCIMG_ANY.IMGBUFFERINFO BufInfo; IFCIMG_ANY.IMGLUTINFO LUTInfo; // オープン処理 hDeviceHandle = IFCIMG_ANY.ImgOpen("IFIMGCNV1"); // 階調変換テーブルの設定 (明度を反転する) for(i=0, j=255; i<256; i++,j-- ){ LUTInfo.rgbBlue[i] = j; LUTInfo.rgbGreen[i] = j; LUTInfo.rgbRed[i] = j; } nRet = IFCIMG_ANY.ImgSetLUT(hDeviceHandle, ref LUTInfo); // 階調変換処理有効 nRet = IFCIMG_ANY.ImgSetConversionConfig(hDeviceHandle, 0x01); // RGB24bit 画像領域確保 dwBufSise = 640*480*3; pSrcBuf = Marshal.AllocCoTaskMem((int)dwBufSise); // 画像情報を設定 BufInfo.pBufferAddress = pSrcBuf; BufInfo.dwBufferSize = dwBufSise; nRet = IFCIMG_ANY.ImgSetBuffer(hDeviceHandle, ref BufInfo, IFCIMG_ANY.IFIMG_COLOR_RGB24); // 1 フレームキャプチャ開始 nRet = IFCIMG_ANY.ImgStartCapture(hDeviceHandle,1, IFCIMG_ANY.IFIMG_DMACAPTURE_START); // 完了まで待つ do{ nRet = IFCIMG_ANY.ImgGetCaptureStatus(hDeviceHandle, out Status); }while(Status.dwCapture & 0x01); © 2003, 2016 Interface Corporation. All rights reserved. 291 GPC-5520 Help for Windows ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim Status As IFCIMG_ANY.IMGCAPSTATUS Dim LUTInfo As IFCIMG_ANY.IMGLUTINFO Dim nRet As Long Dim buffer(921600) As byte Dim buffersize As Integer Dim i As Integer Dim j As Integer lpszName = “IFIMGCNV1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) ' 階調変換テーブルの設定 (明度を反転する) j = 255 For i = 0 To 255 LUTInfo.rgbBlue(i) = j LUTInfo.rgbGreen(i) = j LUTInfo.rgbRed(i) = j j = j – 1 Next nRet = IFCIMG_ANY.ImgSetLUT(hDeviceHandle, LUTInfo) ' 階調変換処理有効 nRet = IFCIMG_ANY.ImgSetConversionConfig(hDeviceHandle, &H1) buffersize = 921600 nRet = IFCIMG_ANY.ImgSetBufferVB(_ hDeviceHandle, buffer, buffersize, IFCIMG_ANY.IFIMG_COLOR_RGB24) ' 1 フレームキャプチャ開始 nRet = IFCIMG_ANY.ImgStartCapture(hDeviceHandle,1, IFCIMG_ANY.IFIMG_DMACAPTURE_START) ' キャプチャ完了まで待つ Do nRet = IFCIMG_ANY.ImgGetCaptureStatus(hDeviceHandle, Status) Loop While Status.dwCapture And &H1 © 2003, 2016 Interface Corporation. All rights reserved. 292 GPC-5520 Help for Windows ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; nRet: Integer; i: Integer; j: Integer; pSrcBuf: IntPtr; dwSize: Integer; Status: IFCIMG.IMGCAPSTATUS; BufInfo: IFCIMG.IMGBUFFERINFO; LUTInfo: IFCIMG.IMGLUTINFO; begin lpszName := 'IFIMGCNV1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); // 階調変換テーブルの設定 (画像を反転する) for i := 0 to 255 do begin with LUTInfo do begin rgbBlue[i] := 255 - i; rgbGreen[i] := 255 - i; rgbRed[i] := 255 – i; end; end; nRet := IFCIMG.ImgSetLUT(hDeviceHandle, LUTInfo); // 階調変換処理有効 nRet := IFCIMG.ImgSetConversionConfig (hDeviceHandle, $01); // RGB24bit 画像領域確保 dwSize := 640*480*3; pSrcBuf := Marshal.AllocHGlobal(dwSize); // 画像情報を設定 BufInfo.pBufferAddress := pSrcBuf; BufInfo.dwBufferSize := dwBufSise; nRet := IFCIMG.ImgSetBuffer(hDeviceHandle, BufInfo, IFCIMG.IFIMG_COLOR_RGB24); // 1 フレームキャプチャ開始 nRet := IFCIMG.ImgStartCapture(hDeviceHandle,1, IFCIMG.IFIMG_DMACAPTURE_START); // 完了まで待つ repeat nRet := IFCIMG.ImgGetCaptureStatus(hDeviceHandle, Status); until (Status.dwCapture and $01) <> $01; © 2003, 2016 Interface Corporation. All rights reserved. 293 GPC-5520 Help for Windows デバイス名「IFIMGCNV1」のデバイスに対して、階調変換処理した画像をキャプチャします。 © 2003, 2016 Interface Corporation. All rights reserved. 294 GPC-5520 Help for Windows 38. ImgSetFilter フィルタ係数を設定します。 【書式】 ●C 言語 INT ImgSetFilter( HANDLE DWORD PIMGFILTER ); hDeviceHandle, dwFilterSelect, pCoefficient // // // デバイスハンドル フィルタ選択 フィルタ係数 ●Visual Basic Declare Function ImgSetFilter Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ RyVal dwFilterSelect As Long, _ ByRef pCoefficient As IMGFILTER _ )As Long ‘ ‘ ‘ デバイスハンドル 使用するフィルタ フィルタ係数 ●Delphi function ImgSetFilter ( hDeviceHandle: dwFilterSelect: var pCoefficient: THandle; DWORD; IMGFILTER ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetFilter( IntPtr hDeviceHandle, uint dwFilterSelect, ref IMGFILTER pCoefficient ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetFilter( uint hDeviceHandle, uint dwFilterSelect, ref IMGFILTER pCoefficient ); ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetFilter Lib ByVal hDeviceHandle As RyVal dwFilterSelect As ByRef pCoefficient As )As Integer // // // デバイスハンドル 使用するフィルタ フィルタ係数 // // // デバイスハンドル フィルタ選択 フィルタ係数 // // // デバイスハンドル フィルタ選択 フィルタ係数 "IfImg.DLL"( IntPtr, Integer, IMGFILTER © 2003, 2016 Interface Corporation. All rights reserved. 295 ‘ ‘ ‘ デバイスハンドル 使用するフィルタ フィルタ係数 GPC-5520 Help for Windows ●Visual Basic .NET(x86 専用) Declare Function ImgSetFilter Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, RyVal dwFilterSelect As Integer, ByRef pCoefficient As IMGFILTER )As Integer ●Delphi 8 class function ImgSetFilter ( hDeviceHandle: Integer; dwFilterSelect: Cardinal; var pCoefficient: IMGFILTER ): Integer; static; ‘ ‘ ‘ // // // デバイスハンドル 使用するフィルタ フィルタ係数 デバイスハンドル 使用するフィルタ フィルタ係数 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 dwFilterSelect 識別子 IFIMG_SPATIAL_FILTER IFIMG_EDGE_FILTER 値 00000001h 00000002h 意味 3×3 空間フィルタ 3×3 差分エッジ型検出 フィルタ pCoefficient フィルタ係数を設定します。IMGFILTER 構造体へのポインタを指定してください。 構造体の説明については、『4.4 構造体』をご参照ください。 dwFilterSelect の指定が IFIMG_SPATIAL_FILTER の場合、IMGFILTER 構造体は 1 つを用意 します。IFIMG_EDGE_FILTER の場合、X 方向用と Y 方向用として、2 つ要素の IMGFILTER 構造体の配列を用意します。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 © 2003, 2016 Interface Corporation. All rights reserved. 296 GPC-5520 Help for Windows 【使用例 3×3 空間フィルタ処理 】 ●C 言語 int nRet; int i,j; HANDLE hDeviceHandle; PBYTE pSrcBuf; DWORD dwBufSise; IMGCAPSTATUS Status; IMGBUFFERINFO BufInfo; IMGFILTER Filter; hDeviceHandle = ImgOpen("IFIMGCNV1"); // フィルタ係数設定(ラプラシアンフィルタ) Filter.a = 0; Filter.b = 1; Filter.c = 0; Filter.d = 1; Filter.e = -4; Filter.f = 1; Filter.g = 0; Filter.h = 1; Filter.i = 0; nRet = ImgSetFilter(hDeviceHandle,IFIMG_SPATIAL_FILTER, &Filter); // フィルタ処理有効 nRet = ImgSetConversionConfig(hDeviceHandle, 0x02); // フィルタ 8bit 画像領域確保 dwBufSise = 640*480; pSrcBuf = (PBYTE)malloc(dwBufSise); // 画像情報を設定 BufInfo.pBufferAddress = pSrcBuf; BufInfo.dwBufferSize = dwBufSise; nRet=ImgSetBuffer(hDeviceHandle,&BufInfo, IFIMG_COLOR_FIL8); // 1 フレームキャプチャ開始 nRet = ImgStartCapture(hDeviceHandle,1, IFIMG_DMACAPTURE_START); // 完了まで待つ do{ nRet = ImgGetCaptureStatus(hDeviceHandle, &Status); }while(Status.dwCapture & 0x01); © 2003, 2016 Interface Corporation. All rights reserved. 297 GPC-5520 Help for Windows ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim Status As IMGCAPSTATUS Dim Filter As IMGFILTER Dim nRet As Long Dim buffer(307200) As byte Dim buffersize As Long lpszName = “IFIMGCNV1” hDeviceHandle = ImgOpen(lpszName) ' フィルタ係数設定(ラプラシアンフィルタ) Filter.a = 0 Filter.b = 1 Filter.c = 0 Filter.d = 1 Filter.e = -4 Filter.f = 1 Filter.g = 0 Filter.h = 1 Filter.i = 0 nRet = ImgSetFilter(hDeviceHandle,IFIMG_SPATIAL_FILTER, Filter) ' フィルタ処理有効 nRet = ImgSetConversionConfig(hDeviceHandle, &H2) buffersize = 307200 nRet = ImgSetBufferVB(hDeviceHandle, buffer(0), buffersize, IFIMG_COLOR_FIL8) ' 1 フレームキャプチャ開始 nRet = ImgStartCapture(hDeviceHandle,1, IFIMG_DMACAPTURE_START) ' キャプチャ完了まで待つ Do nRet = ImgGetCaptureStatus(hDeviceHandle, Status) Loop While Status.dwCapture And &H1 © 2003, 2016 Interface Corporation. All rights reserved. 298 GPC-5520 Help for Windows ●Delphi var lpszName: String; hDeviceHandle: THandle; nRet: Integer; pSrcBuf: Pointer; dwSize: DWORD; Status: IMGCAPSTATUS; BufInfo: IMGBUFFERINFO; Filter: IMGFILTER; begin lpszName := 'IFIMGCNV1'; hDeviceHandle := ImgOpen(lpszName); // フィルタ係数設定(ラプラシアンフィルタ) Filter.a := 0; Filter.b := 1; Filter.c := 0; Filter.d := 1; Filter.e := -4; Filter.f := 1; Filter.g := 0; Filter.h := 1; Filter.i := 0; nRet := ImgSetFilter(hDeviceHandle, IFIMG_SPATIAL_FILTER, Filter); // フィルタ処理有効 nRet := ImgSetConversionConfig(hDeviceHandle, $02); // フィルタ 8bit 画像領域確保 dwSize := 640*480; pSrcBuf := AllocMem(dwSize); // 画像情報を設定 BufInfo.pBufferAddress := pSrcBuf; BufInfo.dwBufferSize := dwSize; nRet := ImgSetBuffer(hDeviceHandle, BufInfo, IFIMG_COLOR_FIL8); // 1 フレームキャプチャ開始 nRet := ImgStartCapture(hDeviceHandle,1, IFIMG_DMACAPTURE_START); // 完了まで待つ repeat nRet := ImgGetCaptureStatus(hDeviceHandle, Status); until (Status.dwCapture and $01) <> $01; © 2003, 2016 Interface Corporation. All rights reserved. 299 GPC-5520 Help for Windows ●Visual C# .NET int nRet; int i,j; IntPtr hDeviceHandle; IntPtr pSrcBuf; uint dwBufSise; IFCIMG_ANY.IMGCAPSTATUS IFCIMG_ANY.IMGBUFFERINFO IFCIMG_ANY.IMGFILTER Status; BufInfo; Filter; // オープン処理 hDeviceHandle = IFCIMG_ANY.ImgOpen("IFIMGCNV1"); // フィルタ係数設定(ラプラシアンフィルタ) Filter.a = 0; Filter.b = 1; Filter.c = 0; Filter.d = 1; Filter.e = -4; Filter.f = 1; Filter.g = 0; Filter.h = 1; Filter.i = 0; nRet = IFCIMG_ANY.ImgSetFilter(hDeviceHandle, IFCIMG_ANY.IFIMG_SPATIAL_FILTER, ref Filter); // フィルタ処理有効 nRet = IFCIMG_ANY.ImgSetConversionConfig(hDeviceHandle, 0x02); // フィルタ 8bit 画像領域確保 dwBufSise = 640*480; pSrcBuf = Marshal.AllocCoTaskMem((int)dwBufSise); // 画像情報を設定 BufInfo.pBufferAddress = pSrcBuf; BufInfo.dwBufferSize = dwBufSise; nRet = IFCIMG_ANY.ImgSetBuffer(hDeviceHandle, ref BufInfo, IFCIMG_ANY.IFIMG_COLOR_FIL8); // 1 フレームキャプチャ開始 nRet = IFCIMG_ANY.ImgStartCapture(hDeviceHandle, 1, IFCIMG_ANY.IFIMG_DMACAPTURE_START); // 完了まで待つ do{ nRet = IFCIMG_ANY.ImgGetCaptureStatus(hDeviceHandle, out Status); }while(Status.dwCapture & 0x01); © 2003, 2016 Interface Corporation. All rights reserved. 300 GPC-5520 Help for Windows © 2003, 2016 Interface Corporation. All rights reserved. 301 GPC-5520 Help for Windows ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim Status As IFCIMG_ANY.IMGCAPSTATUS Dim Filter As IFCIMG_ANY.IMGFILTER Dim nRet As Integer Dim buffer(307200) As byte Dim buffersize As Integer lpszName = “IFIMGCNV1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) ' フィルタ係数設定(ラプラシアンフィルタ) Filter.a = 0 Filter.b = 1 Filter.c = 0 Filter.d = 1 Filter.e = -4 Filter.f = 1 Filter.g = 0 Filter.h = 1 Filter.i = 0 nRet = IFCIMG_ANY.ImgSetFilter(hDeviceHandle, IFCIMG_ANY.IFIMG_SPATIAL_FILTER,_ Filter) ' フィルタ処理有効 nRet = IFCIMG_ANY.ImgSetConversionConfig(hDeviceHandle, &H2) buffersize = 307200 nRet = IFCIMG_ANY.ImgSetBufferVB(_ hDeviceHandle, buffer, buffersize, IFCIMG_ANY.IFIMG_COLOR_FIL8) ' 1 フレームキャプチャ開始 nRet = IFCIMG_ANY.ImgStartCapture(hDeviceHandle,1,_ IFCIMG_ANY.IFIMG_DMACAPTURE_START) ' キャプチャ完了まで待つ Do nRet = IFCIMG_ANY.ImgGetCaptureStatus(hDeviceHandle, Status) Loop While Status.dwCapture And &H1 © 2003, 2016 Interface Corporation. All rights reserved. 302 GPC-5520 Help for Windows ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; nRet: Integer; pSrcBuf: IntPtr; dwSize: Integer; Status: IFCIMG.IMGCAPSTATUS; BufInfo: IFCIMG.IMGBUFFERINFO; Filter: IFCIMG.IMGFILTER; begin lpszName := 'IFIMGCNV1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); // フィルタ係数設定(ラプラシアンフィルタ) Filter.a := 0; Filter.b := 1; Filter.c := 0; Filter.d := 1; Filter.e := -4; Filter.f := 1; Filter.g := 0; Filter.h := 1; Filter.i := 0; nRet := IFCIMG.ImgSetFilter(hDeviceHandle, IFCIMG.IFIMG_SPATIAL_FILTER, Filter); // フィルタ処理有効 nRet := IFCIMG.ImgSetConversionConfig (hDeviceHandle, $02); // フィルタ 8bit 画像領域確保 dwSize := 640*480; pSrcBuf := AllocMem(dwSize); // 画像情報を設定 BufInfo.pBufferAddress := pSrcBuf; BufInfo.dwBufferSize := dwSize; nRet := IFCIMG.ImgSetBuffer(hDeviceHandle, BufInfo, IFCIMG.IFIMG_COLOR_FIL8); // 1 フレームキャプチャ開始 nRet := IFCIMG.ImgStartCapture(hDeviceHandle,1, IFCIMG.IFIMG_DMACAPTURE_START); // 完了まで待つ repeat nRet := IFCIMG.ImgGetCaptureStatus(hDeviceHandle, Status); until (Status.dwCapture and $01) <> $01; © 2003, 2016 Interface Corporation. All rights reserved. 303 GPC-5520 Help for Windows 【使用例 3×3 差分型エッジ検出フィルタ】 ●C 言語 int nRet; int i,j; HANDLE hDeviceHandle; PBYTE pSrcBuf; DWORD dwBufSise; IMGCAPSTATUS Status; IMGBUFFERINFO BufInfo; IMGFILTER Filter[2]; // 差分エッジフィルタの場合は配列を 2 つ用意する。 hDeviceHandle = ImgOpen("IFIMGCNV1"); // X 方向フィルタ係数設定 (Sobel フィルタ) Filter[0].a = -1; Filter[0].b = 0; Filter[0].c = 1; Filter[0].d = -2; Filter[0].e = 0; Filter[0].f = 2; Filter[0].g = -1; Filter[0].h = 0; Filter[0].i = 1; // Y 方向フィルタ係数設定 (Sobel フィルタ) Filter[1].a = -1; Filter[1].b = -2; Filter[1].c = -1; Filter[1].d = 0; Filter[1].e = 0; Filter[1].f = 0; Filter[1].g = 1; Filter[1].h = 2; Filter[1].i = 1; nRet = ImgSetFilter(hDeviceHandle,IFIMG_EDGE_FILTER, Filter); // フィルタ処理有効 nRet = ImgSetConversionConfig(hDeviceHandle, 0x02); // フィルタ 8bit 画像領域確保 dwBufSise = 640*480; pSrcBuf = (PBYTE)malloc(dwBufSise); // 画像情報を設定 BufInfo.pBufferAddress = pSrcBuf; BufInfo.dwBufferSize = dwBufSise; nRet=ImgSetBuffer(hDeviceHandle,&BufInfo, IFIMG_COLOR_FIL8); © 2003, 2016 Interface Corporation. All rights reserved. 304 GPC-5520 Help for Windows // 1 フレームキャプチャ開始 nRet = ImgStartCapture(hDeviceHandle,1, IFIMG_DMACAPTURE_START); // 完了まで待つ do{ nRet = ImgGetCaptureStatus(hDeviceHandle, &Status); }while(Status.dwCapture & 0x01); © 2003, 2016 Interface Corporation. All rights reserved. 305 GPC-5520 Help for Windows ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim Status As IMGCAPSTATUS Dim Filter(2) As IMGFILTER Dim nRet As Long Dim buffer(307200) As byte Dim buffersize As Long lpszName = “IFIMGCNV1” hDeviceHandle = ImgOpen(lpszName) ' X 方向フィルタ係数設定 (Sobel フィルタ) Filter(0).a = -1 Filter(0).b = 0 Filter(0).c = 1 Filter(0).d = -2 Filter(0).e = 0 Filter(0).f = 2 Filter(0).g = -1 Filter(0).h = 0 Filter(0).i = 1 ' Y 方向フィルタ係数設定 (Sobel フィルタ) Filter(1).a = -1 Filter(1).b = -2 Filter(1).c = -1 Filter(1).d = 0 Filter(1).e = 0 Filter(1).f = 0 Filter(1).g = 1 Filter(1).h = 2 Filter(1).i = 1 nRet = ImgSetFilter(hDeviceHandle, IFIMG_EDGE_FILTER, Filter(0)) ' フィルタ処理有効 nRet = ImgSetConversionConfig(hDeviceHandle, &H2) buffersize = 307200 nRet = ImgSetBufferVB(hDeviceHandle, buffer(0), buffersize, IFIMG_COLOR_FIL8) ' 1 フレームキャプチャ開始 nRet = ImgStartCapture(hDeviceHandle,1, IFIMG_DMACAPTURE_START) ' キャプチャ完了まで待つ Do nRet = ImgGetCaptureStatus(hDeviceHandle, Status) © 2003, 2016 Interface Corporation. All rights reserved. 306 GPC-5520 Help for Windows Loop While Status.dwCapture And &H1 ●Delphi var lpszName: String; hDeviceHandle: THandle; nRet: Integer; pSrcBuf: Pointer; dwSize: DWORD; Status: IMGCAPSTATUS; BufInfo: IMGBUFFERINFO; Filter: array[0..1] of IMGFILTER; begin lpszName := 'IFIMGCNV1'; hDeviceHandle := ImgOpen(lpszName); // X 方向フィルタ係数設定(Sobel フィルタ) Filter[0].a := -1; Filter[0].b := 0; Filter[0].c := 1; Filter[0].d := -2; Filter[0].e := 0; Filter[0].f := 2; Filter[0].g := -1; Filter[0].h := 0; Filter[0].i := 1; // Y 方向フィルタ係数設定(Sobel フィルタ) Filter[1].a := -1; Filter[1].b := -2; Filter[1].c := -1; Filter[1].d := 0; Filter[1].e := 0; Filter[1].f := 0; Filter[1].g := 1; Filter[1].h := 2; Filter[1].i := 1; nRet := ImgSetFilter(hDeviceHandle, IFIMG_EDGE_FILTER, Filter[0]); // フィルタ処理有効 nRet := ImgSetConversionConfig(hDeviceHandle, $02); // フィルタ 8bit 画像領域確保 dwSize := 640*480; pSrcBuf := AllocMem(dwSize); // 画像情報を設定 © 2003, 2016 Interface Corporation. All rights reserved. 307 GPC-5520 Help for Windows BufInfo.pBufferAddress := pSrcBuf; BufInfo.dwBufferSize := dwSize; nRet := ImgSetBuffer(hDeviceHandle, BufInfo, IFIMG_COLOR_FIL8); // 1 フレームキャプチャ開始 nRet := ImgStartCapture(hDeviceHandle,1, IFIMG_DMACAPTURE_START); // 完了まで待つ repeat nRet := ImgGetCaptureStatus(hDeviceHandle, Status); until (Status.dwCapture and $01) <> $01; ●Visual C# .NET int nRet; int i,j; IntPtr hDeviceHandle; IntPtr pSrcBuf; uint dwBufSise; IFCIMG_ANY.IMGCAPSTATUS Status; IFCIMG_ANY.IMGBUFFERINFO BufInfo; IFCIMG_ANY.IMGFILTER Filter[2]; // 差分エッジフィルタの場合は配列を 2 つ用意する。 // Open a device. hDeviceHandle = IFCIMG_ANY.ImgOpen("IFIMGCNV1"); // X 方向フィルタ係数設定 (Sobel フィルタ) Filter[0].a = -1; Filter[0].b = 0; Filter[0].c = 1; Filter[0].d = -2; Filter[0].e = 0; Filter[0].f = 2; Filter[0].g = -1; Filter[0].h = 0; Filter[0].i = 1; // Y 方向フィルタ係数設定 (Sobel フィルタ) Filter[1].a = -1; Filter[1].b = -2; Filter[1].c = -1; Filter[1].d = 0; Filter[1].e = 0; Filter[1].f = 0; Filter[1].g = 1; Filter[1].h = 2; Filter[1].i = 1; nRet = IFCIMG_ANY.ImgSetFilter(hDeviceHandle, IFCIMG_ANY.IFIMG_EDGE_FILTER, ref Filter); © 2003, 2016 Interface Corporation. All rights reserved. 308 GPC-5520 Help for Windows // フィルタ処理有効 nRet = IFCIMG_ANY.ImgSetConversionConfig(hDeviceHandle, 0x02); // フィルタ 8bit 画像領域確保 dwBufSise = 640*480; pSrcBuf = Marshal.AllocCoTaskMem((int)dwBufSise); // 画像情報を設定 BufInfo.pBufferAddress = pSrcBuf; BufInfo.dwBufferSize = dwBufSise; nRet = IFCIMG_ANY.ImgSetBuffer(hDeviceHandle, ref BufInfo, IFCIMG_ANY.IFIMG_COLOR_FIL8); // 1 フレームキャプチャ開始 nRet = IFCIMG_ANY.ImgStartCapture(hDeviceHandle,1, IFCIMG_ANY.IFIMG_DMACAPTURE_START); // 完了まで待つ do{ nRet = IFCIMG_ANY.ImgGetCaptureStatus(hDeviceHandle, out Status); }while(Status.dwCapture & 0x01); © 2003, 2016 Interface Corporation. All rights reserved. 309 GPC-5520 Help for Windows ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim Status As IFCIMG_ANY.IMGCAPSTATUS Dim Filter(2) As IFCIMG_ANY.IMGFILTER Dim nRet As Long Dim buffer(307200) As byte Dim buffersize As Integer lpszName = “IFIMGCNV1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) ' X 方向フィルタ係数設定(Sobel フィルタ) Filter(0).a = -1 Filter(0).b = 0 Filter(0).c = 1 Filter(0).d = -2 Filter(0).e = 0 Filter(0).f = 2 Filter(0).g = -1 Filter(0).h = 0 Filter(0).i = 1 ' Y 方向フィルタ係数設定(Sobel フィルタ) Filter(1).a = -1 Filter(1).b = -2 Filter(1).c = -1 Filter(1).d = 0 Filter(1).e = 0 Filter(1).f = 0 Filter(1).g = 1 Filter(1).h = 2 Filter(1).i = 1 nRet = IFCIMG_ANY.ImgSetFilter(hDeviceHandle,_ IFCIMG_ANY.IFIMG_EDGE_FILTER, Filter(0)) ' フィルタ処理有効 nRet = IFCIMG_ANY.ImgSetConversionConfig(hDeviceHandle, &H2) buffersize = 307200 nRet = IFCIMG_ANY.ImgSetBufferVB(_ hDeviceHandle, buffer, buffersize, IFCIMG_ANY.IFIMG_COLOR_FIL8) ' 1 フレームキャプチャ開始 nRet = IFCIMG_ANY.ImgStartCapture(hDeviceHandle,1, IFCIMG_ANY.IFIMG_DMACAPTURE_START) © 2003, 2016 Interface Corporation. All rights reserved. 310 GPC-5520 Help for Windows ' キャプチャ完了まで待つ Do nRet = IFCIMG_ANY.ImgGetCaptureStatus(hDeviceHandle, Status) Loop While Status.dwCapture And &H1 ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; nRet: Integer; pSrcBuf: IntPtr; dwBufSise: Integer; Status: IFCIMG.IMGCAPSTATUS; BufInfo: IFCIMG.IMGBUFFERINFO; Filter: array[0..1] of IFCIMG.IMGFILTER; begin lpszName := 'IFIMGCNV1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); // X 方向フィルタ係数設定(Sobel フィルタ) Filter[0].a := -1; Filter[0].b := 0; Filter[0].c := 1; Filter[0].d := -2; Filter[0].e := 0; Filter[0].f := 2; Filter[0].g := -1; Filter[0].h := 0; Filter[0].i := 1; // Y 方向フィルタ係数設定(Sobel フィルタ) Filter[1].a := -1; Filter[1].b := -2; Filter[1].c := -1; Filter[1].d := 0; Filter[1].e := 0; Filter[1].f := 0; Filter[1].g := 1; Filter[1].h := 2; Filter[1].i := 1; nRet := IFCIMG.ImgSetFilter(hDeviceHandle, IFCIMG.IFIMG_EDGE_FILTER, Filter[0]); // フィルタ処理有効 nRet := IFCIMG.ImgSetConversionConfig(hDeviceHandle, $02); // フィルタ 8bit 画像領域確保 © 2003, 2016 Interface Corporation. All rights reserved. 311 GPC-5520 Help for Windows dwSize := 640*480; pSrcBuf := AllocMem(dwSize); // 画像情報を設定 BufInfo.pBufferAddress := pSrcBuf; BufInfo.dwBufferSize := dwBufSise; nRet := IFCIMG.ImgSetBuffer(hDeviceHandle, BufInfo, IFCIMG.IFIMG_COLOR_FIL8); // 1 フレームキャプチャ開始 nRet := IFCIMG.ImgStartCapture(hDeviceHandle,1, IFCIMG.IFIMG_DMACAPTURE_START); // 完了まで待つ repeat nRet := IFCIMG.ImgGetCaptureStatus(hDeviceHandle, Status); until (Status.dwCapture and $01) <> $01; デバイス名「IFIMGCNV1」のデバイスに対して、Sobel フィルタ処理をした画像をキャプチャ します。 © 2003, 2016 Interface Corporation. All rights reserved. 312 GPC-5520 Help for Windows 39. ImgSetDil_Er 膨張・収縮処理の条件を設定します。段数と各段に対する膨張・収縮の選択と近傍の選択します。 【書式】 ●C 言語 INT ImgSetDil_Er( HANDLE PIMGDILATE_ERODE ); hDeviceHandle, pDilate_Erode // // デバイスハンドル 膨張・収縮設定構造体 ●Visual Basic Declare Function ImgSetDil_Er Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ ByRef pDilate_Erode As IMGDILATE_ERODE _ ‘ )As Long デバイスハンドル 膨張・収縮設定構造体 ●Delphi function ImgSetDil_Er( hDeviceHandle: var pDilate_Erode: THandle; IMGDILATE_ERODE ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetDil_Er( IntPtr hDeviceHandle, ref IMGDILATE_ERODE pDilate_Erode ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetDil_Er( uint hDeviceHandle, ref IMGDILATE_ERODE pDilate_Erode ); // // デバイスハンドル 膨張・収縮設定構造体 // // デバイスハンドル 膨張・収縮設定構造体 // // デバイスハンドル 膨張・収縮設定構造体 ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetDil_Er Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ByRef pDilate_Erode As IMGDILATE_ERODE )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgSetDil_Er Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ByRef pDilate_Erode As IMGDILATE_ERODE )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 313 ‘ ‘ デバイスハンドル 膨張・収縮設定構造体 ‘ ‘ デバイスハンドル 膨張・収縮設定構造体 GPC-5520 Help for Windows ●Delphi 8 class function ImgSetDil_Er( hDeviceHandle: Integer; var pDilate_Erode: IMGDILATE_ERODE ): Integer; static; // // デバイスハンドル 膨張・収縮設定構造体 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 pDilate_Erode IMGDILATE_ERODE構造体のポインタを指定してください。 構造体の説明については、『4.4 構造体』をご参照ください。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 © 2003, 2016 Interface Corporation. All rights reserved. 314 GPC-5520 Help for Windows ●C 言語 HANDLE hDeviceHandle; int nRet; PBYTE pSrcBuf; DWORD dwBufSise; IMGCAPSTATUS Status; IMGBUFFERINFO BufInfo; IMGDILATE_ERODE DIL_ER; IMGBINCONFIG BinConf; hDeviceHandle = ImgOpen("IFIMGCNV1"); // 膨張・収縮設定 DIL_ER.dwStepCnt = 8; // 8 段構成 // 収縮→収縮→収縮→収縮→膨張→膨張→膨張→膨張 DIL_ER.dwSelectD_E = 0x0F; DIL_ER.dwNeighborhood = 0x00; // 全段 4 連結 nRet = ImgSetDil_Er(hDeviceHandle, &DIL_ER); // 膨張・収縮処理有効 nRet = ImgSetConversionConfig(hDeviceHandle, 0x04); // 2 値化設定 BinConf.dwColorIngredient = IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold = 255; BinConf.dwMinthreshold = 128; BinConf.dwBinarizationMode = IFIMG_BINMODE_NORMAL; nRet = ImgSetBinarizationConfig(hDeviceHandle, &BinConf); // 2 値画像領域確保 dwBufSise = 640*480; pSrcBuf = (PBYTE)malloc(dwBufSise); // 画像情報を設定 BufInfo.pBufferAddress = pSrcBuf; BufInfo.dwBufferSize = dwBufSise; nRet=ImgSetBuffer(hDeviceHandle,&BufInfo, IFIMG_COLOR_BIN8); // 1 フレームキャプチャ開始 nRet = ImgStartCapture(hDeviceHandle,1, IFIMG_DMACAPTURE_START); // 完了まで待つ。 do{ nRet = ImgGetCaptureStatus(hDeviceHandle, &Status); }while(Status.dwCapture & 0x01); © 2003, 2016 Interface Corporation. All rights reserved. 315 GPC-5520 Help for Windows ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim Status As IMGCAPSTATUS Dim DIL_ER As IMGDILATE_ERODE Dim BinConf As IMGBINCONFIG Dim nRet As Long Dim buffer(307200) As Byte Dim buffersize As Long lpszName = "IFIMGCNV1" hDeviceHandle = ImgOpen(lpszName) ' 膨張・収縮設定 DIL_ER.dwStepCnt = 8 ' 8 段構成 ' 収縮→収縮→収縮→収縮→膨張→膨張→膨張→膨張 DIL_ER.dwSelectD_E = &HF DIL_ER.dwNeighborhood = &H0 ' 全段 4 連結 nRet = ImgSetDil_Er(hDeviceHandle, DIL_ER) ' 膨張・収縮処理有効 nRet = ImgSetConversionConfig(hDeviceHandle, &H4) ' 2 値化設定 BinConf.dwColorIngredient = IFIMG_INGREDIENT_GRAY BinConf.dwMaxthreshold = 255 BinConf.dwMinthreshold = 128 BinConf.dwBinarizationMode = IFIMG_BINMODE_NORMAL nRet = ImgSetBinarizationConfig(hDeviceHandle, BinConf) '2 値画像領域確保 buffersize = 307200 nRet = ImgSetBufferVB(hDeviceHandle, buffer(0), buffersize, IFIMG_COLOR_BIN8) ' 1 フレームキャプチャ開始 nRet = ImgStartCapture(hDeviceHandle, 1, IFIMG_DMACAPTURE_START) ' キャプチャ完了まで待つ Do nRet = ImgGetCaptureStatus(hDeviceHandle, Status) Loop While Status.dwCapture And &H1 © 2003, 2016 Interface Corporation. All rights reserved. 316 GPC-5520 Help for Windows ●Delphi var lpszName: String; hDeviceHandle: THandle; nRet: Integer; pSrcBuf: Pointer; dwSize: DWORD; Status: IMGCAPSTATUS; BufInfo: IMGBUFFERINFO; BinConf: IMGBINCONFIG; DIL_ER: IMGDILATE_ERODE; begin lpszName := 'IFIMGCNV1'; hDeviceHandle := ImgOpen(lpszName); // 膨張・収縮設定 DIL_ER.dwStepCnt := 8; // 8 段構成 // 収縮→収縮→収縮→収縮→膨張→膨張→膨張→膨張 DIL_ER.dwSelectD_E := $0F; DIL_ER.dwNeighborhood := $00; // 全段 4 連結 nRet := ImgSetDil_Er(hDeviceHandle, DIL_ER); // 膨張・収縮処理有効 nRet := ImgSetConversionConfig(hDeviceHandle, $04); BinConf.dwColorIngredient := IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold := 255; BinConf.dwMinthreshold := 128; BinConf.dwBinarizationMode := IFIMG_BINMODE_NORMAL; nRet := ImgSetBinarizationConfig(hDeviceHandle, BinConf); // 2 値画像領域確保 dwSize := 640*480; pSrcBuf := AllocMem(dwSize); // 画像情報を設定 BufInfo.pBufferAddress := pSrcBuf; BufInfo.dwBufferSize := dwSize; nRet := ImgSetBuffer(hDeviceHandle, BufInfo, IFIMG_COLOR_BIN8); // 1 フレームキャプチャ開始 nRet := ImgStartCapture(hDeviceHandle,1, IFIMG_DMACAPTURE_START); // 完了まで待つ repeat nRet := ImgGetCaptureStatus(hDeviceHandle, Status); until (Status.dwCapture and $01) <> $01; © 2003, 2016 Interface Corporation. All rights reserved. 317 GPC-5520 Help for Windows ●Visual C# .NET IntPtr hDeviceHandle; int nRet; IntPtr pSrcBuf; uint dwBufSise; IFCIMG_ANY.IMGCAPSTATUS IFCIMG_ANY.IMGBUFFERINFO IFCIMG_ANY.IMGDILATE_ERODE IFCIMG_ANY.IMGBINCONFIG Status; BufInfo; DIL_ER; BinConf; // インタフェースモジュールプン hDeviceHandle = IFCIMG_ANY.ImgOpen("IFIMGCNV1"); // 膨張・収縮設定 DIL_ER.dwStepCnt = 8; // 8 段構成 // 収縮→収縮→収縮→収縮→膨張→膨張→膨張→膨張 DIL_ER.dwSelectD_E = 0x0F; DIL_ER.dwNeighborhood = 0x00; // 4 連結(全て) nRet = IFCIMG_ANY.ImgSetDil_Er(hDeviceHandle, ref DIL_ER); // 膨張・収縮処理有効 nRet = IFCIMG_ANY.ImgSetConversionConfig(hDeviceHandle, 0x04); // 2 値化設定 BinConf.dwColorIngredient = IFCIMG_ANY.IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold = 255; BinConf.dwMinthreshold = 128; BinConf.dwBinarizationMode = IFCIMG_ANY.IFIMG_BINMODE_NORMAL; nRet = IFCIMG_ANY.ImgSetBinarizationConfig(hDeviceHandle, ref BinConf); // 2 値画像領域確保 dwBufSise = 640*480; pSrcBuf = Marshal.AllocCoTaskMem((int)dwBufSise); // 画像情報を設定 BufInfo.pBufferAddress = pSrcBuf; BufInfo.dwBufferSize = dwBufSise; nRet = IFCIMG_ANY.ImgSetBuffer(hDeviceHandle, ref BufInfo, IFCIMG_ANY.IFIMG_COLOR_BIN8); // 1 フレームキャプチャ開始 nRet = IFCIMG_ANY.ImgStartCapture(hDeviceHandle, 1, IFCIMG_ANY.IFIMG_DMACAPTURE_START); // 完了まで待つ do{ nRet = IFCIMG_ANY.ImgGetCaptureStatus(hDeviceHandle, out Status); }while(Status.dwCapture & 0x01); © 2003, 2016 Interface Corporation. All rights reserved. 318 GPC-5520 Help for Windows ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim Status As IFCIMG_ANY.IMGCAPSTATUS Dim DIL_ER As IFCIMG_ANY.IMGDILATE_ERODE Dim BinConf As IFCIMG_ANY.IMGBINCONFIG Dim nRet As Integer Dim buffer(307200) As byte Dim buffersize As Integer lpszName = “IFIMGCNV1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) ' 膨張・収縮設定 DIL_ER.dwStepCnt = 8 ' 8 段構成 ' 収縮→収縮→収縮→収縮→膨張→膨張→膨張→膨張 DIL_ER.dwSelectD_E = &H0F DIL_ER.dwNeighborhood = &H00 ' 4 連結(全て) nRet = IFCIMG_ANY.ImgSetDil_Er(hDeviceHandle, DIL_ER) ' 膨張・収縮処理有効 nRet = IFCIMG_ANY.ImgSetConversionConfig(hDeviceHandle, &H4) ' 2 値化設定 BinConf.dwColorIngredient = IFCIMG_ANY.IFIMG_INGREDIENT_GRAY BinConf.dwMaxthreshold = 255 BinConf.dwMinthreshold = 128 BinConf.dwBinarizationMode = IFCIMG_ANY.IFIMG_BINMODE_NORMAL nRet = IFCIMG_ANY.ImgSetBinarizationConfig (hDeviceHandle, BinConf) ’2 値画像領域確保 buffersize = 307200 nRet = IFCIMG_ANY.ImgSetBufferVB(_ hDeviceHandle, buffer, buffersize, IFCIMG_ANY.IFIMG_COLOR_BIN8) ' 1 フレームキャプチャ開始 nRet = IFCIMG_ANY.ImgStartCapture(hDeviceHandle,1, _ IFCIMG_ANY.IFIMG_DMACAPTURE_START) ' キャプチャ完了まで待つ Do nRet = IFCIMG_ANY.ImgGetCaptureStatus(hDeviceHandle, Status) Loop While Status.dwCapture And &H1 © 2003, 2016 Interface Corporation. All rights reserved. 319 GPC-5520 Help for Windows ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; nRet: Integer; pSrcBuf: IntPtr; dwSize: Integer; Status: IFCIMG.IMGCAPSTATUS; BufInfo: IFCIMG.IMGBUFFERINFO; BinConf: IFCIMG.IMGBINCONFIG; begin lpszName := 'IFIMGCNV1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); // 膨張・収縮設定 DIL_ER.dwStepCnt := 8; // 8 段構成 DIL_ER.dwSelectD_E := $F0; // 膨→膨→膨→膨→収→収→収→収 DIL_ER.dwNeighborhood := $00; // 4 連結(全て) nRet := IFCIMG.ImgSetDil_Er(hDeviceHandle, ref DIL_ER); // 膨張・収縮処理有効 nRet := IFCIMG.ImgSetConversionConfig(hDeviceHandle, $04); // 2 値画像領域確保 dwSize := 640*480; pSrcBuf := Marshal.AllocHGlobal(dwSize); // 画像情報を設定 BufInfo.pBufferAddress := pSrcBuf; BufInfo.dwBufferSize := dwBufSise; nRet := IFCIMG.ImgSetBuffer(hDeviceHandle, ref BufInfo, IFCIMG.IFIMG_COLOR_BIN8); // 1 フレームキャプチャ開始 nRet := IFCIMG.ImgStartCapture(hDeviceHandle,1, IFCIMG.IFIMG_DMACAPTURE_START); // 完了まで待つ repeat nRet := IFCIMG.ImgGetCaptureStatus(hDeviceHandle, out Status); until (Status.dwCapture and $01) <> $01; デバイス名「IFIMGCNV1」のデバイスに対して、膨張・収縮処理後の画像をキャプチャします。 © 2003, 2016 Interface Corporation. All rights reserved. 320 GPC-5520 Help for Windows 40. ImgSetStillPictureData 静止画出力用の画像データをセットします。 【書式】 ●C 言語 INT ImgSetStillPictureData( HANDLE hDeviceHandle, PVOID pSrc ); // // デバイスハンドル 画像データの先頭ポインタ ●Visual Basic Declare Function ImgSetStillPictureData Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByRef pSrc As Any _ ‘ 画像データの参照渡し )As Long ●Delphi function ImgSetStillPictureData( hDeviceHandle: THandle, // デバイスハンドル pSrc: Pointer // 画像データの参照渡し ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetStillPictureData( IntPtr hDeviceHandle, // デバイスハンドル byte[] pSrc // 画像データの先頭ポインタ ); [DllImport("IfImg.dll")] public static extern int ImgSetStillPictureData( IntPtr hDeviceHandle, // デバイスハンドル short[] pSrc // 画像データの先頭ポインタ ); [DllImport("IfImg.dll")] public static extern int ImgSetStillPictureData( IntPtr hDeviceHandle, // デバイスハンドル uint[] pSrc // 画像データの先頭ポインタ ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetStillPictureData( uint hDeviceHandle, // デバイスハンドル byte[] pSrc // 画像データの先頭ポインタ ); © 2003, 2016 Interface Corporation. All rights reserved. 321 GPC-5520 Help for Windows [DllImport("IfImg.dll")] public static extern int ImgSetStillPictureData( uint hDeviceHandle, // デバイスハンドル short[] pSrc // 画像データの先頭ポインタ ); [DllImport("IfImg.dll")] public static extern int ImgSetStillPictureData( uint hDeviceHandle, // デバイスハンドル uint[] pSrc // 画像データの先頭ポインタ ); ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetStillPictureData Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByRef pSrc( ) As Byte ‘ 画像データの参照渡し )As Integer Declare Function ImgSetStillPictureData Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByRef pSrc( ) As Short ‘ 画像データの参照渡し )As Integer Declare Function ImgSetStillPictureData Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByRef pSrc( ) As Integer ‘ 画像データの参照渡し )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgSetStillPictureData Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByRef pSrc( ) As Byte ‘ 画像データの参照渡し )As Integer Declare Function ImgSetStillPictureData Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByRef pSrc( ) As Short ‘ 画像データの参照渡し )As Integer Declare Function ImgSetStillPictureData Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByRef pSrc( ) As Integer ‘ 画像データの参照渡し )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 322 GPC-5520 Help for Windows ●Delphi 8 class function ImgSetStillPictureData( hDeviceHandle: Integer; pSrc: array of Byte ): Integer; static; // // デバイスハンドル 画像データの参照渡し // // デバイスハンドル 画像データの参照渡し class function ImgSetStillPictureData( hDeviceHandle: Integer; // pSrc: array of Cardinal // ): Integer; static; デバイスハンドル 画像データの参照渡し class function ImgSetStillPictureData( hDeviceHandle: Integer; pSrc: array of Word ): Integer; static; 【パラメータ】 hDeviceHandle 関数で取得したデバイスハンドルを指定してください。 pSrc 書き込む画像データの先頭ポインタを指定します。 画像データのフォーマットは解像度 640×480 の RGB32bit のデータです。 データサイズは 1 フレーム分です。(1228800byte) 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 【備考】 画像データのセットは ImgSetOutputMode 関数で静止画出力モードに変更した後に実行してく ださい。 © 2003, 2016 Interface Corporation. All rights reserved. 323 GPC-5520 Help for Windows ●C 言語 HANDLE hDeviceHandle; int nRet; PDWORD pSrcBuf; DWORD dwBufSise; hDeviceHandle = ImgOpen("IFIMGCNV1"); // 静止画出力用画像データ確保 dwBufSise = 640*480*4; pSrcBuf = (PDWORD)malloc(dwBufSise); : // RGB32bit の出力画像を作成 : // 映像出力端子を静止画出力モードへセット nRet = ImgSetOutputMode(hDeviceHandle, IFIMG_OUTMODE_STILL_PICTURE); // データ書き込み nRet = ImgSetStillPictureData(hDeviceHandle, pSrcBuf); ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim nRet As Long Dim pSrcBuf(307200) As Long lpszName = “IFIMGCNV1” hDeviceHandle = ImgOpen(lpszName) : ' RGB32bit の出力画像を作成 : ' 映像出力端子を静止画出力モードへセット nRet = ImgSetOutputMode(hDeviceHandle, IFIMG_OUTMODE_STILL_PICTURE) ' データ書き込み nRet = ImgSetStillPictureData(hDeviceHandle, pSrcBuf) © 2003, 2016 Interface Corporation. All rights reserved. 324 GPC-5520 Help for Windows ●Delphi var lpszName: String; hDeviceHandle: THandle; nRet: Integer; pSrcBuf: Pointer; dwBufSise: DWORD; begin lpszName := 'IFIMGCNV1'; hDeviceHandle := ImgOpen(lpszName); // RGB32bit の出力画像を作成 dwSize := 640*480*4; pSrcBuf := AllocMem(dwSize); : // RGB32bit の出力画像を作成 : // 映像出力端子を静止画出力モードへセット nRet := ImgSetOutputMode(hDeviceHandle, IFIMG_OUTMODE_STILL_PICTURE); // データ書き込み nRet := ImgSetStillPictureData(hDeviceHandle, pSrcBuf); ●Visual C# .NET IntPtr hDeviceHandle; int nRet; uint pSrcBuf[307200]; // デバイスオープン hDeviceHandle = IFCIMG_ANY.ImgOpen("IFIMGCNV1"); // RGB32bit の出力画像を作成 : // 映像出力端子を静止画出力モードへセット nRet = IFCIMG_ANY.ImgSetOutputMode(hDeviceHandle, IFCIMG_ANY.IFIMG_OUTMODE_STILL_PICTURE); // データ書き込み nRet = IFCIMG_ANY.ImgSetStillPictureData(hDeviceHandle, pSrcBuf); © 2003, 2016 Interface Corporation. All rights reserved. 325 GPC-5520 Help for Windows ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim nRet As Integer Dim pSrcBuf(307200) As Integer lpszName = “IFIMGCNV1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : ' RGB32bit の出力画像を作成 : ' 映像出力端子を静止画出力モードへセット nRet = IFCIMG_ANY.ImgSetOutputMode(hDeviceHandle, _ IFCIMG_ANY.IFIMG_OUTMODE_STILL_PICTURE) ' データ書き込み nRet = IFCIMG_ANY.ImgSetStillPictureData(hDeviceHandle, pSrcBuf) ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; nRet: Integer; pSrcBuf: array of Cardinal; dwSize: Cardinal; begin lpszName := 'IFIMGCNV1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); // RGB32bit 画像領域確保 dwSize := 9216000; Setlength(pCaptureData, pSrcBuf); : // RGB32bit の出力画像を作成 : // 映像出力端子を静止画出力モードへセット nRet :=IFCIMG.ImgSetOutputMode(hDeviceHandle, IFCIMG.IFIMG_OUTMODE_STILL_PICTURE); // データ書き込み nRet := IFCIMG.ImgSetStillPictureData(hDeviceHandle, pSrcBuf); デバイス名「IFIMGCNV1」のデバイスに対して、静止画出力モードへセットし、静止画データ を設定します。 © 2003, 2016 Interface Corporation. All rights reserved. 326 GPC-5520 Help for Windows 41. ImgGetStillPictureData 静止画出力用の画像データを取得します。 【書式】 ●C 言語 INT ImgGetStillPictureData( HANDLE hDeviceHandle, PVOID pDst ); // // デバイスハンドル 読み込み先バッファの先頭ポインタ ●Visual Basic Declare Function ImgGetStillPictureData Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByRef pDst As Any _ ‘ 読み込み先バッファの参照渡し )As Long ●Delphi function ImgGetStillPictureData( hDeviceHandle: THandle, // デバイスハンドル pDst: Pointer // 読み込み先バッファの参照渡し ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgGetStillPictureData( IntPtr hDeviceHandle, // デバイスハンドル byte[] pDst // 読み込み先バッファの先頭ポインタ ); [DllImport("IfImg.dll")] public static extern int ImgGetStillPictureData( IntPtr hDeviceHandle, // デバイスハンドル short[] pDst // 読み込み先バッファの先頭ポインタ ); [DllImport("IfImg.dll")] public static extern int ImgGetStillPictureData( IntPtr hDeviceHandle, // デバイスハンドル uint[] pDst // 読み込み先バッファの先頭ポインタ ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgGetStillPictureData( uint hDeviceHandle, // デバイスハンドル byte[] pDst // 読み込み先バッファの先頭ポインタ ); © 2003, 2016 Interface Corporation. All rights reserved. 327 GPC-5520 Help for Windows [DllImport("IfImg.dll")] public static extern int ImgGetStillPictureData( uint hDeviceHandle, // デバイスハンドル short[] pDst // 読み込み先バッファの先頭ポインタ ); [DllImport("IfImg.dll")] public static extern int ImgGetStillPictureData( uint hDeviceHandle, // デバイスハンドル uint[] pDst // 読み込み先バッファの先頭ポインタ ); ●Visual Basic .NET(x86、x64 共用) Declare Function ImgGetStillPictureData Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByRef pDst( ) As Byte ‘ 読み込み先バッファの参照渡し )As Integer Declare Function ImgGetStillPictureData Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByRef pDst( ) As Short ‘ 読み込み先バッファの参照渡し )As Integer Declare Function ImgGetStillPictureData Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByRef pDst( ) As Integer ‘ 読み込み先バッファの参照渡し )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgGetStillPictureData Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByRef pDst( ) As Byte ‘ 読み込み先バッファの参照渡し )As Integer Declare Function ImgGetStillPictureData Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByRef pDst( ) As Short ‘ 読み込み先バッファの参照渡し )As Integer Declare Function ImgGetStillPictureData Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByRef pDst( ) As Integer ‘ 読み込み先バッファの参照渡し )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 328 GPC-5520 Help for Windows ●Delphi 8 class function ImgGetStillPictureData( hDeviceHandle: Integer; pDst: array of Byte ): Integer; static; // // デバイスハンドル 画像データの参照渡し // // デバイスハンドル 画像データの参照渡し class function ImgGetStillPictureData( hDeviceHandle: Integer; // pDst: array of Cardinal // ): Integer; static; デバイスハンドル 画像データの参照渡し class function ImgGetStillPictureData( hDeviceHandle: Integer; pDst: array of Word ): Integer; static; 【パラメータ】 hDeviceHandle 関数で取得したデバイスハンドルを指定してください。 pDst 読み込み先バッファの先頭ポインタを指定してください。 読み込まれる画像データのフォーマットは解像度 640×480 の RGB32bit のデータです。 1 フレーム分のサイズのバッファを用意してください。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 【備考】 画像データのセットは ImgSetOutputMode 関数で静止画出力モードに変更した後に実行してく ださい。 © 2003, 2016 Interface Corporation. All rights reserved. 329 GPC-5520 Help for Windows ●C 言語 HANDLE int PDWORD DWORD hDeviceHandle; nRet; pDstBuf; dwBufSise; hDeviceHandle = ImgOpen("IFIMGCNV1"); : // 静止画出力用画像データ確保 dwBufSise = 640*480*4; pDstBuf = (PDWORD)malloc(dwBufSise); // データを読み込む nRet = ImgGetStillPictureData(hDeviceHandle, pDstBuf); ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim nRet As Long Dim pDstBuf(307200) As Long lpszName = “IFIMGCNV1” hDeviceHandle = ImgOpen(lpszName) ' データ読み込み nRet = ImgGetStillPictureData(hDeviceHandle, pDstBuf) ●Delphi var lpszName: String; hDeviceHandle: THandle; nRet: Integer; pDstBuf: Pointer; dwBufSise: DWORD; begin lpszName := 'IFIMGCNV1'; hDeviceHandle := ImgOpen(lpszName); // RGB32bit の出力画像を作成 dwSize := 640*480*4; pDstBuf := AllocMem(dwSize); // データ読み込み nRet := ImgGetStillPictureData(hDeviceHandle, pDstBuf); © 2003, 2016 Interface Corporation. All rights reserved. 330 GPC-5520 Help for Windows ●Visual C# .NET IntPtr hDeviceHandle; int nRet; uint pSrcBuf[307200]; // デバイスオープン hDeviceHandle = IFCIMG_ANY.ImgOpen("IFIMGCNV1"); // RGB32bit の出力画像を作成 : // 映像出力端子を静止画出力モードへセット nRet = IFCIMG_ANY.ImgSetOutputMode(hDeviceHandle, IFCIMG_ANY.IFIMG_OUTMODE_STILL_PICTURE); // データ書き込み nRet = IFCIMG_ANY.ImgGetStillPictureData(hDeviceHandle, pSrcBuf); ●Visual Basic Dim lpszName As String Dim hDeviceHandle As IntPtr Dim nRet As Integer Dim pSrcBuf(307200) As Integer lpszName = “IFIMGCNV1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : ' RGB32bit の出力画像を作成 : ' 映像出力端子を静止画出力モードへセット nRet = IFCIMG_ANY.ImgSetOutputMode(hDeviceHandle, IFCIMG_ANY.IFIMG_OUTMODE_STILL_PICTURE) ' データ書き込み nRet = IFCIMG_ANY.ImgGetStillPictureData(hDeviceHandle, pSrcBuf) © 2003, 2016 Interface Corporation. All rights reserved. 331 GPC-5520 Help for Windows ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; nRet: Integer; pSrcBuf: array of Cardinal; dwSize: Cardinal; begin lpszName := 'IFIMGCNV1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); // RGB32bit 画像領域確保 dwSize := 9216000; Setlength(pCaptureData, pSrcBuf); : // RGB32bit の出力画像を作成 : // 映像出力端子を静止画出力モードへセット nRet :=IFCIMG.ImgSetOutputMode(hDeviceHandle, IFCIMG.IFIMG_OUTMODE_STILL_PICTURE); // データ書き込み nRet := IFCIMG.ImgGetStillPictureData(hDeviceHandle, pSrcBuf); デバイス名「IFIMGCNV1」のデバイスに対して、静止画データを読み込みます。 © 2003, 2016 Interface Corporation. All rights reserved. 332 GPC-5520 Help for Windows 42. ImgSetLabelingConfig ラベリング処理時の 4 連結、8 連結を選択します。 【書式】 ●C 言語 INT ImgSetLabelingConfig( HANDLE hDeviceHandle, DWORD dwConnection ); // // デバイスハンドル 連結方法の選択 ●Visual Basic Declare Function ImgSetLabelingConfig Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByRef dwConnection As Long _ ‘ 連結方法の選択 )As Long ●Delphi function ImgSetLabelingConfig( hDeviceHandle: THandle, // デバイスハンドル dwConnection: DWORD // 連結方法の選択 ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetLabelingConfig( IntPtr hDeviceHandle, // デバイスハンドル uint dwConnection // 連結方法の選択 ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetLabelingConfig( uint hDeviceHandle, // デバイスハンドル uint dwConnection // 連結方法の選択 ); ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetLabelingConfig Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル RyVal dwConnection As Integer ‘ 連結方法の選択 )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgSetLabelingConfig Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル RyVal dwConnection As Integer ‘ 連結方法の選択 )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 333 GPC-5520 Help for Windows ●Delphi 8 class function ImgSetLabelingConfig( hDeviceHandle: Integer; dwConnection: Cardinal ): Integer; static; // // デバイスハンドル 連結方法の選択 【パラメータ】 hDeviceHandle 関数で取得したデバイスハンドルを指定してください。 dwConnection 4 連結と 8 連結処理を選択します。 識別子 IFIMG_FOUR_CONNECTION IFIMG_EIGHT_CONNECTION 値 00000000h 00000001h 意味 4 連結 8 連結 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 © 2003, 2016 Interface Corporation. All rights reserved. 334 GPC-5520 Help for Windows ●C 言語 HANDLE hDeviceHandle; int nRet; PBYTE pSrcBuf; DWORD dwBufSise; IMGCAPSTATUS Status; IMGBUFFERINFO BufInfo; IMGBINCONFIG BinConf; hDeviceHandle = ImgOpen("IFIMGLBL1"); // 2 値化設定 BinConf.dwColorIngredient = IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold = 255; BinConf.dwMinthreshold = 128; BinConf.dwBinarizationMode = IFIMG_BINMODE_NORMAL; nRet = ImgSetBinarizationConfig(hDeviceHandle, &BinConf); // ラベリングの連結選択 nRet = ImgSetLabelingConfig(hDeviceHandle, IFIMG_EIGHT_CONNECTION); // 2 値画像領域確保 dwBufSise = 640*480; pSrcBuf = (PBYTE)malloc(dwBufSise); // 画像情報を設定 BufInfo.pBufferAddress = pSrcBuf; BufInfo.dwBufferSize = dwBufSise; nRet=ImgSetBuffer(hDeviceHandle,&BufInfo, IFIMG_COLOR_LABEL8); // 1 フレームキャプチャ開始 nRet = ImgStartCapture(hDeviceHandle,1, IFIMG_DMACAPTURE_START); // 完了まで待つ。 do{ nRet = ImgGetCaptureStatus(hDeviceHandle, &Status); }while(Status.dwCapture & 0x01); © 2003, 2016 Interface Corporation. All rights reserved. 335 GPC-5520 Help for Windows ●Visual Basic Dim lpszName As String Dim hDeviceHandle As Long Dim Status As IMGCAPSTATUS Dim BinConf As IMGBINCONFIG Dim nRet As Long Dim buffer(307200) As Byte Dim buffersize As Long lpszName = "IFIMGLBL1" hDeviceHandle = ImgOpen(lpszName) ' 2 値化設定 BinConf.dwColorIngredient = IFIMG_INGREDIENT_GRAY BinConf.dwMaxthreshold = 255 BinConf.dwMinthreshold = 128 BinConf.dwBinarizationMode = IFIMG_BINMODE_NORMAL nRet = ImgSetBinarizationConfig(hDeviceHandle, BinConf) ' ラベリングの連結選択 nRet = ImgSetLabelingConfig(hDeviceHandle, IFIMG_EIGHT_CONNECTION) '2 値画像領域確保 buffersize = 307200 nRet = ImgSetBufferVB(hDeviceHandle, buffer(0), buffersize, IFIMG_COLOR_LABEL8) ' 1 フレームキャプチャ開始 nRet = ImgStartCapture(hDeviceHandle, 1, IFIMG_DMACAPTURE_START) ' キャプチャ完了まで待つ Do nRet = ImgGetCaptureStatus(hDeviceHandle, Status) Loop While Status.dwCapture And &H1 © 2003, 2016 Interface Corporation. All rights reserved. 336 GPC-5520 Help for Windows ●Delphi var lpszName: String; hDeviceHandle: THandle; nRet: Integer; pSrcBuf: Pointer; dwSize: DWORD; Status: IMGCAPSTATUS; BufInfo: IMGBUFFERINFO; BinConf: IMGBINCONFIG; begin lpszName := 'IFIMGLBL1'; hDeviceHandle := ImgOpen(lpszName); BinConf.dwColorIngredient := IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold := 255; BinConf.dwMinthreshold := 128; BinConf.dwBinarizationMode := IFIMG_BINMODE_NORMAL; nRet := ImgSetBinarizationConfig(hDeviceHandle, BinConf); // ラベリングの連結選択 nRet := ImgSetLabelingConfig(hDeviceHandle, IFIMG_EIGHT_CONNECTION); // 2 値画像領域確保 dwSize := 640*480; pSrcBuf := AllocMem(dwSize); // 画像情報を設定 BufInfo.pBufferAddress := pSrcBuf; BufInfo.dwBufferSize := dwSize; nRet := ImgSetBuffer(hDeviceHandle, BufInfo, IFIMG_COLOR_LABEL8); // 1 フレームキャプチャ開始 nRet := ImgStartCapture(hDeviceHandle,1, IFIMG_DMACAPTURE_START); // 完了まで待つ repeat nRet := ImgGetCaptureStatus(hDeviceHandle, Status); until (Status.dwCapture and $01) <> $01; © 2003, 2016 Interface Corporation. All rights reserved. 337 GPC-5520 Help for Windows ●Visual C# .NET IntPtr hDeviceHandle; int nRet; IntPtr pSrcBuf; uint dwBufSise; IFCIMG_ANY.IMGCAPSTATUS IFCIMG_ANY.IMGBUFFERINFO IFCIMG_ANY.IMGBINCONFIG Status; BufInfo; BinConf; hDeviceHandle = IFCIMG_ANY.ImgOpen("IFIMGLBL1"); // 2 値化設定 BinConf.dwColorIngredient = IFCIMG_ANY.IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold = 255; BinConf.dwMinthreshold = 128; BinConf.dwBinarizationMode = IFCIMG_ANY.IFIMG_BINMODE_NORMAL; nRet = IFCIMG_ANY.ImgSetBinarizationConfig(hDeviceHandle, ref BinConf); // ラベリングの連結選択 nRet = IFCIMG_ANY.ImgSetLabelingConfig(hDeviceHandle, IFCIMG_ANY.IFIMG_EIGHT_CONNECTION); // 2 値画像領域確保 dwBufSise = 640*480; pSrcBuf = Marshal.AllocCoTaskMem((int)dwBufSise); // 画像情報を設定 BufInfo.pBufferAddress = pSrcBuf; BufInfo.dwBufferSize = dwBufSise; nRet=ImgSetBuffer(hDeviceHandle, ref BufInfo, IFCIMG_ANY.IFIMG_COLOR_LABEL8); // 1 フレームキャプチャ開始 nRet = IFCIMG_ANY.ImgStartCapture(hDeviceHandle,1, IFCIMG_ANY.IFIMG_DMACAPTURE_START); // 完了まで待つ。 do{ nRet = IFCIMG_ANY.ImgGetCaptureStatus(hDeviceHandle, out Status); }while(Status.dwCapture & 0x01); © 2003, 2016 Interface Corporation. All rights reserved. 338 GPC-5520 Help for Windows ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim Status As IFCIMG_ANY.IMGCAPSTATUS Dim BinConf As IFCIMG_ANY.IMGBINCONFIG Dim nRet As Intger Dim buffer(307200) As byte Dim buffersize As Integer lpszName = "IFIMGLBL1" hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) ' 2 値化設定 BinConf.dwColorIngredient = IFCIMG_ANY.IFIMG_INGREDIENT_GRAY BinConf.dwMaxthreshold = 255 BinConf.dwMinthreshold = 128 BinConf.dwBinarizationMode = IFCIMG_ANY.IFIMG_BINMODE_NORMAL nRet = IFCIMG_ANY.ImgSetBinarizationConfig(hDeviceHandle, BinConf) ' ラベリングの連結選択 nRet = IFCIMG_ANY.ImgSetLabelingConfig(hDeviceHandle, IFCIMG_ANY.IFIMG_EIGHT_CONNECTION) '2 値画像領域確保 buffersize = 307200 nRet = IFCIMG_ANY.ImgSetBufferVB(_ hDeviceHandle, buffer, buffersize, IFCIMG_ANY.IFIMG_COLOR_LABEL8) ' 1 フレームキャプチャ開始 nRet = IFCIMG_ANY.ImgStartCapture(hDeviceHandle, 1, IFCIMG_ANY.IFIMG_DMACAPTURE_START) ' キャプチャ完了まで待つ Do nRet = IFCIMG_ANY.ImgGetCaptureStatus(hDeviceHandle, Status) Loop While Status.dwCapture And &H1 © 2003, 2016 Interface Corporation. All rights reserved. 339 GPC-5520 Help for Windows ●Delphi var lpszName: String; hDeviceHandle: Integer; nRet: Integer; pSrcBuf: IntPtr; dwSize: Integr; Status: IFCIMG.IMGCAPSTATUS; BufInfo: IFCIMG.IMGBUFFERINFO; BinConf: IFCIMG.IMGBINCONFIG; begin lpszName := 'IFIMGLBL1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); BinConf.dwColorIngredient := IFCIMG.IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold := 255; BinConf.dwMinthreshold := 128; BinConf.dwBinarizationMode := IFCIMG.IFIMG_BINMODE_NORMAL; nRet := IFCIMG.ImgSetBinarizationConfig(hDeviceHandle, ref BinConf); // ラベリングの連結選択 nRet := IFCIMG.ImgSetLabelingConfig(hDeviceHandle, IFCIMG.IFIMG_EIGHT_CONNECTION); // 2 値画像領域確保 dwSize := 640*480; pSrcBuf := Marshal.AllocHGlobal(dwSize); // 画像情報を設定 BufInfo.pBufferAddress := pSrcBuf; BufInfo.dwBufferSize := dwSize; nRet := IFCIMG.ImgSetBuffer(hDeviceHandle, BufInfo, IFCIMG.IFIMG_COLOR_LABEL8); // 1 フレームキャプチャ開始 nRet := IFCIMG.ImgStartCapture(hDeviceHandle,1, IFCIMG.IFIMG_DMACAPTURE_START); // 完了まで待つ repeat nRet := IFCIMG.ImgGetCaptureStatus(hDeviceHandle, Status); until (Status.dwCapture and $01) <> $01; デバイス名「IFIMGLBL1」のデバイスに対して、ラベリング処理後の画像データをキャプチャ します。 © 2003, 2016 Interface Corporation. All rights reserved. 340 GPC-5520 Help for Windows 43. ImgGetMeasurementValueLBL 全ラベルか、指定したラベル番号の面積値、重心座標、フェレ径、慣性主軸の角度を取得します。 【書式】 ●C 言語 INT ImgGetMeasurementValueLBL( HANDLE hDeviceHandle, PVOID pSrcData, DWORD dwFrameNum, PDWORD pdwLabelNum, PIMGMEASURE pImgMeaSure ); // // // // // デバイスハンドル DMA 転送先バッファの先頭アドレス フレーム番号 ラベル番号 IMGMEASURE 構造体 ●Visual Basic Declare Function ImgGetMeasurementValueLBL Lib "IfImg.dll"( _ ByVal hDeviceHandle, As Long, _ ‘ デバイスハンドル RyRef pSrcData, As Any, _ ‘ DMA 転送先バッファの ‘ 参照渡し ByVal dwFrameNum, As Long, _ ‘ フレーム番号 ByRef pdwLabelNum, As Long, _ ‘ ラベル番号 ByRef pImgMeaSure As IMGMEASURE _ ‘ IMGMEASURE 構造体 )As Long ●Delphi function ImgGetMeasurementValueLBL ( hDeviceHandle, THandle; // pSrcData, Pointer; // dwFrameNum, DWORD; // var pdwLabelNum, DWORD; // var pImgMeaSure IMGMEASURE // ): Integer; stdcall; external 'IfImg.dll'; デバイスハンドル DMA 転送先バッファの参照渡し フレーム番号 ラベル番号 IMGMEASURE 構造体 ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgGetMeasurementValueLBL( IntPtr hDeviceHandle, // デバイスハンドル IntPtr pSrcData, // DMA 転送先バッファの先頭アドレス uint dwFrameNum, // フレーム番号 out uint pdwLabelNum, // ラベル番号 ref IMGMEASURE pMeasure // IMGMEASURE 構造体 ); © 2003, 2016 Interface Corporation. All rights reserved. 341 GPC-5520 Help for Windows [DllImport("IfImg.dll")] public static extern int ImgGetMeasurementValueLBL( IntPtr hDeviceHandle, // デバイスハンドル byte[] pSrcData, // DMA 転送先バッファの先頭アドレス uint dwFrameNum, // フレーム番号 out uint pdwLabelNum, // ラベル番号 ref IMGMEASURE pMeasure // IMGMEASURE 構造体 ); [DllImport("IfImg.dll")] public static extern int ImgGetMeasurementValueLBL( IntPtr hDeviceHandle, // デバイスハンドル short[] pSrcData, // DMA 転送先バッファの先頭アドレス uint dwFrameNum, // フレーム番号 out uint pdwLabelNum, // ラベル番号 ref IMGMEASURE pMeasure // IMGMEASURE 構造体 ); [DllImport("IfImg.dll")] public static extern int ImgGetMeasurementValueLBL( IntPtr hDeviceHandle, // デバイスハンドル uint[] pSrcData, // DMA 転送先バッファの先頭アドレス uint dwFrameNum, // フレーム番号 out uint pdwLabelNum, // ラベル番号 ref IMGMEASURE pMeasure // IMGMEASURE 構造体 ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgGetMeasurementValueLBL( uint hDeviceHandle, // デバイスハンドル IntPtr pSrcData, // DMA 転送先バッファの先頭アドレス uint dwFrameNum, // フレーム番号 out uint pdwLabelNum, // ラベル番号 ref IMGMEASURE pMeasure // IMGMEASURE 構造体 ); [DllImport("IfImg.dll")] public static extern int ImgGetMeasurementValueLBL( uint hDeviceHandle, // デバイスハンドル byte[] pSrcData, // DMA 転送先バッファの先頭アドレス uint dwFrameNum, // フレーム番号 out uint pdwLabelNum, // ラベル番号 ref IMGMEASURE pMeasure // IMGMEASURE 構造体 ); © 2003, 2016 Interface Corporation. All rights reserved. 342 GPC-5520 Help for Windows [DllImport("IfImg.dll")] public static extern int ImgGetMeasurementValueLBL( uint hDeviceHandle, // デバイスハンドル short[] pSrcData, // DMA 転送先バッファの先頭アドレス uint dwFrameNum, // フレーム番号 out uint pdwLabelNum, // ラベル番号 ref IMGMEASURE pMeasure // IMGMEASURE 構造体 ); [DllImport("IfImg.dll")] public static extern int ImgGetMeasurementValueLBL( uint hDeviceHandle, // デバイスハンドル uint[] pSrcData, // DMA 転送先バッファの先頭アドレス uint dwFrameNum, // フレーム番号 out uint pdwLabelNum, // ラベル番号 ref IMGMEASURE pMeasure // IMGMEASURE 構造体 ); ●Visual Basic .NET(x86、x64 共用) Declare Function ImgGetMeasurementValueLBL ByVal hDeviceHandle, As IntPtr, RyVal pSrcData, As IntPtr, ByVal dwFrameNum, As Integer, ByRef pdwLabelNum, As Integer, ByRef pImgMeaSure As IMGMEASURE ) As Integer Lib "IfImg.DLL"( ‘ デバイスハンドル ‘ DMA 転送先バッファの参照渡し ‘ フレーム番号 ‘ ラベル番号 ‘ IMGMEASURE 構造体 Declare Function ImgGetMeasurementValueLBL ByVal hDeviceHandle, As IntPtr, RyVal pSrcData( ), As Byte, ByVal dwFrameNum, As Integer, ByRef pdwLabelNum, As Integer, ByRef pImgMeaSure As IMGMEASURE ) As Integer Lib "IfImg.DLL"( ‘ デバイスハンドル ‘ DMA 転送先バッファの参照渡し ‘ フレーム番号 ‘ ラベル番号 ‘ IMGMEASURE 構造体 Declare Function ImgGetMeasurementValueLBL ByVal hDeviceHandle, As IntPtr, RyVal pSrcData( ), As Short, ByVal dwFrameNum, As Integer, ByRef pdwLabelNum, As Integer, ByRef pImgMeaSure As IMGMEASURE ) As Integer Lib "IfImg.DLL"( ‘ デバイスハンドル ‘ DMA 転送先バッファの参照渡し ‘ フレーム番号 ‘ ラベル番号 ‘ IMGMEASURE 構造体 © 2003, 2016 Interface Corporation. All rights reserved. 343 GPC-5520 Help for Windows Declare Function ImgGetMeasurementValueLBL ByVal hDeviceHandle, As IntPtr, RyVal pSrcData( ), As Integer, ByVal dwFrameNum, As Integer, ByRef pdwLabelNum, As Integer, ByRef pImgMeaSure As IMGMEASURE ) As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgGetMeasurementValueLBL ByVal hDeviceHandle, As Integer, RyRef pSrcData, As IntPtr, ByVal dwFrameNum, As Integer, ByRef pdwLabelNum, As Integer, ByRef pImgMeaSure As IMGMEASURE ) As Integer Lib "IfImg.DLL"( ‘ デバイスハンドル ‘ DMA 転送先バッファの参照渡し ‘ フレーム番号 ‘ ラベル番号 ‘ IMGMEASURE 構造体 Lib "IfImg.DLL"( ‘ デバイスハンドル ‘ DMA 転送先バッファの参照渡し ‘ フレーム番号 ‘ ラベル番号 ‘ IMGMEASURE 構造体 Declare Function ImgGetMeasurementValueLBL ByVal hDeviceHandle, As Integer, RyVal pSrcData( ), As Byte, ByVal dwFrameNum, As Integer, ByRef pdwLabelNum, As Integer, ByRef pImgMeaSure As IMGMEASURE ) As Integer Lib "IfImg.DLL"( ‘ デバイスハンドル ‘ DMA 転送先バッファの参照渡し ‘ フレーム番号 ‘ ラベル番号 ‘ IMGMEASURE 構造体 Declare Function ImgGetMeasurementValueLBL ByVal hDeviceHandle, As Integer, RyVal pSrcData( ), As Short, ByVal dwFrameNum, As Integer, ByRef pdwLabelNum, As Integer, ByRef pImgMeaSure As IMGMEASURE ) As Integer Lib "IfImg.DLL"( ‘ デバイスハンドル ‘ DMA 転送先バッファの参照渡し ‘ フレーム番号 ‘ ラベル番号 ‘ IMGMEASURE 構造体 Declare Function ImgGetMeasurementValueLBL ByVal hDeviceHandle, As Integer, RyVal pSrcData( ), As Integer, ByVal dwFrameNum, As Integer, ByRef pdwLabelNum, As Integer, ByRef pImgMeaSure As IMGMEASURE ) As Integer Lib "IfImg.DLL"( ‘ デバイスハンドル ‘ DMA 転送先バッファの参照渡し ‘ フレーム番号 ‘ ラベル番号 ‘ IMGMEASURE 構造体 © 2003, 2016 Interface Corporation. All rights reserved. 344 GPC-5520 Help for Windows ●Delphi 8 class function ImgGetMeasurementValueLBL ( hDeviceHandle, Integer; // デバイスハンドル pSrcData, IntPtr; // DMA 転送先バッファの参照渡し dwFrameNum, Cardinal; // フレーム番号 var pdwLabelNum, Cardinal; // ラベル番号 var pImgMeaSure IMGMEASURE // IMGMEASURE 構造体 ): Integer; static; class function ImgGetMeasurementValueLBL ( hDeviceHandle, Integer; // デバイスハンドル pSrcData, array of Byte; // DMA 転送先バッファの参照渡し dwFrameNum, Cardinal; // フレーム番号 var pdwLabelNum, Cardinal; // ラベル番号 var pImgMeaSure IMGMEASURE // IMGMEASURE 構造体 ): Integer; static; class function ImgGetMeasurementValueLBL ( hDeviceHandle, Integer; // デバイスハンドル pSrcData, array of Word; // DMA 転送先バッファの参照渡し dwFrameNum, Cardinal; // フレーム番号 var pdwLabelNum, Cardinal; // ラベル番号 var pImgMeaSure IMGMEASURE // IMGMEASURE 構造体 ): Integer; static; class function ImgGetMeasurementValueLBL ( hDeviceHandle, Integer; // デバイスハンドル pSrcData, array of Cardinal; // DMA 転送先バッファの参照渡し dwFrameNum, Cardinal; // フレーム番号 var pdwLabelNum, Cardinal; // ラベル番号 var pImgMeaSure IMGMEASURE // IMGMEASURE 構造体 ): Integer; static; 【パラメータ】 hDeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 pSrcData ImgSetBuffer 関数(もしくは ImgSetBufferVB 関数)で指定した転送先バッファの先頭アド レスを指定します。 x64 環境で使用する場合、ImgGetMemPtrValue 関数で取得した先頭アドレスを指定します。 dwFrameNum フレーム番号を指定します。 © 2003, 2016 Interface Corporation. All rights reserved. 345 GPC-5520 Help for Windows pdwLabelNum 取得したいラベル番号を格納している変数の先頭アドレスを指定します。 変数に 1~63 を格納した場合、そのラベル番号の画像計測結果を取得します。 64 以上を格納した場合は、実際の画像処理結果後の最大ラベル番号を取得します。 さらに、変数に格納したラベル番号が、最大ラベル番号を超えていた場合、その最大ラベ ル番号が変数に格納されます。 pMeaSure IMGMEASURE 構造体へのポインタを指定してください。 pdwLabelNum で指定したラベル番号に対する画像処理結果が可能されます。 全てのブロックの画像処理結果を欲しい場合、pdwLabelNum で指示する変数に 64 以上の値 を格納して、pMeaSure には要素数が 64 の構造体配列の先頭ポインタ(参照渡し)を指定し てください。 構造体の説明については、『4.4 構造体』をご参照ください。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 © 2003, 2016 Interface Corporation. All rights reserved. 346 GPC-5520 Help for Windows 【使用例】 ●C 言語(x86) HANDLE hDeviceHandle; int nRet; PBYTE pSrcBuf; DWORD dwBufSise; IMGCAPSTATUS Status; IMGBUFFERINFO BufInfo; IMGBINCONFIG BinConf; IMGMEASURE pMeasure[64]; DWORD dwLblNum; hDeviceHandle = ImgOpen("IFIMGLBL1"); // 2 値化設定 BinConf.dwColorIngredient = IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold = 255; BinConf.dwMinthreshold = 128; BinConf.dwBinarizationMode = IFIMG_BINMODE_NORMAL; nRet = ImgSetBinarizationConfig(hDeviceHandle, &BinConf); // ラベリングの連結選択 nRet = ImgSetLabelingConfig(hDeviceHandle, IFIMG_EIGHT_CONNECTION); // ラベル画像のサイズ dwBufSise = 640*480; // ラベル数(4Byte)、面積値(256byte)、ΣX とΣY(512Byte)、フェレ径(512byte)、 // ΣX2、ΣXY、ΣY2 (1536byte)のサイズ dwBufSise = dwBufSise + 4 + 256 + 512 + 512 + 1536; pSrcBuf = (PBYTE)malloc(dwBufSise); // 画像情報を設定 BufInfo.pBufferAddress = pSrcBuf; BufInfo.dwBufferSize = dwBufSise; nRet=ImgSetBuffer(hDeviceHandle,&BufInfo, IFIMG_COLOR_LABEL8 + IFIMG_MEASUEMENT_LBLCNT + IFIMG_MEASUEMENT_AREA + IFIMG_MEASUEMENT_GRV + IFIMG_MEASUEMENT_FERE IFIMG_MEASUEMENT_ELLIPSE ); // 1 フレームキャプチャ開始 nRet = ImgStartCapture(hDeviceHandle,1, IFIMG_DMACAPTURE_START); // 完了まで待つ。 do{ nRet = ImgGetCaptureStatus(hDeviceHandle, &Status); }while(Status.dwCapture & 0x01); © 2003, 2016 Interface Corporation. All rights reserved. 347 + GPC-5520 Help for Windows dwLblNum = 64; // 全ラベルの面積値、重心値、フェレ径、慣性等価楕円の傾き角の取得 nRet = ImgGetMeasurementValueLBL(hDeviceHandle, pSrcBuf, 1,&dwLblNum, pMeasure); ●C 言語(x64) HANDLE hDeviceHandle; int nRet; PBYTE pSrcBuf; DWORD dwBufSise; IMGCAPSTATUS Status; IMGBUFFERINFO BufInfo; IMGBINCONFIG BinConf; IMGMEASURE pMeasure[64]; DWORD dwLblNum; hDeviceHandle = ImgOpen("IFIMGLBL1"); // 2 値化設定 BinConf.dwColorIngredient = IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold = 255; BinConf.dwMinthreshold = 128; BinConf.dwBinarizationMode = IFIMG_BINMODE_NORMAL; nRet = ImgSetBinarizationConfig(hDeviceHandle, &BinConf); // ラベリングの連結選択 nRet = ImgSetLabelingConfig(hDeviceHandle, IFIMG_EIGHT_CONNECTION); // ラベル画像のサイズ dwBufSise = 640*480; // ラベル数(4Byte)、面積値(256byte)、ΣX とΣY(512Byte)、フェレ径(512byte)、 // ΣX2、ΣXY、ΣY2 (1536byte)のサイズ dwBufSise = dwBufSise + 4 + 256 + 512 + 512 + 1536; // 画像情報を設定 BufInfo.pBufferAddress = (PVOID)-1; BufInfo.dwBufferSize = dwBufSise; nRet=ImgSetBuffer(hDeviceHandle,&BufInfo, IFIMG_COLOR_LABEL8 + IFIMG_MEASUEMENT_LBLCNT + IFIMG_MEASUEMENT_AREA + IFIMG_MEASUEMENT_GRV + IFIMG_MEASUEMENT_FERE IFIMG_MEASUEMENT_ELLIPSE ); nRet = ImgGetMemPtrValue(DeviceHandle, &pSrcBuf); // 1 フレームキャプチャ開始 nRet = ImgStartCapture(hDeviceHandle,1, IFIMG_DMACAPTURE_START); // 完了まで待つ。 © 2003, 2016 Interface Corporation. All rights reserved. 348 + GPC-5520 Help for Windows do{ nRet = ImgGetCaptureStatus(hDeviceHandle, &Status); }while(Status.dwCapture & 0x01); dwLblNum = 64; // 全ラベルの面積値、重心値、フェレ径、慣性等価楕円の傾き角の取得 nRet = ImgGetMeasurementValueLBL(hDeviceHandle, pSrcBuf, 1,&dwLblNum, pMeasure); © 2003, 2016 Interface Corporation. All rights reserved. 349 GPC-5520 Help for Windows ●Visual Basic(x86) Dim lpszName As String Dim hDeviceHandle As Long Dim Status As IMGCAPSTATUS Dim BinConf As IMGBINCONFIG Dim nRet As Long Dim buffer(307200) As Byte Dim buffersize As Long Dim pMeasure(64) As IMGMEASURE Dim LblNum As Long lpszName = "IFIMGLBL1" hDeviceHandle = ImgOpen(lpszName) ' 2 値化設定 BinConf.dwColorIngredient = IFIMG_INGREDIENT_GRAY BinConf.dwMaxthreshold = 255 BinConf.dwMinthreshold = 128 BinConf.dwBinarizationMode = IFIMG_BINMODE_NORMAL nRet = ImgSetBinarizationConfig(hDeviceHandle, BinConf) ' ラベリングの連結選択 nRet = ImgSetLabelingConfig(hDeviceHandle, IFIMG_EIGHT_CONNECTION) ' ラベル画像のサイズ buffersize = 640*480 ' ラベル数(4Byte)、面積値(256byte)、ΣX とΣY(512Byte)、フェレ径(512byte)、 ' ΣX2、ΣXY、ΣY2 (1536byte)のサイズ buffersize = buffersize + 4 + 256 + 512 + 512 + 1536 nRet = ImgSetBufferVB(hDeviceHandle, buffer(0), buffersize, _ IFIMG_COLOR_LABEL8 + IFIMG_MEASUEMENT_LBLCNT + IFIMG_MEASUEMENT_AREA _ + IFIMG_MEASUEMENT_GRV + IFIMG_MEASUEMENT_FERE IFIMG_MEASUEMENT_ELLIPSE) + ' 1 フレームキャプチャ開始 nRet = ImgStartCapture(hDeviceHandle, 1, IFIMG_DMACAPTURE_START) ' キャプチャ完了まで待つ Do nRet = ImgGetCaptureStatus(hDeviceHandle, Status) Loop While Status.dwCapture And &H1 LblNum = 64 ‘ 全ラベルの面積値、重心値、フェレ径、慣性等価楕円の傾き角の取得 nRet = ImgGetMeasurementValueLBL(hDeviceHandle, buffer(0), 1, LblNum, pMeasure(0)) © 2003, 2016 Interface Corporation. All rights reserved. 350 GPC-5520 Help for Windows ●Visual Basic(x64) Dim lpszName As String Dim hDeviceHandle As Long Dim Status As IMGCAPSTATUS Dim BinConf As IMGBINCONFIG Dim nRet As Long Dim buffer As Long Dim buffersize As Long Dim pMeasure(64) As IMGMEASURE Dim LblNum As Long lpszName = "IFIMGLBL1" hDeviceHandle = ImgOpen(lpszName) ' 2 値化設定 BinConf.dwColorIngredient = IFIMG_INGREDIENT_GRAY BinConf.dwMaxthreshold = 255 BinConf.dwMinthreshold = 128 BinConf.dwBinarizationMode = IFIMG_BINMODE_NORMAL nRet = ImgSetBinarizationConfig(hDeviceHandle, BinConf) ' ラベリングの連結選択 nRet = ImgSetLabelingConfig(hDeviceHandle, IFIMG_EIGHT_CONNECTION) ' ラベル画像のサイズ buffersize = 640*480 ' ラベル数(4Byte)、面積値(256byte)、ΣX とΣY(512Byte)、フェレ径(512byte)、 ' ΣX2、ΣXY、ΣY2 (1536byte)のサイズ buffersize = buffersize + 4 + 256 + 512 + 512 + 1536 nRet = ImgSetBufferVB(hDeviceHandle, ByVal -1, buffersize, _ IFIMG_COLOR_LABEL8 + IFIMG_MEASUEMENT_LBLCNT + IFIMG_MEASUEMENT_AREA _ + IFIMG_MEASUEMENT_GRV + IFIMG_MEASUEMENT_FERE IFIMG_MEASUEMENT_ELLIPSE) nRet = ImgGetMemPtrValue(hDeviceHandle, buffer) ' 1 フレームキャプチャ開始 nRet = ImgStartCapture(hDeviceHandle, 1, IFIMG_DMACAPTURE_START) ' キャプチャ完了まで待つ Do nRet = ImgGetCaptureStatus(hDeviceHandle, Status) Loop While Status.dwCapture And &H1 LblNum = 64 ‘ 全ラベルの面積値、重心値、フェレ径、慣性等価楕円の傾き角の取得 nRet = ImgGetMeasurementValueLBL(hDeviceHandle, buffer, 1, LblNum, pMeasure(0)) © 2003, 2016 Interface Corporation. All rights reserved. 351 + GPC-5520 Help for Windows ●Delphi(x86) var lpszName: String; hDeviceHandle: THandle; nRet: Integer; pSrcBuf: Pointer; dwSize: DWORD; Status: IMGCAPSTATUS; BufInfo: IMGBUFFERINFO; BinConf: IMGBINCONFIG; pMeasure: array[0..63] of IMGMEASURE; dwLblNum: DWORD; begin lpszName := 'IFIMGLBL1'; hDeviceHandle := ImgOpen(lpszName); BinConf.dwColorIngredient := IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold := 255; BinConf.dwMinthreshold := 128; BinConf.dwBinarizationMode := IFIMG_BINMODE_NORMAL; nRet := ImgSetBinarizationConfig(hDeviceHandle, BinConf); // ラベリングの連結選択 nRet := ImgSetLabelingConfig(hDeviceHandle, IFIMG_EIGHT_CONNECTION); // ラベル画像のサイズ dwSize := 640*480; // ラベル数(4Byte)、面積値(256byte)、ΣX とΣY(512Byte)、フェレ径(512byte)、 // ΣX2、ΣXY、ΣY2 (1536byte)のサイズ dwSize := dwSize + 4 + 256 + 512 + 512 + 1536; pSrcBuf := AllocMem(dwSize); // 画像情報を設定 BufInfo.pBufferAddress := pSrcBuf; BufInfo.dwBufferSize := dwSize; nRet := ImgSetBuffer(hDeviceHandle, BufInfo, IFIMG_COLOR_LABEL8 + IFIMG_MEASUEMENT_LBLCNT + IFIMG_MEASUEMENT_AREA + IFIMG_MEASUEMENT_GRV + IFIMG_MEASUEMENT_FERE IFIMG_MEASUEMENT_ELLIPSE ); // 1 フレームキャプチャ開始 nRet := ImgStartCapture(hDeviceHandle,1, IFIMG_DMACAPTURE_START); // 完了まで待つ © 2003, 2016 Interface Corporation. All rights reserved. 352 + GPC-5520 Help for Windows repeat nRet := ImgGetCaptureStatus(hDeviceHandle, Status); until (Status.dwCapture and $01) <> $01; dwLblNum := 64; // 全ラベルの面積値、重心値、フェレ径、慣性等価楕円の傾き角の取得 nRet := ImgGetMeasurementValueLBL(hDeviceHandle, pSrcBuf ,1, dwLblNum, pMeasure[0]); ●Delphi(x64) var lpszName: String; hDeviceHandle: THandle; nRet: Integer; pSrcBuf: Pointer; dwSize: DWORD; Status: IMGCAPSTATUS; BufInfo: IMGBUFFERINFO; BinConf: IMGBINCONFIG; pMeasure: array[0..63] of IMGMEASURE; dwLblNum: DWORD; begin lpszName := 'IFIMGLBL1'; hDeviceHandle := ImgOpen(lpszName); BinConf.dwColorIngredient := IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold := 255; BinConf.dwMinthreshold := 128; BinConf.dwBinarizationMode := IFIMG_BINMODE_NORMAL; nRet := ImgSetBinarizationConfig(hDeviceHandle, BinConf); // ラベリングの連結選択 nRet := ImgSetLabelingConfig(hDeviceHandle, IFIMG_EIGHT_CONNECTION); // ラベル画像のサイズ dwSize := 640*480; // ラベル数(4Byte)、面積値(256byte)、ΣX とΣY(512Byte)、フェレ径(512byte)、 // ΣX2、ΣXY、ΣY2 (1536byte)のサイズ dwSize := dwSize + 4 + 256 + 512 + 512 + 1536; // 画像情報を設定 BufInfo.pBufferAddress := Pointer(-1); BufInfo.dwBufferSize := dwSize; nRet := ImgSetBuffer(hDeviceHandle, BufInfo, IFIMG_COLOR_LABEL8 + IFIMG_MEASUEMENT_LBLCNT + IFIMG_MEASUEMENT_AREA + IFIMG_MEASUEMENT_GRV + IFIMG_MEASUEMENT_FERE IFIMG_MEASUEMENT_ELLIPSE ); © 2003, 2016 Interface Corporation. All rights reserved. 353 + GPC-5520 Help for Windows nRet = ImgGetMemPtrValue(hDeviceHandle, pSrcBuf) // 1 フレームキャプチャ開始 nRet := ImgStartCapture(hDeviceHandle,1, IFIMG_DMACAPTURE_START); // 完了まで待つ repeat nRet := ImgGetCaptureStatus(hDeviceHandle, Status); until (Status.dwCapture and $01) <> $01; dwLblNum := 64; // 全ラベルの面積値、重心値、フェレ径、慣性等価楕円の傾き角の取得 nRet := ImgGetMeasurementValueLBL(hDeviceHandle, pSrcBuf ,1, dwLblNum, pMeasure[0]); ●Visual C# .NET(x86) IntPtr hDeviceHandle; int nRet; IntPtr pSrcBuf; uint dwBufSize; IFCIMG_ANY.IMGCAPSTATUS Status; IFCIMG_ANY.IMGBUFFERINFO BufInfo; IFCIMG_ANY.IMGBINCONFIG BinConf; IFCIMG_ANY.IMGMEASURE pMeasure[64]; uint dwLblNum; hDeviceHandle = IFCIMG_ANY.ImgOpen("IFIMGLBL1"); // 2 値化設定 BinConf.dwColorIngredient = IFCIMG_ANY.IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold = 255; BinConf.dwMinthreshold = 128; BinConf.dwBinarizationMode = IFCIMG_ANY.IFIMG_BINMODE_NORMAL; nRet = IFCIMG_ANY.ImgSetBinarizationConfig(hDeviceHandle, ref BinConf); // ラベリングの連結選択 nRet = IFCIMG_ANY.ImgSetLabelingConfig(hDeviceHandle, IFCIMG_ANY.IFIMG_EIGHT_CONNECTION); // ラベル画像のサイズ dwBufSize = 640*480; // ラベル数(4Byte)、面積値(256byte)、ΣX とΣY(512Byte)、フェレ径(512byte)、 // ΣX2、ΣXY、ΣY2 (1536byte)のサイズ dwBufSize += 4 + 256 + 512 + 512 + 1536; pSrcBuf = Marshal.AllocCoTaskMem((int) dwBufSize); // 画像情報を設定 BufInfo.pBufferAddress = pSrcBuf; BufInfo.dwBufferSize = dwBufSize; © 2003, 2016 Interface Corporation. All rights reserved. 354 GPC-5520 Help for Windows nRet=ImgSetBuffer(hDeviceHandle, ref BufInfo, IFCIMG_ANY.IFIMG_COLOR_LABEL8 + IFCIMG_ANY.IFIMG_MEASUEMENT_LBLCNT + IFCIMG_ANY.IFIMG_MEASUEMENT_AREA + IFCIMG_ANY.IFIMG_MEASUEMENT_GRV + IFCIMG_ANY.IFIMG_MEASUEMENT_FERE + IFCIMG_ANY.IFIMG_MEASUEMENT_ELLIPSE ); // 1 フレームキャプチャ開始 nRet = IFCIMG_ANY.ImgStartCapture(hDeviceHandle,1, IFCIMG_ANY.IFIMG_DMACAPTURE_START); // 完了まで待つ。 do{ nRet = IFCIMG_ANY.ImgGetCaptureStatus(hDeviceHandle, ref Status); }while(Status.dwCapture & 0x01); dwLblNum = 64; // 全ラベルの面積値、重心値、フェレ径、慣性等価楕円の傾き角の取得 nRet = IFCIMG_ANY.ImgGetMeasurementValueLBL(hDeviceHandle,1, ref dwLblNum, ref pMeasure); ●Visual C# .NET(x64) IntPtr hDeviceHandle; int nRet; IntPtr pSrcBuf; uint dwBufSize; IFCIMG_ANY.IMGCAPSTATUS Status; IFCIMG_ANY.IMGBUFFERINFO BufInfo; IFCIMG_ANY.IMGBINCONFIG BinConf; IFCIMG_ANY.IMGMEASURE pMeasure[64]; uint dwLblNum; hDeviceHandle = IFCIMG_ANY.ImgOpen("IFIMGLBL1"); // 2 値化設定 BinConf.dwColorIngredient = IFCIMG_ANY.IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold = 255; BinConf.dwMinthreshold = 128; BinConf.dwBinarizationMode = IFCIMG_ANY.IFIMG_BINMODE_NORMAL; nRet = IFCIMG_ANY.ImgSetBinarizationConfig(hDeviceHandle, ref BinConf); // ラベリングの連結選択 nRet = IFCIMG_ANY.ImgSetLabelingConfig(hDeviceHandle, IFCIMG_ANY.IFIMG_EIGHT_CONNECTION); // ラベル画像のサイズ dwBufSise = 640*480; // ラベル数(4Byte)、面積値(256byte)、ΣX とΣY(512Byte)、フェレ径(512byte)、 // ΣX2、ΣXY、ΣY2 (1536byte)のサイズ © 2003, 2016 Interface Corporation. All rights reserved. 355 GPC-5520 Help for Windows dwBufSize += 4 + 256 + 512 + 512 + 1536; // 画像情報を設定 BufInfo.pBufferAddress = new IntPtr(-1); BufInfo.dwBufferSize = dwBufSize; nRet = ImgSetBuffer(hDeviceHandle, ref BufInfo, IFCIMG_ANY.IFIMG_COLOR_LABEL8 + IFCIMG_ANY.IFIMG_MEASUEMENT_LBLCNT + IFCIMG_ANY.IFIMG_MEASUEMENT_AREA + IFCIMG_ANY.IFIMG_MEASUEMENT_GRV + IFCIMG_ANY.IFIMG_MEASUEMENT_FERE + IFCIMG_ANY.IFIMG_MEASUEMENT_ELLIPSE ); nRet = IFCIMG_ANY.ImgGetMemPtrValue(hDeviceHandle, out pSrcBuf); // 1 フレームキャプチャ開始 nRet = IFCIMG_ANY.ImgStartCapture(hDeviceHandle,1, IFCIMG_ANY.IFIMG_DMACAPTURE_START); // 完了まで待つ。 do{ nRet = IFCIMG_ANY.ImgGetCaptureStatus(hDeviceHandle, ref Status); }while(Status.dwCapture & 0x01); dwLblNum = 64; // 全ラベルの面積値、重心値、フェレ径、慣性等価楕円の傾き角の取得 nRet = IFCIMG_ANY.ImgGetMeasurementValueLBL(hDeviceHandle, pSrcBuf, 1, ref dwLblNum, ref pMeasure); © 2003, 2016 Interface Corporation. All rights reserved. 356 GPC-5520 Help for Windows ●Visual Basic .NET(x86) Dim lpszName As String Dim hDeviceHandle As IntPtr Dim Status As IFCIMG_ANY.IMGCAPSTATUS Dim BinConf As IFCIMG_ANY.IMGBINCONFIG Dim nRet As Integer Dim buffer(307200) As byte Dim buffersize As Integer Dim pMeasure(64) As IFCIMG_ANY.IMGMEASURE Dim LblNum As Integer lpszName = "IFIMGLBL1" hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) ' 2 値化設定 BinConf.dwColorIngredient = IFCIMG_ANY.IFIMG_INGREDIENT_GRAY BinConf.dwMaxthreshold = 255 BinConf.dwMinthreshold = 128 BinConf.dwBinarizationMode = IFCIMG_ANY.IFIMG_BINMODE_NORMAL nRet = IFCIMG_ANY.ImgSetBinarizationConfig(hDeviceHandle, BinConf) ' ラベリングの連結選択 nRet = IFCIMG_ANY.ImgSetLabelingConfig(hDeviceHandle, IFCIMG_ANY.IFIMG_EIGHT_CONNECTION) ' ラベル画像のサイズ buffersize = 640*480 ' ラベル数(4Byte)、面積値(256byte)、ΣX とΣY(512Byte)、フェレ径(512byte)、 ' ΣX2、ΣXY、ΣY2 (1536byte)のサイズ buffersize = buffersize + 4 + 256 + 512 + 512 + 1536 nRet = IFCIMG_ANY.ImgSetBufferVB(hDeviceHandle, buffer(0), buffersize, _ IFCIMG_ANY.IFIMG_COLOR_LABEL8 + IFCIMG_ANY.IFIMG_MEASUEMENT_LBLCNT_ + IFCIMG_ANY.IFIMG_MEASUEMENT_AREA + IFCIMG_ANY.IFIMG_MEASUEMENT_GRV_ + IFCIMG_ANY.IFIMG_MEASUEMENT_FERE + IFCIMG_ANY.IFIMG_MEASUEMENT_ELLIPSE) ' 1 フレームキャプチャ開始 nRet = IFCIMG_ANY.ImgStartCapture(hDeviceHandle, 1, IFCIMG_ANY.IFIMG_DMACAPTURE_START) ' キャプチャ完了まで待つ Do nRet = IFCIMG_ANY.ImgGetCaptureStatus(hDeviceHandle, Status) Loop While Status.dwCapture And &H1 LblNum = 64 ‘ 全ラベルの面積値、重心値、フェレ径、慣性等価楕円の傾き角の取得 nRet = IFCIMG_ANY.ImgGetMeasurementValueLBL(hDeviceHandle, buffer(0), 1,_ © 2003, 2016 Interface Corporation. All rights reserved. 357 GPC-5520 Help for Windows LblNum, pMeasure(0)) ●Visual Basic .NET(x64) Dim lpszName As String Dim hDeviceHandle As IntPtr Dim Status As IFCIMG_ANY.IMGCAPSTATUS Dim BinConf As IFCIMG_ANY.IMGBINCONFIG Dim nRet As Integer Dim buffer As IntPtr Dim buffersize As Integer Dim pMeasure(64) As IFCIMG_ANY.IMGMEASURE Dim LblNum As Integer lpszName = "IFIMGLBL1" hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) ' 2 値化設定 BinConf.dwColorIngredient = IFCIMG_ANY.IFIMG_INGREDIENT_GRAY BinConf.dwMaxthreshold = 255 BinConf.dwMinthreshold = 128 BinConf.dwBinarizationMode = IFCIMG_ANY.IFIMG_BINMODE_NORMAL nRet = IFCIMG_ANY.ImgSetBinarizationConfig(hDeviceHandle, BinConf) ' ラベリングの連結選択 nRet = IFCIMG_ANY.ImgSetLabelingConfig(hDeviceHandle, IFCIMG_ANY.IFIMG_EIGHT_CONNECTION) ' ラベル画像のサイズ buffersize = 640*480 ' ラベル数(4Byte)、面積値(256byte)、ΣX とΣY(512Byte)、フェレ径(512byte)、 ' ΣX2、ΣXY、ΣY2 (1536byte)のサイズ buffersize = buffersize + 4 + 256 + 512 + 512 + 1536 nRet = IFCIMG_ANY.ImgSetBufferVB(hDeviceHandle, New IntPtr(-1), buffersize, _ IFCIMG_ANY.IFIMG_COLOR_LABEL8 + IFCIMG_ANY.IFIMG_MEASUEMENT_LBLCNT_ + IFCIMG_ANY.IFIMG_MEASUEMENT_AREA + IFCIMG_ANY.IFIMG_MEASUEMENT_GRV_ + IFCIMG_ANY.IFIMG_MEASUEMENT_FERE + IFCIMG_ANY.IFIMG_MEASUEMENT_ELLIPSE) nRet = IFCIMG_ANY.ImgGetMemPtrValue(hDeviceHandle, buffer) ' 1 フレームキャプチャ開始 nRet = IFCIMG_ANY.ImgStartCapture(hDeviceHandle, 1, IFCIMG_ANY.IFIMG_DMACAPTURE_START) ' キャプチャ完了まで待つ Do nRet = IFCIMG_ANY.ImgGetCaptureStatus(hDeviceHandle, Status) © 2003, 2016 Interface Corporation. All rights reserved. 358 GPC-5520 Help for Windows Loop While Status.dwCapture And &H1 LblNum = 64 ‘ 全ラベルの面積値、重心値、フェレ径、慣性等価楕円の傾き角の取得 nRet = IFCIMG_ANY.ImgGetMeasurementValueLBL(hDeviceHandle, buffer, 1,_ LblNum, pMeasure(0)) © 2003, 2016 Interface Corporation. All rights reserved. 359 GPC-5520 Help for Windows ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; nRet: Integer; pSrcBuf: IntPtr; dwSize: Integer; Status: IFCIMG.IMGCAPSTATUS; BufInfo: IFCIMG.IMGBUFFERINFO; BinConf: IFCIMG.IMGBINCONFIG; pMeasure: array[0..63] of IFCIMG.IMGMEASURE; dwLblNum: Cardinal; begin lpszName := 'IFIMGLBL1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); BinConf.dwColorIngredient := IFCIMG.IFIMG_INGREDIENT_GRAY; BinConf.dwMaxthreshold := 255; BinConf.dwMinthreshold := 128; BinConf.dwBinarizationMode := IFCIMG.IFIMG_BINMODE_NORMAL; nRet := IFCIMG.ImgSetBinarizationConfig(hDeviceHandle, BinConf); // ラベリングの連結選択 nRet := IFCIMG.ImgSetLabelingConfig(hDeviceHandle, IFCIMG.IFIMG_EIGHT_CONNECTION); // ラベル画像のサイズ dwSize := 640*480; // ラベル数(4Byte)、面積値(256byte)、ΣX とΣY(512Byte)、フェレ径(512byte)、 // ΣX2、ΣXY、ΣY2 (1536byte)のサイズ dwSize := dwSize + 4 + 256 + 512 + 512 + 1536; pSrcBuf := Marshal.AllocHGlobal(dwSize); // 画像情報を設定 BufInfo.pBufferAddress := pSrcBuf; BufInfo.dwBufferSize := dwSize; nRet := IFCIMG.ImgSetBuffer(hDeviceHandle, BufInfo, IFCIMG.IFIMG_COLOR_LABEL8 + IFCIMG.IFIMG_MEASUEMENT_LBLCNT + IFCIMG.IFIMG_MEASUEMENT_AREA + IFCIMG.IFIMG_MEASUEMENT_GRV + IFCIMG.IFIMG_MEASUEMENT_FERE + IFCIMG.IFIMG_MEASUEMENT_ELLIPSE ); // 1 フレームキャプチャ開始 nRet := IFCIMG.ImgStartCapture(hDeviceHandle,1, IFCIMG.IFIMG_DMACAPTURE_START); // 完了まで待つ © 2003, 2016 Interface Corporation. All rights reserved. 360 GPC-5520 Help for Windows repeat nRet := IFCIMG.ImgGetCaptureStatus(hDeviceHandle, Status); until (Status.dwCapture and $01) <> $01; dwLblNum := 64; // 全ラベルの面積値、重心値、フェレ径、慣性等価楕円の傾き角の取得 nRet := IFCIMG.ImgGetMeasurementValueLBL(hDeviceHandle,1, dwLblNum, pMeasure[0]); デバイス名「IFIMGLBL1」のデバイスで、全ラベルの面積値、重心値、フェレ径、慣性等価楕 円の傾き角を取得します。 © 2003, 2016 Interface Corporation. All rights reserved. 361 GPC-5520 Help for Windows 44. IfSaveBitMapFile メモリ上のデータを指定したビットマップファイル形式で保存します。 【書式】 ●C 言語 INT IfSaveBitMapFile( LPCSTR pszPathName, void pBufferPointer, unsigned long dwBufferFormat, long lWidth, long lHeight ); // // // // // ファイルパス データバッファポインタ データフォーマット イメージの幅 イメージの高さ ●Visual Basic Declare Function IfSaveBitMapFileLib "IfSaveFile.DLL"( _ ByVal pszPathName As String, _ ‘ ファイルパス ByRef pBufferPointer As Any, _ ‘ データバッファポインタ ByVal dwBufferFormat As Long, _ ‘ データフォーマット ByVal lWidth As Long, _ ‘ イメージの幅 ByVal lHeight As Long _ ‘ イメージの高さ )As Long ●Delphi function IfSaveBitMapFile ( pszPathName: String; // ファイルパス pBufferPointer: Pointer; // データバッファポインタ dwBufferFormat: DWORD; // データフォーマット lWidth: Cardinal; // イメージの幅 lHeight: Cardinal // イメージの高さ ): Integer; stdcall; external 'IfSaveFile.DLL'; ●Visual C# .NET [DllImport("IfImg.dll")] public static extern int IfSaveBitMapFile( string pszPathName, // ref byte pBufferPointer, // uint dwBufferFormat, // int lWidth, // int lHeight, // ); ファイルパス データバッファポインタ データフォーマット イメージの幅 イメージの高さ © 2003, 2016 Interface Corporation. All rights reserved. 362 GPC-5520 Help for Windows [DllImport("IfImg.dll")] public static extern int IfSaveBitMapFile( string pszPathName, // ref short pBufferPointer, // uint dwBufferFormat, // int lWidth, // int lHeight, // ); [DllImport("IfImg.dll")] public static extern int IfSaveBitMapFile( string pszPathName, // ref uint pBufferPointer, // uint dwBufferFormat, // int lWidth, // int lHeight, // ); [DllImport("IfImg.dll")] public static extern int IfSaveBitMapFile( string pszPathName, // byte[] pBufferPointer, // uint dwBufferFormat, // int lWidth, // int lHeight, // ); [DllImport("IfImg.dll")] public static extern int IfSaveBitMapFile( string pszPathName, // ushort[] pBufferPointer, // uint dwBufferFormat, // int lWidth, // int lHeight, // ); [DllImport("IfImg.dll")] public static extern int IfSaveBitMapFile( string pszPathName, // uint[] pBufferPointer, // uint dwBufferFormat, // int lWidth, // int lHeight, // ); ファイルパス データバッファポインタ データフォーマット イメージの幅 イメージの高さ ファイルパス データバッファポインタ データフォーマット イメージの幅 イメージの高さ ファイルパス データバッファポインタ データフォーマット イメージの幅 イメージの高さ ファイルパス データバッファポインタ データフォーマット イメージの幅 イメージの高さ ファイルパス データバッファポインタ データフォーマット イメージの幅 イメージの高さ © 2003, 2016 Interface Corporation. All rights reserved. 363 GPC-5520 Help for Windows ●Visual Basic .NET Declare Function IfSaveBitMapFileLib "IfSaveFile.DLL"( ByVal pszPathName As String, ‘ ファイルパス ByRef pBufferPointer As Byte, ‘ データバッファポインタ ByVal dwBufferFormat As Integer, ‘ データフォーマット ByVal lWidth As Integer, ‘ イメージの幅 ByVal lHeight As Integer ‘ イメージの高さ )As Integer Declare Function IfSaveBitMapFileLib "IfSaveFile.DLL"( ByVal pszPathName As String, ‘ ファイルパス ByRef pBufferPointer As Short, ‘ データバッファポインタ ByVal dwBufferFormat As Integer, ‘ データフォーマット ByVal lWidth As Integer, ‘ イメージの幅 ByVal lHeight As Integer ‘ イメージの高さ )As Integer Declare Function IfSaveBitMapFileLib "IfSaveFile.DLL"( ByVal pszPathName As String, ‘ ファイルパス ByRef pBufferPointer As Integer, ‘ データバッファポインタ ByVal dwBufferFormat As Integer, ‘ データフォーマット ByVal lWidth As Integer, ‘ イメージの幅 ByVal lHeight As Integer ‘ イメージの高さ )As Integer Declare Function IfSaveBitMapFileLib "IfSaveFile.DLL"( ByVal pszPathName As String, ‘ ファイルパス ByVal pBufferPointer( ) As Byte, ‘ データバッファポインタ ByVal dwBufferFormat As Integer, ‘ データフォーマット ByVal lWidth As Integer, ‘ イメージの幅 ByVal lHeight As Integer ‘ イメージの高さ )As Integer Declare Function IfSaveBitMapFileLib "IfSaveFile.DLL"( ByVal pszPathName As String, ‘ ファイルパス ByRef pBufferPointer( ) As Short, ‘ データバッファポインタ ByVal dwBufferFormat As Integer, ‘ データフォーマット ByVal lWidth As Integer, ‘ イメージの幅 ByVal lHeight As Integer ‘ イメージの高さ )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 364 GPC-5520 Help for Windows Declare Function IfSaveBitMapFileLib "IfSaveFile.DLL"( ByVal pszPathName As String, ‘ ファイルパス ByRef pBufferPointer( ) As Integer, ‘ データバッファポインタ ByVal dwBufferFormat As Integer, ‘ データフォーマット ByVal lWidth As Integer, ‘ イメージの幅 ByVal lHeight As Integer ‘ イメージの高さ )As Integer ●Delphi 8 class function IfSaveBitMapFile ( pszPathName: String; pBufferPointer: IntPtr; dwBufferFormat: Cardinal; lWidth: Cardinal; lHeight: Cardinal ): Integer; static; // // // // // ファイルパス データバッファポインタ データフォーマット イメージの幅 イメージの高さ class function IfSaveBitMapFile ( pszPathName: String; var pBufferPointer: Byte; dwBufferFormat: Cardinal; lWidth: Cardinal; lHeight: Cardinal ): Integer; static; // // // // // ファイルパス データバッファポインタ データフォーマット イメージの幅 イメージの高さ class function IfSaveBitMapFile ( pszPathName: String; var pBufferPointer: Word; dwBufferFormat: Cardinal; lWidth: Cardinal; lHeight: Cardinal ): Integer; static; // // // // // ファイルパス データバッファポインタ データフォーマット イメージの幅 イメージの高さ class function IfSaveBitMapFile ( pszPathName: String; var pBufferPointer: Cardinal; dwBufferFormat: Cardinal; lWidth: Cardinal; lHeight: Cardinal ): Integer; static; // // // // // ファイルパス データバッファポインタ データフォーマット イメージの幅 イメージの高さ © 2003, 2016 Interface Corporation. All rights reserved. 365 GPC-5520 Help for Windows class function IfSaveBitMapFile ( pszPathName: String; pBufferPointer: array of Byte; dwBufferFormat: Cardinal; lWidth: Cardinal; lHeight: Cardinal ): Integer; static; class function IfSaveBitMapFile ( pszPathName: String; pBufferPointer: array of Word; dwBufferFormat: Cardinal; lWidth: Cardinal; lHeight: Cardinal ): Integer; static; // // // // // // // // // // class function IfSaveBitMapFile ( pszPathName: String; pBufferPointer: array of Cardinal; dwBufferFormat: Cardinal; lWidth: Cardinal; lHeight: Cardinal ): Integer; static; ファイルパス データバッファポインタ データフォーマット イメージの幅 イメージの高さ ファイルパス データバッファポインタ データフォーマット イメージの幅 イメージの高さ // // // // // ファイルパス データバッファポインタ データフォーマット イメージの幅 イメージの高さ 【パラメータ】 pszPathName 保存するファイルパスを指定。(絶対パス) pBufferPointer キャプチャデータが格納しているバッファのポインタ。 dwBufferFormat カラーフォーマットを指定します。 識別子 IFIMG_COLOR_RGB32 IFIMG_COLOR_RGB24 IFIMG_COLOR_RGB15 IFIMG_COLOR_RGB16 IFIMG_COLOR_GRAY8 IFIMG_COLOR_RED8 IFIMG_COLOR_GREEN8 IFIMG_COLOR_BLUE8 IFIMG_COLOR_BIN8 値 00000001h 00000002h 00000003h 0000000Bh 00000004h 00000005h 00000006h 00000007h 00000008h © 2003, 2016 Interface Corporation. All rights reserved. 366 意味 RGB32 bit RGB24 bit RGB15 bit RGB16 bit GRAY8 bit R 8bit G 8bit B 8bit 2 値化処理データ 8bit GPC-5520 Help for Windows lWidth データのイメージ幅を指定します。 キャプチャしたデータ解像度によって値を以下の通りに設定します。 解像度 640×480 320×240 160×120 768×572 384×286 192×143 値 640 320 120 768 384 192 lHeight データのイメージ高さを指定します。 キャプチャしたデータ解像度によって値を以下の通りに設定します。 ※ 解像度 640×480 320×240 160×120 768×572 384×286 192×143 n は保存するフレーム数です。 値 480 × 240 × 120 × 572 × 286 × 143 × n n n n n n 正数指定の場合、画像データはボトムアップ形式で保存します。 負数指定の場合、画像データはトップダウン形式で保存します。 通常は正数で指定してください。負数指定で保存した場合、Paint ソフト等で開くを画像 データが逆さまに表示されます。 【戻り値】 エラー識別子 IFSAVEFILE_ERROR_SUCCESS IFSAVEFILE_ERROR_INVALID_PARAMETER IFSAVEFILE_ERROR_NOT_ALLOCATE_MEMORY IFSAVEFILE_ERROR_NOT_OPENFILE IFSAVEFILE_ERROR_INVALID_WRITEFILE 値 0 c0000010h (-1073741808) c0000021h (-1073741791) c0001000h (-1073737728) c0001001h (-1073737727) 意味 正常終了 引数の値が正しくありま せん。 作業用のメモリの確保に 失敗しました。 ファイルがオープンでき ません。 ファイル書き込みに失敗 しました。 【備考】 本 API 関 数 は IfImg.dll と は 別 の ラ イ ブ ラ リ (IfSaveFile.dll) と ヘ ッ ダ ー フ ァ イ ル (IfSaveFile.h、IfSaveFile.bas、IfSaveFile.pas)で提供しています。 © 2003, 2016 Interface Corporation. All rights reserved. 367 GPC-5520 Help for Windows 【使用例】 ●C 言語(x86) HANDLE hDeviceHandle; IMGBUFFERINFO Buffer; int nRet; hDeviceHandle = ImgOpen(“IFIMGST1”); : nRet = ImgSetBuffer(hDeviceHandle, &Buffer, IFIMG_COLOR_RGB24); : nRet = ImgStartCapture(hDeviceHandle, 10, IFIMG_DMACAPTURE_START); : (キャプチャの完了) : nRet = IfSaveBitmapFile( “BitmapFile.bmp”, Buffer.pBufferAddress, IFIMG_COLOR_RGB24,640,480); ●C 言語(x64) HANDLE hDeviceHandle; PVOID Buffer; int nRet; hDeviceHandle = ImgOpen(“IFIMGST1”); : nRet = ImgGetMemPtrValue(hDeviceHandle, &Buffer); : nRet = ImgStartCapture(hDeviceHandle, 10, IFIMG_DMACAPTURE_START); : (キャプチャの完了) : nRet = IfSaveBitmapFile( “BitmapFile.bmp”, Buffer, IFIMG_COLOR_RGB24,640,480); © 2003, 2016 Interface Corporation. All rights reserved. 368 GPC-5520 Help for Windows ●Visual Basic(x86) Dim lpszName As String Dim hDeviceHandle As Long Dim buffer(921600) As Byte Dim buffersize As Long lpszName = “IFIMGST1” hDeviceHandle = ImgOpen(lpszName) : buffersize = 921600 nRet = ImgSetBufferVB(hDeviceHandle, buffer(0), buffersize, IFIMG_COLOR_RGB24) : nRet = ImgStartCapture(hDeviceHandle, 10, IFIMG_DMACAPTURE_START) : (キャプチャの完了) : nRet = IfSaveBitmapFile( “BitmapFile.bmp”, buffer(0), IFIMG_COLOR_RGB24,640,480) ●Visual Basic(x64) Dim lpszName As String Dim hDeviceHandle As Long Dim buffer As Long lpszName = “IFIMGST1” hDeviceHandle = ImgOpen(lpszName) : nRet = ImgGetMemPtrValue(hDeviceHandle, buffer) : nRet = ImgStartCapture(hDeviceHandle, 10, IFIMG_DMACAPTURE_START) : (キャプチャの完了) : nRet = IfSaveBitmapFile( “BitmapFile.bmp”, buffer, IFIMG_COLOR_RGB24,640,480) © 2003, 2016 Interface Corporation. All rights reserved. 369 GPC-5520 Help for Windows ●Delphi(x86) var lpszName: String; hDeviceHandle: THandle; Buffer: IMGBUFFERINFO; nRet: Integer; lpszName := 'IFIMGST1'; hDeviceHandle := ImgOpen(lpszName); : : nRet := ImgSetBuffer(hDeviceHandle, Buffer, IFIMG_COLOR_RGB24); : nRet := ImgStartCapture(hDeviceHandle, 10, IFIMG_DMACAPTURE_START); : (キャプチャの完了) : nRet := IfSaveBitmapFile( “BitmapFile.bmp”, Buffer.pBufferAddress, IFIMG_COLOR_RGB24,640,480); ●Delphi(x64) var lpszName: String; hDeviceHandle: THandle; Buffer: Pointer; nRet: Integer; lpszName := 'IFIMGST1'; hDeviceHandle := ImgOpen(lpszName); : : nRet := ImgGetMemPtrValue(hDeviceHandle, Buffer); : nRet := ImgStartCapture(hDeviceHandle, 10, IFIMG_DMACAPTURE_START); : (キャプチャの完了) : nRet := IfSaveBitmapFile( “BitmapFile.bmp”, Buffer, IFIMG_COLOR_RGB24,640,480); © 2003, 2016 Interface Corporation. All rights reserved. 370 GPC-5520 Help for Windows ●Visual C# .NET IntPtr hDeviceHandle; IFCIMG_ANY.IMGBUFFERINFO Buffer; int nRet; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGST1”); : nRet = IFCIMG_ANY.ImgSetBuffer(hDeviceHandle, ref Buffer, IFCIMG_ANY.IFIMG_COLOR_RGB24); : nRet = IFCIMG_ANY.ImgStartCapture(hDeviceHandle, 10, IFCIMG_ANY.IFIMG_DMACAPTURE_START); : (キャプチャの完了) : nRet = IFCSAVEFILE.IfSaveBitmapFile( “BitmapFile.bmp”, Buffer.pBufferAddress, IFCIMG_ANY.IFIMG_COLOR_RGB24,640,480); ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim buffer(921600) As Byte Dim buffersize As Integer lpszName = “IFIMGST1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : buffersize = 921600 nRet = IFCIMG_ANY.ImgSetBufferVB(hDeviceHandle, buffer(0), buffersize, IFCIMG_ANY.IFIMG_COLOR_RGB24) : nRet = IFCIMG_ANY.ImgStartCapture(hDeviceHandle, 10, IFCIMG_ANY.IFIMG_DMACAPTURE_START) : (キャプチャの完了) : nRet = IFCSAVEFILE.IfSaveBitmapFile( “BitmapFile.bmp”, buffer(0), IFCIMG_ANY.IFIMG_COLOR_RGB24,640,480) © 2003, 2016 Interface Corporation. All rights reserved. 371 GPC-5520 Help for Windows ●Delphi 8 var lpszName: String; hDeviceHandle: Integer; Buffer: IFCIMG.IMGBUFFERINFO; nRet: Integer; lpszName := 'IFIMGST1'; hDeviceHandle := IFCIMG.ImgOpen(lpszName); : : nRet := IFCIMG.ImgSetBuffer(hDeviceHandle, Buffer, IFCIMG.IFIMG_COLOR_RGB24); : nRet := IFCIMG.ImgStartCapture(hDeviceHandle, 10, IFCIMG.IFIMG_DMACAPTURE_START); : (キャプチャの完了) : nRet := IFCSAVEFILE.IfSaveBitmapFile( “BitmapFile.bmp”, Buffer.pBufferAddress, IFCIMG.IFIMG_COLOR_RGB24,640,480); デバイス名「IFIMGST1」からキャプチャしたデータを 1 フレーム分ビットマップ保存します。 © 2003, 2016 Interface Corporation. All rights reserved. 372 GPC-5520 Help for Windows 45. ImgSetDecoderConfig 【機能】 ビデオデコーダの設定を行います。 ビデオデコーダ内のレジスタにデータをライトします。 【書式】 ●C 言語 INT ImgSetDecoderConfig( HANDLE hDeviceHandle, WORD wOffset, WORD wData ); // // // デバイスハンドル レジスタオフセット データ ●Visual Basic Declare Function ImgSetDecoderConfig Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByVal wOffset As Integer, _ ‘ レジスタオフセット ByVal wData As Integer _ ‘ データ )As Long ●Delphi function ImgSetDecoderConfig ( hDeviceHandle: THandle; wOffset: WORD; wData: WORD ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetDecoderConfig ( IntPtr hDeviceHandle, short wOffset, short wData ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetDecoderConfig ( uint hDeviceHandle, short wOffset, short wData ); // // // デバイスハンドル レジスタオフセット データ // // // デバイスハンドル レジスタオフセット データ // // // デバイスハンドル レジスタオフセット データ © 2003, 2016 Interface Corporation. All rights reserved. 373 GPC-5520 Help for Windows ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetDecoderConfig Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByVal wOffset As Short, ‘ レジスタオフセット ByVal wData As Short ‘ データ )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgSetDecoderConfig Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByVal wOffset As Short, ‘ レジスタオフセット ByVal wData As Short ‘ データ )As Integer ●Delphi 8 class function ImgSetDecoderConfig ( hDeviceHandle: Integer; wOffset: Word; wData: Word ): Integer; static; // // // デバイスハンドル レジスタオフセット データ 【パラメータ】 hDeviceHandle デバイスハンドルを指定します。 wOffset ビデオデコーダ内のレジスタのオフセット値を指定します。 オフセットは+00h~+1Fh です。 wData レジスタへライトする値 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くだ 【備考】 製品搭載しているビデオデコーダは以下の型式です。 メーカ:沖電気株式会社 品名:MSM7664B © 2003, 2016 Interface Corporation. All rights reserved. 374 GPC-5520 Help for Windows 【使用例】 ●C 言語 HANDLE int hDeviceHandle; nRet; nRet = ImgSetDecoderConfig(hDeviceHandle, 0x0A, 0x01); ●Visual Basic Dim hDeviceHandle As Long Dim nRet As Long nRet = ImgSetDecoderConfig(hDeviceHandle, &H0A, &H01) ●Delphi var hDeviceHandle: THandle; nRet: Integer; nRet := ImgSetDecoderConfig(hDeviceHandle, $0A, $01); ●Visual C# .NET int nRet; IntPtr hDeviceHandle; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGST1”); : : nRet = IFCIMG_ANY.ImgSetDecoderConfig(hDeviceHandle, 0x0A, 0x01); ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim nRet As Long lpszName = “IFIMGST1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) : : nRet = IFCIMG_ANY.ImgSetDecoderConfig(hDeviceHandle, &H0A, &H01) © 2003, 2016 Interface Corporation. All rights reserved. 375 GPC-5520 Help for Windows ●Delphi 8 var hDeviceHandle: Inetger; nRet: Integer; hDeviceHandle := IFCIMG_ANY.ImgOpen(“IFIMGST1”); : : nRet := IFCIMG_ANY.ImgSetDecoderConfig(hDeviceHandle, $0A, $01); ビデオデコーダのレジスタのオフセット 0Ah 領域に 01h をセットします。 © 2003, 2016 Interface Corporation. All rights reserved. 376 GPC-5520 Help for Windows 46. ImgSetEncoderConfig 【機能】 ビデオエンコーダの設定を行います。 ビデオエンコーダ内のレジスタにデータをライトします。 【書式】 ●C 言語 INT ImgSetEncoderConfig ( HANDLE hDeviceHandle, WORD wOffset, WORD wData ); // // // デバイスハンドル レジスタオフセット データ ●Visual Basic Declare Function ImgSetEncoderConfig Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByVal wOffset As Integer, _ ‘ レジスタオフセット ByVal wData As Integer _ ‘ データ )As Long ●Delphi function ImgSetEncoderConfig ( hDeviceHandle: THandle; wOffset: WORD; wData: WORD ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetEncoderConfig ( IntPtr hDeviceHandle, short wOffset, short wData ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetEncoderConfig ( uint hDeviceHandle, short wOffset, short wData ); // // // デバイスハンドル レジスタオフセット データ // // // デバイスハンドル レジスタオフセット データ // // // デバイスハンドル レジスタオフセット データ © 2003, 2016 Interface Corporation. All rights reserved. 377 GPC-5520 Help for Windows ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetEncoderConfig Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByVal wOffset As Short, ‘ レジスタオフセット ByVal wData As Short ‘ データ )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgSetEncoderConfig Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByVal wOffset As Short, ‘ レジスタオフセット ByVal wData As Short ‘ データ )As Integer ●Delphi 8 class function ImgSetEncoderConfig ( hDeviceHandle: Integer; wOffset: Word; wData: Word ): Integer; static; // // // デバイスハンドル レジスタオフセット データ 【パラメータ】 hDeviceHandle デバイスハンドルを指定します。 wOffset ビデオエンコーダ内のレジスタのオフセット値を指定します。 オフセットは+00h~+03h です。 wData レジスタへライトする値 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くだ 【備考】 製品搭載しているビデオエンコーダは以下の型式です。 メーカ:沖電気株式会社 品名:MSM7654 © 2003, 2016 Interface Corporation. All rights reserved. 378 GPC-5520 Help for Windows 【使用例】 ●C 言語 HANDLE int hDeviceHandle; nRet; nRet = ImgSetEncoderConfig(hDeviceHandle, 0x01, 0x00); ●Visual Basic Dim hDeviceHandle As Long Dim nRet As Long nRet = ImgSetEncoderConfig(hDeviceHandle, &H01, &H00) ●Delphi var hDeviceHandle: THandle; nRet: Integer; nRet := ImgSetEncoderConfig(hDeviceHandle, $01, $00); ●Visual C# .NET int nRet; IntPtr hDeviceHandle; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGST1”); : nRet = IFCIMG_ANY.ImgSetEncoderConfig(hDeviceHandle, 0x0A, 0x01); ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim nRet As Long lpszName = “IFIMGST1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) nRet = IFCIMG_ANY.ImgSetEncoderConfig(hDeviceHandle, &H0A, &H01) © 2003, 2016 Interface Corporation. All rights reserved. 379 GPC-5520 Help for Windows ●Delphi 8 var hDeviceHandle: Inetger; nRet: Integer; hDeviceHandle := IFCIMG.ImgOpen(“IFIMGST1”); nRet := IFCIMG.ImgSetDecoderConfig(hDeviceHandle, $0A, $01); ビデオエンコーダのレジスタのオフセット 01h 領域に 00h をセットします。 © 2003, 2016 Interface Corporation. All rights reserved. 380 GPC-5520 Help for Windows 47. ImgSetGainControl 【機能】 ビデオデコーダのゲイン調整を行います。コントラスト調整を行う場合は、本関数を使用して ください。 【書式】 ●C 言語 INT ImgSetGainControl ( HANDLE hDeviceHandle, INT nOffset ); // // デバイスハンドル オフセットゲイン ●Visual Basic Declare Function ImgSetGainControl Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByVal nOffset As Long_ ‘ オフセットゲイン )As Long ●Delphi function ImgSetGainControl ( hDeviceHandle: THandle; nOffset: Cardinal ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetGainControl ( IntPtr hDeviceHandle, int nOffset ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetGainControl ( uint hDeviceHandle, int nOffset ); // // デバイスハンドル オフセットゲイン // // デバイスハンドル オフセットゲイン // // デバイスハンドル オフセットゲイン ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetGainControl Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByVal nOffset As Integer ‘ オフセットゲイン )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 381 GPC-5520 Help for Windows ●Visual Basic .NET(x86 専用) Declare Function ImgSetGainControl Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByVal nOffset As Integer ‘ オフセットゲイン )As Integer ●Delphi 8 class function ImgSetGainControl ( hDeviceHandle: Integer; nOffset: Cardinal ): Integer; static; // // デバイスハンドル オフセットゲイン 【パラメータ】 hDeviceHandle デバイスハンドルを指定します。 nOffset -32~+31 のオフセット範囲で指定します。(単位 IRE) インタフェースモジュールへの電源投入時はデフォルト 40IRE です。 40IRE からオフセット調整となります。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くだ © 2003, 2016 Interface Corporation. All rights reserved. 382 GPC-5520 Help for Windows 【備考】 製品搭載しているビデオエンコーダは以下になっています。 メーカ:沖電気株式会社 品名:MSM7664B 本関数はエンコーダレジスタのオフセット 0x09 番地へアクセスしてコントラスト調整を 行っています。詳細は MSM7664B のデータシートを参照ください。 本関数を実行するとビデオデコーダのゲイン調整がマニュアルモードになります。初期状態 (オートモード)に戻す場合は、ImgSetDecoderConfig 関数でオフセット 0x0A 番地に 0x00 をセットしてください。 メーカ:ラピスセミコンダクタ株式会社 品名:ML86V7666 本関数はエンコーダレジスタのオフセット 0x0C 番地へアクセスしてコントラスト調整を 行っています。詳細は ML86V7666 のデータシートを参照ください。 初期状態に戻す場合は、ImgSetDecoderConfig 関数でオフセット 0x0C 番地に トしてください。 【使用例】 ●C 言語 HANDLE int hDeviceHandle; nRet; nRet = ImgSetGainControl(DeviceHandle,20); ●Visual Basic Dim hDeviceHandle As Long Dim nRet As Long nRet = ImgSetGainControl(DeviceHandle,20) ●Delphi var hDeviceHandle: THandle; nRet: Integer; nRet := ImgSetGainControl(DeviceHandle,20); © 2003, 2016 Interface Corporation. All rights reserved. 383 0xF4 をセッ GPC-5520 Help for Windows ●Visual C# .NET int nRet; IntPtr hDeviceHandle; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGST1”); : nRet = IFCIMG_ANY.ImgSetGainControl(hDeviceHandle, 20); ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim nRet As Long lpszName = “IFIMGST1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) nRet = IFCIMG_ANY.ImgSetGainControl(hDeviceHandle, 20) ●Delphi 8 var hDeviceHandle: Inetger; nRet: Integer; hDeviceHandle := IFCIMG.ImgOpen(“IFIMGST1”); nRet := IFCIMG.ImgSetGainControl(hDeviceHandle, 20); ゲインのオフセットを+20 にします。 © 2003, 2016 Interface Corporation. All rights reserved. 384 GPC-5520 Help for Windows 48. ImgSetBlankingLevel 【機能】 ビデオデコーダのブランキングレベルを調整します。画像の明るさが変動します。 【書式】 ●C 言語 INT ImgSetBlankingLevel ( HANDLE hDeviceHandle, INT nOffset ); // // デバイスハンドル オフセットゲイン ●Visual Basic Declare Function ImgSetBlankingLevel Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル ByVal nOffset As Long_ ‘ オフセットゲイン )As Long ●Delphi function ImgSetBlankingLevel ( hDeviceHandle: THandle; nOffset: Cardinal ): Integer; stdcall; external 'IfImg.dll'; ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetBlankingLevel ( IntPtr hDeviceHandle, int nOffset ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetBlankingLevel ( uint hDeviceHandle, int nOffset ); // // デバイスハンドル オフセットゲイン // // デバイスハンドル オフセットゲイン // // デバイスハンドル オフセットゲイン ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetBlankingLevel Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByVal nOffset As Integer ‘ オフセットゲイン )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 385 GPC-5520 Help for Windows ●Visual Basic .NET(x86 専用) Declare Function ImgSetBlankingLevel Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByVal nOffset As Integer ‘ オフセットゲイン )As Integer ●Delphi 8 class function ImgSetBlankingLevel ( hDeviceHandle: Integer; nOffset: Cardinal ): Integer; static; // // デバイスハンドル オフセットゲイン 【パラメータ】 hDeviceHandle デバイスハンドルを指定します。 nOffset MSM7664B:-64~+63 のオフセット範囲で指定します。(単位 IRE) ML86V7666:-7~+7 のオフセット範囲で指定します。(単位 IRE) インタフェースモジュールへの電源投入時はデフォルト 40IRE です。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くだ © 2003, 2016 Interface Corporation. All rights reserved. 386 GPC-5520 Help for Windows 【備考】 製品搭載しているビデオエンコーダは以下になっています。 メーカ:沖電気株式会社 品名:MSM7664B 本関数はエンコーダレジスタのオフセット 0x0A 番地へアクセスしてブランキングレベル調 整を行っています。詳細は MSM7664B のデータシートを参照ください。 本関数を実行するとビデオデコーダのオフセット調整がマニュアルモードになります。 初期状態(オートモード)に戻す場合は、ImgSetDecoderConfig 関数でオフセット 0x0A 番地に 0x00 をセットしてください。 メーカ:ラピスセミコンダクタ株式会社 品名:ML86V7666 本関数はエンコーダレジスタのオフセット 0x0E 番地へアクセスしてブランキングレベル調 整を行っています。詳細は ML86V7666 のデータシートを参照ください。 初期状態に戻す場合は、ImgSetDecoderConfig 関数でオフセット 0x0E 番地に 0x3F をセット してください。 【使用例】 ●C 言語 HANDLE int hDeviceHandle; nRet; nRet = ImgSetBlankingLevel(DeviceHandle,20); ●Visual Basic Dim hDeviceHandle As Long Dim nRet As Long nRet = ImgSetBlankingLevel(DeviceHandle,20) ●Delphi var hDeviceHandle: THandle; nRet: Integer; nRet := ImgSetBlankingLevel(DeviceHandle,20); © 2003, 2016 Interface Corporation. All rights reserved. 387 GPC-5520 Help for Windows ●Visual C# .NET int nRet; IntPtr hDeviceHandle; hDeviceHandle = IFCIMG_ANY.ImgOpen(“IFIMGST1”); : nRet = IFCIMG_ANY.ImgSetBlankingLevel(hDeviceHandle, 20); ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim nRet As Long lpszName = “IFIMGST1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) nRet = IFCIMG_ANY.ImgSetBlankingLevel(hDeviceHandle, 20) ●Delphi 8 var hDeviceHandle: Inetger; nRet: Integer; hDeviceHandle := IFCIMG.ImgOpen(“IFIMGST1”); nRet := IFCIMG.ImgSetBlankingLevel(hDeviceHandle, 20); ブランキングレベルのオフセットを+20 にします。 © 2003, 2016 Interface Corporation. All rights reserved. 388 GPC-5520 Help for Windows 49. ImgSetSyncErrorDetection 同期信号の異常検出方法を設定します。 【書式】 ●C 言語 INT ImgSetSyncErrorDetection ( HANDLE hDeviceHandle, DWORD Mode ); // // デバイスハンドル 検出モード選択 ●Visual Basic Declare Function ImgSetSyncErrorDetection Lib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル RyVal Mode As Long _ ‘ 検出モード選択 )As Long ●Delphi function ImgSetSyncErrorDetection ( hDeviceHandle: THandle; Mode: DWORD ): Integer; stdcall; external 'IfImg.dll'; // // デバイスハンドル 検出モード選択 ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetSyncErrorDetection ( IntPtr hDeviceHandle, // デバイスハンドル uint Mode // 検出モード選択 ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetSyncErrorDetection ( uint hDeviceHandle, // デバイスハンドル uint Mode // 検出モード選択 ); ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetSyncErrorDetection Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByVal Mode As Integer ‘ 検出モード選択 )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgSetSyncErrorDetection Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByVal Mode As Integer ‘ 検出モード選択 )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 389 GPC-5520 Help for Windows ●Delphi 8 class function ImgSetSyncErrorDetection ( hDeviceHandle: Integer; Mode: Cardinal ): Integer; static; // // デバイスハンドル 検出モード選択 【パラメータ】 hDeviceHandle ImgOpen 関数で取得したデバイスハンドルを指定してください。 Mode 異常状態を検出する同期信号を選択します。同期信号は以下の 3 つになります。 VSYNC 信号 : カメラの垂直同期信号 VVALID 信号 : ハードウェア(FPGA)とビデオデコーダ間の垂直同期信号 HVALID 信号 : ハードウェア(FPGA)とビデオデコーダ間の水平同期信号 以下の識別子を指定する事により、各信号に対する異常検出機能の有効/無効を 設定する事ができます。 識別子 値 対象となる異常検出機能 IFIMG_ERR_DETECTION_MODE1 IFIMG_ERR_DETECTION_MODE2 IFIMG_ERR_DETECTION_MODE3 IFIMG_ERR_DETECTION_MODE4 IFIMG_ERR_DETECTION_MODE5 IFIMG_ERR_DETECTION_MODE6 IFIMG_ERR_DETECTION_MODE7 IFIMG_ERR_DETECTION_MODE8 00000001h 00000002h 00000003h 00000004h 00000005h 00000006h 00000007h 00000008h VSYNC 検出 VVALID 検出 HVALID 検出 有効 有効 有効 有効 無効 無効 無効 無効 有効 有効 無効 無効 有効 有効 無効 無効 有効 無効 有効 無効 有効 無効 有効 無効 ImgOpen 実行後の初期状態は IFIMG_DETECTION_MODE4 となっています。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、『4.5 戻り値一覧』をご参照くださ い。 【注意】 ご使用になっているハードウェアのバージョンによっては、選択できる信号に制限がございま す。検出できない信号を選択した場合、戻り値として、「IFIMG_ERROR_NOT_SUPPORTED」が返りま す。 © 2003, 2016 Interface Corporation. All rights reserved. 390 GPC-5520 Help for Windows 【使用例】 ●C 言語 HANDLE int hDeviceHandle; nRet; nRet = ImgSetSyncErrorDetection(DeviceHandle, IFIMG_ERR_DETECTION_MODE1); ●Visual Basic Dim hDeviceHandle As Long Dim nRet As Long nRet = ImgSetSyncErrorDetection(DeviceHandle, IFIMG_ERR_DETECTION_MODE1) ●Delphi var hDeviceHandle: THandle; nRet: Integer; nRet := ImgSetSyncErrorDetection(DeviceHandle, IFIMG_ERR_DETECTION_MODE1); ●Visual C# .NET IntPtr hDeviceHandle; uint nRet; nRet = IFCIMG_ANY.ImgSetSyncErrorDetection(DeviceHandle, IFCIMG_ANY.IFIMG_ERR_DETECTION_MODE1); ●Visual Basic .NET Dim hDeviceHandle As IntPtr Dim nRet As Long nRet = IFCIMG_ANY.ImgSetSyncErrorDetection(DeviceHandle, _ IFCIMG_ANY.IFIMG_ERR_DETECTION_MODE1) ●Delphi 8 var hDeviceHandle: THandle; nRet: Integer; nRet := IFCIMG.ImgSetSyncErrorDetection(DeviceHandle, IFCIMG.IFIMG_ERR_DETECTION_MODE1); 異常検出対象の同期信号を VSYNC 信号、VVALID 信号、HVALID 信号にします。 © 2003, 2016 Interface Corporation. All rights reserved. 391 GPC-5520 Help for Windows 50. ImgGetCameraConnectionStatus カメラと製品の接続状態を取得します。 【書式】 ●C 言語 INT ImgGetCameraConnectionStatus ( HANDLE hDeviceHandle, PDWORD Status ); // // デバイスハンドル 接続状態 ●Visual Basic Declare Function ImgGetCameraConnectionStatusLib "IfImg.dll"( _ ByVal hDeviceHandle As Long, _ ‘ デバイスハンドル RyRef Status As Long _ ‘ 接続状態 )As Long ●Delphi function ImgGetCameraConnectionStatus ( hDeviceHandle: THandle; var Status: DWORD ): Integer; stdcall; external 'IfImg.dll'; // // デバイスハンドル 接続状態 ●Visual C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgGetCameraConnectionStatus ( IntPtr hDeviceHandle, // デバイスハンドル out uint Status // 接続状態 ); ●Visual C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgGetCameraConnectionStatus ( uint hDeviceHandle, // デバイスハンドル out uint Status // 接続状態 ); ●Visual Basic .NET(x86、x64 共用) Declare Function ImgGetCameraConnectionStatus Lib "IfImg.DLL"( ByVal hDeviceHandle As IntPtr, ‘ デバイスハンドル ByRef Status As Integer ‘ 接続状態 )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgGetCameraConnectionStatus Lib "IfImg.DLL"( ByVal hDeviceHandle As Integer, ‘ デバイスハンドル ByRef Status As Integer ‘ 接続状態 )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 392 GPC-5520 Help for Windows ●Delphi 8 class function ImgGetCameraConnectionStatus ( hDeviceHandle: Integer; var Status: Cardinal ): Integer; static; // // デバイスハンドル 接続状態 【パラメータ】 hDeviceHandle ImgOpen 関数で取得したデバイスハンドルを指定してください。 Status カメラとの接続状態を取得します。 識別子 IFIMG_CAMERA_NOTSUPPORTED IFIMG_CAMERA_CONNECTION IFIMG_CAMERA_UNCONNECTION 値 00000000h 00000001h 00000002h 意味 機能未サポート 接続 未接続 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、『4.5 戻り値一覧』をご参照くださ い。 【注意】 ご使用になっているハードウェアのバージョンによっては、本機能は対応しておりません。 未対応のハードウェア上で実行すると、戻り値として「IFIMG_ERROR_NOT_SUPPORTED」が返ります。 【使用例】 ●C 言語 HANDLE int DWORD hDeviceHandle; nRet; Status nRet = ImgGetCameraConnectionStatus(DeviceHandle, &Status); ●Visual Basic Dim hDeviceHandle As Long Dim nRet As Long Dim Status As Long nRet = ImgGetCameraConnectionStatus(DeviceHandle, Status) © 2003, 2016 Interface Corporation. All rights reserved. 393 GPC-5520 Help for Windows ●Delphi var hDeviceHandle: THandle; nRet: Integer; Status: DWORD nRet := ImgGetCameraConnectionStatus (DeviceHandle, Status); ●Visual C# .NET IntPtr hDeviceHandle; uint nRet; uint Status; nRet = IFCIMG_ANY.ImgGetCameraConnectionStatus (DeviceHandle, out Status); ●Visual Basic .NET Dim hDeviceHandle As IntPtr Dim nRet As Long Dim Status As Long nRet = IFCIMG_ANY.ImgGetCameraConnectionStatus (DeviceHandle, Status) ●Delphi 8 var hDeviceHandle: THandle; nRet: Integer; Status : Cardinal; nRet := IFCIMG.ImgGetCameraConnectionStatus (DeviceHandle, Status); カメラとの接続状態を取得します。 © 2003, 2016 Interface Corporation. All rights reserved. 394 GPC-5520 Help for Windows 51. ImgGetOsArchitecture 【機能】 OS のアーキテクチャ情報を知る事ができます。 【書式】 ●C 言語 INT ImgGetOsArchitecture ( HANDLE DeviceHandle, PDWORD Architecture ); // // デバイスハンドル アーキテクチャ情報 ●Visual Basic Declare Function ImgGetOsArchitecture Lib "IfImg.dll"( _ ByVal DeviceHandle As Long, _ ‘ デバイスハンドル ByRef Architecture As Long _ ‘ アーキテクチャ情報 )As Long ●Delphi function ImgGetOsArchitecture ( DeviceHandle: THandle; // デバイスハンドル var Architecture: DWORD // アーキテクチャ情報 ): Integer; stdcall; external 'IfImg.dll'; ●VISUAL C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgGetOsArchitecture ( IntPtr DeviceHandle, // デバイスハンドル out uint Architecture // アーキテクチャ情報 ); ●VISUAL C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgGetOsArchitecture ( uint DeviceHandle, // デバイスハンドル out uint Architecture // アーキテクチャ情報 ); ●Visual Basic .NET(x86、x64 共用) Declare Function ImgGetOsArchitecture Lib "IFImg.DLL"( _ ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル ByRef Architecture As Integer, _ ‘ アーキテクチャ情報 )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgGetOsArchitecture Lib "IFImg.DLL"( _ ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル ByRef Architecture As Integer, _ ‘ アーキテクチャ情報 )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 395 GPC-5520 Help for Windows 【パラメータ】 DeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 Architecture OS 情報を格納する変数のポインタ(参照渡し)を指定します。 識別子 値 内容 IFIMG_OS_ARCHITECTURE_x64 00000001h x64 環境 IFIMG_OS_ARCHITECTURE_x86 00000002h x86 環境 ※Wow64 環境で実行した場合は、x64 環境として取得されます。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くだ 【使用例】 ●C 言語 INT Ret; HANDLE DeviceHandle; DWORD Architecture; : Ret = ImgGetOsArchitecture(DeviceHandle, &Architecture); ●Visual Basic Dim DeviceHandle As Long Dim Ret As Integer Dim Architecture As Long : Ret = ImgGetOsArchitecture(DeviceHandle, Architecture) ●Delphi var DeviceHandle: THandle; Ret: Integer; Architecture: DWORD; : Ret := ImgGetOsArchitecture (DeviceHandle, Architecture); ●VISUAL C# .NET uint Ret; IntPtr DeviceHandle; uint Architecture; : Ret = IFCIMG_ANY.ImgGetOsArchitecture(DeviceHandle, out Architecture); © 2003, 2016 Interface Corporation. All rights reserved. 396 GPC-5520 Help for Windows ●Visual Basic .NET Dim DeviceHandle As IntPtr Dim Ret As Integer Dim Architecture As Integer : Ret = IFCIMG_ANY.ImgGetOsArchitecture(DeviceHandle, Architecture) OS 情報を取得します。 © 2003, 2016 Interface Corporation. All rights reserved. 397 GPC-5520 Help for Windows 52. ImgSetCLCaptureConfig 【機能】 接続するカメラとキャプチャ条件を設定します。 ・カメラコンフィグレーションファイルを読み込みます。 ・カメラエリアのキャプチャ/画像処理領域を指定する。領域サイズは 640×480 固定。 【書式】 ●C 言語 INT ImgSetCLCaptureConfig( HANDLE DeviceHandle, LPCSTR FilePath, PIFIMGCLCAPCFG CaptureConfig ); // // // デバイスハンドル ファイルパス名 キャプチャ条件設定 ●Visual Basic Declare Function ImgSetCLCaptureConfig Lib "IfImg.dll"( _ ByVal DeviceHandle As Long, _ ‘ デバイスハンドル ByVal FilePath As String, _ ‘ ファイルパス名 ByRef CaptureConfig As IFIMGCLCAPCFG _ ‘ キャプチャ条件設定 )As Long ●Delphi function ImgSetCLCaptureConfig ( DeviceHandle: THandle; FilePath: String; var CaptureConfig: IFIMGCLCAPCFG ): Integer; stdcall; external IfImg.dll'; // // // デバイスハンドル ファイルパス名 キャプチャ条件設定 ●VISUAL C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetCLCaptureConfig( IntPtr DeviceHandle, // デバイスハンドル string FilePath, // ファイルパス名 ref IFIMGCLCAPCFG CaptureConfig // キャプチャ条件設定 ); ●VISUAL C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetCLCaptureConfig( uint DeviceHandle, // デバイスハンドル string FilePath, // ファイルパス名 ref IFIMGCLCAPCFG CaptureConfig // キャプチャ条件設定 ); © 2003, 2016 Interface Corporation. All rights reserved. 398 GPC-5520 Help for Windows ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetCLCaptureConfig Lib "IfImg.dll"( _ ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル ByVal FilePath As String, _ ‘ ファイルパス名 ByRef CaptureConfig As IFIMGCLCAPCFG _ ‘ キャプチャ条件設定 )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgSetCLCaptureConfig Lib "IfImg.dll"( _ ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル ByVal FilePath As String, _ ‘ ファイルパス名 ByRef CaptureConfig As IFIMGCLCAPCFG _ ‘ キャプチャ条件設定 )As Integer ●Delphi 8 class function ImgSetCLCaptureConfig ( DeviceHandle: Integer; FilePath: string; var CaptureConfig: IFIMGCLCAPCFG ): Integer; static; // // // デバイスハンドル ファイルパス名 キャプチャ条件設定 【パラメータ】 DeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 PathName カメラコンフィグレーションファイルのパスを指定します。 パスは絶対パスを指定します。ファイル拡張子は「*.cfg」となります。 CaptureConfig キャプチャ条件を指定します。IFIMGCLCAPCFG 構造体変数のポインタ(参照渡し)を指定し ます。 【使用例】 ●C 言語 INT Ret; HANDLE DeviceHandle; IFIMGCLCAPCFG CaptureConfig; CaptureConfig.XStart = 0; CaptureConfig.YStart = 0; CaptureConfig.SyncMode = 0; CaptureConfig.LVALInterVal= 0; : Ret = ImgSetCLCaptureConfig(DeviceHandle, “c:\\Teli_CSCV125CC3.cfg”, &CaptureConfig); © 2003, 2016 Interface Corporation. All rights reserved. 399 GPC-5520 Help for Windows ●Visual Basic Dim DeviceHandle As Long Dim Ret As Integer Dim CaptureConfig As IFIMGCLCAPCFG Dim PathName As String PathName = "c:\\Teli_CSCV125CC3.cfg" CaptureConfig.XStart = 0 CaptureConfig.YStart = 0 CaptureConfig.SyncMode = 0 CaptureConfig.LVALInterVal= 0 Ret = ImgSetCLCaptureConfig(DeviceHandle, PathName, CaptureConfig) ●Delphi var DeviceHandle: THandle; Ret: Integer; PathName: String; CaptureConfig: IFIMGCLCAPCFG; PathName:= 'c:\\Teli_CSCV125CC3.cfg '; CaptureConfig.XStart := 0; CaptureConfig.YStart := 0; CaptureConfig.SyncMode := 0; CaptureConfig.LVALInterVal := 0; Ret := ImgSetCLCaptureConfig(DeviceHandle, PathName, CaptureConfig); ●VISUAL C# .NET int Ret; IntPtr DeviceHandle; IFCIMG_ANY.IFIMGCLCAPCFG CaptureConfig; CaptureConfig.XStart = 0; CaptureConfig.YStart = 0; CaptureConfig.SyncMode = 0; CaptureConfig.LVALInterVal= 0; : Ret = IFCIMG_ANY.ImgSetCLCaptureConfig(DeviceHandle, “c:\\Teli_CSCV125CC3.cfg”, &CaptureConfig); © 2003, 2016 Interface Corporation. All rights reserved. 400 GPC-5520 Help for Windows ●Visual Basic .NET Dim DeviceHandle As IntPtr Dim Ret As Integer Dim CaptureConfig As IFCIMG_ANY.IFIMGCLCAPCFG Dim PathName As String PathName = "c:\\Teli_CSCV125CC3.cfg" CaptureConfig.XStart = 0 CaptureConfig.YStart = 0 CaptureConfig.SyncMode = 0 CaptureConfig.LVALInterVal= 0 Ret = IFCIMG_ANY.ImgSetCLCaptureConfig(DeviceHandle, PathName, CaptureConfig) ●Delphi 8 var DeviceHandle: Integer; Ret: Integer; PathName: String; CaptureConfig: IFCIMG_ANY.IFIMGCLCAPCFG; PathName:= 'c:\\Teli_CSCV125CC3.cfg '; CaptureConfig.XStart := 0; CaptureConfig.YStart := 0; CaptureConfig.SyncMode := 0; CaptureConfig.LVALInterVal := 0; Ret := IFCIMG_ANY.ImgSetCLCaptureConfig(DeviceHandle, PathName, CaptureConfig); カメラ情報とキャプチャ条件を設定します。 © 2003, 2016 Interface Corporation. All rights reserved. 401 GPC-5520 Help for Windows 53. ImgSetCCMode 【機能】 カメラコントロール信号(CC1~4)の動作モードを設定する。 【書式】 ●C 言語 INT ImgSetCCMode( HANDLE DeviceHandle, DWORD CcSignal, DWORD Mode, DWORD Pulse ); // // // // デバイスハンドル CC 信号 出力モード 出力パルス幅 ●Visual Basic Declare Function ImgSetCCMode Lib "IfImg.dll"( _ ByVal DeviceHandle As Long, _ ‘ ByVal CcSignal, As Long, _ ‘ ByVal Mode, As Long, _ ‘ ByVal Pulse As Long ‘ )As Long デバイスハンドル CC 信号 出力モード 出力パルス幅 ●Delphi function ImgSetCCMode ( DeviceHandle: CcSignal: Mode: Pulse: THandle; DWORD; DWORD; DWORD ): Integer; stdcall; external IfImg.dll'; ●VISUAL C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetCCMode( IntPtr DeviceHandle, uint CcSignal, uint Mode, uint Pulse ); ●VISUAL C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetCCMode( uint DeviceHandle, uint CcSignal, uint Mode, uint Pulse ); // // // // デバイスハンドル CC 信号 出力モード 出力パルス幅 // // // // デバイスハンドル CC 信号 出力モード 出力パルス幅 // // // // デバイスハンドル CC 信号 出力モード 出力パルス幅 © 2003, 2016 Interface Corporation. All rights reserved. 402 GPC-5520 Help for Windows ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetCCMode Lib "IfImg.dll"( _ ByVal DeviceHandle As IntPtr, _ ‘ ByVal CcSignal, As Integer, _ ‘ ByVal Mode, As Integer, _ ‘ ByVal Pulse As Integer ‘ )As Long ●Visual Basic .NET(x86 専用) Declare Function ImgSetCCMode Lib "IfImg.dll"( _ ByVal DeviceHandle As Integer, _ ‘ ByVal CcSignal, As Integer, _ ‘ ByVal Mode, As Integer, _ ‘ ByVal Pulse As Integer ‘ )As Long ●Delphi 8 class function ImgSetCCMode ( DeviceHandle: Integer; CcSignal: Cardinal; Mode: Cardinal; Pulse: Cardinal ): Integer; static; // // // // デバイスハンドル CC 信号 出力モード 出力パルス幅 デバイスハンドル CC 信号 出力モード 出力パルス幅 デバイスハンドル CC 信号 出力モード 出力パルス幅 【パラメータ】 DeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 CcSignal 設定する CC 信号を選択します。 識別子 値 IFIMGCL_CC1 00000001h IFIMGCL_CC2 00000002h IFIMGCL_CC3 00000004h IFIMGCL_CC4 00000008h 内容 CC1 信号 CC2 信号 CC3 信号 CC4 信号 © 2003, 2016 Interface Corporation. All rights reserved. 403 GPC-5520 Help for Windows Mode カメラコントロール信号の出力条件を設定します。 各 CC 信号のデフォルト設定は IFIMG_CC_MODE_SOFT である。 識別子 値 内容 IFIMGCL_CC_MODE_SOFT 00000000h ImgCLOutPutPluse 関数で 1 パルス出力し ます。 IFIMGCL_CC_MODE_DI 00000001h 汎用入力スルーモード CC1 は DIN1、CC2 は DIN2、CC3 は DIN3、 CC4 は DIN4 に対応します。 IFIMGCL_CC_MODE_EDGE 00000002h 外部入力トリガ出力 汎用入力値は 0→1 に変化した時をトリ ガとします。 CC1 は DIN1、CC2 は DIN2、CC3 は DIN3、 CC4 は DIN4 に対応します。 IFIMGCL_CC_MODE_TIMER1 00000003h インターバルタイマ 1 同期 IFIMGCL_CC_MODE_ENC_CYCLE 00000005h 差動入力方式エンコーダカウンタ同期 IFIMGCL_CC_MODE_SENC1_CYCLE 00000006h シングルエンド入力方式エンコーダカウ ンタ 1 同期 IFIMGCL_CC_MODE_SENC2_CYCLE 00000007h シングルエンド入力方式エンコーダカウ ンタ 2 同期 IFIMGCL_CC_MODE_ENC_CNTUP 00000008h 差動入力方式エンコーダカウンタのカウ ントアップ IFIMGCL_CC_MODE_SENC1_CNTUP 00000009h シングルエンド入力方式エンコーダカウ ンタ 1 のカウントアップ IFIMGCL_CC_MODE_SENC2_CNTUP 0000000Ah シングルエンド入力方式エンコーダカウ ンタ 1 のカウントアップ また、下記識別子を OR 演算することで、出力論理を変更します。 指定しない場合は、正論理です。 識別子 値 内容 IFIMGCL_ACTIVE_LOW 00000100h 負論理 Pulse パルス幅を設定します。5μs 単位で設定可能です。 設定値:1~1023(5~5115μs) © 2003, 2016 Interface Corporation. All rights reserved. 404 GPC-5520 Help for Windows 【使用例】 ●C 言語 INT Ret; HANDLE DeviceHandle; Ret = ImgSetCCMode(DeviceHandle, IFIMGCL_CC1, IFIMGCL_CC_MODE_TIMER1, 1); ●Visual Basic Dim DeviceHandle As Long Ret = ImgSetCCMode(DeviceHandle, IFIMGCL_CC1, IFIMGCL_CC_MODE_TIMER1, 1) ●Delphi var DeviceHandle: THandle; Ret: Integer; Ret := ImgSetCCMode(DeviceHandle, IFIMGCL_CC1, IFIMGCL_CC_MODE_TIMER1, 1); ●VISUAL C# .NET int Ret; IntPtr DeviceHandle; Ret = IFCIMG_ANY.ImgSetCCMode(DeviceHandle, IFCIMG_ANY.IFIMGCL_CC1, IFCIMG_ANY.IFIMGCL_CC_MODE_TIMER1, 1); ●Visual Basic.NET Dim DeviceHandle As IntPtr Ret = IFCIMG_ANY.ImgSetCCMode(DeviceHandle, IFCIMG_ANY.IFIMGCL_CC1, _ IFCIMG_ANY.IFIMGCL_CC_MODE_TIMER1, 1) ●Delphi 8 var DeviceHandle: Integer; Ret: Integer; Ret := IFCIMG_ANY.ImgSetCCMode(DeviceHandle, IFCIMG_ANY.IFIMGCL_CC1, IFCIMG_ANY.IFIMGCL_CC_MODE_TIMER1, 1); CC1 信号をインターバルタイマ割り込み周期で出力させます。 © 2003, 2016 Interface Corporation. All rights reserved. 405 GPC-5520 Help for Windows 54. ImgOutputCCPluse 【機能】 カメラコントロール信号を 1 パルス出力します。 【書式】 ●C 言語 INT ImgOutputCCPluse( HANDLE DeviceHandle, DWORD CcSignal ); // // デバイスハンドル CC 信号 ●Visual Basic Declare Function ImgOutputCCPluse Lib "IfImg.dll"( _ ByVal DeviceHandle As Long, _ ‘ デバイスハンドル ByVal CcSignal, As Long _ ‘ CC 信号 )As Long ●Delphi function ImgOutputCCPluse ( DeviceHandle: THandle; CcSignal: DWORD ): Integer; stdcall; external IfImg.dll'; ●VISUAL C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgOutputCCPluse( IntPtr DeviceHandle, // uint CcSignal // ); // // ●VISUAL C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgOutputCCPluse( uint DeviceHandle, // uint CcSignal // ); デバイスハンドル CC 信号 デバイスハンドル CC 信号 デバイスハンドル CC 信号 ●Visual Basic .NET(x86、x64 共用) Declare Function ImgOutputCCPluse Lib "IfImg.dll"( _ ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル ByVal CcSignal, As Integer _ ‘ CC 信号 )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgOutputCCPluse Lib "IfImg.dll"( _ ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル ByVal CcSignal, As Integer _ ‘ CC 信号 )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 406 GPC-5520 Help for Windows ●Delphi 8 class function ImgOutputCCPluse ( DeviceHandle: Integer; CcSignal: Cardinal ): Integer; static; // // デバイスハンドル CC 信号 【パラメータ】 DeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 CcSignal 出力する CC 信号を選択します。 識別子 値 IFIMGCL_CC1 00000001h IFIMGCL_CC2 00000002h IFIMGCL_CC3 00000004h IFIMGCL_CC4 00000008h 内容 CC1 信号 CC2 信号 CC3 信号 CC4 信号 【使用例】 ●C 言語 INT Ret; HANDLE DeviceHandle; Ret = ImgOutputCCPluse(DeviceHandle, IFIMGCL_CC1); ●Visual Basic Dim DeviceHandle As Long Ret = ImgOutputCCPluse(DeviceHandle, IFIMGCL_CC1) ●Delphi var DeviceHandle: THandle; Ret: Integer; Ret := ImgOutputCCPluse (DeviceHandle, IFIMGCL_CC1); ●Visual C# .NET uint Ret; IntPtr DeviceHandle; Ret = IFCIMG_ANY.ImgOutputCCPluse(DeviceHandle, IFCIMG_ANY.IFIMGCL_CC1); © 2003, 2016 Interface Corporation. All rights reserved. 407 GPC-5520 Help for Windows ●Visual Basic.NET Dim DeviceHandle As IntPtr Ret = IFCIMG_ANY.ImgOutputCCPluse(DeviceHandle, IFCIMG_ANY.IFIMGCL_CC1) ●Delphi 8 var DeviceHandle: IntPtr; Ret: Integer; Ret := IFCIMG_ANY.ImgOutputCCPluse (DeviceHandle, IFCIMG_ANY.IFIMGCL_CC1); CC 信号 1 を 1 パルス出力します。 © 2003, 2016 Interface Corporation. All rights reserved. 408 GPC-5520 Help for Windows 55. ImgSerialSend シリアル制御方式で、カメラへデータを送信します。 【書式】 ●C 言語 INT ImgSerialSend ( HANDLE DeviceHandle, PVOID BuffPtr, PDWORD BuffSize, DWORD TimeOut ); // // // // デバイスハンドル 送信データ 送信データのサイズ タイムアウト時間 ●Visual Basic Declare Function ImgSerialSendLib "IfImg.dll"( _ ByVal DeviceHandle As Long, _ ‘ ByRef BuffPtr As Any, _ ‘ ByRef BuffSize As Long, _ ‘ ByVal TimeOut As Long _ ‘ )As Long デバイスハンドル 送信データ 送信データのサイズ タイムアウト時間 ●Delphi function ImgSerialSend ( DeviceHandle: THandle; // デバイスハンドル BuffPtr: Pointer; // 送信データ var BuffSize: DWORD; // 送信データのサイズ TimeOut: DWORD // タイムアウト時間 ): Integer; stdcall; external 'IfImg.dll'; ●VISUAL C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSerialSend ( IntPtr DeviceHandle, // byte[] BuffPtr, // out uint BuffSize, // uint TimeOut // ); [DllImport("IfImg.dll")] public static extern int ImgSerialSend ( IntPtr DeviceHandle, // short[] BuffPtr, // out uint BuffSize, // uint TimeOut // ); デバイスハンドル 送信データ 送信データのサイズ タイムアウト デバイスハンドル 送信データ 送信データのサイズ タイムアウト © 2003, 2016 Interface Corporation. All rights reserved. 409 GPC-5520 Help for Windows [DllImport("IfImg.dll")] public static extern int ImgSerialSend ( IntPtr DeviceHandle, // uint[] BuffPtr, // out uint BuffSize, // uint TimeOut // ); [DllImport("IfImg.dll")] public static extern int ImgSerialSend ( IntPtr DeviceHandle, // string BuffPtr, // out uint BuffSize, // uint TimeOut // ); [DllImport("IfImg.dll")] public static extern int ImgSerialSend ( IntPtr DeviceHandle, // IntPtr BuffPtr, // out uint BuffSize, // uint TimeOut // ); ●VISUAL C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSerialSend ( uint DeviceHandle, // byte[] BuffPtr, // out uint BuffSize, // uint TimeOut // ); [DllImport("IfImg.dll")] public static extern int ImgSerialSend ( uint DeviceHandle, // short[] BuffPtr, // out uint BuffSize, // uint TimeOut // ); [DllImport("IfImg.dll")] public static extern int ImgSerialSend ( uint DeviceHandle, // uint[] BuffPtr, // out uint BuffSize, // uint TimeOut // ); デバイスハンドル 送信データ 送信データのサイズ タイムアウト デバイスハンドル 送信データ 送信データのサイズ タイムアウト デバイスハンドル 送信データ 送信データのサイズ タイムアウト デバイスハンドル 送信データ 送信データのサイズ タイムアウト デバイスハンドル 送信データ 送信データのサイズ タイムアウト デバイスハンドル 送信データ 送信データのサイズ タイムアウト © 2003, 2016 Interface Corporation. All rights reserved. 410 GPC-5520 Help for Windows [DllImport("IfImg.dll")] public static extern int ImgSerialSend ( uint DeviceHandle, // string BuffPtr, // out uint BuffSize, // uint TimeOut // ); [DllImport("IfImg.dll")] public static extern int ImgSerialSend ( uint DeviceHandle, // IntPtr BuffPtr, // out uint BuffSize, // uint TimeOut // ); デバイスハンドル 送信データ 送信データのサイズ タイムアウト デバイスハンドル 送信データ 送信データのサイズ タイムアウト ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSerialSend Lib "IfImg.DLL"( ByVal DeviceHandle As IntPtr, _ ByVal BuffPtr( ) As Byte, _ ByRef BuffSize As Integer, _ ByVal TimeOut As Integer _ )As Integer _ ‘ ‘ ‘ ‘ デバイスハンドル 送信データ 送信データのサイズ タイムアウト Declare Function ImgSerialSend Lib "IfImg.DLL"( ByVal DeviceHandle As Integer, _ ByVal BuffPtr( ) As Short, _ ByRef BuffSize As Integer, _ ByVal TimeOut As Integer _ )As Integer _ ‘ ‘ ‘ ‘ デバイスハンドル 送信データ 送信データのサイズ タイムアウト Declare Function ImgSerialSend Lib "IfImg.DLL"( ByVal DeviceHandle As IntPtr, _ ByVal BuffPtr( ) As Integer, _ ByRef BuffSize As Integer, _ ByVal TimeOut As Integer _ )As Integer _ ‘ ‘ ‘ ‘ デバイスハンドル 送信データ 送信データのサイズ タイムアウト Declare Function ImgSerialSend Lib "IfImg.DLL"( ByVal DeviceHandle As IntPtr, _ ByVal BuffPtr As String, _ ByRef BuffSize As Integer, _ ByVal TimeOut As Integer _ )As Integer _ ‘ ‘ ‘ ‘ デバイスハンドル 送信データ 送信データのサイズ タイムアウト © 2003, 2016 Interface Corporation. All rights reserved. 411 GPC-5520 Help for Windows Declare Function ImgSerialSend Lib "IfImg.DLL"( ByVal DeviceHandle As IntPtr, _ ByVal BuffPtr As IntPtr, _ ByRef BuffSize As Integer, _ ByVal TimeOut As Integer _ )As Integer _ ‘ ‘ ‘ ‘ デバイスハンドル 送信データ 送信データのサイズ タイムアウト _ ‘ ‘ ‘ ‘ デバイスハンドル 送信データ 送信データのサイズ タイムアウト Declare Function ImgSerialSend Lib "IfImg.DLL"( ByVal DeviceHandle As Integer, _ ByVal BuffPtr( ) As Short, _ ByRef BuffSize As Integer, _ ByVal TimeOut As Integer _ )As Integer _ ‘ ‘ ‘ ‘ デバイスハンドル 送信データ 送信データのサイズ タイムアウト Declare Function ImgSerialSend Lib "IfImg.DLL"( ByVal DeviceHandle As Integer, _ ByVal BuffPtr( ) As Integer, _ ByRef BuffSize As Integer, _ ByVal TimeOut As Integer _ )As Integer _ ‘ ‘ ‘ ‘ デバイスハンドル 送信データ 送信データのサイズ タイムアウト Declare Function ImgSerialSend Lib "IfImg.DLL"( ByVal DeviceHandle As Integer, _ ByVal BuffPtr As String, _ ByRef BuffSize As Integer, _ ByVal TimeOut As Integer _ )As Integer _ ‘ ‘ ‘ ‘ デバイスハンドル 送信データ 送信データのサイズ タイムアウト Declare Function ImgSerialSend Lib "IfImg.DLL"( ByVal DeviceHandle As Integer, _ ByVal BuffPtr As IntPtr, _ ByRef BuffSize As Integer, _ ByVal TimeOut As Integer _ )As Integer _ ‘ ‘ ‘ ‘ デバイスハンドル 送信データ 送信データのサイズ タイムアウト ●Visual Basic .NET(x86 専用) Declare Function ImgSerialSend Lib "IfImg.DLL"( ByVal DeviceHandle As Integer, _ ByVal BuffPtr( ) As Byte, _ ByRef BuffSize As Integer, _ ByVal TimeOut As Integer _ )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 412 GPC-5520 Help for Windows ●Delphi 8 class function ImgSerialSend ( DeviceHandle: Integer; BuffPtr: array of Bytel; var BuffSize: Cardinal; TimeOut: Cardinal ): Integer; static; ImgSerialSend ( DeviceHandle: Integer; BuffPtr: array of Word; var BuffSize: Cardinal; TimeOut: Cardinal ): Integer; static; // // // // デバイスハンドル 送信データ 送信データのサイズ タイムアウト // // // // デバイスハンドル 送信データ 送信データのサイズ タイムアウト class function class function ImgSerialSend ( DeviceHandle: Integer; BuffPtr; array of Cardinal; var BuffSize: Cardinal; TimeOut: Cardinal ): Integer; static; ImgSerialSend ( Integer; IntPtr; Cardinal; Cardinal ): Integer; static; // // // // デバイスハンドル 送信データ 送信データのサイズ タイムアウト // // // // デバイスハンドル 送信データ 送信データのサイズ タイムアウト class function DeviceHandle: BuffPtr; var BuffSize: TimeOut: 【パラメータ】 DeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 BuffPtr 送信データを格納しているバッファのポインタ(参照渡し)を指定します。 BuffSize 送信データバッファのサイズを格納している変数のポインタ(参照渡し)を指定します。 関数実行後、この変数には実際に送信したデータのサイズが格納されます。 TimeOut タイムアウト時間を ms 単位で指定します。 送信用 FIFO がフルになっている状態が、指定した時間を超えた場合、関数はタイムアウ トエラーを返します。 © 2003, 2016 Interface Corporation. All rights reserved. 413 GPC-5520 Help for Windows 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 【使用例】 ●C 言語 INT Ret; HANDLE DeviceHandle; DWORD SendSize; BYTE SendData[11]; SendSize = 11; // ”Interface”文字列(ASCII)をセット SendData[0] = 0x02; // STX SendData[1] = 0x49; // I SendData[2] = 0x6E; // n SendData[3] = 0x74; // t SendData[4] = 0x65; // e SendData[5] = 0x72; // r SendData[6] = 0x66; // f SendData[7] = 0x61; // a SendData[8] = 0x63; // c SendData[9] = 0x65; // e SendData[10] = 0x03; // ETX Ret = ImgSerialSend(DeviceHandle, SendData , &SendSize, 1000); © 2003, 2016 Interface Corporation. All rights reserved. 414 GPC-5520 Help for Windows ●Visual Basic Dim DeviceHandle As Long Dim Ret As Integer Dim SendSize As Long Dim SendData(11) As Byte : SendSize = 11 ' ”Interface”文字列(ASCII)をセット SendData(0) = &H02 ' STX SendData(1) = &H49 ' I SendData(2) = &H6E ' n SendData(3) = &H74 ' t SendData(4) = &H65 ' e SendData(5) = &H72 ' r SendData(6) = &H66 ' f SendData(7) = &H61 ' a SendData(8) = &H63 ' c SendData(9) = &H65 ' e SendData(10) = &H03 ' ETX Ret = ImgSerialSend(DeviceHandle, SendData(0), SendSize, 1000) © 2003, 2016 Interface Corporation. All rights reserved. 415 GPC-5520 Help for Windows ●Delphi var DeviceHandle: THandle; Ret: Integer; SendSize: DWORD; SendData: Array[0..10] of byte; SendSize := 11; // ”Interface”文字列(ASCII)をセット SendData[0] := $02; // STX SendData[1] := $49; // I SendData[2] := $6E; // n SendData[3] := $74; // t SendData[4] := $65; // e SendData[5] := $72; // r SendData[6] := $66; // f SendData[7] := $61; // a SendData[8] := $63; // c SendData[9] := $65; // e SendData[10] := $03; // ETX Ret := ImgSerialSend(DeviceHandle, SendData, SendSize, 1000); ●VISUAL C# .NET uint ret; IntPtr DeviceHandle; uint SendSize; byte SendData[11]; SendSize = 11; // ”Interface”文字列(ASCII)をセット SendData[0] = 0x02; // STX SendData[1] = 0x49; // I SendData[2] = 0x6E; // n SendData[3] = 0x74; // t SendData[4] = 0x65; // e SendData[5] = 0x72; // r SendData[6] = 0x66; // f SendData[7] = 0x61; // a SendData[8] = 0x63; // c SendData[9] = 0x65; // e SendData[10] = 0x03; // ETX ret = IFCIMG_ANY.ImgSerialSend(DeviceHandle, SendData , out SendSize, 1000); © 2003, 2016 Interface Corporation. All rights reserved. 416 GPC-5520 Help for Windows ●Visual Basic .NET Dim DeviceHandle As IntPtr Dim ret As Integer Dim SendSize As Integer Dim SendData(11) As Byte : SendSize = 11 ' ”Interface”文字列(ASCII)をセット SendData(0) = &H02 ' STX SendData(1) = &H49 ' I SendData(2) = &H6E ' n SendData(3) = &H74 ' t SendData(4) = &H65 ' e SendData(5) = &H72 ' r SendData(6) = &H66 ' f SendData(7) = &H61 ' a SendData(8) = &H63 ' c SendData(9) = &H65 ' e SendData(10) = &H03 ' ETX Ret = IFCIMG_ANY.ImgSerialSend(DeviceHandle, SendData(0), SendSize, 1000) ●Delphi 8 var DeviceHandle: Integer; ret: Integer; SendSize: Integer; SendData: Array[0..10] of byte; SendSize := 11; // ”Interface”文字列(ASCII)をセット SendData[0] := $02; // STX SendData[1] := $49; // I SendData[2] := $6E; // n SendData[3] := $74; // t SendData[4] := $65; // e SendData[5] := $72; // r SendData[6] := $66; // f SendData[7] := $61; // a SendData[8] := $63; // c SendData[9] := $65; // e SendData[10] := $03; // ETX ret := IFCIMG_ANY.ImgSerialSend(DeviceHandle, SendData, SendSize, 1000); © 2003, 2016 Interface Corporation. All rights reserved. 417 GPC-5520 Help for Windows STX,ETX コード付きの文字列(Interface)を送信します。 送信データのフォーマットはご使用のカメラによって異なりますので、カメラのマニュアルを参 照してください。 © 2003, 2016 Interface Corporation. All rights reserved. 418 GPC-5520 Help for Windows 56. ImgSerialReceive 【機能】 シリアル通信方式でカメラからのデータを受信します。 【書式】 ●C 言語 INT ImgSerialReceive ( HANDLE DeviceHandle, PVOID BuffPtr, PDWORD BuffSize, DWORD TimeOut ); // // // // デバイスハンドル 受信データ 受信データのサイズ タイムアウト時間 ●Visual Basic Declare Function ImgSerialReceive Lib "IfImg.dll"( _ ByVal DeviceHandle As Long, _ ‘ デバイスハンドル ByRef BuffPtr As Any, _ ‘ 受信データ ByRef BuffSize As Long, _ ‘ 受信データのサイズ ByVal TimeOut As Long _ ‘ タイムアウト時間 )As Long ●Delphi function ImgSerialReceive ( DeviceHandle: Thandle; // デバイスハンドル BuffPtr Pointer; // 受信データ var BuffSize: DWORD; // 受信データのサイズ TimeOut: DWORD // タイムアウト時間 ): Integer; stdcall; external 'IfImg.dll'; ●VISUAL C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSerialReceive IntPtr DeviceHandle, // byte[] BuffPtr, // out uint BuffSize, // uint TimeOut // ); [DllImport("IfImg.dll")] public static extern int ImgSerialReceive IntPtr DeviceHandle, // short[] BuffPtr, // out uint BuffSize, // uint TimeOut // ); ( デバイスハンドル 受信データ 受信データのサイズ タイムアウト ( デバイスハンドル 受信データ 受信データのサイズ タイムアウト © 2003, 2016 Interface Corporation. All rights reserved. 419 GPC-5520 Help for Windows [DllImport("IfCml.dll")] public static extern int ImgSerialReceive IntPtr DeviceHandle, // uint[] BuffPtr, // out uint BuffSize, // uint TimeOut // ); ( デバイスハンドル 受信データ 受信データのサイズ タイムアウト [DllImport("IfCml.dll")] public static extern int ImgSerialReceive IntPtr DeviceHandle, // IntPtr BuffPtr, // out uint BuffSize, // uint TimeOut // ); ( デバイスハンドル 受信データ 受信データのサイズ タイムアウト ●VISUAL C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSerialReceive uint DeviceHandle, // byte[] BuffPtr, // out uint BuffSize, // uint TimeOut // ); ( デバイスハンドル 受信データ 受信データのサイズ タイムアウト [DllImport("IfImg.dll")] public static extern int ImgSerialReceive uint DeviceHandle, // short[] BuffPtr, // out uint BuffSize, // uint TimeOut // ); ( デバイスハンドル 受信データ 受信データのサイズ タイムアウト [DllImport("IfImg.dll")] public static extern int ImgSerialReceive uint DeviceHandle, // uint[] BuffPtr, // out uint BuffSize, // uint TimeOut // ); ( デバイスハンドル 受信データ 受信データのサイズ タイムアウト [DllImport("IfImg.dll")] public static extern int ImgSerialReceive uint DeviceHandle, // IntPtr BuffPtr, // out uint BuffSize, // uint TimeOut // ); ( デバイスハンドル 受信データ 受信データのサイズ タイムアウト © 2003, 2016 Interface Corporation. All rights reserved. 420 GPC-5520 Help for Windows ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSerialReceive Lib "IfImg.DLL"( _ ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル ByVal BuffPtr( ) As Byte, _ ‘ 受信データ ByRef BuffSize As Integer, _ ‘ 受信データのサイズ ByVal TimeOut As Integer _ ‘ タイムアウト )As Integer Declare Function ImgSerialReceive Lib "IfImg.DLL"( _ ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル ByVal BuffPtr( ) As Short, _ ‘ 受信データ ByRef BuffSize As Integer, _ ‘ 受信データのサイズ ByVal TimeOut As Integer _ ‘ タイムアウト )As Integer Declare Function ImgSerialReceive Lib "IfImg.DLL"( _ ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル ByVal BuffPtr( ) As Integer, _ ‘ 受信データ ByRef BuffSize As Integer, _ ‘ 受信データのサイズ ByVal TimeOut As Integer _ ‘ タイムアウト )As Integer Declare Function ImgSerialReceive Lib "IfImg.DLL"( _ ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル ByVal BuffPtr As IntPtr, _ ‘ 受信データ ByRef BuffSize As Integer, _ ‘ 受信データのサイズ ByVal TimeOut As Integer _ ‘ タイムアウト )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgSerialReceive Lib "IfImg.DLL"( _ ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル ByVal BuffPtr( ) As Byte, _ ‘ 受信データ ByRef BuffSize As Integer, _ ‘ 受信データのサイズ ByVal TimeOut As Integer _ ‘ タイムアウト )As Integer Declare Function ImgSerialReceive Lib "IfImg.DLL"( _ ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル ByVal BuffPtr( ) As Short, _ ‘ 受信データ ByRef BuffSize As Integer, _ ‘ 受信データのサイズ ByVal TimeOut As Integer _ ‘ タイムアウト )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 421 GPC-5520 Help for Windows Declare Function ImgSerialReceive Lib "IfImg.DLL"( _ ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル ByVal BuffPtr( ) As Integer, _ ‘ 受信データ ByRef BuffSize As Integer, _ ‘ 受信データのサイズ ByVal TimeOut As Integer _ ‘ タイムアウト )As Integer Declare Function ImgSerialReceive Lib "IfImg.DLL"( _ ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル ByVal BuffPtr As IntPtr, _ ‘ 受信データ ByRef BuffSize As Integer, _ ‘ 受信データのサイズ ByVal TimeOut As Integer _ ‘ タイムアウト )As Integer ●Delphi 8 class function ImgSerialReceive ( DeviceHandle: Integer; BuffPtr: array of byte; var BuffSize: Cardinal; TimeOut: Cardinal ): Integer; static; ImgSerialReceive ( Integer; array of Word; Cardinal; Cardinal ): Integer; static; // // // // デバイスハンドル 受信データ 受信データのサイズ タイムアウト // // // // デバイスハンドル 受信データ 受信データのサイズ タイムアウト class function DeviceHandle: BuffPtr; var BuffSize: TimeOut: class function ImgSerialReceive ( Integer; array of Cardinal; Cardinal; Cardinal ): Integer; static; DeviceHandle: BuffPtr var BuffSize: TimeOut: ImgSerialReceive ( Integer; IntPtr; Cardinal; Cardinal ): Integer; static; // // // // デバイスハンドル 受信データ 受信データのサイズ タイムアウト // // // // デバイスハンドル 受信データ 受信データのサイズ タイムアウト class function DeviceHandle: BuffPtr var BuffSize: TimeOut: 【パラメータ】 DeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 © 2003, 2016 Interface Corporation. All rights reserved. 422 GPC-5520 Help for Windows BuffPtr 受信データを格納しているバッファポインタ(参照渡し)を指定します。 BuffSize 受信データバッファのサイズが格納された変数のポインタ(参照渡し)を指定します。 TimeOut タイムアウト時間を ms 単位で指定します。 受信用 FIFO が空になっている状態が、指定した時間を超えた場合、関数はタイムアウト エラーを返します。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 【使用例】 ●C 言語 INT Ret; HANDLE DeviceHandle; BYTE Buf[5]; DWORD RecvSize; RecvSize = 5; : Ret = ImgSerialReceive(DeviceHandle, Buf, &RecvSize, 1000); ●Visual Basic Dim DeviceHandle As Long Dim Ret As Integer Dim Buf(0 to 4) As Byte Dim RecvSize As Long RecvSize = 5 : Ret = ImgSerialReceive(DeviceHandle, Buf(0), RecvSize, 1000) © 2003, 2016 Interface Corporation. All rights reserved. 423 GPC-5520 Help for Windows ●Delphi var DeviceHandle: THandle; Buf: Array[0..4] of Char; Ret: Integer; RecvSize: DWORD; RecvSize := 5; : Ret := ImgSerialReceive(DeviceHandle, Buf , RecvSize, 1000); ●VISUAL C# .NET uint ret; IntPtr DeviceHandle; byte Buf[5]; uint RecvSize; RecvSize = 5; ret = IFCIMG_ANY.CmlSerialReceive(DeviceHandle, Buf, out RecvSize, 1000); ●Visual Basic .NET Dim DeviceHandle As IntPtr Dim ret As Integer Dim Buf(0 to 4) As Byte Dim RecvSize As Integer RecvSize = 5; ret = IFCIMG_ANY.CmlSerialReceive(DeviceHandle, Buf(0), RecvSize, 1000) ●Delphi 8 var DeviceHandle: Integer; Buf: Array[0..4] of Byte; ret: Integer; RecvSize: Integer; RecvSize := 5; ret := IFCIMG_ANY.CmlSerialReceive(DeviceHandle, Buf , RecvSize, 1000); カメラへシリアル通信方法により、5 バイト分データを受信します。 © 2003, 2016 Interface Corporation. All rights reserved. 424 GPC-5520 Help for Windows 57. ImgGetSerialStatus 【機能】 デバイスの送信用 FIFO と受信用 FIFO の状態を取得します。 【書式】 ●C 言語 INT ImgGetSerialStatus( HANDLE DeviceHandle, PDWORD Status, PDWORD DataSize ); // // // デバイスハンドル シリアルステータス 受信サイズ ●Visual Basic Declare Function ImgGetSerialStatus Lib "IfImg.dll"( _ ByVal DeviceHandle As Long, _ ‘ デバイスハンドル ByRef Status As Long, _ ‘ シリアルステータス ByRef DataSize As Long _ ‘ 受信サイズ )As Long ●Delphi function ImgGetSerialStatus ( DeviceHandle: Thandle; // デバイスハンドル var Status: DWORD; // シリアルステータス var DataSize: DWORD // 受信サイズ ): Integer; stdcall; external 'IfImg.dll'; ●VISUAL C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgGetSerialStatus( IntPtr DeviceHandle, // デバイスハンドル out uint Status, // シリアルステータス out uint DataSize // 受信サイズ ); ●VISUAL C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgGetSerialStatus( uint DeviceHandle, // デバイスハンドル out uint Status, // シリアルステータス out uint DataSize // 受信サイズ ); ●Visual Basic .NET(x86、x64 共用) Declare Function ImgGetSerialStatus Lib "IfImg.dll"( _ ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル ByRef Status As Integer, _ ‘ シリアルステータス ByRef DataSize As Integer _ ‘ 受信サイズ )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 425 GPC-5520 Help for Windows ●Visual Basic .NET(x86 専用) Declare Function ImgGetSerialStatus Lib "IfImg.dll"( _ ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル ByRef Status As Integer, _ ‘ シリアルステータス ByRef DataSize As Integer _ ‘ 受信サイズ )As Integer ●Delphi 8 class function ImgGetSerialStatus DeviceHandle: Integer; var Status: Cardinal; var DataSize: Cardinal ): Integer; static; ( // // // デバイスハンドル シリアルステータス 受信サイズ 【パラメータ】 DeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 Status ステータスを格納する変数のポインタ(参照渡し)を指定します。 ビット bit31~bit6 bit5 bit4 bit3 bit2 bit1 bit0 内容 予約 送信状態 1:送信完了 0:送信中 送信用 FIFO の状態 1:フルになっている。 0:フルになっていない。 予約 受信用 FIFO 状態 1:オーバーフローした。 0:オーバーフローしていない。 受信状態 1:受信完了/受信待機中 0:受信中 受信用 FIFO 状態 1:フルになっている 0:フルになっていない 説明 予約です。 送信完了時に ImgSerialSend 関数でデータを送 信する事ができます。 送信用 FIFO がフルになっており、ImgSerialSend 関数でデータを送信する事ができません。 予約です。 受信用ハードウェア FIFO がオーバーフローして おり、受信データを取りこぼしています。 受信中の場合、受信用ハードウェア FIFO にデー タが入っている事を意味します。 ImgSerialReceive 関数でデータを取得する事が できます。 受信用ハードウェア FIFO がフルになっており、 受信データを取りこぼす可能性があります。 DataSize 受信 FIFO に格納されている受信データの容量が格納されます。(0~4096) 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 © 2003, 2016 Interface Corporation. All rights reserved. 426 GPC-5520 Help for Windows 【使用例】 ●C 言語 INT Ret; HANDLE DeviceHandle; DWORD Status; DWORD DataSize; : Ret = ImgGetSerialStatus(DeviceHandle, &Status, &DataSize); ●Visual Basic Dim DeviceHandle As Long Dim Ret As Integer Dim Status As Long Dim DataSize As Long : Ret = ImgGetSerialStatus(DeviceHandle, Status, DataSize) ●Delphi var DeviceHandle: THandle; Ret: Integer; Status: DWORD; DataSize: DWORD; : Ret := ImgGetSerialStatus(DeviceHandle, Status, DataSize); ●Visual C# .NET int Ret; IntPtr DeviceHandle; uint Status; uint DataSize; : Ret = IFCIMG_ANY.ImgGetSerialStatus(DeviceHandle, out Status, out DataSize); © 2003, 2016 Interface Corporation. All rights reserved. 427 GPC-5520 Help for Windows ●Visual Basic.NET Dim DeviceHandle As IntPtr Dim Ret As Integer Dim Status As Intger Dim DataSize As Integer : Ret = IFCIMG_ANY.ImgGetSerialStatus(DeviceHandle, Status, DataSize) ●Delphi 8 var DeviceHandle: Integer; Ret: Integer; Status: Cardinal; DataSize: Cardinal; : Ret := IFCIMG_ANY.ImgGetSerialStatus(DeviceHandle, Status, DataSize); シリアル通信状態を取得します。 © 2003, 2016 Interface Corporation. All rights reserved. 428 GPC-5520 Help for Windows 58. ImgSerialClear 【機能】 デバイスの送信用 FIFO と受信用 FIFO 内のデータをクリアします。 【書式】 ●C 言語 INT ImgSerialClear ( HANDLE DeviceHandle, DWORD Fifo ); // デバイスハンドル // FIFO ●Visual Basic Declare Function ImgSerialClear Lib "IfImg.dll"( _ ByVal DeviceHandle As Long, _ ‘ デバイスハンドル ByVal Fifo As Long _ ‘ FIFO )As Long ●Delphi function ImgSerialClear( DeviceHandle: Thandle; // デバイスハンドル Fifo: DWORD // FIFO ): Integer; stdcall; external 'IfImg.dll'; ●VISUAL C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSerialClear ( IntPtr DeviceHandle, // デバイスハンドル uint Fifo // FIFO ); ●VISUAL C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSerialClear ( uint DeviceHandle, // デバイスハンドル uint Fifo // FIFO ); ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSerialClear Lib "IfImg.dll"( _ ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル ByVal Fifo As Integer _ ‘ FIFO )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgSerialClear Lib "IfImg.dll"( _ ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル ByVal Fifo As Integer _ ‘ FIFO )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 429 GPC-5520 Help for Windows ●Delphi 8 class function ImgSerialClear( DeviceHandle: Integer; Fifo: Caerdinal ): Integer; static; // デバイスハンドル // FIFO 【パラメータ】 DeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 Fifo クリアする FIFO を選択します。同時指定可能です。 識別子 値 内容 IFIMGCL_SEND_FIFO 00000001h 送信用 FIFO IFIMGCL_RECEIVE_FIFO 00000002h 受信用 FIFO 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 【使用例】 ●C 言語 INT Ret; HANDLE DeviceHandle; : Ret = ImgSerialClear(DeviceHandle, IFIMGCL_SEND_FIFO); ●Visual Basic Dim DeviceHandle As Long Dim Ret As Integer : Ret = ImgSerialClear(DeviceHandle, IFIMGCL_SEND_FIFO) ●Delphi var DeviceHandle: THandle; Ret: Integer; : Ret := ImgSerialClear(DeviceHandle, IFIMGCL_SEND_FIFO); © 2003, 2016 Interface Corporation. All rights reserved. 430 GPC-5520 Help for Windows ●Visual C# .NET int Ret; IntPtr DeviceHandle; : Ret = IFCIMG_ANY.ImgSerialClear(DeviceHandle, IFCIMG_ANY.IFIMGCL_SEND_FIFO); ●Visual Basic.NET Dim DeviceHandle As IntPtr Dim Ret As Integer : Ret = IFCIMG_ANY.ImgSerialClear(DeviceHandle, IFCIMG_ANY.IFIMGCL_SEND_FIFO) ●Delphi 8 var DeviceHandle: Integer; Ret: Integer; : Ret := IFCIMG_ANY.ImgSerialClear(DeviceHandle, IFCIMG_ANY.IFIMGCL_SEND_FIFO); 送信 FIFO の中身をクリアします。 © 2003, 2016 Interface Corporation. All rights reserved. 431 GPC-5520 Help for Windows 59. ImgOutputPower 【機能】 カメラへの給電を行います。カメラが PoCL 規格のみ対応しています。 【書式】 ●C 言語 INT ImgOutputPower( HANDLE DeviceHandle, DWORD Power ); // デバイスハンドル // パワーON/OFF ●Visual Basic Declare Function ImgOutputPower Lib "IfImg.dll"( _ ByVal DeviceHandle As Long, _ ‘ デバイスハンドル ByVal Power As Long _ ‘ パワーON/OFF )As Long ●Delphi function ImgOutputPower( DeviceHandle: THandle; // デバイスハンドル Power: DWORD // パワーON/OFF ): Integer; stdcall; external 'IfImg.dll'; ●VISUAL C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgOutputPower( IntPtr DeviceHandle, // デバイスハンドル uint Power // パワーON/OFF ); ●VISUAL C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgOutputPower( uint DeviceHandle, // デバイスハンドル uint Power // パワーON/OFF ); ●Visual Basic .NET(x86、x64 共用) Declare Function ImgOutputPower Lib "IfImg.dll"( _ ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル ByVal Power As Intger _ ‘ パワーON/OFF )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgOutputPower Lib "IfImg.dll"( _ ByVal DeviceHandle As Integer _ ‘ デバイスハンドル ByVal Power As Intger _ ‘ パワーON/OFF )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 432 GPC-5520 Help for Windows ●Delphi 8 class function ImgOutputPower( DeviceHandle: Integer; Power: Cardinal ): Integer; static; // デバイスハンドル // パワーON/OFF 【パラメータ】 DeviceHandle ImgOpen関数で取得したデバイスハンドルを指定してください。 Power カメラへの電源 ON/OFF を指定します。 識別子 値 内容 IFIMGCL_PWR_ON 00000001h カメラへ給電する IFIMGCL_PWR_OFF 00000000h カメラへ給電しない 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くださ い。 【備考】 ・PoCL 対応のカメラに電源を供給した場合、カメラによっては電源が安定するまでに時間がか かる場合があります。 【使用例】 ●C 言語 INT Ret; HANDLE DeviceHandle; : Ret = ImgOutputPower(DeviceHandle, IFCML_PWR_ON); ●Visual Basic Dim DeviceHandle As Long Dim Ret As Integer : Ret = ImgOutputPower(DeviceHandle, IFCML_PWR_ON) ●Delphi var DeviceHandle: THandle; Ret: Integer; : Ret := ImgOutputPower(DeviceHandle, IFCML_PWR_ON); © 2003, 2016 Interface Corporation. All rights reserved. 433 GPC-5520 Help for Windows ●Visual C# .NET int Ret; IntPtr DeviceHandle; : Ret = IFCIMG_ANY.ImgOutputPower(DeviceHandle, IFCIMG_ANY.IFCML_PWR_ON); ●Visual Basic.NET Dim DeviceHandle As Long Dim Ret As Integer : Ret = IFCIMG_ANY.ImgOutputPower(DeviceHandle, IFCIMG_ANY.IFCML_PWR_ON) ●Delphi 8 var DeviceHandle: THandle; Ret: Integer; : Ret := IFCIMG_ANY.ImgOutputPower(DeviceHandle, IFCIMG_ANY.IFCML_PWR_ON); カメラへ電源を供給します。 © 2003, 2016 Interface Corporation. All rights reserved. 434 GPC-5520 Help for Windows 60. ImgSetEncodeCntMode 【機能】 エンコーダカウンタのカウント動作を設定します。 【書式】 ●C 言語 INT ImgSetEncodeCntMode ( HANDLE DeviceHandle, DWORD SelectEncCounter, PIFIMGCLENCCFG EncoderCntConfig ); // // // デバイスハンドル CC 信号 出力モード ●Visual Basic Declare Function ImgSetEncodeCntMode Lib "IfImg.dll"( _ ByVal DeviceHandle, As Long, _ ‘ デバイスハンドル ByVal SelectEncCounter, As Long, _ ‘ CC 信号 ByRef EncoderCntConfig As IFIMGCLENCCFG ‘ 出力モード )As Long ●Delphi function ImgSetEncodeCntMode ( DeviceHandle: THandle; SelectEncCounter: DWORD; var EncoderCntConfig: IFIMGCLENCCFG ): Integer; stdcall; external IfImg.dll'; ●VISUAL C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetEncodeCntMode ( IntPtr DeviceHandle, // uint SelectEncCounter, // ref IFIMGCLENCCFG EncoderCntConfig // ); // // // ●VISUAL C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetEncodeCntMode ( uint DeviceHandle, // uint SelectEncCounter, // ref IFIMGCLENCCFG EncoderCntConfig // ); デバイスハンドル CC 信号 出力モード デバイスハンドル CC 信号 出力モード デバイスハンドル CC 信号 出力モード ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetEncodeCntMode Lib "IfImg.dll"( _ ByVal DeviceHandle, As IntPtr, _ ‘ デバイスハンドル ByVal SelectEncCounter, As Integer, _ ‘ CC 信号 ByRef EncoderCntConfig As IFIMGCLENCCFG ‘ 出力モード )As Integer © 2003, 2016 Interface Corporation. All rights reserved. 435 GPC-5520 Help for Windows ●Visual Basic .NET(x86 専用) Declare Function ImgSetEncodeCntMode Lib "IfImg.dll"( _ ByVal DeviceHandle, As Integer, _ ‘ デバイスハンドル ByVal SelectEncCounter, As Integer, _ ‘ CC 信号 ByRef EncoderCntConfig As IFIMGCLENCCFG ‘ 出力モード )As Integer ●Delphi 8 class function ImgSetEncodeCntMode ( DeviceHandle: Integer; SelectEncCounter: Cardinal; var EncoderCntConfig: IFIMGCLENCCFG ): Integer; static; // // // デバイスハンドル CC 信号 出力モード 【パラメータ】 DeviceHandle ImgOpen 関数から得られるデバイスハンドル SelectEncCounter エンコーダカウンタ選択 識別子 IFIMGCL_ENCCNT_DIFFRENTIAL IFIMGCL_ENCCNT_SINGLEENDED1 IFIMGCL_ENCCNT_SINGLEENDED2 値 内容 00000001h 差動入力方式エンコーダカウンタの設定 00000002h シングルエンド入力方式 1 エンコーダカウ ンタ 00000003h シングルエンド入力方式 2 エンコーダカウ ンタ EncoderCntConfig エンコーダカウント条件を指定します。IFIMGCLENCCFG 構造体変数のポインタ(参照渡し) を指定します。 【使用例】 ●C 言語 INT Ret; HANDLE DeviceHandle; IFIMGCLENCCFG EncoderCntConfig; EncoderCntConfig.Direction = IFIMGCL_DIRECTION_NORMAL; EncoderCntConfig.Edge = IFIMGCL_SINGLE_EDGE; EncoderCntConfig.PulseMode = IFIMGCL_PHASE_SHIFTED_MODE; EncoderCntConfig.StartMode = IFIMGCL_CNT_START_NONE; EncoderCntConfig.StartCounter = 0; EncoderCntConfig.FilterBaceClock = IFIMGCL_CLOCK_100_NANO; EncoderCntConfig.FilterCount = 1; : Ret = ImgSetEncodeCntMode(DeviceHandle, IFIMGCL_ENCCNT_DIFFRENTIAL, &EncoderCntConfig); © 2003, 2016 Interface Corporation. All rights reserved. 436 GPC-5520 Help for Windows ●Visual Basic Dim DeviceHandle As Long Dim Ret As Integer Dim EncoderCntConfig As IFIMGCLENCCFG; EncoderCntConfig.Direction = IFIMGCL_DIRECTION_NORMAL EncoderCntConfig.Edge = IFIMGCL_SINGLE_EDGE EncoderCntConfig.PulseMode = IFIMGCL_PHASE_SHIFTED_MODE EncoderCntConfig.StartMode = IFIMGCL_CNT_START_NONE EncoderCntConfig.StartCounter = 0 EncoderCntConfig.FilterBaceClock = IFIMGCL_CLOCK_100_NANO EncoderCntConfig.FilterCount = 1 : Ret = ImgSetEncodeCntMode(DeviceHandle, IFIMGCL_ENCCNT_DIFFRENTIAL, EncoderCntConfig) ●Delphi var DeviceHandle: THandle; Ret: Integer; EncoderCntConfig: IFIMGCLENCCFG; EncoderCntConfig.Direction := IFIMGCL_DIRECTION_NORMAL; EncoderCntConfig.Edge := IFIMGCL_SINGLE_EDGE; EncoderCntConfig.PulseMode := IFIMGCL_PHASE_SHIFTED_MODE; EncoderCntConfig.StartMode := IFIMGCL_CNT_START_NONE; EncoderCntConfig.StartCounter := 0; EncoderCntConfig.FilterBaceClock := IFIMGCL_CLOCK_100_NANO; EncoderCntConfig.FilterCount := 1; : Ret := ImgSetEncodeCntMode(DeviceHandle, IFIMGCL_ENCCNT_DIFFRENTIAL, &EncoderCntConfig); © 2003, 2016 Interface Corporation. All rights reserved. 437 GPC-5520 Help for Windows ●Visual C# .NET int Ret; IntPtr DeviceHandle; IFCIMG_ANY.IFIMGCLENCCFG EncoderCntConfig; EncoderCntConfig.Direction = IFCIMG_ANY.IFIMGCL_DIRECTION_NORMAL; EncoderCntConfig.Edge = IFCIMG_ANY.IFIMGCL_SINGLE_EDGE; EncoderCntConfig.PulseMode = IFCIMG_ANY.IFIMGCL_PHASE_SHIFTED_MODE; EncoderCntConfig.StartMode = IFCIMG_ANY.IFIMGCL_CNT_START_NONE; EncoderCntConfig.StartCounter = 0; EncoderCntConfig.FilterBaceClock = IFCIMG_ANY.IFIMGCL_CLOCK_100_NANO; EncoderCntConfig.FilterCount = 1; : Ret = IFCIMG_ANY.ImgSetEncodeCntMode(DeviceHandle, IFCIMG_ANY.IFIMGCL_ENCCNT_DIFFRENTIAL, ref EncoderCntConfig); ●Visual Basic .NET Dim DeviceHandle As IntPtr Dim Ret As Integer Dim EncoderCntConfig As IFCIMG_ANY.IFIMGCLENCCFG; EncoderCntConfig.Direction = IFCIMG_ANY.IFIMGCL_DIRECTION_NORMAL EncoderCntConfig.Edge = IFCIMG_ANY.IFIMGCL_SINGLE_EDGE EncoderCntConfig.PulseMode = IFCIMG_ANY.IFIMGCL_PHASE_SHIFTED_MODE EncoderCntConfig.StartMode = IFCIMG_ANY.IFIMGCL_CNT_START_NONE EncoderCntConfig.StartCounter = 0 EncoderCntConfig.FilterBaceClock = IFCIMG_ANY.IFIMGCL_CLOCK_100_NANO EncoderCntConfig.FilterCount = 1 : Ret = IFCIMG_ANY.ImgSetEncodeCntMode(DeviceHandle, _ IFCIMG_ANY.IFIMGCL_ENCCNT_DIFFRENTIAL, EncoderCntConfig) © 2003, 2016 Interface Corporation. All rights reserved. 438 GPC-5520 Help for Windows ●Delphi 8 var DeviceHandle: Integer; Ret: Integer; EncoderCntConfig: IFCIMG_ANY.IFIMGCLENCCFG; EncoderCntConfig.Direction := IFCIMG_ANY.IFIMGCL_DIRECTION_NORMAL; EncoderCntConfig.Edge := IFCIMG_ANY.IFIMGCL_SINGLE_EDGE; EncoderCntConfig.PulseMode := IFCIMG_ANY.IFIMGCL_PHASE_SHIFTED_MODE; EncoderCntConfig.StartMode := IFCIMG_ANY.IFIMGCL_CNT_START_NONE; EncoderCntConfig.StartCounter := 0; EncoderCntConfig.FilterBaceClock := IFCIMG_ANY.IFIMGCL_CLOCK_100_NANO; EncoderCntConfig.FilterCount := 1; : Ret := IFCIMG_ANY.ImgSetEncodeCntMode(DeviceHandle, IFCIMG_ANY.IFIMGCL_ENCCNT_DIFFRENTIAL, EncoderCntConfig); 差動入力エンコーダカウンタを通常方向、1 逓倍、位相差カウント、スタートカウント 0、スタ ートモードなし、デジタルフィルタの基準クロックを 100ns でフィルタカウントを 1 に設定しま す。 © 2003, 2016 Interface Corporation. All rights reserved. 439 GPC-5520 Help for Windows 61. ImgSetCounterCycle 【機能】 各種カウンタのカウンタ周期を設定します。本関数を実行するとカウンタはリセットされま す。 【書式】 ●C 言語 INT ImgSetCounterCycle ( HANDLE DeviceHandle, DWORD CounterSelect, DWORD CntCycle ); // // // デバイスハンドル カウンタ選択 カウンタ周期 ●Visual Basic Declare Function ImgSetCounterCycle Lib "IfImg.dll"( _ ByVal DeviceHandle As Long, _ ‘ デバイスハンドル ByVal CounterSelect, As Long, _ ‘ カウンタ選択 ByVal CntCycle As Long _ ‘ カウンタ周期 )As Long ●Delphi function ImgSetCounterCycle ( DeviceHandle: THandle; CounterSelect: DWORD; CntCycle: DWORD ): Integer; stdcall; external IfImg.dll'; // // // デバイスハンドル カウンタ選択 カウンタ周期 ●VISUAL C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetCounterCycle ( IntPtr DeviceHandle, // デバイスハンドル uint CounterSelect, // カウンタ選択 uint CntCycle // カウンタ周期 ); ●VISUAL C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetCounterCycle ( uint DeviceHandle, // デバイスハンドル uint CounterSelect, // カウンタ選択 uint CntCycle // カウンタ周期 ); © 2003, 2016 Interface Corporation. All rights reserved. 440 GPC-5520 Help for Windows ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetCounterCycle Lib "IfImg.dll"( _ ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル ByVal CounterSelect, As Integer, _ ‘ カウンタ選択 ByVal CntCycle As Integer _ ‘ カウンタ周期 )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgSetCounterCycle Lib "IfImg.dll"( _ ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル ByVal CounterSelect, As Integer, _ ‘ カウンタ選択 ByVal CntCycle As Integer _ ‘ カウンタ周期 )As Integer ●Delphi 8 class function ImgSetCounterCycle ( DeviceHandle: Integer; CounterSelect: Cardinal; CntCycle: Cardinal ): Integer; static; // // // デバイスハンドル カウンタ選択 カウンタ周期 【パラメータ】 DeviceHandle ImgOpen 関数から得られるデバイスハンドル CounterSelct 周期設定するカウンタを選択します。 識別子 値 IFIMGCL_INTERVALTIMER1 00000001h 内容 インターバルタイマ 1 カウント単位は 1μs となります。 IFIMGCL_ENCCNT_DIFFRENTIAL 00000003h 差動入力方式エンコーダカウンタ IFIMGCL_ENCCNT_SINGLEENDED1 00000004h シングルエンド入力方式エンコーダカウンタ 1 IFIMGCL_ENCCNT_SINGLEENDED2 00000005h シングルエンド入力方式エンコーダカウンタ 2 CntCycle 周期を設定します。0 ~ 16777215(FFFFFFh) CntCycle 引数に 0 を指定することでタイマカウントを停止することが出来ます。 【使用例】 ●C 言語 INT Ret; HANDLE DeviceHandle; : Ret = ImgSetCounterCycle (DeviceHandle, IFIMGCL_INTERVALTIMER1, 1000); © 2003, 2016 Interface Corporation. All rights reserved. 441 GPC-5520 Help for Windows ●Visual Basic Dim DeviceHandle As Long Dim Ret As Integer Ret = ImgSetCounterCycle (DeviceHandle, IFIMGCL_INTERVALTIMER1, 1000); ●Delphi var DeviceHandle: THandle; Ret: Integer; Ret := ImgSetCounterCycle (DeviceHandle, IFIMGCL_INTERVALTIMER1, 1000); ●Visual C# .NET int Ret; IntPtr DeviceHandle; : Ret = IFCIMG_ANY.ImgSetCounterCycle (DeviceHandle, IFCIMG_ANY.IFIMGCL_INTERVALTIMER1, 1000); ●Visual Basic .NET Dim DeviceHandle As IntPtr Dim Ret As Integer Ret = IFCIMG_ANY.ImgSetCounterCycle (DeviceHandle, _ IFCIMG_ANY.IFIMGCL_INTERVALTIMER1, 1000); ●Delphi 8 var DeviceHandle:Integer; Ret: Integer; Ret := IFCIMG_ANY.ImgSetCounterCycle (DeviceHandle, IFCIMG_ANY.IFIMGCL_INTERVALTIMER1, 1000); インターバルタイマのカウント周期を 1000μs に設定します。 © 2003, 2016 Interface Corporation. All rights reserved. 442 GPC-5520 Help for Windows 62. ImgGetCounterValue 【機能】 各種カウンタのカウンタ値を取得します。 【書式】 ●C 言語 INT ImgGetCounterValue ( HANDLE DeviceHandle, DWORD CounterSelect, PDWORD CounterValue ); // // // デバイスハンドル カウンタ選択 カウンタ値 ●Visual Basic Declare Function ImgGetCounterValue Lib "IfImg.dll"( _ ByVal DeviceHandle, As Long, _ ‘ デバイスハンドル ByVal CounterSelect, As Long, _ ‘ カウンタ選択 ByRef CounterValue As Long ‘ カウンタ値 )As Long ●Delphi function ImgGetCounterValue ( DeviceHandle: THandle; CounterSelect: DWORD; var CounterValue: DWORD ): Integer; stdcall; external IfImg.dll'; // // // デバイスハンドル カウンタ選択 カウンタ値 ●VISUAL C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgGetCounterValue ( IntPtr DeviceHandle, // デバイスハンドル uint CounterSelect, // カウンタ選択 out uint CounterValue // カウンタ値 ); ●VISUAL C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgGetCounterValue ( uint DeviceHandle, // デバイスハンドル uint CounterSelect, // カウンタ選択 out uint CounterValue // カウンタ値 ); ●Visual Basic .NET(x86、x64 共用) Declare Function ImgGetCounterValue Lib "IfImg.dll"( _ ByVal DeviceHandle, As IntPtr, _ ‘ デバイスハンドル ByVal CounterSelect, As Integer, _ ‘ カウンタ選択 ByRef CounterValue As Integer ‘ カウンタ値 )As Long © 2003, 2016 Interface Corporation. All rights reserved. 443 GPC-5520 Help for Windows ●Visual Basic .NET(x86 専用) Declare Function ImgGetCounterValue Lib "IfImg.dll"( _ ByVal DeviceHandle, As Integer, _ ‘ デバイスハンドル ByVal CounterSelect, As Integer, _ ‘ カウンタ選択 ByRef CounterValue As Integer ‘ カウンタ値 )As Long ●Delphi 8 class function ImgGetCounterValue ( DeviceHandle: Integer; CounterSelect: Cardinal; CounterValue: Cardinal ): Integer; static; // // // デバイスハンドル カウンタ選択 カウンタ値 【パラメータ】 DeviceHandle ImgOpen 関数から得られるデバイスハンドル CounterSelct 周期設定するカウンタを選択します。 識別子 値 IFIMGCL_INTERVALTIMER1 00000001h 内容 インターバルタイマ 1 カウント単位は 1μs となります。 IFIMGCL_ENCCNT_DIFFRENTIAL 00000003h 差動入力方式エンコーダカウンタ IFIMGCL_ENCCNT_SINGLEENDED1 00000004h シングルエンド入力方式エンコーダカウンタ 1 IFIMGCL_ENCCNT_SINGLEENDED2 00000005h シングルエンド入力方式エンコーダカウンタ 2 CounterValue カウンタ値を取得する変数のポインタを指定します。 【使用例】 ●C 言語 INT Ret; HANDLE DeviceHandle; DWORD CountValue; Ret = ImgGetCounterValue(DeviceHandle, IFIMGCL_INTERVALTIMER1, &CountValue); ●Visual Basic Dim DeviceHandle As Long Dim Ret As Integer Dim CountValue As Long Ret = ImgGetCounterValue(DeviceHandle, IFIMGCL_INTERVALTIMER1, CountValue) © 2003, 2016 Interface Corporation. All rights reserved. 444 GPC-5520 Help for Windows ●Delphi var DeviceHandle: THandle; Ret: Integer; CountValue: DWORD; Ret := ImgGetCounterValue (DeviceHandle, IFIMGCL_INTERVALTIMER1, CountValue); ●Visual C# .NET int Ret; IntPtr DeviceHandle; uint CountValue; Ret = IFCIMG_ANY.ImgGetCounterValue(DeviceHandle, IFCIMG_ANY.IFIMGCL_INTERVALTIMER1, out CountValue); ●Visual Basic .NET Dim DeviceHandle As IntPtr Dim Ret As Integer Dim CountValue As Integer Ret = IFCIMG_ANY.ImgGetCounterValue(DeviceHandle, IFCIMG_ANY.IFIMGCL_INTERVALTIMER1, CountValue) ●Delphi 8 var DeviceHandle: Integer; Ret: Integer; CountValue: Cardinal; Ret := IFCIMG_ANY.ImgGetCounterValue (DeviceHandle, IFCIMG_ANY.IFIMGCL_INTERVALTIMER1, CountValue); インターバルタイマカウンタを取得します。 © 2003, 2016 Interface Corporation. All rights reserved. 445 GPC-5520 Help for Windows 63. ImgSetImposeImage 【機能】 スーパーインポーズ画像の設定、スーパーインポーズの有効無効、演算方法の設定を行う事が できます。 詳細は以下の通りです。 ・RGB24bit,解像度(640×480)の画像データをスーパーインポーズ画像データとしてセットしま す。指定したインポーズ画像番号のボードメモリ領域に画像データを書き込みます。 ・スーパーインポーズ処理の有効/無効を切替えます。 ・スーパーインポーズ画像番号と演算処理の選択を行います。 【書式】 ●C 言語 INT ImgSetImposeImage ( HANDLE DeviceHandle, DWORD SetMode, DWORD ImposeNum, DWORD ImposeOperation, VOID* ImposeData, DWORD ImposeDataSize ); // // // // // // デバイスハンドル インポーズ操作指定 インポーズ画像番号 インポーズ演算 インポーズ画像ポインタ 画像サイズ ●Visual Basic Declare Function ImgSetImposeImage Lib "ifspr.dll"( _ ByVal DeviceHandle As Long, _ ‘ デバイスハンドル ByVal SetMode As Long, _ ‘ インポーズ操作指定 ByVal ImposeNum As Long, _ ‘ インポーズ画像番号 ByVal ImposeOperation As Long, _ ‘ インポーズ演算 ByRef ImposeData As Any, _ ‘ インポーズ画像ポインタ ByVal ImposeDataSize As Long ‘ 画像サイズ )As Long ●Delphi function ImgSetImposeImage ( DeviceHandle: Thandle; // デバイスハンドル SetMode: DWORD; // インポーズ操作指定 ImposeNum: DWORD; // インポーズ画像番号 ImposeOperation: DWORD; // インポーズ演算 ImposeData: Pointer; // インポーズ画像ポインタ ImposeDataSize: DWORD; // 画像サイズ ): Integer; stdcall; external 'IfImg.dll'; © 2003, 2016 Interface Corporation. All rights reserved. 446 GPC-5520 Help for Windows ●VISUAL C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetImposeImage ( IntPtr DeviceHandle, // デバイスハンドル uint SetMode, // インポーズ操作指定 uint ImposeNum, // インポーズ画像番号 uint ImposeOperation, // インポーズ演算 IntPtr ImposeData, // インポーズ画像ポインタ uint ImposeDataSize // 画像サイズ ); [DllImport("IfImg.dll")] public static extern int ImgSetImposeImage ( IntPtr DeviceHandle, // デバイスハンドル uint SetMode, // インポーズ操作指定 uint ImposeNum, // インポーズ画像番号 uint ImposeOperation, // インポーズ演算 byte[] ImposeData, // インポーズ画像ポインタ uint ImposeDataSize // 画像サイズ ); ●VISUAL C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetImposeImage ( uint DeviceHandle, // デバイスハンドル uint SetMode, // インポーズ操作指定 uint ImposeNum, // インポーズ画像番号 uint ImposeOperation, // インポーズ演算 IntPtr ImposeData, // インポーズ画像ポインタ uint ImposeDataSize // 画像サイズ ); [DllImport("IfImg.dll")] public static extern int ImgSetImposeImage ( uint DeviceHandle, // デバイスハンドル uint SetMode, // インポーズ操作指定 uint ImposeNum, // インポーズ画像番号 uint ImposeOperation, // インポーズ演算 byte[] ImposeData, // インポーズ画像ポインタ uint ImposeDataSize // 画像サイズ ); © 2003, 2016 Interface Corporation. All rights reserved. 447 GPC-5520 Help for Windows ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetImposeImage Lib "IfImg.dll"( _ ByVal DeviceHandle, As IntPtr, _ ‘ デバイスハンドル ByVal SetMode As Integer, _ ‘ インポーズ操作指定 ByVal ImposeNum As Integer, _ ‘ インポーズ画像番号 ByVal ImposeOperation As Integer, _ ‘ インポーズ演算 ByVal ImposeData As IntPtr, _ ‘ インポーズ画像ポインタ ByVal ImposeDataSize As Integer ‘ 画像サイズ )As Long Declare Function ImgSetImposeImage Lib "IfImg.dll"( _ ByVal DeviceHandle, As IntPtr, _ ‘ デバイスハンドル ByVal SetMode As Integer, _ ‘ インポーズ操作指定 ByVal ImposeNum As Integer, _ ‘ インポーズ画像番号 ByVal ImposeOperation As Integer, _ ‘ インポーズ演算 ByVal ImposeData( ) As Byte, _ ‘ インポーズ画像ポインタ ByVal ImposeDataSize As Integer ‘ 画像サイズ )As Long ●Visual Basic .NET(x86 専用) Declare Function ImgSetImposeImage Lib "IfImg.dll"( _ ByVal DeviceHandle, As Integer, _ ‘ デバイスハンドル ByVal SetMode As Integer, _ ‘ インポーズ操作指定 ByVal ImposeNum As Integer, _ ‘ インポーズ画像番号 ByVal ImposeOperation As Integer, _ ‘ インポーズ演算 ByVal ImposeData As IntPtr, _ ‘ インポーズ画像ポインタ ByVal ImposeDataSize As Integer ‘ 画像サイズ )As Long Declare Function ImgSetImposeImage Lib "IfImg.dll"( _ ByVal DeviceHandle, As Integer, _ ‘ デバイスハンドル ByVal SetMode As Integer, _ ‘ インポーズ操作指定 ByVal ImposeNum As Integer, _ ‘ インポーズ画像番号 ByVal ImposeOperation As Integer, _ ‘ インポーズ演算 ByVal ImposeData( ) As Byte, _ ‘ インポーズ画像ポインタ ByVal ImposeDataSize As Integer ‘ 画像サイズ )As Long © 2003, 2016 Interface Corporation. All rights reserved. 448 GPC-5520 Help for Windows 【パラメータ】 DeviceHandle ImgOpen 関数から得られるデバイスハンドル SetMode スーパーインポーズの画像セットまたは、画像の選択を行います。 識別子 値 内容 IFIMG_SET_IMPOSE 00000000h スーパーインポーズ画像番号のボード メモリ領域に画像データを書き込みま す。(※) IFIMG_SELECT_IMPOSE 00000001h セットしたスーパーインポーズ画像を 選択します。 IFIMG_NON_IMPOSE 00000002h スーパーインポーズは行いません。 IFIMG_CHECK_SETINPOSE 00000003h スーパーインポーズ画像データの書き 込み状態を確認します。 関数の戻り値が 0 の場合は、転送停止ま たは転送完了状態。 IFIMG_ERROR_NOW_IMPOSEDATA_WRITE(C0 00101D)の場合、データ転送中です。 ※ 画像データの書き込み処理は非同期である為、本関数から返っても、書き込みが完了 しているとは限りません。 完了を知る場合は、以下の方法があります。 ①割り込み機能を利用 ②IFIMG_CHECK_SETINPOSE の指定による状態監視 ImposeNum スーパーインポーズ画像をセットする番号、またはスーパーインポーズする画像を選択し ます。1~8 の範囲で選択してください。※SetMode の値により、意味が変わります。 スーパーインポーズの画像セットまたは、画像の選択を行います。 識別子 内容 IFIMG_SET_IMPOSE スーパーインポーズ画像をセットする番号を指定して ください。 IFIMG_SELECT_IMPOSE 画面に表示する画像の番号を指定してください。 IFIMG_NON_IMPOSE 設定無効 © 2003, 2016 Interface Corporation. All rights reserved. 449 GPC-5520 Help for Windows ImposeOperation ス ー パ ー イ ン ポ ー ズ 画 像 の 演 算 方 法 を 指 定 し ま す 。 SetMode の 設 定 値 を IFSPR_SELECT_IMPOSE にした場合のみ有効になります。IFSPR_SELECT_IMPOSE 以外の設定 では 0 を入力してください。 識別子 値 内容 IFIMG_IMPOSE_REPLACE 00000001h スーパーインポーズ画像の上書きを行い ます。 IFIMG_IMPOSE_ADD 00000002h スーパーインポーズ画像の加算を行いま す。 IFIMG_IMPOSE_SUB 00000003h スーパーインポーズ画像の減算を行いま す。 IFIMG_IMPOSE_XOR 00000004h スーパーインポーズ画像の XOR を行いま す。 IFIMG_IMPOSE_PERMEATION_3_1 00000009h インポーズ画像を透過させます。 カメラ画像とインポーズ画像が 3:1 の比 率で透過します。 IFIMG_IMPOSE_PERMEATION 0000000Ah インポーズ画像を透過させます。 カメラ画像とインポーズ画像が 1:1 の比 率で透過します。 IFIMG_IMPOSE_PERMEATION_1_3 0000000Bh インポーズ画像を透過させます。 カメラ画像とインポーズ画像が 1:3 の比 率で透過します。 ImposeData スーパーインポーズ画像データの先頭ポインタを指定してください。 スーパーインポーズ画像はビットマップ形式の RGB24bit データとなります。 ImposeDataSize スーパーインポーズ画像データのサイズを指定します。921600 を指定してください。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くだ © 2003, 2016 Interface Corporation. All rights reserved. 450 GPC-5520 Help for Windows 【使用例】 ●C 言語 HANDLE hDevice; INT nRet; PBYTE ImageData; DWORD ImageDataSize; ImageData = (PBYTE)malloc(640*480*3); ImageDataSize = 640*480*3; // ImageData のメモリ領域にインポーズ画像を作成する。 hDevice = ImgOpen(“IFIMGST2”); : : nRet = ImgSetImposeImage(hDevice,IFSPR_SET_IMPOSE,1,0,ImageData,ImageDataSize); nRet = ImgSetImposeImage(hDevice,IFSPR_SELECT_IMPOSE,1,IFSPR_IMPOSE_REPLACE,NULL,0); ●Visual Basic Dim hDevice As Long Dim nRet As Long Dim ImageData (921600) As Byte Dim ImageDataSize As Long ‘ ImageData のメモリ領域にインポーズ画像を作成する。 ImageDataSize = 640*480*3; hDevice = ImgOpen(“IFIMGST2”) nRet = ImgSetImposeImage(hDevice,IFSPR_SET_IMPOSE,1,0,ImageData(0),ImageDataSize) nRet = ImgSetImposeImage(hDevice,IFSPR_SELECT_IMPOSE,1,IFSPR_IMPOSE_REPLACE,0,0) © 2003, 2016 Interface Corporation. All rights reserved. 451 GPC-5520 Help for Windows ●Delphi var hDevice: THandle; nRet: Cardinal; ImageData: Pointer; ImageDataSize: DWORD; beginlpszName := 'IFIMGST2'; ImageDataSize := 640*480*3; ImageData := AllocMem(ImageDataSize); // ImageData のメモリ領域にインポーズ画像を作成する。 hDevice := ImgOpen(lpszName);// RGB32bit の出力画像を作成 nRet := ImgSetImposeImage(hDevice,IFSPR_SET_IMPOSE,1,0,ImageData,ImageDataSize); nRet:= ImgSetImposeImage(hDevice,IFSPR_SELECT_IMPOSE,1,IFSPR_IMPOSE_REPLACE,NULL,0); ●Visual C# .NET IntPtr hDeviceHandle; int nRet; byte ImageData[921600]; uint ImageDataSize; // ImageData のメモリ領域にインポーズ画像を作成する。 hDeviceHandle = IFCIMG_ANY.ImgOpen("IFIMGSPR1"); nRet = IFCIMG_ANY.ImgSetImposeImage(hDeviceHandle,IFCIMG_ANY.IFSPR_SET_IMPOSE, 1, 0, ImageData, ImageDataSize); nRet = IFCIMG_ANY.ImgSetImposeImage(hDeviceHandle,IFCIMG_ANY.IFSPR_SELECT_IMPOSE, 1, IFCIMG_ANY.IFSPR_IMPOSE_REPLACE, NULL, 0); © 2003, 2016 Interface Corporation. All rights reserved. 452 GPC-5520 Help for Windows ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim nRet As Integer Dim ImageData(921600) As byte Dim ImageDataSize As byte // ImageData のメモリ領域にインポーズ画像を作成する。 lpszName = “IFIMGSPR1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) nRet = IFCIMG_ANY.ImgSetImposeImage(hDeviceHandle, IFCIMG_ANY.IFSPR_SET_IMPOSE, _ 1, 0, ImageData(0), ImageDataSize) nRet = IFCIMG_ANY.ImgSetImposeImage(hDeviceHandle,IFCIMG_ANY.IFSPR_SELECT_IMPOSE, 1, IFCIMG_ANY.IFSPR_IMPOSE_REPLACE, 0, 0); © 2003, 2016 Interface Corporation. All rights reserved. 453 GPC-5520 Help for Windows 64. ImgSetImposeDateTime 【機能】 スーパーインポーズする日時と時刻設定を行います。 設定時刻から自動的にカウントした時刻がインポーズ表示されます。 【書式】 ●C 言語 INT ImgSetImposeDateTime ( HANDLE DeviceHandle, PIFIMGDATE Date, PIFIMGTIME Time ); // デバイスハンドル // 日付 // 時刻 ●Visual Basic Declare Function ImgSetImposeDateTime Lib "ifspr.dll"( _ ByVal DeviceHandle As Long, _ ‘ デバイスハンドル ByRef Date As IFIMGDATE, _ ‘ 日付 ByRef Time As IFIMGTIME ‘ 時刻 )As Long ●Delphi function ImgSetImposeDateTime ( DeviceHandle: Thandle; // デバイスハンドル Date: IFIMGDATE; // 日時 Time: IFIMGTIME; // 時刻 ): Integer; stdcall; external 'IfImg.dll'; ●VISUAL C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetImposeDateTime ( IntPtr DeviceHandle, // デバイスハンドル ref IFIMGDATE Date, // 日付 ref IFIMGtIME Time // 時刻 ); ●VISUAL C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetImposeDateTime ( uint DeviceHandle, // デバイスハンドル ref IFIMGDATE Date, // 日付 ref IFIMGtIME Time // 時刻 ); © 2003, 2016 Interface Corporation. All rights reserved. 454 GPC-5520 Help for Windows ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetImposeDateTime Lib "IfImg.dll"( _ ByVal DeviceHandle, As IntPtr, _ ‘ デバイスハンドル ByRef Date As IFIMGDATE, _ ‘ 日付 ByRef Time As IFIMGTIME ‘ 時刻 )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgSetImposeDateTime Lib "IfImg.dll"( _ ByVal DeviceHandle, As Integer, _ ‘ デバイスハンドル ByRef Date As IFIMGDATE, _ ‘ 日付 ByRef Time As IFIMGTIME ‘ 時刻 )As Integer 【パラメータ】 DeviceHandle ImgOpen 関数から得られるデバイスハンドル Date 日時を設定します。IFIMGDATE 構造体で指定します。 Time 時刻を設定します。IFIMGTIME 構造体で指定します。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くだ © 2003, 2016 Interface Corporation. All rights reserved. 455 GPC-5520 Help for Windows 【使用例】 ●C 言語 HANDLE hDevice; INT nRet; IFIMGTIME Time; IFIMGDATE Date; hDevice = ImgOpen(“IFIMGST2”); Date.mday = 15; Date.mon = 2; Date.year = 2014; Time.sec = 58; Time.min = 26; Time.hour = 14; nRet = ImgSetImposeDateTime(hDevice, &Date, &Time); ●Visual Basic Dim hDevice As Long Dim nRet As Long Dim Time As IFIMGTIME Dim Date As IFIMGDATE hDevice = ImgOpen(“IFIMGST2”) Date.mday = 15 Date.mon = 2 Date.year = 2014 Time.sec = 58 Time.min = 26 Time.hour = 14 nRet = ImgSetImposeDateTime(hDevice, Date, Time) © 2003, 2016 Interface Corporation. All rights reserved. 456 GPC-5520 Help for Windows ●Delphi var hDevice: THandle; nRet: Cardinal; Time: IFIMGTIME; Date: IFIMGDATE; beginlpszName := 'IFIMGST2'; hDevice := ImgOpen(lpszName); Date.mday := 15; Date.mon := 2; Date.year := 2014; Time.sec := 58; Time.min := 26; Time.hour := 14; nRet := ImgSetImposeTime(hDevice, Date, Time); ●Visual C# IntPtr int IFIMGTIME IFIMGDATE .NET hDeviceHandle; nRet; Time; Date; hDeviceHandle = IFCIMG_ANY.ImgOpen("IFIMGST2"); Date.mday = 15; Date.mon = 2; Date.year = 2014; Time.sec = 58; Time.min = 26; Time.hour = 14; nRet = IFCIMG_ANY. ImgSetImposeDateTime (hDevice, Date,Time); © 2003, 2016 Interface Corporation. All rights reserved. 457 GPC-5520 Help for Windows ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim nRet As Integer Dim Time As IFIMGTIME Dim Date As IFIMGDATE lpszName = “IFIMGST1” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) Date.mday = 15 Date.mon = 2 Date.year = 2014 Time.sec = 58 Time.min = 26 Time.hour = 14 nRet = IFCIMG_ANY.ImgSetImposeDateTime(hDeviceHandle, Date, Time) © 2003, 2016 Interface Corporation. All rights reserved. 458 GPC-5520 Help for Windows 65. ImgSetImposeDateTimeInfo 【機能】 スーパーインポーズする日付/時間の設定を行います。 日付/時間の表示座標、色、大きさを指定します。 【書式】 ●C 言語 INT ImgSetImposeDateTimeInfo ( HANDLE DeviceHandle, PIFIMGDATEINFO DateInfo, PIFIMGTIMEINFO TimeInfo, DWORD SetMode PDWORD ColorTable, DWORD FontSize ); // // // // // // デバイスハンドル 日付 時間 設定選択 表示色 フォントのサイズ ●Visual Basic Declare Function ImgSetImposeDateTimeInfo Lib "IfImg.dll"( _ ByVal DeviceHandle As Long, _ ‘ デバイスハンドル ByRef DateInfo As IFIMGDATEINFO, _ ‘ 日付 ByRef TimeInfo As IFIMGTIMEINFO, _ ‘ 時間 ByVal SetMode As Long, _ ‘ 設定選択 ByRef ColorTable As Long, _ ‘ 表示色 ByVal FontSize As Long ‘ フォントサイズ )As Long ●Delphi function ImgSetImposeDateTimeInfo ( DeviceHandle: Thandle; // var DateInfo: IFIMGDATEINFO; // var TimeInfo: IFIMGTIMEINFO; // SetMode: DWORD; // var ColorTable: DWORD; // FontSize: DWORD; // ): Integer; stdcall; external 'IfImg.dll'; デバイスハンドル 日付 時間 設定選択 表示色 フォントサイズ ●VISUAL C# .NET(x86、x64 共用) [DllImport("IfImg.dll")] public static extern int ImgSetImposeDateTimeInfo ( IntPtr DeviceHandle, // デバイスハンドル ref IFIMGDATEINFO DateInfo, // 日付 ref IFIMGTIMEINFO TimeInfo, // 時間 uint SetMode, // 設定選択 uint[] ColorTable, // 表示色 uint FontSize // フォントのサイズ ); © 2003, 2016 Interface Corporation. All rights reserved. 459 GPC-5520 Help for Windows ●VISUAL C# .NET(x86 専用) [DllImport("IfImg.dll")] public static extern int ImgSetImposeDateTimeInfo ( uint DeviceHandle, // デバイスハンドル ref IFIMGDATEINFO DateInfo, // 日付 ref IFIMGTIMEINFO TimeInfo, // 時間 uint SetMode, // 設定選択 uint[] ColorTable, // 表示色 uint FontSize // フォントのサイズ ); ●Visual Basic .NET(x86、x64 共用) Declare Function ImgSetImposeDateTimeInfo Lib "IfImg.dll"( _ ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル ByRef DateInfo As IFIMGDATEINFO, _ ‘ 日付 ByRef TimeInfo As IFIMGTIMEINFO, _ ‘ 時間 ByVal SetMode As Integer, _ ‘ 設定選択 ByRef ColorTable As Integer, _ ‘ 表示色 ByVal FontSize As Integer ‘ フォントサイズ )As Integer ●Visual Basic .NET(x86 専用) Declare Function ImgSetImposeDateTimeInfo Lib "IfImg.dll"( _ ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル ByRef DateInfo As IFIMGDATEINFO, _ ‘ 日付 ByRef TimeInfo As IFIMGTIMEINFO, _ ‘ 時間 ByVal SetMode As Integer, _ ‘ 設定選択 ByRef ColorTable As Integer, _ ‘ 表示色 ByVal FontSize As Integer ‘ フォントサイズ )As Integer 【パラメータ】 DeviceHandle ImgOpen 関数から得られるデバイスハンドル Date 日付と表示座標を設定します。IFIMGDATEINFO 構造体で指定します。 Time 時間と表示座標を設定します。IFIMGDATEINFO 構造体で指定します。 © 2003, 2016 Interface Corporation. All rights reserved. 460 GPC-5520 Help for Windows SetMode 表示方法を選択します。OR 指定可能です。 識別子 値 IFIMG_IMPOSE_NONE_DATETIME 000000000h IFIMG_IMPOSE_SET_DATE 000000001h IFIMG_IMPOSE_SET_TIME 000000002h IFIMG_IMPOSE_STRING_OUTLINE 000010000h 内容 日付/時間を表示しません。 日付を表示します。 時間を表示します。 文字を縁取りさせます。 ColorTable 色を指定します。REB24bit のトゥルーカラーで指定してください。 SetMode に IFIMG_IMPOSE_STRING_OUTLINE を指定した場合、縁取り用の色も指定します。 文字と縁取りの色する場合、2 要素の配列を用意して、第1要素には文字、第 2 要素に縁 取りの色を指定します。 例)文字を赤、縁取りを黒にする場合 (C 言語) ColorTabe[0] = 0xFF0000; ColorTabe[1] = 0x000000; FontSize 文字の大きさを 1、2、4 の何れかで指定します。 【戻り値】 正常終了した場合は、IFIMG_ERROR_SUCCESSが返されます。 IFIMG_ERROR_SUCCESS以外の値が返された場合については、 『4.5 戻り値一覧』をご参照くだ © 2003, 2016 Interface Corporation. All rights reserved. 461 GPC-5520 Help for Windows 【使用例】 ●C 言語 HANDLE hDevice; INT nRet; IFIMGDATEINFO DateInfo; IFIMGTIMEINFO TimeInfo; DWORD SetMode; DWORD ColorTable[2]; hDevice = ImgOpen(“IFIMGST2”); DateInfo.Date.mday = 15; DateInfo.Date.mon = 2; DateInfo.Date.year = 2014; DateInfo.Xcoordinates = 100; DateInfo.Ycoordinates = 100; TimeInfo.Time.sec = 58; TimeInfo.Time.min = 26; TimeInfo.Time.hour = 14; TimeInfo.Xcoordinates = 100; TimeInfo.Ycoordinates = 320; SetMode = IFIMG_IMPOSE_SET_DATE|IFIMG_IMPOSE_SET_TIME|IFIMG_IMPOSE_STRING_OUTLINE; ColorTable[0] = 0xFF0000; ColorTable[1] = 0x000000; nRet = ImgSetImposeDateTimeInfo(hDevice, DateInfo, TimeInfo, SetMode, ColorTable、1); © 2003, 2016 Interface Corporation. All rights reserved. 462 GPC-5520 Help for Windows ●Visual Basic Dim hDevice As Long Dim nRet As Long Dim DateInfo As IFIMGDATEINFO Dim TimeInfo As IFIMGTIMEINFO Dim ColorTable(2) As Long Dim SetMode As Long hDevice = ImgOpen(“IFIMGST2”) DateInfo.Date.mday = 15 DateInfo.Date.mon = 2 DateInfo.Date.year = 2014 DateInfo.Xcoordinates = 100 DateInfo.Ycoordinates = 100 TimeInfo.Time.sec = 58 TimeInfo.Time.min = 26 TimeInfo.Time.hour = 14 TimeInfo.Xcoordinates = 100 TimeInfo.Ycoordinates = 320 SetMode = IFIMG_IMPOSE_SET_DATE OrIFIMG_IMPOSE_STRING_OUTLINE Or IFIMG_IMPOSE_SET_TIME ColorTable(0) = &HFF0000 ColorTable(1) = &H000000 nRet = ImgSetImposeDateTimeInfo(hDevice,DateInfo,TimeInfo,SetMode,ColorTable(0)、1) © 2003, 2016 Interface Corporation. All rights reserved. 463 GPC-5520 Help for Windows ●Delphi var hDevice: THandle; nRet: Cardinal; DateInfo: IFIMGDATEINFO; TimeInfo: IFIMGTIMEINFO; ColorTable: array[0..1] of DWORD; beginlpszName := 'IFIMGST1'; hDevice := ImgOpen(lpszName); DateInfo.Date.mday := DateInfo.Date.mon := DateInfo.Date.year := DateInfo.Xcoordinates DateInfo.Ycoordinates 15; 2; 2014; := 100; := 100; TimeInfo.Time.sec := 58; TimeInfo.Time.min := 26; TimeInfo.Time.hour := 14; TimeInfo.Xcoordinates := 100; TimeInfo.Ycoordinates := 320; SetMode := IFIMG_IMPOSE_SET_DATE|IFIMG_IMPOSE_SET_TIME|IFIMG_IMPOSE_STRING_OUTLINE; ColorTable[0] := $FF0000; ColorTable[1] := $000000; nRet := ImgSetImposeDateTimeInfo(hDevice, DateInfo, TimeInfo, SetMode, ColorTable、 1); © 2003, 2016 Interface Corporation. All rights reserved. 464 GPC-5520 Help for Windows ●Visual C# .NET IntPtr hDeviceHandle; int nRet; IFIMGDATEINFO DateInfo; IFIMGTIMEINFO TimeInfo; DWORD SetMode; DWORD ColorTable[2]; hDeviceHandle = IFCIMG_ANY.ImgOpen("IFIMGST2"); DateInfo.Date.mday = 15; DateInfo.Date.mon = 2; DateInfo.Date.year = 2014; DateInfo.Xcoordinates = 100; DateInfo.Ycoordinates = 100; TimeInfo.Time.sec = 58; TimeInfo.Time.min = 26; TimeInfo.Time.hour = 14; TimeInfo.Xcoordinates = 100; TimeInfo.Ycoordinates = 320; SetMode = IFIMG_IMPOSE_SET_DATE|IFIMG_IMPOSE_SET_TIME|IFIMG_IMPOSE_STRING_OUTLINE; ColorTable[0] = 0xFF0000; ColorTable[1] = 0x000000; nRet = IFCIMG_ANY.ImgSetImposeDateTimeInfo(hDevice, DateInfo, TimeInfo, SetMode, ColorTable、1); © 2003, 2016 Interface Corporation. All rights reserved. 465 GPC-5520 Help for Windows ●Visual Basic .NET Dim lpszName As String Dim hDeviceHandle As IntPtr Dim nRet As Integer Dim DateInfo As IFIMGDATEINFO Dim TimeInfo As IFIMGTIMEINFO Dim ColorTable(2) As Long Dim SetMode As Long lpszName = “IFIMGST2” hDeviceHandle = IFCIMG_ANY.ImgOpen(lpszName) DateInfo.Date.mday = 15 DateInfo.Date.mon = 2 DateInfo.Date.year = 2014 DateInfo.Xcoordinates = 100 DateInfo.Ycoordinates = 100 TimeInfo.Time.sec = 58 TimeInfo.Time.min = 26 TimeInfo.Time.hour = 14 TimeInfo.Xcoordinates = 100 TimeInfo.Ycoordinates = 320 SetMode = IFCIMG_ANY.IFIMG_IMPOSE_SET_DATE Or _ IFCIMG_ANY.IFIMG_IMPOSE_SET_TIME Or _ IFCIMG_ANY.IFIMG_IMPOSE_STRING_OUTLINE ColorTable(0) = &HFF0000 ColorTable(1) = &H000000 nRet = IFCIMG_ANY.ImgSetImposeDateTimeInfo(hDevice,DateInfo,TimeInfo,SetMode,_ ColorTable(0)、1) © 2003, 2016 Interface Corporation. All rights reserved. 466 GPC-5520 Help for Windows 4.4 構造体説明 ● IMGDEVICEINFO 構造体 ImgGetDeviceInfo関数で指定するデバイス情報構造体です。 ●C 言語 typedef struct { WORD wType; WORD wRsw; } IMGDEVICEINFO, *PIMGDEVICEINFO; ●Visual C# .NET [StructLayout(LayoutKind.Sequential)] public struct IMGDEVICEINFO { public short wType; public short wRsw; } ●Visual Basic .NET <StructLayout(LayoutKind.Sequential)> _ Structure IMGDEVICEINFO Dim wType As Short Dim wRsw As Short End Structure ●Delphi 8 type [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] IMGDEVICEINFO = record wType: Word; wRsw: Word; end; メンバ wType 説明 指定されたデバイスハンドルのインタフェースモジュール型式 wRsw 指定されたデバイスハンドルのインタフェースモジュールの RSW1,RSW2 の 設定値 ビット 内容 bit15~bit8 予約 bit7~bit4 RSW2 の値 bit3~bit0 RSW1 の値 © 2003, 2016 Interface Corporation. All rights reserved. 467 GPC-5520 Help for Windows ● IMGBUFFERINFO 構造体 ImgSetBuffer関数で指定するバッファ情報構造体です。 ●C 言語 typedef struct { PVOID pBufferAddress; DWORD dwBufferSize; } IMGBUFFERINFO, *PIMGBUFFERINFO; ●Visual C# .NET [StructLayout(LayoutKind.Sequential)] public struct IMGBUFFERINFO { public IntPtr pBufferAddress; public uint dwBufferSize; } ●Delphi 8 type [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] IMGBUFFERINFO = record pBufferAddress: IntPtr; dwBufferSize: Cardinal; end; メンバ pBufferAddress dwBufferSize 説明 指定バッファ領域へのポインタアドレス ■x86 環境使用時 PC のメインメモリ(ユーザアプリケーション上のバッファ)を 使用する場合はそのバッファのポインタ(参照)渡しを指定します。 ■x64 環境使用時 ドライバ内で確保した物理メモリを使用する場合は、 -1 を指定します。 メモリのサイズ © 2003, 2016 Interface Corporation. All rights reserved. 468 GPC-5520 Help for Windows ● IMGCAPSTATUS 構造体 ImgGetCaptureStatus関数で指定するキャプチャ状態構造体です。 ●C 言語 typedef struct { DWORD DWORD DWORD dwCapture; dwFrameCnt; dwTrigger; } IMGCAPSTATUS, *PIMGCAPSTATUS; ●Visual C# .NET [StructLayout(LayoutKind.Sequential)] public struct IMGCAPSTATUS { public uint dwCapture; public uint dwFrameCnt; public uint dwTrigger; } ●Visual Basic .NET <StructLayout(LayoutKind.Sequential)> _ Structure IMGCAPSTATUS Dim dwCapture As Integer Dim dwFrameCnt As Integer Dim dwTrigger As Integer End Structure ●Delphi 8 type [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] IMGCAPSTATUS = record dwCapture: Cardinal; dwFrameCnt: Cardinal; dwTrigger: Cardinal; end; © 2003, 2016 Interface Corporation. All rights reserved. 469 GPC-5520 Help for Windows メンバ dwCapture 説明 キャプチャ状態 ビット bit31~bit11 bit10~bit8 bit7~bit4 bit3 bit2 bit1 bit0 内容 予約 使用しているチャンネルを取得します。 多チャンネル製品シリーズ専用です。 1 チャンネル入力製品は 0 です。 bit10 bit9 bit8 CN1/VIN1 0 0 1 CN4/VIN2 1 0 0 CN5/VIN3 1 0 1 CN6/VIN4 1 1 0 CN7/VIN5 1 1 1 予約 同期信号状態 ※2 入力用 FIFO の状態 ※1 入力用 FIFO の状態 ※1 キャプチャ状態 0:正常 1:異常が発生した 0:Full でない 1:Full 状態 0:空でない 1:空状態 0:停止中 1:キャプチャ中 ※ 1 入力用 FIFO が Full または空が有効の場合、映像機器からのフレー ムデータの取りこぼしが起きている可能性があります。入力用 FIFO が Full の場合、PCI バス上でのデータ転送が遅れている可能性が あります。入力用 FIFO が空の場合、キャプチャを開始していない。 または映像機器からデータが取り込まれていない可能性がありま す。 ※ 2 このフラグが立った場合、キャプチャ動作中にノイズ、ビデオケー ブルの抜き差しなどの外的要因の為にカメラの映像信号と同期が 取れなくなった事を知らせます。 デバイスはキャプチャ動作を停止して、カメラとの同期を取ってキ ャプチャ再開します。再開が始まった際にこのフラグは 0 になりま す。 この機能はお使いになっている製品のハードウェアのバージョン よっては対応しておりません。ご注意ください。 © 2003, 2016 Interface Corporation. All rights reserved. 470 GPC-5520 Help for Windows dwFrameCnt キャプチャが完了したフレーム数です。 (1~FFFFFFFFh) ※FFFFFFFFh までカウント後、1 に戻ります。 複数フレーム分のバッファ領域を確保している場合、描画処理等でこのフ レーム数の値を活用してください。 dwTrigger トリガの発生状態 ビット 内容 bit31~bit3 予約 bit2 面積 AND 重心トリガ bit1 重心トリガ bit0 面積トリガ © 2003, 2016 Interface Corporation. All rights reserved. 471 0:トリガ未発生 1:トリガ発生 0:トリガ未発生 1:トリガ発生 0:トリガ未発生 1:トリガ発生 GPC-5520 Help for Windows ● IMGCAPSTATUSEX 構造体 ImgGetCaptureStatusEx関数で指定するキャプチャ状態構造体です。 ●C 言語 typedef struct { DWORD DWORD DWORD DWORD dwCapture; dwFrameCntDMA; dwFrameCntSDRAM; dwTrigger; } IMGCAPSTATUSEX, *PIMGCAPSTATUSEX; ●Visual C# .NET [StructLayout(LayoutKind.Sequential)] public struct IMGCAPSTATUSEX { public uint dwCapture; public uint dwFrameCntDMA; public uint dwFrameCntSDRAM; public uint dwTrigger; } ●Visual Basic .NET <StructLayout(LayoutKind.Sequential)> _ Structure IMGCAPSTATUSEX Dim dwCapture As Integer Dim dwFrameCntDMA As Integer Dim dwFrameCntSDRAM As Integer Dim dwTrigger As Integer End Structure ●Delphi 8 type [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] IMGCAPSTATUSEX = record dwCapture: Cardinal; dwFrameCntDMA: Cardinal; dwFrameCntSDRAM: Cardinal; dwTrigger: Cardinal; end; © 2003, 2016 Interface Corporation. All rights reserved. 472 GPC-5520 Help for Windows メンバ dwCapture 説明 キャプチャ状態 ビット bit31~bit11 bit10~bit8 内容 予約 使用しているチャンネルを取得します。 CN1/VIN1 CN4/VIN2 CN5/VIN3 CN6/VIN4 CN7/VIN5 bit7~bit6 bit5 bit4 bit3 bit2 bit1 bit0 bit10 0 1 1 1 1 bit9 0 0 0 1 1 bit8 1 0 1 0 1 予約 同期信号状態※1 0:正常 1:異常が発生した SDRAM データの DMA 転送 0:停止中 状態 1:転送中 SDRAM によるキャプチャ 0:停止中 状態 1:キャプチャ中 入力用 FIFO の状態 0:Full でない ※2 1:Full 状態 入力用 FIFO の状態 0:空でない 1:空状態 キャプチャ状態 0:停止中 1:キャプチャ中 ※ 1 このフラグが立った場合、キャプチャ動作中にノイズ、ビデオケー ブルの抜き差しなどの外的要因の為にカメラの映像信号と同期が 取れなくなった事を知らせます。 デバイスはキャプチャ動作を停止して、カメラとの同期を取ってキ ャプチャ再開します。再開が始まった際にこのフラグは 0 になりま す。 この機能はお使いになっている製品のハードウェアのバージョン よっては対応しておりません。 ※ 2 入力用 FIFO が Full または空が有効の場合、映像機器からのフレー ムデータの取りこぼしが起きている可能性があります。入力用 FIFO が Full の場合、PCI バス上でのデータ転送が遅れている可能性が あります。入力用 FIFO が空の場合、キャプチャを開始していない。 または映像機器からデータが取り込まれていない可能性がありま す。 © 2003, 2016 Interface Corporation. All rights reserved. 473 GPC-5520 Help for Windows dwFrameCntDMA 「DMA 転送によるキャプチャが完了したフレーム数」または、 「SDRAM データの DMA 転送が完了したフレーム数」 (1~FFFFFFFFh) ※FFFFFFFFh までカウント後、1 に戻ります。 複数フレーム分のバッファ領域を確保している場合、描画処理等でこのフ レーム数の値を活用してください。 dwFrameCntSDRAM SDRAM キャプチャが完了したフレーム数です。 (1~FFFFFFFFh) ※FFFFFFFFh までカウント後、1 に戻ります。 複数フレーム分のバッファ領域を確保している場合、描画処理等でこのフ レーム数の値を活用してください。 dwTrigger トリガの発生状態 ビット 内容 bit31~bit5 予約 bit4 パターン一致トリガ bit3 予約 bit2 面積 AND 重心トリガ bit1 重心トリガ bit0 面積トリガ © 2003, 2016 Interface Corporation. All rights reserved. 474 0:トリガ未発生 1:トリガ発生 0:トリガ未発生 1:トリガ発生 0:トリガ未発生 1:トリガ発生 0:トリガ未発生 1:トリガ発生 GPC-5520 Help for Windows ● IMGBINCONFIG 構造体 ImgSetBinarizationConfig関数で指定する 2 値化設定構造体です。 ●C 言語 typedef struct { DWORD dwColorIngredient; DWORD dwMaxthreshold; DWORD dwMinthreshold; DWORD dwBinarizationMode; } IMGBINCONFIG, *PIMGBINCONFIG; ●Visual C# .NET [StructLayout(LayoutKind.Sequential)] public struct IMGBINCONFIG { public uint dwColorIngredient; public uint dwMaxthreshold; public uint dwMinthreshold; public uint dwBinarizationMode; } ●Visual Basic .NET <StructLayout(LayoutKind.Sequential)> _ Structure IMGBINCONFIG Dim dwColorIngredient As Integer Dim dwMaxthreshold As Integer Dim dwMinthreshold As Integer Dim dwBinarizationMode As Integer End Structure ●Delphi 8 type [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] IMGBINCONFIG = record dwColorIngredient: Cardinal; dwMaxthreshold: Cardinal; dwMinthreshold: Cardinal; dwBinarizationMode: Cardinal; end; © 2003, 2016 Interface Corporation. All rights reserved. 475 GPC-5520 Help for Windows メンバ dwColorIngredient 説明 2 値化処理を行う色成分の指定 映像機器から取り込んだデータに対しての色成分の指定です。 識別子 値 意味 IFIMG_INGREDIENT_RED 00000001h 赤成分 IFIMG_INGREDIENT_GREEN 00000002h 緑成分 IFIMG_INGREDIENT_BLUE 00000003h 青成分 IFIMG_INGREDIENT_GRAY 00000004h グレイスケール(輝度 成分) dwMaxthreshold 上限しきい値(0~255) dwMinthreshold 下限しきい値(0~255) dwBinarizationMode 2 値化条件の反転指定 識別子 IFIMG_BINMODE_NORMAL 値 00000001h IFIMG_BINMODE_REVERSAL 00000002h © 2003, 2016 Interface Corporation. All rights reserved. 476 意味 通常(上限値と下限値の 間が FF、それ以外が 0) 反転(上限値と下限値の 間が 0、それ以外が FF) GPC-5520 Help for Windows ● IMGTRGCONFIG 構造体 ImgSetTriggerConfig関数で指定するトリガ発生条件設定構造体です。 ●C 言語 typedef struct { DWORD dwTriggerEnabled; DWORD dwAreaMax; DWORD dwAreaMin; DWORD dwStartPointX; DWORD dwStartPointY; DWORD dwXLength; DWORD dwYLength; DWORD dwTriggerRangeMode; } IMGTRGCONFIG, *PIMGTRGCONFIG; ●Visual C# .NET [StructLayout(LayoutKind.Sequential)] public struct IMGBINCONFIG { public uint dwTriggerEnabled; public uint dwAreaMax; public uint dwAreaMin; public uint dwStartPointX; public uint dwStartPointY; public uint dwXLength; public uint dwYLength; public uint dwTrigerRangeMode; } ●Visual Basic .NET <StructLayout(LayoutKind.Sequential)> _ Structure IMGBINCONFIG Dim dwTriggerEnabled As Integer Dim dwAreaMax As Integer Dim dwAreaMin As Integer Dim dwStartPointX As Integer Dim dwStartPointY As Integer Dim dwXLength As Integer Dim dwYLength As Integer Dim dwTrigerRangeMode As Integer Dim dwBinarizationMode As Integer End Structure © 2003, 2016 Interface Corporation. All rights reserved. 477 GPC-5520 Help for Windows ●Delphi 8 type [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] IMGTRGCONFIG = record dwTriggerEnabled: Cardinal; dwAreaMax: Cardinal; dwAreaMin: Cardinal; dwStartPointX: Cardinal; dwStartPointY: Cardinal; dwXLength: Cardinal; dwYLength: Cardinal; dwTrigerRangeMode: Cardinal; end; メンバ dwTriggerEnabled 説明 トリガ発生を有効にするトリガを指定します。 ビット bit31~bit3 bit2 内容 予約 面積 AND 重心 bit1 重心 bit0 面積 1:有効 0:無効 1:有効 0:無効 1:有効 0:無効 dwAreaMax 面積トリガ上限閾値を指定します。 (0 ~ 307,200) dwAreaMin 面積トリガ下限閾値を指定します。 (0 ~ 307,200) dwStartPointX 重心トリガエリアにおける開始点の X 座標(0~639) dwStartPointY 重心トリガエリアにおける開始点の Y 座標(0~479) dwXLength 開始点からの X 方向への長さ (1 ~ 640) dwYLength 開始点からの Y 方向への長さ (1 ~ 480) dwTriggerRangeMode トリガの発生条件を反転します。 ビット bit31~bit2 bit1 内容 予約 重心トリガ bit0 面積トリガ © 2003, 2016 Interface Corporation. All rights reserved. 478 1:トリガエリア外の場合に発生 0:トリガエリア内の場合に発生 1:トリガエリア外の場合に発生 0:トリガエリア内の場合に発生 GPC-5520 Help for Windows ● IMGCAPCONFIG 構造体 ImgSetCaptureConfig関数で指定するキャプチャ設定構造体です。 ●C 言語 typedef struct { DWORD dwMode; DWORD dwThinFrameCnt; DWORD dwTimerCycle; DWORD dwChFrameCnt; DWORD dwChangePattern[5]; } IMGCAPCONFIG, *PIMGCAPCONFIG; ●Visual C# .NET [StructLayout(LayoutKind.Sequential)] public struct IMGCAPCONFIG { public uint dwMode; public uint dwThinFrameCnt; public uint dwTimerCycle; public uint dwChFrameCnt; [MarshalAs(UnmanagedType.ByValArray, SizeConst=5)] public uint[] dwChangePattern public void InitializeArray() { dwChangePattern = new uint [5]; } public void SetChnangePattern(uint ulIndex, uint ChNo) { dwChangePattern[ulIndex] = ChNo; } public uint GetChnangePattern(uint ulIndex) { return dwChangePattern[ulIndex]; } } © 2003, 2016 Interface Corporation. All rights reserved. 479 GPC-5520 Help for Windows ●Visual Basic .NET <StructLayout(LayoutKind.Sequential)> _ Structure IMGCAPCONFIG Dim dwMode As Integer Dim dwThinFrameCnt As Integer Dim dwTimerCycle As Integer Dim dwChFrameCnt As Integer <MarshalAs(UnmanagedType.ByValArray, SizeConst:=5)> _ Dim dwChangePattern() As Integer Public Sub New(ByVal Dummy As Integer) ReDim dwChangePattern(5) End Sub Public Sub SetChnangePattern(ByVal Index As Integer, ByVal ChNo As Integer) dwChangePattern(Index) = ChNo End Sub Public Function GetChnangePattern(ByVal Index As Integer) GetChnangePattern = dwChangePattern(Index) End Function End Structure ●Delphi 8 type [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] IMGCAPCONFIG = record dwMode; Cardinal; dwThinFrameCnt; Cardinal; dwTimerCycle; Cardinal; dwChFrameCnt; Cardinal; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)] dwChangePattern: array[0..4] of Cardinal; end; © 2003, 2016 Interface Corporation. All rights reserved. 480 GPC-5520 Help for Windows メンバ dwMode 説明 キャプチャモードを指定します。設定可能なモードは下記内のどれか 1 つです。複数設定は不可能です。 識別子 値 意味 IFIMG_CAPTURE_NORMAL 00000001h 通常キャプチャモード (デフォルト) IFIMG_CAPTURE_THINOUT 00000002h 指定フレーム間隔モード (1ch 使用限定) IFIMG_CAPTURE_TIMER 00000003h 指定時間間隔モード (1ch 使用限定) IFIMG_CAPTURE_CH_FRAME 00000004h フレーム毎切り換え (多 Ch 使用限定) IFIMG_CAPTURE_CH_TIMER 00000005h 指定時間切り換え (多 Ch 使用限定) dwThinFrameCnt dwMode を IFIMG_CAPTURE_THINOUT に設定した場合に有効です。 設定値で一回のキャプチャを行います。 デフォルト: 2 設定範囲 : 2 ~ 4,294,967,295 例)dwThinFrameCnt に値 2 を設定した場合、2 フレーム中 1 フレーム をキャプチャします。つまり、1 フレーム間引きとなります。 dwTimerCycle 設定したタイマ周期で、1 フレーム毎のキャプチャ(dwMode が IFIMG_ CAPTURE_TIMER の場合)、またはチャンネルの切り換え(dwMode が IFIMG_CAPTURE_CH_TIMER の場合)を行います。 選定範囲(1 ~ 16000)単位(ms) デフォルト 1000 (1s 周期) ※設定する場合は約 66ms 以上の設定を行ってください。 ImgStartCapture関数を実行した時のフレームでなく、次フレーム のタイミングで実際にキャプチャするので、最長で約 33msの時間 を要します。また、1 フレームのキャプチャは約 33msかかります。 よって、トータルで約 66ms 以上を設定しないと正常にキャプチャ できない可能性があります。 dwChFrameCnt デフォルト:1 単位(フレーム) 使用する各チャンネルのキャプチャフレーム数を設定します。 dwMode が IFIMG_CAPTURE_CHA_FRAME の場合、設定したフレーム数単 位で、チャンネル切り換えを行います。 dwChangePattern チャンネルの切り換え順番を設定します。チャンネル番号を順番に配 列に設定してください。配列に格納した順番を繰り返して、チャンネ ル切り替えを行います。デフォルトは CN1 です。使用しない配列は 0 を代入してください。配列要素に代入する際、必ず連続で代入してく ださい。 © 2003, 2016 Interface Corporation. All rights reserved. 481 GPC-5520 Help for Windows 識別子 IFIMG_CHANNEL_CN1 IFIMG_CHANNEL_CN4 IFIMG_CHANNEL_CN5 IFIMG_CHANNEL_CN6 IFIMG_CHANNEL_CN7 値 00000001 00000004 00000005 00000006 00000007 例 1) CN6… dwChangePattern[0] dwChangePattern[1] dwChangePattern[2] dwChangePattern[3] dwChangePattern[4] = = = = = IFIMG_CHANNEL_CN4 0 0 0 0 例 2) CN6,CN5,CN7… dwChangePattern[0] dwChangePattern[1] dwChangePattern[2] dwChangePattern[3] dwChangePattern[4] = = = = = IFIMG_CHANNEL_CN4 IFIMG_CHANNEL_CN5 IFIMG_CHANNEL_CN7 0 0 チャンネル番号 CN1/VIN1 CN4/VIN2 CN5/VIN3 CN6/VIN4 CN7/VIN5 例 3) CN1,CN4,CN5,CN6,CN7… dwChangePattern[0] = IFIMG_CHANNEL_CN1 dwChangePattern[1] = IFIMG_CHANNEL_CN4 dwChangePattern[2] = IFIMG_CHANNEL_CN5 dwChangePattern[3] = IFIMG_CHANNEL_CN6 dwChangePattern[4] = IFIMG_CHANNEL_CN7 ●Visual C# .NET IFCIMG.IMGCAPCONFIG CapCnf; CapCnf.InitializeArray(); CapCnf.SetChnangePattern(0,IFCIMG.IFIMG_CHANNEL_CN1); CapCnf.SetChnangePattern(1,IFCIMG.IFIMG_CHANNEL_CN4); CapCnf.SetChnangePattern(2,IFCIMG.IFIMG_CHANNEL_CN5); CapCnf.SetChnangePattern(3,IFCIMG.IFIMG_CHANNEL_CN6); CapCnf.SetChnangePattern(4,IFCIMG.IFIMG_CHANNEL_CN7); ●Visual Basic .NET Dim CapCnf As IFCIMG.IMGCAPCONFIG = New IFCIMG.IMGCAPCONFIG(0) CapCnf.SetChnangePattern(0,IFCIMG.IFIMG_CHANNEL_CN1) CapCnf.SetChnangePattern(1,IFCIMG.IFIMG_CHANNEL_CN4) CapCnf.SetChnangePattern(2,IFCIMG.IFIMG_CHANNEL_CN5) CapCnf.SetChnangePattern(3,IFCIMG.IFIMG_CHANNEL_CN6) CapCnf.SetChnangePattern(4,IFCIMG.IFIMG_CHANNEL_CN7) © 2003, 2016 Interface Corporation. All rights reserved. 482 GPC-5520 Help for Windows キャプチャモード対応表 キャプチャモード IFIMG_CAPTURE_NORMAL IFIMG_CAPTURE_THINOUT IFIMG_CAPTURE_TIMER IFIMG_CAPTURE_CH_FRAME IFIMG_CAPTURE_CH_TIMER 5520 5521 5522 5523 5530 5531 5532 5533 ○ ○ ○※ - - ○ ○ ○ - - ○ ○ ○ - - ○ ○ ○ - - ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ※PCI-5520[12]C02 以降に対応しております。 版数、チェンジ番号の確認方法は User’s Manual をご参照ください。 © 2003, 2016 Interface Corporation. All rights reserved. 483 GPC-5520 Help for Windows ● IMGEVENTTABLE 構造体 ImgSetEventMask関数、ImgGetEventMask関数で指定する割り込みマスク設定構造体です。 また ImgSetEvent関数で登録されるコールバック関数の引数です。 ●C 言語 typedef struct { DWORD dwDI; DWORD dwFrame; DWORD dwTrigger; } IMGEVENTTABLE, *PIMGEVENTTABLE; ●Visual C# .NET [StructLayout(LayoutKind.Sequential)] public struct IMGEVENTTABLE { public uint dwDI; public uint dwFrame; public uint dwTrigger; } ●Visual Basic .NET <StructLayout(LayoutKind.Sequential)> _ Structure IMGEVENTTABLE Dim dwDI As Integer Dim dwFrame As Integer Dim dwTrigger As Integer End Structure ●Delphi 8 type [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] IMGEVENTTABLE = record dwDI: Cardinal; dwFrame: Cardinal; dwTrigger: Cardinal; end; © 2003, 2016 Interface Corporation. All rights reserved. 484 GPC-5520 Help for Windows メンバ dwDI dwFrame 説明 汎用入力割り込み ビット bit31~bit8 bit7 内容 予約 IN8 立ち下がり割り込み bit6 IN7 立ち下がり割り込み bit5 IN6 立ち下がり割り込み bit4 IN5 立ち下がり割り込み bit3 IN4 立ち下がり割り込み bit2 IN3 立ち下がり割り込み bit1 IN2 立ち下がり割り込み bit0 IN1 立ち下がり割り込み 1:有効 0:無効 1:有効 0:無効 1:有効 0:無効 1:有効 0:無効 1:有効 0:無効 1:有効 0:無効 1:有効 0:無効 1:有効 0:無効 キャプチャ状態割り込み ビット 内容 bit31~bit4 予約 bit3 同期信号異常検知※ 1:有効 0:無効 bit2 SDRAM データの DMA 転送 1:有効 0:無効 bit1 SDRAM キャプチャによる 1 フレーム 1:有効 毎転送完了割り込み 0:無効 bit0 1 フレーム毎転送完了割り込み 1:有効 0:無効 ※この機能はお使いになっている製品のハードウェアのバージョ ンよっては対応しておりません。 dwTrigger トリガ発生割り込みの設定 ビット 内容 bit31~bit17 予約 bit16 スーパーインポーズ画像転送完了 1:有効 0:無効 bit15~bit5 予約 bit4 パターン一致 1:有効 0:無効 bit3 予約 © 2003, 2016 Interface Corporation. All rights reserved. 485 GPC-5520 Help for Windows bit2 面積 AND 重心 bit1 重心 bit0 面積 © 2003, 2016 Interface Corporation. All rights reserved. 486 1:有効 0:無効 1:有効 0:無効 1:有効 0:無効 GPC-5520 Help for Windows ● IMGEVENTTABLEEX 構造体 ImgSetEventEx関数で登録される、コールバック関数の引数です。 ●C 言語 typedef struct { DWORD dwDI; DWORD dwFrame; DWORD dwTrigger; DWORD dwFrameCntDMA; DWORD dwFrameCntSDRAM; DWORD dwXcoordinates; DWORD dwYcoordinates; DWORD dwPercentage; } IMGEVENTTABLEEX, *PIMGEVENTTABLEEX; ●Visual C# .NET [StructLayout(LayoutKind.Sequential)] public struct IMGEVENTTABLEEX { public uint dwDI; public uint dwFrame; public uint dwTrigger; public uint dwFrameCntDMA; public uint dwFrameCntSDRAM; public uint dwXcoordinates; public uint dwYcoordinates; public uint dwPercentage; } ●Visual Basic .NET <StructLayout(LayoutKind.Sequential)> _ Structure IMGEVENTTABLEEX Dim dwDI As Integer Dim dwFrame As Integer Dim dwTrigger As Integer Dim dwFrameCntDMA As Integer Dim dwFrameCntSDRAM As Integer Dim dwXcoordinates As Integer Dim dwYcoordinates As Integer Dim dwPercentage As Integer End Structure © 2003, 2016 Interface Corporation. All rights reserved. 487 GPC-5520 Help for Windows ●Delphi 8 type [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] IMGEVENTTABLEEX = record dwDI Cardinal; dwFrame Cardinal; dwTrigger Cardinal; dwFrameCntDMA Cardinal; dwFrameCntSDRAM Cardinal; dwXcoordinates Cardinal; dwYcoordinates Cardinal; dwPercentage Cardinal; end; メンバ dwDI dwFrame 説明 汎用入力割り込み ビット bit31~bit8 bit7 内容 予約 IN8 立ち下がり割り込み bit6 IN7 立ち下がり割り込み bit5 IN6 立ち下がり割り込み bit4 IN5 立ち下がり割り込み bit3 IN4 立ち下がり割り込み bit2 IN3 立ち下がり割り込み bit1 IN2 立ち下がり割り込み bit0 IN1 立ち下がり割り込み キャプチャ状態割り込み ビット 内容 bit31~bit4 予約 bit3 同期信号異常検知※ bit2 bit1 bit0 1:有効 0:無効 1:有効 0:無効 1:有効 0:無効 1:有効 0:無効 1:有効 0:無効 1:有効 0:無効 1:有効 0:無効 1:有効 0:無効 1:有効 0:無効 SDRAM データの DMA 転送 1:有効 0:無効 SDRAM キャプチャによる 1 フレーム 1:有効 毎転送完了割り込み 0:無効 1 フレーム毎転送完了割り込み 1:有効 0:無効 © 2003, 2016 Interface Corporation. All rights reserved. 488 GPC-5520 Help for Windows ※この機能はお使いになっている製品のハードウェアのバージョン よっては対応しておりません。 dwTrigger トリガ発生割り込みの設定 ビット 内容 bit31~bit5 予約 bit4 パターン一致 1:有効 0:無効 bit3 予約 bit2 面積 AND 重心 1:有効 0:無効 bit1 重心 1:有効 0:無効 bit0 面積 1:有効 0:無効 dwFrameCntDMA 「DMA 転送によるキャプチャが完了したフレーム数」または、 「SDRAM データの DMA 転送が完了したフレーム数」 (1~FFFFFFFFh) ※FFFFFFFFh までカウント後、1 に戻ります。 複数フレーム分のバッファ領域を確保している場合、描画処理等でこの フレーム数の値を活用してください。 dwFrameCntSDRAM dwXcoordinates dwPercentage SDRAM キャプチャが完了したフレーム数です。 (1~FFFFFFFFh) ※FFFFFFFFh までカウント後、1 に戻ります。 解像度が「320×240」または「160×120」の場合、0 が返ります。 複数フレーム分のバッファ領域を確保している場合、描画処理等でこの フレーム数の値を活用してください。 パターン一致トリガが有効の場合、パターン一致した測定対象物の X 座 標の重心値です。 解像度が「320×240」または「160×120」の場合、0 が返ります。 パターン一致トリガが有効の場合、パターン一致した測定対象物の一致 率です。 解像度が「320×240」または「160×120」の場合、0 が返ります。 © 2003, 2016 Interface Corporation. All rights reserved. 489 GPC-5520 Help for Windows ● IMGEVENTREQ 構造体 ImgSetEvent関数で指定する割り込み設定構造体です。 ●C 言語(x86 の場合) typedef struct { HWND hWnd; UINT uMessage; HANDLE hEvent; PIMGCALLBACK pCallBackProc; DWORD dwUser; } IMGEVENTREQ, *PIMGEVENTREQ; ●C 言語(x64 の場合) typedef struct { HWND hWnd; UINT uMessage; HANDLE hEvent; PIMGCALLBACK pCallBackProc; PVOID pUser; } IMGEVENTREQ, *PIMGEVENTREQ; ●Visual C# .NET(x86、x64 共用) [StructLayout(LayoutKind.Sequential)] public struct IMGEVENTREQ { public uint hWnd; public uint uMessage; public uint hEvent; PIMGCALLBACK pCallBackProc; public IntPtr pUser; } ●Visual C# .NET(x86 専用) [StructLayout(LayoutKind.Sequential)] public struct IMGEVENTREQ { public uint hWnd; public uint uMessage; public uint hEvent; PIMGCALLBACK pCallBackProc; public uint dwUser; } © 2003, 2016 Interface Corporation. All rights reserved. 490 GPC-5520 Help for Windows ●Visual Basic .NET(x86、x64 共用) <StructLayout(LayoutKind.Sequential)> _ Structure IMGEVENTREQ Dim hWnd As Integer Dim uMessage As Integer Dim hEvent As Integer Dim pCallBackProc As Integer Dim pUser As IntPtr End Structure ●Visual Basic .NET(x86 専用) <StructLayout(LayoutKind.Sequential)> _ Structure IMGEVENTREQ Dim hWnd As Integer Dim uMessage As Integer Dim hEvent As Integer Dim pCallBackProc As Integer Dim dwUser As Integer End Structure ●Delphi 8 type [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] IMGEVENTREQ = record hWnd: Integer; uMessage: Cardinal; hEvent: Integer; pCallBackProc: IMGCALLBACK; dwUser: Cardinal; end; メンバ hWnd 説明 メッセージ送出ウィンドウハンドル ImgSetEventMask関数にて設定した各種割り込み発生時に送出するメッセ ージのポスト先ウィンドウハンドルを指定してください。 メッセージポストを行わない場合には、C 言語では NULL,Visual Basic、 Delphi では 0 を指定してください。 uMessage hWnd へ送出するメッセージコード ImgSetEventMask関数におけるIMGEVENTTABLE構造体にて設定した割り込 み発生時にhWndへ送出するメッセージコードを指定してください。 メッセージポストを行わない場合には、C 言語では WM_NULL,Visual Basic、 Delphi では 0 を指定してください。 メッセージ送出時、LPARAM には以下の情報が格納されます。 ビット 内容 状態 bit31~bit15 予約 bit14 同期信号異常検知割り込み © 2003, 2016 Interface Corporation. All rights reserved. 491 GPC-5520 Help for Windows bit13~bit12 bit11 bit10 bit9 bit8 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 hEvent 予約 面積 AND 重心割り込み 重心トリガ割り込み 面積トリガ割り込み フレーム転送完了割り込み IN8 立ち下がり割り込み IN7 立ち下がり割り込み IN6 立ち下がり割り込み IN5 立ち下がり割り込み IN4 立ち下がり割り込み IN3 立ち下がり割り込み IN2 立ち下がり割り込み IN1 立ち下がり割り込み 0:未発生 1:発生 WPARAM には、フレーム転送完了数が格納されます。 1 フレーム毎転送完了割り込みの有効/無効に関係なく格納されます。 イベント発生時にシグナル状態となるイベントオブジェクトのハンドル を指定してください。 イベントオブジェクトを使用しない場合には、C 言語では NULL、Visual Basic、Delphi では 0 を指定してください。 pCallBackProc コールバック関数へのポインタ ImgSetEventMask関数にて設定した各種割り込み発生時に呼び出されるユ ーザ・コールバック関数のポインタを指定してください。 ユーザ・コールバック関数の呼び出しを行わない場合には、C 言語では NULL、Visual Basic、Delphi では 0 を指定してください。 dwUser(pUser) ユーザデータ © 2003, 2016 Interface Corporation. All rights reserved. 492 GPC-5520 Help for Windows ● IMGEVENTREQEX 構造体 ImgSetEventEx関数で指定する割り込み設定構造体です。 ●C 言語(x86 の場合) typedef struct { HWND hWnd; UINT uMessage; HANDLE hEvent; PIMGCALLBACKEX pCallBackProcEx; DWORD dwUser; } IMGEVENTREQEX, *PIMGEVENTREQEX; ●C 言語(x64 の場合) typedef struct { HWND hWnd; UINT uMessage; HANDLE hEvent; PIMGCALLBACKEX pCallBackProcEx; PVOID pUser; } IMGEVENTREQEX, *PIMGEVENTREQEX; ●Visual C# .NET(x86、x64 共用) [StructLayout(LayoutKind.Sequential)] public struct IMGEVENTREQEX { public uint hWnd; public uint uMessage; public uint hEvent; PIMGCALLBACKEX pCallBackProcEx; public IntPtr pUser; } ●Visual C# .NET(x86 専用) [StructLayout(LayoutKind.Sequential)] public struct IMGEVENTREQEX { public uint hWnd; public uint uMessage; public uint hEvent; PIMGCALLBACKEX pCallBackProcEx; public uint dwUser; } © 2003, 2016 Interface Corporation. All rights reserved. 493 GPC-5520 Help for Windows ●Visual Basic .NET(x86、x64 共用) <StructLayout(LayoutKind.Sequential)> _ Structure IMGEVENTREQEX Dim hWnd As Integer Dim uMessage As Integer Dim hEvent As Integer Dim pCallBackProcEx As Integer Dim pUser As IntPtr End Structure ●Visual Basic .NET(x86 専用) <StructLayout(LayoutKind.Sequential)> _ Structure IMGEVENTREQEX Dim hWnd As Integer Dim uMessage As Integer Dim hEvent As Integer Dim pCallBackProcEx As Integer Dim dwUser As Integer End Structure ●Delphi 8 type [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] IMGEVENTREQEX = record hWnd: Integer; uMessage: Cardinal; hEvent: Integer; pCallBackProcEx: IMGCALLBACKEX; dwUser: Cardinal; end; メンバ hWnd 説明 メッセージ送出ウィンドウハンドル ImgSetEventMask関数にて設定した各種割り込み発生時に送出するメッセ ージのポスト先ウィンドウハンドルを指定してください。 メッセージポストを行わない場合には、C 言語では NULL,Visual Basic、 Delphi では 0、Visual C# .NET では NULL,Visual Basic .NET では 0 を 指定してください。 uMessage hWnd へ送出するメッセージコード ImgSetEventMask関数におけるIMGEVENTTABLE構造体にて設定した割り込 み発生時にhWndへ送出するメッセージコードを指定してください。 メッセージポストを行わない場合には、C 言語では WM_NULL,Visual Basic、 Delphi では 0、、Visual C# .NET では WM_NULL,Visual Basic .NET では 0 を指定してください。 メッセージ送出時、LPARAM には以下の情報が格納されます。 ビット 内容 状態 © 2003, 2016 Interface Corporation. All rights reserved. 494 GPC-5520 Help for Windows bit31~bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 予約 同期信号異常検知割り込み パターン一致割り込み 予約 面積 AND 重心トリガ割り込み 重心トリガ割り込み 面積トリガ割り込み フレーム転送完了割り込み IN8 立ち下がり割り込み IN7 立ち下がり割り込み IN6 立ち下がり割り込み IN5 立ち下がり割り込み IN4 立ち下がり割り込み IN3 立ち下がり割り込み IN2 立ち下がり割り込み IN1 立ち下がり割り込み 0:未発生 1:発生 hEvent イベント発生時にシグナル状態となるイベントオブジェクトのハンドル を指定してください。 イベントオブジェクトを使用しない場合には、C 言語では NULL、Visual Basic、Delphi では 0、VISUAL C# .NET では NULL、Visual Basic .NET で は 0 を指定してください。 pCallBackProcEx コールバック関数へのポインタ ImgSetEventMask関数にて設定した各種割り込み発生時に呼び出されるユ ーザ・コールバック関数のポインタを指定してください。 ユーザ・コールバック関数の呼び出しを行わない場合には、C 言語では NULL、Visual Basic、Delphi では 0、VISUAL C# .NET では NULL、Visual Basic .NET では Nothing を指定してください。 dwUser ユーザデータ © 2003, 2016 Interface Corporation. All rights reserved. 495 GPC-5520 Help for Windows ● IMGCLIPCONFIG 構造体 ImgClipData 関数で指定する読み出し範囲設定構造体です。 ●C 言語 typedef struct { DWORD dwDataFormat; DWORD dwXCoordinates; DWORD dwYCoordinates; DWORD dwXLength; DWORD dwYLength; } IMGCLIPCONFIG, *PIMGCLIPCONFIG; ●Visual C# .NET [StructLayout(LayoutKind.Sequential)] public struct IMGCLIPCONFIG { public uint dwDataFormat; public uint dwXCoordinates; public uint dwYCoordinates; public uint dwXLength; public uint dwYLength; } ●Visual Basic .NET <StructLayout(LayoutKind.Sequential)> _ Structure IMGCLIPCONFIG Dim dwDataFormat As Integer Dim dwXCoordinates As Integer Dim dwYCoordinates As Integer Dim dwXLength As Integer Dim dwYLength As Integer End Structure ●Delphi 8 type [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] IMGCLIPCONFIG = record dwDataFormat: Cardinal; dwXCoordinates: Cardinal; dwYCoordinates: Cardinal; dwXLength: Cardinal; dwYLength: Cardinal; } © 2003, 2016 Interface Corporation. All rights reserved. 496 GPC-5520 Help for Windows メンバ dwDataFormat 説明 データフォーマットを指定します。 画像フォーマット識別子 識別子 内容 IFIMG_COLOR_RGB32 RGB32 bit IFIMG_COLOR_RGB24 RGB24 bit(デフォルト) IFIMG_COLOR_RGB15 RGB15 bit IFIMG_COLOR_RGB16 RGB16 bit IFIMG_COLOR_GRAY8 GRAY8 bit IFIMG_COLOR_RED8 R 8bit IFIMG_COLOR_GREEN8 G 8bit IFIMG_COLOR_BLUE8 B 8bit IFIMG_COLOR_BIN8 2 値化処理データ 8bit IFIMG_COLOR_CMP8 比較用データ 8bit IFIMG_COLOR_GRAY10 GRAY 10bit IFIMG_COLOR_GRAY12 GRAY 12bit IFIMG_COLOR_GRAY14 GRAY 14bit IFIMG_COLOR_GRAY16 GRAY 16bit 解像度識別子(OR 演算による設定) 識別子 内容 NTSC/ PAL 値 1h 2h 3h Bh 4h 5h 6h 7h 8h Ah Eh Fh 10h 11h 値 CameraLink IFIMG_RESOLUTION_640_480 IFIMG_RESOLUTION_320_240 IFIMG_RESOLUTION_160_120 IFIMG_RESOLUTION_768_572 IFIMG_RESOLUTION_384_286 IFIMG_RESOLUTION_192_143 640×480 320×240 160×120 未対応 未対応 未対応 未対応 未対応 未対応 768×572 384×286 192×143 画像処理結果識別子(OR 演算による設定) 識別子 内容 IFIMG_MEASUEMENT_HSIT 濃度分布 IFIMG_MEASUEMENT_PRO 射影 0h 80000000h 40000000h 8000000h 4000000h 2000000h 値 200h 400h 画像拡大識別子(OR 演算による設定) 識別子 内容 IFIMG_DIGTALZOOM_2 縦横 2 倍のサイズで拡大 IFIMG_DIGTALZOOM_4 縦横 4 倍のサイズで拡大 値 100000h 200000h 画像データの種類(OR 演算による設定) 識別子 内容 IFIMG_NTSC_RESOLUTION NTSC IFIMG_CL_RESOLUTION CameraLink 値 0h 10000h © 2003, 2016 Interface Corporation. All rights reserved. 497 GPC-5520 Help for Windows dwXCoordinates 読み込み開始 X 座標 dwYCoordinates 読み込み開始 Y 座標 dwXLength X 方向長さ dwYLength X 方向長さ © 2003, 2016 Interface Corporation. All rights reserved. 498 GPC-5520 Help for Windows ● IMGPTNCONFIG 構造体 ImgSetComparisonConfig関数で指定する比較設定構造体です。 ●C 言語 typedef struct { HANDLE hSDRAMhandle; DWORD dwAutoRevision; DWORD dwXCoordinates; DWORD dwYCoordinates; DWOWD dwPercentage; DWORD dwTriggerMode; } IMGPTNCONFIG, *PIMGPTNCONFIG; ●Visual C# .NET(x86、x64 共用) [StructLayout(LayoutKind.Sequential)] public struct IMGPTNCONFIG { public uint hSDRAMhandle; public uint dwAutoRevision; public uint dwXCoordinates; public uint dwYCoordinates; public uint dwPercentage; public uint dwTriggerMode; } ●Visual C# .NET(x86 専用) [StructLayout(LayoutKind.Sequential)] public struct IMGPTNCONFIG { public uint hSDRAMhandle; public uint dwAutoRevision; public uint dwXCoordinates; public uint dwYCoordinates; public uint dwPercentage; public uint dwTriggerMode; } ●Visual Basic .NET(x86、x64 共用) <StructLayout(LayoutKind.Sequential)> _ Structure IMGPTNCONFIG Dim hSDRAMhandle As Integer Dim dwAutoRevision As Integer Dim dwXCoordinates As Integer Dim dwYCoordinates As Integer Dim dwPercentage As Integer Dim dwTriggerMode As Integer End Structure © 2003, 2016 Interface Corporation. All rights reserved. 499 GPC-5520 Help for Windows ●Visual Basic .NET(x86 専用) <StructLayout(LayoutKind.Sequential)> _ Structure IMGPTNCONFIG Dim hSDRAMhandle As Integer Dim dwAutoRevision As Integer Dim dwXCoordinates As Integer Dim dwYCoordinates As Integer Dim dwPercentage As Integer Dim dwTriggerMode As Integer End Structure ●Delphi 8 type [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] IMGPTNCONFIG = record hSDRAMhandle: Integer; dwAutoRevision: Cardinal; dwXCoordinates: Cardinal; dwYCoordinates: Cardinal; dwPercentage: Cardinal; dwTriggerMode: Cardinal; end; メンバ hSDRAMhandle dwAutoRevision 説明 ImgAllocateSDRAM関数で取得したハンドルを指定します。 比較エリア自動補正機能 識別子 内容 IFIMG_AUTO_ENABLE 自動補正有効 IFIMG_AUTO_DISABLE 自動補正無効(デフォルト) dwXCoordinates 比較開始 X 座標 デフォルト 0 dwYCoordinates 比較開始 Y 座標 デフォルト 0 dwPercentage 比較データとの一致率(0~100%) デフォルト 60% dwTriggerMode パターン一致トリガの発生条件 識別子 内容 IFIMG_PTNMATCH_NORMAL 比較データとの一致率が dwPercentage 以上の場合 トリガ発生 (デフォル ト) IFIMG_PTNMATCH_REVERSAL 比較データとの一致率が dwPercentage より下の場 合トリガ発生 IFIMG_PTNMATCH_NONE トリガ発生なし © 2003, 2016 Interface Corporation. All rights reserved. 500 値 1h 2h 値 1h 2h 3h GPC-5520 Help for Windows ● IMGMEASURE 構造体 ImgGetMeasurementValueEx関数で使用する画像処理結果取得用構造体です。 ●C 言語 typedef struct { DWORD dwArea; DWORD dwXcoordinates; DWORD dwYcoordinates; DWORD dwFeretX1; DWORD dwFeretX2; DWORD dwFeretY1; DWORD dwFeretY2; DWORD dwFeretH; DWORD dwFeretV; float dAngle; } IMGMEASURE, *PIMGMEASURE; ●Visual C# .NET [StructLayout(LayoutKind.Sequential)] public struct IMGMEASURE { public uint dwArea; public uint dwXcoordinates; public uint dwYcoordinates; public uint dwFeretX1; public uint dwFeretX2; public uint dwFeretY1; public uint dwFeretY2; public uint dwFeretH; public uint dwFeretV; public doubule dAngle; } ●Visual Basic .NET <StructLayout(LayoutKind.Sequential)> _ Structure IMGMEASURE Dim dwArea As Integer Dim dwXcoordinates As Integer Dim dwYcoordinates As Integer Dim dwFeretX1 As Integer Dim dwFeretX2 As Integer Dim dwFeretY1 As Integer Dim dwFeretY2 As Integer Dim dwFeretH As Integer Dim dwFeretV As Integer Dim dAngle As Doubule End Structure © 2003, 2016 Interface Corporation. All rights reserved. 501 GPC-5520 Help for Windows ●Delphi 8 type [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] IMGMEASURE = record dwArea: Cardinal; dwXcoorinates: Cardinal; dwYcoordinates: Cardinal; dwFeretX1: Cardinal; dwFeretX2: Cardinal; dwFeretY1: Cardinal; dwFeretY2: Cardinal; dwFeretH: Cardinal; dwFeretV: Cardinal; dAngle: Double; end; メンバ dwArea 説明 面積値 (0~307200) dwXcoordinates 重心 X 座標(0~639) dwYcoordinates 重心 Y 座標(0~479) dwFeretX1 外接矩形 X 座標 始点(0~639) dwFeretX2 外接矩形 X 座標 終点(0~639) dwFeretY1 外接矩形 Y 座標 始点(0~479) dwFeretY2 外接矩形 Y 座標 終点(0~479) dwFeretH 水平方向フェレ径(0~640) dwFeretV 垂直方向フェレ径(0~480) dAngle 慣性等価楕円の傾き角(–π/2~+π/2) © 2003, 2016 Interface Corporation. All rights reserved. 502 GPC-5520 Help for Windows ● IMGLUTINFO 構造体 ImgSetLUT関数で指定する階調変換テーブル構造体です。 ●C 言語 typedef struct { BYTE rgbBlue[256]; BYTE rgbGreen[256]; BYTE rgbRed[256]; } IMGLUTINFO, *PIMGLUTINFO; ●Visual C# .NET [StructLayout(LayoutKind.Sequential)] public struct IMGLUTINFO{ [MarshalAs(UnmanagedType.ByValArray, SizeConst=256)] public byte[] rgbBlue [MarshalAs(UnmanagedType.ByValArray, SizeConst=256)] public byte[] rgbGreen [MarshalAs(UnmanagedType.ByValArray, SizeConst=256)] public byte[] rgbRed public void InitializeArray() { rgbBlue = new byte [256]; rgbGreen = new byte [256]; rgbRed = new byte [256]; } public void SetBlue(uint ulIndex, byte bData) { rgbBlue[ulIndex] = bData; } public void SetGreen(uint ulIndex, byte bData) { rgbGreen[ulIndex] = bData; } public void SetRed(uint ulIndex, byte bData) { rgbRed[ulIndex] = bData; } public byte GetBlue(uint uIndex) { return rgbBlue[uIndex]; } public byte GetGreen(uint uIndex) { return rgbGreen[uIndex]; } public byte GetRed(uint uIndex) { return rgbRed[uIndex]; © 2003, 2016 Interface Corporation. All rights reserved. 503 GPC-5520 Help for Windows } } ●Visual Basic .NET <StructLayout(LayoutKind.Sequential)> _ Structure IMGLUTINFO <MarshalAs(UnmanagedType.ByValArray, SizeConst:=256)> _ Dim rgbBlue() As Byte <MarshalAs(UnmanagedType.ByValArray, SizeConst:=256)> _ Dim rgbGreen() As Byte <MarshalAs(UnmanagedType.ByValArray, SizeConst:=256)> _ Dim rgbRed() As Byte Public Sub New(ByVal Dummy As Integer) ReDim rgbBlue(255) ReDim rgbGreen(255) ReDim rgbRed(255) End Sub Public Sub SetBlue(ByVal Index As Integer, ByVal data As Byte) rgbBlue(Index) = data End Sub Public Sub SetGreen(ByVal Index As Integer, ByVal data As Byte) rgbGreen(Index) = data End Sub Public Sub SetRed(ByVal Index As Integer, ByVal data As Byte) rgbRed(Index) = data End Sub Public Function GetBlue(ByVal Index As Integer) As Byte GetBlue = rgbBlue(Index) End Function Public Function GetGreen(ByVal Index As integer) As Byte GetGreen = rgbGreen(Index) End Function Public Function GetRed(ByVal Index As integer) As Byte GetRed = rgbRed(Index) End Function End Structure © 2003, 2016 Interface Corporation. All rights reserved. 504 GPC-5520 Help for Windows ●Delphi 8 type [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] IMGLUTINFO = record [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] rgbBlue: array[0..255] of BYTE; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] rgGreen: array[0..255] of BYTE; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] rgbRed: array[0..255] of BYTE; end; メンバ rgbBlue 説明 青成分の階調変換データ rgbGreen 緑成分/輝度成分の階調変換データ モノクロ 8bit の階調変換を行なう場合、rgbGreen のデータが適用 されます。 rgbRed 赤成分の階調変換データ © 2003, 2016 Interface Corporation. All rights reserved. 505 GPC-5520 Help for Windows ● IMGFILTER 構造体 ImgSetFilter関数で指定するフィルタ係数構造体です。 ●C 言語 typedef struct { INT a; INT b; INT c; INT d; INT e; INT f; INT g; INT h; INT I; } IMGFILTER, *PIMGFILTER; ●Visual C# .NET [StructLayout(LayoutKind.Sequential)] public struct IMGFILTER{ public int a; public int b; public int c; public int d; public int e; public int f; public int g; public int h; public int i; } ●Visual Basic .NET <StructLayout(LayoutKind.Sequential)> _ Structure IMGFILTER Dim a As Integer Dim b As Integer Dim c As Integer Dim d As Integer Dim e As Integer Dim f As Integer Dim g As Integer Dim h As Integer Dim i As Integer End Structure © 2003, 2016 Interface Corporation. All rights reserved. 506 GPC-5520 Help for Windows ●Delphi 8 type [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] IMGFILTER = record a: Integer; b: Integer; c: Integer; d: Integer; e: Integer; f: Integer; g: Integer; h: Integer; i: Integer; end; メンバ a~i 説明 各要素のフィルタ係数(-15~-15) a b c d e f g h i (フィルタ係数設定例) 0 1 0 1 1 1 -1 0 1 -1 -2 -1 -1 0 1 -1 -1 -1 1 -4 1 1 -8 1 -2 0 2 0 0 0 -1 0 1 0 0 0 0 1 0 1 1 1 -1 0 1 1 2 1 -1 0 1 1 1 1 ラプラシアン(4 近傍) ラプラシアン(8 近傍) Sobel(X 近傍) Sobel(Y 近傍) © 2003, 2016 Interface Corporation. All rights reserved. 507 Prewitt(X 近傍) Prewitt(Y 近傍) GPC-5520 Help for Windows ● IMGDILATE_ERODE 構造体 ●C 言語 typedef struct { DWORD dwStepCnt; DWORD dwSelectD_E; DWORD dwNeighborhood; }IMGDILATE_ERODE, *PIMGDILATE_ERODE; ●Visual C# .NET [StructLayout(LayoutKind.Sequential)] public struct IMGDILATE_ERODE{ public uint dwStepCnt; public uint dwSelectD_E; public uint dwNeighborhood; } ●Visual Basic .NET <StructLayout(LayoutKind.Sequential)> _ Structure IMGDILATE_ERODE Dim dwStepCnt As Integer Dim dwSelectD_E As Integer Dim dwNeighborhood As Integer End Structure ●Delphi 8 type [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] IMGDILATE_ERODE = record dwStepCnt: Cardinal; dwSelectD_E: Cardinal; dwNeighborhood: Cardinal; end; メンバ dwStepCnt 説明 有効段数を指定します。(1~8 段) © 2003, 2016 Interface Corporation. All rights reserved. 508 GPC-5520 Help for Windows dwSelectD_E 各段の処理を選択します。 ビット 内容 bit31~bit8 予約 bit7 8 段目の膨張・収縮選択 bit6 7 段目の膨張・収縮選択 bit5 6 段目の膨張・収縮選択 bit4 5 段目の膨張・収縮選択 bit3 4 段目の膨張・収縮選択 bit2 3 段目の膨張・収縮選択 bit1 2 段目の膨張・収縮選択 bit0 1 段目の膨張・収縮選択 0:収縮 1:膨張 dwNeighborhood 連結数を設定します。 ビット 内容 bit31~bit8 予約 bit7 8 段目の連結数の選択 bit6 7 段目の連結数の選択 bit5 6 段目の連結数の選択 bit4 5 段目の連結数の選択 bit3 4 段目の連結数の選択 bit2 3 段目の連結数の選択 bit1 2 段目の連結数の選択 bit0 1 段目の連結数の選択 0:4 連結 1:8 連結 © 2003, 2016 Interface Corporation. All rights reserved. 509 GPC-5520 Help for Windows ● IFIMGCLCAPCFG 構造体 ImgSetCLCaptureConfig 関数で使用する構造体です。 ●C 言語 typedef struct { DWORD XStart; DWORD YStart; DWORD SyncMode; DWORD LVALInterVal; }IFIMGCLCAPCFG *PIFIMGCLCAPCFG; ●Visual C# .NET [StructLayout(LayoutKind.Sequential)] public struct IFIMGCLCAPCFG public uint XStart; public uint YStart; public uint SyncMode; public uint LVALInterVal; } ●Visual Basic .NET <StructLayout(LayoutKind.Sequential)> _ Structure IFIMGCLCAPCFG Dim XStart As Integer Dim YStart As Integer Dim SyncMode As Integer Dim LVALInterVal As Integer End Structure ●Delphi 8 type [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] IFIMGCLCAPCFG = record XStart: Cardinal; YStart: Cardinal; SyncMode: Cardinal; LVALInterVal: Cardinal; } メンバ XStart 説明 取り込み開始位置のX座標 設定範囲:0 ~ XMAX (XMAX) 使用カメラの水平解像度-640 ※水平解像度が640より少ない解像度は利用できません。 © 2003, 2016 Interface Corporation. All rights reserved. 510 GPC-5520 Help for Windows YStart 取り込み開始位置のY座標 設定範囲:0 ~ YMAX (YMAX) 使用カメラの垂直解像度-480 ※垂直解像度が 480 より少ない解像度は利用できません。 SyncMode 予約機能です。 0値固定です。 LVALInterVal 予約機能です。 0値固定です。 © 2003, 2016 Interface Corporation. All rights reserved. 511 GPC-5520 Help for Windows ● IFIMGCLENCCFG 構造体 ImgSetEncodeCntMode 関数で使用する構造体です。 ●C 言語 typedef struct { DWORD Direction; DWORD Edge; DWORD PulseMode; DWORD StartMode; DWORD StartCounter; DWORD FilterBaceClock; DWORD FilterCount; }IFIMGCLENCCFG, *PIFIMGCLENCCFG; ●Visual C# .NET [StructLayout(LayoutKind.Sequential)] public struct IFIMGCLENCCFG public uint Direction; public uint Edge; public uint PulseMode; public uint StartMode; public uint StartCounter; public uint FilterBaceClock; public uint FilterCount; } ●Visual Basic .NET <StructLayout(LayoutKind.Sequential)> _ Structure IFIMGCLENCCFG Dim Direction As Integer Dim Edge As Integer Dim PulseMode As Integer Dim StartMode As Integer Dim StartCounter As Integer Dim FilterBaceClock As Integer Dim FilterCount As Integer End Structure © 2003, 2016 Interface Corporation. All rights reserved. 512 GPC-5520 Help for Windows ●Delphi 8 type [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] IFIMGCLENCCFG = record Direction: Cardinal; Edge: Cardinal; PulseMode: Cardinal; StartMode: Cardinal; StartCounter: Cardinal; FilterBaceClock: Cardinal; FilterCount: Cardinal; } メンバ Direction Edge PulseMode 説明 カウンタ方向を指定します。 識別子 IFIMGCL_DIRECTION_NORMAL IFIMGCL_DIRECTION_REVERSE 値 00000000h 00000001h カウント逓倍を指定します。 識別子 IFIMGCL_SINGLE_EDGE IFIMGCL_DOUBLE_EDGE IFIMGCL_QUAD_EDGE 値 00000000h 00000001h 00000002h カウント方式を指定します。 識別子 IFIMGCL_SINGLE_PHASE_MODE 値 00000000h IFIMGCL_PHASE_SHIFTED_MODE 00000001h 識別子 IFIMGCL_CNT_START_NONE IFIMGCL_CNT_START_DIN1 値 00000000h 00000001h IFIMGCL_CNT_START_ZPHASE 00000002h 内容 通常方向 リバース方向 内容 1 逓倍 2 逓倍 4 逓倍 内容 差動入力方式エンコー ダカウンタ 単相パルスカウントモ ード 差動入力方式エンコー ダカウンタ 位相差パルスカウント モード StartMode © 2003, 2016 Interface Corporation. All rights reserved. 513 内容 通常カウントモード 汎用入力 DIN1 が Low→ High へ変化した時 エンコーダカウントモ ードのみ有効 Z 相へ 1 パルス入力さ れたらスタートする。 GPC-5520 Help for Windows StartCounter FilterBaceClock FilterCount エンコーダカウンタ開始後の初回カウンタの周期を設定します。 これを設定すると、エンコーダカウンタは、StartCounter のカウンタ 周期後に、ImgSetCounterCycle で指定した周期でカウントアップしま す。 エンコーダカウンタのデジタルフィルタ設定 基準クロックを設定します。 識別子 値 内容 IFIMGCL_CLOCK_100_NANO 00000000h 基準クロックを 100ns に設定する。 IFIMGCL_CLOCK_10_MICRO 00000001h 基準クロックを 10μs に設定する。 エンコーダカウンタのデジタルフィルタ設定 カウント数を指定します。(1~32767) © 2003, 2016 Interface Corporation. All rights reserved. 514 GPC-5520 Help for Windows ● IFIMGTIME 構造体 ImgSetImposeDateTime 関数で使用する構造体です。 ●C 言語 typedef struct { INT sec; INT min; INT hour; }IFIMGTIME *PIFIMGTIME; ●Visual C# .NET [StructLayout(LayoutKind.Sequential)] public struct IFIMGTIME public int sec; public int min; public int hour; } ●Visual Basic .NET <StructLayout(LayoutKind.Sequential)> _ Structure IFIMGTIME Dim sec As Integer Dim min As Integer Dim hour As Integer End Structure メンバ sec 説明 秒 min 分 hour 時 © 2003, 2016 Interface Corporation. All rights reserved. 515 GPC-5520 Help for Windows ● IFIMGDATE 構造体 ImgSetImposeDateTime 関数で使用する構造体です。 ●C 言語 typedef struct { INT mday; INT mon; INT year; }IFIMGDATE *PIFIMGDATE; ●Visual C# .NET [StructLayout(LayoutKind.Sequential)] public struct IFIMGDATE public int mday; public int mon; public int year; } ●Visual Basic .NET <StructLayout(IFIMGDATE.Sequential)> _ Structure IFIMGDATE Dim mday As Integer Dim mon; As Integer Dim year As Integer End Structure メンバ mday 説明 日 mon 月 year 年 © 2003, 2016 Interface Corporation. All rights reserved. 516 GPC-5520 Help for Windows ● IFIMGTIMEINFO 構造体 ImgSetImposeDateTimeInfo 関数で使用する構造体です。 ●C 言語 typedef struct { IFIMGTIME Time INT Xcoordinates; INT Ycoordinates; }IFIMGTIMEINFO *PIFIMGTIMEINFO; ●Visual C# .NET [StructLayout(LayoutKind.Sequential)] public struct IFIMGTIMEINFO IFIMGTIME Time; public int Xcoordinates; public int Ycoordinates; } ●Visual Basic .NET <StructLayout(IFIMGTIMEINFO.Sequential)> _ Structure IFIMGTIMEINFO Dim Time As IFIMGTIME Dim Xcoordinates As Integer Dim Ycoordinates As Integer End Structure メンバ Time 説明 時間を指定します。 Xcoordinates 表示位置の X 座標を指定します。 Ycoordinates 表示位置の Y 座標を指定します。 © 2003, 2016 Interface Corporation. All rights reserved. 517 GPC-5520 Help for Windows ● IFIMGDATEINFO 構造体 ImgSetImposeDateTimeInfo 関数で使用する構造体です。 ●C 言語 typedef struct { IFIMGDATE Date INT Xcoordinates; INT Ycoordinates; }IFIMGDATEINFO *PIFIMGDATEINFO; ●Visual C# .NET [StructLayout(LayoutKind.Sequential)] public struct IFIMGDATEINFO IFIMGDATE Date; public int Xcoordinates; public int Ycoordinates; } ●Visual Basic .NET <StructLayout(IFIMGTIMEINFO.Sequential)> _ Structure IFIMGDATEINFO Dim Date As IFIMGDATE Dim Xcoordinates As Integer Dim Ycoordinates As Integer End Structure メンバ Date 説明 日付を指定します。 Xcoordinates 表示位置の X 座標を指定します。 Ycoordinates 表示位置の Y 座標を指定します。 © 2003, 2016 Interface Corporation. All rights reserved. 518 GPC-5520 Help for Windows 4.5 戻り値一覧 エラー識別子 値 IFIMG_ERROR_SUCCESS IFIMG_ERROR_NOT_DEVICE 0 C0000001h (-1073741823) IFIMG_ERROR_NOT_OPEN C0000002h (-1073741822) IFIMG_ERROR_INVALID_DEVICE_HAND LE C0000003h (-1073741821) IFIMG_ERROR_ALREADY_OPEN C0000004h (-1073741820) C0000009h (-1073741815) IFIMG_ERROR_NOT_SUPPORTED IFIMG_ERROR_INVALID_PARAMETER C00000010h (-1073741808) IFIMG_ERROR_NOT_ALLOCATE_MEMORY C0000021h (-1073741791) C0001000h (-1073737728) IFIMG_ERROR_NOW_CAPTURING IFIMG_ERROR_NOW_STOP IFIMG_ERROR_NULL_POINTER C0001001h (-1073737727) C0001002h (-1073737726) IFIMG_ERROR_WRITE_FAILED C0001003h (-1073737725) IFIMG_ERROR_READ_FAILED C0001004h (-1073737724) IFIMG_ERROR_NOBUFFER C0001005h (-1073737723) IFIMG_ERROR_INVALID_OFFSET C0001006h (-1073737722) IFIMG_ERROR_SDRAM_NOW_CAPTURING C0001007h (-1073737721) IFIMG_ERROR_SDRAM_NOW_STOP C0001008h (-1073737720) 意味 対処方法 正常終了 ドライバを呼び出せま 指定したデバイスが見つかりません せん。 でした。 指定したデバイス番号が存在するか どうかを確認してください。 ドライバを OPEN できま デバイスのオープン時、何らかのエラ せん。 ーが発生しました。 ドライバ内部のメモリ確保に失敗し たなど。 デバイスハンドルが正 不正なデバイスハンドルで呼び出し しくありません。 を行おうとしました。 OPEN 関数で返されたデバイスハンド ルを使用してください。 既に OPEN されているデ 既に OPEN されているデバイスです。 バイスです。 サポートされていない 使用しているインタフェースモジュ API 関数です。 ールではサポートされていない機能 です。 引数の値が正しくあり 設定可能範囲外または予想外のパラ ません。 メータが渡されました。 正しい値を指定して下さい。 作業用のメモリの確保 メモリの空き容量を増やしてから実 に失敗しました。 行して下さい。 キャプチャ(DMA 転送) キャプチャ(DMA 転送)中の為、設定 中です。 できません。 一旦停止してから設定して下さい。 キャプチャ(DMA 転送) 停止中です。 NULL ポインタを指定し データ格納先が NULL ポインタとなっ ました。 ています。 格納先のメモリを確保して下さい。 デコーダまたはエンコ ーダに対する書き込み に失敗しました。 デコーダまたはエンコ ーダに対する読み込み に失敗しました。 DMA 転送先バッファを設 ImgSetBuffer 関 数 ( ま た は ImgSetBufferVB関数)で、バッファ領 定していません。 域を指定してください。 デコーダまたはエンコ ーダに対するオフセッ トに誤りがあります。 キャプチャ(SDRAM 転送) SDRAM によるキャプチャ中に為、設定 中です。 ができません。 一旦停止してから設定してください。 キャプチャ(SDRAM 転送) 停止中です。 © 2003, 2016 Interface Corporation. All rights reserved. 519 GPC-5520 Help for Windows IFIMG_ERROR_NOT_SET_COMPDATA IFIMG_ERROR_SDRAM_NOTSET_CAPDATA C0001009h (-1073737719) C000100ah (-1073737718) IFIMG_ERROR_NOT_COMPDATA C000100bh (-1073737717) IFIMG_ERROR_INVALID_SDRAM_HANDLE C000100ch (-1073737716) IFIMG_ERROR_SDRAM_NOT_CAPDATA C000100dh (-1073737715) IFIMG_ERROR_SDRAM_NOMEMORY C000100eh (-1073737714) IFIMG_ERROR_INVALID_FORMAT C000100fh (-1073737713) IFIMG_ERROR_NOW_SDRAM_BM C0001010h (-1073737712) C0001013h (-1073737709) IFIMG_ERROR_INVALID_FILEPARAMETER IFIMG_ERROR_NOTSET_CAMFILE IFIMG_ERROR_SERIAL_TIMEOUT C0001014h (-1073737708) C0001015h (-1073737707) IFIMG_ERROR_SERIAL_FIFO_OVERRUN C0001016h (-1073737706) IFIMG_ERROR_FAILED_CAPTURE C0001017h (-1073737705) IFIMG_ERROR_FAILED_CAPSTOP C0001018h (-1073737704) C000101Bh (-1073737701) IFIMG_ERROR_FAILED_DEVIOCTL IFIMG_ERROR_OTHER_ERR C000101Ch (-1073737700) IFIMG_ERROR_NOW_IMPOSEDATA_WRITE C000101Dh (-1073737699) 比較用画像データが書 き込まれていません。 SDRAM キャプチャ用の領 域がセットされてませ ん。 指定した領域は比較用 画像データの領域では ありません。 SDRAM ハンドルが正しく ありません。 ImgWriteComparisonData 関数で比較 用画像データを書き込んでください。 ImgSetSDRAM 関数でキャプチャを行 う SDRAM 領域を指定してください。 指定した領域はキャプ チャ用データではあり ません。 確保可能な SDRAM 領域 が見つかりませんでし た。 カラーフォーマットの 設定が不正です。 現在のカラーフォマッ トの設定では、実行でき ません。 SDRAM データの DMA 転送 中です。 カメラコンフィグファ イルのパラメータが間 違っています。 カメラコンフィグファ イを設定していません。 カメラとのシリアル通 信でタイムアウトが発 生した。 FIFO がオーバーランし ています。 確保した領域が比較用データとして 確保していると考えられます。 - 渡したハンドルに対する SDRAM 領域 が存在しません。 必要のない SDRAM 領域を解放して、 SDRAM の空き領域を確保してくださ い。 DMA 転送によるキャプチャと SDRAM へ のキャプチャを行う場合、両方のカラ ーフォーマットの設定を同じにする 必要があります。 (ImgSetBuffer,ImgSetSDRAM) SDRAM データの DMA 転送中に実行する ことはできません。 ファイル内に記載しているパラメー タ値か、書式が不正です。テキスト形 式で開いて確認してください。 ImgSetCLCaptureConfig 関 数 で カ メ ラファイルを設定してください。 カメラへの送信処理が停止していま す。カメラからの受信処理が停止して います。 FIFO がオーバーランしている為、受 信データを取りこぼしている可能性 があります。 キャプチャに敗しまし ドライバ内部でキャプチャ処理に失 た。 敗しています。再オープンするなどし て、再度初期化してください。 キャプチャの停止に失 停止処理が完了していません。 敗しました。 デバイス I/O コントロ ドライバ処理が失敗しています。 ール処理に失敗しまし た。 何かしらの原因で動作 にエラーが発生してい まます。 スーパーインポーズ画 書き込みが完了まで待機してくださ 像書き込み中。 い。 © 2003, 2016 Interface Corporation. All rights reserved. 520 GPC-5520 Help for Windows 4.6 動作仕様 ■ キャプチャ開始、停止 キャプチャ動作は、ImgStartCapture関数実行後、次フレームからのタイミングでキャプチャが開始 されます。(カメラからの同期信号のタイミングでキャプチャが開始されます。) 下図の場合、フレーム(-1)のデータは、キャプチャされず、フレーム①のデータから実際にキャプチ ャされます。 ImgSetEventMask関数で設定する「フレーム転送完了割り込み」とは、図の青い矢印(↓)を表しま す。割り込み発生する時間タイミングは約 33ms毎です。つまり、1 秒間に約 30 フレーム分のデータ をキャプチャします。 ImgStopCapture関数にて、1 フレーム単位での停止を実行した場合、その時のフレーム転送が完了し た時点で停止します。(図の場合、フレーム④の転送が完了した時点で停止します) 約 33ms 約 33ms 約 33ms 約 33ms フレーム フレーム フレーム フレーム フレーム (-1) ① ② ③ ④ 約 33ms フレーム フレーム フレーム (-1) ① ② A フレーム転送完了割り込み発生 ImgStartCaputure 関数 実行 約 33ms ImgStopCaputure 関数実行 © 2003, 2016 Interface Corporation. All rights reserved. 521 ImgStartCaputure 関数 GPC-5520 Help for Windows ■ キャプチャデータの転送(バスマスタ) 画像入力インタフェースモジュールはユーザが指定したバッファ領域に対してバスマスタ転送方 式でキャプチャデータを直接転送します。 ImgStartCapture 関 数 に て フ レ ー ム 転 送 数 を 指 定 す る 事 が 可 能 で す 。 指 定 数 が 0 の 場 合 は 、 ImgStopCapture関数を実行するまで転送します。 ユーザが指定したバッファ領域のサイズが、フレーム転送数分のサイズより小さい場合、リングバッ ファ形式によりバッファ領域の先頭から上書き転送されます。 ※キャプチャ実行中における注意事項 ImgStartCapture関数を呼び出し、キャプチャ(バスマスタ転送)を実行している最 中は、絶対に指定バッファ領域を解放しないでください。 ImgStopCapture関数でキャプチャ停止を行い、ImgGetCaptureStatus関数で、キャプ チャが停止いていることを確認した後、バッファ領域を解放してください。 ■ キャプチャデータの転送(SDRAM) 画像入力インタフェースモジュールは、ImgAllocateSDRAM関数で確保し、ImgSetSDRAM関数にて指 定したSDRAM領域に対してキャプチャデータを転送します。 ImgStartCapture 関 数 に て フ レ ー ム 転 送 数 を 指 定 す る 事 が 可 能 で す 。 指 定 数 が 0 の 場 合 は 、 ImgStopCapture関数を実行するまで転送します。 ユーザが指定した SDRAM 領域のサイズが、フレーム転送数分のサイズより小さい場合、リングバッフ ァ形式により SDRAM 領域の先頭から上書き転送されます。 © 2003, 2016 Interface Corporation. All rights reserved. 522 GPC-5520 Help for Windows ■ SDRAM 使用時における注意(PCI/CTP/CPZ-55x1,55x3 使用時) PCI/CTP/CPZ-55x1,55x3 のキャプチャ操作にあたり、外部から入力したデータの流れは以下のよ うになっています。 PCI I/F 入力チャンネル A カラーフォーマット FIFO 2 値化処理 DMAC D B SDRAM C 重心・面積算出 ※PCI/CTP/CPZ-55x1 には 2 値化処理は含まれません。 経路 A B C D 内容 制御関数 入力データを DMA 転送によりメインメモリへ転送しま ImgSetBuffer ImgStartCapture す。 (DMA 転送によるキャプチャ) 入力データを SDRAM へ転送します。 ImgAllocateSDRAM ImgSetSDRAM (SDRAM へのキャプチャ) ImgStartCapture SDRAM 領域内のデータを取得します。 ImgReadCaptureData SDRAM 領域内のデータを DMA 転送によりメインメモリへ ImgSetBuffer 転送します。 ImgBmCapture (SDRAM データの DMA 転送) ※1 A,B は同時に制御可能。 ※2 D は単独で実行する必要があります。A,B,C の何れとも同時に制御出来ません。 ※3 B,C は同時に制御できません。 © 2003, 2016 Interface Corporation. All rights reserved. 523 PCI Bus GPC-5520 Help for Windows ■ 画像データのフォーマットについて ImgSetBuffer関数(または ImgSetBufferVB関数)にて設定したメモリ領域へ転送される画像データ のフォーマットを説明します。 カラーフォーマットの設定により、データ形式が異なります。 デフォルト設定値は RGB24 bit です。 RGB32bit 形式で動作させた場合、バスマスタ転送中の PCI バス占有率が大きくなるため、動作が不 安定になる可能性がありますので、RGB24bit 形式を推奨します。 Format Pixcel Data bit23~bit16 bit15~bit8 ※1 bit31~bit24 RGB32 予約 R G B RGB24 B1 R0 G0 B0 G2 B2 R1 G1 R3 G3 B3 R2 GRAY8 Y3 Y2 Y1 Y0 RED8 R3 R2 R1 R0 GREEN8 G3 G2 G1 G0 BLUE8 B3 B2 B1 B0 2 値化 BIN3 BIN2 BIN1 BIN0 Format RGB16 ※2 bit31 ~ bit27 R1 bit26 ~ bit21 G1 Format bit31 RGB15 ※1 ※2 ※3 bit7~bit0 ※3 0 bit30 ~ bit26 R1 bit25 ~ bit21 G1 Pixcel Data bit20 bit15 ~ ~ bit16 bit11 B1 R0 Pixcel Data bit20 bit15 ~ bit16 B1 0 bit10 ~ bit5 G0 bit14 ~ bit10 R0 bit4 ~ bit0 B0 bit9 ~ bit5 G0 bit4 ~ bit0 B0 R:赤成分データ G;緑成分データ B:青成分データ Y:輝度データ R1/R0, G1/G0, B1/B0 は、RGB32 のデータに対して上位 5bit(bit7~bit3)のデータ です。 R1/R0, G1/G0, B1/B0 は、RGB32 のデータに対して、R 成分と B 成分は上位 5bit (bit7~bit3)のデータです。G 成分は上位 6bit(bit7~bit2)のデータです。 © 2003, 2016 Interface Corporation. All rights reserved. 524 GPC-5520 Help for Windows ■ 解像度について 解像度を指定するにあたり、キャプチャデータの構造が異なります。 NTSC 対応画像入力製品と PAL 対応画像入力製品では、取り扱い解像度が異なります。 ●最大解像度 NTSC の最大解像度は 640×480 となります。 ・水平ラインデータは、640pixel です。 ・垂直ラインデータは、 ①画像データの奇数フィールド(240 ライン) ②画像データの偶数フィールド(240 ライン) の順番になります。 垂直ラインデータ 水平ラインデータ ライン 1(奇) 1 2 648 639 640 ライン 3(奇) ライン 5(奇) … … ライン 476(偶) ライン 478(偶) ライン 480(偶) PAL の最大解像度は 768×572 となります。 ・水平ラインデータは、768pixel です。 ・垂直ラインデータは、 ①画像データの奇数フィールド(286 ライン) ②画像データの偶数フィールド(286 ライン) の順番になります。 垂直ラインデータ ライン 1(奇) 水平ラインデータ 1 2 766 767 768 ライン 3(奇) ライン 5(奇) … … ライン 568(偶) ライン 570(偶) ライン 572(偶) 例えば、NTSC 製品で「RGB32」(解像度:640×480)のデータは以下のようになっています。 © 2003, 2016 Interface Corporation. All rights reserved. 525 GPC-5520 Help for Windows 640 (pixel) 1 奇数フィールドデータ 240 241 480 (pixel) 偶数フィールドデータ 480 1 (pixel) = 4 byte 奇数フィールドデータと偶数フィールドデータを交互に配置することで、フレームデータとなります。 ライン 1 2 3 4 5 6 7 8 … 479 480 フィールド 奇数フィールドデータ 偶数フィールドデータ 奇数フィールドデータ 偶数フィールドデータ 奇数フィールドデータ 偶数フィールドデータ 奇数フィールドデータ 偶数フィールドデータ … 奇数フィールドデータ 偶数フィールドデータ バッファ内のデータ位置 1 番目 241 番目 2 番目 242 番目 3 番目 243 番目 4 番目 244 番目 … 240 番目 480 番目 © 2003, 2016 Interface Corporation. All rights reserved. 526 GPC-5520 Help for Windows ●1/2 解像度 NTSC の 1/2 解像度は 320×240 となります。 ・水平ラインデータは、解像度 640×480 の 1 フレームデータを 1pixel おきに間引いたデータです。 ・垂直ラインデータは、解像度 640×480 の 1 フレームデータを 1 ラインおきに間引いたデータです。 (奇数フィールドラインデータをメインメモリへ転送します。) 垂直ラインデータ ライン 1 水平ラインデータ 1 3 635 637 639 ライン 3 ライン 5 … … ライン 475 ライン 477 ライン 479 PAL の 1/2 解像度は 384×286 となります。 ・水平ラインデータは、解像度 768×572 の 1 フレームデータを 1pixel おきに間引いたデータです。 ・垂直ラインデータは、解像度 768×572 の 1 フレームデータを 1 ラインおきに間引いたデータです。 (奇数フィールドラインデータをメインメモリへ転送します。) 垂直ラインデータ ライン 1 水平ラインデータ 1 3 763 765 767 ライン 3 ライン 5 … … ライン 567 ライン 569 ライン 571 © 2003, 2016 Interface Corporation. All rights reserved. 527 GPC-5520 Help for Windows ●1/4 解像度 NTSC の 1/4 解像度は 160×120 となります。 ・水平ラインデータは、解像度 320×240 の 1 フレームデータをさらに 1pixel おきに間引いたデータ です。 ・垂直ラインデータは、解像度 320×240 の 1 フレームデータをさらに 1 ラインおきに間引いたデー タです。 垂直ラインデータ ライン 1 水平ラインデータ 1 5 629 633 637 ライン 5 ライン 9 … … ライン 469 ライン 473 ライン 477 PAL の 1/2 解像度は 192×143 となります。 ・水平ラインデータは、解像度 384×286 の 1 フレームデータをさらに 1pixel おきに間引いたデータ です。 ・垂直ラインデータは、解像度 384×286 の 1 フレームデータをさらに 1 ラインおきに間引いたデー タです。 垂直ラインデータ ライン 1 水平ラインデータ 1 757 5 761 ライン 5 ライン 9 … … ライン 571 ライン 575 ライン 579 © 2003, 2016 Interface Corporation. All rights reserved. 528 765 GPC-5520 Help for Windows ■ フレームサイズについて 1 フレームのサイズは、カラーフォーマット、解像度の設定によって以下のようになっています。 フレームサイズ(byte) = 1 ラインの Pixel 数 × 垂直ライン数 × 1pixel のバイト数 NTSC 製品 Format RGB32 RGB24 RGB15 GRAY8 RED8 GREEN8 BLUE8 2 値化 640×480 640×480×4 = 1228800 640×480×3 = 921600 640×480×2 = 614400 640×480×1 = 307200 640×480×1 = 307200 640×480×1 = 307200 640×480×1 = 307200 640×480×1 = 307200 320×240 320×240×4 = 307200 320×240×3 = 230400 320×240×2 = 153600 320×240×1 = 76800 320×240×1 = 76800 320×240×1 = 76800 320×240×1 = 76800 320×240×1 = 76800 160×120 160×120×4 = 76800 160×120×3 = 57600 160×120×2 = 38400 160×120×1 = 19200 160×120×1 = 19200 160×120×1 = 19200 160×120×1 = 19200 160×120×1 = 19200 PAL 製品 Format RGB32 RGB24 RGB15 GRAY8 RED8 GREEN8 BLUE8 768×572 768×572×4 = 1757184 768×572×3 = 1317888 768×572×2 = 878592 768×572×1 = 439296 768×572×1 = 439296 768×572×1 = 439296 768×572×1 = 439296 384×286 384×286×4 = 439296 384×286×3 = 329472 384×286×2 = 219648 384×286×1 = 109824 384×286×1 = 109824 384×286×1 = 109824 384×286×1 = 109824 192×143 192×143×4 = 109824 192×143×3 = 82368 192×143×2 = 54912 192×143×1 = 27456 192×143×1 = 27456 192×143×1 = 27456 192×143×1 = 27456 ■ 確保するバッファのサイズの制限について ImgSetBuffer関数(または ImgSetBufferVB関数)で指定するバッファサイズには制限があります。 (x86 環境の場合) 最大 63.97MB まで。 (x64 環境の場合) 最大 256MB まで。 ※ Windows Xp/Server2003 の 64bitOS の場合は約 32MB まで。 © 2003, 2016 Interface Corporation. All rights reserved. 529 GPC-5520 Help for Windows ■ 2 値画像処理とキャプチャ処理 二値画像処理機能対応の画像入力インタフェースモジュールの操作にあたり、二値画像処理とキャ プチャ処理の方法を説明します。 ① PCI/CTP/CPZ-55x2、CBI/CSI/PEX/LPC-530215 の場合 ImgSetBinarizationConfig 関数 2 値化演算処理 面積値 重心値 ImgSetEventMask 関数 トリガ割り込みの設定 色成分の選択 NTSC 信号入力 2 値化処理 面積トリガ割り込み R/G/B/Y Video Decoder ImgGetMeasurementValue 関数 ImgSetTriggerConfig 関数 重心トリガ割り込み RGB24 カラー 面積 AND 重心トリガ割り込み CN ImgGetCaotureStatus 関数 トリガステータスの取得 2 値化データ 面積トリガステータス 重心トリガステータス 面積 AND 重心トリガステータス データフォーマット選択 DMA 転送 制御 画像データ RGB カラー カラー画像 RGB32/24/16/15bit GRAY8bit(Y) R 8bit G 8bit B 8bit キャプチャデータ 格納バッファ領域 ImgSetBuffer 関数 格納バッファ領域の指定 2 値画像 2 値化データ 8bit ② PCI/CTP/CPZ-55x3 の場合 ImgSetBinarizationConfig 関数 2 値化演算処理 面積値 重心値 ImgSetEventMask 関数 トリガ割り込みの設定 色成分の選択 NTSC 信号入力 2 値化処理 面積トリガ割り込み R/G/B/Y Video Decoder ImgGetMeasurementValue 関数 ImgSetTriggerConfig 関数 重心トリガ割り込み RGB24 カラー 面積 AND 重心トリガ割り込み CN トリガステータスの取得 2 値化データ ImgGetCaotureStatus 関数 面積トリガステータス 重心トリガステータス 面積 AND 重心トリガステータス データフォーマット選択 DMA 転送 制御 画像データ RGB カラー カラー画像 RGB32/24/16/15bit GRAY8bit(Y) R 8bit G 8bit B 8bit 2 値画像 2 値化データ 8bit 格納バッファ領域 ImgSetBuffer 関数 格納バッファ領域の指定 ImgAllocateSDRAM 関数 SDRAM 転送 制御 ImgSetSDRAM 関数 SDRAM 領域の指定 ③ PCI/CTP/CPZ-55x4 の場合 © 2003, 2016 Interface Corporation. All rights reserved. 530 キャプチャデータ キャプチャデータ SDRAM 領域 GPC-5520 Help for Windows ImgSetBinarizationConfig 関数 2 値化演算処理 面積値 フェレ径 重心値 慣性等価楕円の傾き角 ImgSetEventMask 関数 トリガ割り込みの設定 色成分の選択 NTSC 信号入力 2 値化処理 面積トリガ割り込み R/G/B/Y Video Decoder ImgGetMeasurementValue 関数 ImgSetTriggerConfig 関数 重心トリガ割り込み RGB24 カラー 面積 AND 重心トリガ割り込み CN 2 値化データ ImgGetCaotureStatus 関数 トリガステータスの取得 面積トリガステータス 重心トリガステータス 面積 AND 重心トリガステータス データフォーマット選択 DMA 転送 制御 画像データ RGB カラー カラー画像 RGB32/24/16/15bit GRAY8bit(Y) R 8bit G 8bit B 8bit キャプチャデータ 格納バッファ領域 ImgSetBuffer 関数 格納バッファ領域の指定 2 値画像 2 値化データ 8bit 画像処理データ 濃度分布データ 射影データ 【バスマスタによるキャプチャの設定】 キャプチャ可能なデータは、RGB/GRAY データ、2 値化処理データのどちらか一方です。 ImgSetBuffer関数(または ImgSetBufferVB関数)で、転送先バッファを設定します。 また、2 値化処理データをキャプチャする場合、ImgSetBinarizationConfig関数で設定した色成分で 処理したデータをキャプチャします。 【SDRAM によるキャプチャの設定】 キャプチャ可能なデータは、RGB/GRAY データ、2 値化処理データのどちらか一方です。 ImgAllocateSDRAM関数でSDRAM領域を確保して、ImgSetSDRAM関数でキャプチャしたい領域を指定しま す。 また、2 値化処理データをキャプチャする場合、ImgSetBinarizationConfig関数で設定した色成分で 処理したデータをキャプチャします。 ※バスマスタ、SDRAM を同時にキャプチャする際は必ず、同じキャプチャモードを選択してください。 © 2003, 2016 Interface Corporation. All rights reserved. 531 GPC-5520 Help for Windows 【2 値化処理の設定】 しきい値、2 値化対象色成分の選択などの 2 値化処理の設定は ImgSetBinarizationConfig関数で実 行します。 2 値化は、8bit のデータに対し、しきい値を設定して行います。 しきい値には、上限値と下限値の2つを設定します。 しきい値 A 2 値化結果は、上限値と下限値の間が「白(データ FFh)」、それ以 外が「黒(データ 00h)」となります。 ( IMGBINCONFIG 構 造 体 の メ ン バ 変 数 dwBinarizationMode に IFIMG_BINMOED_REVERSAL を指定する事により、白黒の反転を行う ことができます。) しきい値 B 上限閾値を A 、下限閾値を B に設定した場合 しきい値(上限) しきい値 255 上限 A 黒(データ 00h) しきい値(下限) 白(データ FFh) 下限 B 黒(データ 00h) 2値化結果 0 通常しきい値を 1 つだけ使用するときは、上限値を「255」にして下限値のみを調整します。 上限閾値を 255, 下限閾値を B とした場合 上限閾値を 255、下限閾値を A とした場合 しきい値 しきい値 255 255 下限 A B 白(データ FFh) A 白(データ FFh) 下限 B 黒(データ 00h) 黒(データ 00h) 0 0 本製品は 2 値化処理した画像データから、面積値と重心値を求めています。 © 2003, 2016 Interface Corporation. All rights reserved. 532 GPC-5520 Help for Windows 【測定範囲の指定】 面積値、重心値は、カメラなどの機器より取り込んだフレームデータに対して 2 値化処理を行い。 処理データに対して、測定します。 ImgSetMeasurementRange関数で、フレーム内の測定範囲を指定します。 (0,0) dwXLength ↓dwStartingPointX dwStartingPointY→ dwYLength 対象物体 測定エリア (639,479) 【2 値画像処理結果の取得】 ImgGetMeasurementValue関数、ImgGetMeasurementValueEx関数で、測定対象物の 2 値画像処理結果を 取得します。 フレーム フレーム n-2 n-1 フレーム n キャプチャ中のフレーム ImgGetMeasurementValue 実行 フレーム(n-1)に対するする 2 値画像処理結果を取得します また、ImgStartCapture関数で、実際にキャプチャを実行してない場合でも、映像入力機器からのフ レームデータに対する面積値、重心値を取得することが可能です。 © 2003, 2016 Interface Corporation. All rights reserved. 533 GPC-5520 Help for Windows 【トリガの設定】 ImgSetTriggerConfig関数で、トリガ発生の有効/無効の設定と発生条件の設定を行います。無効に設 定すると、トリガは発生しません。 トリガ発生の有無は ImgGetCaptureStatus関数,または ImgGetCaptureStatusEx関数でトリガ状態の 取得、またはトリガ発生による割り込みイベントで確認することができます。 【トリガ発生割り込み】 トリガ発生による割り込み通知の有効/無効は ImgSetEventMask関数で設定します。 割り込み通知が無効な状態でも、ImgSetTriggerConfig関数でトリガが有効に設定している場合はト リガ自身は動作しています。この場合、ImgGetCaptureStatus関数でトリガ発生の有無を確認するこ とが可能です。 【トリガ発生タイミング】 トリガ発生の有無は ImgGetCaptureStatus関数,または ImgGetCaptureStatusEx関数で取得する IMGCAPSTATUS構造体またはIMGCAPSTATUSEX構造体のメンバ変数dwTriggerで確認します。 この dwTrigger の更新のタイミングは 1 フレーム転送完了割り込みマスクとトリガ発生割り込みマス ク状態の有無により、異なります。 トリガ発生 割り込み マスク アンマスク 1 フレーム転送完了割り込み マスク アンマスク タイミング①参照 タイミング②参照 タイミング③参照 (タイミング①) ImgGetCaptureStatus関数,または ImgGetCaptureStatusEx関数が実行されるまで、dwTrigerの状態は 保持されたままです。 約 33ms 約 33ms 約 33ms 約 33ms トリガ dwTrogger 内のフラグ ImgGetCaptureStatus 関数(ImgGetCaptureStatusEX 関数)を実 行された場合フラグがクリアされます。 何時の状態のトリガ状態なのか、知ることが出来ない可能性があり ます。 (タイミング②) © 2003, 2016 Interface Corporation. All rights reserved. 534 約 33ms GPC-5520 Help for Windows トリガ発生した同じタイミングで割り込みイベントが通知されます。 ただし、ImgGetCaptureStatus関数,または ImgGetCaptureStatusEx関数が実行されるまで、dwTriger の状態はそのまま保持されたままです。 約 33ms 約 33ms 約 33ms 約 33ms 約 33ms トリガ dwTrogger 内のフラグ トリガ発生割り込みイベントは ImgGetCaptureStatus 関数(ImgGetCaptureStatusEX 関数) トリガ発生時と同じタイミング で dwTrigger を読み出した場合、フラグはクリアされます。 で発生します。 (タイミング③) 1 フレーム転送完了割り込みと同じタイミングで、トリガ発生イベントが通知されます。 約 33ms 約 33ms 約 33ms 約 33ms 約 33ms トリガ dwTrogger 内のフラグ トリガ発生割り込みイベントは 1 フレーム転送完了の割り込みタイ ImgGetCaptureStatus 関数 1 フレーム転送完了割り込みと ミングで dwTrigger 内のフラグも更 (ImgGetCaptureStatusEX 関数)で 同じタイミングで発生します。 新します。 dwTrigger を読み出した場合、フラ グはクリアされます。 ■ 2 値画像処理機能の説明 ① 面積値 測定エリア内の有効画素数をカウントすることで、注目する対象物体の面積 S を求めます。 面積 S の最大値は、307,200(=640×480)です。 © 2003, 2016 Interface Corporation. All rights reserved. 535 GPC-5520 Help for Windows X 面積 S Y 測定エリア ② 重心値 測定エリア内の有効画素の各座標値を順次加算し(Σx,Σy)、それを面積 S で除算すると、重心 座標(XG,YG)が求められます。 X 重心座標(Xg,Yg) Y 測定エリア ③ フェレ径 測定エリア内の対象物体を水平線と垂直線で囲んだときの最小長方形を外接長方形といい、外接長 方形の水平辺および垂直辺の長さをフェレ径といいます。 最小矩形の最小 X 座標(XMIN)、最大 X 座標(XMAX)、最小 Y 座標(YMIN)、最大 Y 座標(YMAX)と、水平 方向の長さ(FeretH)と垂直方向の長さ(FeretV)を求めます。 外接長方形の辺は対象物体上にあります。 XMIN XMAX X FeretH YMIN FeretV YMAX Y 測定エリア ④ 慣性等価楕円の傾き角 測定エリア内における対象物体の慣性等価楕円の長軸とX軸が交わる角度をθとします。 本ドライバソフトウェアはθを-π/2~π/2 の範囲で出力します。 θは原点が左上の画像座標系による傾きです。時計回りは正の向きとなります。 © 2003, 2016 Interface Corporation. All rights reserved. 536 GPC-5520 Help for Windows 傾き角θ X θ 慣性等価楕円 長軸 Y 測定エリア ⑤ 濃度分布 測定エリア内での各濃度値の画素数を求めます。 指定した色成分に対する濃度値 0~255 の各画素数を取得します。 指定できる色成分は R 成分、G 成分、B 成分、輝度成分です。 画素数 0 255 ⑥ 射影 測定エリア内の対象物体の座標値を X 座標および Y 座標ごとに画素数をカウントしたものです。 測定エリア以外の座標値の画素数は全て 0 となります。 0 X 測定エリア 479 Y 0 639 © 2003, 2016 Interface Corporation. All rights reserved. 537 GPC-5520 Help for Windows ■ 画像処理データの取得方法 (CTP/CPZ/PCI-5524,5525,5534,5535 使用時) CTP/CPZ/PCI-5524,5525,5534,5535 での画像処理結果の取得方法は以下のようになります。 画像処理 取得方法 濃度分布 バスマスタ転送方式による指定バッファへの直接転送 射影 バスマスタ転送方式による指定バッファへの直接転送 面積 ImgGetMeasurementValueEx 関数で取得 重心 ImgGetMeasurementValueEx 関数で取得 フェレ径 ImgGetMeasurementValueEx 関数で取得 慣性等価楕円の傾き角 ImgGetMeasurementValueEx 関数で取得 濃度分布データと射影データは、ImgSetBuffer 関数で指定したバッファ領域に対してバスマスタ 転送によって取得します。キャプチャ処理と同様の制御です。 バスマスタ転送後のデータ配置を以下に示します。 (濃度分布のデータ配置) サイズ Data bit31~bit24 1024byte bit23~bit16 bit7~bit0 1 フレーム目 濃度値 0 の画素数 : : 1 フレーム目 濃度値 255 の画素数 : : 未使用領域 : : 1024byte bit15~bit8 N フレーム目 濃度値 0 の画素数 : : N フレーム目 濃度値 255 の画素数 未使用領域 (射影のデータ配置) サイズ Data bit31~bit24 1 フレーム目 1 フレーム目 2560byte 1 フレーム目 bit23~bit16 bit15~bit8 Y 座標 0 の画素数 Y 座標 1 の画素数 : Y 座標 479 の画素数 1 フレーム目 1 フレーム目 1 フレーム目 1 フレーム目 未使用領域(無効データ) 1 フレーム目 : : X 座標 0 の画素数 X 座標 1 の画素数 : X 座標 479 の画素数 X 座標 480 の画素数 : X 座標 640 の画素数 : : N フレーム目 N フレーム目 2560byte bit7~bit0 N フレーム目 Y 座標 0 の画素数 Y 座標 1 の画素数 : Y 座標 479 の画素数 N フレーム目 N フレーム目 N フレーム目 N フレーム目 未使用領域(無効データ) N フレーム目 X 座標 0 の画素数 X 座標 1 の画素数 : X 座標 479 の画素数 X 座標 480 の画素数 : X 座標 640 の画素数 ※測定エリア外の座標の射影データは 0 データとなります。 キャプチャ処理と併用して取得する場合、濃度分布と射影データは画像データの後部に配置されます。 © 2003, 2016 Interface Corporation. All rights reserved. 538 GPC-5520 Help for Windows Data bit31~bit24 bit23~bit16 bit15~bit8 bit7~bit0 1 フレーム目の画像データ 1 フレーム目:濃度値 0 の画素数 : 未使用領域 1 フレーム目 1 フレーム目 1 フレーム目 Y 座標 0 の画素数 Y 座標 1 の画素数 : Y 座標 479 の画素数 未使用領域(無効データ) 1 フレーム目:濃度値 255 の画素数 1 フレーム目 X 座標 0 の画素数 1 フレーム目 X 座標 1 の画素数 : 1 フレーム目 X 座標 479 の画素数 1 フレーム目 X 座標 480 の画素数 : 1 フレーム目 X 座標 640 の画素数 : : N フレーム目の画像データ N フレーム目 濃度値 0 の画素数 : 未使用領域 N フレーム目 N フレーム目 N フレーム目 Y 座標 0 の画素数 Y 座標 1 の画素数 : Y 座標 479 の画素数 未使用領域(無効データ) N フレーム目 濃度値 255 の画素数 N フレーム目 X 座標 0 の画素数 N フレーム目 X 座標 1 の画素数 : N フレーム目 X 座標 479 の画素数 N フレーム目 X 座標 480 の画素数 : N フレーム目 X 座標 640 の画素数 © 2003, 2016 Interface Corporation. All rights reserved. 539 GPC-5520 Help for Windows ■ 画像変換機能の説明(CTP/CPZ/PCI-5525,5535) PCI/CPZ-55x5 の画像処理機能のブロック図と各画像処理の処理内容を説明します。 ImgSetLUT 関数 データフォーマット選択 NTSC 信号入力 指定バッファ領域 画像データ Video Decoder RGB24 カラー 階調変換 RGB24 カラー CN カラー画像 RGB32/24/16/15bit GRAY8bit(Y) R 8bit/ G 8bit/ B 8bit 2 値画像 2 値化データ 8bit フィルタデータ ImgSetBuffer 関数 フィルタデータ 8bit 画像処理データ 濃度分布データ 射影データ 指定バッファ領域と カラーフォーマットの指定 2 値化データ 2 値化演算処理 フィルタ処理 色成分の選択 2 値化処理 膨張・収縮 R/G/B/Y 面積値 フェレ径 重心値 慣性等価楕円の傾き角 トリガ割り込みの設定 面積トリガ割り込み ImgSetFilter 関数 ImgSetColorgredient 関数 ImgGetMeasurementValue 関数 ImgSetEventMask 関数 ImgSetTriggerConfig 関数 重心トリガ割り込み ImgSetDil_Er 関数 面積 AND 重心トリガ割り込み トリガステータスの取得 ImgSetBinarizationConfig 関数 ImgGetCaotureStatus 関数 面積トリガステータス 重心トリガステータス 面積 AND 重心トリガステータス カメラから得られたRGB24bitカラー(もしくはモノクロ 8bit)の画像データは、ImgSetLUT関数で設定 した階調変換テーブルデータを元に階調変換されます。 その後、ImgSetColorIngredient関数で指定した色成分の画像データは、フィルタ処理、2 値化、膨 張・収縮処理の順番で画像処理されます。 フ ィ ル タ 処理 は ImgSetFilter関 数で 設 定 し たフ ィ ル タ 係数 で 処 理 しま す 。 膨 張・ 収 縮 処 理は ImgSetDil_Er関数で設定した条件で処理します。 変換処理後の画像を元に、面積値、重心値、フェレ径、慣性等価楕円の傾き角、射影の算出を行ない ます。 階調変換、フィルタ、膨張・収縮処理の有効と無効の選択は ImgSetConversionConfig関数で行ないま す。 変換処理後の画像をキャプチャする場合、ImgSetBuffer関数(ImgSetBufferVB関数)でキャプチャした い画像を選択する事ができます。 階調変換画像をキャプチャする場合は、通常のカラーモード(もしくはモノクロ)を指定します。 フィルタ処理後の画像をキャプチャしたい場合は、IFIMG_COLOR_FIL8 を指定します。 膨張・収縮処理後の画像をキャプチャしたい場合は、2 値画像モードを指定します。 © 2003, 2016 Interface Corporation. All rights reserved. 540 GPC-5520 Help for Windows 本製品は、ImgSetConversionConfig関数で階調変換、フィルタ、膨張・収縮処理を組み合わせて、画 像をキャプチャしたり画像処理する事ができますが、以下の条件に限られます。 ImgSetConversinConfig 関数の 有効設定 階調変換 フィルタ 膨張・収縮 ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ キャプチャ出来る画像 RGB 全般 ○ ○ × × × × × × GRAY8 ○ ○ × × × × × × 2値 ○ ○ × ○ ○ ○ ○ ○ フィルタ × × ○ × × ○ × × 2 値画像処理 ※ 濃度分布 ○ ○ ○ ○ ○ ○ ○ ○ ○ ○※ ○ × × ○※ × × ※ 2 値画像をキャプチャする場合は動作保証外です。フィルタ画像をキャプチャする場合は、フィル タ画像に対する濃度分布処理となります。 フィルタ処理または膨張・収縮処理を有効にした場合、処理時間は約 2 フレーム分時間を費やします。 キャプチャされる画像はカメラから取り込んだタイミングから 2 フレーム分遅れて転送される事に なります。 © 2003, 2016 Interface Corporation. All rights reserved. 541 GPC-5520 Help for Windows 画像変換機能の詳細に関して以下に説明します。 ① 階調変換 IMGLUTINFO 構造体にて R 成分、G 成分、B 成分の階調変換テーブルを設定します。 各色のテーブル(LUT)には 256 階調の 8bit データを格納します。 GRAY8bit 画像の階調変換を行なう場合、G 成分の LUT を使用してください。 インタフェースモジュールは R,G,B の各 8bit、またはモノクロ 8bit の画像データの値に相当する テーブル番地に格納している値を参照することで階調変換を行ないます。 R 成分 G 成分 B 成分 : : : : 0x10 : 0xFF : : : : : 0xDA : : : : : : : 0x20 : : : 元画素データ R G B 0x10 0x25 0xDF 0x25 : 0xDF : 変換後画素データ R G B 0xDA 0xFF 0x20 ② 3×3 空間フィルタ 注目する画素とその周囲 8 画素の 3×3 領域に対して、IMGFILTER 構造体で定義したフィルタ係数 を掛け合わせ、その総和を注目画素のフィルタ処理結果とします。 フィルタ係数は、-15~15 までの任意の整数を割り当てることが可能です。 フィルタ処理結果が 0 以下のときは 0,255 以上のときは 255 とします。 ・ 0 1 0 1 -4 1 0 1 0 (0×0xC3) + (1×0xCF) + (0×0xC9) + (1×0xC4)+ (-4×0xFF) + (1×0xCE) + (0×0xC0) + (1×0xC4) + (0×0xFF) = 0xD7 3×3 空間フィルタ係数 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 0xC3 0xCF 0xC9 ・ ・ ・ ・ ・ ・ ・ 0xC4 0xFF 0xCE ・ ・ ・ 0xD7 ・ ・ ・ 0xC0 0xC4 0xFF ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 元画素データ フィルタ処理後データ © 2003, 2016 Interface Corporation. All rights reserved. 542 GPC-5520 Help for Windows 画像の四隅または辺の画素に対するフィルタ処理は、近傍のデータを 0x00 として計算します。 0 1 0 1 -4 1 0 1 0 (0×0x00) + (1×0x00) + (0×0x00) + (1×0x00)+ (-4×0x3F) + (1×0xCE) + (0×0x00) + (1×0xC4) + (0×0xFF) = 0x93 3×3 空間フィルタ係数 0x00 0x00 0x00 0x00 0x3F 0xCE ・ ・ 0x93 ・ ・ ・ 0x00 0xC4 0xFF ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 元画素データ(端の画素) フィルタ処理後データ ③ 3×3 差分型エッジ検出フィルタ 注目する画素とその周囲 8 画素の 3×3 領域に対して、IMGFILTER 構造体で定義したx方向フィル タ係数で掛け合わせた結果 fx と、y 方向フィルタ係数で掛け合わせた結果 fy とします。 フィルタの計算方法は 3×3 空間フィルタと同様です。 |fx|+|fy|が注目画素の処理結果となります。|fx|+|fy|が 255 以上のときは 255 とします。 各フィルタ係数は、-15~15 までの任意の整数を割り当てることが可能です。重み係数の設定次 第で、Roberts, Prewitt, Sobel といったエッジ検出オペレータや、独自のフィルタを構成する事が できます。 ・ -1 0 1 -1 -2 -1 -2 0 2 0 0 0 -1 0 1 1 2 fx = (-1×0xC3)+(0×0xCF)+(1×0xC9) +(-2×0xC4)+(0×0xFF)+(2×0xCE) +(-1×0xC0)+(0×0xC4)+(1×0xFF) = 0x59 1 fy = (-1×0xC3)+(-2×0xCF)+(-1×0xC9) Y 方向フィルタ係数 X 方向フィルタ係数 +(0×0xC4)+(0×0xFF)+(0×0xCE) +(1×0xC0)+(2×0xC4)+(1×0xFF) = 0x1D f = fx+fy = 0x59+0x1D = 0x76 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 0xC3 0xCF 0xC9 ・ ・ ・ ・ ・ ・ ・ 0xC4 0xFF 0xCE ・ ・ ・ 0x76 ・ ・ ・ 0xC0 0xC4 0xFF ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 元画素データ フィルタ処理後データ © 2003, 2016 Interface Corporation. All rights reserved. 543 GPC-5520 Help for Windows ④ 膨張・収縮 2 値化された画像に対して、膨張・収縮処理を行ないます。 膨張処理は、注目画素の近傍に一つでも 0xFF(白)の画素データがあれば、注目画素データは 0xFF になります。逆に収縮処理は、注目画素の近傍に一つでも 0x00(黒)の画素データがあれば、注目 画素データは 0x00 になります。 この処理は、全画素(640×480)エリアに対して行ないます。 近傍の設定は 8 連結(周囲 8 画素)または 4 連結(上下左右 4 画素)の 2 通りを選択できます。 膨張・収縮処理後の画像は更にフィードバックすることができ、最大 8 回まで可能です。 IMGDILATE_ERODE 構造体でフィードバック条件を設定します。 フィードバック回数と各フィードバックに対する膨張・収縮の選択、そして近傍の設定を行なう事 ができます。 © 2003, 2016 Interface Corporation. All rights reserved. 544 GPC-5520 Help for Windows ■ ラベリング機能の説明(CTP/CPZ/PCI-5526,5536) PCI/CPZ-55x6 の画像処理機能のブロック図と各画像処理の処理内容を説明します。 ImgSetLUT 関数 データフォーマット選択 NTSC 信号入力 指定バッファ領域 画像データ Video Decoder RGB24 カラー RGB24 カラー 階調変換 CN カラー画像 RGB32/24/16/15bit GRAY8bit(Y) R 8bit/ G 8bit/ B 8bit ImgSetBuffer 関数 指定バッファ領域と カラーフォーマットの指定 2 値画像 8bit フィルタ画像 8bit フィルタデータ ラベリング画像 8bit 画像処理データ 濃度分布データ 射影データ 2 値化データ 2 値化演算処理 色成分選択 フィルタ 2 値化 膨張・収縮 ラベリング 面積値 重心値 フェレ径 トリガ割り込みの設定 ImgSetFilter 関数 ImgSetDil_Er 関数 ImgGetMeasurementValueEx 関数 慣性等価楕円の傾き角 面積トリガ割り込み ImgSetEventMask 関数 ImgSetTriggerConfig 関数 重心トリガ割り込み 面積 AND 重心トリガ割り込み ImgSetColorgredient 関数 ImgSetBinarizationConfig 関数 トリガステータスの取得 ImgGetCaotureStatus 関数 面積トリガステータス ImgSetLabelingConfig 関数 重心トリガステータス 面積 AND 重心トリガステータス ラベリング画像の演算処理 面積値 ImgGetMeasurementValueLBL 関数 フェレ径 重心値 慣性等価楕円の傾き角 ラベリングは 2 値化された画像データに対して処理されます。 ラベリング処理後の画像をキャプチャする場合、ImgSetBuffer関数(ImgSetBufferVB関数)の識別子を IFIMG_COLOR_LABEL8 に指定します。 ImgSetLabelingConfig関数で 4 連結と 8 連結の選択が可能です。 ラベリング画像のキャプチャと同時に、ラベル数と各ブロックの面積値、重心値、フェレ径、慣性等 価楕円の傾き角を得ることができます。 ImgSetBuffer関数(ImgSetBufferVB関数)のdwBufferFormat引数にIFIMG_COLOR_LABEL8 識別子と同時 に必要な画像処理識別子を指定します。 キャプチャが完了したら、ImgGetMeasurementValueLBL関数にて取得する事ができます。 また、測定エリア指定による 2 値画像処理も並行して行なう事ができます。 © 2003, 2016 Interface Corporation. All rights reserved. 545 GPC-5520 Help for Windows ■ キャプチャモード IMGCAPCONFIG 構造体のメンバ変数、dwMode を設定することにより、フレームの間引きによるキャ プチャや、チャンネル切り換えによるキャプチャを実行します。 この機能はバスマスタ転送時のみ有効です。SDRAM 転送時には反映されません。 ①タイマ周期による、1 フレーム毎のキャプチャ(1Ch 使用時限定) IMGCAPCONFIG 構造体のメンバ変数 dwMode に「IFIMG_CAPTURE_TIMER」を設定します。 IMGCAPCONFIG 構造体のメンバ変数の dwTimerCycle の間隔で 1 フレーム毎キャプチャします。ただし、 誤差として 0~+約 33ms 程度の誤差を生じます。 また、タイマ周期は約 66ms 以上を設定してください。 T(ms) T(ms) 約 33ms T(ms) 約 33ms 約 33ms フレーム Cnt= フレーム Cnt= フレーム Cnt= (-1) 1 (-1) 2 (-1) 3 ImgStartCaputure 関数 キャプチャ再スタート キャプチャ再スタート ↓ Cnt T :1 フレーム転送完了割り込み :IMGCAPSTATUS 構造体の dwFrameCnt の値 :IMGCAPCONFIG 構造体の dwTimerCycle の値 ②フレーム間引きによる、1 フレーム毎のキャプチャ(1Ch 使用時限定) IMGCAPCONFIG 構造体のメンバ変数 dwMode に「IFIMG_CAPTURE_THINOUT」を設定します。 IMGCAPCONFIG 構造体のメンバ変数 dwThinFrameCnt にフレーム数(N)を設定すると、N フレームに一回 のキャプチャを実行します。 約 33m s 約 33m s 約 33m s 約 33ms 約 33ms 約 33m s フレーム Cnt = Cnt = Cnt = Cnt = Cnt = Cnt = Cnt = (-1) 1 2 N N +1 N +2 2N 2N +1 ImgStartCaputure 関 数 ↓ Cnt N 約 33m s : 1 フレーム転送完了 割 り込み : IMGCAPSTATUS 構造 体の dwFrameCnt の値 : IMGCAPCONFIG 構造体の dwThinFrameCnt の 値 ImgSetBuffer関数(または ImgSetBufferVB関数)で設定したバッファ領域に間引きしたフレームデ ータが転送されます。 上図の場合、1、N+1,2N+1…のフレームデータがバッファ領域に転送されます。 © 2003, 2016 Interface Corporation. All rights reserved. 546 GPC-5520 Help for Windows ③ 指定フレーム数毎によるチャンネル切り換え (多 Ch 使用時限定) IMGCAPCONFIG 構造体のメンバ変数 dwMode に「IFIMG_CAPTURE_CH_FRAME」を設定します。 IMGCAPCONFIG 構造体のメンバ変数 dwChFrameCnt にフレーム数(N)を設定すると、N フレーム分キャプ チャしたタイミングで、チャンネルを切り換えます。 ドライバ内部が切り換え処理を行い、2 フレーム分間隔をとってキャプチャを開始するため、各チャ ンネルの最初の 2~3 フレーム分はキャプチャされません。 ハードウェアが、チャンネルを切り換えて正常にキャプチャできるようになるには、約 2 フレーム分 の時間間隔を要する為です。 33ms ↓ チャ ン ネル A Cnt Cnt = Cnt = Cnt = Cnt = Cnt = Cnt = ( -1) ( -1) (-1) 1 2 N N : 1 フレ ーム転送 完了 割り込み : IMGCAPSTATUS 構造体の dwFrameCnt の値 : IMGCAPCONFIG 構造 体の dwChFrameCnt の 値 チ ャン ネル設 定間隔 チ ャ ンネル B ImgStartCaputure 関数 Cnt = Cnt = Cnt = Cnt = Cnt = Cnt = ( -1) ( -1) ( -1) 1 2 N チ ャン ネル 設定間 隔 チ ャ ンネル C Cnt = Cnt = Cnt = Cnt = Cnt = Cnt = ( -1) ( -1) (-1) 1 2 N チ ャン ネル設 定間隔 チ ャン ネル の切 り換 え処 理 © 2003, 2016 Interface Corporation. All rights reserved. 547 GPC-5520 Help for Windows ④ タイマ周期によるチャンネル切り換え (多 Ch 使用時限定) IMGCAPCONFIG 構造体のメンバ変数 dwMode に「IFIMG_CAPTURE_CH_TIMER」を設定します。 IMGCAPCONFIG 構造体のメンバ変数 dwTimerCycle に設定したタイマ周期で、チャンネルを切り換え処 理を行います。 IMGCAPCONFIG 構造体のメンバ変数 dwChFrameCnt にフレーム数(N)を設定すると、1 チャンネル当たり N フレームキャプチャします。ただし、ドライバ内部が切り換え処理を行い、2 フレーム分間隔をと ってキャプチャを開始するため、各チャンネルの最初の 2~3 フレーム分はキャプチャされません。 ハードウェアが、チャンネルを切り換えて正常にキャプチャできるように約 2 フレーム分の時間間隔 を要する為です。 よって、dwTimerCycle 設定するタイマ周期値 T は以下のようになります。 T(ms) > (N + 3) × 約 33ms T(ms) 33ms チ ャン ネル A ↓ :1 フレーム転送完了割り込み T :IMGCAPCONFIG 構造体の dwTimerCycle の値 Cnt Cnt = Cnt = Cnt = Cnt = Cnt = Cnt = (-1) (-1) (-1) 1 2 N N :IMGCAPSTATUS 構造体の dwFrameCnt の値 :IMGCAPCONFIG 構造体の dwChFrameCnt の値 T(ms) チャ ン ネル 設定間 隔 チ ャン ネル B T(ms) Cnt = Cnt = Cnt = Cnt = Cnt = Cnt = (-1) (-1) (-1) 1 2 N チ ャン ネル 設定間隔 チ ャン ネル C ImgStartCaputure 関数 Cnt = Cnt = Cnt = Cnt = Cnt = Cnt = (-1) (-1) (-1) 1 2 N チ ャン ネル 設定間隔 チャンネルの切り換え処理 © 2003, 2016 Interface Corporation. All rights reserved. 548 GPC-5520 Help for Windows 複数チャンネル使用時の転送先バッファ内のデータの配置は下図のようになります。 データの並びは、dwChangepattern[5]の設定したチャンネルの順番です。 例)dwChangepattern 配列に IFIMG_CHANNEL_CN1、IFIMG_CHANNEL_CN4、IFIMG_CHANNEL_CN5 の順番で 設定した場合、データ配列は以下のようになります。 CN1 の 1 フレーム目 CN1 の 2 フレーム目 : CN1 の N フレーム目 CN4 の 1 フレーム目 CN4 の 2 フレーム目 : CN4 の N フレーム目 CN5 の 1 フレーム目 CN5 の 2 フレーム目 : CN5 の N フレーム目 ※ N:IFIMGCAPCONFIG 構造体の dwChFrameCnt の値 ※ データ転送先のバッファ領域が、(チャンネル数×フレーム数)分のサイズを満たさない 場合、データは先頭から上書きされます。 © 2003, 2016 Interface Corporation. All rights reserved. 549 GPC-5520 Help for Windows ■ SDRAM の領域確保について(CTP/CPZ/PCI-55x1、CTP/CPZ/PCI-55x3 使用時) 本製品は SDRAM を取り扱う際は ImgAllocateSDRAM 関数より、使用する SDRAM 領域を確保します。 関数実行後、管理用ハンドルを取得し、このハンドルを用いて、キャプチャデータの読み出し、比 較用画像データの書き込みを実行します。 SDRAM の全サイズは約 64MB です。 解像度 640×480 での最大確保フレーム数は以下の通りです。 データフォーマット RGB32bit RGB24bit RGB15bit/RGB16bit GRAY8bit R 成分 8bit G 成分 8bit B 成分 8bit 2 値化 8bit 最大確保フレーム数 54 フレーム確保可能 72 フレーム確保可能 109 フレーム確保可能 218 フレーム確保可能 確保できる空き領域が存在する限り、複数の領域を確保する事が可能です。 SDRAM +0h +0h SDRAM +0h SDRAM +0h 空き領域 SDRAM 空き領域 +0h SDRAM 空き領域 領域④ 領域②の確保 領域①の確保 領域③の確保 領域④の確保 空き領域 領域③ 領域③ 領域② 領域② 領域② 領域① 領域① 領域① 空き領域 領域① +3FF_FFFFh +3FF_FFFFh +3FF_FFFFh +3FF_FFFFh +3FF_FFFFh SDRAM 領域の空き領域を見つ ボードオープン時 け次第確保します。 © 2003, 2016 Interface Corporation. All rights reserved. 550 GPC-5520 Help for Windows その領域が必要なくなった場合、ImgFreeSDRAM 関数で領域を解放してください。解放したことに より、空き領域が増えます。新規に領域を確保することが可能です。 +0h SDRAM 空き領域 +0h 領域④ SDRAM +0h 空き領域 領域④ 領域③の解放 SDRAM 空き領域 領域④ 領域⑤の確保 領域⑤のサイズが領域③(空き領域)のサイ 領域③ 領域③ (空き領域) 領域③ (空き領域) 領域⑤ 領域⑤ 領域② 領域② 領域② 領域① 領域① 領域① +3FF_FFFFh ズより以下の場合、領域の確保は可能です。 +3FF_FFFFh +3FF_FFFFh ただし、空き領域のガーベージ処理は行いませんので、空き領域は不連続の状態になることがあり、 空き領域サイズが次に確保したい領域より大きい場合でも、領域確保が出来ない場合があります。 +0h SDRAM 空き領域 +0h 領域④ SDRAM +0h 空き領域 領域④ 領域③の解放 SDRAM 空き領域 領域④ 領域⑤の確保 領域③ 領域⑤ 領域③ (空き領域) 領域③ (空き領域) 領域⑤ 領域② 領域② 領域② 領域⑤が確保できるサイズの空き領域が内 場合、領域⑤は確保できません。 この場合、領域②または領域③を解放して、 領域① 領域① 領域① 領域⑤のサイズを満たす連続した空き領域 を作成する必要があります。 +3FF_FFFFh +3FF_FFFFh +3FF_FFFFh © 2003, 2016 Interface Corporation. All rights reserved. 551 GPC-5520 Help for Windows ■ パターン一致機能について(CTP/CPZ/PCI-55x3 使用時) 1 フレーム(640×480)内の任意の矩形領域を対象として、2 値化した画像に対するパターン一致検 出が可能です。 SDRAM 領域に書き込まれた比較領域に対してカメラから取り込んだキャプチャデータと一致率を 照らし合わせます。 IMGPTNCONFIG 構造体のメンバ変数 dwXCoordinates, dwYCoordinates の設定により、比較開始座標 点を設定します。この比較開始座標点から、比較用画像データ領域分に対してキャプチャデータと 比較用画像データの一致率を求めます。 (0,0) 測定対象物 Yc Xc:ImgAllocateSDRAM 関数で確保した際の X 方向長さ(dwXLength) Xc Yc:ImgAllocateSDRAM 関数で確保した際の Y 方向長さ(dwYLength) (639,479) 比較データ 比較開始座標点を元に データを重ね合わせて比較 (0,0) 比較開始座標 (639,479) この状態でパターン一致検出が行われる。 一致率のしきい値を IMGPTNCONFIG 構造体のメンバ変数 dwPercentage で設定し、設定した一致率よ り上回る(または下回る)際にトリガが発生します。 トリガの検知方法は割り込みによるイベント検知と ImgGetCaptureStatusEx 関数で得られるステ ータス値で確認します。 © 2003, 2016 Interface Corporation. All rights reserved. 552 GPC-5520 Help for Windows ■ 比較用画像データについて (CTP/CPZ/PCI-55x3 使用時) 本製品のパターン一致検出機能は 2 値化した画像に対する機能なので、比較用画像データも 00h データ、FFh データからなる、2 値化データとなります。 比較データの作成方法として、本製品より比較元となる対象物を 2 値化モードでキャプチャして、 そのキャプチャデータを比較用データとするのも1つの手段です。その際、キャプチャしたデータ は 640×480 なので ImgClipData 関数で、比較対象物の部分だけ抜き出して比較用画像データとし て保存します。 ■ パターン一致機能における自動補正について(CTP/CPZ/PCI-55x3 使用時) パターン一致検出を行う場合、1 フレーム(640×480)領域内のどの位置で比較を行うかが重要とな ります。 本インタフェースモジュールでは1つ前のフレームの重心位置を基準として、比較する領域の位置 を自動的に補正することができます。 その為自動補正モードで行う前にあらかじめ、ImgSetMeasurementRange 関数で比較対象物の重心 値を求める為、測定範囲を設定する必要があります。 (0,0) 測定対象物の重心値(XG,YG) XG 比較データの重心 YG (639,479) 1 つ前のフレームの重心 比較データ 1 つ前のフレームの重心位置に合わせて 比較領域の位置を決定 (0,0) XG YG 前フレームの重心 比較 (639,479) 現在のフレーム (639,479) この状態でパターン一致検出が行われる。 (0,0) © 2003, 2016 Interface Corporation. All rights reserved. 553 GPC-5520 Help for Windows ■ PEX-H531322 の制御方法 PEX-H531322 は、CameraLink 専用画像入力ボードで、PCI-5526 と同等の画像処理機能をサポー トした製品です。 ユーザが NTSC カメラから CameraLink カメラへ置き換える用途を目的として製品化されており、 GPC-5520 の API 関数体系で制御できるようになっています。 ただし、NTSC 画像入力製品と仕様が異なる点がございます。 ①対応 API 関数 PEX-H531322 が使用できる関数は以下の通りです。 以下の関数以外を実行すると IFIMG_ERROR_NOT_SUPPORTED が返ります。 関数名 ImgOpen ImgSetChannel ImgClose ImgClipData ImgGetDeviceInfo IfSaveBitMapFile ImgGetCaptureStatus ImgSetColorIngredient ImgGetCaptureStatusEx ImgGetMeasurementValueEx ImgSetBuffer ImgSetConversionConfig ImgGetMemPtrValue ImgSetLUT ImgStartCapture ImgSetFilter ImgStopCapture ImgSetDil_Er ImgSetBinarizationConfig ImgSetLabelingConfig ImgSetMeasurementRange ImgGetMeasurementValueLBL ImgGetMeasurementValue ImgGetOsArchitecture ImgSetTriggerConfig ImgSetCLCaptureConfig ImgInputDI ImgSetCCMode ImgOutputDO ImgOutputPluse ImgSetEventMask ImgSerialSend ImgGetEventMask ImgSerialReceive ImgSetEvent ImgGetSerialStatus ImgSetEventEx ImgSerialClear ImgSetBufferVB ImgOutputPower ImgSetEncodeCntMode ImgSetCounterCycle ImgGetCounterValue © 2003, 2016 Interface Corporation. All rights reserved. 554 GPC-5520 Help for Windows ②カメラ接続について CameraLink カメラの画像データは、NTSC 信号ととがって、解像度とフォーマットはカメラの 機種によります。よって、制御上、カメラ情報が記載されたカメラコンフィグファイル(拡張子 が cfg)を読み込む処理が必要となります。 ImgSetCLCaptureConfig 関数でカメラコンフィルファイルを指定してください。 カメラコンフィグファイルのフォーマットは以下の通りです。ご使用になるカメラに合わせて ファイル作成を行ってください。使用するカメラの仕様に合わせて設定値を決定してください。 書式 設定値 [CamType] カメラのタイプを指定します。 TYPE = 設定値 TYPE POCL = 設定値 0:エリアカメラ(固定) CONF = 設定値 POCL 0:カメラは PoCL 規格でない。 1:カメラは PoCL 規格である。 CONF 0:Base Configuration(固定) [AreaSet] 有効画像エリアの指定です。※1 H_CNT = 設定値 H_CNT 水平有効期間 H_BLK = 設定値 H_BLK 水平無効期間 V_CNT = 設定値 V_CNT 垂直有効期間 V_BLK 垂直無効期間 V_BLK = 設定値 [CamMode] カメラの映像出力を設定します。 FORMAT = 設定値 0 : RGB24bit 1 : モノクロ 8bit 2 : モノクロ 10bit 3 : モノクロ 12bit 4 : モノクロ 14bit 5 : モノクロ 16bit 6 : Bayer 配列 8bit 7 : Bayer 配列 10bit 8 : RGB30bit 9 : RGB36bit [CamMode] カメラの動作方式 OUTMODE = 設定値 0 : 標準 (固定) [Serial] BAUD = 設定値 カメラのシリアルボーレートです。 0 : シリアルなし(未使用) 1 : 9600bps 2 : 19200bps 3 : 38400bps 4 : 57600bps 5 : 115200bps カメラコントロール信号の使用の有無です。 0 : 使用 1 : 未使用 [CC] CC1 = 設定値 CC2 = 設定値 CC3 = 設定値 CC4 = 設定値 © 2003, 2016 Interface Corporation. All rights reserved. 555 GPC-5520 Help for Windows ※ 1 水平有効期間、水平無効期間、垂直有効期間、垂直無効期間については、 製品のハードウェアマニュアルに記載しています。 例)エリアカメラのカメラコンフィグファイルの書き込み例 [CamType] TYPE = 0 POCL = 0 [AreaSet] H_CNT = 640 H_BLK = 139 V_CNT = 480 V_BLK = 0 [CamMode] FORMAT = 0 [CamMode] OUTMODE = 0 [Serial] BAUD = 1 [CC] CC1 = CC2 = CC3 = CC4 = 0 0 0 0 © 2003, 2016 Interface Corporation. All rights reserved. 556 GPC-5520 Help for Windows ③取り込みエリア PCI-5526 機能互換の為、取り込み画像の解像度は 640×480 に固定となります。 640×480 を超える解像度のカメラを接続する際は、取り込み開始座標を指定する事ができます。 開始座標は ImgSetCLCaptureConfig 関数で設定できます。 640 開始座標 480 ④カメラ制御 CameraLink カメラのオリジナル機能として、外部トリガ(CC 信号)制御、シリアル通信制御、 カメラの電源供給があります。これらの機能制御は以下 API 関数で制御可能です。 機能 外部トリガ(CC 信号)制御 シリアル通信制御 カメラの電源供給 API 関数 ImgSetCCMode ImgOutputCCPluse ImgSerialSend ImgSerialReceive ImgGetSerialStatus ImgSerialClear ImgOutputPower ⑤カウンタ機能 PEX-H531322 には、インターバルタイマカウンタ、エンコーダパルスカウンタ機能が搭載され ています。各カウンタの周期、カウンタを取得する事ができます。なお、エンコーダパルスのカ ウント方法を設定する事もできます。 制御を行う関数は、ImgSetEncodeCntMode 関数、 ImgSetCounterCycle 関数、ImgGetCounterValue 関数となります。 © 2003, 2016 Interface Corporation. All rights reserved. 557 GPC-5520 Help for Windows ⑥チャンネル切替え PEX-H531322 は 2ch 入力製品ですが、チャンネル切替え方式となっています。ImgSetChannel 関 数で制御するチャンネルを切替える事ができます。キャプチャ動作中にチャンネルを切替える事は できません。 NTSC 画像入力の 5ch は全てのチャンネルに同じ内容の動作設定ですが、PEX-H531322 は各チャン ネルに対して動作設定が可能となっています。 以下の関数は ImgSetChannel 関数で切り替えたチャンネルに対して設定/制御を行う事が可能で す。 API 関数 ImgGetCaptureStatus ImgGetCaptureStatusEx ImgStartCapture ImgStopCapture ImgSetBuffer ImgGetMemPtrValue ImgSetBinarizationConfig ImgSetMeasurementRange ImgGetMeasurementValue ImgSetTriggerConfig ImgSetColorIngredient ImgGetMeasurementValueEx ImgSetConversionConfig ImgSetLUT ImgSetFilter ImgSetDil_Er ImgSetLabelingConfig ImgGetMeasurementValueLBL ImgSetCLCaptureConfig ImgSetCCMode ImgOutputPluse ImgSerialSend ImgSerialReceive ImgGetSerialStatus ImgSerialClear ImgOutputPower 設定/制御内容 キャプチャ状態を取得できます。 キャプチャ状態を取得できます。 キャプチャを開始します。 キャプチャを停止します。 データ転送先バッファを設定できます。 メモリポインタを取得する事ができます。 2 値化条件を設定できます。 測定範囲を設定できます。 面積、重心値を取得できます。 トリガ条件を設定できます。 画像処理の色成分を指定できます。 面積、重心値、フェレ径、傾き角を取得できます。 画像変換処理の有効/無効を設定できます。 階調変換用の LUT テーブルデータを設定できます。 フィルタ係数を設定できます。 膨張・収縮の設定ができます。 ラベリングの設定ができます。 ラベリング結果を取得できます。 接続カメラの設定、取り込み領域を設定できます。 CC 信号の出力方式を設定します。 CC 信号を 1 パルス分出力します。 シリアル通信方式でカメラへデータを送信します。 シリアル通信方式でカメラからのデータを受信します。 シリアル通信方式によるデータ受信状態を取得します。 シリアル通信用の FIFO をクリアします。 PoCL 規格カメラに外部電源を供給します。 © 2003, 2016 Interface Corporation. All rights reserved. 558 GPC-5520 Help for Windows ⑦キャプチャ制御 ・ImgSetBufer 関数で指定できるカラーフォーマットは固定となります。接続するカメラに合わ せて頂きます。NTSC 画像入力製品のようにフォーマット変換はできません。例えば、RGB24bit カメラであれば、ImgSetBuffer 関数には IFIMG_COLOR_RGB24 の固定指定となります。 ・画像データ転送先のバッファは各チャンネルに割り当てる必要があります。 ⑧ImgClipData 関数について ImgClipData 関数へ渡す IMGCLIPCONFIG 構造体のメンバ変数 dwDataFormat には IFIMG_CL_RESOLUTION 識別子を OR 指定してください。 ⑨画像処理機能 ・面積、重心、フェレ径、傾き角の取得は、キャプチャ実行中に制限されます。 ・ImgSetBuffer 関数に IFIMG_MEASUEMENT_LBLCNT を指定する場合、ラベリング数データのサイ ズは 8byte となります。確保するバッファサイズも 8byte 分を確保してください。PCI-5526、 5536 では 4byte ですが、サイズが異なりますのでご注意ください。 ・ラベリングの付加情報を取得する場合、必ずラベリング画像を一緒に転送してください。 ・ラベリング機能を使う場合、カメラ出力される映像信号のフレーム間隔は 17ms 以上である事 を推奨します。 使用例:カメラを外部トリガモードに切り替えて、17ms 以上の間隔で CC 信号を出力するよう にしてください。 ⑩割り込みについて ・1 フレーム毎転送完了割り込みは各チャンネル共通設定となります。 ・面積、重心、面積 AND 重心トリガ割り込みは各チャンネル個別設定となります。 © 2003, 2016 Interface Corporation. All rights reserved. 559 GPC-5520 Help for Windows ■ スーパーインポーズ機能 GPC-5520 はスーパーインポーズデバイスに対して主に以下の制御を行います。 ・ユーザアプリケーション上で作成した画像データをスーパーインポーズ画像として デバイスのオンボードメモリへ書き込む。 ・スーパーインポーズ処理の設定。 ・スーパーインポーズ用の時刻、日付の設定。 1. スーパーインポーズ画像の設定 RGB24bit ビットマップ形式の画像データスーパーインポーズ画像として設定する事ができます。 ボードメモリ上にスーパーインポーズ画像用の領域を 8 画面分確保しており、最大 8 種類の画像 を設定することができます。 画像データは番号で管理する為、指定した番号に任意のスーパーインポーズ画像を割り当てる事 ができます。 PCI-540111 オンボードメモリ キャプチャデータ保存領域 画像データ スーパーインポーズ画像領域① 文字列 XXXX スーパーインポーズ画像領域② スーパーインポーズ画像領域③ インポーズ画像を転送 スーパーインポーズ画像領域④ スーパーインポーズ画像領域⑤ スーパーインポーズ画像領域⑥ スーパーインポーズ画像領域⑦ スーパーインポーズ画像領域⑧ ImgSetImposeImage 関数でセットする事ができます。 © 2003, 2016 Interface Corporation. All rights reserved. 560 GPC-5520 Help for Windows ■スーパーインポーズ画像の反映タイミング スーパーインポーズ画像が反映されるタイミングは、以下のようになっています。 モニタ出力 1 2 スーパーインポーズ画像の演算方法 を上書きに設定 次のフレームからスーパーインポー ズ画像が反映される。 3 ・ ・ ・ © 2003, 2016 Interface Corporation. All rights reserved. 561 GPC-5520 Help for Windows 2. スーパーインポーズ画像の設定 スーパーインポーズする画像と演算処理を選択する事ができます。 上書き、加算、減算、XOR 演算処理を指定する事ができます。演算は画素毎に施す事ができます。 SprSetImposeImage 関数で指定する事ができます。スーパーインポーズの有効/無効を切替える事 ができます。 ●上書き インポーズ画像データをカメラ画像に上書きする。白(R:FF す。 AND 入力画像 G:FF B:FFh)は透過させま = スーパーインポーズ用画像 出力画像 ●加算 2つの画像を単純に足し合わせる。全体的に明るく(白っぽく)なります。 + 入力画像 = スーパーインポーズ用画像 出力画像 ●減算 スーパーインポーズ画像のデータからカメラ画像を引きます。全体的に暗く(黒っぽく)なり ます。同一画像の場合、真っ黒になります。 - 入力画像 = スーパーインポーズ用画像 © 2003, 2016 Interface Corporation. All rights reserved. 562 出力画像 GPC-5520 Help for Windows ●XOR スーパーインポーズ画像のデータとカメラ画像の XOR(排他論理和)をとります。 XOR 入力画像 = スーパーインポーズ用画像 出力画像 ●透過 2つの画像を単純に足し合わせる。加算と比較して全体的に明るく(白っぽく)はなりません。 + 入力画像 = スーパーインポーズ用画像 © 2003, 2016 Interface Corporation. All rights reserved. 563 出力画像 GPC-5520 Help for Windows 第5章 サンプルプログラム 以下、各サンプルプログラムの概要を説明します。 PEX-H531322 で動作させる場合、サンプルプログラムに以下の処理コードを追記してご使用くだ さい。 ・ImgOpen 関数でオープン処理後、ImgSetCLCaptureConfig 関数でカメラとキャプチャ設定を行っ てください。 ・PoCL 規格タイプのカメラの場合、キャプチャを開始する前に、ImgOutputPower 関数でカメラへ の電源供給を行ってください。 ・カメラ画像のキャプチャを行う場合、ImgSetBuffer 関数へ渡すカラーフォーマット情報は、接 続するカメラに合わせてください。 ・ImgClipData 関数へ渡す IMGCLIPCONFIG 構造体変数の内容を修正します。構造体のメンバ変数 dwDataFormat に IFIMG_CL_RESOLUTION 識別子を OR 指定してください。 「Visual C# .NET」、「Visual Basic .NET」、「Delphi 8」用のサンプルプログラムを用意していま す。それぞれ、以下を使用して作成されています。 Microsoft Visual C# .NET 2003 Microsoft Visual Basic .NET 2003 Borland Delphi 8.0 for the Microsoft .NET Framework © 2003, 2016 Interface Corporation. All rights reserved. 564 GPC-5520 Help for Windows 5.1 ImgSmpl 【概要】 サンプルプログラム「ImgSmpl」は、DMA 転送による 1 フレームのキャプチャ後、キャプチャデー タを描画します。 【実行手順】 サンプルプログラムには実行形式のファイルが付属していません。 ソースコードをコンパイルして実行ファイルを生成してから、動作させてください。 Visual C++ 6.0 の場合 Visual C++(Visual Studio)を起動し、「ファイル」メニューから「ワークスペースを開く」 を選び、メイクファイル「ImgSmpl.mak」を開き、ビルドしてください。 Visual C++ .NET 2003 以降 Visual C++(Visual Studio)を起動し、 「ファイル」メニューから「開く」→「プロジェクト」 を選び、プロジェクトファイル「ImgSmpl.vcproj」を開き、ビルドしてください。 Visual Basic の場合 Visual Basic を起動し、プロジェクトファイル「ImgSmpl.vbp」を開き、ビルドしてください。 Delphi の場合 Delphi を起動し、プロジェクトファイル「ImgSmpl.dpr」を開き、ビルドしてください。 Visual C# .NET の場合 Visual Studio を起動し、 「ファイル」メニューから「開く」→「プロジェクト」を選び、プロ ジェクトファイル「*.csproj」を開き、ビルドしてください。 Visual Basic .NET の場合 Visual Studio を起動し、 「ファイル」メニューから「開く」→「プロジェクト」を選び、プロ ジェクトファイル「*.vbproj」を開き、ビルドしてください。 Delphi 8 の場合 Delphi を起動し、「ファイル」メニューから「プロジェクトを開く」を選びプロジェクトグル ープ「*.bdsproj」を開き、ビルドしてください。 【内容】 1. メニューバーの「File」→「Open」でデバイスオープンダイアログが表示されます。オープ ンするデバイス名「IFIMGSTxx」または「IFIMGBINxx」または「IFIMGMEMxx」を入力してく ださい。 2. メニューバーの「Set」をクリックして、キャプチャ用バッファ領域を設定します。 3. メニューバーの「Start」をクリックして、キャプチャを開始します。 1 フレームキャプチャ後、「1 Frame capture completion」のメッセージが表示されます。 ※メッセージは、割り込みイベント(コールバック関数、またはメッセージイベント)で表 示しています。 4. メニューバーの「View」をクリックします。 ウィンドウにキャプチャデータが描画されます。 © 2003, 2016 Interface Corporation. All rights reserved. 565 GPC-5520 Help for Windows 5.2 ImgBin 【概要】 サンプルプログラム「ImgBin」は、2 値化設定を行い、1 フレーム(2 値化データ)のキャプチャ 後、キャプチャデータを描画します。 【実行手順】 サンプルプログラムには実行形式のファイルが付属していません。 ソースコードをコンパイルして実行ファイルを生成してから、動作させてください。 Visual C++の場合 Visual C++(Visual Studio)を起動し、「ファイル」メニューから「ワークスペースを開く」 を選び、メイクファイル「ImgBin.mak」を開き、ビルドしてください。 Visual C++ .NET 2003 以降 Visual C++(Visual Studio)を起動し、 「ファイル」メニューから「開く」→「プロジェクト」 を選び、プロジェクトファイル「ImgBin.vcproj」を開き、ビルドしてください。 Visual Basic の場合 Visual Basic を起動し、プロジェクトファイル「ImgBin.vbp」を開き、ビルドしてください。 Delphi の場合 Delphi を起動し、プロジェクトファイル「ImgBin.dpr」を開き、ビルドしてください。 【内容】 1. メニューバーの「File」→「Open」でデバイスオープンダイアログが表示されます。オー プンするデバイス名「IFIMGBINxx」を入力してください。 2. メニューバーの「Binarization」をクリックして、2 値化の設定を行います。 3. メニューバーの「Set」をクリックして、キャプチャ用バッファ領域を設定します。 4. メニューバーの「Start」をクリックして、キャプチャを開始します。 1 フレームキャプチャ後、「1 Frame capture completion」のメッセージが表示されます。 ※メッセージは、割り込みイベント(コールバック関数、またはメッセージイベント)で 表示しています。 5. メニューバーの「View」をクリックします。ウィンドウにキャプチャデータが描画されま す。 © 2003, 2016 Interface Corporation. All rights reserved. 566 GPC-5520 Help for Windows 5.3 ImgTrigger 【概要】 サンプルプログラム「ImgTrigger」は、トリガ発生条件を設定します。 【実行手順】 サンプルプログラムには実行形式のファイルが付属していません。 ソースコードをコンパイルして実行ファイルを生成してから、動作させてください。 Visual C++の場合 Visual C++(Visual Studio)を起動し、「ファイル」メニューから「ワークスペースを開く」 を選び、メイクファイル「ImgTrigger.mak」を開き、ビルドしてください。 Visual C++ .NET 2003 以降 Visual C++(Visual Studio)を起動し、 「ファイル」メニューから「開く」→「プロジェクト」 を選び、プロジェクトファイル「ImgTrigger.vcproj」を開き、ビルドしてください。 Visual Basic の場合 Visual Basic を起動し、プロジェクトファイル「ImgTrigger.vbp」を開き、ビルドしてくださ い。 Delphi の場合 Delphi を起動し、プロジェクトファイル「ImgTrigger.dpr」を開き、ビルドしてください。 【内容】 1. メニューバーの「File」→「Open」でデバイスオープンダイアログが表示されます。オー プンするデバイス名「IFIMGBINxx」を入力してください。 2. メニューバーの「Binarization」をクリックして、2 値化の設定を行います。 3. メニューバーの「Range」をクリックして、2 値画像処理の測定範囲を設定します。 4. メニューバーの「Range」をクリックして、トリガ発生条件を設定します。 トリガ発生時、「Trigger asserted」のメッセージが表示されます。※メッセージは、割り 込みイベント(コールバック関数、またはメッセージイベント)で表示しています。 © 2003, 2016 Interface Corporation. All rights reserved. 567 GPC-5520 Help for Windows 5.4 ImgSdram 【概要】 サンプルプログラム「ImgSdram」は、SDRAM による 1 フレームのキャプチャ後、キャプチャデー タを描画します。 【実行手順】 サンプルプログラムには実行形式のファイルが付属していません。 ソースコードをコンパイルして実行ファイルを生成してから、動作させてください。 Visual C++の場合 Visual C++(Visual Studio)を起動し、「ファイル」メニューから「ワークスペースを開く」 を選び、メイクファイル「ImgSdram.mak」を開き、ビルドしてください。 Visual C++ .NET 2003 以降 Visual C++(Visual Studio)を起動し、 「ファイル」メニューから「開く」→「プロジェクト」 を選び、プロジェクトファイル「ImgSdram.vcproj」を開き、ビルドしてください。 Visual Basic の場合 Visual Basic を起動し、プロジェクトファイル「ImgSdram.vbp」を開き、ビルドしてください。 Delphi の場合 Delphi を起動し、プロジェクトファイル「ImgSdram.dpr」を開き、ビルドしてください。 【内容】 1. メニューバーの「File」→「Open」でデバイスオープンダイアログが表示されます。オー プンするデバイス名「IFIMGMEMxx」を入力してください。 2. メニューバーの「Set」をクリックして、キャプチャ用 SDRAM 領域を設定します。 3. メニューバーの「Start」をクリックして、キャプチャを開始します。 4. 1 フレームキャプチャ後、「1 Frame capture completion」のメッセージが表示されます。 ※メッセージは、割り込みイベント(コールバック関数、またはメッセージイベント)で 表示しています。 5. メニューバーの「View」をクリックします。ウィンドウにキャプチャデータが描画されま す。 © 2003, 2016 Interface Corporation. All rights reserved. 568 GPC-5520 Help for Windows 5.5 ImgPtn 【概要】 サンプルプログラム「ImgPtn」は、パターン一致の設定を行います。 【実行手順】 サンプルプログラムには実行形式のファイルが付属していません。 ソースコードをコンパイルして実行ファイルを生成してから、動作させてください。 Visual C++の場合 Visual C++(Visual Studio)を起動し、「ファイル」メニューから「ワークスペースを開く」 を選び、メイクファイル「ImgPtn.mak」を開き、ビルドしてください。 Visual C++ .NET 2003 以降 Visual C++(Visual Studio)を起動し、 「ファイル」メニューから「開く」→「プロジェクト」 を選び、プロジェクトファイル「ImgPtn.vcproj」を開き、ビルドしてください。 Visual Basic の場合 Visual Basic を起動し、プロジェクトファイル「ImgPtn.vbp」を開き、ビルドしてください。 Delphi の場合 Delphi を起動し、プロジェクトファイル「ImgPtn.dpr」を開き、ビルドしてください。 【内容】 1. メニューバーの「File」→「Open」でデバイスオープンダイアログが表示されます。オー プンするデバイス名「IFIMGMEMxx」を入力してください。 2. メニューバーの「Binarization」をクリックして、2 値化の設定を行います。 3. メニューバーの「Set」をクリックして、SDRAM 領域に比較データを書き込み、比較条件を 設定しします。 4. パターン一致検出時、「Trigger asserted」のメッセージが表示されます。 ※メッセージは、割り込みイベント(コールバック関数、またはメッセージイベント)で表 示しています。 © 2003, 2016 Interface Corporation. All rights reserved. 569 GPC-5520 Help for Windows 5.6 ImgContinuation 【概要】 サンプルプログラム「ImgContinuation」は、連続フレームによるキャプチャを行い、1 フレーム キャプチャ毎に描画を行います。 【実行手順】 サンプルプログラムには実行形式のファイルが付属していません。 ソースコードをコンパイルして実行ファイルを生成してから、動作させてください。 Visual C++の場合 Visual C++(Visual Studio)を起動し、「ファイル」メニューから「ワークスペースを開く」 を選び、メイクファイル「ImgContinuation.mak」を開き、ビルドしてください。 Visual C++ .NET 2003 以降 Visual C++(Visual Studio)を起動し、 「ファイル」メニューから「開く」→「プロジェクト」 を選び、プロジェクトファイル「ImgContinuation.vcproj」を開き、ビルドしてください。 Visual Basic の場合 Visual Basic を起動し、プロジェクトファイル「ImgContinuation.vbp」を開き、ビルドして ください。 Delphi の場合 Delphi を起動し、プロジェクトファイル「ImgContinuation.dpr」を開き、ビルドしてくださ い。 【内容】 1. メニューバーの「File」→「Open」でデバイスオープンダイアログが表示されます。オー プンするデバイス名「IFIMGSTxx」または「IFIMGBINxx」または「IFIMGMEMxx」を入力して ください。 2. メニューバーの「Set」をクリックして、キャプチャ用バッファ領域を設定します。 3. メニューバーの「Start」をクリックして、キャプチャを開始します。1 フレームキャプチ ャ後、1 フレームキャプチャ毎の描画を行います。 4. メニューバーの「Stop」をクリックすることで、キャプチャを停止する事ができます。 © 2003, 2016 Interface Corporation. All rights reserved. 570 GPC-5520 Help for Windows 5.7 ImgMeasure 【概要】 サンプルプログラム「ImgMesure」は、DMA 転送による 1 フレームのキャプチャと 2 値画像結果を 取得します。 【実行手順】 サンプルプログラムには実行形式のファイルが付属していません。 ソースコードをコンパイルして実行ファイルを生成してから、動作させてください。 Visual C++の場合 Visual C++(Visual Studio)を起動し、「ファイル」メニューから「ワークスペースを開く」 を選び、メイクファイル「ImgMesure.mak」を開き、ビルドしてください。 Visual C++ .NET 2003 以降 Visual C++(Visual Studio)を起動し、 「ファイル」メニューから「開く」→「プロジェクト」 を選び、プロジェクトファイル「ImgMeasure.vcproj」を開き、ビルドしてください。 Visual Basic の場合 Visual Basic を起動し、プロジェクトファイル「ImgMesure.vbp」を開き、ビルドしてくださ い。 Delphi の場合 Delphi を起動し、プロジェクトファイル「ImgMesure.dpr」を開き、ビルドしてください。 【内容】 1. メニューバーの「File」→「Open」でデバイスオープンダイアログが表示されます。オー プンするデバイス名「IFIMGMSRxx」を入力してください。 2. メニューバーの「Set」をクリックして、DMA 転送するデータフォーマットを指定します。 データフォーマットは画像データ(RGB24bit/R8bit/G8bit/B8bit/BIN8bit)と画像処理デー タ(濃度分布、射影データ)を選択します。 3. メニューバーの「SetMsr」をクリックして、ダイアログボックスが表示されます。 2 値化処理設定と測定範囲の設定を行ないます。 4. メニューバーの「Start」をクリックして、キャプチャを開始します。 1 フレームキャプチャ後、「1 Frame capture completion」のメッセージが表示されます。 5. メニューバーの「View」をクリックします。ウィンドウにキャプチャデータが描画されま す。また、画像処理結果(面積値、重心値、フェレ径、慣性等価楕円の傾き角)が表示され ます。 6. メニューバーの「Hist」をクリックしたら、ダイアログボックスが表示されます。 2 のデータフォーマット指定時に、濃度分布、射影データを選択した場合、各画像処理結 果を確認する事ができます。 © 2003, 2016 Interface Corporation. All rights reserved. 571 GPC-5520 Help for Windows 5.8 ImgLUT 【概要】 サンプルプログラム「ImgLUT」は、階調変換処理を実施した画像を 1 フレームキャプチャします。 【実行手順】 サンプルプログラムには実行形式のファイルが付属していません。 ソースコードをコンパイルして実行ファイルを生成してから、動作させてください。 Visual C++の場合 Visual C++(Visual Studio)を起動し、「ファイル」メニューから「ワークスペースを開く」 を選び、メイクファイル「ImgLUT.mak」を開き、ビルドしてください。 Visual C++ .NET 2003 以降 Visual C++(Visual Studio)を起動し、 「ファイル」メニューから「開く」→「プロジェクト」 を選び、プロジェクトファイル「ImgLUT.vcproj」を開き、ビルドしてください。 Visual Basic の場合 Visual Basic を起動し、プロジェクトファイル「ImgLUT.vbp」を開き、ビルドしてください。 Delphi の場合 Delphi を起動し、プロジェクトファイル「ImgLUT.dpr」を開き、ビルドしてください。 【内容】 1. メニューバーの「File」→「Open」でデバイスオープンダイアログが表示されます。オープ ンするデバイス名「IFIMGCNVxx」を入力してください。 2. メニューバーの「Set」をクリックすると、階調変換テーブルの設定をデータフォーマット の設定を行ないます。 階調変換テーブルは明度が反転するデータです。データフォーマットは RGB24bit を指定し ます。 3. メニューバーの「Start」をクリックして、キャプチャを開始します。 1 フレームキャプチャ後、 「1 Frame capture completion」のメッセージが表示されます。 4. メニューバーの「View」をクリックします。ウィンドウにキャプチャデータが描画されます。 © 2003, 2016 Interface Corporation. All rights reserved. 572 GPC-5520 Help for Windows 5.9 ImgFilter 【概要】 サンプルプログラム「ImgFilter」は、フィルタ処理を実施した画像を 1 フレームキャプチャしま す。 【実行手順】 サンプルプログラムには実行形式のファイルが付属していません。 ソースコードをコンパイルして実行ファイルを生成してから、動作させてください。 Visual C++の場合 Visual C++(Visual Studio)を起動し、「ファイル」メニューから「ワークスペースを開く」 を選び、メイクファイル「ImgFilter.mak」を開き、ビルドしてください。 Visual C++ .NET 2003 以降 Visual C++(Visual Studio)を起動し、 「ファイル」メニューから「開く」→「プロジェクト」 を選び、プロジェクトファイル「ImgFilter.vcproj」を開き、ビルドしてください。 Visual Basic の場合 Visual Basic を起動し、プロジェクトファイル「ImgFilter.vbp」を開き、ビルドしてくださ い。 Delphi の場合 Delphi を起動し、プロジェクトファイル「ImgFilter.dpr」を開き、ビルドしてください。 【内容】 1. メニューバーの「File」→「Open」でデバイスオープンダイアログが表示されます。オープ ンするデバイス名「IFIMGCNVxx」を入力してください。 2. メニューバーの「Set」をクリックすると、フィルタ係数とデータフォーマットの設定を行 ないます。 フィルタ係数はラプラシアンフィルタを設定します。 3. メニューバーの「Start」をクリックして、キャプチャを開始します。 1 フレームキャプチャ後、 「1 Frame capture completion」のメッセージが表示されます。 4. メニューバーの「View」をクリックします。ウィンドウにキャプチャデータが描画されます。 © 2003, 2016 Interface Corporation. All rights reserved. 573 GPC-5520 Help for Windows 5.10 ImgDilationErosion 【概要】 サンプルプログラム「ImgDilationErosion」は、膨張・収縮処理を実施した画像を 1 フレームキャ プチャします。 【実行手順】 サンプルプログラムには実行形式のファイルが付属していません。 ソースコードをコンパイルして実行ファイルを生成してから、動作させてください。 Visual C++の場合 Visual C++(Visual Studio)を起動し、「ファイル」メニューから「ワークスペースを開く」 を選び、メイクファイル「ImgDilationErosion.mak」を開き、ビルドしてください。 Visual C++ .NET 2003 以降 Visual C++(Visual Studio)を起動し、 「ファイル」メニューから「開く」→「プロジェクト」 を選び、プロジェクトファイル「ImgDilationErosion.vcproj」を開き、ビルドしてください。 Visual Basic の場合 Visual Basic を起動し、プロジェクトファイル「ImgDilationErosion.vbp」を開き、ビルドし てください。 Delphi の場合 Delphi を起動し、プロジェクトファイル「ImgDilationErosion.dpr」を開き、ビルドしてくだ さい。 【内容】 1. メニューバーの「File」→「Open」でデバイスオープンダイアログが表示されます。オープ ンするデバイス名「IFIMGCNVxx」を入力してください。 2. メニューバーの「Set」をクリックすると、膨張・収縮の処理条件ととデータフォーマットの 設定を行ないます。 3. メニューバーの「Start」をクリックして、キャプチャを開始します。 1 フレームキャプチャ後、 「1 Frame capture completion」のメッセージが表示されます。 4. メニューバーの「View」をクリックします。ウィンドウにキャプチャデータが描画されます。 © 2003, 2016 Interface Corporation. All rights reserved. 574 GPC-5520 Help for Windows 5.11 ImgLbl 【概要】 サンプルプログラム「ImgLbl」は、ラベリング処理後の画像と各ラベルブロックの面積、重心、 フェレ径、慣性等価楕円の傾き角を取得します。 【実行手順】 サンプルプログラムには実行形式のファイルが付属していません。 ソースコードをコンパイルして実行ファイルを生成してから、動作させてください。 Visual C++の場合 Visual C++(Visual Studio)を起動し、「ファイル」メニューから「ワークスペースを開く」 を選び、メイクファイル「ImgLbl.mak」を開き、ビルドしてください。 Visual C++ .NET 2003 以降 Visual C++(Visual Studio)を起動し、 「ファイル」メニューから「開く」→「プロジェクト」 を選び、プロジェクトファイル「ImgLbl.vcproj」を開き、ビルドしてください。 Visual Basic の場合 Visual Basic を起動し、プロジェクトファイル「ImgLbl.vbp」を開き、ビルドしてください。 Delphi の場合 Delphi を起動し、プロジェクトファイル「ImgLbl.dpr」を開き、ビルドしてください。 【内容】 1. メニューバーの「File」→「Open」でデバイスオープンダイアログが表示されます。オープ ンするデバイス名「IFIMGLBLxx」を入力してください。 2. メニューバーの「Set」をクリックすると、DMA 転送するデータフォーマットを指定します。 データフォーマットはラベリング画像と画像処理データ(面積値、重心値、フェレ径、慣性 等価楕円の傾き角)を指定します。 3. メニューバーの「Start」をクリックして、キャプチャを開始します。 1 フレームキャプチャ後、 「1 Frame capture completion」のメッセージが表示されます。 4. メニューバーの「View」をクリックします。ウィンドウにキャプチャデータとその画像のラ ベリング数とラベル番号 1 に対する画像処理データを表示します。 © 2003, 2016 Interface Corporation. All rights reserved. 575 GPC-5520 Help for Windows 5.12 ImgSaveAvi 【概要】 サンプルプログラム「ImgSaveAvi」は、キャプチャした画像データを動画保存するサンプルプロ グラムです。 動画ファイルの形式は未圧縮の Avi 形式のファイルとなります。 【実行手順】 Visual C++の場合 Visual C++(Visual Studio)を起動し、「ファイル」メニューから「ワークスペースを開く」 を選び、プロジェクトファイル「ImgSaveAvi.dsp」を開き、ビルドしてください。 Visual C++ .NET 2003 以降 Visual C++(Visual Studio)を起動し、 「ファイル」メニューから「開く」→「プロジェクト」 を選び、プロジェクトファイル「ImgSaveAvi.vcproj」を開き、ビルドしてください。 【内容】 1. メニューバーの「File」→「Open」でデバイスオープンダイアログが表示されます。オープ ンするデバイス名を入力してください。 2. メニューバーの「Set」をクリックすると、ダイアログが表示されます。 カラーフォーマット(RGB24、RGB15、GRAY8)と解像度(640×480、320×240、160×120)を 選択します。 3. メニューバーの「Start」をクリックして、キャプチャを開始します。 キャプチャ画像も描画されます。 4. 2 の操作で解像度を「640×480」に指定した場合、60 フレーム分キャプチャした後、動画ファ イルの保存処理が実行されます。Avi 形式ファイルへの保存が完了したら、「FileSave completion」と完了メッセージが表示されます。同じディレクトリ上に動画ファイル 「sample.avi」が作成されます。 5. 2 の操作で解像度を「640×480」以外で指定した場合、メニューの「Stop」をクリックすると、 キャプチャを停止する。Avi 形式ファイルへの保存が完了したら、「FileSave completion」 と完了メッセージが表示されます。同じディレクトリ上に動画ファイル「sample.avi」が作成 されます。 ※Avi 形式の仕様上、作成できるファイルの最大サイズは 2GB となります。最大サイズの範 囲内でファイル保存を行なってください。 © 2003, 2016 Interface Corporation. All rights reserved. 576 GPC-5520 Help for Windows 5.13 ImgCap 【概要】 サンプルプログラム「ImgCap」は、DMA 転送による 1 フレームのキャプチャ後、ビットマップフ ァイルを保存するサンプルプログラムです。 【実行手順】 サンプルプログラムには実行形式のファイルが付属していません。 ソースコードをコンパイルして実行ファイルを生成してから、動作させてください。 Visual C++の場合 Visual C++(Visual Studio)を起動し、「ファイル」メニューから「ワークスペースを開く」 を選び、メイクファイル「ImgCap.mak」を開き、ビルドしてください。 Visual C++ .NET 2003 以降 Visual C++(Visual Studio)を起動し、 「ファイル」メニューから「開く」→「プロジェクト」 を選び、プロジェクトファイル「ImgCap.vcproj」を開き、ビルドしてください。 Visual Basic の場合 Visual Basic を起動し、プロジェクトファイル「ImgCap.vbp」を開き、ビルドしてください。 【内容】 「OK」ボタンをクリックするとインタフェースモジュールをオープンして RGB24bit モードでキ ャプチャを開始します。1 フレームキャプチャの完了を ImgGetCaptureStatus 関数でポーリン グしながら待機します。 キャプチャが完了したら、ビットマップファイルに画像を保存します。 © 2003, 2016 Interface Corporation. All rights reserved. 577 GPC-5520 Help for Windows 5.14 ImgSprString 【概要】 サンプルプログラム「ImgSprString」は、任意の文字列をインポーズ処理します。 文字列をスーパーインポーズします。 【実行手順】 サンプルプログラムには実行形式のファイルが付属していません。 ソースコードをコンパイルして実行ファイルを生成してから、動作させてください。 Visual C++の場合 Visual C++(Visual Studio)を起動し、「ファイル」メニューから「ワークスペースを開く」 を選び、メイクファイル「ImgSprString.mak」を開き、ビルドしてください。 Visual C++ .NET 2003 以降 Visual C++(Visual Studio)を起動し、 「ファイル」メニューから「開く」→「プロジェクト」 を選び、プロジェクトファイル「ImgSprString.vcproj」を開き、ビルドしてください。 Visual Basic の場合 Visual Basic を起動し、プロジェクトファイル「ImgSprString.vbp」を開き、ビルドしてくだ さい。 5.15 ImgSprDateTime 【概要】 サンプルプログラム「ImgSprDateTime」は、任意の文字列をインポーズ処理します。 指定した日付と時刻でスーパーインポーズします。 【実行手順】 サンプルプログラムには実行形式のファイルが付属していません。 ソースコードをコンパイルして実行ファイルを生成してから、動作させてください。 Visual C++の場合 Visual C++(Visual Studio)を起動し、「ファイル」メニューから「ワークスペースを開く」 を選び、メイクファイル「ImgSprDateTime.mak」を開き、ビルドしてください。 Visual C++ .NET 2003 以降 Visual C++(Visual Studio)を起動し、 「ファイル」メニューから「開く」→「プロジェクト」 を選び、プロジェクトファイル「ImgSprDateTime.vcproj」を開き、ビルドしてください。 Visual Basic の場合 Visual Basic を起動し、プロジェクトファイル「ImgSprDateTime.vbp」を開き、ビルドしてく ださい。 © 2003, 2016 Interface Corporation. All rights reserved. 578 GPC-5520 Help for Windows 第6章 ユーティリティ 以下、各ユーティリティの概要を説明します。 6.1 画像キャプチャユーティリティ 本ユーティリティは、カメラからの映像入力機器から取り込んだ、画像データを描画するアプリ ケーションです。 (注意) PCI-540111,PEX-H540111,CPZ-540111 ではご使用できません。 【使用方法】 1. ソフトウェア(GPC-5520)のインストール完了後、 「スタート」メニューより「プログラム」 -「Interface GPC-5520」-「ImgCapture」を起動します。 2. メニューの「ファイル」-「デバイスオープン」を選択すると、インストールされているデ バイスの一覧が表示されます。その中から、使用したいインタフェースモジュールを選択 し、「OK」ボタンをクリックします。 3. 画面説明(メイン) ② ③ ① ④ 表示画面 ⑤ 図 1. 実行画面 © 2003, 2016 Interface Corporation. All rights reserved. 579 GPC-5520 Help for Windows 名称 ① メニューバー フ ァ イ デバイスオープン ル 開く 保存 デバイスクローズ カメラファイル 表示 終了 ステータスバー オ プ シ 出力モード ョン ヘルプ バージョン情報 ②キャプチャ開始 ③キャプチャ停止 ④設定 ⑤ステータスバー 説明 オープン画面が起動します。 使用可能なデバイスの一覧が表示され ます。 デバイスを選択します。 Bmp 形式ファイルを開きます。 画面に表示している画像データを bmp 形 式ファイルで保存します。 使用しているデバイスをクローズしま す。 PEX-H531322 専用です。使用するカメラ コンフィグファイルを読み込みます。 アプリケーションを終了します。 ステータスバーの表示を設定します。 映像出力端子(チャンネル 2)からの出 力モードを切り換えます。 【スルーモード】 映像入力端子から入力した画像をその まま出力します。 【カラーバーモード】 映像出力端子(チャンネル 2)からのカ ラーバー画像を出力します。 【静止画出力】 カメラ画像をそのまま静止画として出 力します。 アプリケーションのバージョンを表示 します。 キャプチャを開始して、キャプチャデー タを画面に表示します。 キャプチャを停止します。 キャプチャ、2 値化、トリガ処理、パタ ーン一致処理、階調変換、フィルタ、膨 張・収縮を設定する、タブコントローラ ーです。 2 値化画像処理の結果です、パターン一 致率を表示します。 © 2003, 2016 Interface Corporation. All rights reserved. 580 GPC-5520 Help for Windows 4. 画面説明(キャプチャ設定) ① ⑦ ② ③ ④ ⑤ ⑥ 名称 ①キャプチャフレーム数 ②データフォーマット 説明 キャプチャするフレーム数を設定しま す。値を 0 に指定した場合、停止ボタン が押されるまでキャプチャします。 32 ビットフォーマットを指定します。 24 ビットフォーマットを指定します。 15 ビットフォーマットを指定します。 8 ビットグレイスケールフォーマットを 指定します。 赤成分 8bit フォーマットを指定します。 緑成分 8bit フォーマットを指定します。 青成分 8bit フォーマットを指定します。 2 値化 8bit フォーマットを指定します。 フィルタ 8bit フォーマットを指定しま す。 640×480 の解像度(NTSC 製品専用) 320×240 の解像度(NTSC 製品専用) 160×120 の解像度(NTSC 製品専用) 768×572 の解像度(PAL 製品専用) 384×286 の解像度(PAL 製品専用) 192×143 の解像度(PAL 製品専用) 使用するチャンネルを設定します。 (多チャンネル製品専用) 画像の開始位置を設定します。 「設定」ボタンで、設定を行います。 キャプチャ停止後の画像に対して、グリ ッドラインを表示します。 「表示」ボタンで表示します。 RGB 32bit RGB 24bit RGB 15bit GRAY 8bit R 成分 8bit G 成分 8bir B 成分 8bit 2 値化 フィルタ 8bit ③フレームサイズ 640×480 320×240 160×120 768×572 384×286 192×143 ④使用チャンネル ⑤開始位置 ⑥グリッド表示 © 2003, 2016 Interface Corporation. All rights reserved. 581 GPC-5520 Help for Windows 名称 説明 グリッドライン(実線)となる X 座標を設 定します。 グリッドライン(実線)となる X 座標を設 定します。 設定した幅の間隔でグリッドラインを 引きます。 1 目盛りの値を設定します。 設定した値が画面上の「X/div」の?の 箇所に反映され表示します。 グリッドラインの色を設定します。 PEX-H531322 を使用する場合は、このボ タンが有効になります。 カメラへの電源の ON/OFF を行います。 ただし、PoCL 規格のカメラ用のカメラコ ンフィグファイルを読み込んでいない と動作しません。 X Y グリッド幅 1 目盛りの値 色設定 ⑦カメラ電源 ON © 2003, 2016 Interface Corporation. All rights reserved. 582 GPC-5520 Help for Windows 5. 画面説明(2 値化設定) ① ② ③ ④ ⑤ 名称 ①色成分設定 説明 R 成分 映像入力データの赤成分に対して 2 値化処理を 行います。 G 成分 映像入力データの緑成分に対して 2 値化処理を 行います。 B 成分 映像入力データの青成分に対して 2 値化処理を 行います。 GRAY 成分 映像入力データの輝度成分に対して 2 値化処理 を行います。 ②しきい値 上限 上限しきい値を設定します。 下限 下限しきい値を設定します ③反転設定 通常 上限値と下限値の間が色成分、それ以外が黒にな ります。(GRAY 成分の場合は白です。) 反転 上限値と下限値の間が黒、それ以外が色成分にな ります。(GRAY 成分の場合は白です。) ④測定範囲設定※ 開始点 X 座標 開始点の X 座標です。(0~639) 開始点 Y 座標 開始点の X 座標です。(0~479) X 方向への長さ 開始点から X 方向への長さを指定します。 Y 方向への長さ 開始点から Y 方向への長さを指定します。 ⑤測定範囲の表示 キャプチャ中、測定範囲の枠を表示します。「色 設定」ボタンで枠の色を指定できます。 ※ マウスドラッグによる指定も可能です。マウスの左ボタンで画面上をドラッグして範囲指 定を行ってください。(四角の枠が表示されます。) その後、右クリックで「2 値化測定範囲に指定」を選択します。 © 2003, 2016 Interface Corporation. All rights reserved. 583 GPC-5520 Help for Windows 6. 画面説明(トリガ設定) ① ④ ② ③ ⑤ ⑥ ⑦ 名称 ①面積トリガ有効 説明 チェックボックスにチェックを付けると 面積トリガが有効になります。 ②面積トリガ範囲 上限値 面積の上限値を設定します。 下限値 面積の下限値を設定します。 ③面積トリガ発生条件 面積トリガ発生条件にて範囲内発生か範囲外発生を指定します。 ④重心トリガ有効 チェックボックスにチェックを付けると 重心トリガが有効になります。 ⑤重心トリガ※ 開始点 X 座標 開始点の X 座標です。(0~639) 開始点 Y 座標 開始点の X 座標です。(0~479) X 方向長さ 開始点から X 方向への長さを指定します。 Y 方向長さ 開始点から Y 方向への長さを指定します。 ⑥重心トリガ発生条件 重心トリガ発生条件にて範囲内発生か範囲外発生を指定します。 ⑦トリガ範囲の画面表示 表示画面のトリガ範囲の枠を表示します。「色設定」ボタンで枠の 色を指定できます。 ※ 面積トリガ、重心トリガのチェックボックス両方を付けた場合、「面積 AND 重心トリガ」 も有効となります。 ※ マウスドラッグによる指定も可能です。マウスの左ボタンで画面上をドラッグして範囲指 定を行ってください。(四角の枠が表示されます。) その後、右クリックで「トリガ範囲に指定」を選択します。 © 2003, 2016 Interface Corporation. All rights reserved. 584 GPC-5520 Help for Windows 7. 画面説明(パターン一致) ① ③ ② ⑤ ④ ⑥ 名称 ①ファイル ②データ一致率 ③パターン一致回数 ④自動補正 ⑤パターン一致トリガ発生条件 ⑥比較開始座標 説明 比較用データをファイルから読み込みます。 データの一致率を設定します。 パターン一致を検出する回数を指定します。 指定した回数に達したら、再キャプチャを実行する まで、パターン一致によるメッセージ表示は行われ ません。 自動補正機能使用に有無を指定します。 自動補正機能を使用する場合は、2 値化処理設定と 測定範囲の指定を行ってください。 パターン一致する条件を設定します。 自動補正機能を使用しない場合に設定します。 データの比較を開始する座標を指定してください。 © 2003, 2016 Interface Corporation. All rights reserved. 585 GPC-5520 Help for Windows 8. パターン一致機能の使用方法 ① 2 値化の設定 「2 値化処理」のタブコントロール上で 2 値化処理条件を設定し、「適応」ボタンをクリック します。 ② 比較データの指定 まず、比較データを指定します。指定方法は 2 通りです。 ファイルからの読み込み 「パターン一致」のタブコントロールの「ファイル」ボタ ンより Bmp 形式の比較データファイルを読み込みます。 必ず「モノクロビットマップ」で保存されたファイルを指 定してください。また、画像データは「黒」と「白」の色 データです。 キャプチャ後のデータから指定 データフォーマットを「2 値化 8bit」に指定して、比較元 となる対象物をキャプチャします。マウスの左ボタンで画 面上をドラッグしながら、比較データを選択してくださ い。(四角の枠が表示されます。)。その後、右クリックで 「比較データに指定」を選択します。 © 2003, 2016 Interface Corporation. All rights reserved. 586 GPC-5520 Help for Windows ③ パターン一致機能の設定 「パターン一致」のタブコントロール上でパターン一致条件を設定し、「適応」ボタンをクリ ックします。 ④ キャプチャ実行 キャプチャを開始します。パターン一致機能は 2 値化されたデータを比較対象としますので、 データフォーマットが「2 値化 8bit」によるキャプチャで実行したほうが、状況が把握しやす いでしょう。 ⑤ パターン一致検出 パターン一致が検出された時、メッセージボックスが表示されます。 そのときの一致率も表示されます。 © 2003, 2016 Interface Corporation. All rights reserved. 587 GPC-5520 Help for Windows 9. 画面説明(階調変換) ② ① ③ ④ ⑤ 名称 ①階調変換有効 説明 チェックを付けると階調変換処理が有効 となります。 階調変換データを選択します。 スルー、反転、4 階調、8 階調、16 階調、 32 階調、64 階調を選択可能です。 ②で選択した階調変換データを更新しま す。 チェックを付けた色成分の階調変換テー ブルが更新されます。 ②で選択した階調変換テーブルデータが 表示されます。 また、直接編集する事も可能です。 ②階調変換データ選択 ③LUT セット ④R/G/B/GRAY ⑤階調変換データ © 2003, 2016 Interface Corporation. All rights reserved. 588 GPC-5520 Help for Windows 10. 画面説明(フィルタ処理) ① ③ ② ④ 名称 ①フィルタ処理有効 説明 チェックを付けるとフィルタ処理が有効 となります。 空間フィルタ係数の値を直接入力する事 ができます。 差分型空間フィルタ係数の値を直接入力 する事ができます。 選択したフィルタ係数の値が②と③に反 映されます。 ②空間フィルタ係数 ③差分型エッジフィルタ係数 ④フィルタ選択 © 2003, 2016 Interface Corporation. All rights reserved. 589 GPC-5520 Help for Windows 11. 画面説明(膨張・収縮処理) ① ③ ④ ② 名称 ①膨張・収縮処理有効 ②段選択 ③膨張/収縮 ④4 連結/8 連結 説明 チェックを付けると膨張・収縮処理が有効となります。 段数を選択します。 各段の膨張・収縮処理を選択します。 ②で選択した段までの設定が反映されます。 各段の近傍を選択します。 ②で選択した段までの設定が反映されます。 © 2003, 2016 Interface Corporation. All rights reserved. 590 GPC-5520 Help for Windows 12. 画面説明(物理メモリ設定) x64 環境専用の機能です。x64 環境下で確保された物理メモリサイズの確認と、サイズの 変更を行う事ができます。 PEX-H531322 をご使用の場合は、各チャンネルに対して物理メモリを割り当てる必要があ ります。キャプチャ設定画面上の「使用チャンネル」を切り替えることで設定ができます。 ① ①のサイズ欄に確保済の物理メモリのサイズを表示しています。 サイズ欄に確保したいサイズ(16 進数)を入力して「適用」ボタンをクリックしてください。 サイズ変更処理が成功すると、以下のようなメッセージが表示されます。 サイズ変更を反映させるには、ImgCapture.exe を終了し OS の再起動を行ってください。OS 再 起動後、ImgCapture.exe を起動し、「Memory Setting」ダイアログ上に確保されたサイズが表示 されています。 (注意) ご使用の PC 環境によっては、指定したサイズで物理メモリを確保できるとは限りません。 お客様自身で最適なサイズを確保していただきますようお願い致します。 © 2003, 2016 Interface Corporation. All rights reserved. 591 GPC-5520 Help for Windows 13. 画面説明(ステータスバー) ① ② ③ ④ ⑤ 名称 ①カーソル ②面積値 ③重心値 ④測定範囲 ⑥ 説明 マウスのカーソル座標を表示します。 測定対象物の面積値を表示します。 測定対象物の重心値を表示します。 2 値化処理の測定範囲を表示します。 (X 座標,Y 座標) X:X 方向の長さ Y:Y 方向の長さ ⑤トリガ範囲 トリガ範囲を表示します。 (X 座標,Y 座標) X:X 方向の長さ Y:Y 方向の長さ ⑥トリガ状態 トリガの状態を表示します。 ON でトリガ発生、OFF でトリガ未発生です。 ⑦一致率 パターン一致機能によるデータの一致率を表示します。 ※ ②~⑦は 1 フレーム毎に表示されます。 © 2003, 2016 Interface Corporation. All rights reserved. 592 ⑦ GPC-5520 Help for Windows 6.2 自己診断プログラム 汎用入出力の動作確認を行う為のプログラムです。 ※本プログラムでは、チャンネル 1,チャンネル 2 の診断は行えません。 【使用方法】 1. ソフトウェア(GPC-5520)のインストール完了後、 「スタート」メニューより「プログラム」「Interface GPC-5520」-「ImgDiag」を起動します。 2. プログラムを起動すると、「インタフェースモジュールの選択」ダイアログボックスが表示 されます。 「ボード検索」をクリックします。システムに実装されているデバイスが一覧されるので、 診断を行うデバイスを選択し、「OK」をクリックして下さい。 図 2.ボード選択画面 ※このユーティリティで同時に複数のインタフェースモジュールをオープンすることはできま せん。 ※同一型式のインタフェースモジュールを複数枚使用する場合には、RSW1,RSW2 の設定値をイ ンタフェースモジュール毎で異なる値に 設定してください。 © 2003, 2016 Interface Corporation. All rights reserved. 593 GPC-5520 Help for Windows 3. 画面上に現在の入力信号の状態、出力信号の状態が表示されます。 汎用入力 汎用入力の状態表示されます。 汎用出力 画面上に表示されているボタンをクリックすると、出力信号の ON/OFF を切り替えることができます。 ON OFF 図 3.実行画面 © 2003, 2016 Interface Corporation. All rights reserved. 594 GPC-5520 Help for Windows 第7章 重要な情報 保証の内容と制限 弊社は本ドキュメントに含まれるソースプログラムの実行が中断しないこと、またはその実行に 誤りが無いことを保証していません。 本製品の品質や使用に起因する、性能に起因するいかなるリスクも使用者が負うものとします。 弊社はドキュメント内の情報の正確さに万全を期しています。万一、誤記または誤植などがあっ た場合、弊社は予告無く改訂する場合があります。ドキュメントまたはドキュメント内の情報に 起因するいかなる損害に対しても弊社は責任を負いません。 ドキュメント内の図や表は説明のためであり、ユーザ個別の応用事例により変化する場合があり ます。 著作権、知的所有権 弊社は本製品に含まれるおよび本製品に対する権利や知的所有権を保持しています。 本製品はコンピュータ ソフトウェア、映像/音声(例えば図、文章、写真など)を含んでいます。 医療機器/器具への適用における注意 弊社の製品は人命に関わるような状況下で使用される機器に用いられる事を目的として設計、製 造された物では有りません。 弊社の製品は人体の検査などに使用するに適する信頼性を確保する事を意図された部品や検査機 器と共に設計された物では有りません。 医療機器、治療器具などの本製品の適用により、製品の故障、ユーザ、設計者の過失などにより、 損傷/損害を引き起こす場合が有ります。 複製の禁止 弊社の許可なく、本ドキュメントの全て、または一部に関わらず、複製、改変などを行うことは できません。 責任の制限 弊社は、弊社または再販売者の予見の有無にかかわらず発生したいかなる特別損害、偶発的損害、 間接的な損害、重大な損害について、責任を負いません。 本製品(ハードウェア,ソフトウェア)のシステム組み込み、使用、ならびに本製品から得られる 結果に関する一切のリスクについては、本製品の使用者に帰属するものとします。 本製品に含まれるバグ、あるいは本製品の供給(納期遅延)、性能もしくは使用に起因する付帯的 損害もしくは間接的損害に対して、弊社に全面的に責がある場合でも、弊社はその製品に対する 改良(正常に動作する)、代品交換までとし、金銭面での賠償の責任は負わないものとしますので、 予めご了承ください。 本製品(ソフトウェアを含む)は、日本国内仕様です。本製品を日本国外で使用された場合、弊 社は一切責任を負いかねます。また、弊社は本製品に関し、海外での保守サービスおよび技術サ ポート等は行っておりません。 © 2003, 2016 Interface Corporation. All rights reserved. 595 GPC-5520 Help for Windows 商標/登録商標 本書に掲載されている会社名、製品名は、それぞれ各社の商標または登録商標です。 © 2003, 2016 Interface Corporation. All rights reserved. 596
© Copyright 2024 Paperzz