gpc-5300 - · pdf file... (2値化上限しきい値、2値化下限 ... bin...

432
CameraLink(C-PCI) www.interface.co.jp GPC-5300 CameraLink 画像入力インタフェースモジュール用 Windows ドライバ Help for Windows

Upload: buicong

Post on 15-Mar-2018

231 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

CameraLink(C-PCI)

www.interface.co.jp

GPC-5300 CameraLink 画像入力インタフェースモジュール用 Windows ドライバ

Help for Windows

Page 2: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

CameraLink(C-PCI)

© 2002 Interface Corporation. All rights reserved.

2

Page 3: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

3

目 次

第 1 章 はじめに .................................................4

1.1 概要 ...........................................................................4

1.2 特長 ...........................................................................4

第 2 章 製品仕様 .................................................7

2.1 基本仕様 .......................................................................7

2.2 製品構成 .......................................................................8

2.3 x64 環境上の使用について.......................................................14

2.4 拡張基板付き画像製品のデバイス名 ..............................................17

2.5 拡張基板のオンボードメモリに対するデータのR/W .................................20

2.6 画像データと付加情報 ..........................................................22

第 3 章 導入方法 ................................................27

3.1 インストール手順 ..............................................................27

3.2 キャプチャ制御 ................................................................27

3.3 拡張基板でのキャプチャ制御 ....................................................37

3.4 拡張基板メモリへのデータ転送制御 ..............................................52

3.5 クラスライブラリの参照方法 ....................................................57

第 4 章 リファレンス ............................................59

4.1 関数一覧 ......................................................................59

4.2 関数個別説明 ..................................................................63

4.3 構造体説明 ...................................................................369

4.4 戻り値一覧 ...................................................................413

第 5 章 サンプルプログラム .....................................415

5.1 実行手順 .....................................................................415

5.2 サンプルプログラム一覧 .......................................................416

第 6 章 ユーティリティ .........................................420

6.1 キャプチャユーティリティ .....................................................420

第 7 章 重要な情報 .............................................431

Page 4: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

4

第1章 はじめに

1.1 概要 GPC-5300 は、Windows 上のアプリケーションから、弊社 CameraLink 画像入力製品を制御する為

のソフトウェアです。

弊社CameraLink画像入力製品をWindows上のアプリケーションからDLLをダイナミックリンクし、

API をコールすることにより制御します。

本ドキュメントは、Windows 上で GPC-5300 を使用するための情報を掲載しています。

1.2 特長 1.2.1 カメラからの画像入力

・各カメラの仕様に合わせたカメラコンフィグファイルを提供しています。

・カメラの倍速モードでキャプチャする事ができます。

・Base, Medium, Full Configration に対応しています。※1

・カメラから、2CH 同時に入力を行う事が出来ます。※2

・RGB36/30/24bit カラーカメラと、8bit/10bit/12bit/14bit/16bit のモノクロカメラに対応して

います。※3

1.2.2 キャプチャ機能 ・コンピュータのメインメモリ領域へ画像データを DMA 転送により直接転送する事ができます。

・搭載しているオンボードメモリへ画像データを転送する事ができます。※4

・1 フレーム内の任意領域だけをキャプチャする事ができます。

・1フレームの水平方向幅と垂直方向幅を任意に変更してキャプチャする事ができます。

・RGB24bit 用のカメラで、画像データを RGB32bit、RGB16bit、RGB15bit、R8bit、G8bit、B8it

に変換してキャプチャする事ができます。

・モノクロ8bit以上のカメラで、指定した8bit幅を取り出してキャプチャすることができます。

・キャプチャが完了したフレーム数を知ることができ、1 フレームキャプチャ毎に割り込みイベ

ントを出すことができます。

・カメラの画像をメインメモリとオンボードメモリへ異なるフォーマットでキャプチャする事が

できます。

1.2.3 カメラコントロール信号 ・CC1~CC4 へカメラコントロール信号を出力する事ができるので、カメラの外部トリガシャッタ

モードで画像をキャプチャする事ができます。

・汎用入力と同期してカメラコントロール信号を出力する事ができます。

・一定周期でカメラコントロール信号を出力する事ができます。

Page 5: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

5

1.2.4 シリアル通信 カメラとのシリアル通信によって、解像度変更などのカメラへの設定を行なう事ができます。

1.2.5 2 値画像処理※5 ・リアルタイムで 2値画像をキャプチャする事ができます。

・2 値画像処理による面積値、重心値、フェレ径、慣性等価楕円の傾き角、射影、濃度分布の計

算を行なう事ができます。キャプチャを実行せずに、バックグランドで処理結果を取得するこ

とができます。※6

・面積値が指定した範囲内(または外)になった場合、トリガを発生させる事ができます。

・重心値が指定した範囲内(または外)になった場合、トリガを発生させる事ができます。

・トリガによる割り込みイベントを発生させる事ができます。

1.2.6 汎用カウンタ ・汎用カウンタを搭載しており、インターバルタイマ、デバイスが入力したフレームのカウンタ

として活用する事ができます。

・汎用カウンタの周期毎にトリガを発生させる事ができます。

1.2.7 拡張基板のオンボードメモリへのデータ転送 ※7 ・拡張基板のオンボードメモリに対してデータの Read/Write を行なうことが出来ます。

・拡張基板のオンボードメモリへ転送したデータに対して画像処理を行う事が出来ます。

・拡張基板のオンボードメモリからメインメモリへデータを転送するとき、拡張基板で画像処理

を行った結果を転送する事が出来ます。

1.2.8 PoCL エラー情報取得 ※8 ・PoCL エラー情報(クロックを検出できない、ケーブル未接続で電源投入を行なった等)を取得す

ることが出来ます。

・PoCL でエラーが発生した場合、割り込みを発生させることが出来ます。

1.2.9 調整つまみ ※9 ・画像処理情報(2 値化上限しきい値、2値化下限しきい値等)を調整つまみにより設定することが

出来ます。

・設定した内容は EEPROM に保存することができ、保存した情報は関数を実行することで読み込む

事が出来ます。

Page 6: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

6

1.2.10 その他 ・画面上で機能や使い方を説明するヘルプをサポートしていますので、開発中に関数の詳細説明

など、簡単に参照することができます

・カメラ画像を表示するキャプチャプログラムを用意しています。

※1 PEX-H530821, H531021, H531221 のみ、Base, Medium, Full Configration を使用することが出

来ます。そのほかの型式では、BaseConfigration のみ使用できます。

※2 PEX-H530922, H531122 のみ、2CH 同時入力を使用することが出来ます。その場合、Base Config

のみとなります。

※3 PEX-H530821, H531021, H531221 のみ、RGB36/30bit を使用することが出来ます。

※4 PEX-H530821, H530922, H531021, H531122, H531221 ではオンボードメモリを指定したキャプチ

ャを行うことが出来ません。

※5 カメラが倍速出力仕様の場合は、2値画像キャプチャを行う事が出来ません。また、PEX-H530922

は 2 値画像処理を行う事が出来ません。PEX-H531122, H531221 は拡張基板を使用した 2 値画像処

理を行う事が出来ます。

※6 PEX-H530821, H531021 のみフェレ径、慣性等価楕円の傾き角、射影、濃度分布の計算を行なう

事ができます。

※7 PEX-H531221 のみ使用する事ができます。

※8 PCI-530521 のみ使用する事ができます。

※9 PCI-530521 のみ使用する事ができます。

Page 7: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

7

第2章 製品仕様

2.1 基本仕様 大デバイス数 大 16 デバイス

対応カメラ エリアカメラ/ラインカメラ

水平方向ピクセル数 4095 ピクセル

※ラインモードの場合 65535 ピク

セル

垂直方向ライン数 4095 ライン

使用可能なメインメモリ 大容量

(x86 環境使用時)

約 63.97 MB

使用可能なメインメモリ容量

(x64 環境使用時)

256MB

※ Windows Xp/Server2003 の場合は約 32MB

データ転送形式 リングバッファ形式。 後の領域にデータを転送したら、

先頭領域へ戻って上書き転送します。

割り込みイベント コールバック関数、メッセージ呼び出し

シリアル受信 FIFO ソフトウェア FIFO を実装。4096byte のリングバッファ形

式。

Page 8: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

8

2.2 製品構成 製品構成 ファイル名 説明

弊社管理用ファイル GPC5300.VER 弊社ソフト管理用ファイル

新情報ドキュメント README.HTM 新ドキュメント掲載ファイル

動作確認プログラム CmlUtil.EXE 動作確認用プログラム

サンプルプログラム

IFCCML クラスライブラリ(Visual C# .NET 用)

CapSmpl 1 フレームキャプチャサンプルプログラム

Capture 連続キャプチャサンプルプログラム

SDRAM オンボードメモリへのキャプチャサンプルプロ

グラム

Bin 2 値画像キャプチャサンプルプログラム

Serial シリアル通信サンプルプログラム

CC CC 信号出力サンプルプログラム

Encoder 汎用カウンタサンプルプログラム

Sub_Capture 拡張基板でのキャプチャサンプルプログラム

Sub_Lut 拡張基板での階調変換サンプルプログラム

Sub_Filter_Spase 拡張基板での空間フィルタサンプルプログラム

Sub_Filter_Diffe

rence

拡張基板での差分フィルタサンプルプログラム

Sub_Bin 拡張基板での 2 値画像キャプチャサンプルプロ

グラム

Sub_Dil_Er 拡張基板での膨張・収縮サンプルプログラム

Sub_Lbl 拡張基板でのラベリングサンプルプログラム

Sub_Transfer 拡張基板へのデータ送受信サンプルプログラム

Sub_Transfer

_Lut

拡張基板から転送するデータに階調変換を行な

うサンプルプログラム

Sub_Transfer

_Filter_Spase

拡張基板から転送するデータに空間フィルタを

行なうサンプルプログラム

Sub_Transfer

_Filter_Differen

ce

拡張基板から転送するデータに差分フィルタを

行なうサンプルプログラム

Sub_Transfer

_Bin

拡張基板から転送するデータに 2 値化を行なう

サンプルプログラム

Sub_Transfer

_Dil_Er

拡張基板から転送するデータに膨張・収縮を行

なうサンプルプログラム

Visual C# .NET※1

Sub_Transfer_Lbl 拡張基板から転送するデータにラベリングを行

なうサンプルプログラム

Page 9: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

9

CapSmpl 1 フレームキャプチャサンプルプログラム

Capture 連続キャプチャサンプルプログラム

SDRAM オンボードメモリへのキャプチャサンプルプロ

グラム

Bin 2 値画像キャプチャサンプルプログラム

Serial シリアル通信サンプルプログラム

CC CC 信号出力サンプルプログラム

Encoder 汎用カウンタサンプルプログラム

Sub_Capture 拡張基板でのキャプチャサンプルプログラム

Sub_Lut 拡張基板での階調変換サンプルプログラム

Sub_Filter_Spase 拡張基板での空間フィルタサンプルプログラム

Sub_Filter_Diffe

rence

拡張基板での差分フィルタサンプルプログラム

Sub_Bin 拡張基板での 2 値画像キャプチャサンプルプロ

グラム

Sub_Dil_Er 拡張基板での膨張・収縮サンプルプログラム

Sub_Lbl 拡張基板でのラベリングサンプルプログラム

Sub_Transfer 拡張基板へのデータ送受信サンプルプログラム

Sub_Transfer

_Lut

拡張基板から転送するデータに階調変換を行な

うサンプルプログラム

Sub_Transfer

_Filter_Spase

拡張基板から転送するデータに空間フィルタを

行なうサンプルプログラム

Sub_Transfer

_Filter_Differen

ce

拡張基板から転送するデータに差分フィルタを

行なうサンプルプログラム

Sub_Transfer

_Bin

拡張基板から転送するデータに 2 値化を行なう

サンプルプログラム

Sub_Transfer

_Dil_Er

拡張基板から転送するデータに膨張・収縮を行

なうサンプルプログラム

Visual C++

Sub_Transfer_Lbl 拡張基板から転送するデータにラベリングを行

なうサンプルプログラム

Page 10: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

10

IFCCML クラスライブラリ(Visual Basic .NET 用)

CapSmpl 1 フレームキャプチャサンプルプログラム

Capture 連続キャプチャサンプルプログラム

SDRAM オンボードメモリへのキャプチャサンプルプロ

グラム

Bin 2 値画像キャプチャサンプルプログラム

Serial シリアル通信サンプルプログラム

CC CC 信号出力サンプルプログラム

Encoder 汎用カウンタサンプルプログラム

Sub_Capture 拡張基板でのキャプチャサンプルプログラム

Sub_Lut 拡張基板での階調変換サンプルプログラム

Sub_Filter_Spase 拡張基板での空間フィルタサンプルプログラム

Sub_Filter_Diffe

rence

拡張基板での差分フィルタサンプルプログラム

Sub_Bin 拡張基板での 2 値画像キャプチャサンプルプロ

グラム

Sub_Dil_Er 拡張基板での膨張・収縮サンプルプログラム

Sub_Lbl 拡張基板でのラベリングサンプルプログラム

Sub_Transfer 拡張基板へのデータ送受信サンプルプログラム

Sub_Transfer

_Lut

拡張基板から転送するデータに階調変換を行な

うサンプルプログラム

Sub_Transfer

_Filter_Spase

拡張基板から転送するデータに空間フィルタを

行なうサンプルプログラム

Sub_Transfer

_Filter_Differen

ce

拡張基板から転送するデータに差分フィルタを

行なうサンプルプログラム

Sub_Transfer

_Bin

拡張基板から転送するデータに 2 値化を行なう

サンプルプログラム

Sub_Transfer

_Dil_Er

拡張基板から転送するデータに膨張・収縮を行

なうサンプルプログラム

Visual Basic .NET

※1

Sub_Transfer_Lbl 拡張基板から転送するデータにラベリングを行

なうサンプルプログラム

Page 11: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

11

CapSmpl 1 フレームキャプチャサンプルプログラム

Capture 連続キャプチャサンプルプログラム

SDRAM オンボードメモリへのキャプチャサンプルプロ

グラム

Bin 2 値画像キャプチャサンプルプログラム

Serial シリアル通信サンプルプログラム

CC CC 信号出力サンプルプログラム

Encoder 汎用カウンタサンプルプログラム

Sub_Capture 拡張基板でのキャプチャサンプルプログラム

Sub_Lut 拡張基板での階調変換サンプルプログラム

Sub_Filter_Spase 拡張基板での空間フィルタサンプルプログラム

Sub_Filter_Diffe

rence

拡張基板での差分フィルタサンプルプログラム

Sub_Bin 拡張基板での 2 値画像キャプチャサンプルプロ

グラム

Sub_Dil_Er 拡張基板での膨張・収縮サンプルプログラム

Sub_Lbl 拡張基板でのラベリングサンプルプログラム

Sub_Transfer 拡張基板へのデータ送受信サンプルプログラム

Sub_Transfer

_Lut

拡張基板から転送するデータに階調変換を行な

うサンプルプログラム

Sub_Transfer

_Filter_Spase

拡張基板から転送するデータに空間フィルタを

行なうサンプルプログラム

Sub_Transfer

_Filter_Differen

ce

拡張基板から転送するデータに差分フィルタを

行なうサンプルプログラム

Sub_Transfer

_Bin

拡張基板から転送するデータに 2 値化を行なう

サンプルプログラム

Sub_Transfer

_Dil_Er

拡張基板から転送するデータに膨張・収縮を行

なうサンプルプログラム

Visual Basic

Sub_Transfer_Lbl 拡張基板から転送するデータにラベリングを行

なうサンプルプログラム

Page 12: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

12

IFCCML クラスライブラリ

(Delphi for the Microsoft .NET Framework 用)

Delphi .NET※2

CapSmpl 1 フレームキャプチャサンプルプログラム

CapSmpl 1 フレームキャプチャサンプルプログラム

Capture 連続キャプチャサンプルプログラム

SDRAM オンボードメモリへのキャプチャサンプルプロ

グラム

Bin 2 値画像キャプチャサンプルプログラム

Serial シリアル通信サンプルプログラム

CC CC 信号出力サンプルプログラム

Encoder 汎用カウンタサンプルプログラム

Sub_Capture 拡張基板でのキャプチャサンプルプログラム

Sub_Lut 拡張基板での階調変換サンプルプログラム

Sub_Filter_Spase 拡張基板での空間フィルタサンプルプログラム

Sub_Filter_Diffe

rence

拡張基板での差分フィルタサンプルプログラム

Sub_Bin 拡張基板での 2 値画像キャプチャサンプルプロ

グラム

Sub_Dil_Er 拡張基板での膨張・収縮サンプルプログラム

Sub_Lbl 拡張基板でのラベリングサンプルプログラム

Sub_Transfer 拡張基板へのデータ送受信サンプルプログラム

Sub_Transfer

_Lut

拡張基板から転送するデータに階調変換を行な

うサンプルプログラム

Sub_Transfer

_Filter_Spase

拡張基板から転送するデータに空間フィルタを

行なうサンプルプログラム

Sub_Transfer

_Filter_Differen

ce

拡張基板から転送するデータに差分フィルタを

行なうサンプルプログラム

Sub_Transfer

_Bin

拡張基板から転送するデータに 2 値化を行なう

サンプルプログラム

Sub_Transfer

_Dil_Er

拡張基板から転送するデータに膨張・収縮を行

なうサンプルプログラム

Delphi

Sub_Transfer_Lbl 拡張基板から転送するデータにラベリングを行

なうサンプルプログラム

Page 13: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

13

ライブラリ IFCml.Lib インポートライブラリファイル

Win32コンパイラ用とx64コンパイラ用の2種類

を用意しています。

IFCml.H Visual C++用ヘッダファイル

IFCml.BAS Visual Basic 用ヘッダファイル

ヘッダファイル

ICml.PAS Delphi 用ヘッダファイル

ヘルプ HELP.PDF

HELP_NET.PDF

ヘルプ(PDF 形式)

※1 Visual C# .NET,Visual Basic.NET 用サンプルプログラムは、それぞれ Visual C# .NET 2003,

Visual Basic .NET 2003 を使用して作成しています。

※2 Delphi .NET 用サンプルプログラムは、Delphi 8 for the Microsoft .NET Framework を使用

して作成しています。

Page 14: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

14

2.3 x64 環境上の使用について

2.3.1 メインメモリの操作 x64 環境では、ユーザアプリケーション上で確保したメインメモリ領域に対して DMA 転送する

事ができません。

弊社 Windows ドライバは、OS が起動してドライバがロードされるタイミングで、連続した物理

メモリをカーネル内で確保し、確保したメモリ領域に DMA 転送を行います。確保するデータサイ

ズは 256MB 分 (※ Windows Xp/Server2003 の場合は約 32MB)で、確保する場所は 32bit 空間内と

なります。

ドライバは、ユーザアプリケーション側で CmlRegistMemInfo 関数介して要求を受けると、指定

サイズ分の物理メモリを論理空間へマッピングして、ユーザアプリ上でメモリアクセス可能にし

ます。CmlGetMemPtrValue 関数で論理メモリの先頭アドレスをポインタ変数として取得し、画像

データをポインタ操作で使用する事ができます。

FFFFFFFF_FFFFFFFFh

00000000_FFFFFFFFh

00000000_00000000h

論理メモリ

256MB 分確保

物理メモリ空間

カーネル空間 ユーザ空間

ユーザアプリケーション

ポインタ変数

論理メモリへマッピング

Page 15: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

15

2.3.2 物理メモリの確保結果の確認 OS 起動時に物理メモリを確保しますが、確保結果はイベントログとして保存されています。イ

ベントビューアの「システム」に「CP530121」というソース名でログとして情報を残しています。

物理メモリの確保に成功すると、説明欄に「cp530121.sys -- It succeeded in allocating a

physical memory.」と記載されます。確保に失敗すると「cp530121.sys -- It failed in the

allocation of a physical memory.」と記載されます。

2.3.3 2CH 同時入力製品のメモリ確保について PEX-H530922, H531122 は 2CH同時入力を行う事が出来るため、カーネル内で確保するメモリ領域

が 2 つになります。ドライバインストール時はCH1, CH2 ともに 256MB分 (※ Windows

Xp/Server2003 の場合は約 32MB)確保しています。CH1 の場合、「2.3.2物理メモリの確保結果の確

認」と同様に確保結果を確認出来ます。

CH2 の場合も、「2.3.2物理メモリの確保結果の確認」と同様に確保メモリを確認出来ますが、記

載される文字列が「cp530121.sys -- It succeeded in allocating a second physical memory.」,

「cp530121.sys -- It failed in the allocation of a second physical memory.」となります。

Page 16: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

16

2.3.4 物理メモリの確保サイズの変更 OS 起動時に物理メモリを確保するサイズを変更する事も可能です。

サイズの変更は、キャプチャユーティリティ(CmlUtil.exe)で行う事ができます。

詳細は、「6.1 キャプチャユーティリティ」を参照してください。

Page 17: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

17

2.4 拡張基板付き画像製品のデバイス名

2.4.1 IFIMGCML と IFCMLSUB 拡張基板付き画像製品のデバイスドライバをインストールした際、マルチファンクションデバ

イスとして、メイン基板と拡張基板を別々のデバイスとして割り当てられます。

割り当てられるデバイスクラス、デバイス名を以下に示します。

型式 デバイスクラス デバイス名

IFIMGCML IFIMGCMLx PEX-H530821

PEX-H530922 Interface Image Processing Device NODEVICE

IFIMGCML IFIMGCMLx PEX-H531021

PEX-H531122

PEX-H531221

Interface Image Processing Device IFCMLSUBx

上記以外の型式 IFIMGCML IFIMGCMLx

※ 表中デバイス名の 後に表記されている xには RSW1 の値 + 1 の値が入ります。

「IFIMGCML」はキャプチャ機能などの CameraLink 画像入力製品の標準機能をサポートしたデバ

イスです。「IFCMLSUB」は拡張基板へのアクセスや画像処理機能の設定をサポートしたデバイスと

なります。

PEX-H530821, PEX-H530922 は拡張基板を搭載していませんが、デバイス名「NODEVICE」としてイ

ンストールされます。

デバイスオープン時には、「IFIMGCMLx」「IFCMLSUBx」の、二つのデバイス名を指定することが

出来ます。「NODEVICE」を指定することは出来ません。

二つのデバイス名を指定した場合に使用出来る関数についての詳細は「CmlOpen」関数または

「CmlOpenEx」関数を参照してください。

Page 18: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

18

2.4.2 デバイスマネージャ上での、表示の説明

マルチファンクションデバイスとして認識される製品の、ドライバインストール後のデバイス

マネージャ上での表示を PEX-H530821, H531021 を例にして、各部の説明を行います。

・PEX-H530821 をインストールした場合のデバイスマネージャ

・PEX-H531021 をインストールした場合のデバイスマネージャ

・デバイスクラスについて

赤枠で示した部分がデバイスクラスになります。マルチファンクションデバイスとして認識さ

れる場合、デバイスクラスが「IFIMGCML」と「Interface Image Processing Device」の二つが

表示されます。

Page 19: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

19

・製品型式について

「IFIMGCML」と「Interface Image Processing Device」の下に表示される製品型式名は同じで

すが、緑枠で示した部分が異なります。「Capture」はメイン基板の制御を行うドライバです。

「Image Processing」は画像処理を行うための拡張基板を制御するドライバです。

・デバイス名について

青枠で示した部分がデバイス名となります。

PEX-H530821 では、マルチファンクションデバイスとして認識はしていますが、拡張基板を

搭載していないため、「IFIMGCML1」,「NODEVICE」と表示されています。「NODEVICE」と表示さ

れている場合は、拡張基板へアクセスが行えない事を意味します。

PEX-H531021 では、マルチファンクションデバイスとして認識し拡張基板を搭載しているた

め、「IFIMGCML1」,「IFCMLSUB1」と表示されています。この場合、拡張基板を認識し、拡張基

板にアクセス出来る状態であることを示します。この「IFCMLSUB1」をデバイスオープン時に使

用することで、拡張基板の画像処理制御を行う事が出来ます。

Page 20: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

20

2.5 拡張基板のオンボードメモリに対するデータの R/W PEX-H531221 では拡張基板のオンボードメモリ(以後、拡張基板メモリとする)に対して、デー

タの読み込み/書き込みを行う事が出来ます。各転送方法により、同時に使用出来ない場合があり

ます。

2.5.1 拡張基板メモリへのデータ転送の概略図

拡張基板メモリ

(512MB)

1FFFFFFFh

カメラ

経路①

CaptureLine

経路③

ReadLine2

経路④

WriteLine

経路②

ReadLine1

0hメインメモリ(ユーザ領域)

各経路の仕様

経路 名前 仕様

① CaptureLineカメラからキャプチャを行なう経路です。

ReadLine1 と同時に使用することは出来ません。

② ReadLine1 拡張基板メモリからメインメモリへデータを転送します。

CaptureLine と同時に使用することは出来ません。

③ ReadLine2 拡張基板メモリからメインメモリへデータを転送します。

WriteLine と同時に使用することは出来ません。

④ WriteLine メインメモリから拡張基板メモリへデータを転送します。

ReadLine2 と同時に使用することは出来ません。

拡張基板メモリに対してRead/Writeアクセスを同時に行いたい場合、ReadLine1とWriteLine

使用することにより、拡張基板メモリの双方向のデータ転送を行なうことが出来ます。

また、カメラからデータを転送している 中に拡張基板メモリに対して Write を行ないたい

場合は、CaptureLine と WriteLine を使用することで、カメラからデータを転送しながら拡張

基盤メモリに対してデータ転送を行う事が出来ます。

このように、用途に応じて経路を選択することで、キャプチャや拡張基板への Read/Write

アクセスなど様々な動作を同時に行う事が出来ます。

Page 21: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

21

2.5.2 拡張基板メモリへの画像処理 拡張基板メモリのデータをメインメモリメモリに転送する場合、転送するデータに対して画

像処理を行い、その画像処理結果を転送するが出来ます。また、ReadLine1, 2 に対して別々の

画像処理を行う事が出来ます。

以下の図のように、拡張基板メモリからデータ転送際に、画像処理を行なうことが出来ます。

また、画像処理を行なわず、拡張基板メモリのデータをそのままメインメモリへ転送するこ

とも出来ます。

拡張基板メモリ

(512MB)

メイン基板 拡張基板

1FFFFFFFh

経路③

ReadLine2

経路②

ReadLine1

0hユーザメモリ

画像処理 IP

画像処理の有効 /無効、画像処理の設定など、経路ごとに設定を

行なう事で、各経路ごとに個別の画像処理を行ってデータを転

送することが出来ます。

2 値化

階調変換

フィルタ

膨張 /収縮

データを転送する際、画像処理機能の有効無効、画像処理機能の設定など、ReadLine1, 2 に

対して別々の設定を行なうためには、ReadLine1, 2 に対して別々のハンドルを指定して、画像

処理の設定を行う必要があります。

個別のハンドルを取得するには CmlOpenEx 関数を使用します。デバイス名に「IFCMLSUBx」を

指定し、Flag 引数に経路を指定することですることで拡張基板に対するハンドルをそれぞれ取

得することが出来ます。

※ CmlOpenEx 関数の詳細については、各関数の個別説明を参照してください。

2.5.3 拡張基板レジスタの設定 拡張基板で画像処理したデータをメインメモリに転送する際、水平有効期間レジスタ

(1010Ch)及び、画像処理ライン数設定レジスタ(10180h)を設定してください。

設定値については、VSC-5000 付属のハードウェア設計書を参照してください。

Page 22: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

22

2.6 画像データと付加情報 キャプチャ等を行なった際、画像データのほかに濃度分布や射影データなど、付加情報を一緒

に取得することが出来ます。以下に付加情報の配置と、付加情報のサイズを示します。

2.6.1 付加情報の配置 画像データと付加情報は以下の図のように配置されます。また、画像データに付加する情報は

選択することが出来ますが、選択した付加情報によっては別の付加情報も一緒に付加される場合

があります。

ユーザデータを付加する場合、VSC-5000 で作成された FPGA で定義するデータを取得します。

FPGA をカスタマイズすることで、転送するデータの内容やデータサイズが異なります。

画像データ(フレーム 1)

フレーム 1 の濃度分布

フレーム 1のラベリング数/ステータス

フレーム 1 のラベリング面積

フレーム 1 のラベリングフェレ径

(Xmin, Xmax, Ymin, Ymax)

フレーム 1 の射影データ

フレーム 1 のラベリング重心

(ΣX, ΣY)

フレーム 1 のラベリング傾き角

(ΣX*X, ΣXY, ΣY*Y)

ユーザデータ

※型式によって指定できる付加情報が異なります。指定できる付加情報の詳細は

CmlSetCaptureFormatInfo 関数、CmlSelectImageProcessing 関数を参照してください。

Page 23: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

23

(濃度分布のデータ配列)

指定した色成分に対する濃度値の各画素数を取得します。

Data サイズ

bit31~bit26 bit25~bit0

濃度値 0の画素数

: 16Kbyte 予約

濃度値 4095 の画素数

(射影のデータ配置)

測定エリア内にある 2値画像の有効画素数をカウントします。

各座標に対する画素数を取得する事ができます。

測定エリア

0

4095

0 4095

Y

X

X 座標および、Y座標の画素数データは以下のように配置されます。

測定エリア以外の座標の画素数は全て 0となります。

Data

サイズ bit31

bit29

bit28~bit16

bit15

bit13

bit12~bit0

Y 座標 0の画素数 X 座標 0の画素数

Y 座標 1の画素数 X 座標 1の画素数

: : 16Kbyte 未使用領域

Y 座標 4095 の画素数

未使用領域

X 座標 4095 の画素数

Page 24: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

24

(ラベル数/ステータスのデータ配置)

ラベリング処理を行った時のラベル数とエラー情報を取得します。

ラベルをつけられた物体の面積、ラベルをつけられた物体の重心、ラベルをつけられた物体のフ

ェレ径、ラベルをつけられた物体の傾き角のいずれかを取得する場合、本付加情報も必ず付加さ

れます。

Data サイズ

bit63~bit16 bit15~bit8 bit7~bit0

8byte 予約 ステータス※ ラベル数

※bit15-10: 予約

bit9: 真ラベルオーバーフラグ

仮ラベルを 適化したものです。

この処理結果がラベリング処理結果として出力されます。

0:真ラベルの数は 256 を超えていない

1:真ラベルの数が 256 以上になった。

bit8: 仮ラベルオーバーフラグ

初にラベリング処理したラベルです。

0:仮ラベルの数は 256 を超えていない

1:仮ラベルの数が 256 以上になった。

Page 25: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

25

(面積のデータ配置)

ラベリング処理を行った後の各番号の面積値を取得します。

Data サイズ

bit31~bit19 bit18~bit0

ラベル番号 0の面積値

ラベル番号 1の面積値

ラベル番号 2の面積値

ラベル番号 253 の面積値

ラベル番号 254 の面積値

1024byte 予約

ラベル番号 255 の面積値

(重心値のデータ配置)

ラベリング処理を行った後の各番号の重心値を取得します。

ΣXとΣYの値を取得します。

Data サイズ

bit63~bit37 bit36~bit0

ラベル番号 0のΣX

: 2048byte 予約

ラベル番号 255 のΣX

ラベル番号 0のΣY

: 2048byte 予約

ラベル番号 255 のΣY

※ΣXとは、有効画素(二値画素)の X座標の加算値です。

ΣY とは、有効画素(二値画素)の Y座標の加算値です。

(フェレ径のデータ配置)

ラベリング処理を行った後の各番号の外接矩形座標を取得します。

Data

サイズ bit31

bit26

bit25~bit16

bit15

bit10

bit9~bit0

ラベル番号 0の X値(MAX) ラベル番号 0の X値(MIN)

: : 1024byte 未使用

領域 ラベル番号 255 の X 値(MAX)

未使用

領域 ラベル番号 255の X値(MIN)

ラベル番号 0の Y値(MAX) ラベル番号 0の Y値(MIN)

: : 1024byte 未使用

領域 ラベル番号 255 の Y 値(MAX)

未使用

領域 ラベル番号 255の Y値(MIN)

Page 26: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

26

(傾き角のデータ配置)

ラベリング処理を行った後の、各番号の慣性等価楕円の傾き角を算出する為の演算結果を取得し

ます。

本情報を取得する際、ラベルをつけられた物体の面積、ラベルをつけられた物体の重心値の情報

が必ず付加されます。

Data サイズ

bit31~bit20 bit19~bit0

ラベル番号 0のΣX2(下位 20bit)

ラベル番号 0のΣX2(上位 20bit)

ラベル番号 255 のΣX2(下位 20bit)

2048byte 予約

ラベル番号 255 のΣX2(上位 20bit)

ラベル番号 0のΣXY(下位 20bit)

ラベル番号 0のΣXY(上位 20bit)

ラベル番号 255 のΣXY(下位 20bit)

2048byte 予約

ラベル番号 255 のΣXY(上位 20bit)

ラベル番号 0のΣY2(下位 20bit)

ラベル番号 0のΣY2(上位 20bit)

ラベル番号 255 のΣY2(下位 20bit)

2048byte 予約

ラベル番号 255 のΣY2(上位 20bit)

※ΣX2 とは、有効画素(二値画素)の X座標を自乗した値の加算値です。

ΣXY とは、有効画素(二値画素)の X座標と Y座標を掛け合わせた値の加算値です。

ΣY2 とは、有効画素(二値画素)の Y座標を自乗した値の加算値です。

Page 27: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

27

第3章 導入方法

3.1 インストール手順 README.HTM のインストール方法を参照してください。

(注意)

同一型式のボードを複数枚使用する場合は、各ボードのロータリースイッチ(RSW1)の設定値が

同一型式同士で重複しないように設定してからスロットに実装し、システムを起動して下さい。

同一型式が複数存在する場合、制御対象を一意に識別するための番号となります。重複していた

場、ドライバインストールは正常に行えません。

3.2 キャプチャ制御 基本的な制御の手順は以下の通りです。

1. 初期化 デバイスを CmlOpen 関数で初期化します。PEX-H530921, H531122 の場合は CmlOpenEx 関数で

初期化を行ってください。デバイス名は「IFIMGCMLx」を指定します。

初期化が成功するとデバイスハンドルを取得する事ができます。デバイスハンドルを弊社API

関数へ渡す事により、指定したデバイスの制御を行う事ができます。

CmlOpen 関数及び、CmlOpenEx 関数の詳細については、各関数の個別説明を参照してください。

2. カメラコンフィグレーションファイルの作成と読み込み ご使用になるカメラの仕様をデバイスへセットする必要があります。デバイスへのセットは、

カメラコンフィグレーションファイルを使用します。

カメラコンフィグレーションファイルを、「5. CmlReadCamConfFile」で説明するコンフィグ

レーションファイルの書式に合わせて直接作成するか、弊社ユーティリティ「CmlUtil.exe」で

作成作成する事ができます。

カメラコンフィグレーションファイルを CmlReadCamConfFile 関数で読み込み、カメラ情報を

デバイスへ設定します。

●ラインカメラの使用について

ラインカメラでは、以下の 2パターンで使用する事ができます。(PEX-Hxxxx 製品以外)

エリアカメラモード 見かけ上エリアカメラとして使用する事ができます。

画像を X-Y 画像として扱い、フレーム単位で制御することができます。

ただし、フレーム間にブランク期間を設けるので、ブランク期間中のラ

インデータを取り込むことはできません。

ラインカメラモード ラインデータを遂次取り込みます。ラインカウンタ機能を使用してキャ

プチャを制御します。

Page 28: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

28

3. キャプチャ(x86専用) カメラコンフィグレーションファイルの読み込み処理が完了すると、キャプチャ動作の設定を行

なう事ができます。

START

①キャプチャする画像のフォーマット、スケーリングキャプチャの条件、

クリッピングキャプチャの条件より 1 フレーム当たりのデータサイズを得る。

転送先バッファは?

②動的バッファの場合、欲しいフレーム数分

のサイズのバッファを確保する。

メインメモリ

オンボードメモリ

③バッファ管理用ハンドル値を得る。

④ハンドル値とキャプチャ条件をデバイスへセットする。

⑤キャプチャ開始

⑥キャプチャ完了後、画像データを取得して、任意

の画像処理を行なう。

END

① CmlSetCaptureFormatInfo 関数へ画像のフォーマットとスケーリングキャプチャの条件とク

リッピングキャプチャの条件の情報を IFCMLCAPFMT 構造体の変数へセットし、関数へ渡すと、

1フレーム当たりのデータサイズを求める事ができます。

② 動的バッファの場合は、①で得たデータサイズを元に、malloc 関数(C 言語)などで任意サイ

ズ分のバッファを確保します。

③ CmlRegistMemInfo 関数でバッファ管理用ハンドルを取得する事ができます。

メインメモリの場合は確保した動的バッファの先頭アドレスと確保したサイズを関数へ渡し

ます。

オンボードメモリの場合は、確保したいサイズだけを関数へ渡します。

④ ハンドル値と①で使用した IFCMLCAPFMT 構造体の変数を CmlSetCapConfig 関数へ渡す事によ

り、デバイスへキャプチャ動作条件を設定します。

⑤ CmlStartCapture 関数でキャプチャを開始します。

⑥ キャプチャが完了後、CmlGetMemData 関数で指定したフレームの画像データを取得する事がで

きます。

Page 29: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

29

4. キャプチャ(x64専用) 64bit 環境上でメインメモリへキャプチャする場合、ユーザアプリケーション上で確保したメ

モリでなく、ドライバ内で確保したメインメモリを使用します。

ドライバ内で確保したメインメモリの先頭アドレスを取得する事ができますので、キャプチャ

完了後の画像データを直接アクセスできるようになります。

START

①キャプチャする画像のフォーマット、スケーリングキャプチャの条件、

クリッピングキャプチャの条件より 1 フレーム当たりのデータサイズを得る。

転送先バッファは?

メインメモリ

オンボードメモリ

②バッファ管理用ハンドル値を得る。

④ハンドル値とキャプチャ条件をデバイスへセットする。

⑤キャプチャ開始

⑥キャプチャ完了後、画像データを取得して、任意

の画像処理を行なう。

END

③バッファの先頭アドレスを取得する。

① CmlSetCaptureFormatInfo 関数へ画像のフォーマットとスケーリングキャプチャの条件とク

リッピングキャプチャの条件の情報を IFCMLCAPFMT 構造体の変数へセットし、関数へ渡すと、

1フレーム当たりのデータサイズを求める事ができます。

② CmlRegistMemInfo 関数に必要サイズ分のバッファサイズを指定する事によりバッファ管理用

ハンドルを取得する事ができます。

第 2引数の BuffPtr に-1 を渡すとメインメモリの指定となります。NULL を渡すとオンボード

メモリへ指定となります。

③ CmlGetMemPtrValue 関数で、メインメモリ内に確保したバッファの先頭アドレスを取得します。

④ ハンドル値と①で使用した IFCMLCAPFMT 構造体の変数を CmlSetCapConfig 関数へ渡す事によ

り、デバイスへキャプチャ動作条件を設定します。

⑤ CmlStartCapture 関数でキャプチャを開始します。

⑥ キャプチャが完了後、CmlGetMemData 関数で指定したフレームの画像データを取得する事がで

きます。

5. 2値画像のキャプチャ(x86専用)

Page 30: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

30

2 値画像のキャプチャを実行します。

START

①キャプチャする画像を 2 値画像に指定し、スケーリングキャプチャの条件、

クリッピングキャプチャの条件より 1 フレーム当たりのデータサイズを得る。

転送先バッファは?

③動的バッファの場合、欲しいフレーム数分

のサイズのバッファを確保する。

メインメモリ

オンボードメモリ

④バッファ管理用ハンドル値を得る。

⑤ハンドル値とキャプチャ条件をデバイスへセットする。

⑥キャプチャ開始

⑦キャプチャ完了後、画像データを取得して、任意

の画像処理を行なう。

END

②2値化条件を設定する。

① CmlSetCaptureFormatInfo 関数へ画像のフォーマットを 2 値画像にして、スケーリングキャプ

チャの条件とクリッピングキャプチャの条件を IFCMLCAPFMT 構造体の変数へセットし、関数

へ渡すと、1フレーム当たりのデータサイズを求める事ができます。

② CmlSetColorIngredient 関数で 2 値化対象色成分を指定し、CmlSetBinParam 関数でしきい値、

反転条件を設定します。

③ 動的バッファの場合は、①で得たデータサイズを元に、malloc 関数(C 言語)などで任意サイズ

分のバッファを確保します。

④ CmlRegistMemInfo 関数でバッファ管理用ハンドルを取得する事ができます。

メインメモリの場合は確保した動的バッファの先頭アドレスと確保したサイズを関数へ渡し

ます。

オンボードメモリの場合は、確保したいサイズのみを関数へ渡します。

⑤ ハンドル値と①で使用したIFCMLCAPFMT構造体の変数をCmlSetCapConfig関数へ渡す事により、

デバイスへキャプチャ動作条件を設定します。

⑥ CmlStartCapture 関数でキャプチャを開始します。

⑦ キャプチャが完了後、CmlGetMemData 関数で指定したフレームの画像データを取得する事がで

きます。

6. 2値画像のキャプチャ(x64専用) 2 値画像のキャプチャを実行します。

Page 31: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

31

START

①キャプチャする画像を 2 値画像に指定し、スケーリングキャプチャの条件、

クリッピングキャプチャの条件より 1 フレーム当たりのデータサイズを得る。

転送先バッファは?

④バッファの先頭アドレスを取得する。

メインメモリ

オンボードメモリ

③バッファ管理用ハンドル値を得る。

⑤ハンドル値とキャプチャ条件をデバイスへセットする。

⑥キャプチャ開始

⑦キャプチャ完了後、画像データを取得して、任意

の画像処理を行なう。

END

②2値化条件を設定する。

① CmlSetCaptureFormatInfo 関数へ画像のフォーマットを 2値画像にして、スケーリングキャプ

チャの条件とクリッピングキャプチャの条件を IFCMLCAPFMT 構造体の変数へセットし、関数

へ渡すと、1フレーム当たりのデータサイズを求める事ができます。

② CmlSetColorIngredient 関数で 2値化対象色成分を指定し、CmlSetBinParam 関数でしきい値、

反転条件を設定します。

③ CmlRegistMemInfo 関数に必要サイズ分のバッファサイズを指定する事によりバッファ管理用

ハンドルを取得する事ができます。

第 2引数の BuffPtr に-1 を渡すとメインメモリの指定となります。NULL を渡すとオンボード

メモリへ指定となります。

④ CmlGetMemPtrValue 関数で、メインメモリ内に確保したバッファの先頭アドレスを取得します。

⑤ ハンドル値と①で使用した IFCMLCAPFMT 構造体の変数を CmlSetCapConfig 関数へ渡す事によ

り、デバイスへキャプチャ動作条件を設定します。

⑥ CmlStartCapture 関数でキャプチャを開始します。

⑦ キャプチャが完了後、CmlGetMemData 関数で指定したフレームの画像データを取得する事がで

きます。

7. キャプチャ(割り込み使用時) 割り込みを使用したキャプチャを説明します。

Page 32: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

32

START

①キャプチャ条件とバッファ管理用ハンドルの取得を行ない、デバイスへ

セットします。

④キャプチャ開始(非同期モード)

②割り込みイベントの設定

③割り込み要因を 1フレーム毎割り込みに指定する。

⑤割り込みルーチン割り込み

(割り込み処理実行)

・リアルタイムに描画処理

・ユーザの画像処理

END

START

END

① 32bitOS 環境でご使用になる場合は「2.キャプチャ(x86 専用)」、64bitOS 環境でご使用になる場

合は「3.キャプチャ(x64 専用)」参照してください。

② CmlSetEvent 関数で割り込み発生時の動作を設定します。コールバック関数、メッセージ処理

を選択できます。

③ CmlSetEventMask 関数で割り込み要因を選択します。1 フレーム毎の割り込みを発生、キャプ

チャが完了時の割り込み発生を選択できます。

④ CmlStartCapture 関数でキャプチャを開始します。非同期モードで開始してください。

キャプチャが完了せずに関数が返り、別の処理へ移ります。

⑤ 割り込みが発生したら、②で設定した割り込みルーチン内で任意の処理を行なう事ができます。

Page 33: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

33

8. 2値画像処理による面積値、重心値の取得 ハードウェア上でリアルタイムに、カメラの画像データを 2値化画像処理しています。

キャプチャ制御を実施しなくとも、入力完了したカメラのフレームに対する面積値、重心値を取

得できます。

START

②測定エリアを設定する。

③面積値、および重心値を取得する。

END

①2値化条件を設定する。

① CmlSetColorIngredient 関数で 2 値化対象色成分を指定し、CmlSetBinParam 関数でしきい値、

反転条件を設定します。

② CmlSetMeasurementRange 関数で 2値画像処理の測定エリアを指定します。開始座標と X方向の

長さ、Y方向の長さを指定します。

③ CmlGetAreaValue 関数で面積値を取得します。CmlGetGrvValue で重心値を取得します。

Page 34: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

34

9. 2値画像処理による面積値、重心値の取得(x86専用) 複数フレームの面積値、重心値を取得したい場合は、キャプチャ画像データに付加情報を付けて

キャプチャを実行します。

START

① 付加情報として面積値と重心値、スケーリングキャプチャの条件、クリッピ

ングキャプチャの条件を設定する。

設定後、1フレーム当たりのデータサイズを得る。

転送先バッファは?

④動的バッファの場合、欲しいフレーム数分

のサイズのバッファを確保する。

メインメモリ

オンボードメモリ

⑤バッファ管理用ハンドル値を得る。

⑥ハンドル値とキャプチャ条件をデバイスへセットする。

⑦キャプチャ開始

⑧キャプチャ完了後、指定フレームの面積値、重心

値を取得する。

END

②2 値化条件を設定する。

③測定エリアを設定する。

① CmlSetCaptureFormatInfo関数へ付加情報として面積値、重心地を選択するようにIFCMLCAPFMT

構造体の変数へセットし、関数へ渡すと、1フレーム当たりのデータサイズを求める事ができ

ます。

② CmlSetColorIngredient 関数で 2 値化対象色成分を指定し、CmlSetBinParam 関数でしきい値、

反転条件を設定します。

③ CmlSetMeasurementRange 関数で 2値画像処理の測定エリアを指定します。開始座標と X方向の

長さ、Y方向の長さを指定します。

④ 動的バッファの場合は、①で得たデータサイズを元に、malloc 関数などで任意サイズ分のバッ

ファを確保します。

⑤ CmlRegistMemInfo 関数でバッファ管理用ハンドルを取得する事ができます。

メインメモリの場合は確保した動的バッファの先頭アドレスと確保したサイズを関数へ渡し

ます。オンボードメモリの場合は、確保したいサイズのみを関数へ渡します。

⑥ ハンドル値と①で使用したIFCMLCAPFMT構造体の変数をCmlSetCapConfig関数へ渡す事により、

デバイスへキャプチャ動作条件を設定します。

⑦ CmlStartCapture 関数でキャプチャを開始します。

⑧ キャプチャが完了後、CmlGetMemData 関数で指定したフレームの面積値、重心値を取得するこ

とができます。

Page 35: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

35

10. 2値画像処理による面積値、重心値の取得(x64専用) 複数フレームの面積値、重心値を取得したい場合は、キャプチャ画像データに付加情報を付けて

キャプチャを実行します。

START

① 付加情報として面積値と重心値、スケーリングキャプチャの条件、クリッピ

ングキャプチャの条件を設定する。

設定後、1フレーム当たりのデータサイズを得る。

転送先バッファは?

⑤バッファの先頭アドレスを取得する。

メインメモリ

オンボードメモリ

④バッファ管理用ハンドル値を得る。

⑥ハンドル値とキャプチャ条件をデバイスへセットする。

⑦キャプチャ開始

⑧キャプチャ完了後、指定フレームの面積値、重心

値を取得する。

END

②2 値化条件を設定する。

③測定エリアを設定する。

① CmlSetCaptureFormatInfo 関数へ付加情報として面積値、重心地を選択して、1フレーム当た

りのデータサイズを求める事ができます。

② CmlSetColorIngredient 関数で 2値化対象色成分を指定し、CmlSetBinParam 関数でしきい値、

反転条件を設定します。

③ CmlSetMeasurementRange 関数で 2 値画像処理の測定エリアを指定します。開始座標と X 方向

の長さ、Y方向の長さを指定します。

④ CmlRegistMemInfo 関数に必要サイズ分のバッファサイズを指定する事によりバッファ管理用

ハンドルを取得する事ができます。

第 2引数の BuffPtr に-1 を渡すとメインメモリの指定となります。NULL を渡すとオンボード

メモリへ指定となります。

⑤ CmlGetMemPtrValue 関数で、メインメモリ内に確保したバッファの先頭アドレスを取得します。

⑥ ハンドル値と①で使用した IFCMLCAPFMT 構造体の変数を CmlSetCapConfig 関数へ渡す事によ

り、デバイスへキャプチャ動作条件を設定します。

⑦ CmlStartCapture 関数でキャプチャを開始します。

キャプチャが完了後、CmlGetMemData 関数で指定したフレームの面積値、重心値を取得すること

ができます。

Page 36: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

36

11. 終了処理 CmlClose 関数でデバイスの終了処理を行います。アプリケーションでは、必ずクローズ処理を

行ってから終了してください。

クローズ処理は CmlOpen 関数または CmlOpenEx 関数を使用して取得したハンドルの数だけ行っ

てください。

詳細は CmlClose 関数を参照してください。

Page 37: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

37

3.3 拡張基板でのキャプチャ制御 本項目は、PEX-H531021, H531122 に搭載されている拡張基板の制御方法や、拡張基板で使用出

来る画像処理機能の説明を行います。

GPC-5300 のライブラリで行える機能は以下の通りです。

① 拡張基板で画像処理した画像データのキャプチャ。

② 拡張基板で画像処理した結果(面積・重心など)の取得。

③ 拡張基板上に搭載している画像処理機能のパラメータ設定。

2 値化しきい値、階調変換における LUT、フィルタ係数、膨張・収縮設定等。

④ 拡張基板からのユーザ割り込みの検知。

⑤ 拡張基板に割当てられたレジスタへのリードアクセスとライトアクセス

(注意)

①~④の機能に関しては VSC-5000 で提供するサンプル FPGA 上で動作する機能です。拡張基板

上の FPGA を独自で作成する場合は、①~④の機能は正常に動作しない可能性があります。

1. 初期化

・デバイス名に「IFCMLSUBx」を指定すると、拡張基板のハンドルを取得することが出来ます。

このハンドルを使用して拡張基板でのキャプチャや画像処理の制御を行います。初期化が正

常終了すると、以後、デバイスへアクセスすることが出来ます。

・CmlOpen 関数及び、CmlOpenEx 関数の詳細については、各関数の個別説明を参照してください。

2. カメラコンフィグレーションファイルの作成と読み込み

ご使用になるカメラの仕様をデバイスへセットする必要があります。デバイスへのセットは、

カメラコンフィグレーションファイルを使用します。

カメラコンフィグレーションファイルを、「5. CmlReadCamConfFile」で説明するコンフィグ

レーションファイルの書式に合わせて直接作成するか、弊社ユーティリティ「CmlUtil.exe」で

作成作成する事ができます。

カメラコンフィグレーションファイルを CmlReadCamConfFile 関数で読み込み、カメラ情報を

デバイスへ設定します。

3. 拡張基板の機能と制御

・拡張基板でのキャプチャ選択

拡張基板付きの製品は、メイン基板でキャプチャを行うか、拡張基板でキャプチャを行うか、

選択する必要があります。(初期設定はメイン基板でのキャプチャとなります)

したがって、メイン基板で行うカメラ画像のキャプチャと拡張基板上で画像処理した画像のキ

ャプチャを同時に行う事はできません。

また、2CH 製品の場合、1CH 目をメイン基板でキャプチャし、2CH 目を拡張基板でキャプチャ

することは出来ません。1CH 目を画像処理無しでキャプチャし、2CH 目を階調変換したい場合、

1CH, 2CH 両方とも拡張基板でキャプチャを行う必要があります。

Page 38: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

38

・画像処理機能の選択

VSC-5000 で提供している画像処理 IP を組み込んで FPGA を作成した場合、以下の画像処理機

能を使用することが出来ます。

画像処理 機能

画像処理なし 画像処理を行わず、カメラからの入力信号をキャプチャします。

階調変換処理 階調変換テーブルの設定にしたがって、各色成分の濃度値を変換すること

ができます。

フィルタ処理 「3×3 空間フィルタ」「3×3 差分型エッジ検出フィルタ」があります。

3×3 空間フィルタはエッジ強調を目的とした微分処理や、雑音除去を目的

とした平滑化を行います。3×3 空間フィルタのエッジ強調は、エッジ部分

が強調されるだけでエッジ以外の画像情報も残ります。

差分型エッジ検出フィルタは、注目画素がエッジ点かどうかを判断するこ

とが目的であり、エッジ情報以外はほとんど残りません。

2 値化処理 2 値画像処理を行います。

膨張・収縮処理 膨張または収縮処理を行います。収縮処理では雑音の除去、膨張処理はピ

ンホールの除去に活用できます。

ラベリング処理 画像内に複数のブロック(物体の画像)がある場合、それぞれを識別、ある

いは、ブロックごとに何らかの処理を行う時に、前処理として用います。

拡張基板でのキャプチャおよび、画像処理を行う場合、CmlSelectImageProcessing関数で設

定を行います。カメラ画像をメイン基板と拡張基板どちらで処理するかの切り替え、拡張基板

での画像処理機能の選択を行います。

拡張基板で、チャンネルごとに画像処理を行う事が出来ます。2CH 製品では、各チャンネル

ごとに、異なる画像処理を行う事が出来ます。

ただし、複数の画像処理を同時に一つのチャンネルで行う事は出来ません。上記画像処理機

能からチャンネルごとに一つ選択してください。

CmlSelectImageProcessing関数の詳細は個別説明を参照してください。

Page 39: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

39

4. 拡張基板を使用したカメラ画像のキャプチャ(x86専用) 拡張基板を使用したカメラ画像のキャプチャを実行します。

START

① キャプチャする画像のフォーマットを指定し、クリッピングキャプチ

ャの条件より 1フレーム当たりのデータサイズを得る。

③転送先にメインメモリを指定する。動的バッ

ファの場合、欲しいフレーム数分のサイズのバ

ッファを確保する。

④バッファ管理用ハンドル値を得る。

⑤ハンドル値とキャプチャ条件をデバイスへセットする。

⑥キャプチャ開始

⑦キャプチャ完了後、画像データを取得して、任意の

画像処理を行なう。

END

②拡張基板にカメラ画像を送る設定を行う。

① 画像のフォーマット、クリッピングキャプチャの条件を IFCMLCAPFMT 構造体の変数へセットし、

CmlSetCaptureFormatInfo 関数へ渡すと、1 フレーム当たりのデータサイズを求める事がで

きます。

② CmlSelectImageProcessing 関数で、拡張基板上で行う画像処理の種類に IFCML_IMAGE_NORMAL

を指定し、拡張基板からメイン基板へ転送する画像フォーマットを指定します。

③ 動的バッファの場合は、①で得たデータサイズを元に、malloc 関数(C 言語)などで任意サイズ

分のバッファを確保します。

④ CmlRegistMemInfo 関数でバッファ管理用ハンドルを取得する事ができます。

メインメモリを指定するため、確保した動的バッファの先頭アドレスと確保したサイズを関

数へ渡します。

⑤ ハンドル値と①で使用したIFCMLCAPFMT構造体の変数をCmlSetCapConfig関数へ渡す事により、

デバイスへキャプチャ動作条件を設定します。

⑥ CmlStartCapture 関数でキャプチャを開始します。

⑦ キャプチャが完了後、CmlGetMemData 関数で指定したフレームの画像データを取得する事がで

きます。

Page 40: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

40

5. 拡張基板を使用したカメラ画像のキャプチャ(x64専用) 拡張基板を使用したカメラ画像のキャプチャを実行します。

START

①キャプチャする画像のフォーマットを指定し、クリッピングキャプチャの条

件より 1フレーム当たりのデータサイズを得る。

④バッファの先頭アドレスを取得する。

③バッファ管理用ハンドル値を得る。

⑤ハンドル値とキャプチャ条件をデバイスへセットする。

⑥キャプチャ開始

⑦キャプチャ完了後、画像データを取得して、任意の

画像処理を行なう。

END

②拡張基板にカメラ画像を送る設定を行う。

① 画像のフォーマット、クリッピングキャプチャの条件を IFCMLCAPFMT 構造体の変数へセット

し、CmlSetCaptureFormatInfo 関数へ渡すと、1 フレーム当たりのデータサイズを求める事

ができます。

② CmlSelectImageProcessing 関数で、拡張基板上で行う画像処理の種類に IFCML_IMAGE_NORMAL

を指定し、拡張基板からメイン基板へ転送する画像フォーマットを指定します。

③ CmlRegistMemInfo 関数に必要サイズ分のバッファサイズを指定する事によりバッファ管理用

ハンドルを取得する事ができます。

第 2引数の BuffPtr に-1 を渡し、メインメモリを指定します。

④ CmlGetMemPtrValue 関数で、メインメモリ内に確保したバッファの先頭アドレスを取得します。

⑤ ハンドル値と①で使用した IFCMLCAPFMT 構造体の変数を CmlSetCapConfig 関数へ渡す事によ

り、デバイスへキャプチャ動作条件を設定します。

⑥ CmlStartCapture 関数でキャプチャを開始します。

⑦ キャプチャが完了後、CmlGetMemData 関数で指定したフレームの画像データを取得する事がで

きます。

Page 41: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

41

6. 拡張基板を使用した階調変換処理画像のキャプチャ(x86専用) 拡張基板を使用した階調変換画像のキャプチャを実行します。

START

① キャプチャする画像のフォーマットを指定する。

クリッピング、ピクセル数、画像サイズを指定する。

③転送先にメインメモリを指定する。動的バッ

ファの場合、欲しいフレーム数分のサイズのバ

ッファを確保する。

④バッファ管理用ハンドル値を得る。

⑤ハンドル値とキャプチャ条件をデバイスへセットする。

⑥キャプチャ開始

⑦キャプチャ完了後、画像データを取得して、任意の

画像処理を行なう。

END

②拡張基板で階調変換を行う設定をする。

① 画像のフォーマット、クリッピングキャプチャの条件を IFCMLCAPFMT 構造体の変数へセットし、

CmlSetCaptureFormatInfo 関数へ渡すと、1 フレーム当たりのデータサイズを求める事ができ

ます。画像フォーマットは IFCML_CAPFMT_CAM を指定します。

② CmlSelectImageProcessing 関数で、拡張基板上で行う画像処理の種類に IFCML_IMAGE_LUT を

指定し、拡張基板からメイン基板へ転送する画像フォーマットを指定します。CmlSetLut 関数

で階調数と、変換対象の色成分を指定します。この時、階調変換条件を指定する全ての関数

のデバイスハンドルは拡張基板のデバイスハンドルを指定します。

③ 動的バッファの場合は、①で得たデータサイズを元に、malloc 関数(C 言語)などで任意サイズ

分のバッファを確保します。

④ CmlRegistMemInfo 関数でバッファ管理用ハンドルを取得する事ができます。

メインメモリを指定するため、確保した動的バッファの先頭アドレスと確保したサイズを関

数へ渡します。

⑤ ハンドル値と①で使用したIFCMLCAPFMT構造体の変数をCmlSetCapConfig関数へ渡す事により、

デバイスへキャプチャ動作条件を設定します。

⑥ CmlStartCapture 関数でキャプチャを開始します。

⑦ キャプチャが完了後、CmlGetMemData 関数で指定したフレームの画像データを取得する事がで

きます。

Page 42: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

42

7. 拡張基板を使用した階調変換処理画像のキャプチャ(x64専用) 拡張基板を使用した階調変換画像のキャプチャを実行します。

START

① キャプチャする画像のフォーマットを指定する。

クリッピング、ピクセル数、画像サイズを指定する。

④バッファの先頭アドレスを取得する。

③バッファ管理用ハンドル値を得る。

⑤ハンドル値とキャプチャ条件をデバイスへセットする。

⑥キャプチャ開始

⑦キャプチャ完了後、画像データを取得して、任意の

画像処理を行なう。

END

②拡張基板で階調変換を行う設定をする。

① 画像のフォーマット、クリッピングキャプチャの条件を IFCMLCAPFMT 構造体の変数へセット

し、CmlSetCaptureFormatInfo 関数へ渡すと、1 フレーム当たりのデータサイズを求める事

ができます。画像フォーマットは IFCML_CAPFMT_CAM を指定します。

② CmlSelectImageProcessing 関数で、拡張基板上で行う画像処理の種類に IFCML_IMAGE_LUT を

指定し、拡張基板からメイン基板へ転送する画像フォーマットを指定します。CmlSetLut 関数

で階調数と、変換対象の色成分を指定します。この時、階調変換条件を指定する全ての関数

のデバイスハンドルは拡張基板のデバイスハンドルを指定します。

③ CmlRegistMemInfo 関数に必要サイズ分のバッファサイズを指定する事によりバッファ管理用

ハンドルを取得する事ができます。

第 2引数の BuffPtr に-1 を渡し、メインメモリを指定します。

④ CmlGetMemPtrValue 関数で、メインメモリ内に確保したバッファの先頭アドレスを取得します。

⑤ ハンドル値と①で使用したを CmlSetCapConfig 関数へ渡す事により、デバイスへキャプチャ

動作条件を設定します。

⑥ CmlStartCapture 関数でキャプチャを開始します。

⑦ キャプチャが完了後、CmlGetMemData 関数で指定したフレームの画像データを取得する事がで

きます。

Page 43: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

43

8. 拡張基板を使用したフィルタ処理画像のキャプチャ(x86専用) 拡張基板を使用したフィルタ処理画像のキャプチャを実行します。

START

① キャプチャする画像のフォーマットを指定する。

クリッピング、ピクセル数、画像サイズを指定する。

③転送先にメインメモリを指定する。動的バッ

ファの場合、欲しいフレーム数分のサイズのバ

ッファを確保する。

④バッファ管理用ハンドル値を得る。

⑤ハンドル値とキャプチャ条件をデバイスへセットする。

⑥キャプチャ開始

⑦キャプチャ完了後、画像データを取得して、任意の

画像処理を行なう。

END

②拡張基板でフィルタ処理を行う設定をする。

① 画像のフォーマット、クリッピングキャプチャの条件を IFCMLCAPFMT 構造体の変数へセットし、

CmlSetCaptureFormatInfo 関数へ渡すと、1 フレーム当たりのデータサイズを求める事ができ

ます。画像フォーマットは IFCML_CAPFMT_ORIGINAL を指定します。

② CmlSelectImageProcessing 関 数 で 、 拡 張 基 板 上 で 行 う 画 像 処 理 の 種 類 に

IFCML_IMAGE_FILTER_SPASE または IFCML_IMAGE_FILTER_DIFFERENCE を指定し、拡張基板から

メイン基板へ転送する画像フォーマットを指定します。CmlSetFilter 関数でフィルタの選択

とその係数を設定します。この時、フィルタ条件を指定する全ての関数のデバイスハンドル

は拡張基板のデバイスハンドルを指定します。

③ 動的バッファの場合は、①で得たデータサイズを元に、malloc 関数(C 言語)などで任意サイズ

分のバッファを確保します。

④ CmlRegistMemInfo 関数でバッファ管理用ハンドルを取得する事ができます。

メインメモリを指定するため、確保した動的バッファの先頭アドレスと確保したサイズを関

数へ渡します。

⑤ ハンドル値と①で使用したを CmlSetCapConfig 関数へ渡す事により、デバイスへキャプチャ動

作条件を設定します。

⑥ CmlStartCapture 関数でキャプチャを開始します。

⑦ キャプチャが完了後、CmlGetMemData 関数で指定したフレームの画像データを取得する事がで

きます。

Page 44: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

44

9. 拡張基板を使用したフィルタ処理画像のキャプチャ(x64専用) 拡張基板を使用したフィルタ処理画像のキャプチャを実行します。

START

① キャプチャする画像のフォーマットを指定する。

クリッピング、ピクセル数、画像サイズを指定する。

④バッファの先頭アドレスを取得する。

③バッファ管理用ハンドル値を得る。

⑤ハンドル値とキャプチャ条件をデバイスへセットする。

⑥キャプチャ開始

⑦キャプチャ完了後、画像データを取得して、任意の

画像処理を行なう。

END

②拡張基板でフィルタ処理を行う設定をする。

① 画像のフォーマット、クリッピングキャプチャの条件を IFCMLCAPFMT 構造体の変数へセット

し、CmlSetCaptureFormatInfo 関数へ渡すと、1 フレーム当たりのデータサイズを求める事

ができます。画像フォーマットは IFCML_CAPFMT_ORIGINAL を指定します。

② CmlSelectImageProcessing 関 数 で 、 拡 張 基 板 上 で 行 う 画 像 処 理 の 種 類 に

IFCML_IMAGE_FILTER_SPASE または IFCML_IMAGE_FILTER_DIFFERENCE を指定し、拡張基板から

メイン基板へ転送する画像フォーマットを指定します。CmlSetFilter 関数でフィルタの選択

とその係数を設定します。この時、フィルタ条件を指定する全ての関数のデバイスハンドル

は拡張基板のデバイスハンドルを指定します。

③ CmlRegistMemInfo 関数に必要サイズ分のバッファサイズを指定する事によりバッファ管理用

ハンドルを取得する事ができます。

第 2引数の BuffPtr に-1 を渡し、メインメモリを指定します。

④ CmlGetMemPtrValue 関数で、メインメモリ内に確保したバッファの先頭アドレスを取得します。

⑤ ハンドル値と①で使用したを CmlSetCapConfig 関数へ渡す事により、デバイスへキャプチャ

動作条件を設定します。

⑥ CmlStartCapture 関数でキャプチャを開始します。

⑦ キャプチャが完了後、CmlGetMemData 関数で指定したフレームの画像データを取得する事がで

きます。

Page 45: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

45

10. 拡張基板を使用した2値画像のキャプチャ(x86専用) 拡張基板を使用した 2値画像のキャプチャを実行します。

START

① キャプチャする画像のフォーマットを指定する。

クリッピング、ピクセル数、画像サイズを指定する。

③転送先にメインメモリを指定する。動的バッ

ファの場合、欲しいフレーム数分のサイズのバ

ッファを確保する。

④バッファ管理用ハンドル値を得る。

⑤ハンドル値とキャプチャ条件をデバイスへセットする。

⑥キャプチャ開始

⑦キャプチャ完了後、画像データを取得して、任意の

画像処理を行なう。

END

②拡張基板で 2値化処理するための条件を設定する。

① 画像のフォーマット、クリッピングキャプチャの条件を IFCMLCAPFMT 構造体の変数へセットし、

CmlSetCaptureFormatInfo 関数へ渡すと、1 フレーム当たりのデータサイズを求める事ができ

ます。画像フォーマットは IFCML_CAPFMT_ORIGINAL を指定します。

② CmlSelectImageProcessing 関数で、拡張基板上で行う画像処理の種類に IFCML_IMAGE_BIN を

指定し、拡張基板からメイン基板へ転送する画像フォーマットを指定します。

CmlSetColorIngredient 関数で 2値化対象色成分を指定し、CmlSetBinParam 関数でしきい値、

反転条件を設定します。この時、2値化条件を指定する全ての関数のデバイスハンドルは拡張

基板のデバイスハンドルを指定します。

③ 動的バッファの場合は、①で得たデータサイズを元に、malloc 関数(C 言語)などで任意サイズ

分のバッファを確保します。

④ CmlRegistMemInfo 関数でバッファ管理用ハンドルを取得する事ができます。

メインメモリを指定するため、確保した動的バッファの先頭アドレスと確保したサイズを関

数へ渡します。

⑤ ハンドル値と①で使用したを CmlSetCapConfig 関数へ渡す事により、デバイスへキャプチャ動

作条件を設定します。

⑥ CmlStartCapture 関数でキャプチャを開始します。

⑦ キャプチャが完了後、CmlGetMemData 関数で指定したフレームの画像データを取得する事がで

きます。

Page 46: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

46

11. 拡張基板を使用した2値画像のキャプチャ(x64専用) 拡張基板を使用した 2値画像のキャプチャを実行します。

START

① キャプチャする画像のフォーマットを指定する。

クリッピング、ピクセル数、画像サイズを指定する。

④バッファの先頭アドレスを取得する。

③バッファ管理用ハンドル値を得る。

⑤ハンドル値とキャプチャ条件をデバイスへセットする。

⑥キャプチャ開始

⑦キャプチャ完了後、画像データを取得して、任意の

画像処理を行なう。

END

②拡張基板で 2値化処理するための条件を設定する。

① 画像のフォーマット、クリッピングキャプチャの条件を IFCMLCAPFMT 構造体の変数へセット

し、CmlSetCaptureFormatInfo 関数へ渡すと、1 フレーム当たりのデータサイズを求める事

ができます。画像フォーマットは IFCML_CAPFMT_ORIGINAL を指定します。

② CmlSelectImageProcessing 関数で、拡張基板上で行う画像処理の種類に IFCML_IMAGE_BIN を

指定し、拡張基板からメイン基板へ転送する画像フォーマットを指定します。

CmlSetColorIngredient 関数で 2値化対象色成分を指定し、CmlSetBinParam 関数でしきい値、

反転条件を設定します。この時、2値化条件を指定する全ての関数のデバイスハンドルは拡張

基板のデバイスハンドルを指定します。

③ CmlRegistMemInfo 関数に必要サイズ分のバッファサイズを指定する事によりバッファ管理用

ハンドルを取得する事ができます。

第 2引数の BuffPtr に-1 を渡し、メインメモリを指定します。

④ CmlGetMemPtrValue 関数で、メインメモリ内に確保したバッファの先頭アドレスを取得します。

⑤ ハンドル値と①で使用したを CmlSetCapConfig 関数へ渡す事により、デバイスへキャプチャ

動作条件を設定します。

⑥ CmlStartCapture 関数でキャプチャを開始します。

⑦ キャプチャが完了後、CmlGetMemData 関数で指定したフレームの画像データを取得する事がで

きます。

Page 47: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

47

12. 拡張基板を使用した膨張収縮処理画像のキャプチャ(x86専用) 拡張基板を使用した膨張収縮処理画像のキャプチャを実行します。

START

① キャプチャする画像のフォーマットを指定する。

クリッピング、ピクセル数、画像サイズを指定する。

③転送先にメインメモリを指定する。動的バッ

ファの場合、欲しいフレーム数分のサイズのバ

ッファを確保する。

④バッファ管理用ハンドル値を得る。

⑤ハンドル値とキャプチャ条件をデバイスへセットする。

⑥キャプチャ開始

⑦キャプチャ完了後、画像データを取得して、任意の

画像処理を行なう。

END

②拡張基板で膨張収縮処理するための条件を設定する。

① 画像のフォーマット、クリッピングキャプチャの条件を IFCMLCAPFMT 構造体の変数へセットし、

CmlSetCaptureFormatInfo 関数へ渡すと、1 フレーム当たりのデータサイズを求める事ができ

ます。画像フォーマットは IFCML_CAPFMT_ORIGINAL を指定します。

② CmlSelectImageProcessing 関数で、拡張基板上で行う画像処理の種類に IFCML_IMAGE_DIL_ER

を指定し、拡張基板からメイン基板へ転送する画像フォーマットを指定します。CmlSetDil_Er

関数で有効段数、各段の処理、格段の近傍を設定します。CmlSetColorIngredient 関数で 2値

化対象色成分を指定し、CmlSetBinParam 関数でしきい値、反転条件を設定します。この時、

膨張収縮条件を指定する全ての関数のデバイスハンドルは拡張基板のデバイスハンドルを指

定します。

③ 動的バッファの場合は、①で得たデータサイズを元に、malloc 関数(C 言語)などで任意サイズ

分のバッファを確保します。

④ CmlRegistMemInfo 関数でバッファ管理用ハンドルを取得する事ができます。

メインメモリを指定するため、確保した動的バッファの先頭アドレスと確保したサイズを関

数へ渡します。

⑤ ハンドル値と①で使用したを CmlSetCapConfig 関数へ渡す事により、デバイスへキャプチャ動

作条件を設定します。

⑥ CmlStartCapture 関数でキャプチャを開始します。

⑦ キャプチャが完了後、CmlGetMemData 関数で指定したフレームの画像データを取得する事がで

きます。

13. 拡張基板を使用した膨張収縮処理画像のキャプチャ(x64専用)

Page 48: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

48

拡張基板を使用した膨張収縮処理画像のキャプチャを実行します。

START

① キャプチャする画像のフォーマットを指定する。

クリッピング、ピクセル数、画像サイズを指定する。

④バッファの先頭アドレスを取得する。

③バッファ管理用ハンドル値を得る。

⑤ハンドル値とキャプチャ条件をデバイスへセットする。

⑥キャプチャ開始

⑦キャプチャ完了後、画像データを取得して、任意の

画像処理を行なう。

END

②拡張基板で膨張収縮処理するための条件を設定する。

① 画像のフォーマット、クリッピングキャプチャの条件を IFCMLCAPFMT 構造体の変数へセット

し、CmlSetCaptureFormatInfo 関数へ渡すと、1 フレーム当たりのデータサイズを求める事

ができます。画像フォーマットは IFCML_CAPFMT_ORIGINAL を指定します。

② CmlSelectImageProcessing 関数で、拡張基板上で行う画像処理の種類に IFCML_IMAGE_DIL_ER

を指定し、拡張基板からメイン基板へ転送する画像フォーマットを指定します。CmlSetDil_Er

関数で有効段数、各段の処理、格段の近傍を設定します。CmlSetColorIngredient 関数で 2値

化対象色成分を指定し、CmlSetBinParam 関数でしきい値、反転条件を設定します。この時、

膨張収縮条件を指定する全ての関数のデバイスハンドルは拡張基板のデバイスハンドルを指

定します。

③ CmlRegistMemInfo 関数に必要サイズ分のバッファサイズを指定する事によりバッファ管理用

ハンドルを取得する事ができます。

第 2引数の BuffPtr に-1 を渡し、メインメモリを指定します。

④ CmlGetMemPtrValue 関数で、メインメモリ内に確保したバッファの先頭アドレスを取得します。

⑤ ハンドル値と①で使用したを CmlSetCapConfig 関数へ渡す事により、デバイスへキャプチャ

動作条件を設定します。

⑥ CmlStartCapture 関数でキャプチャを開始します。

⑦ キャプチャが完了後、CmlGetMemData 関数で指定したフレームの画像データを取得する事がで

きます。

Page 49: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

49

14. 拡張基板を使用したラベリング処理画像のキャプチャ(x86専用) 拡張基板を使用したラベリング処理画像のキャプチャを実行します。

START

① キャプチャする画像のフォーマットを指定する。

クリッピング、ピクセル数、画像サイズを指定する。

③転送先にメインメモリを指定する。動的バッ

ファの場合、欲しいフレーム数分のサイズのバ

ッファを確保する。

④バッファ管理用ハンドル値を得る。

⑤ハンドル値とキャプチャ条件をデバイスへセットする。

⑥キャプチャ開始

⑦キャプチャ完了後、画像データを取得して、任意の

画像処理を行なう。

END

②拡張基板でラベリング処理するための条件を設定する。

① 画像のフォーマット、クリッピングキャプチャの条件を IFCMLCAPFMT 構造体の変数へセットし、

CmlSetCaptureFormatInfo 関数へ渡すと、1 フレーム当たりのデータサイズを求める事ができ

ます。画像フォーマットは IFCML_CAPFMT_ORIGINAL を指定します。オプションには各フレーム

のラベリング処理後のデータを指定します。

② CmlSelectImageProcessing 関数で、拡張基板上で行う画像処理の種類に IFCML_IMAGE_LBL を指

定し、拡張基板からメイン基板へ転送する画像フォーマットを指定します。

CmlSetLabelingConf 関数で近傍を設定します。CmlSetColorIngredient 関数で 2 値化対象色

成分を指定し、CmlSetBinParam 関数でしきい値、反転条件を設定します。この時、ラベリン

グ条件を指定する全ての関数のデバイスハンドルは拡張基板のデバイスハンドルを指定しま

す。

③ 動的バッファの場合は、①で得たデータサイズを元に、malloc 関数(C 言語)などで任意サイズ

分のバッファを確保します。

④ CmlRegistMemInfo 関数でバッファ管理用ハンドルを取得する事ができます。

メインメモリを指定するため、確保した動的バッファの先頭アドレスと確保したサイズを関

数へ渡します。

⑤ ハンドル値と①で使用したを CmlSetCapConfig 関数へ渡す事により、デバイスへキャプチャ動

作条件を設定します。

⑥ CmlStartCapture 関数でキャプチャを開始します。

⑦ キャプチャが完了後、CmlGetMemData 関数で指定したフレームの画像データを取得する事がで

きます。

Page 50: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

50

15. 拡張基板を使用したラベリング処理画像のキャプチャ(x64専用) 拡張基板を使用したラベリング処理画像のキャプチャを実行します。

START

① キャプチャする画像のフォーマットを指定する。

クリッピング、ピクセル数、画像サイズを指定する。

④バッファの先頭アドレスを取得する。

③バッファ管理用ハンドル値を得る。

⑤ハンドル値とキャプチャ条件をデバイスへセットする。

⑥キャプチャ開始

⑦キャプチャ完了後、画像データを取得して、任意の

画像処理を行なう。

END

②拡張基板でラベリング処理するための条件を設定する。

① 画像のフォーマット、クリッピングキャプチャの条件を IFCMLCAPFMT 構造体の変数へセット

し、CmlSetCaptureFormatInfo 関数へ渡すと、1 フレーム当たりのデータサイズを求める事

ができます。画像フォーマットは IFCML_CAPFMT_ORIGINAL を指定します。オプションには各

フレームのラベリング処理後のデータを指定します。

② CmlSelectImageProcessing 関数で、拡張基板上で行う画像処理の種類に IFCML_IMAGE_LBL を

指定し、拡張基板からメイン基板へ転送する画像フォーマットを指定します。

CmlSetLabelingConf 関数で近傍を設定します。CmlSetColorIngredient 関数で 2 値化対象色

成分を指定し、CmlSetBinParam 関数でしきい値、反転条件を設定します。この時、ラベリン

グ条件を指定する全ての関数のデバイスハンドルは拡張基板のデバイスハンドルを指定しま

す。

③ CmlRegistMemInfo 関数に必要サイズ分のバッファサイズを指定する事によりバッファ管理用

ハンドルを取得する事ができます。

第 2引数の BuffPtr に-1 を渡し、メインメモリを指定します。

④ CmlGetMemPtrValue 関数で、メインメモリ内に確保したバッファの先頭アドレスを取得します。

⑤ ハンドル値と①で使用した IFCMLCAPFMT 構造体の変数を CmlSetCapConfig 関数へ渡す事によ

り、デバイスへキャプチャ動作条件を設定します。

⑥ CmlStartCapture 関数でキャプチャを開始します。

⑦ キャプチャが完了後、CmlGetMemData 関数で指定したフレームの画像データを取得する事がで

きます。

Page 51: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

51

16. 終了処理 CmlClose 関数でデバイスの終了処理を行います。アプリケーションでは、必ずクローズ処理を行

ってから終了してください。

クローズ処理は CmlOpen 関数または CmlOpenEx 関数を使用して取得したハンドルの数だけ行って

ください。

詳細は CmlClose 関数を参照してください。

Page 52: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

52

3.4 拡張基板メモリへのデータ転送制御 本項目は、PEX-H531221 に搭載されている拡張基板の制御方法や、拡張基板で使用出来る画像

処理機能の説明を行います。

GPC-5300 のライブラリで行える機能は以下の通りです。

① メインメモリから拡張基板メモリへのデータ転送。

② 拡張基板メモリからメインメモリへのデータ転送。

③ 拡張基板上に搭載している画像処理機能のパラメータ設定。

2 値化しきい値、階調変換における LUT、フィルタ係数、膨張・収縮設定等。

④ 拡張基板からのデータ転送完了割り込みの検知。

⑤ 拡張基板に割当てられたレジスタへのリードアクセスとライトアクセス

(注意)

①~④の機能に関しては VSC-5000 で提供するサンプル FPGA 上で動作する機能です。拡張基板

上の FPGA を独自で作成する場合は、①~④の機能は正常に動作しない可能性があります。

1. 初期化

・デバイス名に「IFIMGCMLx」を指定することで、メイン基板のハンドルを取得することが出来

ます。このハンドルを使用して、キャプチャ制御や拡張基板メモリに対するデータの読み込

み/書き込みを行うことが出来ます。

デバイス名に「IFCMLSUBx」を指定し、Flag パラメータに対して経路を指定すると、拡張基

板の経路ごとのハンドルを取得することが出来ます。

このハンドルを使用して拡張基板での画像処理の制御を行います。初期化が正常終了すると、

以後、デバイスへアクセスすることが出来ます。

・CmlOpen 関数及び、CmlOpenEx 関数の詳細については、各関数の個別説明を参照してください。

2. 拡張基板の機能と制御

本製品は拡張基板メモリに対して、データ転送を行なう事が出来ます。また、拡張基板へデ

ータを転送しながら、キャプチャを行なうことや、拡張基板メモリに対する双方向のデータ転

送など、組み合わせに応じた様々なデータ転送を行う事が出来ます。また、ReadLine1, 2 に対

してデータ転送を行ないながら別々の画像処理を行う事が出来ます。

Page 53: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

53

3. 画像処理機能と付加情報

・画像処理機能の選択

VSC-5000 で提供している画像処理 IP を組み込んで FPGA を作成した場合、拡張基板メモリか

らデータ転送を行なう際に画像処理機能を使用することが出来ます。

画像処理 機能

画像処理なし 画像処理を行わず、拡張基板メモリからデータを取得します。

階調変換処理 階調変換テーブルの設定にしたがって、各色成分の濃度値を変換すること

ができます。

フィルタ処理 「3×3 空間フィルタ」「3×3 差分型エッジ検出フィルタ」があります。

3×3 空間フィルタはエッジ強調を目的とした微分処理や、雑音除去を目的

とした平滑化を行います。3×3 空間フィルタのエッジ強調は、エッジ部分

が強調されるだけでエッジ以外の画像情報も残ります。

差分型エッジ検出フィルタは、注目画素がエッジ点かどうかを判断するこ

とが目的であり、エッジ情報以外はほとんど残りません。

2 値化処理 2 値画像処理を行います。

膨張・収縮処理 膨張または収縮処理を行います。収縮処理では雑音の除去、膨張処理はピ

ンホールの除去に活用できます。

ラベリング処理 2値画像の有効画素に対して、連結成分ごとにラベル付けを行います。ラ

ベリング後に得られる画像は、ラベル 0が背景で、各ブロックは 1から順

番に整数が割り当てられ、256 階調の画像データとして取得できます。画

像内に複数のブロック(物体の画像)がある場合、それぞれを識別、あるい

は、ブロックごとに何らかの処理を行う時に、前処理として用います。

図 ラベリング

01

23

4

拡 張 基 板 メ モ リ か ら 転 送 す る デ ー タ に 対 し て 画 像 処 理 を 行 う 場 合 、

CmlSelectImageProcessing 関数で設定を行います。本関数で拡張基板の画像処理機能の選択を

行います。

拡張基板メモリからデータ転送を行なう際、経路ごとに画像処理を行う事が出来ます。また、

ReadLine1,2 に対して、異なる画像処理を行う事が出来ます。

ただし、複数の画像処理を同時に一つの経路で行う事は出来ません。上記画像処理機能から

経路ごとに一つ選択してください。

CmlSelectImageProcessing 関数の詳細は個別説明を参照してください。

・付加情報の選択

拡張基板メモリからデータ転送を行なう際、濃度分布や射影データなどの付加情報を付与し

て デ ー タ を 転 送 す る こ と が 出 来 ま す 。 付 与 で き る 付 加 情 報 に 関 し て は 、

Page 54: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

54

CmlSelectImageProcessing 関数を参照してください。

Page 55: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

55

4. 拡張基板メモリへのデータ転送 拡張基板メモリに対して、メインメモリからデータを転送します。

START

① 画像データが格納されたバッファをセットして、ハンドル値を得る。

③転送ステータスを確認し、転送が完了したこ

とを確認する。

②拡張基板メモリの転送先アドレス、転送サイズ、

ハンドル値をデバイスへセットする。

END

① CmlRegistMemInfo 関数でバッファ管理用ハンドルを取得する事ができます。

メインメモリを指定し、画像データが格納されたバッファの先頭アドレスとバッファサイズ

を関数へ渡します。

② CmlStartTransferData 関数へ拡張基板メモリの転送先アドレス、転送サイズ、ハンドル値をセ

ットすると、拡張基板メモリに対してデータ転送が開始されます。

③ CmlGetTransferStatus 関数で転送状態を確認することが出来ます。

拡張基板メモリに対してデータ転送が完了したことを確認します。

Page 56: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

56

5. 拡張基板メモリからのデータ転送 拡張基板メモリ上のデータをメインメモリへ転送します。

START

②転送先にメインメモリを指定する。動的バッファの場合、転送されて

くるデータサイズ分きっちりのバッファを確保する。

③バッファ管理用ハンドル値を得る。

END

①拡張基板に対して任意の画像処理を設定する。

④拡張基板メモリの転送元アドレス、転送サイズ、

ハンドル値をデバイスへセットする。

⑤転送ステータスを確認し、転送が完了した

ことを確認する。

① CmlSelectImageProcessing 関数で、拡張基板メモリから転送するデータに対する画像処理を設

定します。この時、画像処理を行わない設定をすることも出来ます。

② CmlRegistMemInfo 関数でバッファ管理用ハンドルを取得する事ができます。

メインメモリを指定し、拡張基板メモリから転送されてくるデータサイズ分確保したバッフ

ァの先頭アドレスとバッファサイズを関数へ渡します。

この時確保するバッファサイズは、転送されてくるデータと同じサイズのバッファを確保し

てください。

③ CmlStartTransferData 関数へ拡張基板メモリの転送元アドレス、転送サイズ、ハンドル値をセ

ットすると、メインメモリに対してデータ転送が開始されます。この時、ReadLine1 または

ReadLine2 を選択することが出来ます。

④ CmlGetTransferStatus 関数で転送状態を確認することが出来ます。

メインメモリに対してデータ転送が完了したことを確認します。

Page 57: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

57

3.5 クラスライブラリの参照方法

本製品では、クラスライブラリのソースファイルを用意しています。

ソースコードをビルドしてクラスライブライリを生成し、参照することで、DLL 関数の定義を容易に

することができます。

(DLL 関数の呼び出しをカスタマイズしたい場合は、クラスライブラリのソースを参照してくださ

い)

IFCCML クラスは x86 専用の定義です。以前のバージョンとの互換性のために残されています。

新たにアプリケーションを作成される場合には、IFCCML_ANY クラス(x86、x64 共用)の定義をご使

用下さい。

1. クラスライブラリの作成方法 .NET において DLL 関数を呼び出すには、まずクラスライブラリを用意する必要があります。

Visual C# .NET の場合

Visual Studio を起動し、以下のプロジェクトファイルを開きます。

<インストール先>\interface\GPC5300\samples\CS_NET\IFCCML\IFCCML.csproj

このプロジェクトをビルドすると、bin フォルダにクラスライブラリ IFCCML.dll が作成されま

す。

Visual Basic .NET の場合

Visual Studio を起動し、以下のプロジェクトファイルを開きます。

<インストール先>\interface\GPC5300\samples\VB_NET\IFCCML\IFCCML.vbproj

このプロジェクトをビルドすると、bin フォルダにクラスライブラリ IFCCML.dll が作成されま

す。

2. クラスライブラリの参照 Visual C# .NET, Visual Basic .NET の場合

Visual Studio のメニューの「プロジェクト」の「参照の追加」を選択してください。

「参照」ボタンをクリックして参照したいクラスライブラリ DLL を指定します。

例)

<インストール先>\interface\GPC5300\samples\CS_NET\IFCCML\bin\Release\ifcCml.dll

<インストール先>\interface\GPC5300\samples\VB_NET\IFCCML\bin\Relaase\ifcCml.dll

「選択されたコンポーネント」に指定した DLL が表示されます。

「OK」ボタンをクリックすると設定は完了です。

次にソースのヘッダで各言語毎に下記のように InterfaceCorpDllWrap の名前空間を追加すれば

DLL 関数を次章の「使用例」の方法で呼び出すことができるようになります。

Visual C# .NET の場合

using InterfaceCorpDllWrap;

Visual Basic .NET の場合

Imports InterfaceCorpDllWrap

Page 58: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

58

■参照渡しする変数について

各関数はアンマネージ DLL 関数です。マネージオブジェクトの参照渡しをする際は、

GCHandle 構造体を使用してマネージオブジェクトがコレクトされるのを防いでください。

具体的な方法はサンプルプログラムを参照してください。

■構造体について

StructLayoutクラスのオプションに「LayoutKind.Sequential」を指定しています。

Page 59: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

59

第4章 リファレンス

4.1 関数一覧

No 関数名 機能

●初期化関数

1 CmlOpen デバイスをオープンします。

2 CmlOpenEx デバイスをオープンします。

3 CmlClose デバイスをクローズします。

4 CmlGetDeviceInfo デバイスの情報を取得します。

●カメラ情報設定関数

5 CmlReadCamConfFile カメラコンフィグレーションファイルを読みます。

6 CmlGetCamConfig CmlReadCamConfFile 関数で読み込んだカメラコンフィグファイルの

内容を取得します。

●キャプチャ制御関数

7 CmlSetCaptureFormatInfo 指定したキャプチャ条件から、データのサイズを取得します。

8 CmlRegistMemInfo キャプチャ先のバッファ情報を登録しハンドル値を取得します。

9 CmlFreeMemInfo CmlRegistMemInfo 関数で登録したバッファ情報を破棄します。

10 CmlGetMemData バッファからデータを取得します。

11 CmlGetMemPtrValue メインメモリ内に確保したバッファの先頭アドレスを取得します。

12 CmlSetCapConfig キャプチャ条件をデバイスにセットします。

13 CmlStartCapture キャプチャを開始します。

14 CmlStopCapture キャプチャを停止します。

15 CmlGetCaptureStatus キャプチャ状態を取得します。

●割り込み制御関数

16 CmlSetEventMask 割り込み要因を設定します。

17 CmlSetEventMaskEx 割り込み要因を設定します。

18 CmlGetEventMask 割り込み要因を取得します。

19 CmlSetEvent 割り込みの設定を行います。

20 CmlSetEventEx 割り込みの設定を行います。

●2値画像処理関数

21 CmlSetColorIngredient 2 値化対象色成分を指定します。

22 CmlSetBinParam 2 値化のしきい値を設定します。

23 CmlSetMeasurementRange 2 値画像の測定範囲を設定します。

24 CmlGetAreaValue 2 値画像処理による面積値を取得します。

25 CmlGetGrvValue 2 値画像処理による重心値を取得します。

26 CmlGetMeasurementValue 2 値画像処理による面積値、重心値、フェレ径、傾き角を取得します。

●トリガ制御関数

27 CmlSetTriggerEnable トリガ機能を有効にします。

28 CmlGetTriggerStatus トリガ状態を取得します。

29 CmlSetAreaTrgParam 面積値トリガの条件を設定します。

30 CmlSetGrvTrgParam 重心値トリガの条件を設定します。

Page 60: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

60

●カメラコントロール信号制御関数

31 CmlSetCCMode CC1~CC4 の信号を出力します。

32 CmlOutputPluse CC1~CC4 の出力モードを設定します。

33 CmlSetSyncDO CC 信号に同期して出力する汎用デジタル信号のパルス幅を設定しま

す。

●汎用カウンタ制御関数

34 CmlSetCounterMode 汎用カウンタのカウントアップ条件を設定します。

35 CmlGetCounterMode 汎用カウンタのカウントアップ条件を取得します。

36 CmlSetCounterCycle 汎用カウンタのカウント周期を設定します。

37 CmlGetCounter 汎用カウンタのカウンタ値を取得します。

●シリアル通信制御関数

38 CmlSerialSend シリアル通信方式でカメラへデータを送信します。

39 CmlSerialReceive シリアル通信方式でカメラからのデータを受信します。

40 CmlGetSerialStatus シリアル通信の状態を取得します。

41 CmlSerialClear シリアル送受信の FIFO をクリアします。

42 CmlGetReceiveSize ソフトウェア FIFO の受信サイズを取得します。

●汎用入出力関数

43 CmlInputDI 汎用入力

44 CmlOutputDO 汎用出力

●画像変換機能

45 CmlConvertImageData Bayer 配列の画像を RGB カラーへ変換します。

●ラインカメラ制御

46 CmlSetEventCounter 割り込みを発生させるライン数を設定します。

47 CmlSetTrgCaptureMode 汎用カウンタトリガによる同期キャプチャを設定します。

48 CmlSetEncodeCntMode エンコーダカウンタを設定します。

49 CmlSetCounterStartMode 汎用カウンタスタート条件を設定します。

50 CmlSetDigitalFilter 汎用カウンタのエンコーダカウンタモードにおけるデジタルフィルタ

設定を行います。

51 CmlSetLVALInterval LVAL 無効期間を設定します。

●PoCL カメラ制御

52 CmlOutputPower PoCL 規格のカメラへ電源を供給します。

●OS 情報確認

53 CmlGetOsArchitecture OS 情報を取得します。

●画像計測関連

54 CmlSetLut 階調変換する為の LUT データを設定します。

55 CmlSetFilter フィルタ係数を設定します。

56 CmlSetDil_Er 膨張・収縮処理の条件を設定します。段数と各段に対する膨張・収縮の

選択と近傍の選択します。

●ラベリング関連

57 CmlSetLabelingConfig ラベリング条件の設定を行います。

58 CmlGetLabelingValue 指定したフレーム番号のラベリング処理画像に対する、ラベル数、面

積値、重心値、フェレ径、傾き角の情報を取得します。

Page 61: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

61

●拡張基板関連

59 CmlSelectImageProcessing 拡張基板上で行う画像処理を指定、およびメイン基板へ転送する画像

データのフォーマットを指定します。

60 CmlReadAccess 拡張基板のレジスタに対して読み込みを行います。

61 CmlWriteAccess 拡張基板のレジスタに対して書き込みを行います。

62 CmlStartTransferData 拡張基板メモリに対して、データの書き込み/読み込みを行ないます。

63 CmlGetTransferStatus 拡張基板メモリに対する転送状態を取得します。

●PCI-530521 限定

64 CmlGetSafePowerStatus PoCL のエラー状態を取得します。

65 CmlSetAdTrigger アナログシャッタトリガモードを設定します。

関数対応表 530121 530221 530421 530521 H5308

21

H5309

22

H5310

21

H5311

22

H5312

21

CmlOpen ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlOpenEx ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlClose ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlGetDeviceInfo ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlReadCamConfFile ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlGetCamConfig ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlSetCaptureFormatInfo ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlRegistMemInfo ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlFreeMemInfo ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlGetMemData ○ ○ ○ ○ ○ ○ ○ ○ -

CmlGetMemPtrValue ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlSetCapConfig ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlStartCapture ○※1 ○ ○※1 ○ ○ ○ ○ ○ ○

CmlStopCapture ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlGetCaptureStatus ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlSetEventMask ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlSetEventMaskEx ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlGetEventMask ○ ○ ○ ○ - - - - -

CmlSetEvent ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlSetEventEx ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlSetColorIngredient ○ ○ ○ ○ ○ - ○ ○※3 ○※3

CmlSetBinParam ○ ○ ○ ○ ○ - ○ ○※3 ○※3

CmlSetMeasurementRange ○ ○※2 ○ ○※2 ○※2 - ○※2 ○

※2,3

※2,3

CmlGetAreaValue ○ ○※2 ○ ○※2 ○※2 - ○※2 ○

※2,3

※2,3

CmlGetGrvValue ○ ○※2 ○ ○※2 ○※2 - ○※2 ○

※2,3

※2,3

CmlGetMeasurementValue ○ ○※2 ○ ○※2 ○※2 - ○※2 ○

※2,3

※2,3

CmlSetTriggerEnable ○ ○※2 ○ ○※2 ○※2 ○ ○※2 ○ ○

CmlGetTriggerStatus ○ ○※2 ○ ○※2 ○※2 ○ ○※2 ○ ○

CmlSetAreaTrgParam ○ ○※2 ○ ○※2 ○※2 - ○※2 - -

CmlSetGrvTrgParam ○ ○※2 ○ ○※2 ○※2 - ○※2 - -

CmlSetCCMode ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlOutputPluse ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlSetSyncDO - - - - ○ ○ ○ ○ ○

Page 62: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

62

CmlSetCounterMode ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlGetCounterMode ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlSetCounterCycle ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlGetCounter ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlSerialSend ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlSerialReceive ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlGetSerialStatus ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlSerialClear ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlGetReceiveSize ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlInputDI ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlOutputDO ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlConvertImageData ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlSetEventCounter - ○ - ○ ○ ○ ○ ○ ○

CmlSetTrgCaptureMode - ○ - ○ ○ ○ ○ ○ ○

CmlSetEncodeCntMode - ○ - ○ ○ ○ ○ ○ ○

CmlSetCounterStartMode - ○ - ○ ○ ○ ○ ○ ○

CmlSetDigitalFilter - ○ - ○ ○ ○ ○ ○ ○

CmlSetLVALInterval - ○ - ○ ○ ○ ○ ○ ○

CmlOutputPower - - ○ ○ - ○ - ○ ○

CmlGetOsArchitecture ○ ○ ○ ○ ○ ○ ○ ○ ○

CmlSetLut - - - - - - ○※3 ○※3 ○※3

CmlSetFilter - - - - - - ○※3 ○※3 ○※3

CmlSetDil_Er - - - - - - ○※3 ○※3 ○※3

CmlSetLabelingConfig - - - - - - ○※3 ○※3 ○※3

CmlGetLabelingValue - - - - - - ○※3 ○※3 ○※3

CmlSelectImageProcessing - - - - - - ○※3 ○※3 ○※3

CmlReadAccess - - - - - - ○※3 ○※3 ○※3

CmlWriteAccess - - - - - - ○※3 ○※3 ○※3

CmlStartTransferData - - - - - - - - ○

CmlGetTransferStatus - - - - - - - - ○

CmlGetSafePowerStatus - - - ○※4 - - - - -

CmlSetAdTrigger - - - ○※4 - - - - -

※1 トリガスタート未対応

※2 ラインカメラのご使用の場合、エリアカメラモードのみでサポートします。エリアカメラモ

ードについては「3.2 実行手順」の「2.カメラコンフィグレーションファイルの作成と読み込み」

をご参照ください。

※3 拡張基板でしか使用出来ません。

※4 PCI-530521 でしか使用できません。

Page 63: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

63

4.2 関数個別説明

1. CmlOpen 【機能】

ボードもしくは拡張基板のオープンを行い、アクセスを行えるようにします。

【書式】

●C言語(x86 専用)

HANDLE CmlOpen(

LPCTSTR DeviceName // デバイス名

);

●C 言語(x64 専用)

HANDLE CmlOpen(

LPCSTR DeviceName // デバイス名

);

●Visual Basic

Declare Function CmlOpen Lib "IFCml.DLL"(_

ByVal DeviceName As String _ ‘ デバイス名

)As Long

●Delphi

function CmlOpen(

DeviceName: String // デバイス名

):THandle; stdcall; external 'IfCml.DLL';

●Visual C# .NET(x86、x64 共用)

[DllImport(“IfCml.dll”)] public static extern IntPtr CmlOpen (

string DeviceName // デバイス名

);

●Visual C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern uint CmlOpen (

string DeviceName // デバイス名

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlOpen Lib "IfCml.DLL"( _

ByVal DeviceName As String _ ‘ デバイス名

)As IntPtr

Page 64: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

64

●Visual Basic .NET(x86 専用)

Declare Function CmlOpen Lib "IfCml.DLL"( _

ByVal DeviceName As String _ ‘ デバイス名

)As Integer

●Delphi 8

class function CmlOpen(

DeviceName: String; // デバイス名

): Integer; static;

【パラメータ】

DeviceName オープンするデバイス名を指定してください。

【戻り値】

CmlOpen 関数が正常に終了した場合には、有効なハンドルが返されます。

他の関数は、本関数により取得したハンドルを使用してデバイスの制御を行います。

オープンに失敗した場合には、INVALID_HANDLE_VALUE(FFFFFFFFh)が返されます。

【備考】

●デバイスの指定について

ボードのデバイス名は「IFIMGCMLx」(x は 1~16)となります。デバイス名は、RSW1 の設定

値によって割り当てられます。

RSW1 の設定値が 0 の場合 IFIMGCML1、RSW1 の設定値が F の場合 IFIMGCML16 となります。複

数枚ご使用になる場合は、制御するデバイス名を事前にご確認ください。各デバイス名の確

認は、デバイスマネージャにて確認できます。

※PEX-H530922, H531122, H531221 を「IFIMGCMLx」でオープンした場合、チャンネル 1の機

能のみ制御できます。

●拡張基板のオープン

デバイス名に「IFCMLSUBx」を指定すると、拡張基板をアクセスすることができます。

PEX-H531021, H531122, H531221 専用です。

Page 65: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

65

●「IFIMGCMLx」「IFCMLSUBx」を指定した時に使用出来る関数について

指定したデバイス名によって使用可否となる関数を以下に示します。

デバイス名 関数 内容 CmlSetColorIngredient

CmlSetBinParam

CmlSetMeasurementRange

CmlGetAreaValue

CmlGetGrvValue

IFIMGCMLx, IFCMLSUBx

CmlGetMeasurementValue

メイン基板または拡張基板に対する、2 値化

の設定を行う関数です。

メイン基板の 2 値化の設定を行う場合はデバ

イス名を「IFIMGCMLx」に、拡張基板の 2値化

の 設 定 を 行 う 場 合 は デ バ イ ス 名 を

「IFCMLSUBx」でオープンしたハンドルを使用

して下さい。

CmlSetLut

CmlSetFilter

CmlSetDil_Er

CmlSetLabelingConfig

CmlGetLabelingValue

CmlSelectImageProcessing

CmlReadAccess

IFCMLSUBx のみ

CmlWriteAccess

拡張基板を使用した画像処理機能の設定を行

う関数です。

デバイス名を「IFCMLSUBx」でオープンしたハ

ンドルを使用してください。

IFIMGCMLx のみ 上記以外の関数 キャプチャ、割り込みなどの基本的な動作の

制 御 を 行 う 関 数 で す 。 デ バ イ ス 名 を

「IFIMGCMLx」でオープンしたハンドルを使用

してください。

【使用例】

●C言語(MBCS を使用した場合)

HANDLE DeviceHandle;

DeviceHandle = CmlOpen(“IFIMGCML1”);

●C 言語(Unicode を使用した場合 1)

HANDLE DeviceHandle;

DeviceHandle = CmlOpen((LPCTSTR)“IFIMGCML1”);

●C 言語(Unicode を使用した場合 2)

HANDLE DeviceHandle;

char* lpszName = “IFIMGCML1”;

DeviceHandle = CmlOpen((LPCTSTR)lpszName);

Page 66: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

66

●C 言語(Unicode を使用した場合 3)

HANDLE DeviceHandle;

CString UnicodeName = L"IFIMGCML1";

char DeviceName[256];

int len;

len = WideCharToMultiByte(CP_ACP, 0, UnicodeName, -1, NULL, 0, NULL, NULL);

WideCharToMultiByte(CP_ACP, 0, UnicodeName, -1, DeviceName, len, NULL, NULL);

DeviceHandle = CmlOpen((LPCTSTR)DeviceName);

●Visual Basic

Dim lpszName As String

Dim DeviceHandle As Long

lpszName = "IFIMGCML1"

DeviceHandle = CmlOpen(lpszName)

●Delphi

var

lpszName: String;

DeviceHandle: THandle;

lpszName := 'IFIMGCML1';

DeviceHandle := CmlOpen(lpszName);

●Visual C# .NET

IntPtr DeviceHandle;

DeviceHandle = IFCCML_ANY.CmlOpen(“IFIMGCML1”);

●Visual Basic .NET

Dim lpszName As String

Dim hDeviceHandle As IntPtr

lpszName = “IFIMGCML1” DeviceHandle = IFCCML_ANY.CmlOpen(lpszName)

●Delphi 8

var

lpszName: String;

DeviceHandle:Integer;

begin

lpszName := 'IFIMGCML1';

DeviceHandle := IFCCML.CmlOpen(lpszName);

デバイス名「IFIMGCML1」のデバイスをオープンします。

Page 67: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

67

2. CmlOpenEx 【機能】

デバイスのオープンを行い、アクセスを行えるようにします。

【書式】

●C言語(x86, x64 共用)

HANDLE CmlOpenEx(

LPCSTR DeviceName, // デバイス名

DWORD ChNum, // チャンネル

DWORD Flag // 経路

);

●Visual Basic

Declare Function CmlOpenEx Lib "IFCml.DLL"(_

ByVal DeviceName, As String, _ ‘ デバイス名

ByVal ChNum As Long, _ ‘ チャンネル

ByVal Flag As Long _ ‘ 経路

)As Long

●Delphi

function CmlOpenEx(

DeviceName: String; // デバイス名

ChNum: DWORD; // チャンネル

Flag: DWORD // 経路

):THandle; stdcall; external 'IfCml.DLL';

●Visual C# .NET(x86、x64 共用)

[DllImport(“IfCml.dll”)] public static extern IntPtr CmlOpenEx (

string DeviceName, // デバイス名

uint ChNum, // チャンネル

uint Flag // 経路

);

●Visual C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern uint CmlOpenEx (

string DeviceName, // デバイス名

uint ChNum, // チャンネル

uint Flag // 経路

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlOpenEx Lib "IfCml.DLL"( _

ByVal DeviceName As String, _ ‘ デバイス名

ByVal ChNum As Integer, _ ‘ チャンネル

ByVal Flag As Integer _ ‘ 経路

)As IntPtr

Page 68: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

68

●Visual Basic .NET(x86 専用)

Declare Function CmlOpenEx Lib "IfCml.DLL"( _

ByVal DeviceName As String, _ ‘ デバイス名

ByVal ChNum As Integer, _ ‘ チャンネル

ByVal Flag As Integer _ ‘ 経路

)As Integer

●Delphi 8

class function CmlOpen(

DeviceName: String; // デバイス名

ChNum: Cardinal; // チャンネル

Flag: Cardinal // 経路

): Integer; static;

【パラメータ】

DeviceName オープンするデバイス名を指定してください。

ChNum

オープンするチャンネル番号を指定します。チャンネル番号毎にデバイスハンドルを取得

します。2CH 同時入力製品を制御する場合、デバイスハンドルを使い分ける事により各チャ

ンネルの制御を行えます。

1CH 入力製品を制御する場合は、ChNum は 1 を指定してください。

Flag 以下の識別子は PEX-H531221 かつデバイス名に「IFCMLSUBx」を指定する場合、使用するデ

ータ経路を指定します。データ転送経路ごとにハンドルを取得します。

データ経路毎に画像処理の設定を行う場合、デバイスハンドルを使い分けてください。

データ経路については、「2.5.2 拡張基板メモリへの画像処理」を参照してください。

PEX-H531221 以外の製品は必ず 0を指定して下さい。

識別子 値 内容

IFCML_READ_LINE1 00000001h ReadLine1 を指定します。

IFCML_READ_LINE2 00000002h ReadLine2 を指定します。

【戻り値】

CmlOpenEx 関数が正常に終了した場合には、有効なハンドルが返されます。

他の関数は、本関数により取得したハンドルを使用してデバイスの制御を行います。

オープンに失敗した場合には、INVALID_HANDLE_VALUE(FFFFFFFFh)が返されます。

【備考】

●デバイス名について

CmlOpen 関数の説明を参照してください。

●「IFIMGCMLx」「IFCMLSUBx」を指定した時に使用出来る関数について

CmlOpen 関数の説明を参照してください。

Page 69: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

69

【使用例】

●C言語(MBCS を使用した場合)

HANDLE DeviceHandle;

DWORD Flag;

Flag = 0;

DeviceHandle = CmlOpenEx(“IFIMGCML1”, 1, Flag);

●Visual Basic

Dim lpszName As String

Dim DeviceHandle As Long

Dim Flag As Long

lpszName = "IFIMGCML1"

Flag = 0

DeviceHandle = CmlOpenEx(lpszName, 1, Flag)

●Delphi

var

lpszName: String;

DeviceHandle: THandle;

Flag: DWORD;

lpszName := 'IFIMGCML1';

Flag := 0;

DeviceHandle := CmlOpenEx(lpszName, 1, Flag);

●Visual C# .NET

IntPtr DeviceHandle;

uint Flag;

Flag = 0;

DeviceHandle = IFCCML_ANY.CmlOpenEx(“IFIMGCML1”, 1, Flag);

●Visual Basic .NET

Dim lpszName As String

Dim hDeviceHandle As IntPtr

Dim Flag As Integer

lpszName = “IFIMGCML1” DeviceHandle = IFCCML_ANY.CmlOpenEx(lpszName, 1, Flag)

Page 70: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

70

●Delphi 8

var

lpszName: String;

DeviceHandle: Integer;

Flag: Cardinal;

begin

lpszName := 'IFIMGCML1';

DeviceHandle := IFCCML.CmlOpenEx(lpszName, 1, Flag);

デバイス名「IFIMGCML1」の CH1 を指定してデバイスをオープンします。

Page 71: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

71

3. CmlClose 【機能】

デバイスをクローズします。

デバイスのアクセスのために使用されていた各種リソースの解放を行い、以後のデバイスへの

アクセスを禁止します。

【書式】

●C言語

INT CmlClose(

HANDLE DeviceHandle // デバイスハンドル

);

●Visual Basic

Declare Function CmlClose Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long _ ‘ デバイスハンドル

)As Long

●Delphi

function CmlClose(

DeviceHandle: THandle // デバイスハンドル

): Integer; stdcall; external 'IFCml.DLL';

●Visual C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlClose(

IntPtr DeviceHandle // デバイスハンドル

);

●Visual C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlClose(

uint DeviceHandle // デバイスハンドル

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlClose Lib "IfCml.DLL"( _

ByVal DeviceHandle As IntPtr _ ‘ デバイスハンドル

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlClose Lib "IfCml.DLL"( _

ByVal DeviceHandle As Integer _ ‘ デバイスハンドル

)As Integer

●Delphi 8

class function CmlClose(

DeviceHandle: Integer // デバイスハンドル

): Integer; static;

Page 72: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

72

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

・クローズ処理は、CmlOpen 関数または CmlOpenEx 関数で取得したハンドルの数だけ行ってくだ

さい。

例として CmlOpenEx 関数を使用し、CH1 と CH2 をオープンした場合、クローズ処理は CH1 と CH2

の両方に対して行ってください。

・再度、デバイスへのアクセスを行う場合にはオープン処理(CmlOpen 関数または CmlOpenEx 関数)

を呼び出してください。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

DeviceHandle = CmlOpen(“IFIMGCML1”); :

Ret = CmlClose(DeviceHandle);

●Visual Basic

Dim DeviceName As String

Dim DeviceHandle As Long

Dim Ret As Long

DeviceName = "IFIMGCML1"

DeviceHandle = CmlOpen(lpszName)

Ret = CmlClose(DeviceHandle)

Page 73: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

73

●Delphi

var

DeviceName: String;

DeviceHandle: THandle;

Ret: Integer;

DeviceName := 'IFIMGCML1';

DeviceHandle := CmlOpen(lpszName);

Ret := CmlClose(DeviceHandle);

●Visual C# .NET

IntPtr DeviceHandle;

int Ret;

DeviceHandle = IFCCML_ANY.CmlOpen(“IFIMGCML1”); :

Ret = IFCCML_ANY.CmlClose(DeviceHandle);

●Visual Basic .NET

Dim DeveiceName As String

Dim DeviceHandle As IntPtr

Dim Ret As Integer

DeveiceName = “IFIMGCML1” DeviceHandle = IFCCML_ANY.CmlOpen(DeveiceName)

Ret = IFCCML_ANY.CmlClose(DeviceHandle)

●Delphi 8

var

DeveiceName: String;

DeviceHandle: Integer;

Ret: Integer;

begin

DeveiceName := 'IFIMGCML1';

DeviceHandle := IFCCML.CmlClose(DeviceName);

Ret := IFCCML.CmlClose(DeviceHandle);

デバイス名「IFIMGCML1」のデバイスのクローズ処理を行います。

Page 74: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

74

4. CmlGetDeviceInfo 【機能】

指定したデバイスハンドルのデバイス ID、RSW の値を取得します。

【書式】

●C言語

INT CmlGetDeviceInfo (

HANDLE DeviceHandle, // デバイスハンドル

PWORD DeviceID, // デバイス ID

PWORD RswNum // Rsw

);

●Visual Basic

Declare Function CmlGetDeviceInfo Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByRef DeviceID As Integer, _ ‘ デバイス ID

ByRef RswNum As Integer _ ‘ Rsw

)As Long

●Delphi

function CmlGetDeviceInfo (

DeviceHandle: THandle; // デバイスハンドル

var DeviceID: WORD; // デバイス ID

var RswNum: WORD // Rsw

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport(“IfCml.dll”)] public static extern int CmlGetDeviceInfo (

IntPtr DeviceHandle, // デバイスハンドル

ref short DeviceID, // デバイス ID

ref short RswNum // Rsw

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlGetDeviceInfo (

uint DeviceHandle, // デバイスハンドル

ref short DeviceID, // デバイス ID

ref short RswNum // Rsw

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlGetDeviceInfo Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByRef DeviceID As Short, _ ‘ デバイス ID

ByRef RswNum As Short _ ‘ Rsw

)As Integer

Page 75: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

75

●Visual Basic .NET(x86 専用)

Declare Function CmlGetDeviceInfo Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByRef DeviceID As Short, _ ‘ デバイス ID

ByRef RswNum As Short _ ‘ Rsw

)As Integer

●Delphi 8

class function CmlGetDeviceInfo (

DeviceHandle: Integer; // デバイスハンドル

var DeviceID: Word; // デバイス ID

var RswNum: Word // Rsw

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

DeviceID デバイス ID を格納する変数のポインタ(参照渡し)を指定します。

RswNum RSW の値を格納する変数のポインタ(参照渡し)を指定します。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

WORD Type;

WORD Rsw;

Ret = CmGetDeviceInfo(DeviceHandle, &Type, &Rsw);

●Visual Basic

Dim DeviceHandle As Long

Dim Type As Integer

Dim Rsw As Integer

Dim Ret As Integer

Ret = CmGetDeviceInfo(DeviceHandle, Type, Rsw)

Page 76: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

76

●Delphi

var

DeviceHandle: THandle;

Type: WORD;

Rsw: WORD;

Ret: Integer;

Ret := CmGetDeviceInfo (DeviceHandle, Type, Rsw);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

short Type;

short Rsw;

ret = IFCCML_ANY.CmGetDeviceInfo(DeviceHandle, out Type, out Rsw);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim Type As Short

Dim Rsw As Short

Dim ret As Short

ret = IFCCML_ANY.CmGetDeviceInfo(DeviceHandle, Type, Rsw)

●Delphi 8

var

DeviceHandle: Integer;

Type: Word;

Rsw: Word;

ret: Integer;

ret := IFCCML.CmGetDeviceInfo (DeviceHandle, Type, Rsw);

デバイス ID と Rsw の値を取得します。

Page 77: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

77

5. CmlReadCamConfFile 【機能】

カメラコンフィグレーションファイルを読み込みます。

【書式】

●C言語(x86 専用)

INT CmlReadCamConfFile(

HANDLE DeviceHandle, // デバイスハンドル

LPCTSTR PathName // ファイルパス名

);

●C 言語(x64 専用)

INT CmlReadCamConfFile(

HANDLE DeviceHandle, // デバイスハンドル

LPCSTR PathName // ファイルパス名

);

●Visual Basic

Declare Function CmlReadCamConfFile Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal PathName As String _ ‘ ファイルパス名

)As Long

●Delphi

function CmlReadCamConfFile (

DeviceHandle: THandle; // デバイスハンドル

PathName: String // ファイルパス名

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport(“IfCml.dll")] public static extern int CmlReadCamConfFile(

IntPtr DeviceHandle, // デバイスハンドル

string PathName // ファイルパス名

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlReadCamConfFile(

uint DeviceHandle, // デバイスハンドル

string PathName // ファイルパス名

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlReadCamConfFile Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal PathName As String _ ‘ ファイルパス名

)As Integer

Page 78: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

78

●Visual Basic .NET(x86 専用)

Declare Function CmlReadCamConfFile Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal PathName As String _ ‘ ファイルパス名

)As Integer

●Delphi 8

class function CmlReadCamConfFile (

DeviceHandle: Integer; // デバイスハンドル

PathName: String // ファイルパス名

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

PathName カメラコンフィグレーションファイルのパスを指定します。

パスは絶対パスを指定します。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

Page 79: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

79

【備考】

カメラコンフィグレーションファイルの書式です。

使用するカメラの仕様に合わせて設定値を決定してください。

書式 設定値

[CamType]

TYPE = 設定値

POCL = 設定値

CONF = 設定値

カメラのタイプを指定します。

TYPE

0:エリアカメラ

1:ラインカメラ※1

POCL

0:カメラは PoCL 規格でない。

1:カメラは PoCL 規格である。

CONF

0:Base Configuration

1:Medium Configuration

2:Full Configuration

CONF は省略することが出来ます。

省略した場合BaseConfigurationとして設定され

ます。※2

[AreaSet]

H_CNT = 設定値

H_BLK = 設定値

V_CNT = 設定値

V_BLK = 設定値

有効画像エリアの指定です。※3

H_CNT 水平有効期間(1~4095 ピクセル)※4

H_BLK 水平無効期間 (1~4095 ピクセル)

V_CNT 垂直有効期間 (1~4095 ライン) ※5

V_BLK 垂直無効期間 (1~4095 ライン) ※6

[CamMode]

FORMAT = 設定値

カメラの映像出力を設定します。※7

0 : RGB24bit

1 : モノクロ 8bit

2 : モノクロ 10bit

3 : モノクロ 12bit

4 : モノクロ 14bit

5 : モノクロ 16bit

6 : Bayer 配列 8bit

7 : Bayer 配列 10bit

8 : RGB30bit

9 : RGB36bit

Page 80: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

80

[CamMode]

OUTMODE = 設定値

カメラの動作方式※8

0 : 標準

1 : 2 倍速

2 : 3 倍速

3 : 4 倍速

4 : 8 倍速(Full Configration 専用)

5 : 2 倍速 同時出力(Mode1)

6 : 2 倍速 同時出力(Mode2)

7 : 2 倍速 同時出力(Mode3)

8 : 2 倍速 同時出力(Mode4)

9 : 2 倍速 同時出力(Mode5)

10 : 4 倍速 同時出力

11 : 8 倍速 同時出力(Full Configration 専用)

[Serial]

BAUD = 設定値

カメラのシリアルボーレートです。

0 : シリアルなし(未使用)

1 : 9600bps

2 : 19200bps

3 : 38400bps

4 : 57600bps

5 : 115200bps

[CC]

CC1 = 設定値

CC2 = 設定値

CC3 = 設定値

CC4 = 設定値

カメラコントロール信号の使用の有無です。

0 : 使用

1 : 未使用

※1 CPZ/LPC/PEX-530221, 530521, PEX-H530821, H530922, H531021, H531122, H531221 専用

です。

※2 Medium/Full Configuration の指定は、PEX-H530821, H531021, H531221 専用です。また、

それ以外の型式で Medium/Full Configuration を指定した場合、もしくは「CONF」を省略し

た場合は Base が設定されます。

※3 水平有効期間、水平無効期間、垂直有効期間、垂直無効期間については、

製品のハードウェアマニュアルに記載しています。

※4 CPZ/LPC/PEX-530221, 530521, PEX-H530821, H530922, H531021, H531122, H531221

使用時、ラインカメラモードの場合、 大 65535 となります。

PEX-H530821, H530922, H531021, H531122, H531221 を使用する場合、

8 の倍数になるように設定してください。

※5 ラインカメラモードの場合、1と設定してください。

2以上に設定すると画像データはX-Yのエリア画像として扱われ見かけ上エリアカメラモ

ードとして使用する事ができます。画像はフレーム単位で制御します。

※6 ラインカメラモードの場合、0と設定してください。

※7 PEX-H530821, H531021, H531221 のみ FORMAT に「0~9」を設定することが出来ます。

それ以外の製品では「0~7」を設定することが出来ます。

※8 PEX-H530821, H531021 は OUTMODE に「0~8」を指定することが出来ます。

PEX-H531221 は OUTMODE に「0~11」を指定することが出来ます。

PEX-H530922, H531122 は OUTMODE に「0~3」を指定することが出来ます。

それ以外の製品では OUTMODE に「0~2」を指定することが出来ます。

Page 81: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

81

・2 倍速のカメラの並び替えの種類

A11 A21 Ax1 B11 B21 Bx1

A1y A2y Axy B1y B2y Bxy

2 倍速同時入力(Mode1)

2 倍速同時入力は A,B の各画素データを 1 クロックで 2 ピクセル同時に入力します。

同時入力の各モードについては以下の図を参照して下さい。

2 倍速同時入力(Mode3)

A11A21Ax1 B11 B21 Bx1

B1y B2y BxyA1yA2yAxy

2 倍速同時入力(Mode2)

A11 A21 Ax1 B11B21Bx1

A1y A2y Axy B1yB2yBxy

2 倍速同時入力(Mode4)

A11A21Ax1

A1yA2yAxy

B11B21Bx1

B1yB2yBxy

A11 A21 Ax1

B11 B21 Bx1A1y A2y Axy

B1y B2y Bxy

2 倍速同時入力(Mode5)

Page 82: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

82

・4 倍速以上のカメラの並び替えの種類

4 倍速同時入力は A, B, C, D の各画素データを 1 クロックで 4 ピクセル同時に入力します。

A11 A21 Ax1

A1y A2y Axy

B11 B21 Bx1

B1y B2y Bxy

C11 C21 Cx1

C1y C2y Cxy

D11 D21 Dx1

D1y D2y Dxy

A11 A21 Ax1

A1y A2y Axy

B11 B21 Bx1

B1y B2y Bxy

C11 C21 Cx1

C1y C2y Cxy

D11 D21 Dx1

D1y D2y Dxy

E11 E21 Ex1

E1y E2y Exy

F11 F21 Fx1

F1y F2y Fxy

G11 G21 Gx1

G1y G2y Gxy

H11 H21 Hx1

H1y H2y Hxy

8 倍速同時入力は A, B, C, D, E, F, G, H の各画素データを 1 クロックで 8 ピクセル同時に入力します。

Page 83: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

83

例)エリアカメラのカメラコンフィグファイルの書き込み例

[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 = 1

CC2 = 0

CC3 = 0

CC4 = 0

Page 84: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

84

例)ラインカメラのカメラコンフィグファイルの書き込み例

[CamType]

TYPE = 1

POCL = 0

[AreaSet]

H_CNT = 1024

H_BLK = 0

V_CNT = 1

V_BLK = 0

[CamMode]

FORMAT = 0

[CamMode]

OUTMODE = 0

[Serial]

BAUD = 1

[CC]

CC1 = 1

CC2 = 0

CC3 = 0

CC4 = 0

【使用例】

●C言語(MBCS を使用した場合)

INT Ret;

HANDLE DeviceHandle;

Ret = CmlReadCamConfFile(DeviceHandle,”c:\\Teli_CSB4000CL.cfg”);

●C 言語(Unicode を使用した場合 1)

HANDLE DeviceHandle;

Ret = CmlReadCamConfFile(DeviceHandle, (LPCTSTR)”c:\\Teli_CSB4000CL.cfg”);

●C 言語(Unicode を使用した場合 2)

HANDLE DeviceHandle;

char* FilePath = ”c:\\Teli_CSB4000CL.cfg”;

Ret = CmlReadCamConfFile(DeviceHandle, (LPCTSTR)FilePath);

Page 85: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

85

●C 言語(Unicode を使用した場合 3)

HANDLE DeviceHandle;

CString UnicodeName = L”c:\\Teli_CSB4000CL.cfg”; char FilePath[256];

int len;

len = WideCharToMultiByte(CP_ACP, 0, UnicodeName, -1, NULL, 0, NULL, NULL);

WideCharToMultiByte(CP_ACP, 0, UnicodeName, -1, DeviceName, len, NULL, NULL);

Ret = CmlReadCamConfFile(DeviceHandle, (LPCTSTR)FilePath);

●Visual Basic

Dim PathName As String

Dim DeviceHandle As Long

Dim Ret As Integer

PathName = "c:\\Teli_CSB4000CL.cfg"

Ret = CmlReadCamConfFile(DeviceHandle, PathName)

●Delphi

var

PathName: String;

DeviceHandle: THandle;

Ret: integer;

PathName:= 'c:\\Teli_CSB4000CL.cfg ';

Ret := CmlReadCamConfFile(DeviceHandle, PathName);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

DeviceHandle = IFCCML_ANY.CmlOpen(“IFIMGCML1”); :

nRet = IFCCML_ANY.CmlReadCamConfFile(DeviceHandle,”c:\Teli_CSB4000CL.cfg”);

Page 86: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

86

●Visual Basic .NET

Dim DeviceName As String

Dim Path As String

Dim DeviceHandle As IntPtr

Dim ret As Integer

DeviceName = "IFIMGCML1"

DeviceHandle = IFCCML_ANY.CmlOpen(lpszName)

Path = "c:\Teli_CSB4000CL.cfg"

ret = IFCCML_ANY.CmlReadCamConfFile(hDeviceHandle,Path)

●Delphi 8

var

DeviceName: String;

Path: String;

DeviceHandle: Integer;

ret : Integer;

DeviceName := 'IFIMGCML1';

DeviceHandle := IFCCML.CmlOpen(lpszName);

Path:= 'c:\Teli_CSB4000CL.cfg ';

ret := IFCCML.CmlReadCamConfFile(DeviceHandle,Path);

Teli 製の CSB4000CL のカメラコンフィグファイルを読み込みます。

Page 87: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

87

6. CmlGetCamConfig 【機能】

CmlReadCamConfFile 関数で読み込んだカメラコンフィグファイルの内容を取得します。

【書式】

●C言語

INT CmlGetCamConfig (

HANDLE DeviceHandle, // デバイスハンドル

PIFCMLCAMCONF CamConf // IFCMLCAMCONF 構造体

);

●Visual Basic

Declare Function CmlGetCamConfig Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByRef CamConf As IFCMLCAMCONF _ ‘ IFCMLCAMCONF 構造体

)As Long

●Delphi

function CmlGetCamConfig (

DeviceHandle: Thandle; // デバイスハンドル

var CamConf: IFCMLCAMCONF // IFCMLCAMCONF 構造体

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86,x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlGetCamConfig (

IntPtr DeviceHandle, // デバイスハンドル

out IFCMLCAMCONF CamConf // IFCMLCAMCONF 構造体

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlGetCamConfig (

uint DeviceHandle, // デバイスハンドル

out IFCMLCAMCONF CamConf // IFCMLCAMCONF 構造体

);

●Visual Basic .NET(x86,x64 共用)

Declare Function CmlGetCamConfig Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByRef CamConf As IFCMLCAPFMT _ ‘ IFCMLCAMCONF 構造体

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlGetCamConfig Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByRef CamConf As IFCMLCAMCONF _ ‘ IFCMLCAMCONF 構造体

)As Integer

Page 88: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

88

●Delphi 8

class function CmlSetCapConfig (

DeviceHandle: Integer; // デバイスハンドル

var CamConf: IFCMLCAMCONF // IFCMLCAMCONF 構造体

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

CamConf IFCMLCAMCONF 構造体のポインタ(参照渡し)を指定します。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C 言語

INT Ret;

HANDLE DeviceHandle;

IFCMLCAMCONF CamConf;

Ret = CmlGetCamConfig(DeviceHandle, &CamConf);

●Visual Basic

Dim DeviceHandle As Long

Dim CamConf As IFCMLCAMCONF

Dim Ret As Integer

Ret = CmlGetCamConfig(DeviceHandle, CamConf)

●Delphi

var

DeviceHandle: THandle;

CamConf : IFCMLCAMCONF;

Ret: Integer;

Ret := CmlGetCamConfig(DeviceHandle, CamConf);

Page 89: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

89

●C 言語

INT Ret;

HANDLE DeviceHandle;

IFCMLCAMCONF CamConf;

Ret = IFCCML_ANY.CmlGetCamConfig(DeviceHandle, out CamConf);

●Visual Basic

Dim DeviceHandle As Long

Dim CamConf As IFCMLCAMCONF

Dim Ret As Integer

Ret = IFCCML_ANY.CmlGetCamConfig(DeviceHandle, CamConf)

●Delphi

var

DeviceHandle: THandle;

CamConf : IFCMLCAMCONF;

Ret: Integer;

Ret := IFCCML.CmlGetCamConfig(DeviceHandle, CamConf);

カメラコンフィグファイルの情報を取得します。

Page 90: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

90

7. CmlSetCaptureFormatInfo 【機能】

キャプチャする画像のフォーマット、スケーリングキャプチャの条件、クリッピングキャプチャ

の条件を設定します。関数実行後、1フレーム当たりの画像データのサイズを取得します。

【書式】

●C言語

INT CmlSetCaptureFormatInfo(

HANDLE DeviceHandle, // デバイスハンドル

PIFCMLCAPFMT FmtInfo // IFCMLCAPFMT 構造体

);

●Visual Basic

Declare Function CmlSetCaptureFormatInfo Lib "IFCml.DLL"(_

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByRef FmtInfo As IFCMLCAPFMT _ ‘ IFCMLCAPFMT 構造体

)As Long

●Delphi

function CmlSetCaptureFormatInfo (

DeviceHandle: THandle; // デバイスハンドル

var FmtInfo: IFCMLCAPFMT // IFCMLCAPFMT 構造体

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86,x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetCaptureFormatInfo(

IntPtr DeviceHandle, // デバイスハンドル

out IFCMLCAPFMT FmtInfo // IFCMLCAPFMT 構造体

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSetCaptureFormatInfo(

uint DeviceHandle, // デバイスハンドル

out IFCMLCAPFMT FmtInfo // IFCMLCAPFMT 構造体

);

●Visual Basic .NET(x86,x64 共用)

Declare Function CmlSetCaptureFormatInfo Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByRef FmtInfo As IFCMLCAPFMT _ ‘ IFCMLCAPFMT 構造体

)As Integer

Page 91: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

91

●Visual Basic .NET(x86 専用)

Declare Function CmlSetCaptureFormatInfo Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByRef FmtInfo As IFCMLCAPFMT _ ‘ IFCMLCAPFMT 構造体

)As Integer

●Delphi 8

class function CmlSetCaptureFormatInfo (

DeviceHandle: Integer; // デバイスハンドル

var FmtInfo: IFCMLCAPFMT // IFCMLCAPFMT 構造体

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

FmtInfo IFCMLCAPFMT 構造体へ、キャプチャする画像のフォーマット、スケーリングキャプチャの条

件、クリッピングキャプチャの条件をセットします。IFCMLCAPFMT 構造体のポインタ(参照

渡し)を渡します。

関数実行後、IFCMLCAPFMT 構造体に画像データサイズの情報が格納されています。

エリアカメラモードでは、1フレームの画像データサイズ、ラインカメラは 1ラインのデー

タサイズです。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【注意事項】

接続カメラの仕様や、本関数によるクリッピング条件とスケーリング条件の各種設定によっては、

1ラインのデータサイズが 4の倍数にならないケースが発生する事があります。

本製品でキャプチャする上では、1ラインのデータサイズは4の倍数にしておく必要があります。

本関数で取得した、FmtInfo.Xlength の値と FmtInfo.PixelSize の値を掛け合わせた値が 1ライ

ンあたりのデータサイズとなります。

キャプチャ画像フォーマットやクリッピング条件とスケーリング条件の各種設定で、4の倍数に

するようにしてください。

Page 92: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

92

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

IFCMLCAPFMT FmtInfo;

DWORD X;

DWORD Y;

DeviceHandle = CmlOpen(“IFIMGCML1”);

X = 1280; // カメラの水平解像度

Y = 1024; // カメラの垂直解像度

// キャプチャ条件をセットします。

// RGB24bit、スケーリング、クリッピング無し

// オプションデータ無し。

FmtInfo.Scale.PixelCnt = 0; // 水平間引きピクセル数 0

FmtInfo.Scale.LineCnt = 0; // 垂直間引きライン数 0

FmtInfo.Rect.XStart = 0; // 開始 X座標 0

FmtInfo.Rect.YStart = 0; // 開始 Y座標 0

FmtInfo.Rect.XLength = X; // カメラの水平方向の長さ

FmtInfo.Rect.YLength = Y; // カメラの垂直方向の長さ

FmtInfo.CapFormat = IFCML_CAPFMT_CAM; // カメラ画像フォーマット(変換なし)

FmtInfo.OptionFormat = IFCML_OPTFMT_NON; // オプションデータなし

Ret = CmlSetCaptureFormatInfo(DeviceHandle, &FmtInfo);

Page 93: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

93

●Visual Basic

Dim Name As String

Dim DeviceHandle As Long

Dim FmtInfo As IFCMLCAPFMT

Dim X As Long

Dim Y As Long

Dim Ret As Integer

Name = "IFIMGCML1"

DeviceHandle = CmlOpen(lpszName)

X = 1280 ‘ カメラの水平解像度

Y = 1024 ‘ カメラの垂直解像度

‘ キャプチャ条件をセットします。

‘ RGB24bit、スケーリング、クリッピング無し

‘ オプションデータ無し。

FmtInfo.Scale.PixelCnt = 0 ‘ 水平間引きピクセル数 0

FmtInfo.Scale.LineCnt = 0 ‘ 垂直間引きライン数 0

FmtInfo.Rect.XStart = 0 ‘ 開始 X座標 0

FmtInfo.Rect.YStart = 0 ‘ 開始 Y座標 0

FmtInfo.Rect.XLength = X ‘ カメラの水平方向の長さ

FmtInfo.Rect.YLength = Y ‘ カメラの垂直方向の長さ

FmtInfo.CapFormat = IFCML_CAPFMT_CAM ‘ カメラ画像フォーマット(変換なし)

FmtInfo.OptionFormat = IFCML_OPTFMT_NON ‘ オプションデータなし

Ret = CmlSetCaptureFormatInfo(DeviceHandle, FmtInfo)

Page 94: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

94

●Delphi

var

Name: String;

DeviceHandle: THandle;

FmtInfo: IFCMLCAPFMT;

X: DWORD;

Y: DWORD;

Ret: Integer;

Name := 'IFIMGCML1';

DeviceHandle := CmlOpen(Name);

X := 1280; // カメラの水平解像度

Y := 1024; // カメラの垂直解像度

// キャプチャ条件をセットします。

// スケーリング、クリッピング無し

// オプションデータ無し。

FmtInfo.Scale.PixelCnt := 0; // 水平間引きピクセル数 0

FmtInfo.Scale.LineCnt := 0; // 垂直間引きライン数 0

FmtInfo.Rect.XStart := 0; // 開始 X座標 0

FmtInfo.Rect.YStart := 0; // 開始 Y座標 0

FmtInfo.Rect.XLength := X; // カメラの水平方向の長さ

FmtInfo.Rect.YLength := Y; // カメラの垂直方向の長さ

FmtInfo.CapFormat := IFCML_CAPFMT_CAM; // カメラ画像フォーマット(変換なし)

FmtInfo.OptionFormat := IFCML_OPTFMT_NON; // オプションデータなし

Ret := CmlSetCaptureFormatInfo(DeviceHandle, FmtInfo);

Page 95: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

95

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

IFCCML_ANY.IFCMLCAPFMT FmtInfo;

uint X;

uint Y;

X = 1280; // カメラの水平解像度

Y = 1024; // カメラの垂直解像度

// キャプチャ条件をセットします。

// RGB24bit、スケーリング、クリッピング無し

// オプションデータ無し。

FmtInfo.Scale.PixelCnt = 0; // 水平間引きピクセル数 0

FmtInfo.Scale.LineCnt = 0; // 垂直間引きライン数 0

FmtInfo.Rect.XStart = 0; // 開始 X座標 0

FmtInfo.Rect.YStart = 0; // 開始 Y座標 0

FmtInfo.Rect.XLength = X; // カメラの水平解像度

FmtInfo.Rect.YLength = Y; // カメラの垂直解像度

FmtInfo.CapFormat = IFCCML_ANY.IFCML_CAPFMT_CAM; // カメラ画像フォーマット(変換なし)

FmtInfo.OptionForamt = IFCCML_ANY.IFCML_OPTFMT_NON; // オプションデータなし

ret = IFCCML_ANY.CmlSetCaptureFormatInfo(DeviceHandle, out FmtInfo);

Page 96: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

96

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim FmtInfo As IFCCML_ANY.IFCMLCAPFMT

Dim X As Integer

Dim Y As Integer

X = 1280 ‘ カメラの水平解像度

Y = 1024 ‘ カメラの垂直解像度

‘ キャプチャ条件をセットします。

‘ RGB24bit、スケーリング、クリッピング無し

‘ オプションデータ無し。

FmtInfo.Scale.PixelCnt = 0 ‘ 水平間引きピクセル数 0

FmtInfo.Scale.LineCnt = 0 ‘ 垂直間引きライン数 0

FmtInfo.Rect.XStart = 0 ‘ 開始 X座標 0

FmtInfo.Rect.YStart = 0 ‘ 開始 Y座標 0

FmtInfo.Rect.XLength = X ‘ カメラの水平解像度

FmtInfo.Rect.YLength = Y ‘ カメラの垂直解像度

FmtInfo.CapFormat = IFCCML_ANY.IFCML_CAPFMT_CAM ‘ カメラ画像フォーマット(変換なし)

FmtInfo.OptionForamt = IFCCML_ANY.IFCML_OPTFMT_NON ‘ オプションデータなし

ret = IFCCML_ANY.CmlSetCaptureFormatInfo(DeviceHandle, FmtInfo)

Page 97: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

97

●Delphi 8

var

DeviceName: String;

Path: String;

DeviceHandle: Inetger;

ret :Integer;

FmtInfo: IFCCML.IFCMLCAPFMT;

X: Integer;

Y: Integer;

X := 1280;

Y := 1024;

// キャプチャ条件をセットします。

// スケーリング、クリッピング無し

// オプションデータ無し。

FmtInfo.Scale.PixelCnt := 0; // 水平間引きピクセル数 0

FmtInfo.Scale.LineCnt := 0; // 垂直間引きライン数 0

FmtInfo.Rect.XStart := 0; // 開始 X座標 0

FmtInfo.Rect.YStart := 0; // 開始 Y座標 0

FmtInfo.Rect.XLength := X; // カメラの水平解像度

FmtInfo.Rect.YLength := Y; // カメラの垂直解像度

FmtInfo.CapFormat := IFCCML.IFCML_CAPFMT_CAM; // カメラ画像フォーマット(変換なし)

FmtInfo.OptionForamt := IFCCML.IFCML_OPTFMT_NON; // オプションデータなし

ret := IFCCML.CmlSetCaptureFormatInfo (DeviceHandle, FmtInfo);

画像フォーマットとキャプチャ条件をセットして、1フレームあたりのデータのサイズを取得し

ます。

Page 98: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

98

8. CmlRegistMemInfo 【機能】

キャプチャ先のバッファ情報を登録しハンドル値を取得します。

バッファサイズを指定し、メインメモリ内のバッファか、オンボードメモリを選択します。

メインメモリ内のバッファを指定する場合、そのバッファへのポインタを指定します。

【書式】

●C言語

INT CmlRegistMemInfo (

HANDLE DeviceHandle, // デバイスハンドル

PVOID BuffPtr, // バッファのポインタ

DWORD BuffSize, // バッファのサイズ

PHANDLE MemHandle // ハンドル値

);

●Visual Basic

Declare Function CmlRegistMemInfo Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByRef BuffPtr As Any, _ ‘ バッファの参照渡し

ByVal BuffSize As Long, _ ‘ バッファのサイズ

ByRef MemHandle As Long _ ‘ ハンドル値

)As Long

●Delphi

function CmlRegistMemInfo (

DeviceHandle: THandle; // デバイスハンドル

BuffPtr: Pointer; // バッファのポインタ

BuffSize: DWORD; // バッファのサイズ

var MemHandle: DWORD // ハンドル値

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86,x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlRegistMemInfo (

IntPtr DeviceHandle, // デバイスハンドル

IntPtr BuffPtr, // バッファのポインタ

uint BuffSize, // バッファのサイズ

out IntPtr MemHandle // ハンドル値

);

[DllImport("IfCml.dll")]

public static extern int CmlRegistMemInfo (

IntPtr DeviceHandle, // デバイスハンドル

out byte BuffPtr, // バッファのポインタ

uint BuffSize, // バッファのサイズ

out IntPtr MemHandle // ハンドル値

);

Page 99: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

99

[DllImport("IfCml.dll")]

public static extern int CmlRegistMemInfo (

IntPtr DeviceHandle, // デバイスハンドル

out ushort BuffPtr, // バッファのポインタ

uint BuffSize, // バッファのサイズ

out IntPtr MemHandle // ハンドル値

);

[DllImport("IfCml.dll")]

public static extern int CmlRegistMemInfo (

IntPtr DeviceHandle, // デバイスハンドル

out uint BuffPtr, // バッファのサイズ

uint BuffSize, // バッファのポインタ

out IntPtr MemHandle // ハンドル値

);

[DllImport("IfCml.dll")]

public static extern int CmlRegistMemInfo (

IntPtr DeviceHandle, // デバイスハンドル

byte[] BuffPtr, // バッファのポインタ

uint BuffSize, // バッファのサイズ

out IntPtr MemHandle // ハンドル値

);

[DllImport("IfCml.dll")]

public static extern int CmlRegistMemInfo (

IntPtr DeviceHandle, // デバイスハンドル

ushort[] BuffPtr, // バッファのポインタ

uint BuffSize, // バッファのサイズ

out IntPtr MemHandle // ハンドル値

);

[DllImport("IfCml.dll")]

public static extern int CmlRegistMemInfo (

IntPtr DeviceHandle, // デバイスハンドル

uint[] BuffPtr, // バッファのポインタ

uint BuffSize, // バッファのサイズ

out IntPtr MemHandle // ハンドル値

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlRegistMemInfo (

uint DeviceHandle, // デバイスハンドル

IntPtr BuffPtr, // バッファのポインタ

uint BuffSize, // バッファのサイズ

out uint MemHandle // ハンドル値

);

Page 100: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

100

[DllImport("IfCml.dll")]

public static extern int CmlRegistMemInfo (

uint DeviceHandle, // デバイスハンドル

out byte BuffPtr, // バッファのポインタ

uint BuffSize, // バッファのサイズ

out uint MemHandle // ハンドル値

);

[DllImport("IfCml.dll")]

public static extern int CmlRegistMemInfo (

uint DeviceHandle, // デバイスハンドル

out ushort BuffPtr, // バッファのポインタ

uint BuffSize, // バッファのサイズ

out uint MemHandle // ハンドル値

);

[DllImport("IfCml.dll")]

public static extern int CmlRegistMemInfo (

uint DeviceHandle, // デバイスハンドル

out uint BuffPtr, // バッファのサイズ

uint BuffSize, // バッファのポインタ

out uint MemHandle // ハンドル値

);

[DllImport("IfCml.dll")]

public static extern int CmlRegistMemInfo (

uint DeviceHandle, // デバイスハンドル

byte[] BuffPtr, // バッファのポインタ

uint BuffSize, // バッファのサイズ

out uint MemHandle // ハンドル値

);

[DllImport("IfCml.dll")]

public static extern int CmlRegistMemInfo (

uint DeviceHandle, // デバイスハンドル

ushort[] BuffPtr, // バッファのポインタ

uint BuffSize, // バッファのサイズ

out uint MemHandle // ハンドル値

);

[DllImport("IfCml.dll")]

public static extern int CmlRegistMemInfo (

uint DeviceHandle, // デバイスハンドル

uint[] BuffPtr, // バッファのポインタ

uint BuffSize, // バッファのサイズ

out uint MemHandle // ハンドル値

);

Page 101: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

101

●Visual Basic .NET(x86,x64 共用)

Declare Function CmlRegistMemInfo Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal BuffPtr As IntPtr, _ ‘ バッファの参照渡し

ByVal BuffSize As Integer, _ ‘ バッファのサイズ

ByRef MemHandle As IntPtr _ ‘ ハンドル値

)As Integer

Declare Function CmlRegistMemInfo Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByRef BuffPtr As Byte, _ ‘ バッファの参照渡し

ByVal BuffSize As Integer, _ ‘ バッファのサイズ

ByRef MemHandle As IntPtr _ ‘ ハンドル値

)As Integer

Declare Function CmlRegistMemInfo Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByRef BuffPtr As Short, _ ‘ バッファの参照渡し

ByVal BuffSize As Integer, _ ‘ バッファのサイズ

ByRef MemHandle As IntPtr _ ‘ ハンドル値

)As Integer

Declare Function CmlRegistMemInfo Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByRef BuffPtr As Integer, _ ‘ バッファの参照渡し

ByVal BuffSize As Integer, _ ‘ バッファのサイズ

ByRef MemHandle As IntPtr _ ‘ ハンドル値

)As Integer

Declare Function CmlRegistMemInfo Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal BuffPtr( ) As Byte, _ ‘ バッファの参照渡し

ByVal BuffSize As Integer, _ ‘ バッファのサイズ

ByRef MemHandle As IntPtr ‘ ハンドル値

)As Integer

Declare Function CmlRegistMemInfo Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal BuffPtr( ) As Short, _ ‘ バッファの参照渡し

ByVal BuffSize As Integer, _ ‘ バッファのサイズ

ByRef MemHandle As IntPtr _ ‘ ハンドル値

)As Integer

Page 102: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

102

Declare Function CmlRegistMemInfo Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal BuffPtr( ) As Integer, _ ‘ バッファの参照渡し

ByVal BuffSize As Integer, _ ‘ バッファのサイズ

ByRef MemHandle As IntPtr _ ‘ ハンドル値

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlRegistMemInfo Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal BuffPtr As IntPtr, _ ‘ バッファの参照渡し

ByVal BuffSize As Integer, _ ‘ バッファのサイズ

ByRef MemHandle As Integer _ ‘ ハンドル値

)As Integer

Declare Function CmlRegistMemInfo Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByRef BuffPtr As Byte, _ ‘ バッファの参照渡し

ByVal BuffSize As Integer, _ ‘ バッファのサイズ

ByRef MemHandle As Integer _ ‘ ハンドル値

)As Integer

Declare Function CmlRegistMemInfo Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByRef BuffPtr As Short, _ ‘ バッファの参照渡し

ByVal BuffSize As Integer, _ ‘ バッファのサイズ

ByRef MemHandle As Integer _ ‘ ハンドル値

)As Integer

Declare Function CmlRegistMemInfo Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByRef BuffPtr As Integer, _ ‘ バッファの参照渡し

ByVal BuffSize As Integer, _ ‘ バッファのサイズ

ByRef MemHandle As Integer _ ‘ ハンドル値

)As Integer

Declare Function CmlRegistMemInfo Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal BuffPtr( ) As Byte, _ ‘ バッファの参照渡し

ByVal BuffSize As Integer, _ ‘ バッファのサイズ

ByRef MemHandle As Integer ‘ ハンドル値

)As Integer

Page 103: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

103

Declare Function CmlRegistMemInfo Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal BuffPtr( ) As Short, _ ‘ バッファの参照渡し

ByVal BuffSize As Integer, _ ‘ バッファのサイズ

ByRef MemHandle As Integer _ ‘ ハンドル値

)As Integer

Declare Function CmlRegistMemInfo Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal BuffPtr( ) As Integer, _ ‘ バッファの参照渡し

ByVal BuffSize As Integer, _ ‘ バッファのサイズ

ByRef MemHandle As Integer _ ‘ ハンドル値

)As Integer

●Delphi 8

class function CmlRegistMemInfo (

DeviceHandle: Integer; // デバイスハンドル

BuffPtr: IntPtr; // バッファのポインタ

BuffSize: Cardinal; // バッファのサイズ

var MemHandle: Cardinal // ハンドル値

): Integer; static;

class function CmlRegistMemInfo (

DeviceHandle: Integer; // デバイスハンドル

var BuffPtr: Byte; // バッファのポインタ

BuffSize: Cardinal; // バッファのサイズ

var MemHandle: Cardinal // ハンドル値

): Integer; static;

class function CmlRegistMemInfo (

DeviceHandle: Integer; // デバイスハンドル

var BuffPtr: Word; // バッファのポインタ

BuffSize: Cardinal; // バッファのサイズ

var MemHandle: Cardinal // ハンドル値

): Integer; static;

class function CmlRegistMemInfo (

DeviceHandle: Integer; // デバイスハンドル

var BuffPtr: Cardinal; // バッファのポインタ

BuffSize: Cardinal; // バッファのサイズ

var MemHandle: Cardinal // ハンドル値

): Integer; static;

Page 104: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

104

class function CmlRegistMemInfo (

DeviceHandle: Integer; // デバイスハンドル

BuffPtr: array of Byte; // バッファのポインタ

BuffSize: Cardinal; // バッファのサイズ

var MemHandle: Cardinal // ハンドル値

): Integer; static;

class function CmlRegistMemInfo (

DeviceHandle: Integer; // デバイスハンドル

BuffPtr: array of Word; // バッファのポインタ

BuffSize: Cardinal; // バッファのサイズ

var MemHandle: Cardinal // ハンドル値

): Integer; static;

class function CmlRegistMemInfo (

DeviceHandle: Integer; // デバイスハンドル

BuffPtr: array of Cardinal; // バッファのポインタ

BuffSize: Cardinal; // バッファのサイズ

var MemHandle: Cardinal // ハンドル値

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

BuffPtr

■x86 環境使用時

コンピュータのメインメモリ(ユーザアプリケーション上のバッファ)を使用する場合は

そのバッファのポインタ(参照)渡しを指定します。

■x64 環境使用

コンピュータのメインメモリを使用する場合は、-1 を指定します。

Visual Basic 6.0 の場合は ByVal でキャストして-1 を渡します。

■x86、x64 環境共用

オンボードメモリを使用する場合は、NULL ポインタを指定します。

Visual Basic 6.0 の場合は ByVal でキャストして 0を渡します。

BuffSize バッファのサイズを指定してください。

MemHandle ハンドル値を格納する変数のポインタ(参照渡し)を指定します。

取得したハンドル値を元に、キャプチャを行います。

※PEX-H530821, H530922, H531021, H531122, H531221 はオンボードメモリを使用することが出

来ません。Buffer 引数には、x86 環境ではユーザアプリケーション上のバッファを、x64 環境

ではコンピュータのメインメモリを使用してください。

Page 105: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

105

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【注意事項】

オンボードメモリへの領域の確保サイズは 2048Byte 単位にする必要があります。

したがって、BuffSize へは 2048Byte 単位の値を指定してください。

オンボードメモリからメインメモリへのデータ転送するためのメインメモリのサイズも同様に

2048Byte 単位で指定します。

オンボードメモリへの画像キャプチャする場合、データは 2048Byte 単位で転送されます。その

ために、1フレームのサイズが 2048Byte 区切りでない場合は無効なメモリ領域が生じます。

CmlSetCaptureFormatInfo 関数にて、メインメモリキャプチャ、オンボードメモリキャプチャ

またはオンボードメモリからメインメモリへのデータ転送に必要な 1 フレーム当たりのデータ

サイズを得ることができます。確保したいフレーム数だけ決定すれば、BuffSize へ渡す値を求

めることができます。

:

:

:

:

:

1 フレーム目

転送領域

無効メモリ領域

2 フレーム目

転送領域

無効メモリ領域

2048 の倍数のサイズ(Byte)

2048 の倍数のサイズ(Byte)

2048 の倍数のサイズ(Byte)

N フレーム目

転送領域

無効メモリ領域

Page 106: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

106

【使用例】

●C言語(x86 の場合)

INT Ret;

HANDLE DeviceHandle;

IFCMLCAPFMT FmtInfo;

DWORD X;

DWORD Y;

PBYTE BuffPtr;

DWORD BuffSize;

HANDLE MemHandle_Dma;

HANDLE MemHandle_Mem;

DeviceHandle = CmlOpen(“IFIMGCML1”);

X = 1280; // カメラの水平解像度

Y = 1024; // カメラの垂直解像度

// キャプチャ条件をセットします。

// RGB24bit、スケーリング、クリッピング無し

// オプションデータ無し。

FmtInfo.Scale.PixelCnt = 0; // 水平間引きピクセル数 0

FmtInfo.Scale.LineCnt = 0; // 垂直間引きライン数 0

FmtInfo.Rect.XStart = 0; // 開始 X座標 0

FmtInfo.Rect.YStart = 0; // 開始 Y座標 0

FmtInfo.Rect.XLength = X; // カメラの水平方向の長さ

FmtInfo.Rect.YLength = Y; // カメラの垂直方向の長さ

FmtInfo.CapFormat = IFCML_CAPFMT_CAM; // カメラ画像フォーマット(変換なし)

FmtInfo.OptionFormat = IFCML_OPTFMT_NON; // オプションデータなし

Ret = CmlSetCaptureFormatInfo (DeviceHandle, &FmtInfo);

// 10 フレーム分のバッファ(メインメモリ)

BuffSize = FmtInfo.FrameSize_Buf*10;

BuffPtr = malloc(BuffSize);

Ret = CmlRegistMemInfo(DeviceHandle, BuffPtr,BuffSize, &MemHandle_Dma);

// 10 フレーム分のバッファ(オンボードメモリ)

BuffSize = FmtInfo. FrameSize_Mem * 10;

Ret = CmlRegistMemInfo(DeviceHandle, NULL, BuffSize, &MemHandle_Mem);

Page 107: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

107

●C 言語(x64 の場合)

INT Ret;

HANDLE DeviceHandle;

IFCMLCAPFMT FmtInfo;

DWORD X;

DWORD Y;

DWORD BuffSize;

HANDLE MemHandle_Dma;

HANDLE MemHandle_Mem;

DeviceHandle = CmlOpen(“IFIMGCML1”);

X = 1280; // カメラの水平解像度

Y = 1024; // カメラの垂直解像度

// キャプチャ条件をセットします。

// RGB24bit、スケーリング、クリッピング無し

// オプションデータ無し。

FmtInfo.Scale.PixelCnt = 0; // 水平間引きピクセル数 0

FmtInfo.Scale.LineCnt = 0; // 垂直間引きライン数 0

FmtInfo.Rect.XStart = 0; // 開始 X座標 0

FmtInfo.Rect.YStart = 0; // 開始 Y座標 0

FmtInfo.Rect.XLength = X; // カメラの水平方向の長さ

FmtInfo.Rect.YLength = Y; // カメラの垂直方向の長さ

FmtInfo.CapFormat = IFCML_CAPFMT_CAM; // カメラ画像フォーマット(変換なし)

FmtInfo.OptionFormat = IFCML_OPTFMT_NON; // オプションデータなし

Ret = CmlSetCaptureFormatInfo (DeviceHandle, &FmtInfo);

// 10 フレーム分のバッファ(メインメモリ)

BuffSize = FmtInfo.FrameSize_Buf*10;

Ret = CmlRegistMemInfo(DeviceHandle,(PVOID)-1,BuffSize, &MemHandle_Dma);

// 10 フレーム分のバッファ(オンボードメモリ)

BuffSize = FmtInfo. FrameSize_Mem * 10;

Ret = CmlRegistMemInfo(DeviceHandle, NULL, BuffSize, &MemHandle_Mem);

Page 108: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

108

●Visual Basic(x86 の場合)

Dim Name As String

Dim DeviceHandle As Long

Dim FmtInfo As IFCMLCAPFMT

Dim X As Long

Dim Y As Long

Dim Buff() As Byte

Dim BuffSize As Long

Dim MemHandle_Dma As Long

Dim MemHandle_Mem As Long

Dim Ret As Integer

Name = "IFIMGCML1"

DeviceHandle = CmlOpen(Name)

X = 1280 ‘ カメラの水平解像度

Y = 1024 ‘ カメラの垂直解像度

‘ キャプチャ条件をセットします。

‘ RGB24bit、スケーリング、クリッピング無し

‘ オプションデータ無し。

FmtInfo.Scale.PixelCnt = 0 ‘ 水平間引きピクセル数 0

FmtInfo.Scale.LineCnt = 0 ‘ 垂直間引きライン数 0

FmtInfo.Rect.XStart = 0 ‘ 開始 X座標 0

FmtInfo.Rect.YStart = 0 ‘ 開始 Y座標 0

FmtInfo.Rect.XLength = X ‘ カメラの水平方向の長さ

FmtInfo.Rect.YLength = Y ‘ カメラの垂直方向の長さ

FmtInfo.CapFormat = IFCML_CAPFMT_CAM ‘ カメラ画像フォーマット(変換なし)

FmtInfo.OptionFormat = IFCML_OPTFMT_NON ‘ オプションデータなし

Ret = CmlSetCaptureFormatInfo (DeviceHandle, FmtInfo)

‘ 10 フレーム分のバッファ(メインメモリ)

BuffSize = FmtInfo.FrameSize_Buf * 10

Redim Buff(0 To BuffSize-1)

Ret = CmlRegistMemInfo(DeviceHandle, Buff(0), BuffSize, MemHandle_Dma)

‘ 10 フレーム分のバッファ(オンボードメモリ)

BuffSize = FmtInfo.FrameSize_Mem * 10

Ret = CmlRegistMemInfo(DeviceHandle, ByVal 0, BuffSize, MemHandle_Mem)

Page 109: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

109

●Visual Basic(x64 の場合)

Dim Name As String

Dim DeviceHandle As Long

Dim FmtInfo As IFCMLCAPFMT

Dim X As Long

Dim Y As Long

Dim BuffSize As Long

Dim MemHandle_Dma As Long

Dim MemHandle_Mem As Long

Dim Ret As Integer

Name = "IFIMGCML1"

DeviceHandle = CmlOpen(Name)

X = 1280 ‘ カメラの水平解像度

Y = 1024 ‘ カメラの垂直解像度

‘ キャプチャ条件をセットします。

‘ RGB24bit、スケーリング、クリッピング無し

‘ オプションデータ無し。

FmtInfo.Scale.PixelCnt = 0 ‘ 水平間引きピクセル数 0

FmtInfo.Scale.LineCnt = 0 ‘ 垂直間引きライン数 0

FmtInfo.Rect.XStart = 0 ‘ 開始 X座標 0

FmtInfo.Rect.YStart = 0 ‘ 開始 Y座標 0

FmtInfo.Rect.XLength = X ‘ カメラの水平方向の長さ

FmtInfo.Rect.YLength = Y ‘ カメラの垂直方向の長さ

FmtInfo.CapFormat = IFCML_CAPFMT_CAM ‘ カメラ画像フォーマット(変換なし)

FmtInfo.OptionFormat = IFCML_OPTFMT_NON ‘ オプションデータなし

Ret = CmlSetCaptureFormatInfo (DeviceHandle, FmtInfo)

‘ 10 フレーム分のバッファ(メインメモリ)

BuffSize = FmtInfo.FrameSize_Buf * 10

Ret = CmlRegistMemInfo(DeviceHandle, ByVal -1, BuffSize, MemHandle_Dma)

‘ 10 フレーム分のバッファ(オンボードメモリ)

BuffSize = FmtInfo.FrameSize_Mem * 10

Ret = CmlRegistMemInfo(DeviceHandle, ByVal 0, BuffSize, MemHandle_Mem)

Page 110: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

110

●Delphi(x86 の場合)

var

Name: String;

Path: String;

DeviceHandle: THandle;

FmtInfo: IFCMLCAPFMT;

X: DWORD;

Y: DWORD;

BuffPtr: Pointer;

BuffSize: DWORD;

MemHandle_Dma: THandle;

MemHandle_Mem: THandle;

Ret: Integer;

Name := 'IFIMGCML1';

DeviceHandle := CmlOpen(Name);

X := 1280; // カメラの水平解像度

Y := 1024; // カメラの垂直解像度

// キャプチャ条件をセットします。

// スケーリング、クリッピング無し

// オプションデータ無し。

FmtInfo.Scale.PixelCnt := 0; // 水平間引きピクセル数 0

FmtInfo.Scale.LineCnt := 0; // 垂直間引きライン数 0

FmtInfo.Rect.XStart := 0; // 開始 X座標 0

FmtInfo.Rect.YStart := 0; // 開始 Y座標 0

FmtInfo.Rect.XLength := X; // カメラの水平方向の長さ

FmtInfo.Rect.YLength := Y; // カメラの垂直方向の長さ

FmtInfo.CapFormat := IFCML_CAPFMT_CAM; // カメラ画像フォーマット(変換なし)

FmtInfo.OptionFormat := IFCML_OPTFMT_NON; // オプションデータなし

Ret := CmlSetCaptureFormatInfo (DeviceHandle, FmtInfo);

// 10 フレーム分のバッファ(メインメモリ)

BuffSize := FmtInfo.FrameSize_Buf * 10;

BuffPtr := AllocMem(BuffSize);

Ret := CmlRegistMemInfo(DeviceHandle, BuffPtr, BuffSize, MemHandle_Dma);

// 10 フレーム分のバッファ(オンボードメモリ)

BuffSize := FmtInfo.FrameSize_Mem * 10;

Ret := CmlRegistMemInfo(DeviceHandle, nil, BuffSize, MemHandle_Mem);

Page 111: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

111

●Delphi(x64 の場合)

var

Name: String;

Path: String;

DeviceHandle: THandle;

FmtInfo: IFCMLCAPFMT;

X: DWORD;

Y: DWORD;

BuffPtr: Pointer;

BuffSize: DWORD;

MemHandle_Dma: THandle;

MemHandle_Mem: THandle;

Ret: Integer;

Name := 'IFIMGCML1';

DeviceHandle := CmlOpen(Name);

X := 1280; // カメラの水平解像度

Y := 1024; // カメラの垂直解像度

// キャプチャ条件をセットします。

// スケーリング、クリッピング無し

// オプションデータ無し。

FmtInfo.Scale.PixelCnt := 0; // 水平間引きピクセル数 0

FmtInfo.Scale.LineCnt := 0; // 垂直間引きライン数 0

FmtInfo.Rect.XStart := 0; // 開始 X座標 0

FmtInfo.Rect.YStart := 0; // 開始 Y座標 0

FmtInfo.Rect.XLength := X; // カメラの水平方向の長さ

FmtInfo.Rect.YLength := Y; // カメラの垂直方向の長さ

FmtInfo.CapFormat := IFCML_CAPFMT_CAM; // カメラ画像フォーマット(変換なし)

FmtInfo.OptionFormat := IFCML_OPTFMT_NON; // オプションデータなし

Ret := CmlSetCaptureFormatInfo (DeviceHandle, FmtInfo);

// 10 フレーム分のバッファ(メインメモリ)

BuffSize := FmtInfo.FrameSize_Buf * 10;

BuffPtr := AllocMem(BuffSize);

Ret := CmlRegistMemInfo(DeviceHandle, Pointer(-1),BuffSize, MemHandle_Dma);

// 10 フレーム分のバッファ(オンボードメモリ)

BuffSize := FmtInfo.FrameSize_Mem * 10;

Ret := CmlRegistMemInfo(DeviceHandle, nil, BuffSize, MemHandle_Mem);

Page 112: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

112

●VISUAL C# .NET(x86 の場合)

uint ret;

IntPtr DeviceHandle;

IFCCML_ANY.IFCMLCAPFMT FmtInfo;

uint X;

uint Y;

IntPtr BuffPtr;

uint BuffSize;

uint MemHandle_Dma;

uint MemHandle_Mem;

X = 1280; // カメラの水平解像度

Y = 1024; // カメラの垂直解像度

// キャプチャ条件をセットします。

// RGB24bit、スケーリング、クリッピング無し

// オプションデータ無し。

FmtInfo.Scale.PixelCnt = 0; // 水平間引きピクセル数 0

FmtInfo.Scale.LineCnt = 0; // 垂直間引きライン数 0

FmtInfo.Rect.XStart = 0; // 開始 X座標 0

FmtInfo.Rect.YStart = 0; // 開始 Y座標 0

FmtInfo.Rect.XLength = X; // カメラの水平解像度

FmtInfo.Rect.YLength = Y; // カメラの垂直解像度

FmtInfo.CapFormat = IFCCML_ANY.IFCML_CAPFMT_CAM; // カメラ画像フォーマット(変換なし)

FmtInfo.OptionForamt = IFCCML_ANY.IFCML_OPTFMT_NON; // オプションデータなし

ret = IFCCML_ANY.CmlSetCaptureFormatInfo (hDeviceHandle, out FmtInfo);

// 10 フレーム分のバッファ(コンピュータ)

BuffSize = FmtInfo.FrameSize_buf*10;

BuffPtr = Marshal.AllocCoTaskMem((int) BuffSize);

ret = IFCCML_ANY.CmlRegistMemInfo(hDeviceHandle, BuffPtr, BuffSize,out MemHandle_Dma);

// 10 フレーム分のバッファ(オンボードメモリ)

BuffSize = FmtInfo.FrameSize_Mem * 10;

ret = IFCCML_ANY.CmlRegistMemInfo(hDeviceHandle, IntPtr.Zero, BuffSize,

out MemHandle_Mem);

Page 113: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

113

●VISUAL C# .NET(x64 の場合)

uint ret;

IntPtr DeviceHandle;

IFCCML_ANY.IFCMLCAPFMT FmtInfo;

uint X;

uint Y;

IntPtr BuffPtr;

uint BuffSize;

uint MemHandle_Dma;

uint MemHandle_Mem;

X = 1280; // カメラの水平解像度

Y = 1024; // カメラの垂直解像度

// キャプチャ条件をセットします。

// RGB24bit、スケーリング、クリッピング無し

// オプションデータ無し。

FmtInfo.Scale.PixelCnt = 0; // 水平間引きピクセル数 0

FmtInfo.Scale.LineCnt = 0; // 垂直間引きライン数 0

FmtInfo.Rect.XStart = 0; // 開始 X座標 0

FmtInfo.Rect.YStart = 0; // 開始 Y座標 0

FmtInfo.Rect.XLength = X; // カメラの水平解像度

FmtInfo.Rect.YLength = Y; // カメラの垂直解像度

FmtInfo.CapFormat = IFCCML_ANY.IFCML_CAPFMT_CAM; // カメラ画像フォーマット(変換なし)

FmtInfo.OptionForamt = IFCCML_ANY.IFCML_OPTFMT_NON; // オプションデータなし

ret = IFCCML_ANY.CmlSetCaptureFormatInfo (hDeviceHandle, out FmtInfo);

// 10 フレーム分のバッファ(コンピュータ)

BuffSize = FmtInfo.FrameSize_buf*10;

BuffPtr = new IntPtr(-1);

ret = IFCCML_ANY.CmlRegistMemInfo(hDeviceHandle, BuffPtr, BuffSize,out MemHandle_Dma);

// 10 フレーム分のバッファ(オンボードメモリ)

BuffSize = FmtInfo.FrameSize_Mem * 10;

ret = IFCCML_ANY.CmlRegistMemInfo(hDeviceHandle, IntPtr.Zero, BuffSize,

out MemHandle_Mem);

Page 114: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

114

●Visual Basic .NET(x86 の場合)

Dim DeviceHandle As IntPtr

Dim FmtInfo As IFCCML_ANY.IFCMLCAPFMT

Dim X As Integer

Dim Y As Integer

Dim Buff() As Byte

Dim BuffSize As Integer

Dim MemHandle_Dma As Integer

Dim MemHandle_Mem As Integer

Dim ret As Integer

X = 1280 ‘ カメラの水平解像度

Y = 1024 ‘ カメラの垂直解像度

‘ キャプチャ条件をセットします。

‘ RGB24bit、スケーリング、クリッピング無し

‘ オプションデータ無し。

FmtInfo.Scale.PixelCnt = 0 ‘ 水平間引きピクセル数 0

FmtInfo.Scale.LineCnt = 0 ‘ 垂直間引きライン数 0

FmtInfo.Rect.XStart = 0 ‘ 開始 X座標 0

FmtInfo.Rect.YStart = 0 ‘ 開始 Y座標 0

FmtInfo.Rect.XLength = X ‘ カメラの水平解像度

FmtInfo.Rect.YLength = Y ‘ カメラの垂直解像度

FmtInfo.CapFormat = IFCCML_ANY.IFCML_CAPFMT_CAM ‘ カメラ画像フォーマット(変換なし)

FmtInfo.OptionForamt = IFCCML_ANY.IFCML_OPTFMT_NON ‘ オプションデータなし

ret = IFCCML_ANY.CmlSetCaptureFormatInfo(DeviceHandle, FmtInfo)

‘ 10 フレーム分のバッファ(コンピュータ)

BuffSize = FmtInfo.FrameSize_Buf * 10

ReDim Buff (BuffSize)

ret = IFCCML_ANY.CmlRegistMemInfo(DeviceHandle, Buff(0), BuffSize, MemHandle_Dma)

// 10 フレーム分のバッファ(オンボードメモリ)

BuffSize = FmtInfo.FrameSize_Mem * 10

ret = IFCCML_ANY.CmlRegistMemInfo(DeviceHandle, 0, BuffSize, MemHandle_Mem)

Page 115: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

115

●Visual Basic .NET(x64 の場合)

Dim DeviceHandle As IntPtr

Dim FmtInfo As IFCCML_ANY.IFCMLCAPFMT

Dim X As Integer

Dim Y As Integer

Dim Buff As IntPtr

Dim BuffSize As Integer

Dim MemHandle_Dma As Integer

Dim MemHandle_Mem As Integer

Dim ret As Integer

X = 1280 ‘ カメラの水平解像度

Y = 1024 ‘ カメラの垂直解像度

‘ キャプチャ条件をセットします。

‘ RGB24bit、スケーリング、クリッピング無し

‘ オプションデータ無し。

FmtInfo.Scale.PixelCnt = 0 ‘ 水平間引きピクセル数 0

FmtInfo.Scale.LineCnt = 0 ‘ 垂直間引きライン数 0

FmtInfo.Rect.XStart = 0 ‘ 開始 X座標 0

FmtInfo.Rect.YStart = 0 ‘ 開始 Y座標 0

FmtInfo.Rect.XLength = X ‘ カメラの水平解像度

FmtInfo.Rect.YLength = Y ‘ カメラの垂直解像度

FmtInfo.CapFormat = IFCCML_ANY.IFCML_CAPFMT_CAM ‘ カメラ画像フォーマット(変換なし)

FmtInfo.OptionForamt = IFCCML_ANY.IFCML_OPTFMT_NON ‘ オプションデータなし

ret = IFCCML_ANY.CmlSetCaptureFormatInfo(DeviceHandle, FmtInfo)

// 10 フレーム分のバッファ(コンピュータ)

BuffSize = FmtInfo.FrameSize_Buf * 10

Buff = New IntPtr(-1)

ret = IFCCML_ANY.CmlRegistMemInfo(DeviceHandle, Buff(0), BuffSize, MemHandle_Dma)

// 10 フレーム分のバッファ(オンボードメモリ)

BuffSize = FmtInfo.FrameSize_Mem * 10

ret = IFCCML_ANY.CmlRegistMemInfo(DeviceHandle, 0, BuffSize, MemHandle_Mem)

Page 116: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

116

●Delphi 8

var

DeviceHandle: Inetger;

FmtInfo: IFCCML.IFCMLCAPFMT;

X: Cardinal;

Y: Cardinal;

BuffPtr: IntPtr;

BuffSize: Cardinal;

MemHandle_Dma: Integer;

MemHandle_Mem: Integer;

ret: Integer;

X := 1280; // カメラの水平解像度

Y := 1024; // カメラの垂直解像度

// キャプチャ条件をセットします。

// スケーリング、クリッピング無し

// オプションデータ無し。

FmtInfo.Scale.PixelCnt := 0; // 水平間引きピクセル数 0

FmtInfo.Scale.LineCnt := 0; // 垂直間引きライン数 0

FmtInfo.Rect.XStart := 0; // 開始 X座標 0

FmtInfo.Rect.YStart := 0; // 開始 Y座標 0

FmtInfo.Rect.XLength := X; // カメラの水平解像度

FmtInfo.Rect.YLength := Y; // カメラの垂直解像度

FmtInfo.CapFormat := IFCCML.IFCML_CAPFMT_CAM; // カメラ画像フォーマット(変換なし)

FmtInfo.OptionForamt := IFCCML.IFCML_OPTFMT_NON; // オプションデータなし

ret := IFCCML.CmlSetCaptureFormatInfo(DeviceHandle, FmtInfo);

// 10 フレーム分のバッファ(コンピュータ)

BuffSize := FmtInfo.FrameSize_Buf *10;

BuffPtr := Marshal.AllocHGlobal(BuffSize);

ret := IFCCML.CmlRegistMemInfo(DeviceHandle, BuffPtr, BuffSize, MemHandle_Dma);

// 10 フレーム分のバッファ(オンボードメモリ)

ret := IFCCML.CmlRegistMemInfo(DeviceHandle, nil , BuffSize, MemHandle_Mem);

メインメモリとオンボードメモリへのキャプチャ先バッファを 10 フレーム分確保します。

Page 117: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

117

9. CmlFreeMemInfo 【機能】

CmlRegistMemInfo 関数で登録したバッファ情報を破棄します。

【書式】

●C言語

INT CmlFreeMemInfo (

HANDLE DeviceHandle, // デバイスハンドル

HANDLE MemHandle // ハンドル値

);

●Visual Basic

Declare Function CmlFreeMemInfo Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal MemHandle As Long _ ‘ ハンドル値

)As Long

●Delphi

function CmlFreeMemInfo (

DeviceHandle: THandle; // デバイスハンドル

MemHandle: DWORD // ハンドル値

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86,x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlFreeMemInfo (

IntPtr DeviceHandle, // デバイスハンドル

IntPtr MemHandle // ハンドル値

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlFreeMemInfo (

uint DeviceHandle, // デバイスハンドル

uint MemHandle // ハンドル値

);

●Visual Basic .NET(x86,x64 共用)

Declare Function CmlFreeMemInfo Lib "IFCml.DLL"(

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal MemHandle As IntPtr _ ‘ ハンドル値

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlFreeMemInfo Lib "IFCml.DLL"(

ByVal DeviceHandle As Integer, ‘ デバイスハンドル

ByVal MemHandle As Integer ‘ ハンドル値

)As Integer

Page 118: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

118

●Delphi 8

class function CmlFreeMemInfo (

DeviceHandle: Integer; // デバイスハンドル

MemHandle: Integer // ハンドル値

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

MemHandle 破棄するハンドル値を渡します。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C 言語

INT Ret;

HANDLE DeviceHandle;

HANDLE MemHandle;

Ret = CmlFreeMemInfo(DeviceHandle, MemHandle);

●Visual Basic

Dim DeviceHandle As Long

Dim MemHandle As Long

Dim Ret As Integer

Ret = CmlFreeMemInfo(DeviceHandle, MemHandle)

●Delphi

var

DeviceHandle: THandle;

MemHandle: THandle;

Ret: Integer;

Ret := CmlFreeMemInfo(DeviceHandle, MemHandle);

Page 119: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

119

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

uint MemHandle;

ret = IFCCML_ANY.CmlFreeMemInfo(DeviceHandle, MemHandle);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim MemHandle As Integer

Dim ret As Integer

ret = IFCCML_ANY.CmlFreeMemInfo(DeviceHandle, MemHandle)

●Delphi 8

var

DeviceHandle: THandle;

MemHandle: THandle;

ret: Integer;

ret := IFCCML.CmlFreeMemInfo(DeviceHandle, MemHandle);

バッファ管理用ハンドルを破棄します。

Page 120: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

120

10. CmlGetMemData

【機能】

ハンドル値が示すバッファ領域から、画像データとオプションデータを取り出します。

PEX-H531221 では使用することが出来ません。

【書式】

●C言語

INT CmlGetMemData(

HANDLE DeviceHandle, // デバイスハンドル

HANDLE MemHandle, // ハンドル値

PVOID DstPtr, // 取り出し先バッファ

DWORD FrameNum, // フレーム指定

PIFCMLRECT Rect, // IFCMLRECT 構造体

DWORD DataKind // 取り出しデータ指定

);

●Visual Basic

Declare Function CmlGetMemData Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal MemHandle As Long, _ ‘ ハンドル値

ByRef DstPtr As Any, _ ‘ 取り出し先バッファ

ByVal FrameNum As Long, _ ‘ フレーム指定

ByRef Rect As IFCMLRECT, _ ‘ IFCMLRECT 構造体

ByVal DataKind As Long _ ‘ 取り出しデータ指定

)As Long

●Delphi

function CmlGetMemData(

DeviceHandle: THandle; // デバイスハンドル

MemHandle: THandle; // ハンドル値

DstPtr: Pointer; // 取り出し先バッファ

FrameNum: DWORD; // フレーム指定

var Rect: IFCMLRECT; // IFCMLRECT 構造体

DataKind DWORD // 取り出しデータ指定

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86,x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlGetMemData(

IntPtr DeviceHandle, // デバイスハンドル

IntPtr MemHandle, // ハンドル値

out byte DstPtr, // 取り出し先バッファ

uint FrameNum, // フレーム指定

ref IFCMLRECT Rect, // IFCMLRECT 構造体

uint DataKind // 取り出しデータ指定

);

Page 121: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

121

[DllImport("IfCml.dll")]

public static extern int CmlGetMemData(

IntPtr DeviceHandle, // デバイスハンドル

IntPtr MemHandle, // ハンドル値

out ushort DstPtr, // 取り出し先バッファ

uint FrameNum, // フレーム指定

ref IFCMLRECT Rect, // IFCMLRECT 構造体

uint DataKind // 取り出しデータ指定

);

[DllImport("IfCml.dll")]

public static extern int CmlGetMemData(

IntPtr DeviceHandle, // デバイスハンドル

IntPtr MemHandle, // ハンドル値

out uint DstPtr, // 取り出し先バッファ

uint FrameNum, // フレーム指定

ref IFCMLRECT Rect, // IFCMLRECT 構造体

uint DataKind // 取り出しデータ指定

);

[DllImport("IfCml.dll")]

public static extern int CmlGetMemData(

IntPtr DeviceHandle, // デバイスハンドル

IntPtr MemHandle, // ハンドル値

byte[] DstPtr, // 取り出し先バッファ

uint FrameNum, // フレーム指定

ref IFCMLRECT Rect, // IFCMLRECT 構造体

uint DataKind // 取り出しデータ指定

);

[DllImport("IfCml.dll")]

public static extern int CmlGetMemData(

IntPtr DeviceHandle, // デバイスハンドル

IntPtr MemHandle, // ハンドル値

ushort[] DstPtr, // 取り出し先バッファ

uint FrameNum, // フレーム指定

ref IFCMLRECT Rect, // IFCMLRECT 構造体

uint DataKind // 取り出しデータ指定

);

Page 122: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

122

[DllImport("IfCml.dll")]

public static extern int CmlGetMemData(

IntPtr DeviceHandle, // デバイスハンドル

IntPtr MemHandle, // ハンドル値

uint[] DstPtr, // 取り出し先バッファ

uint FrameNum, // フレーム指定

ref IFCMLRECT Rect, // IFCMLRECT 構造体

uint DataKind // 取り出しデータ指定

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlGetMemData(

uint DeviceHandle, // デバイスハンドル

uint MemHandle, // ハンドル値

out byte DstPtr, // 取り出し先バッファ

uint FrameNum, // フレーム指定

ref IFCMLRECT Rect, // IFCMLRECT 構造体

uint DataKind // 取り出しデータ指定

);

[DllImport("IfCml.dll")]

public static extern int CmlGetMemData(

uint DeviceHandle, // デバイスハンドル

uint MemHandle, // ハンドル値

out ushort DstPtr, // 取り出し先バッファ

uint FrameNum, // フレーム指定

ref IFCMLRECT Rect, // IFCMLRECT 構造体

uint DataKind // 取り出しデータ指定

);

[DllImport("IfCml.dll")]

public static extern int CmlGetMemData(

uint DeviceHandle, // デバイスハンドル

uint MemHandle, // ハンドル値

out uint DstPtr, // 取り出し先バッファ

uint FrameNum, // フレーム指定

ref IFCMLRECT Rect, // IFCMLRECT 構造体

uint DataKind // 取り出しデータ指定

);

Page 123: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

123

[DllImport("IfCml.dll")]

public static extern int CmlGetMemData(

uint DeviceHandle, // デバイスハンドル

uint MemHandle, // ハンドル値

byte[] DstPtr, // 取り出し先バッファ

uint FrameNum, // フレーム指定

ref IFCMLRECT Rect, // IFCMLRECT 構造体

uint DataKind // 取り出しデータ指定

);

[DllImport("IfCml.dll")]

public static extern int CmlGetMemData(

uint DeviceHandle, // デバイスハンドル

uint MemHandle, // ハンドル値

ushort[] DstPtr, // 取り出し先バッファ

uint FrameNum, // フレーム指定

ref IFCMLRECT Rect, // IFCMLRECT 構造体

uint DataKind // 取り出しデータ指定

);

[DllImport("IfCml.dll")]

public static extern int CmlGetMemData(

uint DeviceHandle, // デバイスハンドル

uint MemHandle, // ハンドル値

uint[] DstPtr, // 取り出し先バッファ

uint FrameNum, // フレーム指定

ref IFCMLRECT Rect, // IFCMLRECT 構造体

uint DataKind // 取り出しデータ指定

);

●Visual Basic .NET(x86,x64 共用)

Declare Function CmlGetMemData Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal MemHandle As IntPtr, _ ‘ ハンドル値

ByRef DstPtr As Byte, _ ‘ 取り出し先バッファ

ByVal FrameNum As Integer, _ ‘ フレーム指定

ByRef Rect As IFCMLRECT, _ ‘ IFCMLRECT 構造体

ByVal DataKind As Integer _ ‘ 取り出しデータ指定

)As Integer

Declare Function CmlGetMemData Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal MemHandle As IntPtr, _ ‘ ハンドル値

ByRef DstPtr As Short, _ ‘ 取り出し先バッファ

ByVal FrameNum As Integer, _ ‘ フレーム指定

ByRef Rect As IFCMLRECT, _ ‘ IFCMLRECT 構造体

ByVal DataKind As Integer _ ‘ 取り出しデータ指定

)As Integer

Page 124: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

124

Declare Function CmlGetMemData Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal MemHandle As IntPtr, _ ‘ ハンドル値

ByRef DstPtr As Integer, _ ‘ 取り出し先バッファ

ByVal FrameNum As Integer, _ ‘ フレーム指定

ByRef Rect As IFCMLRECT, _ ‘ IFCMLRECT 構造体

ByVal DataKind As Integer _ ‘ 取り出しデータ指定

)As Integer

Declare Function CmlGetMemData Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal MemHandle As IntPtr, _ ‘ ハンドル値

ByVal DstPtr( ) As Byte, _ ‘ 取り出し先バッファ

ByVal FrameNum As Integer, _ ‘ フレーム指定

ByRef Rect As IFCMLRECT, _ ‘ IFCMLRECT 構造体

ByVal DataKind As Integer _ ‘ 取り出しデータ指定

)As Integer

Declare Function CmlGetMemData Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal MemHandle As IntPtr, _ ‘ ハンドル値

ByVal DstPtr( ) As Short, _ ‘ 取り出し先バッファ

ByVal FrameNum As Integer, _ ‘ フレーム指定

ByRef Rect As IFCMLRECT, _ ‘ IFCMLRECT 構造体

ByVal DataKind As Integer _ ‘ 取り出しデータ指定

)As Integer

Declare Function CmlGetMemData Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal MemHandle As IntPtr, _ ‘ ハンドル値

ByVal DstPtr( ) As Integer, _ ‘ 取り出し先バッファ

ByVal FrameNum As Integer, _ ‘ フレーム指定

ByRef Rect As IFCMLRECT, _ ‘ IFCMLRECT 構造体

ByVal DataKind As Integer _ ‘ 取り出しデータ指定

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlGetMemData Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal MemHandle As Integer, _ ‘ ハンドル値

ByRef DstPtr As Byte, _ ‘ 取り出し先バッファ

ByVal FrameNum As Integer, _ ‘ フレーム指定

ByRef Rect As IFCMLRECT, _ ‘ IFCMLRECT 構造体

ByVal DataKind As Integer _ ‘ 取り出しデータ指定

)As Integer

Page 125: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

125

Declare Function CmlGetMemData Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal MemHandle As Integer, _ ‘ ハンドル値

ByRef DstPtr As Short, _ ‘ 取り出し先バッファ

ByVal FrameNum As Integer, _ ‘ フレーム指定

ByRef Rect As IFCMLRECT, _ ‘ IFCMLRECT 構造体

ByVal DataKind As Integer _ ‘ 取り出しデータ指定

)As Integer

Declare Function CmlGetMemData Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal MemHandle As Integer, _ ‘ ハンドル値

ByRef DstPtr As Integer, _ ‘ 取り出し先バッファ

ByVal FrameNum As Integer, _ ‘ フレーム指定

ByRef Rect As IFCMLRECT, _ ‘ IFCMLRECT 構造体

ByVal DataKind As Integer _ ‘ 取り出しデータ指定

)As Integer

Declare Function CmlGetMemData Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal MemHandle As Integer, _ ‘ ハンドル値

ByVal DstPtr( ) As Byte, _ ‘ 取り出し先バッファ

ByVal FrameNum As Integer, _ ‘ フレーム指定

ByRef Rect As IFCMLRECT, _ ‘ IFCMLRECT 構造体

ByVal DataKind As Integer _ ‘ 取り出しデータ指定

)As Integer

Declare Function CmlGetMemData Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal MemHandle As Integer, _ ‘ ハンドル値

ByVal DstPtr( ) As Short, _ ‘ 取り出し先バッファ

ByVal FrameNum As Integer, _ ‘ フレーム指定

ByRef Rect As IFCMLRECT, _ ‘ IFCMLRECT 構造体

ByVal DataKind As Integer _ ‘ 取り出しデータ指定

)As Integer

Declare Function CmlGetMemData Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal MemHandle As Integer, _ ‘ ハンドル値

ByVal DstPtr( ) As Integer, _ ‘ 取り出し先バッファ

ByVal FrameNum As Integer, _ ‘ フレーム指定

ByRef Rect As IFCMLRECT, _ ‘ IFCMLRECT 構造体

ByVal DataKind As Integer _ ‘ 取り出しデータ指定

)As Integer

Page 126: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

126

●Delphi 8

class function CmlGetMemData(

DeviceHandle: Integer; // デバイスハンドル

MemHandle: Integer; // ハンドル値

var DstPtr: Byte; // 取り出し先バッファ

FrameNum: Cardinal; // フレーム指定

var Rect: IFCMLRECT; // IFCMLRECT 構造体

DataKind Cardinal // 取り出しデータ指定

): Integer; static;

class function CmlGetMemData(

DeviceHandle: Integer; // デバイスハンドル

MemHandle: Integer; // ハンドル値

var DstPtr: Short; // 取り出し先バッファ

FrameNum: Cardinal; // フレーム指定

var Rect: IFCMLRECT; // IFCMLRECT 構造体

DataKind Cardinal // 取り出しデータ指定

): Integer; static;

class function CmlGetMemData(

DeviceHandle: Integer; // デバイスハンドル

MemHandle: Integer; // ハンドル値

var DstPtr: Integer; // 取り出し先バッファ

FrameNum: Cardinal; // フレーム指定

var Rect: IFCMLRECT; // IFCMLRECT 構造体

DataKind Cardinal // 取り出しデータ指定

): Integer; static;

class function CmlGetMemData(

DeviceHandle: Integer; // デバイスハンドル

MemHandle: Integer; // ハンドル値

DstPtr: array of Byte; // 取り出し先バッファ

FrameNum: Cardinal; // フレーム指定

var Rect: IFCMLRECT; // IFCMLRECT 構造体

DataKind Cardinal // 取り出しデータ指定

): Integer; static;

class function CmlGetMemData(

DeviceHandle: Integer; // デバイスハンドル

MemHandle: Integer; // ハンドル値

DstPtr: array of Short; // 取り出し先バッファ

FrameNum: Cardinal; // フレーム指定

var Rect: IFCMLRECT; // IFCMLRECT 構造体

DataKind Cardinal // 取り出しデータ指定

): Integer; static;

Page 127: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

127

class function CmlGetMemData(

DeviceHandle: Integer; // デバイスハンドル

MemHandle: Integer; // ハンドル値

DstPtr: array of Integer; // 取り出し先バッファ

FrameNum: Cardinal; // フレーム指定

var Rect: IFCMLRECT; // IFCMLRECT 構造体

DataKind Cardinal // 取り出しデータ指定

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

MemHandle 取得したいデータが格納されているバッファのハンドル値を渡します。

DstPtr データ確保先のバッファのポインタ(参照渡し)を指定します。

FrameNum データを取得したいフレーム番号を指定します。ラインカメラモードの場合は、設定無効

です。

Rect IFCMLRECT 構造体のポインタ(参照渡し)を指定します。

●エリアカメラモード

IFCMLRECT 構造体には 1フレーム内の欲しい矩形領域をセットします。

●ラインカメラモード

IFCMLRECT 構造体の YStart には、取得開始ライン番号を指定します。YLength にはライン

数を指定します。

Page 128: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

128

DataKind 取得したいデータの種類を選択します。

CmlSetCaptureFormatInfo 関数の第二引数 IFCMLCAPFMT 構造体変数の OptionFormat メンバ

で指定した種類に合わせる必要があります。

以下に示すビットの値を 1にすることで選択できます。

ビット 内容

bit31~bit12 無効

bit11 射影データ

bit10 濃度分布データ

bit9 重心値

bit8 面積値

bit7~bit4 無効

bit3 汎用カウンタ 3

bit2 汎用カウンタ 2

bit1 汎用カウンタ 1

bit0 キャプチャした画像データ

※射影データ, 濃度分布データの取得は、PEX-H530821, H531021 専用です。

また、射影データ, 濃度分布データはラインカメラでは取得できません。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

PBYTE BuffPtr;

HANDLE MemHandle;

IFCMLRECT Rect;

Ret = CmlGetMemData(DeviceHandle, MemHandle, BuffPtr, 1, &Rect, 0x01);

●Visual Basic

Dim DeviceHandle As Long

Dim Buff() As Byte

Dim MemHandle As Long

Dim Rect As IFCMLRECT

Dim Ret As Integer

Ret = CmlGetMemData(DeviceHandle, MemHandle, Buff(0), 1, Rect, &H01)

Page 129: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

129

●Delphi

var

DeviceHandle: THandle;

BuffPtr: Pointer;

Rect: IFCMLRECT;

MemHandle: THandle;

Ret: Integer;

Ret := CmlGetMemData(DeviceHandle, MemHandle, BuffPtr, 1, Rect, $01);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

byte BuffPtr[];

IntPtr MemHandle;

IFCCML_ANY.IFCMLRECT Rect;

ret = IFCCML_ANY.CmlGetMemData(DeviceHandle, MemHandle, BuffPtr, 1, ref Rect, 0x01);

●Visual Basic .NET

Dim hDeviceHandle As IntPtr

Dim Buff() As Byte

Dim MemHandle As IntPtr

Dim Rect As IFCCML_ANY.IFCMLRECT

ret = IFCCML_ANY.CmlGetMemData(DeviceHandle, MemHandle, Buff, 1, Rect, &H01)

●Delphi 8

var

DeviceHandle: Integer;

BuffPtr: Pointer;

Rect: IFCCML.IFCMLRECT;

MemHandle: Integer;

ret: Integer;

ret := IFCCML.CmlGetMemData(DeviceHandle, MemHandle, BuffPtr, 1, Rect, $01);

指定したハンドル値のメモリから、画像データを取得します。

Page 130: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

130

11. CmlGetMemPtrValue

【機能】

x64 環境専用です。CmlRegistMemInfo 関数でコンピュータのメインメモリを指定した場合、メイ

ンメモリ内に確保したバッファの先頭アドレスを取得します。

【書式】

●C言語

INT CmlGetMemPtrValue(

HANDLE DeviceHandle, // デバイスハンドル

HANDLE MemHandle, // ハンドル値

PVOID *MemoryAddress // 先頭アドレス

);

●Visual Basic

Declare Function CmlGetMemPtrValue Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal MemHandle As Long, _ ‘ ハンドル値

ByRef MemoryAddress As Any ‘ 先頭アドレス

)As Long

●Delphi

function CmlGetMemPtrValue (

DeviceHandle: THandle; // デバイスハンドル

MemHandle: THandle; // ハンドル値

var MemoryAddress: Pointer // 先頭アドレス

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x64 専用)

[DllImport("IfCml.dll")]

public static extern int CmlGetMemPtrValue (

IntPtr DeviceHandle, // デバイスハンドル

IntPtr MemHandle, // ハンドル値

out IntPtr MemoryAddress // 先頭アドレス

);

●Visual Basic .NET((x64 専用)

Declare Function CmlGetMemPtrValue Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal MemHandle As IntPtr, _ ‘ ハンドル値

ByRef MemoryAddress As IntPtr _ ‘ 先頭アドレス

)As Integer

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

MemHandle CmlRegistMemInfo 関数で取得したハンドルを指定します。

Page 131: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

131

MemoryAddress メインメモリ内に確保したバッファの先頭アドレスを取得する変数へのポインタを指定し

てください。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

PVOID MemPtr;

PBYTE BuffPtr;

HANDLE MemHandle;

Ret = CmlGetMemPtrValue (DeviceHandle, MemHandle, &MemPtr);

BuffPtr = (PBYTE)MemPtr;

●Visual Basic

Dim DeviceHandle As Long

Dim MemPtr As Long

Dim Ret As Integer

Ret = CmlGetMemPtrValue (DeviceHandle, MemHandle, MemPtr)

●Delphi

var

DeviceHandle: THandle;

MemPtr: Pointer;

MemHandle: THandle;

Ret: Integer;

Ret := CmlGetMemPtrValue (DeviceHandle, MemHandle, MemPtr);

Page 132: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

132

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

uint MemHandle;

IntPtr BuffPtr;

ret = IFCCML_ANY. CmlGetMemPtrValue(DeviceHandle, MemHandle, out BuffPtr);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim MemHandle As Integer

Dim BuffPtr As IntPtr

Dim ret As Integer

ret = IFCCML_ANY. CmlGetMemPtrValue (DeviceHandle, MemHandle, BuffPtr)

CmlRegistMemInfo 関数で取得したハンドルに対するバッファの先頭アドレスを取得します。

Page 133: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

133

12. CmlSetCapConfig

【機能】

デバイスへ転送先メモリの情報とキャプチャの条件を設定します。

メモリの情報は CmlRegistMemInfo 関数で取得したハンドルを指定します。

【書式】

●C言語

INT CmlSetCapConfig (

HANDLE DeviceHandle, // デバイスハンドル

HANDLE MemHandle, // ハンドル値

PIFCMLCAPFMT Format // IFCMLCAPFMT 構造体

);

●Visual Basic

Declare Function CmlSetCapConfig Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal MemHandle As Long, _ ‘ ハンドル値

ByRef Format As IFCMLCAPFMT _ ‘ IFCMLCAPFMT 構造体

)As Long

●Delphi

function CmlSetCapConfig (

DeviceHandle: THandle; // デバイスハンドル

MemHandle: THandle; // ハンドル値

var Format: IFCMLCAPFMT // IFCMLCAPFMT 構造体

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86,x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetCapConfig (

IntPtr DeviceHandle, // デバイスハンドル

IntPtr MemHandle, // ハンドル値

ref IFCMLCAPFMT Format // IFCMLCAPFMT 構造体

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSetCapConfig (

uint DeviceHandle, // デバイスハンドル

uint MemHandle, // ハンドル値

ref IFCMLCAPFMT Format // IFCMLCAPFMT 構造体

);

Page 134: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

134

●Visual Basic .NET(x86,x64 共用)

Declare Function CmlSetCapConfig Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal MemHandle As IntPtr, _ ‘ ハンドル値

ByRef Format As IFCMLCAPFMT _ ‘ IFCMLCAPFMT 構造体

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlSetCapConfig Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal MemHandle As Integer, _ ‘ ハンドル値

ByRef Format As IFCMLCAPFMT _ ‘ IFCMLCAPFMT 構造体

)As Integer

●Delphi 8

class function CmlSetCapConfig (

DeviceHandle: Integer; // デバイスハンドル

MemHandle: Integer; // ハンドル値

var Format: IFCMLCAPFMT // IFCMLCAPFMT 構造体

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

MemHandle CmlRegistMemInfo 関数で取得したハンドル値を渡します。

Format CmlCaptureFormatInfo 関数で取得した IFCMLCAPFMT 構造体のポインタ(参照渡し)を指定し

ます。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

Page 135: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

135

【使用例】

●C 言語

INT Ret;

HANDLE DeviceHandle;

HANDLE MemHandle;

IFCMLCAPFMT FmtInfo;

Ret = CmlSetCapConfig(DeviceHandle, MemHandle, &FmtInfo);

●Visual Basic

Dim DeviceHandle As Long

Dim MemHandle As Long

Dim FmtInfo As IFCMLCAPFMT

Dim Ret As Integer

Ret = CmlSetCapConfig(DeviceHandle, MemHandle, FmtInfo)

●Delphi

var

DeviceHandle: THandle;

FmtInfo : IFCMLCAPFMT;

hMemHandle: THandle;

Ret: Integer;

Ret := CmlSetCapConfig(DeviceHandle, MemHandle, FmtInfo);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

IntPtr MemHandle;

IFCCML_ANY.IFCMLCAPFMT FmtInfo;

ret = IFCCML_ANY.CmlSetCapConfig(DeviceHandle, MemHandle, ref FmtInfo);

Page 136: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

136

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim MemHandle As IntPtr

Dim FmtInfo As IFCCML_ANY.IFCMLCAPFMT

Dim ret As Integer

ret = IFCCML_ANY.CmlSetCapConfig(DeviceHandle, MemHandle, FmtInfo)

●Delphi 8

var

DeviceHandle: Integer;

FmtInfo : IFCCML.IFCMLCAPFMT;

MemHandle: Integer;

ret: Integer;

ret := IFCCML.CmlSetCapConfig(DeviceHandle, MemHandle, FmtInfo);

デバイスへ CmlRegistMemInfo 関数で取得したハンドルとキャプチャ条件を設定します。

Page 137: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

137

13. CmlStartCapture

【機能】

メインメモリおよび、オンボードメモリへキャプチャを開始します。

または、オンボードメモリ上のデータをメインメモリへ転送します。

【書式】

●C言語

INT CmlStartCapture (

HANDLE DeviceHandle, // デバイスハンドル

DWORD FrameCnt, // フレーム数

DWORD StartMode // スタート条件

);

●Visual Basic

Declare Function CmlStartCapture Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal FrameCnt As Long, _ ‘ フレーム数

ByVal StartMode As Long _ ‘ スタート条件

)As Long

●Delphi

function CmlStartCapture (

DeviceHandle: THandle; // デバイスハンドル

FrameCnt: DWORD; // フレーム数

StartMode: DWORD // スタート条件

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlStartCapture (

IntPtr DeviceHandle, // デバイスハンドル

uint FrameCnt, // フレーム数

uint StartMode // スタート条件

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlStartCapture (

uint DeviceHandle, // デバイスハンドル

uint FrameCnt, // フレーム数

uint StartMode // スタート条件

);

Page 138: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

138

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlStartCapture Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal FrameCnt As Integer, _ ‘ フレーム数

ByVal StartMode As Integer _ ‘ スタート条件

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlStartCapture Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal FrameCnt As Integer, _ ‘ フレーム数

ByVal StartMode As Integer _ ‘ スタート条件

)As Integer

●Delphi 8

class function CmlStartCapture (

DeviceHandle: THandle; // デバイスハンドル

FrameCnt: Cardinal; // フレーム数

StartMode: Cardinal // スタート条件

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

FrameCnt ●エリアカメラモード

キャプチャするフレーム数を指定します。

0 を渡した場合、CmlStopCapture 関数で停止するまで、キャプチャします。

●ラインカメラモード

キャプチャするライン数を指定します。

0 を渡した場合、CmlStopCapture 関数で停止するまで、キャプチャします。

Page 139: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

139

StartMode キャプチャ方法と同期モード、非同期モードを識別子で選択します。

同期モードは、キャプチャが完了したときに関数が戻ります。

非同期モードは、キャプチャ中に関数が戻ります。

識別子は以下に示す 1)と 2)の OR 指定です。

1) キャプチャ方法

識別子 値 内容

IFCML_CAM_DMA 00000001h カメラの画像データをメインメモリへキャプチャ

IFCML_CAM_MEM 00000002h カメラの画像データをオンボードメモリへキャプチャ

IFCML_MEM_DMA 00000004h オンボードメモリ上のデータをコンピュータのメインメ

モリへ転送

IFCML_CAM_DMA と IFCML_CAM_MEM を OR 指定することにより、両メモリへ同時にキャプチャ

することができます。

PEX-H530821, H530922, H531021, H531122, H531221 は IFCML_CAM_DMA のみ指定すること

が出来ます。

2)同期モード指定

識別子 値 内容

IFCML_CAP_SYNC 00000010h 同期モード

IFCML_CAP_ASYNC 00000020h 非同期モード

3)トリガスタートモード指定(CPZ/PEX/LPC-530221, 530521, PEX-H530821, H530922, H531021,

H531122, H531221 のみ)

識別子 値 内容

IFCML_TRG_START 00000100h トリガ同期スタート

トリガスタートモード指定時、トリガ発生前にキャプチャを停止させたい場合は、

CmlStopCapture 関数に IFCML_DMA_IMMEDIATE_STOP または IFCML_MEM_IMMEDIATE_STOP を指

定する事でキャプチャを停止することが出来ます。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

キャプチャの動作はリングバッファ形式による転送方法です。

画像データの転送先が、バッファ領域の 後に達した場合、転送先はバッファの先頭アドレス

へ戻ります。過去の画像データは上書きされることになります。

Page 140: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

140

【使用例】

●C 言語

INT Ret;

HANDLE DeviceHandle;

Ret = CmlStartCapture(DeviceHandle, 1, IFCML_CAM_DMA|IFCML_CAP_SYNC);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Ret = CmlStartCapture(DeviceHandle, 1, IFCML_CAM_DMA Or IFCML_CAP_SYNC)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Ret := CmlStartCapture(DeviceHandle, 1, IFCML_CAM_DMA or IFCML_CAP_SYNC);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

ret = IFCCML_ANY.CmlStartCapture(DeviceHandle, 1,

IFCCML_ANY.IFCML_CAM_DMA| IFCCML_ANY.IFCML_CAP_SYNC);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

ret = IFCCML_ANY.CmlStartCapture(DeviceHandle, 1, _

IFCCML_ANY.IFCML_CAM_DMA Or IFCCML_ANY.IFCML_CAP_SYNC)

●Delphi 8

var

DeviceHandle: Integer;

Ret: Integer;

Ret := IFCCML.CmlStartCapture(DeviceHandle, 1, IFCCML.IFCML_CAM_DMA or

IFCCML.IFCML_CAP_SYNC);

同期モードによる 1フレームキャプチャを開始します。

Page 141: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

141

14. CmlStopCapture

【機能】

メインメモリおよび、オンボードメモリへキャプチャを停止します。

または、オンボードメモリ上のデータをメインメモリへの転送を停止します。

【書式】

●C言語

INT CmlStopCapture (

HANDLE DeviceHandle, // デバイスハンドル

DWORD StopMode // ストップ条件

);

●Visual Basic

Declare Function CmlStopCapture Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal StopMode As Long _ ‘ ストップ条件

)As Long

●Delphi

function CmlStopCapture (

DeviceHandle: THandle; // デバイスハンドル

StopMode: DWORD // ストップ条件

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlStopCapture (

IntPtr DeviceHandle, // デバイスハンドル

uint StopMode // ストップ条件

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlStopCapture (

uint DeviceHandle, // デバイスハンドル

uint StopMode // ストップ条件

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlStopCapture Lib "IFCml.DLL"( _

ByVal DeviceHandle, As IntPtr, _ ‘ デバイスハンドル

ByVal StopMode As Integer _ ‘ ストップ条件

)As Integer

Page 142: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

142

●Visual Basic .NET(x86 専用)

Declare Function CmlStopCapture Lib "IFCml.DLL"( _

ByVal DeviceHandle, As Integer, _ ‘ デバイスハンドル

ByVal StopMode As Integer _ ‘ ストップ条件

)As Integer

●Delphi 8

class function CmlStopCapture (

DeviceHandle: Integer; // デバイスハンドル

StopMode: Cardinal // ストップ条件

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

StopMode 1)と 2)の識別子を OR 指定することにより、両メモリへキャプチャを同時に停止指示する

ことができます。

PEX-H530821, H530922, H531021, H531122, H531221 はメインメモリのキャプチャ停止のみ

指定することが出来ます。

1)メインメモリ

識別子 値 内容

IFCML_DMA_STOP 00000001h 関数を実行した瞬間のフレームでキャプチャを停

止します。

IFCML_DMA_IMMEDIATE_STOP 00000002h 即座にキャプチャを停止します。

関数を実行した瞬間のフレームは転送途中のまま

です。

2)オンボードメモリ

識別子 値 内容

IFCML_MEM_STOP 00000004h 関数を実行した瞬間のフレームでキャプチャを停

止します。

IFCML_MEM_IMMEDIATE_STOP 00000008h 即座にキャプチャを停止します。

関数を実行した瞬間のフレームは転送途中のまま

です。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

Page 143: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

143

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

Ret = CmlStopCapture (DeviceHandle, IFCML_DMA_STOP);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Ret = CmlStopCapture (DeviceHandle, IFCML_DMA_STOP)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Ret := CmlStopCapture (DeviceHandle, IFCML_DMA_STOP);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

ret = IFCCML_ANY.CmlStopCapture (DeviceHandle, IFCCML_ANY.IFCML_DMA_STOP);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

ret = IFCCML_ANY.CmlStopCapture (DeviceHandle, IFCCML_ANY.IFCML_DMA_STOP)

●Delphi 8

var

DeviceHandle: Integer;

ret: Integer;

ret := IFCCML.CmlStopCapture (DeviceHandle, IFCCML.IFCML_DMA_STOP);

メインメモリへのキャプチャを停止します。

Page 144: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

144

15. CmlGetCaptureStatus

【機能】

キャプチャが実行中/停止中、キャプチャ完了フレーム数を知ることができます。

【書式】

●C言語

INT CmlGetCaptureStatus (

HANDLE DeviceHandle, // デバイスハンドル

PIFCMLCAPSTS CapSt // IFCMLCAPSTS 構造体

);

●Visual Basic

Declare Function CmlGetCaptureStatus Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByRef CapSt As IFCMLCAPSTS _ ‘ IFCMLCAPSTS 構造体

)As Long

●Delphi

function CmlGetCaptureStatus (

DeviceHandle: THandle; // デバイスハンドル

var CapSt: IFCMLCAPSTS // IFCMLCAPSTS 構造体

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlGetCaptureStatus (

IntPtr DeviceHandle, // デバイスハンドル

out IFCMLCAPSTS CapSt // IFCMLCAPSTS 構造体

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlGetCaptureStatus (

uint DeviceHandle, // デバイスハンドル

out IFCMLCAPSTS CapSt // IFCMLCAPSTS 構造体

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlGetCaptureStatus Lib "IFCml.DLL"( _

ByVal hDeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByRef CapSt As IFCMLCAPSTS _ ‘ IFCMLCAPSTS 構造体

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlGetCaptureStatus Lib "IFCml.DLL"( _

ByVal hDeviceHandle As Integer, _ ‘ デバイスハンドル

ByRef CapSt As IFCMLCAPSTS _ ‘ IFCMLCAPSTS 構造体

)As Integer

Page 145: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

145

●Delphi 8

class function CmlGetCaptureStatus (

hDeviceHandle: THandle // デバイスハンドル

var CapSt: IFCMLCAPSTS // IFCMLCAPSTS 構造体

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

CapSt IFCMLCAPSTS 構造体のポインタ(参照渡し)を指定します。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

IFCMLCAPSTS CapSt;

Ret = CmlGetCaptureStatus(DeviceHandle, &CapSt);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Dim CapSt As IFCMLCAPSTS

Ret = CmlGetCaptureStatus(DeviceHandle, CapSt)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

CapSt: IFCMLCAPSTS;

Ret := CmlGetCaptureStatus(DeviceHandle, CapSt);

Page 146: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

146

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

IFCCML_ANY.IFCMLCAPSTS CapSt;

ret = IFCCML_ANY.CmlGetCaptureStatus(DeviceHandle, out CapSt);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

Dim CapSt As IFCCML_ANY.IFCMLCAPSTS

ret = IFCCML_ANY.CmlGetCaptureStatus(DeviceHandle, CapSt)

●Delphi 8

var

DeviceHandle: Integer;

ret: Integer;

CapSt: IFCCML.IFCMLCAPSTS;

ret := IFCCML.CmlGetCaptureStatus(DeviceHandle, CapSt);

キャプチャ状態を取得します。

Page 147: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

147

16. CmlSetEventMask

【機能】

各種割り込みイベント のマスクまたはアンマスクを設定します。

【書式】

●C言語

INT CmlSetEventMask (

HANDLE DeviceHandle, // デバイスハンドル

DWORD EventMask // 割り込みイベントの選択

);

●Visual Basic

Declare Function CmlSetEventMask Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal EventMask As Long _ ‘ 割り込みイベントの選択

)As Long

●Delphi

function CmlSetEventMask (

DeviceHandle: THandle; // デバイスハンドル

EventMask: DWORD // 割り込みイベントの選択

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetEventMask (

IntPtr DeviceHandle, // デバイスハンドル

uint EventMask // 割り込みイベントの選択

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSetEventMask (

uint DeviceHandle, // デバイスハンドル

uint EventMask // 割り込みイベントの選択

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlSetEventMask Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal EventMask As Integer _ ‘ 割り込みイベントの選択

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlSetEventMask Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal EventMask As Integer _ ‘ 割り込みイベントの選択

)As Integer

Page 148: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

148

●Delphi 8

class function CmlSetEventMask (

DeviceHandle: Integer; // デバイスハンドル

EventMask: Cardinal // 割り込みイベントの選択

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

EventMask 割り込みイベント要因を選択します。

以下に示す bit を 1 にすることで割り込みをアンマスクします。

0 を指定することにより、割り込みをマスクします。

ビット 内容

bit31~bit27 予約

bit26 PoCL のエラーが発生すると割り込みイベントを発生します。

bit25 重心値がCmlSetGrvTrgParam関数で設定した条件に満たしたら割り込みイベントを

発生します。

bit24 面積値が CmlSetAreaTrgParam 関数で設定した条件に満たしたら割り込みイベント

を発生します。

bit23~bit16 汎用入力割り込みイベントです。

IN8~IN1 の各入力状態が 1 になったらイベントが発生します。

bit15~bit12 予約

bit11 エンコーダパルス入力時、A,B 相が同位相(位相差 60ns 以内)で同時に立ち上がる

とにエラーとして割り込みを発生させます。

bit10 汎用カウンタ③のカウンタ値が周期に達したらイベントが発生します。

bit9 汎用カウンタ②のカウンタ値が周期に達したらイベントが発生します。

bit8 汎用カウンタ①のカウンタ値が周期に達したらイベントが発生します。

bit7~bit5 予約

bit4 オンボードメモリのキャプチャ動作時に発生する割り込みです。

●エリアカメラモードの場合

1 フレーム毎にキャプチャが完了したらイベントが発生します。

●ラインカメラモードの場合

CmlSetEventCounter 関数で設定したライン数毎キャプチャが完了したらイベント

が発生します。

bit3~bit2 予約

bit1 CPZ/LPC/PEX-530121,530221,530421,530521 専用

メインメモリへのキャプチャ動作時に発生する割り込みです。

キャプチャエラー時にイベントが発生します。

PCI バス上のデータ転送に負荷がかかった為、デバイス内の中間バッファがオーバ

ーフローしたことが要因です。

bit0 メインメモリのキャプチャ動作時に発生する割り込みです。

●エリアカメラモードの場合

1 フレーム毎にキャプチャが完了したらイベントが発生します。

●ラインカメラモードの場合

CmlSetEventCounter 関数で設定したライン数毎キャプチャが完了したらイベント

が発生します。

Page 149: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

149

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【注意事項】

●EventMask 引数の設定について

以下に各型式で指定できる bit 一覧を示します。

○:使用することが出来ます。

×:使用することが出来ません。

-:予約

△:条件付で使用することが出来ます。※

ビット

型式 0 1

2-

3 4

5-

7 8 9 10 11

12-

15

16-

23 24 25 26

27-

31

PEX-H530821 ○ × - × - ○ ○ ○ ○ - ○ ○ ○ × -

PEX-H531021 ○ × - × - ○ ○ ○ ○ - ○ ○ ○ × -

PEX-H531221 ○ × - × - ○ ○ ○ ○ - ○ × × × -

CH1 ○ × - × - △ △ △ ○ - ○ × - × - PEX-H53

0922 CH2 ○ × - × - △ △ △ × - × × - × -

CH1 ○ × - × - △ △ △ ○ - ○ × - × - PEX-H53

1122 CH2 ○ × - × - △ △ △ × - × × - × -

PCI-530521 ○ ○ - ○ - ○ ○ ○ ○ - ○ ○ ○ ○ -

上記以外の

型式 ○ ○ - ○ - ○ ○ ○ ○ - ○ ○ ○ × -

※bit8~10 の汎用カウンタ①~③の条件付きで使用出来る割り込みについて

CH1 側で、汎用カウンタのカウントアップ条件をシングルエンド入力方式エンコーダカウン

タ 1に設定していた場合、CH2 側では該当する汎用カウンタ割り込みは発生しません。

逆に、CH2 側で、汎用カウンタのカウントアップ条件をシングルエンド入力方式エンコーダ

カウンタ 2 に設定していた場合、CH1 側では、該当する汎用カウンタ割り込みは発生しませ

ん。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

Ret = CmlSetEventMask(DeviceHandle, 0x01);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Ret = CmlSetEventMask(DeviceHandle, &H01)

Page 150: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

150

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Ret := CmlSetEventMask(DeviceHandle, $01);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

ret = IFCCML_ANY.CmlSetEventMask(DeviceHandle, 0x03);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

ret = IFCCML_ANY.CmlSetEventMask(DeviceHandle, &H03)

●Delphi 8

var

DeviceHandle: Integer;

ret: Integer;

ret := IFCCML.CmlSetEventMask(DeviceHandle, $03);

1 フレーム毎キャプチャ割込みを有効にします。

Page 151: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

151

17. CmlSetEventMaskEx

【機能】

各種割り込みイベント のマスクまたはアンマスクを設定します。

【書式】

●C言語

INT CmlSetEventMaskEx (

HANDLE DeviceHandle, // デバイスハンドル

DWORD EventMask, // キャプチャ・画像処理制御用

// 割り込みイベントの選択

DWORD CommonEventMask // カウンタ、DIO 制御用

// 割り込みイベントの選択

);

●Visual Basic

Declare Function CmlSetEventMaskEx Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal EventMask As Long, _ ‘ キャプチャ・画像処理制御用

‘ 割り込みイベントの選択

ByVal CommonEventMask As Long _ ‘ カウンタ、DIO 制御用

‘ 割り込みイベントの選択

)As Long

●Delphi

function CmlSetEventMaskEx (

DeviceHandle: THandle; // デバイスハンドル

EventMask: DWORD; // キャプチャ・画像処理制御用

// 割り込みイベントの選択

CommonEventMask: DWORD // カウンタ、DIO 制御用

// 割り込みイベントの選択

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetEventMaskEx (

IntPtr DeviceHandle, // デバイスハンドル

uint EventMask, // キャプチャ・画像処理制御用

// 割り込みイベントの選択

uint CommonEventMask // カウンタ、DIO 制御用

// 割り込みイベントの選択

);

Page 152: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

152

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSetEventMaskEx (

uint DeviceHandle, // デバイスハンドル

uint EventMask, // キャプチャ・画像処理制御用

// 割り込みイベントの選択

uint CommonEventMask // カウンタ、DIO 制御用

// 割り込みイベントの選択

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlSetEventMaskEx Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal EventMask As Integer, _ ‘ キャプチャ・画像処理制御用

‘ 割り込みイベントの選択

ByVal CommonEventMask As Integer _ ‘ カウンタ、DIO 制御用

‘ 割り込みイベントの選択

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlSetEventMaskEx Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal EventMask As Integer, _ ‘ キャプチャ・画像処理制御用

‘ 割り込みイベントの選択

ByVal CommonEventMask As Integer _ ‘ カウンタ、DIO 制御用

‘ 割り込みイベントの選択

)As Integer

●Delphi 8

class function CmlSetEventMaskEx (

DeviceHandle: Integer; // デバイスハンドル

EventMask: Cardinal; // キャプチャ・画像処理制御用

// 割り込みイベントの選択

CommonEventMask: Cardinal // カウンタ、DIO 制御用

// 割り込みイベントの選択

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

Page 153: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

153

EventMask 割り込みイベント要因を選択します。

以下に示す bit を 1 にすることで割り込みをアンマスクします。

0 を指定することにより、割り込みをマスクします。

ReadLine1, 2、WriteLine に対する割り込みは PEX-H531221 のみ指定することが出来ます。 ビット 内容

bit31~bit28 予約

bit27 PoCL のエラーが発生すると割り込みが発生します。

bit26 ReadLine2 を通るデータ転送が完了すると割り込みが発生します。

bit25 ReadLine1 を通るデータ転送が完了すると割り込みが発生します。

bit24 WriteLine を通るデータ転送が完了すると割り込みが発生します。

bit23~bit7 予約

bit6 重心値がCmlSetGrvTrgParam関数で設定した条件に満たしたら割り込みイベントを

発生します。

bit5 面積値が CmlSetAreaTrgParam 関数で設定した条件に満たしたら割り込みイベント

を発生します。

bit4 CPZ/LPC/PEX-530121,530221,530421,530521 専用

オンボードメモリのキャプチャ動作時に発生する割り込みです。

●エリアカメラモードの場合

1 フレーム毎にキャプチャが完了したらイベントが発生します。

●ラインカメラモードの場合

CmlSetEventCounter 関数で設定したライン数毎キャプチャが完了したらイベント

が発生します。

bit3~bit2 予約

bit1 CPZ/LPC/PEX-530121,530221,530421,530521 専用

メインメモリへのキャプチャ動作時に発生する割り込みです。

キャプチャエラー時にイベントが発生します。

PCI バス上のデータ転送に負荷がかかった為、デバイス内の中間バッファがオーバ

ーフローしたことが要因です。

bit0 メインメモリのキャプチャ動作時に発生する割り込みです。

●エリアカメラモードの場合

1 フレーム毎にキャプチャが完了したらイベントが発生します。

●ラインカメラモードの場合

CmlSetEventCounter 関数で設定したライン数毎キャプチャが完了したらイベント

が発生します。

Page 154: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

154

CommonEventMask カウンタ機能、汎用入力割り込みイベント要因を選択します。

以下に示す bit を 1 にすることで割り込みをアンマスクします。

0 を指定することにより、割り込みをマスクします。

ビット 内容

bit31~bit24 PEX-H530821, H530922, H531021, H531122, H531221 専用

CN4 の汎用入力(IN8~IN1)割り込み。

bit23~bit16 汎用入力割り込み(IN8~IN1)

bit15 ユーザ割り込み要因 8

bit14 ユーザ割り込み要因 7

bit13 ユーザ割り込み要因 6

bit12 ユーザ割り込み要因 5

bit11 ユーザ割り込み要因 4

bit10 ユーザ割り込み要因 3

bit9 ユーザ割り込み要因 2

bit8 ユーザ割り込み要因 1

bit7~bit6 予約

bit5 シングルエンド入力方式エンコーダカウンタ 2のエラー割り込み。

CN4(IN4,IN5)へ入力するパルスの A,B 相が、同位相(位相差 60ns 以内)で立ち上がる

とエラーとして割り込みを発生させます。

bit4 シングルエンド入力方式エンコーダカウンタ 1のエラー割り込み。

CN4(IN1,IN2)へ入力するパルスの A,B 相が、同位相(位相差 60ns 以内)で立ち上がる

とエラーとして割り込みを発生させます。

bit3 差動入力方式エンコーダカウンタのエラー割り込み。

入力するパルスの A,B 相が、同位相(位相差 60ns 以内)で立ち上がるとエラーとして

割り込みを発生させます。

bit2 汎用カウンタ③のカウンタ値が周期に達したらイベントが発生します。

bit1 汎用カウンタ②のカウンタ値が周期に達したらイベントが発生します。

bit0 汎用カウンタ①のカウンタ値が周期に達したらイベントが発生します。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

Page 155: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

155

【注意事項】

●EventMask 引数の設定について

以下に各型式で指定できる bit 一覧を示します。

○:使用することが出来ます。

×:使用することが出来ません。

-:予約

△:条件付で使用することが出来ます。

ビット

型式 0 1

2-

3 4 5 6

7-

23 24 25 26 27

28-

31

PEX-H530821 ○ × - × ○ ○ - × × × × -

PEX-H531021 ○ × - × ○ ○ - × × × × -

PEX-H531221 ○ × - × × × - ○ ○ ○ × -

CH1 ○ × - × × - - × × - × - PEX-H53092

2 CH2 ○ × - × × - - × × - × -

CH1 ○ × - × × - - × × - × - PEX-H53112

2 CH2 ○ × - × × - - × × - × -

PCI-530521 ○ ○ - ○ ○ ○ - × × × ○ -

上記以外の

型式 ○ ○ - ○ ○ ○ - × × × × -

●CommonEventMask 引数の設定について

以下に各型式で指定できる bit 一覧を示します。

○:使用することが出来ます。

×:使用することが出来ません。

-:予約

△:条件付で使用することが出来ます。※

ビット

型式 0 1 2 3 4 5

6-

7

8-

15

16-

23

24-

31

PEX-H530821 ○ ○ ○ ○ ○ × - × ○ ○

PEX-H531021 ○ ○ ○ ○ ○ × - ○ ○ ○

PEX-H531221 ○ ○ ○ ○ ○ × - ○ ○ ○

CH1 △ △ △ ○ ○ × - × ○ ○ PEX-H53092

2 CH2 △ △ △ × × ○ - × × ×

CH1 △ △ △ ○ ○ × - ○ ○ ○ PEX-H53112

2 CH2 △ △ △ × × ○ - × × ×

上記以外の

型式 ○ ○ ○ ○ × × - × ○ ×

※bit0~2 の汎用カウンタ①~③の条件付きで使用出来る割り込みについて

CH1 側で、汎用カウンタのカウントアップ条件をシングルエンド入力方式エンコーダカウン

タ 1に設定していた場合、CH2 側では該当する汎用カウンタ割り込みは発生しません。

逆に、CH2 側で、汎用カウンタのカウントアップ条件をシングルエンド入力方式エンコーダ

カウンタ 2 に設定していた場合、CH1 側では、該当する汎用カウンタ割り込みは発生しませ

ん。

Page 156: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

156

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

DWORD EventMask;

DWORD CommonEventMask;

EventMask = 0x01;

CommonEventMask = 0;

Ret = CmlSetEventMaskEx(DeviceHandle, EventMask, CommonEventMask);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Dim EventMask As Long

Dim CommonEventMask As Long

EventMask = &H01

CommonEventMask = 0

Ret = CmlSetEventMaskEx(DeviceHandle, EventMask, CommonEventMask)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

EventMask: DWORD;

CommonEventMask: DWORD;

EventMask := $01;

CommonEventMask := 0;

Ret := CmlSetEventMaskEx(DeviceHandle, EventMask, CommonEventMask);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

uint EventMask;

uint CommonEventMask;

EventMask = 0x01;

CommonEventMask = 0;

ret = IFCCML_ANY.CmlSetEventMaskEx(DeviceHandle, EventMask, CommonEventMask);

Page 157: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

157

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim EventMask As Integer

Dim CommonEventMask As Integer

Dim ret As Integer

EventMask = &H01

CommonEventMask = 0;

ret = IFCCML_ANY.CmlSetEventMaskEx(DeviceHandle, EventMask, CommonEventMask)

●Delphi 8

var

DeviceHandle: Integer;

EventMask: Cardinal;

CommonEventMask: Cardinal;

ret: Integer;

EventMask := $01;

CommonEventMask := 0;

ret := IFCCML.CmlSetEventMaskEx(DeviceHandle, EventMask, CommonEventMask);

1 フレーム毎キャプチャ割込みを有効にします。

Page 158: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

158

18. CmlGetEventMask

【機能】

各種割り込みのマスク状態を取得します。

PEX-H530821, H530922, H531021, H531122, H531221 では使用することが出来ません。

【書式】

●C言語

INT CmlGetEventMask (

HANDLE DeviceHandle, // デバイスハンドル

PDWORD EventMask // 割り込みイベント

);

●Visual Basic

Declare Function CmlGetEventMask Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByRef EventMask As Long _ ‘ 割り込みイベント

)As Long

●Delphi

function CmlGetEventMask (

DeviceHandle: THandle; // デバイスハンドル

var EventMask: DWORD // 割り込みイベント

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlGetEventMask (

IntPtr DeviceHandle, // デバイスハンドル

ref uint EventMask // 割り込みイベント

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlGetEventMask (

uint DeviceHandle, // デバイスハンドル

ref uint EventMask // 割り込みイベント

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlGetEventMask Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByRef EventMask As Integer _ ‘ 割り込みイベント

)As Integer

Page 159: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

159

●Visual Basic .NET(x86 専用)

Declare Function CmlGetEventMask Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByRef EventMask As Integer _ ‘ 割り込みイベント

)As Integer

●Delphi 8

class function CmlGetEventMask (

DeviceHandle: THandle; // デバイスハンドル

var EventMask: Cardinal // 割り込みイベント

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

EventMask 割り込みイベント設定状態を格納する変数のポインタ(参照渡し)を指定します。

変数値の意味は、CmlSetEventMask関数のEventMask引数の説明をご参照ください。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

DWORD EventMask;

Ret = CmlGetEventMask(DeviceHandle, &EventMask);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Dim EventMask As Long

Ret = CmlGetEventMask(DeviceHandle, EventMask)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

EventMask: DWORD;

Ret := CmlGetEventMask(DeviceHandle, EventMask);

Page 160: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

160

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

uint EventMask;

ret = IFCCML_ANY.CmlGetEventMask(DeviceHandle, out EventMask);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

Dim EventMask As Integer

ret = IFCCML_ANY.CmlGetEventMask(DeviceHandle, EventMask)

●Delphi 8

var

DeviceHandle: Integer;

ret: Integer;

EventMask: Catdnal;

ret := IFCCML.CmlGetEventMask(DeviceHandle, EventMask);

割り込みイベントのマスク状態を取得します。

Page 161: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

161

19. CmlSetEvent

【機能】

割り込み処理の設定(メッセージ、コールバック関数の登録)を行います。

CmlSetEventMask 関数または CmlSetEventMaskEx 関数で指定した割り込み要因が発生した場合、

本関数で設定した割り込み処理が実行されます。

CmlSetEvent 関数と CmlSetEentEx 関数を同時に使用することはできません。

【書式】

●C言語

INT CmlSetEvent(

HANDLE DeviceHandle, // デバイスハンドル

PIFCMLEVENTREQ Event // IFCMLEVENTREQ 構造体

);

●Visual Basic

Declare Function CmlSetEvent Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByRef Event As IFCMLEVENTREQ _ ‘ IFCMLEVENTREQ 構造体

)As Long

●Delphi

function CmlSetEvent (

DeviceHandle: THandle; // デバイスハンドル

var Event: IFCMLEVENTREQ // IFCMLEVENTREQ 構造体

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetEvent(

IntPtr DeviceHandle, // デバイスハンドル

ref IFCMLEVENTREQ Event // IFCMLEVENTREQ 構造体

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSetEvent(

uint DeviceHandle, // デバイスハンドル

ref IFCMLEVENTREQ Event // IFCMLEVENTREQ 構造体

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlSetEvent Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByRef Event As IFCMLEVENTREQ _ ‘ IFCMLEVENTREQ 構造体

)As Integer

Page 162: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

162

●Visual Basic .NET(x86 専用)

Declare Function CmlSetEvent Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByRef Event As IFCMLEVENTREQ _ ‘ IFCMLEVENTREQ 構造体

)As Integer

●Delphi 8

class function CmlSetEvent (

DeviceHandle: Integer; // デバイスハンドル

var Event: IFCMLEVENTREQ // IFCMLEVENTREQ 構造体

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

Event

IFCMLEVENTREQ 構造体へのポインタ(参照渡し)を指定します。

NULL を指定した場合、割り込み処理の設定が解除されます。

CmlSetEventEx 関数を使用したい場合は、Event 引数に NULL を指定して割り込みの設定を

解除した後、CmlSetEventEx 関数を実行してください。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

Page 163: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

163

【使用例】

●C言語(x86 専用)

VOID CALLBACK CallBackProc(DWORD IntFlg,DWORD User)

{

:

}

:

INT Ret;

HANDLE DeviceHandle;

IFCMLEVENTREQ Event;

Event.WndHandle = NULL;

Event.MessageCode = NULL;

Event.CallBackProc = CallBackProc;

Event.User = 1234;

Ret = CmlSetEvent(DeviceHandle, &Event);

●C 言語(x64 専用)

VOID CALLBACK CallBackProc(DWORD IntFlg,PVOID User)

{

DWORD UserData;

UserData = *((PDWORD)User);

:

}

:

INT Ret;

HANDLE DeviceHandle;

IFCMLEVENTREQ Event;

DWORD UserData;

UserData = 1234;

Event.WndHandle = NULL;

Event.MessageCode = NULL;

Event.CallBackProc = CallBackProc;

Event.User = &UserData;

Ret = CmlSetEvent(DeviceHandle, &Event);

Page 164: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

164

●Visual Basic

元のウィンドウ・プロシージャのアドレス保存用変数

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 Ret As Long

Dim DeviceHandle As Long

Dim Event As IFCMLEVENTREQ

' ウィンドウ・プロシージャをフックします

lpPrevWndProc = SetWindowLong(Form1.hWnd, GWL_WNDPROC, AddressOf WindowProc)

Event.Wnd = Form1.hWnd

Event.Message = WM_USER

Event.CallBackProc = 0

Event.User = 0

Ret = CmlGetEventMask(DeviceHandle, Event)

Page 165: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

165

●Delphi

// コールバック関数

procedure lpCallBackProc(IntFlg: DWORD , User: DWORD); stdcall;

var

//変数定義

begin

// 割り込み処理を記述します

:

:

end;

// メインルーチン

var

Ret: Integer;

DeviceHandle: THandle;

Event: IFCMLEVENTREQ;

Event.Wnd := 0;

Event.Message := 0;

Event.CallBackProc := Addr(lpCallBackProc);

Event.User := $1234;

Ret := CmlGetEventMask(DeviceHandle, Event);

●VISUAL C# .NET

public void CallBackProc(uint IntFlg,IntPtr User)

{

:

}

uint ret;

IntPtr DeviceHandle;

IFCCML_ANY.IFCMLEVENTREQ Event;

IFCCML_ANY.PIFCMLCALLBACK func;

func = new IFCCML_ANY.PIFCMLCALLBACK(CallBackProc);

Event.WndHandle = 0;

Event.MessageCode = 0;

Event.CallBackProc = func;

Event.User = 0;

ret = IFCCML_ANY.CmlSetEvent(DeviceHandle, ref Event);

Page 166: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

166

●Visual Basic .NET

' コールバック関数

Private Sub lpEventProc( ByVal IntFlg As Integer, ByVal User As IntPtr)

‘ 割り込み処理を記述します

:

:

End Sub

‘ メインルーチン

Dim ret As Integer

Dim DeviceHandle As IntPtr

Dim Event As IFCCML_ANY.IFCMLEVENTREQ

Dim proc As IFCCML_ANY.PIFCMLCALLBACK

proc = New IFCCML_ANY.PIFCMLCALLBACK(AddressOf lpEventProc);

Event.WndHandle = 0

Event.MessageCode = 0

Event.CallBackProc = proc

Event.User = &H1234

ret = IFCCML_ANY.CmlGetEventMask(DeviceHandle, Event)

Page 167: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

167

●Delphi 8

// コールバック関数

procedure lpCallBackProc(IntFlg: Cardinal , User: Cardinal); stdcall;

var

//変数定義

begin

// 割り込み処理を記述します

:

:

end;

// メインルーチン

var

ret: Integer;

DeviceHandle: Integer;

Event: IFCCML.IFCMLEVENTREQ;

Event.WndHandle := 0;

Event.MessageCode := 0;

Event.CallBackProc := Addr(lpCallBackProc);

Event.User := $1234;

ret := IFCCML.CmlGetEventMask(DeviceHandle, Event);

割り込みイベント発生時に呼び出すコールバック関数を登録します。

VB の場合、メッセージを登録します。

Page 168: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

168

20. CmlSetEventEx

【機能】

割り込み処理の設定(メッセージ、コールバック関数の登録)を行います。

CmlSetEventMask 関数または CmlSetEventMaskEx 関数で指定した割り込み要因が発生した場合、

本関数で設定した割り込み処理が実行されます。

CmlSetEvent 関数と CmlSetEentEx 関数を同時に使用することはできません。

【書式】

●C言語

INT CmlSetEventEx(

HANDLE DeviceHandle, // デバイスハンドル

PIFCMLEVENTREQEX EventInfoEx // IFCMLEVENTREQEX 構造体

);

●Visual Basic

Declare Function CmlSetEventEx Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByRef EventInfoEx As IFCMLEVENTREQEX _ ‘ IFCMLEVENTREQEX 構造体

)As Long

●Delphi

function CmlSetEventEx (

DeviceHandle: THandle; // デバイスハンドル

var EventInfoEx: IFCMLEVENTREQEX // IFCMLEVENTREQEX 構造体

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetEventEx(

IntPtr DeviceHandle, // デバイスハンドル

ref IFCMLEVENTREQEX EventInfoEx // IFCMLEVENTREQEX 構造体

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSetEventEx(

uint DeviceHandle, // デバイスハンドル

ref IFCMLEVENTREQEX EventInfoEx // IFCMLEVENTREQEX 構造体

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlSetEventEx Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByRef EventInfoEx As IFCMLEVENTREQEX _ ‘ IFCMLEVENTREQEX 構造体

)As Integer

Page 169: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

169

●Visual Basic .NET(x86 専用)

Declare Function CmlSetEventEx Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByRef EventInfoEx As IFCMLEVENTREQEX _ ‘ IFCMLEVENTREQEX 構造体

)As Integer

●Delphi 8

class function CmlSetEventEx (

DeviceHandle: Integer; // デバイスハンドル

var EventInfoEx: IFCMLEVENTREQEX // IFCMLEVENTREQEX 構造体

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

EventInfoEx

IFCMLEVENTREQEX 構造体へのポインタ(参照渡し)を指定します。

NULL を指定した場合、割り込み処理の設定が解除されます。

CmlSetEvent 関数を使用したい場合は、EventInfoEx 引数に NULL を指定して割り込みの設

定を解除した後、CmlSetEvent 関数を実行してください。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

Page 170: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

170

【使用例】

●C言語(x86 x64 兼用)

VOID CALLBACK CallBackProcEx(DWORD IntFlg, DWORD ComIntFlg, PVOID User)

{

DWORD UserData;

UserData = *((PDWORD)User);

:

}

:

INT Ret;

HANDLE DeviceHandle;

IFCMLEVENTREQEx EventInfoEx;

DWORD UserData;

UserData = 1234;

EventInfoEx.WndHandle = NULL;

EventInfoEx.MessageCode = NULL;

EventInfoEx.CallBackProcEx = CallBackProcEx;

EventInfoEx.User = &UserData;

Ret = CmlSetEventEx(DeviceHandle, &EventInfoEx);

Page 171: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

171

●Visual Basic

元のウィンドウ・プロシージャのアドレス保存用変数

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 Ret As Long

Dim DeviceHandle As Long

Dim EventInfoEx As IFCMLEVENTREQEX

' ウィンドウ・プロシージャをフックします

lpPrevWndProc = SetWindowLong(Form1.hWnd, GWL_WNDPROC, AddressOf WindowProc)

EventInfoEx.Wnd = Form1.hWnd

EventInfoEx.Message = WM_USER

EventInfoEx.CallBackProc = 0

EventInfoEx.User = 0

Ret = CmlGetEventMaskEx(DeviceHandle, EventInfoEx)

Page 172: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

172

●Delphi

// コールバック関数

procedure lpCallBackProcEx(IntFlg: DWORD , ComIntFlg: DWORD , User: Pointer); stdcall;

var

//変数定義

begin

// 割り込み処理を記述します

:

:

end;

// メインルーチン

var

Ret: Integer;

DeviceHandle: THandle;

EventInfoEx: IFCMLEVENTREQEX;

EventInfoEx.Wnd := 0;

EventInfoEx.Message := 0;

EventInfoEx.CallBackProcEx := Addr(lpCallBackProcEx);

EventInfoEx.User := $1234;

Ret := CmlGetEventMask(DeviceHandle, EventInfoEx);

●VISUAL C# .NET

public void CallBackProcEx(uint IntFlg, uint ComIntFlg, IntPtr User)

{

:

}

uint ret;

IntPtr DeviceHandle;

IFCCML_ANY.IFCMLEVENTREQEX EventInfoEx;

IFCCML_ANY.PIFCMLCALLBACKEX func;

func = new IFCCML_ANY.PIFCMLCALLBACKEX(CallBackProcEx);

EventInfoEx.WndHandle = 0;

EventInfoEx.MessageCode = 0;

EventInfoEx.CallBackProcEx = func;

EventInfoEx.User = 0;

ret = IFCCML_ANY.CmlSetEventEx(DeviceHandle, ref EventInfoEx);

Page 173: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

173

●Visual Basic .NET

' コールバック関数

Private Sub lpEventProcEx( ByVal IntFlg As Integer, ByVal ComIntFlg As Integer, ByVal

User As IntPtr)

‘ 割り込み処理を記述します

:

:

End Sub

‘ メインルーチン

Dim ret As Integer

Dim DeviceHandle As IntPtr

Dim EventInfoEx As IFCCML_ANY.IFCMLEVENTREQEX

Dim proc As IFCCML_ANY.PIFCMLCALLBACKEX

proc = New IFCCML_ANY.PIFCMLCALLBACKEX(AddressOf lpEventProcEx);

EventInfoEx.WndHandle = 0

EventInfoEx.MessageCode = 0

EventInfoEx.CallBackProcEx = proc

EventInfoEx.User = &H1234

ret = IFCCML_ANY.CmlGetEventMaskEx(DeviceHandle, EventInfoEx)

Page 174: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

174

●Delphi 8

// コールバック関数

procedure lpCallBackProcEx(IntFlg: Cardinal , ComIntFlg: Cardinal , User: Cardinal);

stdcall;

var

//変数定義

begin

// 割り込み処理を記述します

:

:

end;

// メインルーチン

var

ret: Integer;

DeviceHandle: Integer;

EventInfoEx: IFCCML.IFCMLEVENTREQEX;

EventInfoEx.WndHandle := 0;

EventInfoEx.MessageCode := 0;

EventInfoEx.CallBackProcEx := Addr(lpCallBackProcEx);

EventInfoEx.User := $1234;

ret := IFCCML.CmlGetEventMask(DeviceHandle, EventInfoEx);

割り込みイベント発生時に呼び出すコールバック関数を登録します。

VB の場合、メッセージを登録します。

Page 175: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

175

21. CmlSetColorIngredient

【機能】

2 値化の対象となる画像の色成分を指定します。

PEX-H530922 では使用することが出来ません。

【書式】

●C言語

INT CmlSetColorIngredient (

HANDLE DeviceHandle, // デバイスハンドル

DWORD Color // 色成分

);

●Visual Basic

Declare Function CmlSetColorIngredient Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal Color As Long _ ‘ 色成分

)As Long

●Delphi

function CmlSetColorIngredient (

DeviceHandle: THandle; // デバイスハンドル

Color: THandle // 色成分

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetColorIngredient (

IntPtr DeviceHandle, // デバイスハンドル

uint Color // 色成分

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSetColorIngredient (

uint DeviceHandle, // デバイスハンドル

uint Color // 色成分

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlSetColorIngredient Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal Color As Integer _ ‘ 色成分

)As Integer

Page 176: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

176

●Visual Basic .NET(x86 専用)

Declare Function CmlSetColorIngredient Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal Color As Integer _ ‘ 色成分

)As Integer

●Delphi 8

class function CmlSetColorIngredient (

DeviceHandle: Integr; // デバイスハンドル

Color: Cardinal // 色成分

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

Color 2 値化したい色成分です。

識別子 値 内容

IFCML_INGREDIENT_RED 00000000h 赤成分

IFCML_INGREDIENT_GREEN 00000001h 緑成分

IFCML_INGREDIENT_BLUE 00000002h 青成分

IFCML_INGREDIENT_GLAY 00000003h モノクロ

モノクロカメラを使用する場合は、IFCML_INGREDIENT_GRAY を指定してください。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

Ret = CmlSetColorIngredient(DeviceHandle, IFCML_INGREDIENT_RED);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Ret = CmlSetColorIngredient(DeviceHandle, IFCML_INGREDIENT_RED)

Page 177: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

177

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Ret := CmlSetColorIngredient(DeviceHandle, IFCML_INGREDIENT_RED);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

ret = IFCCML_ANY.CmlSetColorIngredient(DeviceHandle,

IFCCML_ANY.IFCML_INGREDIENT_RED);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

ret = IFCCML_ANY.CmlSetColorIngredient(DeviceHandle, _

IFCCML_ANY.IFCML_INGREDIENT_RED)

●Delphi 8

var

DeviceHandle: Integer;

ret: Integer;

ret := IFCCML.CmlSetColorIngredient(DeviceHandle, IFCCML.IFCML_INGREDIENT_RED);

2 値化対象色成分を赤成分に指定します。

Page 178: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

178

22. CmlSetBinParam

【機能】

2 値化のしきい値を指定します。

PEX-H530922 では使用することが出来ません。

【書式】

●C言語

INT CmlSetBinParam (

HANDLE DeviceHandle, // デバイスハンドル

DWORD Maxthreshold, // 上限しきい値

DWORD Minthreshold, // 下限しきい値

DWORD BinMode // 2 値化反転

);

●Visual Basic

Declare Function CmlSetBinParam Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal Maxthreshold As Long, _ ‘ 上限しきい値

ByVal Minthreshold As Long, _ ‘ 下限しきい値

ByVal BinMode As Long _ ‘ 2 値化反転

)As Long

●Delphi

function CmlSetBinParam (

DeviceHandle: THandle; // デバイスハンドル

Maxthreshold: DWORD; // 上限しきい値

Minthreshold: DWORD; // 下限しきい値

BinMode: DWORD // 2 値化反転

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetBinParam (

IntPtr DeviceHandle, // デバイスハンドル

uint Maxthreshold, // 上限しきい値

uint Minthreshold, // 下限しきい値

uint BinMode // 2 値化反転

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSetBinParam (

uint DeviceHandle, // デバイスハンドル

uint Maxthreshold, // 上限しきい値

uint Minthreshold, // 下限しきい値

uint BinMode // 2 値化反転

);

Page 179: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

179

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlSetBinParam Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal Maxthreshold As Integer, _ ‘ 上限しきい値

ByVal Minthreshold As Integer, _ ‘ 下限しきい値

ByVal BinMode As Integer _ ‘ 2 値化反転

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlSetBinParam Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal Maxthreshold As Integer, _ ‘ 上限しきい値

ByVal Minthreshold As Integer, _ ‘ 下限しきい値

ByVal BinMode As Integer _ ‘ 2 値化反転

)As Integer

●Delphi 8

class function CmlSetBinParam (

DeviceHandle: Integer; // デバイスハンドル

Maxthreshold: Cardinal; // 上限しきい値

Minthreshold: Cardinal; // 下限しきい値

BinMode: Cardinal // 2 値化反転

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

Maxthreshold 2 値化時の上限しきい値です。Minthreshold よりも大きい値を設定してください。

RGB24 カラー/モノクロ 8bit/Bayer 配列 8bit カメラ、の場合は 0~FFh

RGB30bit/モノクロ 10bit/Bayer 配列 10bit カメラの場合は 0~3FFh

RGB36bit/モノクロ 12bit カメラの場合は 0~FFFh

モノクロ 14bit カメラの場合は 0~3FFFh

モノクロ 16bit カメラの場合は 0~FFFFh

Minthreshold 2 値化時の下限しきい値です。Maxthreshold よりも小さい値を設定してください。

RGB24 カラー/モノクロ 8bit カメラ/Bayer 配列 8bit の場合は 0~FFh

RGB30bit/モノクロ 10bit/Bayer 配列 10bit カメラの場合は 0~3FFh

RGB36bit/モノクロ 12bit カメラの場合は 0~FFFh

モノクロ 14bit カメラの場合は 0~3FFFh

モノクロ 16bit カメラの場合は 0~FFFFh

Page 180: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

180

BinMode 2 値化条件の反転指定

識別子 値 内容

IFCML_BINMODE_NORMAL 00000000h 通常(上限値と下限値の間が FF、それ以外が 0)

IFCML_BINMODE_REVERSAL 00000001h 反転(上限値と下限値の間が 0、それ以外が FF)

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

Ret = CmlSetBinParam(DeviceHandle,255, 128, IFIMG_BINMODE_NORMAL);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Ret = CmlSetBinParam(DeviceHandle,255, 128, IFIMG_BINMODE_NORMAL)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Ret := CmlSetBinParam(DeviceHandle,255, 128, IFIMG_BINMODE_NORMAL);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

ret = IFCCML_ANY.CmlSetBinParam(DeviceHandle,

255, 128, IFCCML_ANY.IFIMG_BINMODE_NORMAL);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

ret = IFCCML_ANY.CmlSetBinParam(DeviceHandle,_

255, 128, IFCCML_ANY.IFIMG_BINMODE_NORMAL)

Page 181: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

181

●Delphi 8

var

DeviceHandle: THandle;

ret: Integer;

ret := IFCCML.CmlSetBinParam(DeviceHandle,

255, 128, IFCCML.IFIMG_BINMODE_NORMAL);

2 値化上限しきい値を 255、2 値化下限しきい値を 128 に設定します。

Page 182: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

182

23. CmlSetMeasurementRange

【機能】

2 値画像処理の測定領域を指定します。

指定した領域内の画像に対して、面積値、重心値を求めます。

PEX-H530922 では使用することが出来ません。

【書式】

●C言語

INT CmlSetMeasurementRange (

HANDLE DeviceHandle, // デバイスハンドル

PIFCMLRECT Rect // IFCMLRECT 構造体

);

●Visual Basic

Declare Function CmlSetMeasurementRange Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByRef Rect As IFCMLRECT _ ‘ IFCMLRECT 構造体

)As Long

●Delphi

function CmlSetMeasurementRange (

DeviceHandle: THandle; // デバイスハンドル

var Rect: IFCMLRECT // IFCMLRECT 構造体

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetMeasurementRange (

IntPtr DeviceHandle, // デバイスハンドル

ref IFCMLRECT Rect // IFCMLRECT 構造体

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSetMeasurementRange (

uint DeviceHandle, // デバイスハンドル

ref IFCMLRECT Rect // IFCMLRECT 構造体

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlSetMeasurementRange Lib "IFCml.DLL"( _

ByVal DeviceHandle, As IntPtr, _ ‘ デバイスハンドル

ByRef Rect, As IFCMLRECT _ ‘ IFCMLRECT 構造体

)As Integer

Page 183: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

183

●Visual Basic .NET(x86 専用)

Declare Function CmlSetMeasurementRange Lib "IFCml.DLL"( _

ByVal DeviceHandle, As Integer, _ ‘ デバイスハンドル

ByRef Rect, As IFCMLRECT _ ‘ IFCMLRECT 構造体

)As Integer

●Delphi 8

class function CmlSetMeasurementRange (

DeviceHandle: Integer; // デバイスハンドル

var Rect: IFCMLRECT // IFCMLRECT 構造体

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

Rect 測定領域を格納した IFCMLRECT 構造体のポインタ(参照渡し)を指定します。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

IFCMLRECT Rect;

Rect.XStart = 160;

Rect.YStart = 120;

Rect.XLength = 320;

Rect.YLength = 240;

Ret = CmlSetMeasurementRange(DeviceHandle, &Rect);

Page 184: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

184

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Dim Rect As IFCMLRECT

Rect.XStart = 160

Rect.YStart = 120

Rect.XLength = 320

Rect.YLength = 240

Ret = CmlSetMeasurementRange(DeviceHandle, Rect)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Rect: IFCMLRECT;

Rect.XStart := 160;

Rect.YStart := 120;

Rect.XLength := 320;

Rect.YLength := 240;

Ret := CmlSetMeasurementRange(DeviceHandle, Rect);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

uint Area;

Rect.XStart = 160;

Rect.YStart = 120;

Rect.XLength = 320;

Rect.YLength = 240;

ret = IFCCML_ANY.CmlSetMeasurementRange (DeviceHandle, Rect);

Page 185: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

185

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

Rect.XStart = 160

Rect.YStart = 120

Rect.XLength = 320

Rect.YLength = 240

ret = IFCCML_ANY.CmlSetMeasurementRange (DeviceHandle, Rect)

●Delphi 8

var

DeviceHandle: THandle;

ret: Integer;

Rect.XStart := 160;

Rect.YStart := 120;

Rect.XLength := 320;

Rect.YLength := 240;

ret := IFCCML.CmlSetMeasurementRange (DeviceHandle, Rect);

測定エリアを設定します。開始座標(160, 120)とし X 方向長さを 320、Y 方向長さを 240 とし

ます。

Page 186: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

186

24. CmlGetAreaValue

【機能】

新フレームの 2値画像処理結果(面積値)を取得します。

PEX-H530922 では使用することが出来ません。

【書式】

●C言語

INT CmlGetAreaValue (

HANDLE DeviceHandle, // デバイスハンドル

PDWORD Area // 面積値

);

●Visual Basic

Declare Function CmlGetAreaValue Lib "IFCml.DLL"(_

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByRef Area As Long _ ‘ 面積値

)As Long

●Delphi

function CmlGetAreaValue (

DeviceHandle: THandle; // デバイスハンドル

var Area: DWORD // 面積値

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetMeasurementRange (

IntPtr DeviceHandle, // デバイスハンドル

out uint Area // 面積値

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSetMeasurementRange (

uint DeviceHandle, // デバイスハンドル

out uint Area // 面積値

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlSetMeasurementRange Lib "IFCml.DLL"( _

ByVal DeviceHandle, As IntPtr, _ ‘ デバイスハンドル

ByRef Area As Integer _ ‘ 面積値

)As Integer

Page 187: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

187

●Visual Basic .NET(x86 専用)

Declare Function CmlSetMeasurementRange Lib "IFCml.DLL"( _

ByVal DeviceHandle, As Integer, _ ‘ デバイスハンドル

ByRef Area As Integer _ ‘ 面積値

)As Integer

●Delphi 8

class function CmlSetMeasurementRange (

DeviceHandle: Integer; // デバイスハンドル

var Area: Cardinal // 面積値

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

Area 面積値を格納する変数のポインタ(参照渡し)を指定します。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

DWORD Area;

Ret = CmlGetAreaValue(DeviceHandle, &Area);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Dim Area As Long

Ret = CmlGetAreaValue(DeviceHandle, Area)

Page 188: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

188

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Area: DWORD;

Ret := CmlGetAreaValue(DeviceHandle, Area);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

uint Area;

ret = IFCCML_ANY.CmlGetAreaValue(DeviceHandle, out Area);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

Dim Area As Integer

ret = IFCCML_ANY.CmlGetAreaValue(DeviceHandle, Area)

●Delphi 8

var

DeviceHandle: THandle;

ret: Integer;

Area: Cardinal;

ret := IFCCML.CmlGetAreaValue(DeviceHandle, Area);

面積値を取得します。

Page 189: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

189

25. CmlGetGrvValue

【機能】

新フレームの 2値画像処理結果(重心値)を取得します。

PEX-H530922 では使用することが出来ません。

【書式】

●C言語

INT CmlGetGrvValue (

HANDLE DeviceHandle, // デバイスハンドル

PDWORD GrvX, // 重心値(X 座標)

PDWORD GrvY // 重心値(Y 座標)

);

●Visual Basic

Declare Function CmlGetGrvValue Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByRef GrvX As Long, _ ‘ 重心値(X 座標)

ByRef GrvY As Long _ ‘ 重心値(Y 座標)

)As Long

●Delphi

function CmlGetGrvValue (

DeviceHandle: THandle; // デバイスハンドル

var GrvX: DWORD; // 重心値(X 座標)

var GrvY: DWORD // 重心値(Y 座標)

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetMeasurementRange (

IntPtr hDeviceHandle, // デバイスハンドル

out uint GrvX, // 重心 X座標値

out uint GrvY // 重心 Y座標値

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSetMeasurementRange (

uint hDeviceHandle, // デバイスハンドル

out uint GrvX, // 重心 X座標値

out uint GrvY // 重心 Y座標値

);

Page 190: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

190

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlSetMeasurementRange Lib "IFCml.DLL"( _

ByVal hDeviceHandle, As IntPtr, _ ‘ デバイスハンドル

ByRef GrvX As Integer, _ ‘ 重心 X座標値

ByRef GrvY As Integer _ ‘ 重心 Y座標値

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlSetMeasurementRange Lib "IFCml.DLL"( _

ByVal hDeviceHandle, As Integer, _ ‘ デバイスハンドル

ByRef GrvX As Integer, _ ‘ 重心 X座標値

ByRef GrvY As Integer _ ‘ 重心 Y座標値

)As Integer

●Delphi 8

class function CmlSetMeasurementRange (

hDeviceHandle: Integer; // デバイスハンドル

var GrvX: Cardinal; // 重心 X座標値

var GrvY: Cardinal // 重心 Y座標値

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

GrvX 重心値の X座標を格納する変数のポインタ(参照渡し)を指定します。

GrvY 重心値の Y座標を格納する変数のポインタ(参照渡し)を指定します。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

DWORD X;

DWORD Y;

Ret = CmlGetGrvValue(DeviceHandle, &X, &Y );

Page 191: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

191

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Dim X As Long

Dim Y As Long

Ret = CmlGetGrvValue(DeviceHandle, X, Y)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

X: DWORD;

Y: DWORD;

Ret := CmlGetGrvValue(DeviceHandle, X, Y);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

uint X;

uint Y;

ret = IFCCML_ANY.CmlGetGrvValue(DeviceHandle, out X, out Y);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim Ret As Integer

Dim X As Integer

Dim Y As Integer

ret = IFCCML_ANY.CmlGetGrvValue(DeviceHandle, X, Y)

●Delphi 8

var

DeviceHandle: Integer;

Ret: Integer;

X: Cardinal;

Y: Cardinal;

ret := IFCCML.CmlGetGrvValue(DeviceHandle, X, Y);

重心値を取得します。

Page 192: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

192

26. CmlGetMeasurementValue

【機能】

2 値画像処理結果(面積、重心、フェレ径、傾き角)を取得します。 新フレームに対する画像処

理結果です。

・2値化したオブジェクトが複数になっても、ひとつのオブジェクトで画像処理します。

・PEX-H530922 では使用することが出来ません。

【書式】

●C言語

INT CmlGetMeasurementValue(

HANDLE DeviceHandle, // デバイスハンドル

PIFCMLMEASURE MeasureValue // IFCMLMEASURE 構造体

);

●Visual Basic

Declare Function CmlGetMeasurementValue Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByRef MeasureValue As IFCMLMEASURE _ ‘ IFCMLMEASURE 構造体

)As Long

●Delphi

function CmlGetMeasurementValue(

DeviceHandle: THandle; // デバイスハンドル

var MeasureValue: IFCMLMEASURE // IFCMLMEASURE 構造体

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlGetMeasurementValue(

IntPtr DeviceHandle, // デバイスハンドル

out PIFCMLMEASURE MeasureValue // IFCMLMEASURE 構造体

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlGetMeasurementValue (

uint DeviceHandle, // デバイスハンドル

out PIFCMLMEASURE MeasureValue // IFCMLMEASURE 構造体

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlGetMeasurementValue Lib "IFCml.DLL"( _

ByVal hDeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByRef MeasureValue As IFCMLMEASURE _ ‘ IFCMLMEASURE 構造体

)As Integer

Page 193: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

193

●Visual Basic .NET(x86 専用)

Declare Function CmlGetMeasurementValue Lib "IFCml.DLL"( _

ByVal hDeviceHandle As Integer, _ ‘ デバイスハンドル

ByRef MeasureValue As IFCMLMEASURE _ ‘ IFCMLMEASURE 構造体

)As Integer

●Delphi 8

class function CmlGetMeasurementValue (

hDeviceHandle: Thandle // デバイスハンドル

var MeasureValue: IFCMLMEASURE // IFCMLMEASURE 構造体

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

MeasureValue IFCMLMEASURE 構造体のポインタ(参照渡し)を指定します。

フェレ径、傾き角の取得は PEX-H530821, H531021, H531122, H531221 で使用することが出

来ます。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

IFCMLMEASURE MeasureValue;

Ret = CmlGetMeasurementValue(DeviceHandle, &MeasureValue);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Dim MeasureValue As IFCMLMEASURE

Ret = CmlGetMeasurementValue(DeviceHandle, MeasureValue)

Page 194: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

194

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

MeasureValue: IFCMLMEASURE;

Ret := CmlGetMeasurementValue(DeviceHandle, MeasureValue);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

IFCCML_ANY.IFCMLMEASURE MeasureValue;

ret = IFCCML_ANY.CmlGetMeasurementValue(DeviceHandle, out MeasureValue);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim Ret As Integer

Dim MeasureValue IFCCML_ANY.IFCMLMEASURE

Ret = IFCCML_ANY.CmlGetMeasurementValue(DeviceHandle, MeasureValue)

●Delphi 8

var

DeviceHandle: Integer;

Ret: Integer;

MeasureValue: IFCCML.IFCMLMEASURE;

Ret := IFCCML_ANY.CmlSetBinParamEx(DeviceHandle, MeasureValue);

面積、重心、フェレ径、傾き角を取得します。

Page 195: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

195

27. CmlSetTriggerEnable

【機能】

トリガ機能の有効/無効を指定します。

【書式】

●C言語

INT CmlSetTriggerEnable (

HANDLE DeviceHandle, // デバイスハンドル

DWORD Trg // トリガ有効/無効

);

●Visual Basic

Declare Function CmlSetTriggerEnable Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal Trg As Long _ ‘ トリガ有効/無効

)As Long

●Delphi

function CmlSetTriggerEnable (

DeviceHandle: THandle; // デバイスハンドル

Trg: DWORD // トリガ有効/無効

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetTriggerEnable (

IntPtr DeviceHandle, // デバイスハンドル

uint Trg // トリガ有効/無効

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSetTriggerEnable (

uint DeviceHandle, // デバイスハンドル

uint Trg // トリガ有効/無効

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlSetTriggerEnable Lib "IFCml.DLL"( _

ByVal DeviceHandle, As IntPtr, _ ‘ デバイスハンドル

ByVal Trg As Integer _ ‘ トリガ有効/無効

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlSetTriggerEnable Lib "IFCml.DLL"( _

ByVal DeviceHandle, As Integer, _ ‘ デバイスハンドル

ByVal Trg As Integer _ ‘ トリガ有効/無効

)As Integer

Page 196: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

196

●Delphi 8

class function CmlSetTriggerEnable (

DeviceHandle: Integer; // デバイスハンドル

Trg: Cardinal // トリガ有効/無効

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

Trg 有効または無効にするトリガを選択します。

下記に示すビットを 1にする事で有効、0にする事で無効となります。

PEX-H530922, H531122, H531221 では面積値・重心値のトリガを使用することが出来ません。 ビット 内容

bit31~bit5 予約

bit4 汎用カウンタ③のカウンタ値が周期になった場合トリガが発生します。

bit3 汎用カウンタ②のカウンタ値が周期になった場合トリガが発生します。

bit2 汎用カウンタ①のカウンタ値が周期になった場合トリガが発生します。

bit1 重心値が CmlSetGrvTrgParam 関数で設定した範囲条件に一致した場合、トリガが発生し

ます。

bit0 面積値が CmlSetAreaTrgParam 関数で設定した範囲条件に一致した場合、トリガが発生

します。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

Page 197: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

197

【注意事項】

●Trg 引数の設定について

以下に各型式で指定できる bit 一覧を示します。

○:使用することが出来ます。

×:使用することが出来ません。

-:予約

△:条件付で使用することが出来ます。

ビット

型式 0 1 2 3 4 5-31

PEX-H530821 ○ ○ ○ ○ ○ -

PEX-H531021 ○ ○ ○ ○ ○ -

PEX-H531021 × × ○ ○ ○ -

CH1 × × △ △ △ - PEX-H530922

CH2 × × △ △ △ -

CH1 × × △ △ △ - PEX-H531122

CH2 × × △ △ △ -

上記以外の

型式 ○ ○ ○ ○ ○ -

PEX-H530922, H531122 の CH1 をオープンした場合、汎用カウンタ①~③がシングルエンド入力

方式エンコーダカウンタ 2以外の場合、割り込みが発生します。

PEX-H530922, H531122 の CH2 をオープンした場合、汎用カウンタ①~③がシングルエンド入力

方式エンコーダカウンタ 2の場合のみ、割り込みが発生します。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

Ret = CmlSetTriggerEnable (DeviceHandle, 0x01);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Ret = CmlSetTriggerEnable (DeviceHandle, &H01)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Ret := CmlSetTriggerEnable (DeviceHandle, $01);

Page 198: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

198

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

ret = IFCCML_ANY.CmlSetTriggerEnable(DeviceHandle, 0x01);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

ret = IFCCML_ANY.CmlSetTriggerEnable(DeviceHandle, &H01)

●Delphi 8

var

DeviceHandle: Integer;

ret: Integer;

ret := IFCCML.CmlSetTriggerEnable (DeviceHandle, $01);

面積値トリガを有効にします。

Page 199: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

199

28. CmlGetTriggerStatus

【機能】

トリガ発生の有無を確認できます。

【書式】

●C言語

INT CmlGetTriggerStatus (

HANDLE DeviceHandle, // デバイスハンドル

PDWORD TrgSts // トリガ状態

);

●Visual Basic

Declare Function CmlGetTriggerStatus Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByRef TrgSts As Long _ ‘ トリガ状態

)As Long

●Delphi

function CmlGetTriggerStatus (

DeviceHandle: THandle; // デバイスハンドル

var TrgSts: DWORD // トリガ状態

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlGetTriggerStatas (

IntPtr DeviceHandle, // デバイスハンドル

out uint TrgSts // トリガ状態

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlGetTriggerStatas (

uint DeviceHandle, // デバイスハンドル

out uint TrgSts // トリガ状態

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlGetTriggerStatas Lib "IFCml.DLL"( _

ByVal DeviceHandle, As IntPtr, _ ‘ デバイスハンドル

ByRef TrgSts As Integer ‘ トリガ状態

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlGetTriggerStatas Lib "IFCml.DLL"( _

ByVal DeviceHandle, As Integer, _ ‘ デバイスハンドル

ByRef TrgSts As Integer ‘ トリガ状態

)As Integer

Page 200: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

200

●Delphi 8

class function CmlGetTriggerStatas (

DeviceHandle: Integer; // デバイスハンドル

var TrgSts: Cardinal // トリガ状態

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

TrgSts トリガの状態を格納する変数のポインタ(参照渡し)を指定します。

下記に示すビットが 1になったら、トリガが発生したことになります。

ビット 内容

bit31~bit5 無効

bit4 汎用カウンタ③のカウンタ値が設定周期になりました。

bit3 汎用カウンタ②のカウンタ値が設定周期になりました。

bit2 汎用カウンタ①のカウンタ値が設定周期になりました。

bit1 重心値が CmlSetGrvTrgParam 関数で設定した範囲条件と一致しました。

bit0 面積値が CmlSetAreaTrgParam 関数で設定した範囲条件と一致しました。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

DWORD TrgSts;

Ret = CmlGetTriggerStatus(DeviceHandle, &TrgSts);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Dim TrgSts As Long

Ret = CmlGetTriggerStatus(DeviceHandle, TrgSts)

Page 201: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

201

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

TrgSts: DWORD;

Ret := CmlGetTriggerStatus(DeviceHandle, TrgSts);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

uint TrgSts;

ret = IFCCML_ANY.CmlGetTriggerStatus(DeviceHandle, out TrgSts);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim Ret As Integer

Dim TrgSts As Integer

ret = IFCCML_ANY.CmlGetTriggerStatus(DeviceHandle, TrgSts)

●Delphi 8

var

DeviceHandle: Integer;

ret: Integer;

TrgSts: Cardinal;

ret := IFCCML.CmlGetTriggerStatus(DeviceHandle, TrgSts);

トリガ発生の有無を確認します。

Page 202: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

202

29. CmlSetAreaTrgParam

【機能】

面積値トリガの発生条件を設定します。

PEX-H530922, H531122, H531221 では使用することが出来ません。

【書式】

●C言語

INT CmlSetAreaTrgParam (

HANDLE DeviceHandle, // デバイスハンドル

DWORD AreaMax, // 面積値の上限

DWORD AreaMin, // 面積値の下限

DWORD Mode // 範囲の反転

);

●Visual Basic

Declare Function CmlSetAreaTrgParam Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal AreaMax As Long, _ ‘ 面積値の上限

ByVal AreaMin As Long, _ ‘ 面積値の下限

ByVal Mode As Long _ ‘ 範囲の反転

)As Long

●Delphi

function CmlSetAreaTrgParam (

DeviceHandle: THandle; // デバイスハンドル

AreaMax: DWORD; // 面積値の上限

AreaMin: DWORD; // 面積値の下限

Mode: DWORD // 範囲の反転

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetAreaTrgParam (

IntPtr DeviceHandle, // デバイスハンドル

uint AreaMax, // 面積値の上限

uint AreaMin, // 面積値の下限

uint Mode // 範囲の反転

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSetAreaTrgParam (

uint DeviceHandle, // デバイスハンドル

uint AreaMax, // 面積値の上限

uint AreaMin, // 面積値の下限

uint Mode // 範囲の反転

);

Page 203: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

203

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlSetAreaTrgParam Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal AreaMax As Integer, _ ‘ 面積値の上限

ByVal AreaMin As Integer, _ ‘ 面積値の下限

ByVal Mode As Integer _ ‘ 範囲の反転

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlSetAreaTrgParam Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal AreaMax As Integer, _ ‘ 面積値の上限

ByVal AreaMin As Integer, _ ‘ 面積値の下限

ByVal Mode As Integer _ ‘ 範囲の反転

)As Integer

●Delphi 8

class function CmlSetAreaTrgParam (

DeviceHandle: Integer // デバイスハンドル

AreaMax: Cardinal; // 面積値の上限

AreaMin: Cardinal; // 面積値の下限

Mode: Cardinal // 範囲の反転

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

AreaMax 面積の上限値を設定します。

AreaMin 面積の下限値を設定します。

Mode トリガ範囲の条件を設定します。

識別子 値 内容

IFCML_TRGMODE_IN 00000000h 面積値が上限値と下限値の範囲内になった場合に

トリガが発生します。

IFCML_TRGMODE_OUT 00000001h 面積値が上限値と下限値の範囲外になった場合に

トリガが発生します。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

Page 204: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

204

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

Ret = CmlSetAreaTrgParam(DeviceHandle, 50000, 10000, IFCML_TRGMODE_IN);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Ret = CmlSetAreaTrgParam(DeviceHandle, 50000, 10000, IFCML_TRGMODE_IN)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Ret := CmlSetAreaTrgParam(DeviceHandle, 50000, 10000, IFCML_TRGMODE_IN);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

ret = IFCCML_ANY.CmlSetAreaTrgParam(DeviceHandle,

50000, 10000, IFCCML_ANY.IFCML_TRGMODE_IN);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

ret = IFCCML_ANY.CmlSetAreaTrgParam(DeviceHandle, _

50000, 10000, IFCCML_ANY.IFCML_TRGMODE_IN)

●Delphi 8

var

DeviceHandle: Integer;

ret: Integer;

ret := IFCCML.CmlSetAreaTrgParam(DeviceHandle, 50000, 10000, IFCCML.IFCML_TRGMODE_IN);

面積値トリガの条件を 10000 以上 50000 以下にします。

Page 205: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

205

30. CmlSetGrvTrgParam

【機能】

重心値トリガの発生条件を設定します。

PEX-H530922, H531122, H531221 では使用することが出来ません。

【書式】

●C言語

INT CmlSetGrvTrgParam (

HANDLE DeviceHandle, // デバイスハンドル

IFCMLRECT Rect, // トリガ領域

DWORD Mode // 範囲の反転

);

●Visual Basic

Declare Function CmlSetGrvTrgParam Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal Rect As IFCMLRECT, _ ‘ トリガ領域

ByVal Mode As Long _ ‘ 範囲の反転

)As Long

●Delphi

function CmlSetGrvTrgParam (

DeviceHandle: THandle; // デバイスハンドル

Rect: IFCMLRECT; // トリガ領域

Mode: DWORD // 範囲の反転

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetGrvTrgParam (

IntPtr DeviceHandle, // デバイスハンドル

ref IFCMLRECT Rect, // トリガ領域

uint Mode // 範囲の反転

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSetGrvTrgParam (

uint DeviceHandle, // デバイスハンドル

ref IFCMLRECT Rect, // トリガ領域

uint Mode // 範囲の反転

);

Page 206: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

206

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlSetGrvTrgParam Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByRef Rect As IFCMLRECT, _ ‘ トリガ領域

ByVal Mode As Integer _ ‘ 範囲の反転

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlSetGrvTrgParam Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByRef Rect As IFCMLRECT, _ ‘ トリガ領域

ByVal Mode As Integer _ ‘ 範囲の反転

)As Integer

●Delphi 8

class function CmlSetGrvTrgParam (

DeviceHandle: Integer // デバイスハンドル

var Rect: IFCMLRECT; // トリガ領域

Mode: Cardinal // 範囲の反転

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

Rect 重心値のトリガエリアを指定します。

IFCMLRECT 構造体を渡します。

Mode トリガ範囲の条件を設定します。

識別子 値 内容

IFCML_TRGMODE_IN 00000000h 重心値がエリア範囲内になった場合にトリガが発生

します。

IFCML_TRGMODE_OUT 00000001h 重心値がエリア範囲外になった場合にトリガが発生

します。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

Page 207: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

207

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

IFCMLRECT Rect;

Rect.XStart = 160;

Rect.YStart = 120;

Rect.XLength = 320;

Rect.YLength = 240;

Ret = CmlSetGrvTrgParam(DeviceHandle, &Rect, IFCML_TRGMODE_IN);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Dim Rect As IFCMLRECT

Rect.XStart = 160

Rect.YStart = 120

Rect.XLength = 320

Rect.YLength = 240

Ret = CmlSetGrvTrgParam(DeviceHandle, Rect, IFCML_TRGMODE_IN)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Rect: IFCMLRECT;

Rect.XStart := 160;

Rect.YStart := 120;

Rect.XLength := 320;

Rect.YLength := 240;

Ret := CmlSetGrvTrgParam(DeviceHandle, Rect, IFCML_TRGMODE_IN);

Page 208: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

208

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

IFCCML_ANY.IFCMLRECT Rect;

Rect.XStart = 160;

Rect.YStart = 120;

Rect.XLength = 320;

Rect.YLength = 240;

ret = IFCCML_ANY,CmlSetGrvTrgParam(DeviceHandle, ref Rect,

IFCCML_ANY.IFCML_TRGMODE_IN);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

Dim Rect As IFCCML_ANY.IFCMLRECT

Rect.XStart = 160

Rect.YStart = 120

Rect.XLength = 320

Rect.YLength = 240

ret = IFCCML_ANY.CmlSetGrvTrgParam(DeviceHandle, Rect, IFCCML_ANY.IFCML_TRGMODE_IN)

●Delphi 8

var

DeviceHandle: Integer;

ret: Integer;

Rect: IFCCML.IFCMLRECT;

Rect.XStart := 160;

Rect.YStart := 120;

Rect.XLength := 320;

Rect.YLength := 240;

ret := IFCCML.CmlSetGrvTrgParam(DeviceHandle, Rect, IFCCML.IFCML_TRGMODE_IN);

座標点(160,120)から、X方向 320、Y 方向 240 の領域を重心値トリガエリアとします。

Page 209: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

209

31. CmlSetCCMode

【機能】

カメラコントロール信号の出力モードの設定を行ないます。

【書式】

●C言語

INT CmlSetCCMode (

HANDLE DeviceHandle, // デバイスハンドル

DWORD CcSignal, // CC 信号

DWORD Mode, // 出力モード

DWORD Pulse // 出力パルス幅

);

●Visual Basic

Declare Function CmlSetCCMode Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal CcSignal As Long, _ ‘ CC 信号

ByVal Mode As Long, _ ‘ 出力モード

ByVal Pulse As Long _ ‘ 出力パルス幅

)As Long

●Delphi

function CmlSetCCMode (

DeviceHandle: THandle; // デバイスハンドル

CcSignal: DWORD; // CC 信号

Mode: DWORD; // 出力モード

Pulse: DWORD // 出力パルス幅

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetCCMode (

IntPtr DeviceHandle, // デバイスハンドル

uint CcSignal, // CC 信号

uint Mode, // 出力モード

uint Pluse // 出力パルス幅

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSetCCMode (

uint DeviceHandle, // デバイスハンドル

uint CcSignal, // CC 信号

uint Mode, // 出力モード

uint Pluse // 出力パルス幅

);

Page 210: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

210

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlSetCCModeLib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal CcSignal As Integer, _ ‘ CC 信号

ByVal Mode As Integer, _ ‘ 出力モード

ByVal Pluse As Integer _ ‘ 出力パルス幅

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlSetCCModeLib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal CcSignal As Integer, _ ‘ CC 信号

ByVal Mode As Integer, _ ‘ 出力モード

ByVal Pluse As Integer _ ‘ 出力パルス幅

)As Integer

●Delphi 8

class function CmlSetCCMode (

DeviceHandle: Integer; // デバイスハンドル

CcSignal: Cardinal; // CC 信号

Mode: Cardinal; // 出力モード

Pluse: Cardinal // 出力パルス幅

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

CcSignal カメラコントロール端子を選択します。

OR 演算による複数指定可能です。

識別子 値 内容

IFCML_CC1 00000001h CC1 信号

IFCML_CC2 00000002h CC2 信号

IFCML_CC3 00000004h CC3 信号

IFCML_CC4 00000008h CC4 信号

Page 211: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

211

Mode カメラコントロール信号の出力条件を設定します。

識別子 値 内容

IFCML_CC_MODE1 00000000h 1 パルス出力モード

IFCML_CC_MODE2 00000001h 外部入力スルーモード

IFCML_CC_MODE3 00000002h 外部入力トリガ出力

IFCML_CC_MODE4 00000003h 汎用カウンタ①同期出力モード

IFCML_CC_MODE5 00000004h 汎用カウンタ②同期出力モード

IFCML_CC_MODE6 00000005h 汎用カウンタ③同期出力モード

IFCML_CC_MODE7 00000006h 汎用カウンタ①カウントアップ毎出力モード

IFCML_CC_MODE8 00000007h 汎用カウンタ②カウントアップ毎出力モード

IFCML_CC_MODE9 00000008h 汎用カウンタ③カウントアップ毎出力モード

IFCML_CC_MODE10 00000009h 拡張基板からの信号スルーモード

IFCML_CC_MODE11 0000000Ah アナログトリガモード

IFCML_CC_MODE12 0000000Bh 同期トリガモード

また、下記識別子を OR 演算することで、出力論理を変更します。

指定しない場合は、正論理です。

識別子 値 内容

IFCML_ACTIVE_LOW 00000100h 負論理

Pulse パルス幅を設定します。5μs単位で設定可能です。

設定値:1~1023(5~5115μs)

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【注意事項】

●Mode 引数の設定について

PEX-H530821, H530922, H531021, H531122, H531221 で設定する場合、

CC1,CC2 の出力条件を設定した後、再度、本関数で CC3,CC4 の出力条件を設定すると、

CC1,CC2 の出力条件は解除されます。

上記型式以外の場合は、各 CC 信号に対する出力条件は保たれます。

Page 212: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

212

CC 信号の出力条件について

○ 1 パルス出力モード

CmlOutputPluse 関数を実行後、パルスを出力します。

○ 外部入力スルーモード

汎用入力端子へ入力した信号をそのまま、CC 端子への出力信号とします。

CC1 は IN1、CC2 は IN2、CC3 は IN3、CC4 は IN4 に対応します。

(PEX-H530922/H531122 の CH2 の場合)

CC1 は IN5、CC2 は IN6、CC3 は IN7、CC4 は IN8 に対応します。

○ 外部入力トリガ出力

汎用入力の状態をトリガとして、CC 端子へ出力します。

汎用入力値は 0→1に変化した時をトリガとします。

CC1 は IN1、CC2 は IN2、CC3 は IN3、CC4 は IN4 に対応します。

(PEX-H530922/H531122 の CH2 は)

CC1 は IN5、CC2 は IN6、CC3 は IN7、CC4 は IN8 に対応します。

○ 汎用カウンタ①同期出力モード

汎用カウンタ①の周期間隔でパルスを出力します。

○ 汎用カウンタ②同期出力モード

汎用カウンタ②の周期間隔でパルスを出力します。

○ 汎用カウンタ③同期出力モード

汎用カウンタ③の周期間隔でパルスを出力します。

○汎用カウンタ①カウントアップ毎出力モード

汎用カウンタ①がカウントアップするたびにパルスを出力します。

PEX-H530821, H530922, H531021, H531122, H531221 専用機能です。

CmlSetCouterMode 関数で、汎用カウンタのカウントアップ条件を以下に設定しないと動作しませ

ん。

・差動入力方式エンコーダカウンタ

・シングルエンド入力方式エンコーダカウンタ

・差動入力方式エンコーダカウンタ(スタートカウンタ付き)

・シングルエンド入力方式エンコーダカウンタ(スタートカウンタ)

○汎用カウンタ②カウントアップ毎出力モード

汎用カウンタ②がカウントアップするたびにパルスを出力します。

PEX-H530821, H530922, H531021, H531122, H531221 専用機能です。

CmlSetCouterMode 関数で、汎用カウンタのカウントアップ条件を以下に設定しないと動作しませ

ん。

・差動入力方式エンコーダカウンタ

・シングルエンド入力方式エンコーダカウンタ

・差動入力方式エンコーダカウンタ(スタートカウンタ付き)

・シングルエンド入力方式エンコーダカウンタ(スタートカウンタ)

Page 213: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

213

○汎用カウンタ③カウントアップ毎出力モード

汎用カウンタ③がカウントアップするたびにパルスを出力します。

PEX-H530821, H530922, H531021, H531122, H531221 専用機能です。

CmlSetCouterMode 関数で、汎用カウンタのカウントアップ条件を以下に設定しないと動作しませ

ん。

・差動入力方式エンコーダカウンタ

・シングルエンド入力方式エンコーダカウンタ

・差動入力方式エンコーダカウンタ(スタートカウンタ付き)

・シングルエンド入力方式エンコーダカウンタ(スタートカウンタ)

○拡張基板からの信号スルーモード

拡張基板からの信号に同期してパルスを出力します。

拡張基板からの信号スルーモードは PEX-H531221 のみ使用することが出来ます。

○ アナログトリガモード

PCI-530521 専用です。

アナログトリガに同期して、パルスを出力します。

アナログトリガモードの設定は、CmlSetAdTrigger関数を使用します。

Page 214: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

214

○ 同期トリガモード

PCI-530521 専用です。片側チャンネルの CC 信号の出力と同期して信号を出力します。同期する

CC 信号は下記識別子を OR 演算して指定します。

識別子 値 内容

IFCML_CH_SYNC_CC1 00001000h 片側チャンネルの CC1 信号の出力と同期します。

IFCML_CH_SYNC_CC2 00002000h 片側チャンネルの CC2 信号の出力と同期します。

IFCML_CH_SYNC_CC3 00003000h 片側チャンネルの CC3 信号の出力と同期します。

IFCML_CH_SYNC_CC4 00004000h 片側チャンネルの CC4 信号の出力と同期します。

チャンネル間で CC 信号を同期させるには、以下のように使用します。

CH1 側で、CC1 の設定を、IFCML_CC_MODE1(1 パルス出力モード)と IFCML_CH_SYNC_CC1(CC1 と同期)

にします。

CH2 側で、CC1 の設定を、IFCML_CC_MODE12(同期トリガモード)に設定します。

この状態で、CH1 側で「32 CmlOutputPluse」関数を使用してCC1 信号を 1 パルス出力した場合、

CH2 側のCC1 信号が、CH1 側のCC1 信号に同期して出力されます。

本機能を使用することで、2チャンネル同時に CC 信号を出力することが出来、トリガシャッター

機能を持ったカメラ 2台が同じタイミングでシャッター動作を行う事が出来ます。

CameraLink(Ch1)

CC1 出力

CC1 信号出力要求

CameraLink(Ch2)

CC1 信号出力要求

CC1 出力

チャンネル間が同期していない場合、

チャンネルごとに個別に CC 信号を制御する。

CameraLink(Ch1)

CC1 出力

CC1 信号出力要求

CameraLink(Ch2)

CC1 出力

チャンネル間が同期している場合、

片方のチャンネルで CC 信号の出力要求が発生すると

もう片方の CC 信号にも要求が発生し、

同時に CC 信号が出力される。

同期を行なうので、

個別に CC 信号の制御は

行なえない。

×

Page 215: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

215

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

Ret = CmlSetCCMode(DeviceHandle, IFCML_CC1 | IFCML_CC2, IFCML_CC_MODE1, 200);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Ret = CmlSetCCMode(DeviceHandle, IFCML_CC1 Or IFCML_CC2, IFCML_CC_MODE1, 200)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Ret := CmlSetCCMode(DeviceHandle, IFCML_CC1 or IFCML_CC2, IFCML_CC_MODE1, 200);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

ret = IFCCML_ANY.CmlSetCCMode(DeviceHandle,

IFCCML_ANY.IFCML_CC1 | IFCCML_ANY.IFCML_CC2, IFCCML_ANY.IFCML_CC_MODE1, 200);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

ret = IFCCML_ANY.CmlSetCCMode(DeviceHandle,

IFCCML_ANY.IFCML_CC1 Or IFCCML_ANY.IFCML_CC2, IFCCML_ANY.IFCML_CC_MODE1, 200)

Page 216: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

216

●Delphi 8

var

DeviceHandle: Integer;

ret: Integer;

ret := IFCCML.CmlSetCCMode(DeviceHandle,

IFCCML.IFCML_CC1 or IFCCML.IFCML_CC2,IFCCML.IFCML_CC_MODE1, 200);

CC1 端子、CC2 端子からの信号を 1パルス出力にします。

Page 217: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

217

32. CmlOutputPluse

【機能】

カメラコントロール信号を出力します。

【書式】

●C言語

INT CmlOutputPluse (

HANDLE DeviceHandle, // デバイスハンドル

DWORD CcSignal // CC 端子

);

●Visual Basic

Declare Function CmlOutputPluse Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal CcSignal As Long _ ‘ CC 端子

)As Long

●Delphi

function CmlOutputPluse (

DeviceHandle: THandle; // デバイスハンドル

CcSignal: DWORD // CC 端子

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlOutputPluse (

IntPtr DeviceHandle, // デバイスハンドル

uint CcSignal // CC 端子

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlOutputPluse (

uint DeviceHandle, // デバイスハンドル

uint CcSignal // CC 端子

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlOutputPluse Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal CcSignal As Integer _ ‘ CC 端子

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlOutputPluse Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal CcSignal As Integer _ ‘ CC 端子

)As Integer

Page 218: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

218

●Delphi 8

class function CmlOutputPluse (

DeviceHandle: Integer; // デバイスハンドル

CcSignal: Cardinal // CC 端子

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

CcSignal カメラコントロール端子を選択します。

OR 演算による複数指定可能です。

識別子 値 内容

IFCML_CC1 00000001h CC1 信号

IFCML_CC2 00000002h CC2 信号

IFCML_CC3 00000004h CC3 信号

IFCML_CC4 00000008h CC4 信号

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

Ret = CmlOutputPluse(DeviceHandle, IFCML_CC1 | IFCML_CC2);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Ret = CmlOutputPluse(DeviceHandle, IFCML_CC1 Or IFCML_CC2)

Page 219: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

219

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Ret := CmlOutputPluse(DeviceHandle, IFCML_CC1 or IFCML_CC2);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

ret = IFCCML_ANY.CmlOutputPluse(DeviceHandle,

IFCCML_ANY.IFCML_CC1 | IFCCML_ANY.IFCML_CC2);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

ret = IFCCML_ANY.CmlOutputPluse(DeviceHandle, _

IFCCML_ANY.IFCML_CC1 Or IFCCML_ANY.IFCML_CC2)

●Delphi 8

var

DeviceHandle: Integer;

ret: Integer;

ret := IFCCML.CmlOutputPluse(DeviceHandle, IFCCML.IFCML_CC1 or IFCCML.IFCML_CC2);

CC1 端子と CC2 端子から 1パルス出力します。

Page 220: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

220

33. CmlSetSyncDO

【機能】

CC 信号に同期して出力する汎用デジタル信号のパルス幅を設定します。

PEX-H530821, H530922, H531021, H531122, H531221 のみ使用することが出来ます。

【書式】

●C言語

INT CmlSetSyncDO(

HANDLE DeviceHandle, // デバイスハンドル

PIFCMLCCSYNCDO SyncDoInfo // IFCMLCCSYNCDO 構造体

);

●Visual Basic

Declare Function CmlSetSyncDO Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByRef SyncDoInfo As IFCMLCCSYNCDO _ ‘ IFCMLCCSYNCDO 構造体

)As Long

●Delphi

function CmlSetSyncDO (

DeviceHandle: THandle; // デバイスハンドル

var SyncDoInfo: IFCMLCCSYNCDO // IFCMLCCSYNCDO 構造体

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetSyncDO(

IntPtr DeviceHandle, // デバイスハンドル

ref IFCMLCCSYNCDO SyncDoInfo // IFCMLCCSYNCDO 構造体

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSetSyncDO (

uint DeviceHandle, // デバイスハンドル

ref IFCMLCCSYNCDO SyncDoInfo // IFCMLCCSYNCDO 構造体

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlSetSyncDO Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByRef SyncDoInfo As IFCMLCCSYNCDO _ ‘ IFCMLCCSYNCDO 構造体

)As Integer

Page 221: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

221

●Visual Basic .NET(x86 専用)

Declare Function CmlSetSyncDO Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByRef SyncDoInfo As IFCMLCCSYNCDO _ ‘ IFCMLCCSYNCDO 構造体

)As Integer

●Delphi 8

class function CmlSetSyncDO (

DeviceHandle: Integer; // デバイスハンドル

var SyncDoInfo: IFCMLCCSYNCDO // IFCMLCCSYNCDO 構造体

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

SyncDoInfo IFCMLCCSYNCDO 構造体へのポインタ(参照渡し)を指定します。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

PIFCMLCCSYNCDO SyncDoInfo;

SyncDoInfo.OutputMode = IFCML_CCSYNC_STOROBO;

SyncDoInfo.OutputEnabled = IFCML_ENABLE;

SyncDoInfo.CC = IFCML_SYNC_CC1;

SyncDoInfo.Logic = IFCML_DO_LOGIC_HIGH;

SyncDoInfo.DoPulse = 1000;

SyncDoInfo.Delay = 1000;

Ret = CmlSetSyncDO(DeviceHandle, &SyncDoInfo);

Page 222: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

222

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Dim SyncDoInfo As PIFCMLCCSYNCDO

SyncDoInfo.OutputMode = IFCML_CCSYNC_STOROBO

SyncDoInfo.OutputEnabled = IFCML_ENABLE

SyncDoInfo.CC = IFCML_SYNC_CC1

SyncDoInfo.Logic = IFCML_DO_LOGIC_HIGH

SyncDoInfo.DoPulse = 1000

SyncDoInfo.Delay = 1000

Ret = CmlSetSyncDO(DeviceHandle, SyncDoInfo)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

SyncDoInfo: PIFCMLCCSYNCDO;

SyncDoInfo.OutputMode := IFCML_CCSYNC_STOROBO

SyncDoInfo.OutputEnabled := IFCML_ENABLE

SyncDoInfo.CC := IFCML_SYNC_CC1

SyncDoInfo.Logic := IFCML_DO_LOGIC_HIGH

SyncDoInfo.DoPulse := 1000

SyncDoInfo.Delay := 1000

Ret := CmlSetSyncDO(DeviceHandle, SyncDoInfo);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

IFCCML_ANY.IFCMLCCSYNCDO SyncDoInfo;

SyncDoInfo.OutputMode = IFCCML_ANY.IFCML_CCSYNC_STOROBO;

SyncDoInfo.OutputEnabled = IFCCML_ANY.IFCML_ENABLE;

SyncDoInfo.CC = IFCCML_ANY.IFCML_SYNC_CC1;

SyncDoInfo.Logic = IFCCML_ANY.IFCML_DO_LOGIC_HIGH;

SyncDoInfo.DoPulse = 1000;

SyncDoInfo.Delay = 1000;

ret = IFCCML_ANY.CmlSetSyncDO(DeviceHandle, ref SyncDoInfo);

Page 223: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

223

●Visual Basic .NET

Dim ret As Integer

Dim DeviceHandle As IntPtr

Dim SyncDoInfo As IFCCML_ANY.PIFCMLCCSYNCDO

SyncDoInfo.OutputMode = IFCCML_ANY.IFCML_CCSYNC_STOROBO

SyncDoInfo.OutputEnabled = IFCCML_ANY.IFCML_ENABLE

SyncDoInfo.CC = IFCCML_ANY.IFCML_SYNC_CC1

SyncDoInfo.Logic = IFCCML_ANY.IFCML_DO_LOGIC_HIGH

SyncDoInfo.DoPulse = 1000

SyncDoInfo.Delay = 1000

ret = IFCCML_ANY.CmlSetSyncDO(DeviceHandle, SyncDoInfo)

●Delphi 8

var

ret: Integer;

DeviceHandle: Integer;

SyncDoInfo: IFCCML.PIFCMLCCSYNCDO;

SyncDoInfo.OutputMode := IFCCML.IFCML_CCSYNC_STOROBO

SyncDoInfo.OutputEnabled := IFCCML.IFCML_ENABLE

SyncDoInfo.CC := IFCCML.IFCML_SYNC_CC1

SyncDoInfo.Logic := IFCCML.IFCML_DO_LOGIC_HIGH

SyncDoInfo.DoPulse := 1000

SyncDoInfo.Delay := 1000

ret := IFCCML.CmlSetSyncDO(DeviceHandle, SyncDoInfo);

CC1 の信号に同期して OUT1 を出力します。出力時間を 5ms、遅延時間を 5ms に設定します。

Page 224: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

224

34. CmlSetCounterMode

【機能】

汎用カウンタのカウントアップ条件を指定します。

【書式】

●C言語

INT CmlSetCounterMode (

HANDLE DeviceHandle, // デバイスハンドル

DWORD CounterNum, // 汎用カウンタ

DWORD Mode // カウントアップ条件

);

●Visual Basic

Declare Function CmlSetCounterMode Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal CounterNum As Long, _ ‘ 汎用カウンタ

ByVal Mode As Long _ ‘ カウントアップ条件

)As Long

●Delphi

function CmlSetCounterMode (

DeviceHandle: THandle; // デバイスハンドル

CounterNum: DWORD; // 汎用カウンタ

Mode: DWORD // カウントアップ条件

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetCounterMode (

IntPtr DeviceHandle, // デバイスハンドル

uint CounterNum, // 汎用カウンタ

uint Mode // カウントアップ条件

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSetCounterMode (

uint DeviceHandle, // デバイスハンドル

uint CounterNum, // 汎用カウンタ

uint Mode // カウントアップ条件

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlSetCounterMode Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal CounterNum As Integer, _ ‘ 汎用カウンタ

ByVal Mode As Integer _ ‘ カウントアップ条件

)As Integer

Page 225: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

225

●Visual Basic .NET(x86 専用)

Declare Function CmlSetCounterMode Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal CounterNum As Integer, _ ‘ 汎用カウンタ

ByVal Mode As Integer _ ‘ カウントアップ条件

)As Integer

●Delphi 8

class function CmlSetCounterMode (

DeviceHandle: Integer; // デバイスハンドル

CounterNum: Cardinal; // 汎用カウンタ

Mode: Cardinal // カウントアップ条件

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

ConterNum 汎用カウンタを指定します。OR 演算による複数指定が可能です。

ただし、PEX-H530821, H530922, H531021, H531122, H531221 は OR 指定を行う事が出来ま

せん。また、汎用カウンタ①~③にそれぞれ異なるカウントアップ条件を設定して下さい。

識別子 値 内容

IFCML_CNTNUM_1 00000001h 汎用カウンタ①

IFCML_CNTNUM_2 00000002h 汎用カウンタ②

IFCML_CNTNUM_3 00000004h 汎用カウンタ③

Mode カウントアップ条件を指定します。

識別子 値 内容

IFCML_CNT_MODE1 00000000h タイマカウンタ

IFCML_CNT_MODE2 00000001h フレームカウンタ

IFCML_CNT_MODE3 00000002h 差動入力エンコーダカウンタ

IFCML_CNT_MODE4 00000003h シングルエンド入力エンコーダカウンタ 1

IFCML_CNT_MODE5 00000004h シングルエンド入力エンコーダカウンタ 2

IFCML_CNT_MODE6 00000005h タイマカウンタ 2

IFCML_CNT_MODE7 00000006h 差動入力エンコーダカウンタ

(スタートカウンタ付き)

IFCML_CNT_MODE8 00000007h シングルエンド入力エンコーダカウンタ 1(スタ

ートカウンタ付き)

IFCML_CNT_MODE9 00000008h シングルエンド入力エンコーダカウンタ 2(スタ

ートカウンタ付き)

Page 226: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

226

○タイマカウンタ

1μs 毎にカウントアップします。

○フレームカウンタ

デバイスへカメラ画像が入力された時にカウントアップします。

1 フレーム単位でカウントアップします。

※メインメモリおよびオンボードメモリへの転送が完了したフレームをカウントアップする

動作ではありません。

○差動入力エンコーダカウンタ

差動入力方式エンコーダのパルスをカウントアップします。

○シングルエンド入力方式エンコーダカウンタ 1

CN4 の(IN1~IN3 端子)へ入力するシングルエンドエンコーダのパルスをカウントアップしま

す。

○シングルエンド入力方式エンコーダカウンタ 2

CN4 の(IN4~IN6 端子)へ入力するシングルエンドエンコーダのパルスをカウントアップしま

す。

○タイマカウンタ 2

1μs 毎にカウントアップします。

○差動入力エンコーダカウンタ(スタートカウンタ付き)

差動入力方式エンコーダのパルスをカウントアップします。

カウンタ周期を初回(スタート後の 初の周期)と初回以降で変化させる事ができます。

例)カウントスタート時は 100 までカウントアップしてクリアされ、それ以降は 200 までカ

ウントアップしてクリアする。

○シングルエンド入力方式エンコーダカウンタ 1(スタートカウンタ付き)

CN4 の(IN1~IN3 端子)へ入力するシングルエンドエンコーダのパルスをカウントアップしま

す。

カウンタ周期を初回(スタート後の 初の周期)と初回以降で変化させる事ができます。

例)カウントスタート時は 100 までカウントアップしてクリアされ、それ以降は 200 までカ

ウントアップしてクリアする。

○シングルエンド入力方式エンコーダカウンタ 2(スタートカウンタ付き)

CN4 の(IN4~IN6 端子)へ入力するシングルエンドエンコーダのパルスをカウントアップしま

す。

カウンタ周期を初回(スタート後の 初の周期)と初回以降で変化させる事ができます。

例)カウントスタート時は 100 までカウントアップしてクリアされ、それ以降は 200 までカ

ウントアップしてクリアする。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

Page 227: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

227

【注意】

●ラインカメラモード上では、汎用カウンタをフレームカウンタモードに設定する事はできま

せん。

●Mode 引数の設定について

・PEX-H530821, H531021, H531221 の場合

IFCML_CNT_MODE2、IFCML_CNT_MODE5、IFCML_CNT_MODE9 以外の識別子を使用することが出来

ます。

・PEX-H530922 の場合

PEX-H530922 の CH1

IFCML_CNT_MODE2、IFCML_CNT_MODE5、IFCML_CNT_MODE9 以外の識別子を使用することが出来

ます。

PEX-H530922 の CH2

IFCML_CNT_MODE5、IFCML_CNT_MODE9 の識別子のみ、使用することが出来ます。

・PEX-H531122 の場合

PEX-H531122 の CH1

IFCML_CNT_MODE2、IFCML_CNT_MODE5、IFCML_CNT_MODE9 以外の識別子を使用することが出来

ます。

PEX-H531122 の CH2

IFCML_CNT_MODE5、IFCML_CNT_MODE9 の識別子のみ、使用することが出来ます。

・上記以外の型式の場合

IFCML_CNT_MODE1、IFCML_CNT_MODE2、IFCML_CNT_MODE3 の識別子のみ、使用することが出来

ます。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

Ret = CmlSetCounterMode(DeviceHandle,

IFCML_CNTNUM_1 | IFCML_CNTNUM_2, IFCML_CNT_MODE1);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Ret = CmlSetCounterMode(DeviceHandle, _

IFCML_CNTNUM_1 Or IFCML_CNTNUM_2, IFCML_CNT_MODE1)

Page 228: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

228

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Ret := CmlSetCounterMode(DeviceHandle,

IFCML_CNTNUM_1 or IFCML_CNTNUM_2, IFCML_CNT_MODE1);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

ret = IFCCML_ANY.CmlSetCounterMode(DeviceHandle,

IFCCML_ANY.IFCML_CNTNUM_1| IFCCML_ANY.IFCML_CNTNUM_2,

IFCCML_ANY.IFCML_CNT_MODE1);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

ret = IFCCML_ANY.CmlSetCounterMode(DeviceHandle, _

IFCCML_ANY.IFCML_CNTNUM_1 Or IFCCML_ANY.IFCML_CNTNUM_2,_

IFCCML_ANY.IFCML_CNT_MODE1)

●Delphi 8

var

DeviceHandle: Integer;

ret: Integer;

ret := IFCCML.CmlSetCounterMode(DeviceHandle,

IFCCML.IFCML_CNTNUM_1 or IFCCML.IFCML_CNTNUM_2, IFCCML.IFCML_CNT_MODE1);

汎用カウンタ①と汎用カウンタ②をタイマカウンタにします。

Page 229: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

229

35. CmlGetCounterMode

【機能】

指定した汎用カウンタのカウントアップ条件を得ることができます。

【書式】

●C言語

INT CmlGetCounterMode (

HANDLE DeviceHandle, // デバイスハンドル

DWORD CounterNum, // 汎用カウンタ

PDWORD Mode // カウントアップ条件

);

●Visual Basic

Declare Function CmlGetCounterMode Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal CounterNum As Long, _ ‘ 汎用カウンタ

ByRef Mode As Long _ ‘ カウントアップ条件

)As Long

●Delphi

function CmlGetCounterMode (

DeviceHandle: THandle; // デバイスハンドル

CounterNum: DWORD; // 汎用カウンタ

var Mode: DWORD // カウントアップ条件

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlGetCounterMode (

IntPtr DeviceHandle, // デバイスハンドル

uint CounterNum, // 汎用カウンタ

out uint Mode // カウントアップ条件

);

[DllImport("IfCml.dll")]

public static extern int CmlGetCounterMode (

IntPtr DeviceHandle, // デバイスハンドル

uint CounterNum, // 汎用カウンタ

uint[] Mode // カウントアップ条件

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlGetCounterMode (

uint DeviceHandle, // デバイスハンドル

uint CounterNum, // 汎用カウンタ

out uint Mode // カウントアップ条件

);

Page 230: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

230

[DllImport("IfCml.dll")]

public static extern int CmlGetCounterMode (

uint DeviceHandle, // デバイスハンドル

uint CounterNum, // 汎用カウンタ

uint[] Mode // カウントアップ条件

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlGetCounterMode Lib "IFCml.DLL"(_

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal CounterNum As Integer, _ ‘ 汎用カウンタ

ByRef Mode As Integer _ ‘ カウントアップ条件

)As Integer

Declare Function CmlGetCounterMode Lib "IFCml.DLL"(_

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal CounterNum As Integer, _ ‘ 汎用カウンタ

ByVal Mode( ) As Integer _ ‘ カウントアップ条件

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlGetCounterMode Lib "IFCml.DLL"(_

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal CounterNum As Integer, _ ‘ 汎用カウンタ

ByRef Mode As Integer _ ‘ カウントアップ条件

)As Integer

Declare Function CmlGetCounterMode Lib "IFCml.DLL"(_

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal CounterNum As Integer, _ ‘ 汎用カウンタ

ByVal Mode( ) As Integer _ ‘ カウントアップ条件

)As Integer

●Delphi 8

class function CmlGetCounterMode (

DeviceHandle: Integer; // デバイスハンドル

CounterNum: Cardinal; // 汎用カウンタ

var Mode: Cardinal // カウントアップ条件

): Integer; static;

class function CmlGetCounterMode (

DeviceHandle: Integer; // デバイスハンドル

CounterNum: Cardinal; // 汎用カウンタ

Mode: array of Cardinal // カウントアップ条件

): Integer; static;

Page 231: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

231

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

CounterNum 汎用カウンタを指定します。

識別子 値 内容

IFCML_CNTNUM_1 00000001h 汎用カウンタ①

IFCML_CNTNUM_2 00000002h 汎用カウンタ②

IFCML_CNTNUM_3 00000004h 汎用カウンタ③

Mode カウントアップ条件を格納する変数のポインタ(参照渡し)を指定します。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

DWORD CntMode;

Ret = CmlGetCounterMode(DeviceHandle, IFCML_CNTNUM_1, &CntMode);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Dim CntMode As Long

Ret = CmlGetCounterMode(DeviceHandle, IFCML_CNTNUM_1, CntMode)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

CntMode: DWORD;

Ret := CmlGetCounterMode(DeviceHandle, IFCML_CNTNUM_1, CntMode);

Page 232: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

232

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

uint CntMode;

ret = IFCCML_ANY.CmlGetCounterMode(DeviceHandle, IFCCML_ANY.IFCML_CNTNUM_1, out

CntMode);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

Dim CntMode As Integer

ret = IFCCML_ANY.CmlGetCounterMode(DeviceHandle, IFCCML_ANY.IFCML_CNTNUM_1, CntMode)

●Delphi 8

var

DeviceHandle: Integer;

ret: Integer;

CntMode: Cardinal;

ret := IFCCML.CmlGetCounterMode(DeviceHandle, IFCCML.IFCML_CNTNUM_1, CntMode);

汎用カウンタ①のカウンタモードを確認します。

Page 233: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

233

36. CmlSetCounterCycle

【機能】

汎用カウンタのカウンタ周期を設定します。

【書式】

●C言語

INT CmlSetCounterCycle (

HANDLE DeviceHandle, // デバイスハンドル

DWORD CounterNum, // 汎用カウンタ

DWORD CntCycle // カウンタ周期

);

●Visual Basic

Declare Function CmlSetCounterCycle Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal CounterNum As Long, _ ‘ 汎用カウンタ

ByVal CntCycle As Long _ ‘ カウンタ周期

)As Long

●Delphi

function CmlSetCounterCycle (

DeviceHandle: THandle; // デバイスハンドル

CounterNum: DWORD; // 汎用カウンタ

CntCycle: DWORD // カウンタ周期

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetCounterCycle (

IntPtr DeviceHandle, // デバイスハンドル

uint CounterNum, // 汎用カウンタ

uint CntCycle // カウンタ周期

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSetCounterCycle (

uint DeviceHandle, // デバイスハンドル

uint CounterNum, // 汎用カウンタ

uint CntCycle // カウンタ周期

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlSetCounterCycle Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal CounterNum As Integer, _ ‘ 汎用カウンタ

ByVal CntCycle As Integer _ ‘ カウンタ周期

)As Integer

Page 234: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

234

●Visual Basic .NET(x86 専用)

Declare Function CmlSetCounterCycle Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal CounterNum As Integer, _ ‘ 汎用カウンタ

ByVal CntCycle As Integer _ ‘ カウンタ周期

)As Integer

●Delphi 8

class function CmlSetCounterCycle (

DeviceHandle: Integer; // デバイスハンドル

CounterNum: Cardinal; // 汎用カウンタ

CntCycle: Cardinal // カウンタ周期

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

CounterNum 汎用カウンタを指定します。OR 演算による複数指定が可能です。

ただし、PEX-H530821, H530922, H531021, H531122, H531221 は OR 指定を行う事が出来ま

せん。汎用カウンタ①~③にそれぞれ設定して下さい。

識別子 値 内容

IFCML_CNTNUM_1 00000001h 汎用カウンタ①

IFCML_CNTNUM_2 00000002h 汎用カウンタ②

IFCML_CNTNUM_3 00000004h 汎用カウンタ③

以下の識別子を OR 指定する事でスタートカウンタの周期を設定することが出来ます。

識別子 値 内容

IFCML_CNTNUM_START 10000000h スタートカウンタ

スタートカウンタの周期を設定出来るのは、PEX-H530821, H530922, H531021, H531122,

H531221 のみです。

CmlSetCouterMode 関数で、汎用カウンタのカウントアップ条件を以下の何れかに設定する

必要があります。

・ 差動入力方式エンコーダカウンタ(スタートカウンタ付き)

・ シングルエンド入力方式エンコーダカウンタ(スタートカウンタ付き)

CntCycle 周期を設定します。1 ~ 16777215(FFFFFFh)

PEX-H530821, H530922, H531021,H531122 の場合、汎用カウンタにタイマカウンタを設定し

た状態で、CntCycle 引数に0を指定することでタイマカウントを停止することが出来ます。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

Page 235: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

235

【備考】

・カウントスタート時のカウンタ周期とそれ以降のカウンタ周期について

CmlSetCounterMode関数で、スタートカウンタ付きのエンコーダカウンタを指定した場合、カ

ウントスタート時のカウンタ周期とそれ以降のカウンタ周期を分けて設定を行います。

例として、IFCML_CNTNUM_START を OR して CntCycle を 100 に設定し、IFCML_CNTNUM_START

を OR せずに CntCycle を 200 に設定した場合、エンコーダカウンタのカウント値が 100 に達

すると 0 クリアされ、以降エンコーダカウンタのカウンタ値が 200 になったときに 0 クリア

されます。

割り込みやトリガの設定を行っている場合、0クリアされたときに割り込みが発生するので、

初の 1 回目の割り込みは周期 100 で発生し、2 回目以降の割り込みは周期 200 で発生しま

す。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

Ret = CmlSetCounterCycle(DeviceHandle,

IFCML_CNTNUM_1| IFCML_CNTNUM_2, 10000);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Ret = CmlSetCounterCycle(DeviceHandle, _

IFCML_CNTNUM_1 Or IFCML_CNTNUM_2, 10000)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Ret := CmlSetCounterCycle(DeviceHandle,

IFCML_CNTNUM_1 or IFCML_CNTNUM_2, 10000);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

ret = IFCCML_ANY.CmlSetCounterCycle(DeviceHandle,

IFCCML_ANY.IFCML_CNTNUM_1 | IFCCML_ANY.IFCML_CNTNUM_2, 10000);

Page 236: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

236

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

ret = IFCCML_ANY.CmlSetCounterCycle(DeviceHandle, _

IFCCML_ANY.IFCML_CNTNUM_1 Or IFCCML_ANY.IFCML_CNTNUM_2, 10000)

●Delphi 8

var

DeviceHandle: THandle;

ret: Integer;

ret := IFCCML.CmlSetCounterCycle(DeviceHandle,

IFCCML.IFCML_CNTNUM_1 or IFCCML.IFCML_CNTNUM_2, 10000);

汎用カウンタ①と汎用カウンタ②のカウンタ周期を 10000 とします。

Page 237: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

237

37. CmlGetCounter

【機能】

汎用カウンタの値を取得します。

【書式】

●C言語

INT CmlGetCounter(

HANDLE DeviceHandle, // デバイスハンドル

DWORD CounterNum, // 汎用カウンタ

PDWORD Counter // カウンタ値

);

●Visual Basic

Declare Function CmlGetCounter Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal CounterNum As Long, _ ‘ 汎用カウンタ

ByRef Counter As Long _ ‘ カウンタ値

)As Long

●Delphi

function CmlGetCounter(

DeviceHandle: THandle; // デバイスハンドル

CounterNum: DWORD; // 汎用カウンタ

var Counter: DWORD // カウンタ値

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetCounterCycle (

IntPtr DeviceHandle, // デバイスハンドル

uint CounterNum, // 汎用カウンタ

out uint Counter // カウンタ値

);

[DllImport("IfCml.dll")]

public static extern int CmlSetCounterCycle (

IntPtr DeviceHandle, // デバイスハンドル

uint CounterNum, // 汎用カウンタ

uint[] Counter // カウンタ値

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSetCounterCycle (

uint DeviceHandle, // デバイスハンドル

uint CounterNum, // 汎用カウンタ

out uint Counter // カウンタ値

);

Page 238: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

238

[DllImport("IfCml.dll")]

public static extern int CmlSetCounterCycle (

uint DeviceHandle, // デバイスハンドル

uint CounterNum, // 汎用カウンタ

uint[] Counter // カウンタ値

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlSetCounterCycle Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal CounterNum As Integer, _ ‘ 汎用カウンタ

ByRef Counter As Integer _ ‘ カウンタ値

)As Integer

Declare Function CmlSetCounterCycle Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal CounterNum As Integer, _ ‘ 汎用カウンタ

ByVal Counter( ) As Integer _ ‘ カウンタ値

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlSetCounterCycle Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal CounterNum As Integer, _ ‘ 汎用カウンタ

ByRef Counter As Integer _ ‘ カウンタ値

)As Integer

Declare Function CmlSetCounterCycle Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal CounterNum As Integer, _ ‘ 汎用カウンタ

ByVal Counter( ) As Integer _ ‘ カウンタ値

)As Integer

●Delphi 8

class function CmlSetCounterCycle (

DeviceHandle: Integer; // デバイスハンドル

CounterNum: Cardinal; // 汎用カウンタ

var Counter: Cardinal // カウンタ値

): Integer; static;

class function CmlSetCounterCycle (

DeviceHandle: Integer; // デバイスハンドル

CounterNum: Cardinal; // 汎用カウンタ

Counter: array of Cardinal // カウンタ値

): Integer; static;

Page 239: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

239

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

ConterNum 汎用カウンタを指定します。OR 演算による複数指定が可能です。

識別子 値 内容

IFCML_CNTNUM_1 00000001h 汎用カウンタ①

IFCML_CNTNUM_2 00000002h 汎用カウンタ②

IFCML_CNTNUM_3 00000004h 汎用カウンタ③

スタートカウンタカウンタ値を取得する場合、以下の識別子を OR 指定してください。

識別子 値 内容

IFCML_CNTNUM_START 10000000h スタートカウンタ

ただし、CmlSetCouterMode 関数で、汎用カウンタのカウントアップ条件を以下の何れかに

設定する必要があります。

・差動入力方式エンコーダカウンタ(スタートカウンタ付き)

・シングルエンド入力方式エンコーダカウンタ(スタートカウンタ付き)

Counter 指定したカウンタ値を格納する変数のポインタ(参照渡し)を指定します。

カウンタの 大値は CmlSetCounterCycle で設定した値です。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

DWORD Counter;

Ret = CmlGetCounter(DeviceHandle, IFCML_CNTNUM_1, &Counter);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Dim Counter As Long

Ret = CmlGetCounter(DeviceHandle, IFCML_CNTNUM_1, Counter)

Page 240: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

240

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Counter: DWORD;

Ret = CmlGetCounter(DeviceHandle, IFCML_CNTNUM_1, Counter);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

uint Counter;

ret = IFCCML_ANY.CmlGetCounter(DeviceHandle, IFCCML_ANY.IFCML_CNTNUM_1, out Counter);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

Dim Counter As Integer

ret = IFCCML_ANY.CmlGetCounter(DeviceHandle, IFCCML_ANY.IFCML_CNTNUM_1, Counter)

●Delphi 8

var

DeviceHandle: Integer;

ret: Integer;

Counter: Cardinal;

ret = IFCCML.CmlGetCounter(DeviceHandle, IFCCML.IFCML_CNTNUM_1, Counter);

汎用カウンタ①の値を取得します。

Page 241: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

241

38. CmlSerialSend

【機能】

シリアル制御方式で、カメラへデータを送信します。

【書式】

●C言語

INT CmlSerialSend (

HANDLE DeviceHandle, // デバイスハンドル

PVOID BuffPtr, // 送信データ

PDWORD BuffSize, // 送信データのサイズ

DWORD TimeOut // タイムアウト時間

);

●Visual Basic

Declare Function CmlSerialSend Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByRef BuffPtr As Any, _ ‘ 送信データ

ByRef BuffSize As Long, _ ‘ 送信データのサイズ

ByVal TimeOut As Long _ ‘ タイムアウト時間

)As Long

●Delphi

function CmlSerialSend (

DeviceHandle: THandle; // デバイスハンドル

BuffPtr: Pointer; // 送信データ

var BuffSize: DWORD; // 送信データのサイズ

TimeOut: DWORD // タイムアウト時間

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSerialSend (

IntPtr DeviceHandle, // デバイスハンドル

byte BuffPtr, // 送信データ

uint BuffSize, // 送信データのサイズ

uint TimeOut // タイムアウト

);

[DllImport("IfCml.dll")]

public static extern int CmlSerialSend (

IntPtr DeviceHandle, // デバイスハンドル

short BuffPtr, // 送信データ

uint BuffSize, // 送信データのサイズ

uint TimeOut // タイムアウト

);

Page 242: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

242

[DllImport("IfCml.dll")]

public static extern int CmlSerialSend (

IntPtr DeviceHandle, // デバイスハンドル

uint BuffPtr, // 送信データ

uint BuffSize, // 送信データのサイズ

uint TimeOut // タイムアウト

);

[DllImport("IfCml.dll")]

public static extern int CmlSerialSend (

IntPtr DeviceHandle, // デバイスハンドル

byte[] BuffPtr, // 送信データ

uint BuffSize, // 送信データのサイズ

uint TimeOut // タイムアウト

);

[DllImport("IfCml.dll")]

public static extern int CmlSerialSend (

IntPtr DeviceHandle, // デバイスハンドル

short[] BuffPtr, // 送信データ

uint BuffSize, // 送信データのサイズ

uint TimeOut // タイムアウト

);

[DllImport("IfCml.dll")]

public static extern int CmlSerialSend (

IntPtr DeviceHandle, // デバイスハンドル

uint[] BuffPtr, // 送信データ

uint BuffSize, // 送信データのサイズ

uint TimeOut // タイムアウト

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSerialSend (

uint DeviceHandle, // デバイスハンドル

byte BuffPtr, // 送信データ

uint BuffSize, // 送信データのサイズ

uint TimeOut // タイムアウト

);

[DllImport("IfCml.dll")]

public static extern int CmlSerialSend (

uint DeviceHandle, // デバイスハンドル

short BuffPtr, // 送信データ

uint BuffSize, // 送信データのサイズ

uint TimeOut // タイムアウト

);

Page 243: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

243

[DllImport("IfCml.dll")]

public static extern int CmlSerialSend (

uint DeviceHandle, // デバイスハンドル

uint BuffPtr, // 送信データ

uint BuffSize, // 送信データのサイズ

uint TimeOut // タイムアウト

);

[DllImport("IfCml.dll")]

public static extern int CmlSerialSend (

uint DeviceHandle, // デバイスハンドル

byte[] BuffPtr, // 送信データ

uint BuffSize, // 送信データのサイズ

uint TimeOut // タイムアウト

);

[DllImport("IfCml.dll")]

public static extern int CmlSerialSend (

uint DeviceHandle, // デバイスハンドル

short[] BuffPtr, // 送信データ

uint BuffSize, // 送信データのサイズ

uint TimeOut // タイムアウト

);

[DllImport("IfCml.dll")]

public static extern int CmlSerialSend (

uint DeviceHandle, // デバイスハンドル

uint[] BuffPtr, // 送信データ

uint BuffSize, // 送信データのサイズ

uint TimeOut // タイムアウト

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlSerialSend Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByRef BuffPtr As Byte, _ ‘ 送信データ

ByVal BuffSize As Integer, _ ‘ 送信データのサイズ

ByVal TimeOut As Integer _ ‘ タイムアウト

)As Integer

Declare Function CmlSerialSend Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByRef BuffPtr As Short, _ ‘ 送信データ

ByVal BuffSize As Integer, _ ‘ 送信データのサイズ

ByVal TimeOut As Integer _ ‘ タイムアウト

)As Integer

Page 244: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

244

Declare Function CmlSerialSend Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByRef BuffPtr As Integer, _ ‘ 送信データ

ByVal BuffSize As Integer, _ ‘ 送信データのサイズ

ByVal TimeOut As Integer _ ‘ タイムアウト

)As Integer

Declare Function CmlSerialSend Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal BuffPtr( ) As Byte, _ ‘ 送信データ

ByVal BuffSize As Integer, _ ‘ 送信データのサイズ

ByVal TimeOut As Integer _ ‘ タイムアウト

)As Integer

Declare Function CmlSerialSend Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal BuffPtr( ) As Short, _ ‘ 送信データ

ByVal BuffSize As Integer, _ ‘ 送信データのサイズ

ByVal TimeOut As Integer _ ‘ タイムアウト

)As Integer

Declare Function CmlSerialSend Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal BuffPtr( ) As Integer, _ ‘ 送信データ

ByVal BuffSize As Integer, _ ‘ 送信データのサイズ

ByVal TimeOut As Integer _ ‘ タイムアウト

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlSerialSend Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByRef BuffPtr As Byte, _ ‘ 送信データ

ByVal BuffSize As Integer, _ ‘ 送信データのサイズ

ByVal TimeOut As Integer _ ‘ タイムアウト

)As Integer

Declare Function CmlSerialSend Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByRef BuffPtr As Short, _ ‘ 送信データ

ByVal BuffSize As Integer, _ ‘ 送信データのサイズ

ByVal TimeOut As Integer _ ‘ タイムアウト

)As Integer

Page 245: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

245

Declare Function CmlSerialSend Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByRef BuffPtr As Integer, _ ‘ 送信データ

ByVal BuffSize As Integer, _ ‘ 送信データのサイズ

ByVal TimeOut As Integer _ ‘ タイムアウト

)As Integer

Declare Function CmlSerialSend Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal BuffPtr( ) As Byte, _ ‘ 送信データ

ByVal BuffSize As Integer, _ ‘ 送信データのサイズ

ByVal TimeOut As Integer _ ‘ タイムアウト

)As Integer

Declare Function CmlSerialSend Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal BuffPtr( ) As Short, _ ‘ 送信データ

ByVal BuffSize As Integer, _ ‘ 送信データのサイズ

ByVal TimeOut As Integer _ ‘ タイムアウト

)As Integer

Declare Function CmlSerialSend Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal BuffPtr( ) As Integer, _ ‘ 送信データ

ByVal BuffSize As Integer, _ ‘ 送信データのサイズ

ByVal TimeOut As Integer _ ‘ タイムアウト

)As Integer

●Delphi 8

class function CmlSerialSend (

DeviceHandle: Integer; // デバイスハンドル

var BuffPtr: Bytel; // 送信データ

BuffSize: Cardinal; // 送信データのサイズ

TimeOut: Cardinal // タイムアウト

): Integer; static;

class function CmlSerialSend (

DeviceHandle: Integer; // デバイスハンドル

var BuffPtr: Word; // 送信データ

BuffSize: Cardinal; // 送信データのサイズ

TimeOut: Cardinal // タイムアウト

): Integer; static;

Page 246: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

246

class function CmlSerialSend (

DeviceHandle: Integer; // デバイスハンドル

var BuffPtr; Integer; // 送信データ

BuffSize: Cardinal; // 送信データのサイズ

TimeOut: Cardinal // タイムアウト

): Integer; static;

class function CmlSerialSend (

DeviceHandle: Integer; // デバイスハンドル

BuffPtr: array of Bytel; // 送信データ

BuffSize: Cardinal; // 送信データのサイズ

TimeOut: Cardinal // タイムアウト

): Integer; static;

class function CmlSerialSend (

DeviceHandle: Integer; // デバイスハンドル

BuffPtr: array of Word; // 送信データ

BuffSize: Cardinal; // 送信データのサイズ

TimeOut: Cardinal // タイムアウト

): Integer; static;

class function CmlSerialSend (

DeviceHandle: Integer; // デバイスハンドル

BuffPtr; array of Cardinal; // 送信データ

BuffSize: Cardinal; // 送信データのサイズ

TimeOut: Cardinal // タイムアウト

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

BuffPtr 送信データを格納しているバッファのポインタ(参照渡し)を指定します。

BuffSize 送信データのサイズを格納している変数のポインタ(参照渡し)を指定します。

関数実行後、この変数には実際に送信したデータのサイズが格納されます。

TimeOut タイムアウト時間を ms 単位で指定します。

送信用 FIFO がフルになっている状態が、指定した時間を超えた場合、関数はタイムアウト

エラーを返します。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

Page 247: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

247

【使用例】

●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 = CmlSerialSend(DeviceHandle, SendData , &SendSize, 1000);

●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 = CmlSerialSend(DeviceHandle, SendData(0), SendSize, 1000)

Page 248: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

248

●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 := CmlSerialSend(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 = IFCCML_ANY.CmlSerialSend(DeviceHandle, SendData , out SendSize, 1000);

Page 249: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

249

●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 = IFCCML_ANY.CmlSerialSend(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 := IFCCML_ANY.CmlSerialSend(DeviceHandle, SendData, SendSize, 1000);

Page 250: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

250

STX,ETX コード付きの文字列(Interface)を送信します。

送信データのフォーマットはご使用のカメラによって異なりますので、カメラのマニュアルを参

照してください。

Page 251: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

251

39. CmlSerialReceive

【機能】

シリアル通信方式でカメラからのデータを受信します。

【書式】

●C言語

INT CmlSerialReceive (

HANDLE DeviceHandle, // デバイスハンドル

PVOID BuffPtr, // 受信データ

PDWORD BuffSize, // 受信データのサイズ

DWORD TimeOut // タイムアウト時間

);

●Visual Basic

Declare Function CmlSerialReceive Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByRef BuffPtr As Any, _ ‘ 受信データ

ByRef BuffSize As Long, _ ‘ 受信データのサイズ

ByVal TimeOut As Long _ ‘ タイムアウト時間

)As Long

●Delphi

function CmlSerialReceive (

DeviceHandle: Thandle; // デバイスハンドル

BuffPtr Pointer; // 受信データ

var BuffSize: DWORD; // 受信データのサイズ

TimeOut: DWORD // タイムアウト時間

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSerialReceive (

IntPtr DeviceHandle, // デバイスハンドル

byte BuffPtr, // 受信データ

uint BuffSize, // 受信データのサイズ

uint TimeOut // タイムアウト

);

[DllImport("IfCml.dll")]

public static extern int CmlSerialReceive (

IntPtr DeviceHandle, // デバイスハンドル

short BuffPtr, // 受信データ

uint BuffSize, // 受信データのサイズ

uint TimeOut // タイムアウト

);

Page 252: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

252

[DllImport("IfCml.dll")]

public static extern int CmlSerialReceive (

IntPtr DeviceHandle, // デバイスハンドル

uint BuffPtr, // 受信データ

uint BuffSize, // 受信データのサイズ

uint TimeOut // タイムアウト

);

[DllImport("IfCml.dll")]

public static extern int CmlSerialReceive (

IntPtr DeviceHandle, // デバイスハンドル

byte[] BuffPtr, // 受信データ

uint BuffSize, // 受信データのサイズ

uint TimeOut // タイムアウト

);

[DllImport("IfCml.dll")]

public static extern int CmlSerialReceive (

IntPtr DeviceHandle, // デバイスハンドル

short[] BuffPtr, // 受信データ

uint BuffSize, // 受信データのサイズ

uint TimeOut // タイムアウト

);

[DllImport("IfCml.dll")]

public static extern int CmlSerialReceive (

IntPtr DeviceHandle, // デバイスハンドル

uint[] BuffPtr, // 受信データ

uint BuffSize, // 受信データのサイズ

uint TimeOut // タイムアウト

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSerialReceive (

uint DeviceHandle, // デバイスハンドル

byte BuffPtr, // 受信データ

uint BuffSize, // 受信データのサイズ

uint TimeOut // タイムアウト

);

[DllImport("IfCml.dll")]

public static extern int CmlSerialReceive (

uint DeviceHandle, // デバイスハンドル

short BuffPtr, // 受信データ

uint BuffSize, // 受信データのサイズ

uint TimeOut // タイムアウト

);

Page 253: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

253

[DllImport("IfCml.dll")]

public static extern int CmlSerialReceive (

uint DeviceHandle, // デバイスハンドル

uint BuffPtr, // 受信データ

uint BuffSize, // 受信データのサイズ

uint TimeOut // タイムアウト

);

[DllImport("IfCml.dll")]

public static extern int CmlSerialReceive (

uint DeviceHandle, // デバイスハンドル

byte[] BuffPtr, // 受信データ

uint BuffSize, // 受信データのサイズ

uint TimeOut // タイムアウト

);

[DllImport("IfCml.dll")]

public static extern int CmlSerialReceive (

uint DeviceHandle, // デバイスハンドル

short[] BuffPtr, // 受信データ

uint BuffSize, // 受信データのサイズ

uint TimeOut // タイムアウト

);

[DllImport("IfCml.dll")]

public static extern int CmlSerialReceive (

uint DeviceHandle, // デバイスハンドル

uint[] BuffPtr, // 受信データ

uint BuffSize, // 受信データのサイズ

uint TimeOut // タイムアウト

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlSerialReceive Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByRef BuffPtr As Byte, _ ‘ 受信データ

ByVal BuffSize As Integer, _ ‘ 受信データのサイズ

ByVal TimeOut As Integer _ ‘ タイムアウト

)As Integer

Declare Function CmlSerialReceive Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByRef BuffPtr As Short, _ ‘ 受信データ

ByVal BuffSize As Integer, _ ‘ 受信データのサイズ

ByVal TimeOut As Integer _ ‘ タイムアウト

)As Integer

Page 254: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

254

Declare Function CmlSerialReceive Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByRef BuffPtr As Integer, _ ‘ 受信データ

ByVal BuffSize As Integer, _ ‘ 受信データのサイズ

ByVal TimeOut As Integer _ ‘ タイムアウト

)As Integer

Declare Function CmlSerialReceive Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal BuffPtr( ) As Byte, _ ‘ 受信データ

ByVal BuffSize As Integer, _ ‘ 受信データのサイズ

ByVal TimeOut As Integer _ ‘ タイムアウト

)As Integer

Declare Function CmlSerialReceive Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal BuffPtr( ) As Short, _ ‘ 受信データ

ByVal BuffSize As Integer, _ ‘ 受信データのサイズ

ByVal TimeOut As Integer _ ‘ タイムアウト

)As Integer

Declare Function CmlSerialReceive Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal BuffPtr( ) As Integer, _ ‘ 受信データ

ByVal BuffSize As Integer, _ ‘ 受信データのサイズ

ByVal TimeOut As Integer _ ‘ タイムアウト

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlSerialReceive Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByRef BuffPtr As Byte, _ ‘ 受信データ

ByVal BuffSize As Integer, _ ‘ 受信データのサイズ

ByVal TimeOut As Integer _ ‘ タイムアウト

)As Integer

Declare Function CmlSerialReceive Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByRef BuffPtr As Short, _ ‘ 受信データ

ByVal BuffSize As Integer, _ ‘ 受信データのサイズ

ByVal TimeOut As Integer _ ‘ タイムアウト

)As Integer

Page 255: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

255

Declare Function CmlSerialReceive Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByRef BuffPtr As Integer, _ ‘ 受信データ

ByVal BuffSize As Integer, _ ‘ 受信データのサイズ

ByVal TimeOut As Integer _ ‘ タイムアウト

)As Integer

Declare Function CmlSerialReceive Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal BuffPtr( ) As Byte, _ ‘ 受信データ

ByVal BuffSize As Integer, _ ‘ 受信データのサイズ

ByVal TimeOut As Integer _ ‘ タイムアウト

)As Integer

Declare Function CmlSerialReceive Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal BuffPtr( ) As Short, _ ‘ 受信データ

ByVal BuffSize As Integer, _ ‘ 受信データのサイズ

ByVal TimeOut As Integer _ ‘ タイムアウト

)As Integer

Declare Function CmlSerialReceive Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal BuffPtr( ) As Integer, _ ‘ 受信データ

ByVal BuffSize As Integer, _ ‘ 受信データのサイズ

ByVal TimeOut As Integer _ ‘ タイムアウト

)As Integer

●Delphi 8

class function CmlSerialReceive (

DeviceHandle: Integer; // デバイスハンドル

var Buffer: byte; // 受信データ

BuffSize: Cardinal; // 受信データのサイズ

TimeOut: Cardinal // タイムアウト

): Integer; static;

class function CmlSerialReceive (

DeviceHandle: Integer; // デバイスハンドル

var BuffPtr: Word; // 受信データ

BuffSize: Cardinal; // 受信データのサイズ

TimeOut: Cardinal // タイムアウト

): Integer; static;

Page 256: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

256

class function CmlSerialReceive (

DeviceHandle: Integer; // デバイスハンドル

var BuffPtr: Cardinal; // 受信データ

BuffSize: Cardinal; // 受信データのサイズ

TimeOut: Cardinal // タイムアウト

): Integer; static;

class function CmlSerialReceive (

DeviceHandle: Integer; // デバイスハンドル

BuffPtr: array of byte; // 受信データ

BuffSize: Cardinal; // 受信データのサイズ

TimeOut: Cardinal // タイムアウト

): Integer; static;

class function CmlSerialReceive (

DeviceHandle: Integer; // デバイスハンドル

BuffPtr; array of Word; // 受信データ

BuffSize: Cardinal; // 受信データのサイズ

TimeOut: Cardinal // タイムアウト

): Integer; static;

class function CmlSerialReceive (

DeviceHandle: Integer; // デバイスハンドル

BuffPtr array of Cardinal; // 受信データ

BuffSize: Cardinal; // 受信データのサイズ

TimeOut: Cardinal // タイムアウト

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

BuffPtr 受信データを格納するバッファポインタ(参照渡し)を指定します。

BuffSize 受信データのサイズが格納された変数のポインタ(参照渡し)を指定します。

関数実行後、この変数には実際に受信したデータのサイズが格納されます。

TimeOut タイムアウト時間を ms 単位で指定します。

受信用 FIFO が空になっている状態が、指定した時間を超えた場合、関数はタイムアウトエ

ラーを返します。

Page 257: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

257

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

BYTE Buf[5];

DWORD RecvSize;

RecvSize = 5;

Ret = CmlSerialReceive(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 = CmlSerialReceive(DeviceHandle, Buf(0), RecvSize, 1000)

●Delphi

var

DeviceHandle: THandle;

Buf: Array[0..4] of Char;

Ret: Integer;

RecvSize: DWORD;

RecvSize := 5;

Ret := CmlSerialReceive(DeviceHandle, Buf , RecvSize, 1000);

Page 258: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

258

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

byte Buf[5];

uint RecvSize;

RecvSize = 5;

ret = IFCCML_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 = IFCCML_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 := IFCCML_ANY.CmlSerialReceive(DeviceHandle, Buf , RecvSize, 1000);

カメラへシリアル通信方法により、5バイト分データを受信します。

Page 259: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

259

40. CmlGetSerialStatus

【機能】

デバイスの送信用 FIFO と受信用 FIFO の状態を取得します。

【書式】

●C言語

INT CmlGetSerialStatus (

HANDLE DeviceHandle, // デバイスハンドル

PDWORD Status // シリアルステータス

);

●Visual Basic

Declare Function CmlGetSerialStatusLib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByRef Status As Long _ ‘ シリアルステータス

)As Long

●Delphi

function CmlGetSerialStatus (

DeviceHandle: Thandle; // デバイスハンドル

var Status: DWORD // シリアルステータス

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlGetSerialStatus (

IntPtr DeviceHandle, // デバイスハンドル

out uint Status // シリアルステータス

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlGetSerialStatus (

uint DeviceHandle, // デバイスハンドル

out uint Status // シリアルステータス

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlGetSerialStatus Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByRef Status As Integer _ ‘ シリアルステータス

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlGetSerialStatus Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByRef Status As Integer _ ‘ シリアルステータス

)As Integer

Page 260: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

260

●Delphi 8

class function CmlGetSerialStatus (

DeviceHandle: Thandle; // デバイスハンドル

var Status: DWORD // シリアルステータス

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

Status ステータスを格納する変数のポインタ(参照渡し)を指定します。

ビット 内容 説明

bit31~bit6 予約 予約です。

bit5 送信状態

1:送信完了 0:送信中

送信完了時に CmlSerialSend 関数でデータを送

信する事ができます。

bit4 送信用 FIFO の状態

1:フルになっている。

0:フルになっていない。

送信用 FIFO がフルになっており、CmlSerialSend

関数でデータを送信する事ができません。

bit3 予約 予約です。

bit2 受信用 FIFO 状態

1:オーバーフローした。

0:オーバーフローしていない。

受信用ハードウェア FIFO がオーバーフローして

おり、受信データを取りこぼしています。

bit1 受信状態

1:受信完了/受信待機中

0:受信中

受信中の場合、受信用ハードウェア FIFO にデー

タが入っている事を意味します。

CmlSerialReceive 関数でデータを取得する事が

できます。

bit0 受信用 FIFO 状態

1:フルになっている

0:フルになっていない

受信用ハードウェア FIFO がフルになっており、

受信データを取りこぼす可能性があります。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

DWORD Status;

Ret = CmlGetSerialStatus(DeviceHandle, &Status);

Page 261: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

261

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Dim Status As Long

Ret = CmlGetSerialStatus(DeviceHandle, Status)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Status: DWORD;

Ret := CmlGetSerialStatus(DeviceHandle, Status);

●Visual C# .NET

uint ret;

IntPtr DeviceHandle;

uint Status;

ret = IFCCML_ANY.CmlGetSerialStatus(DeviceHandle, out Status);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

Dim Status As Integer

ret = IFCCML_ANY.CmlGetSerialStatus(DeviceHandle, Status)

●Delphi 8

var

DeviceHandle: Integer;

ret: Integer;

Status: Cardinal;

ret := IFCCML.CmlGetSerialStatus(DeviceHandle, Status);

シリアル通信状態を取得します。

Page 262: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

262

41. CmlSerialClear

【機能】

デバイスの送信用 FIFO と受信用 FIFO 内のデータをクリアします。

【書式】

●C言語

INT CmlSerialClear (

HANDLE DeviceHandle, // デバイスハンドル

DWORD Fifo // FIFO

);

●Visual Basic

Declare Function CmlSerialClear Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal Fifo As Long _ ‘ FIFO

)As Long

●Delphi

function CmlSerialClear (

DeviceHandle: Thandle; // デバイスハンドル

Fifo: DWORD // FIFO

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSerialClear (

IntPtr DeviceHandle, // デバイスハンドル

uint Fifo // FIFO

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSerialClear (

uint DeviceHandle, // デバイスハンドル

uint Fifo // FIFO

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlSerialClear Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal Fifo As Integer _ ‘ FIFO

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlSerialClear Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal Fifo As Integer _ ‘ FIFO

)As Integer

Page 263: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

263

●Delphi 8

class function CmlSerialClear (

DeviceHandle: Integer; // デバイスハンドル

Fifo: Cardinal; // FIFO

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

Fifo クリアする FIFO を選択します。同時指定可能です。

識別子 値 内容

IFCML_SEND_FIFO 00000001h 送信用 FIFO

IFCML_RECEIVE_FIFO 00000002h 受信用 FIFO

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

Ret = CmlSerialClear(DeviceHandle, IFCML_SEND_FIFO);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Ret = CmlSerialClear(DeviceHandle, IFCML_SEND_FIFO)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Ret := CmlSerialClear(DeviceHandle, IFCML_SEND_FIFO);

Page 264: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

264

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

ret = IFCCML_ANY.CmlSerialClear(DeviceHandle, IFCCML_ANY.IFCML_SEND_FIFO);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

ret = IFCCML_ANY.CmlSerialClear(DeviceHandle, IFCCML_ANY.IFCML_SEND_FIFO)

●Delphi 8

var

DeviceHandle: Integer;

ret: Integer;

ret := IFCCML.CmlSerialClear(DeviceHandle, IFCCML.IFCML_SEND_FIFO);

送信 FIFO の中身をクリアします。

Page 265: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

265

42. CmlGetReceiveSize

【機能】

ソフトウェア FIFO に格納されている受信データの容量(バイト)を取得します。

【書式】

●C言語

INT CmlGetReceiveSize(

HANDLE DeviceHandle, // デバイスハンドル

PDWORD BuffSize // 受信サイズ

);

●Visual Basic

Declare Function CmlGetReceiveSize Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByRef BuffSize As Long _ ‘ 受信サイズ

)As Long

●Delphi

function CmlGetReceiveSize (

DeviceHandle: Thandle; // デバイスハンドル

var BuffSize: DWORD // 受信サイズ

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlGetReceiveSize (

IntPtr DeviceHandle, // デバイスハンドル

out uint BuffSize // シリアルステータス

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlGetReceiveSize (

uint DeviceHandle, // デバイスハンドル

out uint BuffSize // シリアルステータス

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlGetReceiveSize Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByRef BuffSize As Integer _ ‘ シリアルステータス

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlGetReceiveSize Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByRef BuffSize As Integer _ ‘ シリアルステータス

)As Integer

Page 266: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

266

●Delphi 8

class function CmlGetReceiveSize (

DeviceHandle: Thandle; // デバイスハンドル

var BuffSize: DWORD // シリアルステータス

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

BuffSize ソフトウェア FIFO に格納されている受信データの容量を格納する変数のポインタ(参照渡

し)を指定します。容量の範囲は 0~4096 バイトになります。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

DWORD BuffSize;

Ret = CmlGetReceiveSize(DeviceHandle, &BuffSize);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Dim BuffSize As Long

Ret = CmlGetReceiveSize(DeviceHandle, BuffSize)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

BuffSize: DWORD;

Ret := CmlGetReceiveSize(DeviceHandle, BuffSize);

Page 267: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

267

●Visual C# .NET

uint ret;

IntPtr DeviceHandle;

uint BuffSize;

ret = IFCCML_ANY.CmlGetReceiveSize(DeviceHandle, out BuffSize);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

Dim BuffSize As Integer

ret = IFCCML_ANY.CmlGetReceiveSize(DeviceHandle, BuffSize)

●Delphi 8

var

DeviceHandle: Integer;

ret: Integer;

BuffSize: Cardinal;

ret := IFCCML.CmlGetReceiveSize(DeviceHandle, BuffSize);

ソフトウェア FIFO に格納されている受信データの容量(バイト)を取得します。

Page 268: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

268

43. CmlInputDI

【機能】

汎用入力端子の状態を取得します。

【書式】

●C言語

INT CmlInputDI (

HANDLE DeviceHandle, // デバイスハンドル

PDWORD InDi // 汎用入力

);

●Visual Basic

Declare Function CmlInputDI Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByRef InDi As Long _ ‘ 汎用入力

)As Long

●Delphi

function CmlInputDI (

DeviceHandle: THandle; // デバイスハンドル

var InDi: DWORD // 汎用入力

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlInputDI (

IntPtr DeviceHandle, // デバイスハンドル

out uint InDi // 汎用入力

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlInputDI (

uint DeviceHandle, // デバイスハンドル

out uint InDi // 汎用入力

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlInputDI Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByRef InDi As Integer _ ‘ 汎用入力

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlInputDI Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByRef InDi As Integer _ ‘ 汎用入力

)As Integer

Page 269: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

269

●Delphi 8

class function CmlInputDI (

DeviceHandle: uint; // デバイスハンドル

var InDi: Cardinal // 汎用入力

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

InDi 汎用入力の状態を取得します。汎用入力状態を格納する変数のポインタ(参照渡し)を指定

します。

bit31~bit16

予約

bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8

IN16 IN15 IN14 IN13 IN12 IN11 IN10 IN9

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

IN8 IN7 IN6 IN5 IN4 IN3 IN2 IN1

bit の値 1:ON(Low レベル) 0:OFF(High レベル)

※IN9~IN16 は、PEX-H530821, H530922, H531021, H531122, H531221 専用です。

CN4 の IN1~IN8 の入力状態に相当します。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

DWORD DI;

Ret = CmlInputDI(DeviceHandle, &DI);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Dim DI As Long

Ret = CmlInputDI(DeviceHandle, DI)

Page 270: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

270

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

DI: DWORD;

Ret := CmlInputDI(DeviceHandle, DI);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

uint DI;

ret = IFCCML_ANY.CmlInputDI(DeviceHandle, out DI);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

Dim DI As Integer

ret = IFCCML_ANY.CmlInputDI(DeviceHandle, DI)

●Delphi 8

var

DeviceHandle: Integer;

ret: Integer;

DI: Cardinal;

ret := IFCCML.CmlInputDI(DeviceHandle, DI);

汎用入力を行ないます。

Page 271: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

271

44. CmlOutputDO

【機能】

汎用出力を行います。

【書式】

●C言語

INT CmlOutputDO (

HANDLE DeviceHandle, // デバイスハンドル

DWORD OutDo // 汎用出力

);

●Visual Basic

Declare Function CmlOutputDO Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal OutDo As Long _ ‘ 汎用出力

)As Long

●Delphi

function CmlOutputDO (

DeviceHandle: THandle; // デバイスハンドル

OutDo: DWORD // 汎用出力

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlOutputDO (

IntPtr DeviceHandle, // デバイスハンドル

uint OutDo // 汎用出力

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlOutputDO (

uint DeviceHandle, // デバイスハンドル

uint OutDo // 汎用出力

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlOutputDO Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal OutDo As Integer _ ‘ 汎用出力

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlOutputDO Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal OutDo As Integer _ ‘ 汎用出力

)As Integer

Page 272: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

272

●Delphi 8

class function CmlOutputDO (

DeviceHandle: Integer; // デバイスハンドル

OutDo: Cardinal // 汎用出力

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

OutDo 汎用出力端子への出力値です。

bit31~bit16

予約

bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8

OUT16 OUT15 OUT14 OUT13 OUT12 OUT11 OUT10 OUT9

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

OUT 8 OUT7 OUT6 OUT5 OUT4 OUT3 OUT2 OUT1

bit の値 1:外部回路 ON(Low レベル) 0:外部回路 OFF(High レベル)

※DOUT9~DOUT16 は、PEX-H530821, H530922, H531021, H531122, H531221 専用です。

CN4 の OUT1~OUT8 に相当します。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

Ret = CmlOutputDO(DeviceHandle, 0x01);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Ret = CmlOutputDO(DeviceHandle, &H01)

Page 273: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

273

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Ret := CmlOutputDO(DeviceHandle, $01);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

uint = IFCCML_ANY.CmlOutputDO(DeviceHandle, 0x01);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

ret = IFCCML_ANY.CmlOutputDO(DeviceHandle, &H01)

●Delphi 8

var

DeviceHandle: Integer;

ret: Integer;

ret := IFCCML.CmlOutputDO(DeviceHandle, $01);

汎用出力を行ないます。

Page 274: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

274

45. CmlConvertImageData

【機能】

指定した形式で画像データを変換します。

【書式】

●C言語

INT CmlConvertImageData (

PVOID SrcPtr, // 変換前画像データ

PVOID DsrPtr, // 変換後画像データ

DWORD Format, // 変換フォーマット

PIFIMGRECT ImageSize // 変換領域

);

●Visual Basic

Declare Function CmlConvertImageData Lib "IFCml.DLL"( _

ByVal SrcPtr As Any, _ ‘ 変換前画像データ

ByRef DstPtr As Any, _ ‘ 変換後画像データ

ByVal Format As Long, _ ‘ 変換フォーマット

ByRef ImageSize As IFCMLRECT _ ‘ 変換領域

)As Long

●Delphi

function CmlConvertImageData (

SrcPtr: Pointer; // 変換前画像データ

DstPtr: Pointer; // 変換後画像データ

Format: DWORD; // 変換フォーマット

var ImageSize: IFCMLRECT // 変換領域

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET

[DllImport("IfCml.dll")]

public static extern int CmlConvertImageData(

byte[] SrcPtr, // 変換前画像データ

byte[] DstPtr, // 変換後画像データ

uint Format, // 変換フォーマット

ref IFCMLRECT ImageSize // 変換領域

);

[DllImport("IfCml.dll")]

public static extern int CmlConvertImageData(

ushort[] SrcPtr, // 変換前画像データ

byte[] DstPtr, // 変換後画像データ

uint Format, // 変換フォーマット

ref IFCMLRECT ImageSize // 変換領域

);

Page 275: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

275

[DllImport("IfCml.dll")]

public static extern int CmlConvertImageData(

uint[] SrcPtr, // 変換前画像データ

byte[] DstPtr, // 変換後画像データ

uint Format, // 変換フォーマット

ref IFCMLRECT ImageSize // 変換領域

);

[DllImport("IfCml.dll")]

public static extern int CmlConvertImageData(

byte[] SrcPtr, // 変換前画像データ

ushort[] DstPtr, // 変換後画像データ

uint Format, // 変換フォーマット

ref IFCMLRECT ImageSize // 変換領域

);

[DllImport("IfCml.dll")]

public static extern int CmlConvertImageData(

ushort[] SrcPtr, // 変換前画像データ

ushort[] DstPtr, // 変換後画像データ

uint Format, // 変換フォーマット

ref IFCMLRECT ImageSize // 変換領域

);

[DllImport("IfCml.dll")]

public static extern int CmlConvertImageData(

uint[] SrcPtr, // 変換前画像データ

ushort[] DstPtr, // 変換後画像データ

uint Format, // 変換フォーマット

ref IFCMLRECT ImageSize // 変換領域

);

[DllImport("IfCml.dll")]

public static extern int CmlConvertImageData(

byte[] SrcPtr, // 変換前画像データ

uint[] DstPtr, // 変換後画像データ

uint Format, // 変換フォーマット

ref IFCMLRECT ImageSize // 変換領域

);

[DllImport("IfCml.dll")]

public static extern int CmlConvertImageData(

ushort[] SrcPtr, // 変換前画像データ

uint[] DstPtr, // 変換後画像データ

uint Format, // 変換フォーマット

ref IFCMLRECT ImageSize // 変換領域

);

Page 276: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

276

[DllImport("IfCml.dll")]

public static extern int CmlConvertImageData(

uint[] SrcPtr, // 変換前画像データ

uint[] DstPtr, // 変換後画像データ

uint Format, // 変換フォーマット

ref IFCMLRECT ImageSize // 変換領域

);

●Visual Basic .NET

Declare Function CmlConvertImageData Lib "IFCml.DLL"( _

ByVal SrcPtr( ) As Byte, _ ‘ 変換前画像データ

ByVal DstPtr( ) As Byte, _ ‘ 変換後画像データ

ByVal Format As Integer, _ ‘ 変換フォーマット

ByRef ImageSize As IFCMLRECT _ ‘ 変換領域

)As Integer

Declare Function CmlConvertImageData Lib "IFCml.DLL"( _

ByVal SrcPtr( ) As Short, _ ‘ 変換前画像データ

ByVal DstPtr( ) As Byte, _ ‘ 変換後画像データ

ByVal Format As Integer, _ ‘ 変換フォーマット

ByRef ImageSize As IFCMLRECT _ ‘ 変換領域

)As Integer

Declare Function CmlConvertImageData Lib "IFCml.DLL"( _

ByVal SrcPtr( ) As Integer, _ ‘ 変換前画像データ

ByVal DstPtr( ) As Byte, _ ‘ 変換後画像データ

ByVal Format As Integer, _ ‘ 変換フォーマット

ByRef ImageSize As IFCMLREC _ ‘ 変換領域

)As Integer

Declare Function CmlConvertImageData Lib "IFCml.DLL"( _

ByVal SrcPtr( ) As Byte, _ ‘ 変換前画像データ

ByVal DstPtr( ) As Short, _ ‘ 変換後画像データ

ByVal Format As Integer, _ ‘ 変換フォーマット

ByRef ImageSize As IFCMLRECT _ ‘ 変換領域

)As Integer

Declare Function CmlConvertImageData Lib "IFCml.DLL"( _

ByVal SrcPtr( ) As Short, _ ‘ 変換前画像データ

ByVal DstPtr( ) As Short, _ ‘ 変換後画像データ

ByVal Format As Integer, _ ‘ 変換フォーマット

ByRef ImageSize As IFCMLRECT _ ‘ 変換領域

)As Integer

Page 277: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

277

Declare Function CmlConvertImageData Lib "IFCml.DLL"( _

ByVal SrcPtr( ) As Integer, _ ‘ 変換前画像データ

ByVal DstPtr( ) As Short, _ ‘ 変換後画像データ

ByVal Format As Integer, _ ‘ 変換フォーマット

ByRef ImageSize As IFCMLRECT _ ‘ 変換領域

)As Integer

Declare Function CmlConvertImageData Lib "IFCml.DLL"( _

ByVal SrcPtr( ) As Byte, _ ‘ 変換前画像データ

ByVal DstPtr( ) As Integer, _ ‘ 変換後画像データ

ByVal Format As Integer, _ ‘ 変換フォーマット

ByRef ImageSize As IFCMLRECT _ ‘ 変換領域

)As Integer

Declare Function CmlConvertImageData Lib "IFCml.DLL"( _

ByVal SrcPtr( ) As Short, _ ‘ 変換前画像データ

ByVal DstPtr( ) As Integer, _ ‘ 変換後画像データ

ByVal Format As Integer, _ ‘ 変換フォーマット

ByRef ImageSize As IFCMLRECT _ ‘ 変換領域

)As Integer

Declare Function CmlConvertImageData Lib "IFCml.DLL"( _

ByVal SrcPtr( ) As Integer, _ ‘ 変換前画像データ

ByVal DstPtr( ) As Integer, _ ‘ 変換後画像データ

ByVal Format As Integer, _ ‘ 変換フォーマット

ByRef ImageSize As IFCMLRECT _ ‘ 変換領域

)As Integer

●Delphi 8

class function CmlConvertImageData (

SrcPtr: array of Byte; // 変換前画像データ

DstPtr: array of Byte; // 変換後画像データ

Format: Cardinal; // 変換フォーマット

var ImageSize: IFCMLRECT // 変換領域

): Integer; static;

class function CmlConvertImageData (

SrcPtr: array of Short; // 変換前画像データ

DstPtr: array of Byte; // 変換後画像データ

Format: Cardinal; // 変換フォーマット

var ImageSize: IFCMLRECT // 変換領域

): Integer; static;

Page 278: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

278

class function CmlConvertImageData (

SrcPtr: array of Integer; // 変換前画像データ

DstPtr: array of Byte; // 変換後画像データ

Format: Cardinal; // 変換フォーマット

var ImageSize: IFCMLRECT // 変換領域

): Integer; static;

class function CmlConvertImageData (

SrcPtr: array of Byte; // 変換前画像データ

DstPtr: array of Short; // 変換後画像データ

Format: Cardinal; // 変換フォーマット

var ImageSize: IFCMLRECT // 変換領域

): Integer; static;

class function CmlConvertImageData (

SrcPtr: array of Short; // 変換前画像データ

DstPtr: array of Short; // 変換後画像データ

Format: Cardinal; // 変換フォーマット

var ImageSize: IFCMLRECT // 変換領域

): Integer; static;

class function CmlConvertImageData (

SrcPtr: array of Integer; // 変換前画像データ

DstPtr: array of Short; // 変換後画像データ

Format: Cardinal; // 変換フォーマット

var ImageSize: IFCMLRECT // 変換領域

): Integer; static;

class function CmlConvertImageData (

SrcPtr: array of Byte; // 変換前画像データ

DstPtr: array of Integer; // 変換後画像データ

Format: Cardinal; // 変換フォーマット

var ImageSize: IFCMLRECT // 変換領域

): Integer; static;

class function CmlConvertImageData (

SrcPtr: array of Short; // 変換前画像データ

DstPtr: array of Integer; // 変換後画像データ

Format: Cardinal; // 変換フォーマット

var ImageSize: IFCMLRECT // 変換領域

): Integer; static;

class function CmlConvertImageData (

SrcPtr: array of Integer; // 変換前画像データ

DstPtr: array of Integer; // 変換後画像データ

Format: Cardinal; // 変換フォーマット

var ImageSize: IFCMLRECT // 変換領域

): Integer; static;

Page 279: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

279

【パラメータ】

SrcPtr 変換前の画像データが格納されたバッファを指すポインタ(参照渡し)を指定します。

DstPtr 変換後の画像データを格納するバッファを指すポインタ(参照渡し)を指定します。

Format 変換するフォーマットを指定します。

識別子 値 内容

IFCML_CNV_BAYER8_RGB24 00000000h R G

G B

Bayer8bit→RGB24bit

IFCML_CNV_BAYER10_RGB30 00000001h R G

G B

Bayer10bit→RGB30bit

IFCML_CNV_BAYER8_GRBG_RGB24 00000002h G R

B G

Bayer8bit→RGB24bit

IFCML_CNV_BAYER10_GRBG_RGB30 00000003h G R

B G

Bayer10bit→RGB30bit

IFCML_CNV_BAYER8_GBRG_RGB24 00000004h G B

R G

Bayer8bit→RGB24bit

IFCML_CNV_BAYER10_GBRG_RGB30 00000005h G B

R G

Bayer10bit→RGB30bit

IFCML_CNV_BAYER8_BGGR_RGB24 00000006h B G

G R

Bayer8bit→RGB24bit

IFCML_CNV_BAYER10_BGGR_RGB30 00000007h B G

G R

Bayer10bit→RGB30bit

ImageSize IFIMGRECT 構造体のポインタ(参照渡し)を指定します。

変換前の画像データの X方向長さと Y方向長さ指定します。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

Page 280: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

280

【備考】

●Bayer 配列画像データから RGB データへの変換

Bayer 配列の画像フォーマットを RGB カラーの形式に変換します。

変換後の画像データのサイズは変換前の画像データ3倍のサイズを用意してください。

画像の変換はソフトウェア(DLL ファイル)内で行っています。

対象となる画素の足りない色情報は周囲の画素の平均値を求めて、R成分、G成分、B成分を決

定しています。

例えば、下図の R11 は、G成分と B成分が足りないので、周囲の画素からの平均値を求めると

G11 = (G12 +G21)/2

B11 = B22

となります。

B22 の場合は

R22 = (R11 +R13+R31+R33)/4

G22 = (G12 +G21+G23+G32)/4

R11 G12

G21 B22

R13

G23

R31 G32 R33

R11 G11 B11 R12 G12 B12 R13 G13 B13

R21 G21 B21 R22 G22 B22 R23 G23 B23

R31 G31 B31 R32 G32 B32 R33 G33 B33

G11 = (G12 +G21)/2B11 = B22

R22 = (R11 +R13+R31+R33)/4G22 = (G12 +G21+G23+G32)/4

変換

変換前(Bayer 配列) 変換後(RGB カラー)

変換前の Bayer 画像の先頭画素は必ず R成分の画素にする必要があります。

Page 281: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

281

【使用例】

●C 言語

INT Ret;

PBYTE BuffPtr_b; // Bayer 配列の画像データ

PBYTE BuffPtr_rgb; // RGB カラーの画像データ

IFCMLRECT Rect;

Rect.XStart = 0; // 開始 x座標 0

Rect.YStart = 0; // 開始 Y座標 0

Rect.XLength = 640; // 水平方向の長さ

Rect.YLength = 480; // 垂直方向の長さ

Ret = CmlConvertImageData(BuffPtr_b, BuffPtr_rgb,IFCML_CNV_BAYER8_RGB24, &Rect);

●Visual Basic

Dim Buff_b() As Byte

Dim Buff_rgb() As Byte

Dim Ret As Integer

Dim Rect As IFCMLRECT

Rect.XStart = 0 ‘ 開始 X座標 0

Rect.YStart = 0 ‘ 開始 Y座標 0

Rect.XLength = 640 ‘ 水平方向の長さ

Rect.YLength = 480 ‘ 垂直方向の長さ

Ret = CmlConvertImageData(Buff_b, Buff_rgb, IFCML_CNV_BAYER8_RGB24, Rect);

●Delphi

var

BuffPtr_b: Pointer;

BuffPtr_rgb: Pointer;

Ret: Integer;

Rect : IFCMLRECT

Rect.XStart := 0; // 開始 X座標 0

Rect.YStart := 0; // 開始 Y座標 0

Rect.XLength := 640; // 水平方向の長さ

Rect.YLength := 480; // 垂直方向の長さ

Ret := CmlConvertImageData(BuffPtr_b, BuffPtr_rgb,IFCML_CNV_BAYER8_RGB24, Rect);

Page 282: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

282

●VISUAL C# .NET

uint ret;

byte BuffPtr_b[]; // Bayer 配列の画像データ

PBYTE BuffPtr_rgb[]; // RGB カラーの画像データ

IFCCML_ANY.IFCMLRECT Rect;

Rect.XStart = 0; // 開始 x座標 0

Rect.YStart = 0; // 開始 Y座標 0

Rect.XLength = 640; // 水平方向の長さ

Rect.YLength = 480; // 垂直方向の長さ

ret = IFCCML_ANY.CmlConvertImageData(BuffPtr_b, BuffPtr_rgb,

IFCCML_ANY.IFCML_CNV_BAYER8_RGB24, ref Rect);

●Visual Basic .NET

Dim ret As Integer

Dim Buff_b() As Byte

Dim Buff_rgb() As Byte

Dim Rect As IFCCML_ANY.IFCMLRECT

Rect.XStart = 0 ‘ 開始 X座標 0

Rect.YStart = 0 ‘ 開始 Y座標 0

Rect.XLength = 640 ‘ 水平方向の長さ

Rect.YLength = 480 ‘ 垂直方向の長さ

ret = IFCCML_ANY.CmlConvertImageData(Buff_b, Buff_rgb, _

IFCCML_ANY.IFCML_CNV_BAYER8_RGB24, Rect)

●Delphi 8

var

ret: Integer;

BuffPtr_b: Pointer;

BuffPtr_rgb: Pointer;

ret: Integer;

Rect : IFCCML.IFCMLRECT;

Rect.XStart := 0; // 開始 X座標 0

Rect.YStart := 0; // 開始 Y座標 0

Rect.XLength := 640; // 水平方向の長さ

Rect.YLength := 480; // 垂直方向の長さ

ret := IFCCML.CmlConvertImageData(BuffPtr_b, BuffPtr_rgb,

IFCCML.IFCML_CNV_BAYER8_RGB24, Rect);

指定された画像のフォーマットを変換します。

Page 283: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

283

46. CmlSetEventCounter

【機能】

CmlSetEventMask関数またはCmlSetEventMaskEx関数で指定するラインカウンタ割り込みの周

期を指定します。

【書式】

●C言語

INT CmlSetEventCounter(

HANDLE DeviceHandle, // デバイスハンドル

DWORD MemType, // 転送先メモリ

DWORD LineCnt // ライン周期

);

●Visual Basic

Declare Function CmlSetEventCounter Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal MemType As Long, _ ‘ 転送先メモリ

ByVal LineCnt As Long _ ‘ ライン周期

)As Long

●Delphi

function CmlSetEventCounter (

DeviceHandle: THandle; // デバイスハンドル

MemType: DWORD; // 転送先メモリ

LineCnt: DWORD // ライン周期

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetEventCounter (

IntPtr DeviceHandle, // デバイスハンドル

uint MemType, // 転送先メモリ

uint LineCnt // ライン周期

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSetEventCounter (

uint DeviceHandle, // デバイスハンドル

uint MemType, // 転送先メモリ

uint LineCnt // ライン周期

);

Page 284: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

284

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlSetEventCounter Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal MemType As Integer, _ ‘ 転送先メモリ

ByVal LineCnt As Integer _ ‘ ライン周期

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlSetEventCounter Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal MemType As Integer, _ ‘ 転送先メモリ

ByVal LineCnt As Integer _ ‘ ライン周期

)As Integer

●Delphi 8

class function CmlSetEventCounter (

DeviceHandle: Integer; // デバイスハンドル

MemType: Cardinal; // 転送先メモリ

LineCnt: Cardinal // ライン周期

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

MemType キャプチャ先メモリ領域を指定します。

PEX-H530821, H530922, H531021, H531122, H531221 は IFCML_MEM_MAINMEMORY のみ指定出

来ます。

識別子 値 内容

IFCML_MEM_MAINMEMORY 00000001h メインメモリ

IFCML_MEM_BOARDMEMORY 00000002h オンボードメモリ

LineCnt ラインカウンタ周期を指定します。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

Page 285: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

285

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

Ret = CmlSetEventCounter(DeviceHandle, IFCML_MEM_MAINMEMORY, 1000);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Ret = CmlSetEventCounter(DeviceHandle, IFCML_MEM_MAINMEMORY, 1000)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Ret := CmlSetEventCounter(DeviceHandle, IFCML_MEM_MAINMEMORY, 1000);

Page 286: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

286

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

Ret = IFCCML_ANY.CmlSetEventCounter(DeviceHandle,

IFCCML_ANY.IFCML_MEM_MAINMEMORY, 1000);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

Ret = IFCCML_ANY.CmlSetEventCounter(DeviceHandle, _

IFCCML_ANY.IFCML_MEM_MAINMEMORY, 1000)

●Delphi 8

var

DeviceHandle: Integer;

ret: Integer;

Ret := IFCCML.CmlSetEventCounter(DeviceHandle, IFCCML.IFCML_MEM_MAINMEMORY, 1000);

メインメモリキャプチャ時に、1000 ラインキャプチャしたら割り込みイベントが発生します。

Page 287: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

287

47. CmlSetTrgCaptureMode

【機能】

汎用カウンタ①による同期キャプチャの動作条件を設定します。

【書式】

●C言語

INT CmlSetTrgCaptureMode(

HANDLE DeviceHandle, // デバイスハンドル

DWORD SelectMemory, // メモリ選択

DWORD CaptureMode, // キャプチャモード

DWORD Reserved // 予約

);

●Visual Basic

Declare Function CmlSetTrgCaptureMode Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal SelectMemory As Long, _ ‘ メモリ選択

ByVal CaptureMode As Long, _ ‘ キャプチャモード

ByVal Reserved As Long _ ‘ 予約

)As Long

●Delphi

function CmlSetTrgCaptureMode(

DeviceHandle: THandle; // デバイスハンドル

SelectMemory: DWORD; // メモリ選択

CaptureMode: DWORD; // キャプチャモード

Reserved: DWORD // 予約

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetTrgCaptureMode (

IntPtr DeviceHandle, // デバイスハンドル

uint SelectMemory, // メモリ選択

uint CaptureMode, // キャプチャモード

uint Reserved // 予約

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSetTrgCaptureMode (

uint DeviceHandle, // デバイスハンドル

uint SelectMemory, // メモリ選択

uint CaptureMode, // キャプチャモード

uint Reserved // 予約

);

Page 288: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

288

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlSetTrgCaptureMode Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal SelectMemory As Integer, _ ‘ メモリ選択

ByVal CaptureMode As Integer, _ ‘ キャプチャモード

ByVal Reserved As Integer _ ‘ 予約

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlSetTrgCaptureMode Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal SelectMemory As Integer, _ ‘ メモリ選択

ByVal CaptureMode As Integer, _ ‘ キャプチャモード

ByVal Reserved As Integer _ ‘ 予約

)As Integer

●Delphi 8

class function CmlSetTrgCaptureMode (

DeviceHandle: Integer; // デバイスハンドル

SekectMemory: Cardinal; // メモリ選択

CaptureMode: Cardinal; // キャプチャモード

Reserved: Cardinal // 予約

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

SelectMemory キャプチャ先メモリ領域を指定します。

PEX-H530821, H530922, H531021, H531122, H531221 は IFCML_MEM_MAINMEMORY のみ指定出

来ます。

識別子 値 内容

IFCML_MEM_MAINMEMORY 00000001h メインメモリ

IFCML_MEM_BOARDMEMORY 00000002h オンボードメモリ

Page 289: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

289

CaptureMode キャプチャの動作モードを指定します。

PEX-H530821, H530922, H531021, H531122, H531221 は、以下の識別子を指定することが出

来ません。

識別子 値 内容

IFCML_CAPMODE_NORMAL 00000000h 汎用カウンタ①が周期に達したら、キャプチャ

を開始する。

IFCML_CAPMODE_ONE 00000001h 汎用カウンタ①の周期毎にキャプチャを行う。

エリアカメラモードの場合は、1 フレームずつ

キャプチャする。

ラインカメラモードの場合は、1 ラインずつキ

ャプチャする。

PEX-H530821, H530922, H531021, H531122, H531221 のみ、以下の識別子を指定することが

出来ます。

識別子 値 内容

IFCML_CAPMODE_COUNTER1

_SYNC

00000000h 汎用カウンタ①が周期に達したら、キャプチャ

を開始する。

IFCML_CAPMODE_COUNTER2

_SYNC

00000002h 汎用カウンタ②が周期に達したら、キャプチャ

を開始する。

IFCML_CAPMODE_COUNTER3

_SYNC

00000003h 汎用カウンタ③周期に達したら、キャプチャを

開始する。

IFCML_CAPMODE_DI_START 00000004h 汎用入力信号のエッジのタイミングでスタート

する。

1CH の場合:IN1

2CH の場合:IN2

Reserved 予約です。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

Ret = CmlSetTrgCaptureMode(DeviceHandle, IFCML_MEM_MAINMEMORY, IFCML_CAPMODE_ONE, 0);

Page 290: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

290

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Ret = CmlSetTrgCaptureMode(DeviceHandle, IFCML_MEM_MAINMEMORY, IFCML_CAPMODE_ONE, 0)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Ret := CmlSetTrgCaptureMode(DeviceHandle, IFCML_MEM_MAINMEMORY, IFCML_CAPMODE_ONE, 0);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

Ret = IFCCML_ANY.CmlSetTrgCaptureMode(DeviceHandle,

IFCCML_ANY.IFCML_MAIN_MEMORY, IFCCML_ANY.IFCML_CAPMODE_ONE,0);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim Ret As Integer

Ret = IFCCML_ANY.CmlSetTrgCaptureMode(DeviceHandle, _

IFCCML_ANY.IFCML_MAIN_MEMORY, IFCCML_ANY.IFCML_CAPMODE_ONE,0)

●Delphi 8

var

DeviceHandle: Integer;

ret: Integer;

Ret := IFCCML.CmlSetTrgCaptureMode(DeviceHandle, _

IFCCML.IFCML_MAIN_MEMORY, IFCCML.IFCML_CAPMODE_ONE,0);

汎用カウンタ周期毎に、メインメモリへ 1フレームキャプチャします。

Page 291: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

291

48. CmlSetEncodeCntMode

【機能】

汎用カウンタをエンコーダカウンタモードに設定した際の、カウント動作を設定します。

【書式】

●C言語

INT CmlSetEncodeCntMode(

HANDLE DeviceHandle, // デバイスハンドル

DWORD Direction, // カウント方向

DWORD Edge, // カウント逓倍

DWORD PulseCntMode // パルスモード

);

●Visual Basic

Declare Function CmlSetEncodeCntMode Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal Direction As Long, _ ‘ カウント方向

ByVal Edge As Long, _ ‘ カウント逓倍

ByVal PulseMode As Long _ ‘ パルスモード

)As Long

●Delphi

function CmlSetEncodeCntMode (

DeviceHandle: THandle; // デバイスハンドル

Direction: DWORD; // カウント方向

Edge: DWORD; // カウント逓倍

PulseMode: DWORD // パルスモード

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetEncodeCntMode (

IntPtr DeviceHandle, // デバイスハンドル

uint Direction, // カウント方向

uint Edge, // カウント逓倍

uint PulseCntMode // パルスモード

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSetEncodeCntMode (

uint DeviceHandle, // デバイスハンドル

uint Direction, // カウント方向

uint Edge, // カウント逓倍

uint PulseCntMode // パルスモード

);

Page 292: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

292

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlSetEncodeCntMode Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal Direction As Integer, _ ‘ カウント方向

ByVal Edge As Integer, _ ‘ カウント逓倍

ByVal PulseMode As Integer _ ‘ パルスモード

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlSetEncodeCntMode Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal Direction As Integer, _ ‘ カウント方向

ByVal Edge As Integer, _ ‘ カウント逓倍

ByVal PulseMode As Integer _ ‘ パルスモード

)As Integer

●Delphi 8

class function CmlSetTrgCaptureMode (

DeviceHandle: Integer; // デバイスハンドル

Direction: Cardinal; // カウント方向

Edge: Cardinal; // カウント逓倍

PulseMode: Cardinal // パルスモード

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

Direction カウント方向を指定します。

識別子 値 内容

IFCML_DIRECTION_NORMAL 00000000h 通常方向

IFCML_DIRECTION_REVERSE 00000001h リバース方向

Edge カウント逓倍を指定します。

識別子 値 内容

IFCML_SINGLE_EDGE 00000000h 1 逓倍

IFCML_DOUBLE_EDGE 00000001h 2 逓倍

IFCML_QUAD_EDGE 00000002h 4 逓倍

Page 293: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

293

PulseMode パルスカウントモードを指定します。

識別子 値 内容

IFCML_SINGLE_PHASE_MODE 00000000h 差動入力方式エンコーダカウンタ

単相パルスカウントモード

IFCML_PHASE_SHIFTED_MODE 00000001h 差動入力方式エンコーダカウンタ

位相差パルスカウントモード

PEX-H530821, H530922, H531021, H531122 ,H531221 のみ、以下の識別子も指定することが

出来ます。

識別子 値 内容

IFCML_SINGLEENDED1_SINGLE_PHASE 00000002h シングルエンド入力方式エンコーダ

カウンタ 1 を単相パルスカウントモ

ードにする。

IFCML_SINGLEENDED1_PHASE_SHIFTED 00000003h シングルエンド入力方式エンコーダ

カウンタ 1 を位相差パルスカウント

モードにする。

IFCML_SINGLEENDED2_SINGLE_PHASE 00000004h シングルエンド入力方式エンコーダ

カウンタ 2 を単相パルスカウントモ

ードにする。

IFCML_SINGLEENDED2_PHASE_SHIFTED 00000005h シングルエンド入力方式エンコーダ

カウンタ 2 を位相差パルスカウント

モードにする。

※PEX-H530922, H531122 の CH1 をオープンした場合、シングルエンド入力方式エンコーダ

2の設定を行う事が出来ません。また、PEX-H530922, H531122 の CH2 をオープンした場合、

シングルエンド入力方式エンコーダ 2の設定を行う事が出来ません。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

Ret = CmlSetEncodeCntMode(DeviceHandle, IFCML_DIRECTION_NORMAL,

IFCML_SINGLE_EDGE, IFCML_SINGLE_PHASE_MODE);

Page 294: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

294

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Ret = CmlSetEncodeCntMode(DeviceHandle, IFCML_DIRECTION_NORMAL, _

IFCML_SINGLE_EDGE, IFCML_SINGLE_PHASE_MODE)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Ret := CmlSetEncodeCntMode(DeviceHandle, IFCML_DIRECTION_NORMAL,

IFCML_SINGLE_EDGE, IFCML_SINGLE_PHASE_MODE);

●VISUAL C# .NET

uint Ret;

IntPtr DeviceHandle;

Ret = IFCCML_ANY.CmlSetEncodeCntMode(DeviceHandle, IFCCML_ANY.IFCML_CNT_UPWARD,

IFCCML_ANY.IFCML_SINGLE_EDGE, IFCCML_ANY.IFCML_SINGLE_PHASE_MODE);

●Visual Basic .NET

Dim DeviceHandle As Long

Dim Ret As Integer

Ret = IFCCML_ANY.CmlSetEncodeCntMode(DeviceHandle, IFCCML_ANY.IFCML_CNT_UPWARD, _

IFCCML_ANY.IFCML_SINGLE_EDGE, IFCCML_ANY.IFCML_SINGLE_PHASE_MODE)

●Delphi 8

var

DeviceHandle: Integer;

Ret: Integer;

Ret := IFCCML.CmlSetEncodeCntMode(DeviceHandle, IFCCML.IFCML_CNT_UPWARD,

IFCCML.IFCML_SINGLE_EDGE, IFCCML.IFCML_SINGLE_PHASE_MODE);

通常方向、1逓倍、位相差パルスカウントモードにセットします。

Page 295: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

295

49. CmlSetCounterStartMode

【機能】

汎用カウンタスタート条件を指定します。

【書式】

●C言語

INT CmlSetCounterStartMode(

HANDLE DeviceHandle, // デバイスハンドル

DWORD CounterNum, // 汎用カウンタ

DWORD StartMode // スタートモード

);

●Visual Basic

Declare Function CmlSetCounterStartMode Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal CounterNum As Long, _ ‘ 汎用カウンタ

ByVal StartMode As Long _ ‘ スタートモード

)As Long

●Delphi

function CmlSetCounterStartMode (

DeviceHandle: THandle; // デバイスハンドル

CounterNum: DWORD; // 汎用カウンタ

StartMode: DWORD // スタートモード

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetCounterStartMode (

IntPtr DeviceHandle, // デバイスハンドル

uint CounterNum, // 汎用カウンタ

uint StartMode // スタートモード

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSetCounterStartMode (

uint DeviceHandle, // デバイスハンドル

uint CounterNum, // 汎用カウンタ

uint StartMode // スタートモード

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlSetCounterStartMode Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal CounterNum As Integer, _ ‘ 汎用カウンタ

ByVal StartMode As Integer, _ ‘ スタートモード

)As Integer

Page 296: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

296

●Visual Basic .NET(x86 専用)

Declare Function CmlSetCounterStartMode Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal CounterNum As Integer, _ ‘ 汎用カウンタ

ByVal StartMode As Integer, _ ‘ スタートモード

)As Integer

●Delphi 8

class function CmlSetCounterStartMode (

DeviceHandle: Integer; // デバイスハンドル

CounterNum: Cardinal; // 汎用カウンタ

StartMode: Cardinal; // スタートモード

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

CounterNum 汎用カウンタを指定します。

識別子 値 内容

IFCML_CNTNUM_1 00000001h 汎用カウンタ①

IFCML_CNTNUM_2 00000002h 汎用カウンタ②

IFCML_CNTNUM_3 00000004h 汎用カウンタ③

StartMode スタートモードを指定します。

PEX-H530821, H530922, H531021, H531122, H531221 で、汎用カウンタにタイマカウンタ

を指定した場合、StartMode の設定を行うことは出来ません。

識別子 値 内容

IFCML_CNT_START_NONE 00000000h 通常カウントモード

IFCML_CNT_START_DIN1 00000001h 汎用入力 IN1 が Low→High へ変化した時

IFCML_CNT_START_ZPHASE 00000002h エンコーダカウントモードのみ有効

Z 相へ 1パルス入力されたらスタートする。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

Ret = CmlSetCounterStartMode(DeviceHandle, IFCML_CNTNUM_1, IFCML_CNT_START_DIN1);

Page 297: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

297

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Ret = CmlSetCounterStartMode(DeviceHandle, IFCML_CNTNUM_1, IFCML_CNT_START_DIN1)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Ret := CmlSetCounterStartMode(DeviceHandle, IFCML_CNTNUM_1, IFCML_CNT_START_DIN1);

●VISUAL C# .NET

uint Ret;

IntPtr DeviceHandle;

Ret = IFCCML_ANY.CmlSetCounterStartMode(DeviceHandle,

IFCCML_ANY.FCML_CNTNUM_1, IFCCML_ANY.IFCML_CNT_START_DIN1);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim Ret As Integer

Ret = IFCCML_ANY.CmlSetCounterStartMode(DeviceHandle,_

IFCCML_ANY.IFCML_CNTNUM_1, IFCCML_ANY.IFCML_CNT_START_DIN1)

●Delphi 8

var

DeviceHandle: Integer;

Ret: Integer;

Ret := IFCCML.CmlSetCounterStartMode(DeviceHandle,

IFCCML.IFCML_CNTNUM_1, IFCCML.IFCML_CNT_START_DIN1);

汎用カウンタ①のスタートモードを外部入力スタートにします。

Page 298: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

298

50. CmlSetDigitalFilter

【機能】

汎用カウンタのエンコーダカウンタモードにおけるデジタルフィルタ設定を行います。

【書式】

●C言語

INT CmlSetDigitalFilter(

HANDLE DeviceHandle, // デバイスハンドル

DWORD BaseClock, // 基準クロック

DWORD Count // カウント数

);

●Visual Basic

Declare Function CmlSetDigitalFilter Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal BaseClock As Long, _ ‘ 基準クロック

ByVal Count As Long _ ‘ カウント数

)As Long

●Delphi

function CmlSetDigitalFilter (

DeviceHandle: THandle; // デバイスハンドル

BaseClock: DWORD; // 基準クロック

Count: DWORD // カウント数

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetDigitalFilter (

IntPtr DeviceHandle, // デバイスハンドル

uint BaseClock, // 基準クロック

uint Count // カウント数

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSetDigitalFilter (

uint DeviceHandle, // デバイスハンドル

uint BaseClock, // 基準クロック

uint Count // カウント数

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlSetDigitalFilter Lib "IFCml.DLL"(_

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal BaseClock As Integer, _ ‘ 基準クロック

ByVal Count As Integer, _ ‘ カウント数

)As Integer

Page 299: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

299

●Visual Basic .NET(x86 専用)

Declare Function CmlSetDigitalFilter Lib "IFCml.DLL"(_

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal BaseClock As Integer, _ ‘ 基準クロック

ByVal Count As Integer, _ ‘ カウント数

)As Integer

●Delphi 8

class function CmlSetDigitalFilter (

DeviceHandle: Integer; // デバイスハンドル

BaseClock: Cardinal; // 基準クロック

Count: Cardinal; // カウント数

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

BaseClock 基準クロックを設定します。

識別子 値 内容

IFCML_CLOCK_100_NANO 00000000h 差動入力方式エンコーダカウンタ

基準クロックを 100ns に設定する。

IFCML_CLOCK_10_MICRO 00000001h 差動入力方式エンコーダカウンタ

基準クロックを 10μs に設定する。

PEX-H530821, H530922, H531021, H531122, H531221 のみ、以下の識別子も指定すること

が出来ます。

識別子 値 内容

IFCML_SINGLEENDED1_CLOC

K_100_NANO

00000002h シングルエンド入力方式エンコーダ

カウンタ 1 の基準クロックを 100ns

に設定する。

IFCML_SINGLEENDED1_CLOC

K_10_MICRO

00000003h シングルエンド入力方式エンコーダ

カウンタ 1 の基準クロックを 10μs

に設定する。

IFCML_SINGLEENDED2_CLOC

K_100_NANO

00000004h シングルエンド入力方式エンコーダ

カウンタ 2 の基準クロックを 100ns

に設定する。

IFCML_SINGLEENDED2_CLOC

K_10_MICRO

00000005h シングルエンド入力方式エンコーダ

カウンタ 2 の基準クロックを 10μs

に設定する。

※PEX-H530922, H531122 の CH1 をオープンした場合、シングルエンド入力方式エンコーダ

2の設定を行う事が出来ません。また、PEX-H530922, H531122 の CH2 をオープンした場合、

シングルエンド入力方式エンコーダ 1の設定を行う事が出来ません。

Page 300: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

300

Count カウント数を指定します。(1~32767)

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

フィルタ時間は以下のように設定されます。

フィルタ時間=カウント数×基準クロックの周期

カウント数:1~32,767

基準クロックの周期: 100ns,10μs

基準クロック

カウント数 100ns 10μs

0 停止 停止

1 100ns 10μs

2 200ns 20μs ・ ・

・ ・

・ ・

32,767 3.2767ms 327.67ms

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

Ret = CmlSetDigitalFilter(DeviceHandle, IFCML_CLOCK_100_NANO, 3);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Ret = CmlSetDigitalFilter(DeviceHandle, IFCML_CLOCK_100_NANO, 3)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Ret := CmlSetDigitalFilter(DeviceHandle, IFCML_CLOCK_100_NANO, 3);

Page 301: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

301

●VISUAL C# .NET

uint Ret;

IntPtr DeviceHandle;

Ret = IFCCML_ANY.CmlSetDigitalFilter(DeviceHandle, IFCCML_ANY.IFCML_CLOCK_100_NANO,

3);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim Ret As Integer

Ret = IFCCML_ANY.CmlSetDigitalFilter(DeviceHandle, IFCCML_ANY.IFCML_CLOCK_100_NANO, 3)

●Delphi 8

var

DeviceHandle: THandle;

Ret: Integer;

Ret := IFCML.CmlSetDigitalFilter(DeviceHandle, IFCCML.IFCML_CLOCK_100_NANO, 3);

デジタルフィルタを 300ns に設定します。

Page 302: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

302

51. CmlSetLVALInterval

【機能】

ラインカメラをエリアカメラモードで使用する場合の設定です。FVAL 信号の Low 期間を設定し

ます。期間はライン数で指定します。指定したライン数のデータはキャプチャする事はできませ

ん。

PEX-H530821, H530922, H531021, H531122, H531221 では使用することが出来ません。

【書式】

●C言語

INT CmlSetLVALInterval (

HANDLE DeviceHandle, // デバイスハンドル

DWORD LineCnt // ライン数

);

●Visual Basic

Declare Function CmlSetLVALInterval Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal LineCnt As Long _ ‘ ライン数

)As Long

●Delphi

function CmlSetLVALInterval (

DeviceHandle: THandle; // デバイスハンドル

LineCnt: DWORD // ライン数

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetLVALInterval (

IntPtr DeviceHandle, // デバイスハンドル

uint LineCnt // ライン数

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSetLVALInterval (

uint DeviceHandle, // デバイスハンドル

uint LineCnt // ライン数

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlSetLVALInterval Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal LineCnt As Integer, _ ‘ ライン数

)As Integer

Page 303: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

303

●Visual Basic .NET(x86 専用)

Declare Function CmlSetLVALInterval Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal LineCnt As Integer, _ ‘ ライン数

)As Integer

●Delphi 8

class function CmlSetLVALInterval (

DeviceHandle: Integer; // デバイスハンドル

LineCnt: Cardinal; // ライン数

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

LineCnt ライン数を設定します。(1~254)

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

Ret = CmlSetLVALInterval(DeviceHandle, 100);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Ret = CmlSetLVALInterval(DeviceHandle, 100)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Ret := CmlSetLVALInterval(DeviceHandle, 100);

Page 304: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

304

●VISUAL C# .NET

uint Ret;

IntPtr DeviceHandle;

Ret = IFCCML_ANY.CmlSetLVALInterval(DeviceHandle, 100);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim Ret As Integer

Ret = IFCCML_ANY.CmlSetLVALInterval(DeviceHandle, 100)

●Delphi 8

var

DeviceHandle: THandle;

Ret: Integer;

Ret := IFCML.CmlSetLVALInterval(DeviceHandle, 100);

FVAL の Low 期間を 100 ラインにセットします。

Page 305: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

305

52. CmlOutputPower

【機能】

カメラへの給電を行います。カメラが PoCL 規格のみ対応しています。

PEX-H530821, H531021 では使用することが出来ません。

【書式】

●C言語

INT CmlOutputPower (

HANDLE DeviceHandle, // デバイスハンドル

DWORD Power // パワーON/OFF

);

●Visual Basic

Declare Function CmlOutputPower Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal Power As Long _ ‘ パワーON/OFF

)As Long

●Delphi

function CmlOutputPower (

DeviceHandle: THandle; // デバイスハンドル

Power: DWORD // パワーON/OFF

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlOutputPower (

IntPtr DeviceHandle, // デバイスハンドル

uint Power // パワーON/OFF

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlOutputPower (

uint DeviceHandle, // デバイスハンドル

uint Power // パワーON/OFF

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlOutputPower Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal Power As Integer, _ ‘ パワーON/OFF

)As Integer

Page 306: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

306

●Visual Basic .NET(x86 専用)

Declare Function CmlOutputPower Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal Power As Integer, _ ‘ パワーON/OFF

)As Integer

●Delphi 8

class function CmlOutputPower (

DeviceHandle: Integer; // デバイスハンドル

Power: Cardinal; // パワーON/OFF

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

Power カメラへの電源 ON/OFF を指定します。

識別子 値 内容

IFCML_PWR_ON 00000001h カメラへ給電する

IFCML_PWR_OFF 00000000h カメラへ給電しない

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

・PEX-H530922, H531122, H531221 で PoCL 対応のカメラに電源を供給した場合、カメラによっ

ては電源が安定するまでに時間がかかる場合があります。

・PEX-H531221 で PoCL 対応のカメラに電源を供給する場合、カメラコンフィグレーションファ

イルの[CamType]CONF パラメータを「0:Base Configuration」に設定してください。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

Ret = CmlOutputPower(DeviceHandle, IFCML_PWR_ON);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Ret = CmlOutputPower(DeviceHandle, IFCML_PWR_ON)

Page 307: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

307

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Ret := CmlOutputPower(DeviceHandle, IFCML_PWR_ON);

●VISUAL C# .NET

uint Ret;

IntPtr DeviceHandle;

Ret = IFCCML_ANY.CmlOutputPower(DeviceHandle, IFCCML_ANY.IFCML_PWR_ON);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim Ret As Integer

Ret = IFCCML_ANY.CmlOutputPower(DeviceHandle, IFCCML_ANY.IFCML_PWR_ON)

●Delphi 8

var

DeviceHandle: THandle;

Ret: Integer;

Ret := IFCML.CmlOutputPower(DeviceHandle, IFCCML.IFCML_PWR_ON);

カメラへ電源を供給します。

Page 308: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

308

53. CmlGetOsArchitecture

【機能】

OS のアーキテクチャ情報を知る事ができます。

【書式】

●C言語

INT CmlGetOsArchitecture (

HANDLE DeviceHandle, // デバイスハンドル

PDWORD Architecture // アーキテクチャ情報

);

●Visual Basic

Declare Function CmlGetOsArchitecture Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByRef Architecture As Long _ ‘ アーキテクチャ情報

)As Long

●Delphi

function CmlGetOsArchitecture (

DeviceHandle: THandle; // デバイスハンドル

var Architecture: DWORD // アーキテクチャ情報

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlGetOsArchitecture (

IntPtr DeviceHandle, // デバイスハンドル

out uint Architecture // アーキテクチャ情報

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlGetOsArchitecture (

uint DeviceHandle, // デバイスハンドル

out uint Architecture // アーキテクチャ情報

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlGetOsArchitecture Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByRef Architecture As Integer _ ‘ アーキテクチャ情報

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlGetOsArchitecture Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByRef Architecture As Integer _ ‘ アーキテクチャ情報

)As Integer

Page 309: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

309

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

Architecture OS 情報を格納する変数のポインタ(参照渡し)を指定します。

識別子 値 内容

IFCML_OS_ARCHITECTURE_x64 00000001h x64 環境

IFCML_OS_ARCHITECTURE_x86 00000002h x86 環境

※Wow64 環境で実行した場合は、x64 環境として取得されます。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

DWORD Architecture;

Ret = CmlGetOsArchitecture(DeviceHandle, &Architecture);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Dim Architecture As Long

Ret = CmlGetOsArchitecture(DeviceHandle, Architecture)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Architecture: DWORD;

Ret := CmlGetOsArchitecture (DeviceHandle, Architecture);

Page 310: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

310

●VISUAL C# .NET

uint Ret;

IntPtr DeviceHandle;

uint Architecture;

Ret = IFCCML_ANY.CmlGetOsArchitecture(DeviceHandle, out Architecture);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim Ret As Integer

Dim Architecture As Integer

Ret = IFCCML_ANY.CmlGetOsArchitecture(DeviceHandle, Architecture)

OS 情報を取得します。

Page 311: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

311

54. CmlSetLut

【機能】

階調変換する為の LUT データを設定します。

PEX-H531021, H531122, H531221 の拡張基板のみ使用することが出来ます。

【書式】

●C言語

INT CmlSetLut(

HANDLE DeviceHandle, // デバイスハンドル

INT Color, // 色情報

DWORD Gradation, // 階調数

PVOID LutArray, // LUT 配列の先頭ポインタ

);

●Visual Basic

Declare Function CmlSetLut Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal Color As Integer, _ ‘ 色情報

ByVal Gradation As Long, _ ‘ 階調数

ByRef LutArray As Any _ ‘ LUT 配列の先頭ポインタ

)As Long

●Delphi

function CmlSetLut (

DeviceHandle: THandle; // デバイスハンドル

Color: Integer; // 色情報

Gradation: DWORD; // 階調数

var LutArray: Pointer // LUT 配列の先頭ポインタ

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetLut (

IntPtr DeviceHandle, // デバイスハンドル

uint Color, // 色情報

uint Gradation, // 階調数

ushort[] LutArray // LUT 配列の先頭ポインタ

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSetLut (

uint DeviceHandle, // デバイスハンドル

uint Color, // 色情報

uint Gradation, // 階調数

ushort[] LutArray // LUT 配列の先頭ポインタ

);

Page 312: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

312

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlSetLut Lib "IFCml.DLL"(_

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal Color As Integer, _ ‘ 色情報

ByVal Gradation As Integer, _ ‘ 階調数

ByVal LutArray() As Short _ ‘ LUT 配列の先頭ポインタ

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlSetLut Lib "IFCml.DLL"(_

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal Color As Integer, _ ‘ 色情報

ByVal Gradation As Integer, _ ‘ 階調数

ByVal LutArray() As Short _ ‘ LUT 配列の先頭ポインタ

)As Integer

●Delphi 8

class function CmlSetLut (

DeviceHandle: Integer; // デバイスハンドル

Color: Cardinal; // 色情報

Gradation: Cardinal; // 階調数

LutArray: array of Word // LUT 配列の先頭ポインタ

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

Color 変換対象の色成分を指定します。

識別子 値 内容

IFCML_INGREDIENT_RED 00000000h RGB カラーの R成分

IFCML_INGREDIENT_GREEN 00000001h RGB カラーの G成分

IFCML_INGREDIENT_BLUE 00000002h RGB カラーの B成分

IFCML_INGREDIENT_GLAY 00000003h モノクロ

Gradation 階調変換前画像データの階調数を指定します。

識別子 値 内容

IFCML_GRADATION_256 00000000h 階調数を 256 階調に設定

IFCML_GRADATION_1024 00000001h 階調数を 1024 階調に設定

IFCML_GRADATION_4096 00000002h 階調数を 4096 階調に設定

LutArray LUT データが格納された配列の先頭ポインタを指定します。

配列は、WORD 型配列を使用してください。

Page 313: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

313

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

PWORD LutArray;

LutArray = (PWORD)malloc(256);

// LutArray 配列に作成した LUT データを格納する

Ret = CmlSetLut(DeviceHandle, IFCML_INGREDIENT_RED, IFCML_GRADATION_256, LutArray);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Dim LutArray () As Short

Redim LutArray(0 To 255)

‘ LutArray 配列に作成した LUT データを格納する

Ret = CmlSetLut(DeviceHandle, IFCML_INGREDIENT_RED, IFCML_GRADATION_256, LutArray)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

BuffPtr: Pointer;

BuffPtr := AllocMem(256*2);

// LutArray 配列に作成した LUT データを格納する

Ret := CmlSetLut(DeviceHandle, IFCML_INGREDIENT_RED, IFCML_GRADATION_256, LutArray);

Page 314: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

314

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

IntPtr LutArray;

int GradationSize;

GradationSize = 256;

LutArray = Marshal.AllocCoTaskMem(GradationSize);

// LutArray 配列に作成した LUT データを格納する

Ret = IFCCML_ANY.CmlSetLut(DeviceHandle,

IFCCML_ANY.IFCML_INGREDIENT_RED, IFCCML_ANY.IFCML_GRADATION_256, LutArray);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

Dim GradationSize As Integer

Dim LutArray () As Short

GradationSize = 256

ReDim LutArray (GradationSize)

‘ LutArray 配列に作成した LUT データを格納する

ret = IFCCML_ANY.CmlSetLut(DeviceHandle, _

IFCCML_ANY.IFCML_INGREDIENT_RED, IFCCML_ANY.IFCML_GRADATION_256, LutArray)

●Delphi 8

var

DeviceHandle: Inetger;

ret: Integer;

GradationSize: Integer;

LutArray: IntPtr;

LutArray:= Marshal.AllocHGlobal(GradationSize);

// LutArray 配列に作成した LUT データを格納する

ret := IFCCML.CmlSetLut(DeviceHandle,

IFCCML.IFCML_INGREDIENT_RED, IFCCML.IFCML_GRADATION_256, LutArray);

色成分を赤、階調数は 256 階調に設定します。

Page 315: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

315

55. CmlSetFilter

【機能】

フィルタ係数を設定します。

PEX-H531021, H531122, H531221 の拡張基板のみ使用することが出来ます。

【書式】

●C言語

INT CmlSetFilter(

HANDLE DeviceHandle, // デバイスハンドル

INT FilterSelect, // フィルタの選択

PIFCMLFILTER Coefficient // IFCMLFILTER 構造体

);

●Visual Basic

Declare Function CmlSetFilter Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal FilterSelect As Integer, _ ‘ フィルタの選択

ByRef Coefficient As IFCMLFILTER _ ‘ IFCMLFILTER 構造体

)As Long

●Delphi

function CmlSetFilter (

DeviceHandle: Thandle; // デバイスハンドル

FilterSelect: Integer; // フィルタの選択

var Coefficient: IFCMLFILTER // IFCMLFILTER 構造体

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86,x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetFilter (

IntPtr DeviceHandle, // デバイスハンドル

int FilterSelect, // フィルタの選択

ref IFCMLCAPFMT Coefficient // IFCMLFILTER 構造体

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSetFilter (

uint DeviceHandle, // デバイスハンドル

int FilterSelect, // フィルタの選択

ref IFCMLCAPFMT Coefficient // IFCMLFILTER 構造体

);

Page 316: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

316

●Visual Basic .NET(x86,x64 共用)

Declare Function CmlSetFilter Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal FilterSelect As Integer, _ ‘ フィルタの選択

ByRef Coefficient As IFCMLFILTER _ ‘ IFCMLFILTER 構造体

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlSetFilter Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal FilterSelect As Integer, _ ‘ フィルタの選択

ByRef Coefficient As IFCMLFILTER _ ‘ IFCMLFILTER 構造体

)As Integer

●Delphi 8

class function CmlSetFilter (

DeviceHandle: Integer; // デバイスハンドル

FilterSelect: Integer; // ハンドル値

var Coefficient: IFCMLFILTER // IFCMLFILTER 構造体

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

FilterSelect フィルタの種類を選択します。

識別子 値 内容

IFCML_SPATIAL_FILTER 0001h 3×3 空間フィルタ

IFCML_EDGE_FILTER 0002h 3×3 差分エッジフィルタ

Coefficient IFCMLFILTER 構造体のポインタ(参照渡し)を指定します。

フィルタ係数を設定します。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

Page 317: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

317

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

IFCMLFILTER Coefficient;

// フィルタ係数設定(ラプラシアンフィルタ)

Coefficient.a = 0;

Coefficient.b = 1;

Coefficient.c = 0;

Coefficient.d = 1;

Coefficient.e = -4;

Coefficient.f = 1;

Coefficient.g = 0;

Coefficient.h = 1;

Coefficient.i = 0;

Ret = CmlSetFilter (DeviceHandle, IFCML_SPATIAL_FILTER, &Coefficient);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Dim Coefficient As IFCMLFILTER

‘ フィルタ係数設定(ラプラシアンフィルタ)

Coefficient.a = 0

Coefficient.b = 1

Coefficient.c = 0

Coefficient.d = 1

Coefficient.e = -4

Coefficient.f = 1

Coefficient.g = 0

Coefficient.h = 1

Coefficient.i = 0

Ret = CmlSetFilter (DeviceHandle, IFCML_SPATIAL_FILTER, Coefficient)

Page 318: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

318

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Coefficient: IFCMLFILTER;

// フィルタ係数設定(ラプラシアンフィルタ)

Coefficient.a := 0;

Coefficient.b := 1;

Coefficient.c := 0;

Coefficient.d := 1;

Coefficient.e := -4;

Coefficient.f := 1;

Coefficient.g := 0;

Coefficient.h := 1;

Coefficient.i := 0;

Ret := CmlSetFilter (DeviceHandle, IFCML_SPATIAL_FILTER, Coefficient);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

IFCCML_ANY.IFCMLFILTER Coefficient;

// フィルタ係数設定(ラプラシアンフィルタ)

Coefficient.a = 0;

Coefficient.b = 1;

Coefficient.c = 0;

Coefficient.d = 1;

Coefficient.e = -4;

Coefficient.f = 1;

Coefficient.g = 0;

Coefficient.h = 1;

Coefficient.i = 0;

ret = IFCCML_ANY.CmlSetFilter (DeviceHandle, IFCCML_ANY.IFCML_SPATIAL_FILTER,

ref Coefficient);

Page 319: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

319

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

Dim Coefficient As IFCCML_ANY.IFCMLFILTER

‘ フィルタ係数設定(ラプラシアンフィルタ)

Coefficient.a = 0

Coefficient.b = 1

Coefficient.c = 0

Coefficient.d = 1

Coefficient.e = -4

Coefficient.f = 1

Coefficient.g = 0

Coefficient.h = 1

Coefficient.i = 0

Ret = IFCCML_ANY.CmlSetFilter(DeviceHandle, IFCCML_ANY.IFCML_SPATIAL_FILTER, _

Coefficient)

●Delphi 8

var

DeviceHandle: Integer;

ret: Integer;

Coefficient: IFCCML.IFCMLFILTER;

// フィルタ係数設定(ラプラシアンフィルタ)

Coefficient.a := 0;

Coefficient.b := 1;

Coefficient.c := 0;

Coefficient.d := 1;

Coefficient.e := -4;

Coefficient.f := 1;

Coefficient.g := 0;

Coefficient.h := 1;

Coefficient.i := 0;

Ret := IFCCML.CmlSetFilter(DeviceHandle, IFCCML.IFCML_SPATIAL_FILTER, Coefficient);

3×3 空間フィルタを選択し、ラプラシアンフィルタを設定する。

Page 320: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

320

56. CmlSetDil_Er

【機能】

膨張・収縮処理の条件を設定します。段数と各段に対する膨張・収縮の選択と近傍の選択します。

PEX-H531021, H531122, H531221 の拡張基板のみ使用することが出来ます。

【書式】

●C言語

INT CmlSetDil_Er(

HANDLE DeviceHandle, // デバイスハンドル

PIFCMLDILATE_ERODE Dilate_Erode // IFCMLDILATE_ERODE 構造体

);

●Visual Basic

Declare Function CmlSetDil_Er Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByRef Dilate_Erode As IFCMLDILATE_ERODE _ ‘ IFCMLDILATE_ERODE構造体

)As Long

●Delphi

function CmlSetDil_Er (

DeviceHandle: Thandle; // デバイスハンドル

var Dilate_Erode: IFCMLDILATE_ERODE // IFCMLDILATE_ERODE 構造体

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86,x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetDil_Er (

IntPtr DeviceHandle, // デバイスハンドル

ref IFCMLDILATE_ERODE Dilate_Erode // IFCMLDILATE_ERODE 構造体

);

●VISUAL C# .NET(x86 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetDil_Er (

uint DeviceHandle, // デバイスハンドル

ref IFCMLDILATE_ERODE Dilate_Erode // IFCMLDILATE_ERODE 構造体

);

●Visual Basic .NET(x86,x64 共用)

Declare Function CmlSetDil_Er Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByRef Dilate_Erode As IFCMLDILATE_ERODE _ ‘ IFCMLDILATE_ERODE構造体

)As Integer

Page 321: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

321

●Visual Basic .NET(x86 専用)

Declare Function CmlSetDil_Er Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByRef Dilate_Erode As IFCMLDILATE_ERODE _ ‘ IFCMLDILATE_ERODE構造体

)As Integer

●Delphi 8

class function CmlSetDil_Er (

DeviceHandle: Integer; // デバイスハンドル

var Dilate_Erode: IFCMLDILATE_ERODE // IFCMLDILATE_ERODE 構造体

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

Dilate_Erode IFCMLDILATE_ERODE 構造体のポインタ(参照渡し)を指定します。

膨張・収縮の条件を設定します。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

膨張・収縮処理を行う場合、ご使用のカメラによって膨張収縮処理の段数が 大数まで使用でき

ないことがあります。カメラに合わせて設定値を変更してください。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

IFCMLDILATE_ERODE Dilate_Erode;

// 膨張・収縮設定

Dilate_Erode.dwStepCnt = 8; // 8 段構成

// 膨張→膨張→膨張→膨張→収縮→収縮→収縮→収縮

Dilate_Erode.dwSelectD_E = 0x0F;

Dilate_Erode.dwNeighborhood = 0x00; // 全段 4連結

Ret = CmlSetDil_Er (DeviceHandle, &Dilate_Erode);

Page 322: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

322

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Dim Dilate_Erode As IFCMLDILATE_ERODE

‘ 膨張・収縮設定

Dilate_Erode.dwStepCnt = 8 ‘ 8 段構成

‘ 膨張→膨張→膨張→膨張→収縮→収縮→収縮→収縮

Dilate_Erode.dwSelectD_E = 0x0F

Dilate_Erode.dwNeighborhood = 0x00 ‘ 全段 4連結

Ret = CmlSetDil_Er (DeviceHandle, Dilate_Erode)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Dilate_Erode: IFCMLDILATE_ERODE;

// 膨張・収縮設定

Dilate_Erode.dwStepCnt := 8; // 8 段構成

// 膨張→膨張→膨張→膨張→収縮→収縮→収縮→収縮

Dilate_Erode.dwSelectD_E := 0x0F;

Dilate_Erode.dwNeighborhood := 0x00; // 全段 4連結

Ret := CmlSetDil_Er (DeviceHandle, Dilate_Erode);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

IFCCML_ANY.IFCMLDILATE_ERODE Dilate_Erode;

// 膨張・収縮設定

Dilate_Erode.dwStepCnt = 8; // 8 段構成

// 膨張→膨張→膨張→膨張→収縮→収縮→収縮→収縮

Dilate_Erode.dwSelectD_E = 0x0F;

Dilate_Erode.dwNeighborhood = 0x00; // 全段 4連結

ret = IFCCML_ANY.CmlSetDil_Er(DeviceHandle, ref Dilate_Erode);

Page 323: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

323

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

Dim Dilate_Erode As IFCCML_ANY.IFCMLDILATE_ERODE

‘ 膨張・収縮設定

Dilate_Erode.dwStepCnt = 8 ‘ 8 段構成

‘ 膨張→膨張→膨張→膨張→収縮→収縮→収縮→収縮

Dilate_Erode.dwSelectD_E = 0x0F

Dilate_Erode.dwNeighborhood = 0x00 ‘ 全段 4連結

ret = CmlSetDil_Er (DeviceHandle, Dilate_Erode)

●Delphi 8

var

DeviceHandle: THandle;

Ret: Integer;

Dilate_Erode: IFCCML.IFCMLDILATE_ERODE;

// 膨張・収縮設定

Dilate_Erode.dwStepCnt := 8; // 8 段構成

// 膨張→膨張→膨張→膨張→収縮→収縮→収縮→収縮

Dilate_Erode.dwSelectD_E := 0x0F;

Dilate_Erode.dwNeighborhood := 0x00; // 全段 4連結

Ret := CmlSetDil_Er(DeviceHandle, Dilate_Erode);

膨張/収縮の設定をします。

Page 324: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

324

57. CmlSetLabelingConfig

【機能】

ラベリング条件の設定を行います。

PEX-H531021, H531122, H531221 の拡張基板のみ使用することが出来ます。

【書式】

●C言語

INT CmlSetLabelingConfig(

HANDLE DeviceHandle, // デバイスハンドル

INT Connection // 近傍の設定

);

●Visual Basic

Declare Function CmlSetLabelingConfig Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal Connection As Integer _ ‘ 近傍の設定

)As Long

●Delphi

function CmlSetLabelingConfig (

DeviceHandle: Thandle; // デバイスハンドル

Connection: Integer // 近傍の設定

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86,x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetLabelingConfig (

IntPtr DeviceHandle, // デバイスハンドル

int Connection // 連結数の設定

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSetLabelingConfig (

uint DeviceHandle, // デバイスハンドル

int Connection // 連結数の設定

);

●Visual Basic .NET(x86,x64 共用)

Declare Function CmlSetLabelingConfig Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal Connection As Integer _ ‘ 連結数の設定

)As Integer

Page 325: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

325

●Visual Basic .NET(x86 共用)

Declare Function CmlSetLabelingConfig Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal Connection As Integer _ ‘ 連結数の設定

)As Integer

●Delphi 8

class function CmlSetLabelingConfig (

DeviceHandle: Integer; // デバイスハンドル

Connection: Integer // 連結数の設定

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

Connection ラベリング処理対象の近傍を設定します。

識別子 値 内容

IFCML_FOUR_CONNECTION 0001h 上下左右 4 画素を処理対象とします

IFCML_EIGHT_CONNECTION 0002h 周囲 8 画素を処理対象とします

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

Ret = CmlSetLabelingConfig(DeviceHandle, IFCML_FOUR_CONNECTION);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Ret = CmlSetLabelingConfig(DeviceHandle, IFCML_FOUR_CONNECTION)

Page 326: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

326

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Ret := CmlSetLabelingConfig(DeviceHandle, IFCML_FOUR_CONNECTION);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

ret = IFCCML_ANY.CmlSetLabelingConfig(DeviceHandle,

IFCCML_ANY.IFCML_FOUR_CONNECTION);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

ret = IFCCML_ANY.CmlSetLabelingConfig(DeviceHandle, _

IFCCML_ANY.IFCML_FOUR_CONNECTION)

●Delphi 8

var

DeviceHandle: Integer;

ret: Integer;

ret := IFCCML.CmlSetLabelingConfig(DeviceHandle,

IFCCML.IFCML_FOUR_CONNECTION);

ラベリング条件を 4連結に設定します。

Page 327: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

327

58. CmlGetLabelingValue

【機能】

指定したフレーム番号のラベリング処理画像に対する、ラベル数、面積値、重心値、フェレ径、

傾き角の情報を取得します。

PEX-H531021, H531122, H531221 の拡張基板のみ使用することが出来ます。

【書式】

●C言語

INT CmlGetLabelingValue(

HANDLE DeviceHandle, // デバイスハンドル

HANDLE MemHandle, // ハンドル値

DWORD FrameNum, // フレーム指定

PIFCMLLBLDATA LabelingValue // ラベリング演算結果

);

●Visual Basic

Declare Function CmlGetLabelingValue Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal MemHandle As Long, _ ‘ ハンドル値

ByVal FrameNum As Long, _ ‘ フレーム指定

ByRef LabelingValue As IFCMLLBLDATA _ ‘ ラベリング演算結果

)As Long

●Delphi

function CmlGetLabelingValue (

DeviceHandle: Thandle; // デバイスハンドル

MemHandle: Thandle; // ハンドル値

FrameNum: DWORD; // フレーム指定

var LabelingValue: IFCMLLBLDATA // ラベリング演算結果

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86,x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlGetLabelingValue (

IntPtr DeviceHandle, // デバイスハンドル

IntPtr MemHandle, // ハンドル値

uint FrameNum, // フレーム指定

out IFCMLLBLDATA LabelingValue // ラベリング演算結果

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlGetLabelingValue (

uint DeviceHandle, // デバイスハンドル

uint MemHandle, // ハンドル値

uint FrameNum, // フレーム指定

out IFCMLLBLDATA LabelingValue // ラベリング演算結果

);

Page 328: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

328

●Visual Basic .NET(x86,x64 共用)

Declare Function CmlGetLabelingValue Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal MemHandle As IntPtr, _ ‘ ハンドル値

ByVal FrameNum As Integer, _ ‘ フレーム指定

ByRef LabelingValue As IFCMLLBLDATA _ ‘ ラベリング演算結果

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlGetLabelingValue Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal MemHandle As Integer, _ ‘ ハンドル値

ByVal FrameNum As Integer, _ ‘ フレーム指定

ByRef LabelingValue As IFCMLLBLDATA _ ‘ ラベリング演算結果

)As Integer

●Delphi 8

function CmlGetLabelingValue (

DeviceHandle: Integer; // デバイスハンドル

MemHandle: Integer; // ハンドル値

FrameNum: Integer; // フレーム指定

var LabelingValue: IFCMLBLDATA // ラベリング演算結果

): Integer; stdcall; external 'IFCml.DLL';

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

MemHandle CmlRegistMemInfo 関数で取得したハンドル値を渡します。

FrameNum データを取得したいフレーム番号を指定します。

LabelingValue IFCMLLBLDATA 構造体のポインタ(参照渡し)を指定します。

ラベリング後の演算結果を取得します。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

Page 329: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

329

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

IFCMLLBLDATA LabelingValue;

Ret = CmlGetLabelingValue(DeviceHandle, MemHandle, 1, &LabelingValue);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Dim LabelingValue As IFCMLLBLDATA

Ret = CmlGetLabelingValue(DeviceHandle, MemHandle, 1, LabelingValue)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

LabelingValue: IFCMLLBLDATA

Ret := CmlGetLabelingValue(DeviceHandle, MemHandle, 1, LabelingValue);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

uint MemHandle;

IFCCML_ANY.IFCMLLBLDATA LabelingValue;

Ret = IFCCML_ANY.CmlGetLabelingValue(DeviceHandle, MemHandle, 1, out LabelingValue);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim MemHandle As Integer

Dim ret As Integer

Dim LabelingValue As IFCCML_ANY.IFCMLLBLDATA

Ret = IFCCML_ANY.CmlGetLabelingValue(DeviceHandle, MemHandle, 1, LabelingValue)

Page 330: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

330

●Delphi 8

var

DeviceHandle: THandle;

MemHandle: THandle;

ret: Integer;

LabelingValue: IFCCML.IFCMLLBLDATA

Ret := CmlGetLabelingValue(DeviceHandle, MemHandle, 1, LabelingValue);

1 フレーム目の画像データから、ラベル数、面積値、重心値、フェレ径、傾き角の情報を取得し

ます。

Page 331: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

331

59. CmlSelectImageProcessing

【機能】

拡張基板で行う画像処理を指定、およびメイン基板へ転送する画像データのフォーマットを指定

します。

PEX-H531021, H531122, H531221 の拡張基板のみ使用することが出来ます。

【書式】

●C言語

INT CmlSelectImageProcessing(

HANDLE DeviceHandle, // デバイスハンドル

PIFCMLPROCESS ImgProcess // IFCMLPROCESS 構造体

);

●Visual Basic

Declare Function CmlSelectImageProcessing Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal ImgProcess As IFCMLPROCESS _ ‘ IFCMLPROCESS 構造体

)As Long

●Delphi

function CmlSelectImageProcessing (

DeviceHandle: Thandle; // デバイスハンドル

var ImgProcess: IFCMLPROCESS // IFCMLPROCESS 構造体

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86,x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSelectImageProcessing(

IntPtr DeviceHandle, // デバイスハンドル

ref IFCMLPROCESS ImgProcess // IFCMLPROCESS 構造体

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSelectImageProcessing (

uint DeviceHandle, // デバイスハンドル

ref IFCMLPROCESS ImgProcess // IFCMLPROCESS 構造体

);

●Visual Basic .NET(x86,x64 共用)

Declare Function CmlSelectImageProcessing Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal ImgProcess As IFCMLPROCESS _ ‘ IFCMLPROCESS 構造体

)As Integer

Page 332: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

332

●Visual Basic .NET(x86 専用)

Declare Function CmlSelectImageProcessing Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal ImgProcess As IFCMLPROCESS _ ‘ IFCMLPROCESS 構造体

)As Integer

●Delphi 8

class function CmlSelectImageProcessing (

DeviceHandle: Integer; // デバイスハンドル

var ImgProcess: IFCMLPROCESS // IFCMLPROCESS 構造体

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

ImgProcess IFCMLPROCESS 構造体のポインタ(参照渡し)を指定します。

拡張基板での画像処理、拡張基板からメイン基板へデータを転送する際のフォーマットを

指定します。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

IFCMLPROCESS ImgProcess;

ImgProcess.ImageData = IFCML_IMAGE_BIN;

ImgProcess.ImageFmt = IFCML_SUBFMT_GRAY8;

Ret = CmlSelectImageProcessing(DeviceHandle, &ImgProcess);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Dim ImgProcess As IFCMLPROCESS

Ret = CmlSelectImageProcessing(DeviceHandle, ImgProcess)

Page 333: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

333

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

ImgProcess: IFCMLPROCESS;

ImgProcess.ImageData := IFCML_IMAGE_BIN;

ImgProcess.ImageFmt := IFCML_SUBFMT_GRAY8;

Ret := CmlSelectImageProcessing(DeviceHandle, ImgProcess);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

IFCCML_ANY.IFCMLPROCESS ImgProcess;

ImgProcess.ImageData = IFCCML_ANY.IFCML_IMAGE_BIN;

ImgProcess.ImageFmt = IFCCML_ANY.IFCML_SUBFMT_GRAY8;

ret = IFCCML_ANY.CmlSelectImageProcessing(DeviceHandle, ref ImgProcess);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

Dim ImgProcess As IFCCML_ANY.IFCMLPROCESS

ImgProcess.ImageData = IFCCML_ANY.IFCML_IMAGE_BIN

ImgProcess.ImageFmt = IFCCML_ANY.IFCML_SUBFMT_GRAY8

ret = IFCCML_ANY.CmlSelectImageProcessing(DeviceHandle, ImgProcess)

●Delphi 8

var

DeviceHandle: Integer;

ret: Integer;

ImageProcess: IFCCML.IFCMLPROCESS;

ImgProcess.ImageData := IFCCML.IFCML_IMAGE_BIN;

ImgProcess.ImageFmt := IFCCML.IFCML_SUBFMT_GRAY8;

ret := IFCCML.CmlSelectImageProcessing(DeviceHandle, ImgProcess);

拡張基板で 2値化処理を行い、メイン基板へモノクロ 8bit で転送します。

Page 334: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

334

60. CmlReadAccess

【機能】

拡張基板のレジスタに対して読み込みを行います。

PEX-H531021, H531122, H531221 の拡張基板のみ使用することが出来ます。

【書式】

●C言語

INT CmlReadAccess(

HANDLE DeviceHandle, // デバイスハンドル

DWORD BaseNo, // ベースアドレス番号

DWORD Offset, // オフセット

PVOID Data, // データ格納変数ポインタ

DWORD Readsize // リードサイズ

);

●Visual Basic

Declare Function CmlReadAccess Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal BaseNo As Long, _ ‘ ベースアドレス番号

ByVal Offset As Long, _ ‘ オフセット

ByRef Data As Long, _ ‘ データ格納変数ポインタ

ByVal Readsize As Long _ ‘ リードサイズ

)As Long

●Delphi

function CmlReadAccess (

DeviceHandle: Thandle; // デバイスハンドル

BaseNo: DWORD; // ベースアドレス番号

Offset: DWORD; // オフセット

var Data: DWORD; // データ格納変数ポインタ

Readsize: DWORD // リードサイズ

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlReadAccess (

IntPtr DeviceHandle, // デバイスハンドル

uint BaseNo, // ベースアドレス番号

uint Offset, // オフセット

out byte Data // データ格納変数ポインタ

uint Readsize, // リードサイズ

);

Page 335: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

335

[DllImport("IfCml.dll")]

public static extern int CmlReadAccess (

IntPtr DeviceHandle, // デバイスハンドル

uint BaseNo, // ベースアドレス番号

uint Offset, // オフセット

out ushort Data // データ格納変数ポインタ

uint Readsize, // リードサイズ

);

[DllImport("IfCml.dll")]

public static extern int CmlReadAccess (

IntPtr DeviceHandle, // デバイスハンドル

uint BaseNo, // ベースアドレス番号

uint Offset, // オフセット

out uint Data // データ格納変数ポインタ

uint Readsize, // リードサイズ

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlReadAccess (

uint DeviceHandle, // デバイスハンドル

uint BaseNo, // ベースアドレス番号

uint Offset, // オフセット

out byte Data // データ格納変数ポインタ

uint Readsize, // リードサイズ

);

[DllImport("IfCml.dll")]

public static extern int CmlReadAccess (

uint DeviceHandle, // デバイスハンドル

uint BaseNo, // ベースアドレス番号

uint Offset, // オフセット

out ushort Data // データ格納変数ポインタ

uint Readsize, // リードサイズ

);

[DllImport("IfCml.dll")]

public static extern int CmlReadAccess (

uint DeviceHandle, // デバイスハンドル

uint BaseNo, // ベースアドレス番号

uint Offset, // オフセット

out uint Data // データ格納変数ポインタ

uint Readsize, // リードサイズ

);

Page 336: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

336

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlReadAccess Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal BaseNo As Integer, _ ‘ ベースアドレス番号

ByVal Offset As Integer, _ ‘ オフセット

ByRef Data As Byte, _ ‘ データ格納変数ポインタ

ByVal Readsize As Integer _ ‘ リードサイズ

)As Integer

Declare Function CmlReadAccess Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal BaseNo As Integer, _ ‘ ベースアドレス番号

ByVal Offset As Integer, _ ‘ オフセット

ByRef Data As Short, _ ‘ データ格納変数ポインタ

ByVal Readsize As Integer _ ‘ リードサイズ

)As Integer

Declare Function CmlReadAccess Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal BaseNo As Integer, _ ‘ ベースアドレス番号

ByVal Offset As Integer, _ ‘ オフセット

ByRef Data As Integer, _ ‘ データ格納変数ポインタ

ByVal Readsize As Integer _ ‘ リードサイズ

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlReadAccess Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal BaseNo As Integer, _ ‘ ベースアドレス番号

ByVal Offset As Integer, _ ‘ オフセット

ByRef Data As Byte, _ ‘ データ格納変数ポインタ

ByVal Readsize As Integer _ ‘ リードサイズ

)As Integer

Declare Function CmlReadAccess Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal BaseNo As Integer, _ ‘ ベースアドレス番号

ByVal Offset As Integer, _ ‘ オフセット

ByRef Data As Short, _ ‘ データ格納変数ポインタ

ByVal Readsize As Integer _ ‘ リードサイズ

)As Integer

Page 337: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

337

Declare Function CmlReadAccess Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal BaseNo As Integer, _ ‘ ベースアドレス番号

ByVal Offset As Integer, _ ‘ オフセット

ByRef Data As Integer, _ ‘ データ格納変数ポインタ

ByVal Readsize As Integer _ ‘ リードサイズ

)As Integer

●Delphi 8

function CmlReadAccess (

DeviceHandle: Integer; // デバイスハンドル

BaseNo: Cardinal; // ベースアドレス番号

Offset: Cardinal; // オフセット

var Data: Byte; // データ格納変数ポインタ

Readsize: Cardinal // リードサイズ

): Integer; stdcall; external 'IFCml.DLL';

function CmlReadAccess (

DeviceHandle: Integer; // デバイスハンドル

BaseNo: Cardinal; // ベースアドレス番号

Offset: Cardinal; // オフセット

var Data: Word; // データ格納変数ポインタ

Readsize: Cardinal // リードサイズ

): Integer; stdcall; external 'IFCml.DLL';

function CmlReadAccess (

DeviceHandle: Integer; // デバイスハンドル

BaseNo: Cardinal; // ベースアドレス番号

Offset: Cardinal; // オフセット

var Data: Cardinal; // データ格納変数ポインタ

Readsize: Cardinal // リードサイズ

): Integer; stdcall; external 'IFCml.DLL';

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

BaseNo 拡張基板制御レジスタが割り当てられているベースアドレスを指定します。

PEX-H531021, H531122, H531221 の拡張基板のベースアドレスは 1となります。

Offset リードするオフセットアドレスをバイト単位で指定します。

Data 読み出したデータを格納する変数へのポインタ(参照渡し)を指定します。

変数は BYTE, WORD, DWORD のいずれかのポインタ(参照渡し)を指定して下さい。

Page 338: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

338

Readsize リードサイズをバイト単位で指定します。

BYTE, WORD, DWORD のいずれかのサイズを指定して下さい。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

パラメータ「Data」と「Readzie」は、サイズを合わせるように設定してください。

BYTE データを読み込みたい場合、Data には BYTE 変数のポインタを、ReadSize には BYTE のサ

イズ(1)を指定して下さい。

また、WORD データを読み込みたい場合、Data には WORD 変数のポインタを、ReadSize には WORD

のサイズ(2)を指定して下さい。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

DWORD Data;

Ret = CmlReadAccess(DeviceHandle, 1, 0x00, &Data, 4);

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Dim Data As Long

Ret = CmlReadAccess(DeviceHandle, 1, &H00, Data, 4)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Data: DWORD;

Ret := CmlReadAccess(DeviceHandle, 1, $00, Data, 4);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

uint Data;

ret = IFCCML_ANY.CmlReadAccess(DeviceHandle, 1, 0x00, out Data, 4);

Page 339: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

339

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

Dim Data As Integer

ret = IFCCML_ANY.CmlReadAccess(DeviceHandle, 1, &H00, Data, 4)

●Delphi 8

var

DeviceHandle: Inetger;

ret: Integer;

Data: Integer;

Ret := CmlReadAccess(DeviceHandle, 1, $00, Data, 4);

ベースアドレス 1のオフセット 0を、4byte 読み込みます。

Page 340: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

340

61. CmlWriteAccess

【機能】

拡張基板のレジスタに対して書き込みを行います。

PEX-H531021, H531122, H531221 の拡張基板のみ使用することが出来ます。

【書式】

●C言語

INT CmlWriteAccess(

HANDLE DeviceHandle, // デバイスハンドル

DWORD BaseNo, // ベースアドレス番号

DWORD Offset, // オフセット

PVOID Data, // データ格納変数ポインタ

DWORD Writesize // ライトサイズ

);

●Visual Basic

Declare Function CmlWriteAccess Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal BaseNo As Long, _ ‘ ベースアドレス番号

ByVal Offset As Long, _ ‘ オフセット

ByRef Data As Long, _ ‘ データ格納変数ポインタ

ByVal Writesize As Long _ ‘ ライトサイズ

)As Long

●Delphi

function CmlWriteAccess (

DeviceHandle: THandle; // デバイスハンドル

BaseNo: DWORD; // ベースアドレス番号

Offset: DWORD; // オフセット

var Data: DWORD; // データ格納変数ポインタ

Writesize: DWORD // ライトサイズ

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlWriteAccess (

IntPtr DeviceHandle, // デバイスハンドル

uint BaseNo, // ベースアドレス番号

uint Offset, // オフセット

ref Byte Data, // データ格納変数ポインタ

uint Writesize // ライトサイズ

);

Page 341: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

341

[DllImport("IfCml.dll")]

public static extern int CmlWriteAccess (

IntPtr DeviceHandle, // デバイスハンドル

uint BaseNo, // ベースアドレス番号

uint Offset, // オフセット

ref ushort Data, // データ格納変数ポインタ

uint Writesize // ライトサイズ

);

[DllImport("IfCml.dll")]

public static extern int CmlWriteAccess (

IntPtr DeviceHandle, // デバイスハンドル

uint BaseNo, // ベースアドレス番号

uint Offset, // オフセット

ref uint Data, // データ格納変数ポインタ

uint Writesize // ライトサイズ

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlWriteAccess (

uint DeviceHandle, // デバイスハンドル

uint BaseNo, // ベースアドレス番号

uint Offset, // オフセット

ref Byte Data, // データ格納変数ポインタ

uint Writesize // ライトサイズ

);

[DllImport("IfCml.dll")]

public static extern int CmlWriteAccess (

uint DeviceHandle, // デバイスハンドル

uint BaseNo, // ベースアドレス番号

uint Offset, // オフセット

ref ushort Data, // データ格納変数ポインタ

uint Writesize // ライトサイズ

);

[DllImport("IfCml.dll")]

public static extern int CmlWriteAccess (

uint DeviceHandle, // デバイスハンドル

uint BaseNo, // ベースアドレス番号

uint Offset, // オフセット

ref uint Data, // データ格納変数ポインタ

uint Writesize // ライトサイズ

);

Page 342: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

342

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlWriteAccess Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal BaseNo As Integer, _ ‘ ベースアドレス番号

ByVal Offset As Integer, _ ‘ オフセット

ByRef Data As Byte, _ ‘ データ格納変数ポインタ

ByVal Writesize As Integer _ ‘ リードサイズ

)As Integer

Declare Function CmlWriteAccess Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal BaseNo As Integer, _ ‘ ベースアドレス番号

ByVal Offset As Integer, _ ‘ オフセット

ByRef Data As Short, _ ‘ データ格納変数ポインタ

ByVal Writesize As Integer _ ‘ リードサイズ

)As Integer

Declare Function CmlWriteAccess Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal BaseNo As Integer, _ ‘ ベースアドレス番号

ByVal Offset As Integer, _ ‘ オフセット

ByRef Data As Integer, _ ‘ データ格納変数ポインタ

ByVal Writesize As Integer _ ‘ リードサイズ

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlWriteAccess Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal BaseNo As Integer, _ ‘ ベースアドレス番号

ByVal Offset As Integer, _ ‘ オフセット

ByRef Data As Byte, _ ‘ データ格納変数ポインタ

ByVal Writesize As Integer _ ‘ リードサイズ

)As Integer

Declare Function CmlWriteAccess Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal BaseNo As Integer, _ ‘ ベースアドレス番号

ByVal Offset As Integer, _ ‘ オフセット

ByRef Data As Short, _ ‘ データ格納変数ポインタ

ByVal Writesize As Integer _ ‘ リードサイズ

)As Integer

Page 343: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

343

Declare Function CmlWriteAccess Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal BaseNo As Integer, _ ‘ ベースアドレス番号

ByVal Offset As Integer, _ ‘ オフセット

ByRef Data As Integer, _ ‘ データ格納変数ポインタ

ByVal Writesize As Integer _ ‘ リードサイズ

)As Integer

●Delphi 8

function CmlReadAccess (

DeviceHandle: Integer; // デバイスハンドル

BaseNo: Cardinal; // ベースアドレス番号

Offset: Cardinal; // オフセット

var Data: Byte; // データ格納変数ポインタ

Writesize: Cardinal // リードサイズ

): Integer; stdcall; external 'IFCml.DLL';

function CmlReadAccess (

DeviceHandle: Integer; // デバイスハンドル

BaseNo: Cardinal; // ベースアドレス番号

Offset: Cardinal; // オフセット

var Data: Word; // データ格納変数ポインタ

Writesize: Cardinal // リードサイズ

): Integer; stdcall; external 'IFCml.DLL';

function CmlReadAccess (

DeviceHandle: Integer; // デバイスハンドル

BaseNo: Cardinal; // ベースアドレス番号

Offset: Cardinal; // オフセット

var Data: Cardinal; // データ格納変数ポインタ

Writesize: Cardinal // リードサイズ

): Integer; stdcall; external 'IFCml.DLL';

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

BaseNo 拡張基板制御レジスタが割り当てられているベースアドレスを指定します。

PEX-H531021, H531122, H531221 の拡張基板のベースアドレスは 1となります。

Offset ライトするオフセットアドレスをバイト単位で指定します。

Data ライトデータが格納されたメモリ領域の先頭アドレスを指定します。変数は BYTE, WORD,

DWORD のいずれかのポインタ(参照渡し)をして下さい。

Page 344: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

344

Writesize ライトサイズをバイト単位で指定します。BYTE, WORD, DWORD 単位で指定してください。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

パラメータ「Data」と「Writezie」は、サイズを合わせるように設定してください。

BYTE データを書き込みたい場合、Data には BYTE 変数のポインタを、WriteSize には BYTE のサ

イズ(1)を指定して下さい。

また、WORD データを書き込みたい場合、Data には WORD 変数のポインタを、WriteSize には WORD

のサイズ(2)を指定して下さい。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

DWORD Data;

Data = 0x12345678;

Ret = CmlWriteAccess(DeviceHandle, 1, 0x00, &Data, sizeof(DWORD));

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Dim Data As Long

Data = &H12345678

Ret = CmlWriteAccess(DeviceHandle, 1, &H00, Data, 4)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

Data: DWORD;

Data := $12345678;

Ret := CmlWriteAccess(DeviceHandle, 1, $00, Data, 4);

Page 345: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

345

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

uint Data;

Data = 0x12345678;

ret = IFCCML_ANY.CmlReadAccess(DeviceHandle, 1, 0x00, ref Data, 4);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

Dim Data As Integer

Data = &H12345678

ret = IFCCML_ANY.CmlReadAccess(DeviceHandle, 1, &H00, Data, 4)

●Delphi 8

var

DeviceHandle: Inetger;

ret: Integer;

Data: Integer;

Data := $12345678;

Ret := CmlReadAccess(DeviceHandle, 1, $00, Data, 4);

ベースアドレス 1のオフセット 0に、12345678h を書き込みます。

Page 346: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

346

62. CmlStartTransferData

【機能】

拡張基板メモリに対してデータ書き込み/読み込みを行います。

本関数はデータ転送要求後、非同期でデータ転送を行ないます。データ転送完了は

CmlGetTransferStatus 関数、または転送完了割り込みにてご確認ください。

PEX-H531221 のみ使用することが出来ます。

【書式】

●C言語

INT CmlStartTransferData(

HANDLE DeviceHandle, // デバイスハンドル

DWORD AccessMode, // アクセス方法

DWORD Offset, // オフセット

HANDLE MemHandle, // ハンドル値

DWORD DataSize // 転送するサイズ

);

●Visual Basic

Declare Function CmlStartTransferData Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal AccessMode As Long, _ ‘ アクセス方法

ByVal Offset As Long, _ ‘ オフセット

ByVal MemHandle As Long, _ ‘ ハンドル値

ByVal DataSize As Long _ ‘ 転送するサイズ

)As Long

●Delphi

function CmlStartTransferData(

DeviceHandle: THandle; // デバイスハンドル

AccessMode: DWORD; // アクセス方法

Offset: DWORD; // オフセット

MemHandle: THandle; // ハンドル値

DataSize: DWORD // 転送するサイズ

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86,x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlStartTransferData (

IntPtr DeviceHandle, // デバイスハンドル

uint AccessMode, // アクセス方法

uint Offset, // オフセット

IntPtr MemHandle, // ハンドル値

uint DataSize // 転送するサイズ

);

Page 347: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

347

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlStartTransferData (

uint DeviceHandle, // デバイスハンドル

uint AccessMode, // アクセス方法

uint Offset, // オフセット

uint MemHandle, // ハンドル値

uint DataSize // 転送するサイズ

);

●Visual Basic .NET(x86,x64 共用)

Declare Function CmlStartTransferData Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal AccessMode As Integer, _ ‘ アクセス方法

ByVal Offset As Integer, _ ‘ オフセット

ByVal MemHandle As IntPtr, _ ‘ ハンドル値

ByVal DataSize As Integer, _ ‘ 転送するサイズ

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlStartTransferData Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal AccessMode As Integer, _ ‘ アクセス方法

ByVal Offset As Integer, _ ‘ オフセット

ByVal MemHandle As Integer, _ ‘ ハンドル値

ByVal DataSize As Integer, _ ‘ 転送するサイズ

)As Integer

●Delphi 8

class function CmlStartTransferData (

DeviceHandle: Integer; // デバイスハンドル

AccessMode: Cardinal; // アクセス方法

Offset: Cardinal; // オフセット

MemHandle: Integer; // ハンドル値

DataSize: Cardinal; // 転送するサイズ

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

AccessMode 拡張基板メモリに対するアクセス方法を指定します。

識別子 値 内容

IFCML_WRITE_LINE 00000000h Write Line を使用して Write アクセスを行います。

IFCML_READ_LINE1 00000001h ReadLine1 を使用して Read アクセスを行います。

IFCML_READ_LINE2 00000002h ReadLine2 を使用して Read アクセスを行います。

Page 348: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

348

Offset 拡張基板メモリのオフセットアドレスを指定します。

指定できるオフセットの範囲は 0~1FFFFF00h となります。また、オフセットは Byte 単位

かつ、8の倍数で指定して下さい。

MemHandle CmlRegistMemInfo 関数で取得したハンドル値を渡します。

指定するハンドルは、CmlRegistMemInfo 関数の「BuffPtr」引数に対してユーザアプリケー

ション上のバッファ、もしくはコンピュータのメインメモリを指定したハンドルを使用し

てください。

また、「BuffSize」は、拡張基板より転送されるデータサイズ、もしくは拡張基板へ転送す

るデータサイズ指定して下さい。

DataSize 拡張基板メモリへ または 拡張基板メモリから転送するデータサイズを指定します。拡張

基板メモリに対して Write する場合は、転送するデータのサイズを、拡張基板メモリに対

して Read する場合は、拡張基板メモリ上のデータのサイズを指定して下さい。

指定できるサイズの範囲は 100h~20000000h となります。また、サイズは Byte 単位かつ、

8の倍数で指定して下さい。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

Page 349: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

349

【注意事項】

・アドレスとオフセットの指定できる範囲

拡張基板メモリに Read/Write を行なう場合、「Offset」引数と「DataSize」引数を足した値

が 20000000h を超えないように指定して下さい。

以下の図のように、オフセット5000hに対してデータサイズ1000hでアクセスを行なう場合、

データの Read/Write を行なう事が出来ますが、オフセット 1FFF0000h に対してデータサイズ

100000h のアクセスを行なう場合、メモリの範囲を超えてしまうので Read/Write を行う事が

出来ません。

拡張基板

メモリ(512MB)

1FFFFFFFh

0h

開始オフセット

5000h

データサイズ

1000h

開始オフセットからのデータ転送サイ

ズの合計が 20000000h を超えていない

のでこの領域に対してはアクセスする

ことが出来ます。

1FFFFFFFh

0h

開始オフセットからのデータ転送サイ

ズの合計が 20000000h を超えてしまう

ので、この領域に対してアクセスする

ことが出来ません。

拡張基板

メモリ(512MB)

開始オフセット

1FFF0000h

データサイズ

100000h

200F0000h

Page 350: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

350

・転送されるデータサイズについて

以下の図のように拡張基板メモリから、RGB24bit、640*480 画素の画像データを、2値化処理

を行ってメインメモリへ転送する処理を行ないます。

拡張基板メモリから転送するデータサイズは 640 * 480 * 3Byte となり、「DataSize」引数に

は 921600Byte を指定します。この指定した画像データに対して 2値化処理を行なうため、メ

インメモリに転送されるサイズは 640 * 480Byte となり、拡張基板で指定したデータサイズ

より少なくなってしまいます。

よって、「MemHandle」を取得するためのに実行する、CmlRegistMemInfo 関数の「BuffSize」

には 640*480 を指定する必要がります。

逆に、画像処理を行なわず、付加データとして射影データを指定した場合は、拡張基板メモ

リに指定するデータサイズよりも、転送されるデータサイズは射影データのサイズ分、多く

なってしまいます。

拡張基板メモリメイン基板 拡張基板

経路②

ReadLine1

メインメモリサイズは

640*480Byte を設定しなければならない。

画像処理 IP

RGB24bit

640*480 画素の

画像データ

(640*480*3Byte)

2 値化処理

モノクロ 8bit640*480 画素の

画像データ

(640*480Byte )

メインメモリ

このように、拡張基板メモリに対して指定するデータサイズと、メインメモリに対して転

送されるデータサイズが異なる場合があるため、CmlRegistMemInfo 関数でメモリのサイズ

を指定する場合は必ず転送されるサイズ分のメモリサイズを確保してください。

Page 351: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

351

【使用例】

●C言語(x86 の場合)

INT Ret;

HANDLE DeviceHandle;

PBYTE BuffPtr;

DWORD BuffSize;

DWORD DataSize;

HANDLE MemHandle_Read1;

// ハンドルは「IFIMGCMLx」を指定します。

DeviceHandle = CmlOpen(“IFIMGCML1”); :

// 8Kbyte のバッファ(ユーザアプリケーション上のバッファ)

BuffSize = 0x2000;

BuffPtr = malloc(BuffSize);

Ret = CmlRegistMemInfo(DeviceHandle, BuffPtr, BuffSize, &MemHandle_Read1);

DataSize = BuffSize;

Ret = CmlStartTransferData(DeviceHandle, IFCML_READ_LINE1,

0x00, &MemHandle_Read1, DataSize);

●C 言語(x64 の場合)

INT Ret;

HANDLE DeviceHandle;

PBYTE BuffPtr;

DWORD BuffSize;

HANDLE MemHandle_Read1;

// ハンドルは「IFIMGCMLx」を指定します。

DeviceHandle = CmlOpen(“IFIMGCML1”); :

// 8Kbyte のバッファ(コンピュータのメインメモリ)

BuffSize = 0x2000;

Ret = CmlRegistMemInfo(DeviceHandle, (PVOID)-1, BuffSize, &MemHandle_Read1);

DataSize = BuffSize;

Ret = CmlStartTransferData(DeviceHandle, IFCML_READ_LINE1,

0x00, &MemHandle_Read1, DataSize);

Page 352: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

352

●Visual Basic(x86 の場合)

Dim Name As String

Dim DeviceHandle As Long

Dim Buff() As Byte

Dim BuffSize As Long

Dim DataSize As Long

Dim MemHandle_Read1 As Long

Dim Ret As Integer

‘ ハンドルは「IFIMGCMLx」を指定します。

Name = "IFIMGCML1"

DeviceHandle = CmlOpen(Name)

‘ 8Kbyte のバッファ(ユーザアプリケーション上のバッファ)

BuffSize = &H2000

Redim Buff(0 To BuffSize-1)

Ret = CmlRegistMemInfo(DeviceHandle, Buff(0), BuffSize, MemHandle_Read1)

DataSize = BuffSize

Ret = CmlStartTransferData(DeviceHandle, IFCML_READ_LINE1, _

&H00, MemHandle_Read1, DataSize)

●Visual Basic(x64 の場合)

Dim Name As String

Dim DeviceHandle As Long

Dim BuffSize As Long

Dim DataSize As Long

Dim MemHandle_Read1 As Long

Dim Ret As Integer

‘ ハンドルは「IFIMGCMLx」を指定します。

Name = "IFIMGCML1"

DeviceHandle = CmlOpen(Name)

‘ 8Kbyte のバッファ(コンピュータのメインメモリ)

BuffSize = &H2000

Ret = CmlRegistMemInfo(DeviceHandle, ByVal -1, BuffSize, MemHandle_Read1)

DataSize = BuffSize

Ret = CmlStartTransferData(DeviceHandle, IFCML_READ_LINE1, _

&H00, MemHandle_Read1, DataSize)

Page 353: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

353

●Delphi(x86 の場合)

var

Name: String;

DeviceHandle: THandle;

BuffPtr: Pointer;

Ret: Integer;

BuffSize: DWORD;

DataSize: DWORD;

MemHandle_Read1: THandle;

// ハンドルは「IFIMGCMLx」を指定する。

Name := 'IFIMGCML1';

DeviceHandle := CmlOpen(Name);

// 8Kbyte のバッファ(ユーザアプリケーション上のバッファ)

BuffSize := $2000;

BuffPtr := AllocMem(BuffSize);

Ret := CmlRegistMemInfo(DeviceHandle, BuffPtr, BuffSize, MemHandle_Read1);

DataSize := BuffSize;

Ret = CmlStartTransferData(DeviceHandle, IFCML_READ_LINE1,

$00, MemHandle_Read1, DataSize);

●Delphi(x64 の場合)

var

Name: String;

DeviceHandle: THandle;

Ret: Integer;

BuffSize: DWORD;

DataSize: DWORD;

MemHandle_Read1: THandle;

// ハンドルは「IFIMGCMLx」を指定する。

Name := 'IFIMGCML1';

DeviceHandle := CmlOpen(Name);

// 8Kbyte のバッファ(コンピュータのメインメモリ)

BuffSize := $2000;

Ret := CmlRegistMemInfo(DeviceHandle, Pointer(-1), BuffSize, MemHandle_Read1);

DataSize := BuffSize;

Ret = CmlStartTransferData(DeviceHandle, IFCML_READ_LINE1,

$00, MemHandle_Read1, DataSize);

Page 354: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

354

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

IntPtr MemHandle_Read1;

IntPtr BuffPtr;

uint DataSize;

// 8Kbyte のバッファ(ユーザアプリケーション上のバッファ) BuffSize = 0x2000;

BuffPtr = Marshal.AllocCoTaskMem((int)BuffSize);

ret = IFCCML_ANY.CmlRegistMemInfo(hDeviceHandle, BuffPtr,

BuffSize, out MemHandle_Read1);

DataSize = BuffSize

ret = IFCCML_ANY.CmlStartTransferData(DeviceHandle, IFCCML_ANY.IFCML_READ_LINE1,

0x00, ref MemHandle_Read1, DataSize);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim Buff() As Byte

Dim BuffSize As Integer

Dim MemHandle_Read1 As IntPtr

Dim DataSize As Integer

Dim ret As Integer

‘ 8Kbyte のバッファ(ユーザアプリケーション上のバッファ)

BuffSize = &H2000

ReDim Buff (BuffSize)

ret = IFCCML_ANY.CmlRegistMemInfo(DeviceHandle, Buff(0), BuffSize, MemHandle_Read1)

DataSize = BuffSize

ret = IFCCML_ANY.CmlStartTransferData(DeviceHandle, IFCCML_ANY.IFCML_READ_LINE1, _

&H00, MemHandle_Read1, DataSize)

Page 355: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

355

●Delphi 8

var

DeviceHandle: Integer;

MemHandle_Read1: Integer;

BuffPtr: IntPtr;

BuffSize: Cardinal;

DataSize: Cardinal;

ret: Integer;

// 8Kbyte のバッファ(ユーザアプリケーション上のバッファ)

BuffSize := FmtInfo.FrameSize_Buf *10;

BuffPtr := Marshal.AllocHGlobal(BuffSize);

ret := IFCCML.CmlRegistMemInfo(DeviceHandle, BuffPtr, BuffSize, MemHandle_Read1);

DataSize := BuffSize;

Ret = IFCCML.CmlStartTransferData(DeviceHandle, IFCCML.FCML_READ_LINE1,

$00, MemHandle_Read1, DataSize);

拡張基板メモリの 0h から 8kByte メインメモリに対してデータを転送します。

Page 356: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

356

63. CmlGetTransferStatus

【機能】

拡張基板メモリに対するデータ書き込み/読み込みのステータスを取得します。

PEX-H531221 のみ使用することが出来ます。

【書式】

●C言語

INT CmlGetTransferStatus(

HANDLE DeviceHandle, // デバイスハンドル

DWORD GetMode, // 取得するステータス

PDWORD TransferCount, // データ格納変数ポインタ

PDWORD TransferStatus // 各経路の転送状態

);

●Visual Basic

Declare Function CmlGetTransferStatus Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByVal GetMode As Long, _ ‘ 取得するステータス

ByRef TransferCount As Long, _ ‘ データ格納変数ポインタ

ByRef TransferStatus As Long _ ‘ 各経路の転送状態

)As Long

●Delphi

function CmlGetTransferStatus(

DeviceHandle: THandle; // デバイスハンドル

GetMode: DWORD; // 取得するステータス

var TransferCount: DWORD; // データ格納変数ポインタ

var TransferStatus: DWORD // 各経路の転送状態

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86,x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlGetTransferStatus (

IntPtr DeviceHandle, // デバイスハンドル

uint GetMode, // 取得するステータス

out uint TransferCount, // データ格納変数ポインタ

out uint TransferStatus // 各経路の転送状態

);

[DllImport("IfCml.dll")]

public static extern int CmlGetTransferStatus (

IntPtr DeviceHandle, // デバイスハンドル

uint GetMode, // 取得するステータス

out uint TransferCount, // データ格納変数ポインタ

uint[] TransferStatus // 各経路の転送状態

);

Page 357: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

357

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlGetTransferStatus (

uint DeviceHandle, // デバイスハンドル

uint GetMode, // 取得するステータス

out uint TransferCount, // データ格納変数ポインタ

out uint TransferStatus // 各経路の転送状態

);

[DllImport("IfCml.dll")]

public static extern int CmlGetTransferStatus (

uint DeviceHandle, // デバイスハンドル

uint GetMode, // 取得するステータス

out uint TransferCount, // データ格納変数ポインタ

uint[] TransferStatus // 各経路の転送状態

);

●Visual Basic .NET(x86,x64 共用)

Declare Function CmlGetTransferStatus Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal GetMode As Integer, _ ‘ 取得するステータス

ByRef TransferCount As Integer, _ ‘ データ格納変数ポインタ

ByRef TransferStatus As Integer, _ ‘ 各経路の転送状態

)As Integer

Declare Function CmlGetTransferStatus Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByVal GetMode As Integer, _ ‘ 取得するステータス

ByRef TransferCount As Integer, _ ‘ データ格納変数ポインタ

ByVal TransferStatus() As Integer, _ ‘ 各経路の転送状態

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function CmlGetTransferStatus Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal GetMode As Integer, _ ‘ 取得するステータス

ByRef TransferCount As Integer, _ ‘ データ格納変数ポインタ

ByRef TransferStatus As Integer, _ ‘ 各経路の転送状態

)As Integer

Declare Function CmlGetTransferStatus Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByVal GetMode As Integer, _ ‘ 取得するステータス

ByRef TransferCount As Integer, _ ‘ データ格納変数ポインタ

ByVal TransferStatus() As Integer, _ ‘ 各経路の転送状態

)As Integer

Page 358: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

358

●Delphi 8

class function CmlGetTransferStatus(

DeviceHandle: Cardinal; // デバイスハンドル

GetMode: Cardinal; // 取得するステータス

var TransferCount: Cardinal; // データ格納変数ポインタ

var TransferStatus: Cardinal; // 各経路の転送状態

): Integer; static;

class function CmlGetTransferStatus(

DeviceHandle: Cardinal; // デバイスハンドル

GetMode: Cardinal; // 取得するステータス

var TransferCount: Cardinal; // データ格納変数ポインタ

ransferStatus: array of Cardinal; // 各経路の転送状態

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

GetMode

拡張基板メモリに対するアクセス方法を指定します。

識別子 値 内容

IFCML_WRITE_LINE 00000000h WriteLine の情報を取得します。

IFCML_READ_LINE1 00000001h ReadLine1 の情報を取得します。

IFCML_READ_LINE2 00000002h ReadLine2 の情報を取得します。

IFCML_ALL_LINE 00000003h 上記全ての情報を取得します。

TransferCount 指定された経路の DMA 転送サイズを Byte 単位で取得します。

GetMode が IFCML_ALL_LINE 以外の場合

データを格納するための変数のポインタを指定して下さい。

GetMode が IFCML_ALL_LINE の場合

配列の先頭ポインタを指定して下さい。WriteLine, ReadLine1, ReadLine2,の順番で配

列内にデータが格納されます。

TransferStatus 指定された経路の DMA 転送状態を取得します。各 bit 毎で 1 が取得できた場合は DMA 転送

中、0 が取得できた場合は、DMA 転送が開始されていないか DMA 転送完了状態となります。

経路が指定されていない場合は 0が返ります。

ビット 内容

bit31~bit27 予約

bit26 ReadLine2の転送状態を取得します。

bit25 ReadLine1 の転送状態を取得します。

bit24 WriteLine の転送状態を取得します。

bit23~bit0 予約

Page 359: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

359

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

HANDLE DeviceHandle;

DWORD TransferCount;

DWROD TransferStatus;

INT Ret;

Ret = CmlGetTransferStatus(DeviceHandle, IFCML_READ_LINE1,

&TransferCount, &TransferStatus);

●Visual Basic

Dim DeviceHandle As Long

Dim TransferCount As Long

Dim TransferStatus As Long

Dim Ret As Integer

Ret = CmlGetTransferStatus(DeviceHandle, IFCML_READ_LINE1, _

TransferCount, TransferStatus)

●Delphi

var

DeviceHandle: THandle;

TransferCount: DWORD;

TransferStatus: DWORD;

Ret: Integer;

Ret := CmlGetTransferStatus(DeviceHandle, IFCML_READ_LINE1,

TransferCount, TransferStatus);

Page 360: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

360

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

uint TransferCount;

uint TransferStatus;

Ret = IFCCML_ANY.CmlGetTransferStatus(DeviceHandle, IFCCML_ANY.IFCML_READ_LINE1,

out TransferCount, out TransferStatus);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim TransferCount As Integer

Dim TransferStatus As Integer

Dim ret As Integer

Ret = IFCCML_ANY.CmlGetTransferStatus(DeviceHandle, IFCCML_ANY.IFCML_READ_LINE1, _

TransferCount, TransferStatus)

●Delphi

var

DeviceHandle: Integer;

TransferCount: Cardinal;

TransferStatus: Cardinal;

ret: Integer;

Ret := IFCCML.CmlGetTransferStatus(DeviceHandle, IFCCML.IFCML_READ_LINE1,

TransferCount, TransferStatus);

ReadLine1 の転送状態を取得します。

Page 361: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

361

64. CmlGetSafePowerStatus

【機能】

PoCL のエラー状態を取得します。

PCI-530521 のみ使用することが出来ます。

【書式】

●C言語

INT CmlGetSafePowerStatus(

HANDLE DeviceHandle, // デバイスハンドル

PDWORD SafePowerStatus // PoCL のエラー状態

);

●Visual Basic

Declare Function CmlGetSafePowerStatus Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByRef SafePowerStatus As Long _ ‘ PoCL のエラー状態

)As Long

●Delphi

function CmlGetSafePowerStatus(

DeviceHandle: THandle; // デバイスハンドル

var SafePowerStatus: DWORD // PoCL のエラー状態

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86、x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlGetSafePowerStatus(

IntPtr DeviceHandle, // デバイスハンドル

out uint SafePowerStatus // PoCL のエラー状態

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlGetSafePowerStatus(

uint DeviceHandle, // デバイスハンドル

out uint SafePowerStatus // PoCL のエラー状態

);

●Visual Basic .NET(x86、x64 共用)

Declare Function CmlGetSafePowerStatus Lib "IFCml.DLL"( _

ByVal DeviceHandle, As IntPtr, _ ‘ デバイスハンドル

ByRef SafePowerStatus As Integer _ ‘ PoCL のエラー状態

)As Integer

Page 362: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

362

●Visual Basic .NET(x86 専用)

Declare Function CmlGetSafePowerStatus Lib "IFCml.DLL"( _

ByVal DeviceHandle, As Integer, _ ‘ デバイスハンドル

ByRef SafePowerStatus As Integer _ ‘ PoCL のエラー状態

)As Integer

●Delphi 8

class function CmlGetSafePowerStatus (

DeviceHandle: Integer; // デバイスハンドル

var SafePowerStatus: Cardinal // PoCL のエラー状態

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

SafePowerStatus

PoCL のエラー状態を取得します。各 bit 毎で 1 が取得できた場合、エラーが発生していま

す。

ビット 内容

bit31~bit5 予約

bit4 PoCL 対応カメラ検出後、20 ミリ秒間 OCP(過電圧、過電流検出)が発生。

bit3 予約

bit2 PoCL 対応カメラとクロック検出後、100 ミリ秒間クロックが停止。

bit1 PoCL 対応カメラ検出後、3秒間クロックが検出されない、

またはケーブル未接続状態で PoCL 有効にしました。

bit0 予約

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

PoCL のエラーが発生した場合、カメラへの電源供給が停止されます。

再度カメラへ電源を供給する場合は、「52 CmlOutputPower」関数を使用し、カメラへの電源供

給を停止させた後、再度カメラへ電源を供給する必要があります。

エラー情報を取得せず、複数のエラーが発生した場合は、複数のエラー情報が取得出来ます。

1 度エラー情報を取得すると、取得された bit は 0 に戻ります。

Page 363: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

363

【使用例】

●C言語

HANDLE DeviceHandle;

DWORD SafePowerStatus;

INT Ret;

Ret = CmlGetSafePowerStatus(DeviceHandle, &SafePowerStatus);

●Visual Basic

Dim DeviceHandle As Long

Dim SafePowerStatus As Long

Dim Ret As Integer

Ret = CmlGetSafePowerStatus(DeviceHandle, SafePowerStatus)

●Delphi

var

DeviceHandle: THandle;

SafePowerStatus: DWORD;

Ret: Integer;

Ret := CmlGetSafePowerStatus(DeviceHandle, SafePowerStatus);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

uint SafePowerStatus;

ret = IFCCML_ANY.CmlGetSafePowerStatus(DeviceHandle, out SafePowerStatus);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim ret As Integer

Dim SafePowerStatus As Integer

ret = IFCCML_ANY.CmlGetSafePowerStatus(DeviceHandle, SafePowerStatus)

Page 364: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

364

●Delphi 8

var

DeviceHandle: THandle;

ret: Integer;

SafePowerStatus: Cardinal;

ret := IFCCML.CmlGetSafePowerStatus(DeviceHandle, SafePowerStatus);

PoCL のエラー状態を取得します。

Page 365: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

365

65. CmlSetAdTrigger

【機能】

アナログシャッタトリガモードを設定します。

アナログトリガと同期して CC 信号の制御を行なう情報を指定します。

PCI-530521 のみ使用することが出来ます。

【書式】

●C言語

INT CmlSetAdTrigger(

HANDLE DeviceHandle, // デバイスハンドル

PIFCMLADSHUTTERTRG TrgInfo // IFCMLADSHUTTERTRG 構造体

);

●Visual Basic

Declare Function CmlSetAdTrigger Lib "IFCml.DLL"( _

ByVal DeviceHandle As Long, _ ‘ デバイスハンドル

ByRef TrgInfo As IFCMLADSHUTTERTRG _ ‘ IFCMLADSHUTTERTRG 構造体

)As Long

●Delphi

function CmlSetAdTrigger (

DeviceHandle: Thandle; // デバイスハンドル

var TrgInfo: IFCMLADSHUTTERTRG // IFCMLADSHUTTERTRG 構造体

): Integer; stdcall; external 'IFCml.DLL';

●VISUAL C# .NET(x86,x64 共用)

[DllImport("IfCml.dll")]

public static extern int CmlSetAdTrigger(

IntPtr DeviceHandle, // デバイスハンドル

ref IFCMLADSHUTTERTRG TrgInfo // IFCMLADSHUTTERTRG 構造体

);

●VISUAL C# .NET(x86 専用)

[DllImport("IfCml.dll")]

public static extern int CmlSetAdTrigger(

uint DeviceHandle, // デバイスハンドル

ref IFCMLADSHUTTERTRG TrgInfo // IFCMLADSHUTTERTRG 構造体

);

●Visual Basic .NET(x86,x64 共用)

Declare Function CmlSetAdTrigger Lib "IFCml.DLL"( _

ByVal DeviceHandle As IntPtr, _ ‘ デバイスハンドル

ByRef TrgInfo As IFCMLADSHUTTERTRG _ ‘ IFCMLADSHUTTERTRG 構造体

)As Integer

Page 366: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

366

●Visual Basic .NET(x86 専用)

Declare Function CmlSetAdTrigger Lib "IFCml.DLL"( _

ByVal DeviceHandle As Integer, _ ‘ デバイスハンドル

ByRef TrgInfo As IFCMLADSHUTTERTRG _ ‘ IFCMLADSHUTTERTRG 構造体

)As Integer

●Delphi 8

class function CmlSetAdTrigger(

DeviceHandle: Integer; // デバイスハンドル

var TrgInfo: IFCMLADSHUTTERTRG // IFCMLADSHUTTERTRG 構造体

): Integer; static;

【パラメータ】

DeviceHandle CmlOpen 関数または CmlOpenEx 関数で取得したデバイスハンドルを指定してください。

TrgInfo IFCMLADSHUTTERTRG 構造体のポインタ(参照渡し)を指定します。

アナログシャッタトリガ情報を設定します。

【戻り値】

正常終了した場合は、IFCML_ERROR_SUCCESSが返されます。

IFCML_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

アナログトリガと同期してCC信号の制御を行なう場合、「31 CmlSetCCMode」関数を使用し、CC

信号のモードをアナログトリガにしておく必要があります。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

IFCMLADSHUTTERTRG TrgInfo;

// アナログシャッタのトリガモードを設定します。

TrgInfo.TrgMode = IFCML_AD_START_P1;

TrgInfo.AdTrg[0].TrgLevel = 0x80;

TrgInfo.AdTrg[0].Hysteresis = 0x00;

TrgInfo.AdTrg[1].TrgLevel = 0x00;

TrgInfo.AdTrg[1].Hysteresis = 0x00;

Ret = CmlSetAdTrigger(DeviceHandle, &TrgInfo);

Page 367: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

367

●Visual Basic

Dim DeviceHandle As Long

Dim Ret As Integer

Dim TrgInfo As IFCMLADSHUTTERTRG

‘ アナログシャッタのトリガモードを設定します。

TrgInfo.TrgMode = IFCML_AD_START_P1

TrgInfo.AdTrg(0).TrgLevel = &H80

TrgInfo.AdTrg(0).Hysteresis = &H00

TrgInfo.AdTrg(1).TrgLevel = &H00

TrgInfo.AdTrg(1).Hysteresis = &H00

Ret = CmlSetAdTrigger(DeviceHandle, TrgInfo)

●Delphi

var

DeviceHandle: THandle;

Ret: Integer;

TrgInfo: IFCMLADSHUTTERTRG;

// アナログシャッタのトリガモードを設定します。

TrgInfo.TrgMode := IFCML_AD_START_P1;

TrgInfo.AdTrg[0].TrgLevel := $80;

TrgInfo.AdTrg[0].Hysteresis := $00;

TrgInfo.AdTrg[1].TrgLevel := $00;

TrgInfo.AdTrg[1].Hysteresis := $00;

Ret := CmlSetAdTrigger(DeviceHandle, TrgInfo);

●VISUAL C# .NET

uint ret;

IntPtr DeviceHandle;

IFCCML_ANY.IFCMLADSHUTTERTRG TrgInfo = new IFCCML_ANY.IFCMLADSHUTTERTRG();

TrgInfo.TrgMode = IFCCML_ANY.IFCML_AD_START_P1;

TrgInfo.InitializeArray();

TrgInfo.SetTrgLevel(0, 0xFF);

TrgInfo.SetHysteresis(0, 0x00);

TrgInfo.SetTrgLevel(1, 0x00);

TrgInfo.SetHysteresis(1, 0x00);

ret = IFCCML_ANY.CmlSetCapConfig(DeviceHandle, ref TrgInfo);

Page 368: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

368

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim TrgInfo As IFCCML_ANY.IFCMLADSHUTTERTRG

Dim ret As Integer

TrgInfo = New IFCCML_ANY.IFCMLADSHUTTERTRG(0)

TrgInfo.TrgMode = IFCCML_ANY.IFCML_AD_START_P1

TrgInfo.SetTrgLevel(0, &HFF)

TrgInfo.SetHysteresis(0, &H00)

TrgInfo.SetTrgLevel(1, &H00

TrgInfo.SetHysteresis(1, &H00)

ret = IFCCML_ANY.CmlSetCapConfig(DeviceHandle, TrgInfo)

●Delphi 8

var

DeviceHandle: Integer;

TrgInfo : IFCCML.IFCMLADSHUTTERTRG;

ret: Integer;

TrgInfo.TrgMode := IFCCML.IFCML_AD_START_P1;

TrgInfo.InitializeArray();

TrgInfo.SetTrgLevel(0, $FF);

TrgInfo.SetHysteresis(0, $00);

TrgInfo.SetTrgLevel(1, $00);

TrgInfo.SetHysteresis(1, $00);

ret := IFCCML.CmlSetCapConfig(DeviceHandle, TrgInfo);

アナログシャッタのトリガモードを設定します。

Page 369: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

369

4.3 構造体説明 4.3.1 IFCMLRECT 構造体

領域を指定する構造体です。

クリッピングキャプチャ、2 値画像処理の測定エリア、重心値トリガ領域、画像データの取り出

しに使用します。

●C 言語

typedef struct {

DWORD XStart;

DWORD YStart;

DWORD XLength;

DWORD YLength;

} IFCMLRECT, *PIFCMLRECT;

●Visual C# .NET

[StructLayout(LayoutKind.Sequential)]

public struct IFCMLRECT{

public uint XStart;

public uint YStart;

public uint XLength;

public uint YLength;

}

●Visual Basic .NET

<StructLayout(LayoutKind.Sequential)> _

Structure IFCMLRECT

Dim XStart As Integer

Dim YStart As Integer

Dim XLength As Integer

Dim YLength As Integer

End Structure

●Delphi 8

type

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]

IFCMLRECT = record

XStart: Cardinal;

YStart: Cardinal;

XLength: Cardinal;

YLength: Cardinal;

end;

Page 370: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

370

メンバ 説明

XStart X 座標の開始点です。

YStart Y 座標の開始点です。

ラインカメラモードでは、ライン番号を指定します。

XLength 開始点からの X方向への長さ

YLength 開始点からの Y方向への長さ

ラインカメラモードでは、ライン数を指定します。

Page 371: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

371

4.3.2 IFCMLSCALE 構造体 スケーリングキャプチャで使用します。

●C 言語

typedef struct {

DWORD PixelCnt;

DWORD LineCnt;

} IFCMLSCALE, *PIFCMLSCALE;

●Visual C# .NET

[StructLayout(LayoutKind.Sequential)]

public struct IFCMLSCALE

public uint PixelCnt;

public uint LineCnt;

}

●Visual Basic .NET

<StructLayout(LayoutKind.Sequential)> _

Structure IFCMLSCALE

Dim PixelCnt As Integer

Dim LineCnt As Integer

End Structure

●Delphi 8

type

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]

IFCMLSCALE = record

PixelCnt: Cardinal;

LineCnt: Cardinal;

end;

メンバ 説明

PixelCnt 水平方向に対して間引くピクセル数を設定します。設定範囲(0~15) 間引き後のピクセル数 = 有効領域の水平ピクセル数/(間引きピクセル数+1)

LineCnt 垂直方向に対して間引くライン数を設定します。設定範囲(0~15)

間引き後のライン数 = 有効領域の垂直ライン数/(間引きライン数+1)

Page 372: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

372

4.3.3 IFCMLCAMCONF 構造体 カメラコンフィグファイルの内容を取得する構造体です。

各メンバの詳細は CmlReadCamConfFile 関数を参照してください。

●C 言語

typedef struct {

DWORD Type;

DWORD Horizontal_E;

DWORD Horizontal_D;

DWORD Vertical_E;

DWORD Vertical_D;

DWORD CamFormat;

DWORD Mode;

DWORD Serialbaud;

DWORD CC;

} IFCMLCAMCONF, *PIFCMLCAMCONF;

●Visual C# .NET

[StructLayout(LayoutKind.Sequential)]

public struct IFCMLCAMCONF

public uint Type;

public uint Horizontal_E;

public uint Horizontal_D;

public uint Vertical_E;

public uint Vertical_D;

public uint CamFormat;

public uint Mode;

public uint Serialbaud;

public uint CC;

}

●Visual Basic .NET

<StructLayout(LayoutKind.Sequential)> _

Structure IFCMLCAMCONF

Dim Type As Integer

Dim Horizontal_E As Integer

Dim Horizontal_D As Integer

Dim Vertical_E As Integer

Dim Vertical_D As Integer

Dim CamFormat As Integer

Dim Mode As Integer

Dim Serialbaud As Integer

Dim CC As Integer

End Structure

Page 373: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

373

●Delphi 8

type

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]

IFCMLCAMCONF = record

Type: Cardinal;

Horizontal_E: Cardinal;

Horizontal_D: Cardinal;

Vertical_E: Cardinal;

Vertical_D: Cardinal;

CamFormat: Cardinal;

Mode: Cardinal;

Serialbaud: Cardinal;

CC: Cardinal;

end;

メンバ 説明

Type カメラタイプを取得します。

bit 内容

bit31~bit13 予約

bit12 PoCL 規格の設定状態

0:カメラは PoCL 規格でない

1:カメラは PoCL 規格である

bit11 予約

bit10 カメラコンフィギュレーションの設定状態

1 : Full Configuration である

0 : Full Configuration ではない

bit9 カメラコンフィギュレーションの設定状態

1 : Medium Configuration である

0 : Medium Configuration ではない

bit8 カメラコンフィギュレーションの設定状態

1 : Base Configuration である

0 : Base Configuration ではない

bit1~bit7 予約

bit0 カメラタイプの設定状態

1 : ラインカメラ

0 : エリアカメラ

Horizontal_E 水平有効期間を取得します。(単位:ピクセル)

Horizontal_D 水平無効期間を取得します。(単位:ピクセル)

Vertical_E 垂直有効期間を取得します。(単位:ライン)

Vertical_D 垂直無効期間を取得します。(単位:ライン)

Page 374: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

374

CamFormat カメラの映像出力を設定します。

0 : RGB24bit

1 : モノクロ 8bit

2 : モノクロ 10bit

3 : モノクロ 12bit

4 : モノクロ 14bit

5 : モノクロ 16bit

6 : Bayer 配列 8bit

7 : Bayer 配列 10bit

8 : RGB30bit

9 : RGB36bit

CamMode カメラの動作方式を取得します。

0 : 標準

1 : 2 倍速

2 : 3 倍速

3 : 4 倍速

4 : 8 倍速(Full Configration 専用)

5 : 2 倍速 同時出力(Mode1)

6 : 2 倍速 同時出力(Mode2)

7 : 2 倍速 同時出力(Mode3)

8 : 2 倍速 同時出力(Mode4)

9 : 2 倍速 同時出力(Mode5)

10 : 4 倍速 同時出力

11 : 8 倍速 同時出力(Full Configration 専用)

Serialbaud シリアルボーレートを取得します。

0 : シリアルなし

1 : 9600bps

2 : 19200bps

3 : 38400bps

4 : 57600bps

5 : 115200bps

CC カメラコントロール信号の有効/無効を取得します。

0 : 使用

1 : 未使用

Page 375: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

375

4.3.4 IFCMLCAPFMT 構造体 キャプチャの条件が格納された構造体です。

●C 言語

typedef struct {

IFCMLRECT Rect;

IFCMLSCALE Scale;

DWORD CapFormat;

DWORD OptionFormat;

DWORD XLength;

DWORD YLength;

DWORD FrameSize_Buf;

DWORD FrameSize_Mem;

DWORD ImageSize;

DWORD OptionSize;

DWORD PixelSize;

} IFCMLCAPFMT, *PIFCMLCAPFMT;

●Visual C# .NET

[StructLayout(LayoutKind.Sequential)]

public struct IFCMLCAPFMT

public IFCMLRECT Rect; public IFCMLSCALE Scale; public uint CapFormat; public uint OptionFormat; public uint XLength; public uint YLength; public uint FrameSize_Buf; public uint FrameSize_Mem; public uint ImageSize; public uint OptionSize;

public uint PicxelSize;

}

Page 376: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

376

●Visual Basic .NET

<StructLayout(LayoutKind.Sequential)> _

Structure IFCMLCAPFMT

Dim Rect As IFCMLRECT

Dim Scale As IFCMLSCALE

Dim CapFormat As Integer

Dim OptionFormat As Integer

Dim XLength As Integer

Dim YLength As Integer

Dim FrameSize_Buf As Integer

Dim FrameSize_Mem As Integer

Dim ImageSize As Integer

Dim OptionSize As Integer

Dim PicxelSize As Integer

End Structure

●Delphi 8

type

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]

IFCMLCAPFMT = record

Rect: IFCMLRECT;

Scale: IFCMLSCALE;

CapFormat: Cardinal;

OptionFormat: Cardinal;

XLength: Cardinal;

YLength: Cardinal;

FrameSize_Buf: Cardinal;

FrameSize_Mem: Cardinal;

ImageSize: Cardinal;

OptionSize: Cardinal;

PicxelSize: Cardinal;

end;

メンバ 説明

Rect キャプチャしたい矩形領域を指定します。

・ラインカメラモードでは、X軸方向のみ有効です。

・拡張基板でのキャプチャを行う場合、カメラコンフィグファイルで指定

したカメラのフォーマットと同じ範囲をクリッピングの設定値として

下さい。

Scale スケーリングキャプチャの条件を指定します。

PEX-H530821, H530922, H531021, H531122, H531221 はスケーリングの設

定を行うことが出来ません。スケーリング条件の、水平間引き/垂直間引

きピクセル数は共に 0を指定してください。

Page 377: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

377

CapFormat メイン基板のキャプチャ画像フォーマットを指定します。※1 識別子 値 内容

IFCML_CAPFMT_NON 00000000h 画像データなし

IFCML_CAPFMT_CAM 00000001h カメラのフォーマット

IFCML_CAPFMT_RGB32 00000002h RGB32bit

IFCML_CAPFMT_RGB16 00000003h RGB16bit

IFCML_CAPFMT_RGB15 00000004h RGB15bit

IFCML_CAPFMT_R8 00000005h R8bit

IFCML_CAPFMT_G8 00000006h G8bit

IFCML_CAPFMT_B8 00000007h B8bit

IFCML_CAPFMT_GRAY8_15_8 00000008h モノクロ 8bit(bit8 から上

位 8bit)

IFCML_CAPFMT_GRAY8_14_7 00000009h モノクロ 8bit(bit7 から上

位 8bit)

IFCML_CAPFMT_GRAY8_13_6 0000000Ah モノクロ 8bit(bit6 から上

位 8bit)

IFCML_CAPFMT_GRAY8_12_5 0000000Bh モノクロ 8bit(bit5 から上

位 8bit)

IFCML_CAPFMT_GRAY8_11_4 0000000Ch モノクロ 8bit(bit4 から上

位 8bit)

IFCML_CAPFMT_GRAY8_10_3 0000000Dh モノクロ 8bit(bit3 から上

位 8bit)

IFCML_CAPFMT_GRAY8_9_2 0000000Eh モノクロ 8bit(bit2 から上

位 8bit)

IFCML_CAPFMT_GRAY8_8_1 0000000Fh モノクロ 8bit(bit1 から上

位 8bit)

IFCML_CAPFMT_GRAY8_7_0 00000010h モノクロ 8bit(bit0 から上

位 8bit)

IFCML_CAPFMT_BIN8 00000011h 2 値画像

IFCML_CAPFMT_ORIGINAL 00000012h ユーザ定義データ

OptionFormat 画像以外の付加情報を指定します。※2 ラインカメラモードでは、IFCML_OPTFMT_NON固定です。 識別子 内容

IFCML_OPTFMT_NON 00000000h 付加情報なし

IFCML_OPTFMT_CNT1 00000001h 汎用カウンタ①の値

IFCML_OPTFMT_CNT2 00000002h 汎用カウンタ②の値

IFCML_OPTFMT_CNT3 00000004h 汎用カウンタ③の値

IFCML_OPTFMT_AREA 00000010h 各フレームの面積値

IFCML_OPTFMT_GRV 00000020h 各フレームの重心値

IFCML_OPTFMT_HIST 00000040h 各フレームの濃度分布

IFCML_OPTFMT_PRO 00000080h 各フレームの射影データ

IFCML_OPTFMT_LBLSTS 00000100h 各フレームのラベリング数

とエラー情報

IFCML_OPTFMT_LBLAREA 00000200h 各フレームのラベリング処

理後の面積値

Page 378: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

378

IFCML_OPTFMT_LBLGRV 00000400h 各フレームのラベリング処

理後の重心値

IFCML_OPTFMT_LBLFERET 00000800h 各フレームのラベリング処

理後のフェレ径

IFCML_OPTFMT_LBLANGLE 00001000h 各フレームのラベリング処

理後の傾き角情報

IFCML_OPTFMT_ORIGINAL 00002000h ユーザ定義データ

XLength 画像データの水平方向長さです。

クリッピングキャプチャ、スケーリングキャプチャを反映させた値です。 YLength 画像データの垂直方向長さです。

クリッピングキャプチャ、スケーリングキャプチャを反映させた値です。 ラインカメラモードでは、1となります。

FrameSize_Buf カメラ画像をメインメモリへキャプチャする場合の、必要な画像サイズです。

●エリカカメラモード 1フレームあたりのサイズです。画像のサイズと付加情報を加算したサイズ

です。 ●ラインカメラモード

1ラインあたりのサイズです。 FrameSize_Mem カメラ画像をオンボードメモリへキャプチャする場合、またはオンボードメモ

リからメインメモリへバスマスタ転送する場合の、必要なサイズです。画像の

サイズと付加情報を加算して、2048Byte区切りに調整したサイズです。 ●エリカカメラモード

1フレームあたりのサイズとなります。画像のサイズと付加情報を加算した

サイズです。 ● ラインカメラモード 必要な1ラインあたりのサイズです。

ImageSize CapFormatで指定した画像データのサイズです。

CapFormatメンバにIFCML_CAPFMT_ORIGINALを指定した場合は、

ImageSizeに画像データサイズをセットして下さい。 セットするデータはByte単位で8の倍数になるようにセットしてください。

OptionSize OptionFormatで指定した付加情報のサイズです。

OptionFormatメンバにIFCML_OPTFMT_ORIGINALを指定した場合は、OptionSize

に付加情報データサイズをセットして下さい。セットするデータはByte単位で

8の倍数になるようにセットしてください。

PixelSize CapFormatで指定した画像の1ピクセル当りのサイズです。

CapFormatメンバにIFCML_CAPFMT_ORIGINALを指定した場合は、PixelSize に画

素のサイズをセットして下さい。

Page 379: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

379

※ 1 型式によって、指定できる識別子が異なります。下記表を参照。

識別子 PEX-

H530821

PEX-

H530922

PEX-

H531021

PEX-

H531122

PEX-

H531221 その他

IFCML_CAPFMT_NON ○ ○ ○ ○ × ○

IFCML_CAPFMT_CAM ○ ○ ○ ○ ○ ○

IFCML_CAPFMT_RGB32 × × × × × ○

IFCML_CAPFMT_RGB16 × × × × × ○

IFCML_CAPFMT_RGB15 × × × × × ○

IFCML_CAPFMT_R8 × × × × × ○

IFCML_CAPFMT_G8 × × × × × ○

IFCML_CAPFMT_B8 × × × × × ○

IFCML_CAPFMT_GRAY8_15_8 × × × × × ○

IFCML_CAPFMT_GRAY8_14_7 × × × × × ○

IFCML_CAPFMT_GRAY8_13_6 × × × × × ○

IFCML_CAPFMT_GRAY8_12_5 × × × × × ○

IFCML_CAPFMT_GRAY8_11_4 × × × × × ○

IFCML_CAPFMT_GRAY8_10_3 × × × × × ○

IFCML_CAPFMT_GRAY8_9_2 × × × × × ○

IFCML_CAPFMT_GRAY8_8_1 × × × × × ○

IFCML_CAPFMT_GRAY8_7_0 × × × × × ○

IFCML_CAPFMT_BIN8 ○ × ○ ○ × ○

IFCML_CAPFMT_ORIGINAL ○ ○ ○ ○ × ×

※ 2 型式によって、指定できる識別子が異なります。下記表を参照。

識別子 PEX-

H530821

PEX-

H530922

PEX-

H531021

PEX-

H531122

PEX-

H531221 その他

IFCML_OPTFMT_NON ○ ○ ○ ○ ○ ○

IFCML_OPTFMT_CNT1 × × × × × ○

IFCML_OPTFMT_CNT2 × × × × × ○

IFCML_OPTFMT_CNT3 × × × × × ○

IFCML_OPTFMT_AREA × × × × × ○

IFCML_OPTFMT_GRV × × × × × ○

IFCML_OPTFMT_HIST ○ × ○ × × ×

IFCML_OPTFMT_PRO ○ × ○ × × ×

IFCML_OPTFMT_LBLSTS × × ○ ○ × ×

IFCML_OPTFMT_LBLAREA × × ○ ○ × ×

IFCML_OPTFMT_LBLGRV × × ○ ○ × ×

IFCML_OPTFMT_LBLFERET × × ○ ○ × ×

IFCML_OPTFMT_LBLANGLE × × ○ ○ × ×

IFCML_OPTFMT_ORIGINAL × × ○ ○ × ×

Page 380: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

380

4.3.5 IFCMLCAPSTS 構造体 キャプチャの動作状態が格納されます。

●C 言語

Typedef struct {

DWORD Status;

DWORD FrameCnt_Buf;

DWORD FrameCnt_Mem;

}IFCMLCAPSTS, *PIFCMLCAPSTS;

●Visual C# .NET

[StructLayout(LayoutKind.Sequential)]

public struct IFCMLCAPSTS {

public uint Status;

public uint FrameCnt_Buf;

public uint FrameCnt_Mem;

}

●Visual Basic .NET

<StructLayout(LayoutKind.Sequential)> _

Structure IFCMLCAPSTS

Dim Status As Integer

Dim FrameCnt_Buf As Integer

Dim FrameCnt_Mem As Integer

End Structure

●Delphi 8

type

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]

IFCMLCAPSTS = record

Status: Cardinal;

FrameCnt_Buf: Cardinal;

FrameCnt_Mem: Cardinal;

end;

Page 381: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

381

メンバ 説明

Status キャプチャ状態を示します。 bit 内容

bit31~bit9 予約

bit8 オンボードメモリへのキャプチャ

1:キャプチャ実行中

0:停止中

bit2~bit7 予約

bit1 メインメモリキャプチャの動作エラー

1:エラー発生

0:未発生

bit0 メインメモリへのキャプチャ

1:キャプチャ実行中

0:停止中

FrameCnt_Buf ●エリアカメラモード

メインメモリへのキャプチャが完了したフレーム数

●ラインカメラモード

メモリメモリへのキャプチャが完了したライン数

FrameCnt_Mem ●エリアカメラモード

オンボードメモリへのキャプチャが完了したフレーム数

●ラインカメラモード

オンボードメモリへのキャプチャが完了したライン数

Page 382: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

382

4.3.6 IFCMLEVENTREQ 構造体 割り込みイベント情報構造体です。

●C 言語(x86 専用)

Typedef struct {

HWND WndHandle;

UINT MessageCode;

PIFCMLCALLBACK CallBackProc;

DWORD User;

}IFCMLEVENTREQ, *PIFCMLEVENTREQ;

●C 言語(x64 専用)

typedef struct {

HWND WndHandle;

UINT MessageCode;

PIFCMLCALLBACK CallBackProc;

PVOID User;

}IFCMLEVENTREQ, *PIFCMLEVENTREQ;

●Visual C# .NET(x86、x64 共用)

[StructLayout(LayoutKind.Sequential)]

public struct IFCMLEVENTREQ {

public uint WndHandle;

public uint MessageCode;

PIFCMLCALLBACK CallBackProc;

public IntPtr User;

}

●Visual C# .NET(x86 専用)

[StructLayout(LayoutKind.Sequential)]

public struct IFCMLEVENTREQ {

public uint WndHandle;

public uint MessageCode;

PIFCMLCALLBACK CallBackProc;

public uint User;

}

●Visual Basic .NET(x86、x64 共用)

<StructLayout(LayoutKind.Sequential)> _

Structure IFCMLEVENTREQ

Dim WndHandle As Integer

Dim MessageCode As Integer

Dim CallBackProc As PIFCMLCALLBACK

Dim User As IntPtr

End Structure

Page 383: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

383

●Visual Basic .NET(x86 専用)

<StructLayout(LayoutKind.Sequential)> _

Structure IFCMLEVENTREQ

Dim WndHandle As Integer

Dim MessageCode As Integer

Dim CallBackProc As PIFCMLCALLBACK

Dim User As Integer

End Structure

●Delphi 8

Type

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]

IFCMLEVENTREQ = record

WndHandle: Integer;

MessageCode: Cardinal;

CallBackProc: IFCMLCALLBACK;

User: Cardinal;

end;

メンバ 説明

WndHandle メッセージ送出ウィンドウハンドル

CmlSetEventMask 関数にて設定した各種割り込み発生時に送出するメッ

セージのポスト先ウィンドウハンドルを指定してください。

メッセージポストを行わない場合には、C言語では NULL,Visual Basic、

Delphi では 0を指定してください。

MessageCode WndHandle へ送出するメッセージコード

CmlSetEventMask関数にて設定した各種割り込み発生時にWndHandleへ送

出するメッセージコードを指定してください。

メッセージポストを行わない場合には、C言語ではWM_NULL,Visual Basic、

Delphi では 0を指定してください。

WinProc ルーチンより渡るメッセージ LPARAM には各チャンネルの割り込

み要因情報が渡ってきます。

bit 内容 状態

bit31~bit27 予約

bit26 PoCL のエラー割り込み。

bit25 重心値が CmlSetGrvTrgParam 関数で設定した縦横

件に満たした。

bit24 面積値が CmlSetAreaTrgParam 関数で設定した条

件に満たした。

bit23~bit16 汎用入力割り込み

bit15~bit12 予約

bit11 エンコーダパルス入力エラー割り込み

bit10 汎用カウンタ③のカウンタ周期割り込み

bit9 汎用カウンタ②のカウンタ周期割り込み

bit8 汎用カウンタ①のカウンタ周期割り込み

bit7~bit5 予約

0:未発生

1:発生

Page 384: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

384

bit4 オンボードメモリキャプチャ動作割り込み

●エリアカメラモードの場合

1 フレーム毎キャプチャ完了割り込み

●ラインカメラモードの場合

CmlSetEventCounter 関数で設定したライン数毎キ

ャプチャが完了した割り込み

bit3~bit2 予約

bit1 キャプチャエラー割り込み

bit0 メインメモリキャプチャ動作割り込み

●エリアカメラモードの場合

1 フレーム毎キャプチャ完了割り込み

●ラインカメラモードの場合

CmlSetEventCounter 関数で設定したライン数毎キ

ャプチャが完了した割り込み

CallBackProc コールバック関数へのポインタです。

ユーザ・コールバック関数の呼び出しを行わない場合には、C 言語では

NULL、Visual Basic、Delphi では 0を指定してください。

(注意)

Visual Basic 6.0 ではコールバック関数が使用できません。メッセージ

機能を使用してください。

メッセージ機能を使用する場合には、メッセージを送出するフォームのウ

ィンドウ・プロシージャを Win32API の SetWindowLong 関数を使用してフ

ックする必要があります。

User コールバック関数へ渡されるユーザ専用データです。

Page 385: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

385

●コールバック関数の書式

IFCMLEVENTREQ 構造体へ設定するコールバック関数の書式は以下の通りです。

●C 言語(x86 専用)

VOID CALLBACK CallBackProc (

DWORD IntFlg, // 割込み要因

DWORD User // ユーザデータ

);

●C 言語(x64 専用)

VOID CALLBACK CallBackProc (

DWORD IntFlg, // 割込み要因

PVOID User // ユーザデータ

);

●VISUAL C# .NET(x86、x64 共用)

public delegate void PIFCMLCALLBACK(

uint IntFlg, // 割り込み要因

IntPtr User // ユーザデータ

);

●Visual C# .NET(x86 専用)

public delegate void PIFCMLCALLBACK(

uint IntFlg, // 割り込み要因

uint User // ユーザデータ

);

●Visual Basic .NET(x86、x64 共用)

Delegate Sub PIFCMLCALLBACK( _

ByVal IntFlg As Integer, _ ‘ 割り込み要因

ByRef User As IntPtr _ ‘ ユーザデータ

)

●Visual Basic .NET(x86 専用)

Delegate Sub PIFCMLCALLBACK( _

ByVal IntFlg As Integer, _ ‘ 割り込み要因

ByRef User As Integer _ ‘ ユーザデータ

)

●Delphi 8

var

procedure CallProc(

IntFlg: Cardinal; // 割り込み要因

User: Cardinal // ユーザデータ

);forwad;

const

CallProcDelegete: CMLCALLBACK= @CallProc;

Page 386: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

386

IntFlg コールバック関数が実行された要因が格納されています。

bit 内容 状態

bit31~bit27 予約

bit26 PoCL のエラー割り込み

bit25 重心値トリガ割り込み

bit24 面積値トリガ割り込み

bit23~bit16 汎用入力割り込み(IN8~IN1)

bit15~bit12 予約

bit11 エンコーダパルス入力エラー割り込み

bit10 汎用カウンタ③のカウンタ周期割り込み

bit9 汎用カウンタ②のカウンタ周期割り込み

bit8 汎用カウンタ①のカウンタ周期割り込み

bit7~bit5 予約

bit4 オンボードメモリキャプチャ動作割り込み

●エリアカメラモードの場合

1 フレーム毎キャプチャ完了割り込み

●ラインカメラモードの場合

CmlSetEventCounter 関数で設定したライン数毎キャプ

チャが完了した割り込み

bit3~bit2 予約

bit1 キャプチャエラー割り込み

bit0 メインメモリキャプチャ動作割り込み

●エリアカメラモードの場合

1 フレーム毎キャプチャ完了割り込み

●ラインカメラモードの場合

CmlSetEventCounter 関数で設定したライン数毎キャプ

チャが完了した割り込み

0:未発生

1:発生

User

ユーザ・データ

CmlSetEvent 関数実行時で指定したユーザ・データが取得されます。

Page 387: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

387

4.3.7 IFCMLEVENTREQEX 構造体 割り込みイベント情報構造体です。

●C 言語

typedef struct {

HWND WndHandle;

UINT MessageCode;

PIFCMLCALLBACKEX CallBackProcEx;

PVOID User;

}IFCMLEVENTREQEX, *PIFCMLEVENTREQEX;

●Visual C# .NET(x86、x64 共用)

[StructLayout(LayoutKind.Sequential)]

public struct IFCMLEVENTREQEX {

public uint WndHandle;

public uint MessageCode;

PIFCMLCALLBACKEX CallBackProcEx;

public IntPtr User;

}

●Visual Basic .NET(x86、x64 共用)

<StructLayout(LayoutKind.Sequential)> _

Structure IFCMLEVENTREQEX

Dim WndHandle As Integer

Dim MessageCode As Integer

Dim CallBackProcEx As PIFCMLCALLBACKEX

Dim User As IntPtr

End Structure

●Delphi 8

type

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]

IFCMLEVENTREQEX = record

WndHandle: Integer;

MessageCode: Cardinal;

CallBackProcEx: IFCMLCALLBACKEX;

User: Cardinal;

end;

メンバ 説明

WndHandle メッセージ送出ウィンドウハンドル

CmlSetEventMaskEx 関数にて設定した各種割り込み発生時に送出するメ

ッセージのポスト先ウィンドウハンドルを指定してください。

メッセージポストを行わない場合には、C言語では NULL,Visual Basic、

Delphi では 0を指定してください。

Page 388: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

388

MessageCode WndHandle へ送出するメッセージコード

CmlSetEventMaskEx関数にて設定した各種割り込み発生時にWndHandleへ

送出するメッセージコードを指定してください。

メッセージポストを行わない場合には、C言語ではWM_NULL,Visual Basic、

Delphi では 0を指定してください。

WinProc ルーチンより渡るメッセージ LPARAM には各チャンネルの割り込

み要因情報が渡ってきます。

bit 内容 状態

bit31~bit27 予約

bit27 PoCL のエラー割り込み。

bit26 ReadLine2 を通るデータ転送が完了。

bit25 ReadLine1 を通るデータ転送が完了。

bit24 WriteLine を通るデータ転送が完了。

bit23~bit7 予約

bit6 重心値が CmlSetGrvTrgParam 関数で設定した条件

に満たした。

bit5 面積値が CmlSetAreaTrgParam 関数で設定した条

件に満たした。

bit4 530121,530221,530421,530521 専用

オンボードメモリのキャプチャ動作時に発生する

割り込みです。

●エリアカメラモードの場合

1 フレーム毎にキャプチャが完了したらイベント

が発生します。

●ラインカメラモードの場合

CmlSetEventCounter 関数で設定したライン数毎キ

ャプチャが完了したらイベントが発生します。

bit3~bit2 予約

bit1 530121,530221,530421,530521 専用

メインメモリへのキャプチャ動作時に発生する割

り込みです。

キャプチャエラー時にイベントが発生します。

PCI バス上のデータ転送に負荷がかかった為、デ

バイス内の中間バッファがオーバーフローしたこ

とが要因です。

bit0 メインメモリのキャプチャ動作時に発生する割り

込みです。

●エリアカメラモードの場合

1 フレーム毎にキャプチャが完了したらイベント

が発生します。

●ラインカメラモードの場合

CmlSetEventCounter 関数で設定したライン数毎キ

ャプチャが完了したらイベントが発生します。

0:未発生

1:発生

Page 389: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

389

WinProc ルーチンより渡るメッセージ WPARAM にはカウンタ機能、汎用入

力割り込み要因情報が渡ってきます。

bit 内容 状態

bit31~bit24 汎用入力割り込み(IN1~IN8)

PEX-H530821, H530922, H531021, H531122,

H531221 専用です。

CN4 の汎用入力割り込み IN1~IN8 を使用するこ

とが出来ます。

bit23~bit16 汎用入力割り込み(IN1~IN8)

bit15 ユーザ割り込み要因 8

bit14 ユーザ割り込み要因 7

bit13 ユーザ割り込み要因 6

bit12 ユーザ割り込み要因 5

bit11 ユーザ割り込み要因 4

bit10 ユーザ割り込み要因 3

bit9 ユーザ割り込み要因 2

bit8 ユーザ割り込み要因 1

bit7~bit6 予約

bit5 シングルエンド入力方式エンコーダカウンタ 2

のエラー割り込み。

bit4 シングルエンド入力方式エンコーダカウンタ 1

のエラー割り込み。

bit3 差動入力方式エンコーダカウンタのエラー割り

込み。

bit2 汎用カウンタ③のカウンタ値が周期に達したら

イベントが発生します。

bit1 汎用カウンタ②のカウンタ値が周期に達したら

イベントが発生します。

bit0 汎用カウンタ①のカウンタ値が周期に達したら

イベントが発生します。

0:未発生

1:発生

CallBackProcEx コールバック関数へのポインタです。

ユーザ・コールバック関数の呼び出しを行わない場合には、C 言語では

NULL、Visual Basic、Delphi では 0を指定してください。

(注意)

Visual Basic 6.0 ではコールバック関数が使用できません。メッセージ

機能を使用してください。

メッセージ機能を使用する場合には、メッセージを送出するフォームのウ

ィンドウ・プロシージャを Win32API の SetWindowLong 関数を使用してフ

ックする必要があります。

User コールバック関数へ渡されるユーザ専用データです。

Page 390: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

390

●コールバック関数の書式

IFCMLEVENTREQEX 構造体へ設定するコールバック関数の書式は以下の通りです。

●C言語(x86,x64 兼用)

VOID CALLBACK CallBackProcEx (

DWORD IntFlg, // キャプチャ・画像処理の割り込み要因

DWORD ComIntFlg // カウンタ、DIO の割り込み要因

PVOID User // ユーザデータ

);

●VISUAL C# .NET(x86、x64 共用)、(x86 専用)

public delegate void PIFCMLCALLBACKEX(

uint IntFlg, // キャプチャ・画像処理の割り込み要因

uint ComIntFlg // カウンタ、DIO の割り込み要因

IntPtr User // ユーザデータ

);

●Visual Basic .NET(x86、x64 共用)、(x86 専用)

Delegate Sub PIFCMLCALLBACKEX( _

ByVal IntFlg As Integer, _ ‘ キャプチャ・画像処理の割り込み要因

ByVal ComIntFlg As Integer, _ ‘ カウンタ、DIO の割り込み要因

ByRef User As IntPtr _ ‘ ユーザデータ

)

●Delphi 8

var

procedure CallProc(

IntFlg: Cardinal; // キャプチャ・画像処理の割り込み要因

ComIntFlg: Cardinal; // カウンタ、DIO の割り込み要因

User: Cardinal // ユーザデータ

);forwad;

const

CallProcDelegete: CMLCALLBACKEX= @CallProc;

Page 391: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

391

IntFlg コールバック関数が実行された要因が格納されています。

bit 内容 状態

bit31~bit27 予約

bit27 PoCL のエラー割り込み。

bit26 ReadLine2 を通るデータ転送が完了。

bit25 ReadLine1 を通るデータ転送が完了。

bit24 WriteLine を通るデータ転送が完了。

bit23~bit7 予約

bit6 重心トリガ割り込み。

bit5 面積値トリガ割り込み。

bit4 530121,530221,530421,530521 専用

オンボードメモリのキャプチャ動作時に発生する割り込み

です。

●エリアカメラモードの場合

1 フレーム毎にキャプチャが完了したらイベントが発生し

ます。

●ラインカメラモードの場合

CmlSetEventCounter 関数で設定したライン数毎キャプチ

ャが完了したらイベントが発生します。

bit3~bit2 予約

bit1 530121,530221,530421,530521 専用

メインメモリへのキャプチャ動作時に発生する割り込みで

す。

キャプチャエラー時にイベントが発生します。

PCI バス上のデータ転送に負荷がかかった為、デバイス内

の中間バッファがオーバーフローしたことが要因です。

bit0 メインメモリのキャプチャ動作時に発生する割り込みで

す。

●エリアカメラモードの場合

1 フレーム毎にキャプチャが完了したらイベントが発生し

ます。

●ラインカメラモードの場合

CmlSetEventCounter 関数で設定したライン数毎キャプチ

ャが完了したらイベントが発生します。

0:未発生

1:発生

Page 392: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

392

ComIntFlg コールバック関数が実行された要因が格納されています。

bit 内容 状態

bit31~bit24 汎用入力割り込み(IN1~IN8)

PEX-H530821, H530922, H531021, H531122, H531221 専用

です。

CN4の汎用入力割り込みIN1~IN8を使用することが出来ま

す。

bit23~bit16 汎用入力割り込み(IN1~IN8)

bit15 ユーザ割り込み要因 8

bit14 ユーザ割り込み要因 7

bit13 ユーザ割り込み要因 6

bit12 ユーザ割り込み要因 5

bit11 ユーザ割り込み要因 4

bit10 ユーザ割り込み要因 3

bit9 ユーザ割り込み要因 2

bit8 ユーザ割り込み要因 1

bit7~bit6 予約

bit5 シングルエンド入力方式エンコーダカウンタ 2 のエラー割

り込み。

bit4 シングルエンド入力方式エンコーダカウンタ 1 のエラー割

り込み。

bit3 差動入力方式エンコーダカウンタのエラー割り込み。

bit2 汎用カウンタ③のカウンタ値が周期に達したらイベントが

発生します。

bit1 汎用カウンタ②のカウンタ値が周期に達したらイベントが

発生します。

bit0 汎用カウンタ①のカウンタ値が周期に達したらイベントが

発生します。

0:未発生

1:発生

User CmlSetEventEx 関数実行時で指定したユーザ・データが取得されます。

Page 393: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

393

4.3.8 IFCMLFILTER 構造体 CmlSetFilter 関数で指定するフィルタ係数構造体です。

●C 言語

typedef struct {

INT a;

INT b;

INT c;

INT d;

INT e;

INT f;

INT g;

INT h;

INT i;

} IFCMLFILTER, *PIFCMLFILTER;

●Visual C# .NET

[StructLayout(LayoutKind.Sequential)]

public struct IFCMLFILTER {

INT a;

INT b;

INT c;

INT d;

INT e;

INT f;

INT g;

INT h;

INT i;

}

●Visual Basic .NET

<StructLayout(LayoutKind.Sequential)> _

Structure IFCMLFILTER

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

Page 394: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

394

●Delphi 8

type

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]

IFCMLFILTER = record

a: Cardinal;

b: Cardinal;

c: Cardinal;

d: Cardinal;

e: Cardinal;

f: Cardinal;

g: Cardinal;

h: Cardinal;

i: Cardinal;

end;

メンバ 説明

a~i 各要素のフィルタ係数(-15~15)

(フィルタ係数設定例)

0 1 0

1 -4 1

0 1 0

-1 0 1

-2 0 2

-1 0 1

ラプラシアン(4近傍) Sobel(X 近傍)

1 1 1

1 -8 1

1 1 1

ラプラシアン(8近傍)

-1 -2 -1

0 0 0

1 2 1

Sobel(Y 近傍)

-1 0 1

-1 0 1

-1 0 1

Prewitt(X 近傍)

-1 -1 -1

0 0 0

1 1 1

Prewitt(Y 近傍)

b a c

e d f

h g i

Page 395: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

395

4.3.9 IFCMLDILATE_ERODE 構造体 CmlSetDil_Er 関数で指定する膨張・収縮設定です。

●C 言語

typedef struct {

DWORD StepCnt;

DWORD SelectD_E;

DWORD Neighborhood;

}IFCMLDILATE_ERODE, *PIFCMLDILATE_ERODE;

●Visual C# .NET

[StructLayout(LayoutKind.Sequential)]

public struct IFCMLFERET {

public uint StepCnt;

public uint SelectD_E;

public uint Neighborhood;

}

●Visual Basic .NET

<StructLayout(LayoutKind.Sequential)> _

Structure IFCMLFERET

Dim StepCnt As Integer

Dim SelectD_E As Integer

Dim Neighborhood As Integer

End Structure

●Delphi 8

type

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]

IFCMLFERET = record

StepCnt: Cardinal;

SelectD_E: Cardinal;

Neighborhood: Cardinal;

end;

Page 396: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

396

メンバ 説明

StepCnt 有効段数を指定します。(1~8 段)

SelectD_E 各段の処理を選択します。

ビット 内容

bit31~bit8 予約

bit7 8 段目の膨張・収縮選択

bit6 7 段目の膨張・収縮選択

bit5 6 段目の膨張・収縮選択

bit4 5 段目の膨張・収縮選択

bit3 4 段目の膨張・収縮選択

bit2 3 段目の膨張・収縮選択

bit1 2 段目の膨張・収縮選択

bit0 1 段目の膨張・収縮選択

0:収縮

1:膨張

Neighborhood 近傍を設定します。

ビット 内容

bit31~bit8 予約

bit7 8 段目の近傍の選択

bit6 7 段目の近傍の選択

bit5 6 段目の近傍の選択

bit4 5 段目の近傍の選択

bit3 4 段目の近傍の選択

bit2 3 段目の近傍の選択

bit1 2 段目の近傍の選択

bit0 1 段目の近傍の選択

0:4 連結

上下左右 4 画素を処理対象とします。

1:8連結

周囲 8 画素を処理対象とします。

Page 397: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

397

4.3.10 IFCMLLBLDATA 構造体 CmlGetLabelingValue 関数で指定するラベリング情報構造体です。

●C 言語

typedef struct {

DWORD LblStatus;

DWORD LblCnt;

IFCMLMEASURE Measure[256];

}IFCMLLBLDATA, *PIFCMLLBLDATA;

●Visual C# .NET

[StructLayout(LayoutKind.Sequential)]

public struct IFCMLLBLDATA {

public uint LblStatus;

public uint LblCnt;

IFCMLMEASURE Measure[];

}

●Visual Basic .NET

<StructLayout(LayoutKind.Sequential)> _

Structure IFCMLLBLDATA

Dim LblStatus As Integer

Dim LblCnt As Integer

Dim Measure() As IFCMLMEASURE

End Structure

●Delphi 8

type

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]

IFCMLLBLDATA = record

LblStatus Cardinal;

LblCnt Cardinal;

Measure IFCMLMEASURE;

end;

Page 398: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

398

メンバ 説明

LblStatus ラベリング結果を取得

ビット 内容

bit31~bit2 予約

bit1 (真ラベルオーバーフラグ)

仮ラベルを 適化したものです。

この処理結果がラベリング処理結果とし

て出力されます。

0:真ラベルの数は 256 を超えていない

1:真ラベルの数が 256 以上になった

bit0 (仮ラベルオーバーフラグ)

初にラベリング処理したラベルです。

0:仮ラベルの数は 256 を超えていない

1:仮ラベルの数が 256 以上になった。

LblCnt ラベル数 0~256

Measure ラベリング結果(256 個分)

IFCMLMEASURE 構造体変数に面積値、重心値、フェレ径、傾き角が

格納されます。

Page 399: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

399

4.3.11 IFCMLFERET 構造体 フェレ径が格納されます。

●C 言語

typedef struct {

DWORD FeretX1;

DWORD FeretX2;

DWORD FeretY1;

DWORD FeretY2;

DWORD FeretH;

DWORD FeretV;

} IFCMLFERET, *PIFCMLFERET;

●Visual C# .NET

[StructLayout(LayoutKind.Sequential)]

public struct IFCMLFERET {

public uint FeretX1;

public uint FeretX2;

public uint FeretY1;

public uint FeretY2;

public uint FeretH;

public uint FeretV;

}

●Visual Basic .NET

<StructLayout(LayoutKind.Sequential)> _

Structure IFCMLFERET

Dim FeretX1 As Integer

Dim FeretX2 As Integer

Dim FeretY1 As Integer

Dim FeretY2 As Integer

Dim FeretH As Integer

Dim FeretV As Integer

End Structure

●Delphi 8

type

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]

IFCMLFERET = record

FeretX1: Cardinal;

FeretX2: Cardinal;

FeretY1: Cardinal;

FeretY2: Cardinal;

FeretH: Cardinal;

FeretV: Cardinal;

end;

Page 400: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

400

メンバ 説明

FeretX1 外接矩形 X座標 始点

FeretX2 外接矩形 X座標 終点

FeretY1 外接矩形 Y座標 始点

FeretY2 外接矩形 Y座標 終点

FeretH 水平方向フェレ径

FeretV 垂直方向フェレ径

Page 401: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

401

4.3.12 IFCMLMEASURE 構造体 面積、重心、フェレ径、傾き角が格納されます。

●C 言語

typedef struct {

DWORD Area;

DWORD Xcoordinates;

DWORD Ycoordinates;

IFCMLFERET Feret;

float Angle;

} IFCMLMEASURE, *PIFCMLMEASURE;

●Visual C# .NET

[StructLayout(LayoutKind.Sequential)]

public struct IFCMLMEASURE {

public uint Area;

public uint Xcoordinates;

public uint Ycoordinates;

public IFCMLFERET Feret;

public float Angle;

}

●Visual Basic .NET

<StructLayout(LayoutKind.Sequential)> _

Structure IFCMLMEASURE

Dim Area As Integer

Dim Xcoordinates As Integer

Dim Ycoordinates As Integer

Dim Feret As IFCMLFERET

Dim Angle As Integer

End Structure

●Delphi 8

type

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]

IFCMLMEASURE = record

Area: Cardinal;

Xcoordinates: Cardinal;

Ycoordinates: Cardinal;

Feret: IFCMLFERET;

Angle: Cardinal;

end;

Page 402: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

402

メンバ 説明

Area 面積値

Xcoordinates 重心 X座標

Ycoordinates 重心 Y座標

Feret IFCMLFERET 構造体変数にフェレ径が格納されます。

Angle 慣性等価楕円の傾き角(–π/2~+π/2)

Page 403: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

403

4.3.13 IFCMLCCSYNCDO 構造体 CmlSetSyncDO 関数で指定する CC 信号に同期して出力するデジタル信号の情報です。

●C 言語

typedef struct {

DWORD OutputMode;

DWORD OutputEnabled;

DWORD CC;

DWORD Logic;

DWORD DoPulse;

DWORD Delay;

}IFCMLCCSYNCDO, *PIFCMLCCSYNCDO;

●Visual C# .NET

[StructLayout(LayoutKind.Sequential)]

public struct IFCMLCCSYNCDO {

public uint OutputMode;

public uint OutputEnabled;

public uint CC;

public uint Logic;

public uint DoPulse;

public uint Delay;

}

●Visual Basic .NET

<StructLayout(LayoutKind.Sequential)> _

Structure IFCMLCCSYNCDO

Dim OutputMode As Integer

Dim OutputEnabled As Integer

Dim CC As Integer

Dim Logic As Integer

Dim DoPulse As Integer

Dim Delay As Integer

End Structure

●Delphi 8

type

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]

IFCMLCCSYNCDO = record

OutputMode: Cardinal;

OutputEnabled: Cardinal;

CC: Cardinal;

Logic: Cardinal;

DoPulse: Cardinal;

Delay: Cardinal;

end;

Page 404: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

404

メンバ 説明

OutputMode 同期出力モードの選択 識別子 値 内容

IFCML_CCSYNC_STOROBO 00000001h CC信号に同期してOUT1を出

力します。

2CH の場合は OUT3 になりま

す。

IFCML_CCSYNC_BOARDSYNC 00000002h CC信号に同期してOUT2を出

力します。

2CH の場合は OUT4 になりま

す。

OutputEnabled 同期出力有効、無効の設定 識別子 値 内容

IFCML_ENABLE 00000001h 出力有効

IFCML_DISABLE 00000000h 出力無効

CC 同期するCC信号の設定 識別子 値 内容

IFCML_SYNC_CC1 00000001h CC1

IFCML_SYNC_CC2 00000002h CC2

IFCML_SYNC_CC3 00000003h CC3

IFCML_SYNC_CC4 00000004h CC4

Logic DOの論理設定 識別子 値 内容

IFCML_DO_LOGIC_HIGH 00000001h 正論理

IFCML_DO_LOGIC_LOW 00000002h 負論理

DoPulse 出力時間を設定します。0~1023 (×5μs) Delay 出力遅延時間を設定します。0~1023 (×5μs)

Page 405: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

405

4.3.14 IFCMLPROCESS 構造体 拡張基板での画像処理、拡張基板からメイン基板へデータを転送する際のフォーマットを指定し

ます。

●C 言語

typedef struct {

DWORD ImageData;

DWORD ImageFmt;

}IFCMLPROCESS, *PIFCMLPROCESS;

●Visual C# .NET

[StructLayout(LayoutKind.Sequential)]

public struct IFCMLPROCESS {

public uint ImageData;

public uint ImageFmt;

}

●Visual Basic .NET

<StructLayout(LayoutKind.Sequential)> _

Structure IFCMLPROCESS

Dim ImageData As Integer

Dim ImageFmt As Integer

End Structure

●Delphi 8

type

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]

IFCMLPROCESS = record

ImageData: Cardinal;

ImageFmt: Cardinal;

end;

Page 406: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

406

メンバ 説明

ImageData 拡張基板で行う画像処理を選択します。※1 識別子 値 内容

IFCML_IMAGE_NONDATA 00000000h 拡張基板に画像を転送しま

せん。

IFCML_IMAGE_NORMAL 00000001h 拡張基板上で画像処理をせ

ず、画像データをそのまま転

送します。

IFCML_IMAGE_LUT 00000002h 階調変換したデータをメイ

ン基板に転送します。

IFCML_IMAGE_FILTER_

SPASE

00000003h 空間フィルタ処理したデー

タをメイン基板に転送しま

す。

IFCML_IMAGE_

FILTER_DIFFERENCE

00000004h 差分フィルタ処理したデー

タをメイン基板に転送しま

す。

IFCML_IMAGE_BIN 00000005h 2 値画像処理したデータを

メイン基板に転送します。

IFCML_IMAGE_DIL_ER 00000006h 膨張・収縮処理したデータを

メイン基板に転送します。

IFCML_IMAGE_LBL 00000007h ラベリング処理したデータ

をメイン基板に転送します。

以下の識別子をImageDataにORすることで拡張基板メモリから転送されて

くるデータに対して、画像処理結果を付加することが出来ます。 PEX-H531221かつImageDataがIFCML_IMAGE_LBLのみ使用することが出来

ます。 識別子 値 内容

IFCML_OPTION_HIST 00010000h 濃度分布

IFCML_OPTION_PRO 00020000h 射影データ

IFCML_OPTION_LBLSTS 00040000h ラベリング数とエラー情報

IFCML_OPTION_LBLAREA 00080000h ラベリング処理後の面積値

IFCML_OPTION_LBLGRV 00100000h ラベリング処理後の重心値

IFCML_OPTION_LBLFERET 00200000h ラベリング処理後のフェレ

IFCML_OPTION_LBLANGLE 00400000h ラベリング処理後の傾き角

情報

Page 407: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

407

ImageFmt 拡張基板からメイン基板へ転送する画像データフォーマットを選択します。

※2 識別子 値 内容

IFCML_SUBFMT_RGB36 00000000h RGB36bit

IFCML_SUBFMT_RGB30 00000001h RGB30bit

IFCML_SUBFMT_RGB24 00000002h RGB24bit

IFCML_SUBFMT_GRAY12 00000003h モノクロ 12bit

IFCML_SUBFMT_GRAY10 00000004h モノクロ 10bit

IFCML_SUBFMT_GRAY8 00000005h モノクロ 8bit

※ 1

・2CH 同時入力製品を使用時の動作について。

2CH 同時入力製品の場合、1CH をメイン基板で処理し、2CH を拡張基板で処理する

などの別々のルートを通るキャプチャを行う事が出来ません。

例として、CH1 に IFCML_IMAGE_NONDATA を指定し、CH2 に IFCML_IMAGE_NORMAL を指

定した場合は、後から指定した IFCML_IMAGE_NORMAL が有効となり、CH1 も拡張基板

上で処理が行われます。メイン基板、拡張基板を指定する場合は注意してください。

・指定できる識別子について

PEX-H531221 の場合のみ、IFCML_IMAGE_NONDATA を使用することが出来ません。

※ 2

ImageData で IFCML_IMAGE_NONDATA を指定した場合は 0を指定して下さい。

Page 408: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

408

4.3.15 IFCMLADTRG 構造体 アナログトリガ情報を指定します。

●C 言語

typedef struct {

DWORD TrgLevel;

DWORD Hysteresis;

}IFCMLADTRG, *PIFCMLADTRG;

●Visual C# .NET

[StructLayout(LayoutKind.Sequential)]

public struct IFCMLADTRG {

public uint TrgLevel;

public uint Hysteresis;

}

●Visual Basic .NET

<StructLayout(LayoutKind.Sequential)> _

Structure IFCMLADTRG

Dim TrgLevel As Integer

Dim Hysteresis As Integer

End Structure

●Delphi 8

type

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]

IFCMLADTRG = record

TrgLevel: Cardinal;

Hysteresis: Cardinal;

end;

メンバ 説明

TrgLevel トリガレベルを指定します。 トリガレベル設定値 電圧値

0h -10V

1h -9.9218V

2h -9.8437V

: :

FEh 9.8437V

FFh 9.9218V

Page 409: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

409

Hysteresis ヒステリシスを指定します。

ヒステリシス幅設定値 ヒステリシス幅設定値

0h 0V(0LSB)

1h 0.15625V(2LSB)

2h 0.3125V(4LSB)

: :

7Eh 19.6875V(252LSB)

7Fh 19.84375V(254LSB)

TrgLevel、Hysteresisは、以下の条件で設定する必要があります。 TrgLevel – (Hysteresis / 2) ≧ 00h TrgLevel + (Hysteresis / 2) ≦ FFh ・立ち上がり設定時のアナログトリガ発生タイミング

・立ち下がり設定時のアナログトリガ発生タイミング

Page 410: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

410

4.3.16 IFCMLADSHUTTERTRG 構造体 アナログシャッタトリガモードを設定します。

●C 言語

typedef struct {

DWORD TrgMode;

IFCMLADTRG AdTrg[2];

}IFCMLADSHUTTERTRG, *PIFCMLADSHUTTERTRG;

●Visual C# .NET

[StructLayout(LayoutKind.Sequential)]

public struct IFCMLADSHUTTERTRG {

public uint TrgMode;

[MarshalAs(UnmanagedType.ByValArray, SizeConst=4)]

public uint[] AdTrg;

public void InitializeArray()

{

AdTrg = new uint [4];

}

public void SetTrgLevel(uint Index , uint TrgLevel)

{

AdTrg[Index * 2] = TrgLevel;

}

public uint GetTrgLevel(uint Index)

{

return(AdTrg[Index * 2]);

}

public void SetHysteresis(uint Index, uint Hysteresis)

{

AdTrg[(Index * 2) + 1] = Hysteresis;

}

public uint GetHysteresis(uint Index)

{

return(AdTrg[(Index * 2) + 1]);

}

}

Page 411: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

411

●Visual Basic .NET

<StructLayout(LayoutKind.Sequential)> _

Structure IFCMLADSHUTTERTRG

Dim TrgMode As Integer

<MarshalAs(UnmanagedType.ByValArray, SizeConst:=4)> _

Dim AdTrg() As Integer

Public Sub New(ByVal Dummy As Integer)

ReDim AdTrg(3)

End Sub

Public Sub SetTrgLevel(ByVal Index As Integer, ByVal TrgLevel As Integer)

AdTrg(Index * 2) = TrgLevel

End Sub

Public Function GetTrgLevel(ByVal Index As Integer) As Integer

GetTrgLevel = AdTrg(Index * 2)

End Function

Public Sub SetHysteresis(ByVal Index As Integer, ByVal Hysteresis As Integer)

AdTrg((Index * 2) + 1) = Hysteresis

End Sub

Public Function GetHysteresis(ByVal Index As Integer) As Integer

GetHysteresis = AdTrg((Index * 2) + 1)

End Function

End Structure

●Delphi 8

type

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]

IFCMLADSHUTTERTRG = record

TrgMode: Cardinal;

[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]

AdTrg: array of Integer;

public constructor Create(var AdTrg : array of Integer);

public procedure SetTrgLevel( Index: Integer; TrgLevel: Integer);

public function GetTrgLevel( Index: Integer): Integer;

public procedure SetHysteresis( Index: Integer; Hysteresis: Integer);

public function GetHysteresis( Index: Integer): Integer;

end;

メンバ 説明

TrgMode アナログ入力信号に対するトリガレベルを指定します。 トリガレベルは2つ指定可能で、各レベルで立ち上がりと立ち下がりを設定で

きます。各識別子をORする事が出来ます。 識別子 値 内容

IFCML_AD_START_P1 00000001h トリガレベル 1立ち上がり。

IFCML_AD_START_M1 00000002h トリガレベル 1立ち下がり。

IFCML_AD_START_P2 00000004h トリガレベル 2立ち上がり。

IFCML_AD_START_M2 00000008h トリガレベル 2立ち下がり。

Page 412: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

412

AdTrg TrgModeで指定したトリガレベル1, トリガレベル2の条件を指定します。

AdTrg[0]には、トリガレベル1の条件を、AdTrg[1]には、トリガレベル2の条

件を指定して下さい。

Page 413: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

413

4.4 戻り値一覧

エラー識別子 値 意味 対処方法

IFCML_ERROR_SUCCESS 0 正常終了 -

IFCML_ERROR_NOT_DEVICE c0000001h

(-1073741823)

ドライバを呼び出せませ

ん。

指定したデバイスが見つかりません

でした。

指定したデバイス番号が存在するか

どうかを確認してください。

IFCML_ERROR_NOT_OPEN c0000002h

(-1073741822)

ドライバを OPEN できませ

ん。

デバイスのオープン時、何らかのエラ

ーが発生しました。

ドライバ内部のメモリ確保に失敗し

たなど。

IFCML_ERROR_INVALID_HANDLE c0000003h

(-1073741821)

デバイスハンドルが正し

くありません。

不正なデバイスハンドルで呼び出し

を行おうとしました。

OPEN 関数で返されたデバイスハンド

ルを使用してください。

IFCML_ERROR_ALREADY_OPEN c0000004h

(-1073741820)

デバイスは既にオープン

されています。

既にオープンしているので、Open 関

数を呼ぶ必要はありません。

IFCML_ERROR_NOT_SUPPORTED c0000009h

(-1073741815)

サポートしていません。 デバイスが機能としてサポートして

いませんので、API 関数を呼び出すこ

とができません。

IFCML_ERROR_INVALID_PARAMET

ER

c0000010h

(-1073741814)

パラメータ不正です。 設定したパラメータの値が条件範囲

外、定義されていない識別子を与えて

います。

IFCML_ERROR_NOT_ALLOCATE_ME

MORY

c0000021h

(-1073741791)

作業用のメモリの確保に

失敗しました。

メモリの空き容量を増やしてから実

行して下さい。

IFCML_ERROR_NOW_CAPTURING c0001000h

(-1073737728)

メインメモリにキャプチ

ャ中です。

メインメモリへのキャプチャが実行

中なので、キャプチャ開始、キャプチ

ャ条件の変更は行えません。

キャプチャを停止してください。

IFCML_ERROR_NOW_STOP c0001001h

(-1073737727)

メインメモリのキャプチ

ャは停止中です。

メインメモリへのキャプチャは停止

しています。

IFCML_ERROR_MEM_NOW_CAPTURI

NG

c0001002h

(-1073737726)

オンボードメモリにキャ

プチャ中です。

オンボードメモリへのキャプチャが

実行中なので、キャプチャ開始、キャ

プチャ条件の変更は行えません。

キャプチャを停止してください。

IFCML_ERROR_MEM_NOW_STOP c0001003h

(-1073737725)

オンボードメモリのキャ

プチャは停止中です。

オンボードメモリへのキャプチャは

停止しています。

IFCML_ERROR_NULL_POINTER c0001004h

(-1073737724)

NULL ポインタです。 渡したパラメータが NULL ポインタで

す。

IFCML_ERROR_NOBUFFER c0001005h

(-1073737723)

メインメモリ転送先が設

定していません。

CmlSetCapConf 関数でキャプチャ条

件を設定していません。

IFCML_ERROR_FIFO_FULL c0001006h

(-1073737722)

FIFO フルエラーが発生し

ました。

メインメモリへのキャプチャに失敗

しました。

IFCML_ERROR_INVALID_BUF_HAN

DLE

c0001007h

(-1073737721)

バッファ情報のハンドル

値が不正です。

渡したバッファ情報ハンドルが不正

です。

IFCML_ERROR_SERIAL_TIMEOUT c0001008h

(-1073737720)

シリアル通信時にタイム

アウトになりました。

カメラへの送信処理が停止していま

す。カメラからの受信処理が停止して

います。

IFCML_ERROR_INVALID_FILEPAR

AMETER

c0001009h

(-1073737719)

カメラコンフィグレーシ

ョンファイル内のパラメ

ータが不正です。

ファイル内に記載しているパラメー

タ値か、書式が不正です。

テキスト形式で開いて確認してくだ

さい。

IFCML_ERROR_NOTSET_CAMFILE c000100Ah カメラコンフィグレーシ まず、カメラ情報を設定する為、

Page 414: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

414

(-1073737718) ョンファイルを読み込ん

でいません。

CmlReadCamConfFile 関数を実行して

ください。

IFCML_ERROR_EVENT_SET_ALREA

DY

c000100Bh

(-1073737717)

イベントが既に登録され

ています。 CmlSetEvent 関 数 ま た は

CmlSetEventEx 関数登録したイ

ベントを、一旦解除してくださ

い。

IFCML_ERROR_FIFO_OVERRUN c0001010h

(-1073737712)

FIFO がオーバーランして

います。

FIFO がオーバーランしている為、受

信データを取りこぼしている可能性

があります。

IFCML_ERROR_FAILED_MEMLOCK c0001011h

(-1073737711)

システムメモリのロック

処理に失敗しました。

-

IFCML_ERROR_CAPTURE_TIMEOUT c0001012h

(-1073737710)

キャプチャ完了待ち時間

がタイムアウトになりま

した。

CmlStopCapture 関数で強制停止して

ください。

IFCML_ERROR_FAILED_SYNCCAP c0001013h

(-1073737709)

同期キャプチャ処理が失

敗しました。

CmlStartCapture 関数へ渡すパラメ

ータが間違っている。

もしくは、ドライバの内部処理エラ

ー。

IFCML_ERROR_FAILED_CAPSTOP c0001014h

(-1073737708)

キャプチャ停止処理が失

敗しました。

CmlStopCapture 関数へ渡すパラメー

タが間違っている。

もしくは、ドライバの内部処理エラ

ー。

IFCML_ERROR_STOP_TIMEOUT c0001015h

(-1073737707)

CmlStopCapture 関数によ

るキャプチャ停止待ちが

タイムアウトしました。

CmlStartCapture 関数へ渡すパラメ

ータが間違っている。

もしくは、ドライバの内部処理エラ

ー。

IFCML_ERROR_FAILED_CAP_STAR

T

c0001016h

(-1073737706)

CmlStartCapture 関数が実

行できませんでした。

-

IFCML_ERROR_FAILED_DEVIOCTL c0001017h

(-1073737705)

デバイス IO コントロール

処理が失敗しています。

デバイス IO コントロール処理が失敗

しています。

IFCML_ERROR_DATA_TRANSFAR c0001001Bh

(-1073737701)

データ転送を開始するこ

とが出来ません。

同時に実行出来ないデータ転送を行

なおうとしています。

Page 415: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

415

第5章 サンプルプログラム

以下、各サンプルプログラムの概要を説明します。

5.1 実行手順

サンプルプログラムには実行形式のファイルが付属していません。

ソースコードをコンパイルして実行ファイルを生成してから、動作させてください。

●Visual C++の場合

Visual C++(Visual Studio)を起動し、「ファイル」メニューから「ワークスペースを開く」

を選び、メイクファイル「*.dsp」を開き、ビルドしてください。

●Visual C++の場合(Microsoft Visual C++ .NET 2003~2008)

Visual Studio を起動し、「ファイル」メニューから「開く」→「プロジェクト」を選び、プ

ロジェクトファイル「*.vcproj」を開き、ビルドしてください。

●Visual C++の場合(Microsoft Visual C++ .NET 2010 以降)

Visual Studio を起動し、「ファイル」メニューから「開く」→「プロジェクト」を選び、プ

ロジェクトファイル「*.vcxproj」を開き、ビルドしてください。

※「*.vcxproj」ファイルは Visual Studio 2010 で作成しております。

Visual Studio 2010 より新しい Version で実行する場合には、下記設定を行ってくださ

い。

Visual Studio のメニューから、「プロジェクト」- 「プロパティ」-「構成プロパティ」

-「全般」を開き、「プラットフォームツールセット」を使用している環境に合わせて変更。

例) Visual Studio 2012 を使用している場合

Visual Studio 2012(v110)を選択(プルダウンメニューより選択できます)

●Visual Basic の場合

Visual Basic を起動し、プロジェクトファイル「*.vbp」を開き、ビルドしてください。

●Delphi の場合

Delphi を起動し、プロジェクトファイル「*.dpr」を開き、ビルドしてください。

●Visual Basic .NET の場合

Visual Studio を起動し、「ファイル」メニューから「開く」→「プロジェクト」を選び、プ

ロジェクトファイル「*.vbproj」を開き、ビルドしてください。

●Delphi 8 の場合

Delphi を起動し、「ファイル」メニューから「プロジェクトを開く」を選びプロジェクトグル

ープ「*.bdsproj」を開き、ビルドしてください。

Page 416: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

416

5.2 サンプルプログラム一覧

サンプルプログラム名 概要

CapSmpl 1 フレームキャプチャを行います。

「Capture」ボタンをクリックしたら、1フレームキャプチャを行ない

画像を描画します。

本サンプルは Teli 製の CS6910CL を使用した場合のサンプルです。

他のカメラを接続する場合は、プログラムコードを修正してご使用

ください。

Capture 連続キャプチャを行います。

カメラコンフィグファイルの絶対パスを、テキストボックスに入力

してください。

「Start」ボタンをクリックしたら、キャプチャを行ない画像を描画し

ます。

「Stop」ボタンをクリックしたら、キャプチャを停止します。

SDRAM オンボードメモリへのキャプチャを行います。

カメラコンフィグファイルの絶対パスを、テキストボックスに入力

してください。

「Start」ボタンをクリックしたら、キャプチャを行ない画像を描画し

ます。

Bin 2 値画像の連続キャプチャを行います。

カメラコンフィグファイルの絶対パスを、テキストボックスに入力

してください。

「2値化設定」グループ内の、「色成分」「2値化反転」コンボボック

スから条件を選択し、2値化の上下限閾値を入力してください。

「Start」ボタンをクリックすると、キャプチャを行ない画像を描画し

ます。

「Stop」ボタンをクリックしたら、キャプチャを停止します。

Serial カメラとシリアル通信を行ないます。

カメラコンフィグファイルの絶対パスを、テキストボックスに入力

してください。

「制御コード」コンボボックスから条件を選択し、送信データを入

力してください。

「送信」ボタンを押すと、カメラにデータが送信されます。

「受信」ボタンを押すと、カメラからデータを受信します。

カメラの設定および、設定するレジスタについては各カメラの仕様

書をご確認ください。

CC CC 信号に同期してキャプチャを開始します。

カメラコンフィグファイルの絶対パスを、テキストボックスに入力

してください。

「カメラコントロール信号出力モード」コンボボックスから出力モ

ードを選択してください。

CC 信号の出力パルス幅を設定してください。

「Start」ボタンをクリックすると、キャプチャを行ない画像を描画し

ます。

なお、CC の設定を 1パルス出力モードに設定している場合、キャプ

Page 417: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

417

チャは開始されませんので「パルス出力」ボタンを押すことでキャ

プチャが開始されます。

本サンプルはカメラ本体の設定がトリガシャッタモードであること

を前提として作成されています。カメラの設定をトリガシャッタモ

ードに設定した上でプログラムを実行してください。

Encoder 汎用カウンタのエンコーダカウンタ設定を行います。

「汎用カウンタ①~③」のチェックボックスから、制御を行いたい

汎用カウンタを指定して下さい。

「エンコーダカウンタ設定」グループで、カウンタの各動作を指定

して下さい。

「カウントスタート」ボタンを押すと、カウントがテキストボック

スにカウント値が表示されます。

Sub_Capture 拡張基板を使用したキャプチャのサンプルプログラムです。カメラ

からの画像を拡張基板で画像処理せず、そのまま取り込みます。

PEX-H531021, H531122 の拡張基板付きの製品で御使用ください。

カメラコンフィグファイルの絶対パスを、テキストボックスに入力

してください。

「Start」ボタンをクリックしたら、キャプチャを行ない画像を描画し

ます。

「Stop」ボタンをクリックしたら、キャプチャを停止します。

Sub_Lut 拡張基板を使用したキャプチャのサンプルプログラムです。拡張基

板で階調変換処理を行った画像を取得します。

PEX-H531021, H531122 の拡張基板付きの製品で御使用ください。

カメラコンフィグファイルの絶対パスを、テキストボックスに入力

してください。

「Start」ボタンをクリックしたら、キャプチャを行ない階調変換後の

画像を描画します。

「Stop」ボタンをクリックしたら、キャプチャを停止します。

Sub_Filter_Spase 拡張基板を使用したキャプチャのサンプルプログラムです。拡張基

板で空間フィルタ処理を行った画像を取得します。

PEX-H531021, H531122 の拡張基板付きの製品で御使用ください。

カメラコンフィグファイルの絶対パスを、テキストボックスに入力

してください。

「Spase_Filter」から使用したいフィルタを選択してください。

「Start」ボタンをクリックしたら、キャプチャを行ないフィルタ処理

後の画像を描画します。

「Stop」ボタンをクリックしたら、キャプチャを停止します。

Sub_Filter_Difference 拡張基板を使用したキャプチャのサンプルプログラムです。拡張基

板で差分フィルタ処理を行った画像を取得します。

PEX-H531021, H531122 の拡張基板付きの製品で御使用ください。

カメラコンフィグファイルの絶対パスを、テキストボックスに入力

してください。

「Difference_Filter」から使用したいフィルタを選択してください。

「Start」ボタンをクリックしたら、キャプチャを行ないフィルタ処理

後の画像を描画します。

「Stop」ボタンをクリックしたら、キャプチャを停止します。

Page 418: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

418

Sub_Bin 拡張基板を使用したキャプチャのサンプルプログラムです。拡張基

板で 2値化処理を行った画像を取得します。

PEX-H531021, H531122 の拡張基板付きの製品で御使用ください。

カメラコンフィグファイルの絶対パスを、テキストボックスに入力

してください。

「2値化設定」グループ内の、「色成分」「2値化反転」コンボボック

スから条件を選択し、2値化の上下限閾値を入力してください。

「Start」ボタンをクリックしたら、キャプチャを行ない 2値化処理後

の画像を描画します。

「Stop」ボタンをクリックしたら、キャプチャを停止します。

Sub_Dil_Er 拡張基板を使用したキャプチャのサンプルプログラムです。拡張基

板で膨張・収縮処理を行った画像を取得します。

PEX-H531021, H531122 の拡張基板付きの製品で御使用ください。

カメラコンフィグファイルの絶対パスを、テキストボックスに入力

してください。

「膨張・収縮設定」から、段数、処理、近傍を選択して下さい。

「Start」ボタンをクリックしたら、キャプチャを行ない膨張・収縮処

理後の画像を描画します。

「Stop」ボタンをクリックしたら、キャプチャを停止します。

Sub_Lbl 拡張基板を使用したキャプチャのサンプルプログラムです。拡張基

板でラベリング処理を行った画像を取得します。

PEX-H531021, H531122 の拡張基板付きの製品で御使用ください。

カメラコンフィグファイルの絶対パスを、テキストボックスに入力

してください。

「Start」ボタンをクリックしたら、キャプチャを行ないラベリング処

理後の画像を描画します。

「Stop」ボタンをクリックしたら、キャプチャを停止します。

Sub_Transfer 拡張基板に対して、データの Read/Write を行なうサンプルプログラ

ムです。拡張基板メモリにデータを転送し、画像処理無しでメイン

メモリへ転送します。

PEX-H531221 で御使用ください。

拡張基板メモリに対して、データを転送します。転送完了を待ち、

拡張基板メモリへ書き込んだデータをメインメモリへ転送します。

Sub_Transfer_Lut 拡張基板に対して、データの Read/Write を行なうサンプルプログラ

ムです。拡張基板メモリにデータを転送し、メインメモリに転送す

る際、階調変換を行ないます。

PEX-H531221 で御使用ください。

拡張基板メモリに対して、データを転送します。転送完了を待ち、

拡張基板メモリへ書き込んだデータを転送する際、階調変換を行な

ってメインメモリへ転送します。

Sub_Transfer_Filter_Spa

se

拡張基板に対して、データの Read/Write を行なうサンプルプログラ

ムです。

拡張基板メモリにデータを転送し、メインメモリに転送する際、空

間フィルタ処理を行ないます。

Page 419: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

419

PEX-H531221 で御使用ください。

拡張基板メモリに対して、データを転送します。転送完了を待ち、

拡張基板メモリへ書き込んだデータを転送する際、空間フィルタ処

理を行なってメインメモリへ転送します。

Sub_Transfer_Filter_Dif

ference

拡張基板に対して、データの Read/Write を行なうサンプルプログラ

ムです。

拡張基板メモリにデータを転送し、メインメモリに転送する際、差

分フィルタ処理を行ないます。

PEX-H531221 で御使用ください。

拡張基板メモリに対して、データを転送します。転送完了を待ち、

拡張基板メモリへ書き込んだデータを転送する際、差分フィルタ処

理を行なってメインメモリへ転送します。

Sub_Transfer_Bin 拡張基板に対して、データの Read/Write を行なうサンプルプログラ

ムです。

拡張基板メモリにデータを転送し、メインメモリに転送する際、2

値化を行ないます。

PEX-H531221 で御使用ください。

拡張基板メモリに対して、データを転送します。転送完了を待ち、

拡張基板メモリへ書き込んだデータを転送する際、2 値化を行なっ

てメインメモリへ転送します。

Sub_Transfer_Dil_Er 拡張基板に対して、データの Read/Write を行なうサンプルプログラ

ムです。

拡張基板メモリにデータを転送し、メインメモリに転送する際、膨

張・収縮処理を行ないます。

PEX-H531221 で御使用ください。

拡張基板メモリに対して、データを転送します。転送完了を待ち、

拡張基板メモリへ書き込んだデータを転送する際、膨張・収縮処理

を行なってメインメモリへ転送します。

Sub_Transfer_Lbl 拡張基板に対して、データの Read/Write を行なうサンプルプログラ

ムです。

拡張基板メモリにデータを転送し、メインメモリに転送する際、ラ

ベリングを行ないます。

PEX-H531221 で御使用ください。

拡張基板メモリに対して、データを転送します。転送完了を待ち、

拡張基板メモリへ書き込んだデータを転送する際、ラベリングを行

なってメインメモリへ転送します。

Page 420: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

420

第6章 ユーティリティ

以下、各ユーティリティの概要を説明します。

6.1 キャプチャユーティリティ

6.1.1 概要 ○ カメラコンフィグファイルを作成し保存する事ができます。

○ メインメモリへキャプチャを行い、リアルタイムに描画を行ないます。

○ 2 値画像のキャプチャも行なう事ができます。

6.1.2 操作方法

1. ユーティリティの起動

スタートメニューの「Integerface GPC-5300」-「CmlUti」をクリックして、ユーティリティを起動し

ます。

2. デバイスの選択

デバイスを複数枚セットアップしている場合、デバイス選択ダイアログが自動的に起動します。

デバイスを選択して OK ボタンをクリックしてください。

セットアップしているデバイスが一枚のみの場合、デバイス選択ダイアログは起動しません。

Page 421: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

421

3. カメラ情報の設定

まず、カメラ情報を設定します。

メニューの「View」-「SetConfig」をクリックして、設定ダイアログを起動します。

「Camera Configration」タブをクリックして、カメラ情報を設定します。

「Load」ボタンにより事前に用意しているカメラコンフィグファイル「****.cfg」をロードする。も

しくは、直接ダイアログ内のパラメータへ値を入力し、「Set」ボタンでデバイスへカメラ情報をセ

ットします。

「Save」ボタンでセットしたパラメータ情報のカメラコンフィグファイルを保存する事もできます。

保存したファイルは CmlReadCamConfFile 関数でも使用する事ができます。

パラメータ

Select Camera エリアカメラか、ラインカメラを選択します。

Camera Type PoCL 規格のカメラの場合、チェックを付けてください。

Camera Configration カメラのコンフィグレーション情報を選択してください。

Video Foramt カメラの映像出力を選択してください。

OutMode カメラの動作方式を選択してください。

Camera Control カメラコントロール信号の有無を指定します。

※本ユーティリティはカメラコントール信号を制御する機能は搭載

していません。カメラコンフィグファイル保存用のパラメータです。

Pixel and Line 有効領域を設定します。弊社 CameraLink 画像入力ボードのハードウ

ェアマニュアルとご使用のカメラのマニュアルを参照して、下記パ

Page 422: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

422

ラメータを入力してください。

Horizontal Pixel :水平有効期間

Horizontal Brank :水平無効期間

Vertical Line :垂直有効期間

Vertical Brank :垂直無効期間

Serial Boud カメラのシリアル通信によるボーレートを選択します。

※本ユーティリティはシリアル通信を制御する機能は搭載していま

せん。カメラコンフィグファイル保存用のパラメータです。

4. キャプチャ条件の設定

次にキャプチャ条件を指定します。「Capture」タブをクリックします。

Capture Count キャプチャフレーム数を選択します。

Cotinuous frame : 連続フレームキャプチャ

Frame specification: 指定フレームキャプチャ

Capture Format キャプチャのフォーマットを指定する事ができます。

カメラの映像出力以外のフォーマットでキャプチャを行なう事ができま

す。2値画像キャプチャの指定も可能です。

Clip Config クリッピングキャプチャ情報を指定します。

X coordinates : X 座標開始点

Y coordinates : Y 座標開始点

X Length : 開始座標から X方向長さ

Y Length : 開始座標から Y方向長さ

クリッピングを行なわない場合は、X coordinates、Y coordinates には

0を、XLength には Horizontal Pixel の値、YLength には Vertical Line

の値を入力します。

Scale Config スケーリングキャプチャ情報を指定します。

Page 423: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

423

None :スケーリングキャプチャを行ないません。

1/2 :水平ピクセル、垂直ラインの長さを 1/2 にします。

1/4 :水平ピクセル、垂直ラインの長さを 1/4 にします。

Line Capture 取り込むライン数を指定します。(ラインカメラ接続時のみ)

PoCL Control 「Power ON」 : カメラへ電源の供給を行なっています。

「Power OFF」 : カメラへ電源の供給を停止しています。

※PoCL 非対応のカメラに対して電源を供給した場合、カメラの故障に繋

がりますので注意してください。

Page 424: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

424

5. 2 値画像の設定

2 値画像キャプチャを行う場合、「Binarization」タブをクリックします。

2 値化のパラメータを入力します。

※PEX-H531021, H531122, H531221 では使用することが出来ません。

Target ColorIngredient 2 値対象色成分を設定します。

R: R 成分を 2値化します。(カラーカメラ専用)

G: G 成分を 2値化します。(カラーカメラ専用)

B: B 成分を 2値化します。(カラーカメラ専用)

Y: 輝度成分を 2値化します。(モノクロカメラ専用)

Threshold 2 値化しきい値を設定します。

Max: 上限しきい値

Min: 下限しきい値

Reversing 2 値化の反転を指定します。

6. キャプチャ開始と停止

メイン画面へ移り、スタートボタンでキャプチャを開始します。

ストップボタンでキャプチャを停止します。

スタートボタン ストップボタン

Page 425: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

425

7. カメラコントール信号

「CC1-CC4」タブ上で、ボードより CC 信号を出力したい場合は、以下の画面で設定を行う事ができ

ます。

CC1 CC1 信号の出力モードを選択します。

CC1 信号のパルス幅をμs単位で指定します。

「1パルス出力」ボタンをクリックすると、設定した幅のパルスを

信号を出力します。

CC2 CC2 信号の出力モードを選択します。

CC2 信号のパルス幅をμs単位で指定します。

「1パルス出力」ボタンをクリックすると、設定した幅のパルスを

信号を出力します。

CC3 CC3 信号の出力モードを選択します。

CC3 信号のパルス幅をμs単位で指定します。

「1パルス出力」ボタンをクリックすると、設定した幅のパルスを

信号を出力します。

CC4 CC4 信号の出力モードを選択します。

CC4 信号のパルス幅をμs単位で指定します。

「1パルス出力」ボタンをクリックすると、設定した幅のパルスを

信号を出力します。

Page 426: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

426

8. 汎用カウンタ

「Counter」タブ上で、汎用カウンタの設定と汎用カウンタの値を取得する事ができます。

※PEX-H530821, H530922, H531021, H531122, H531221 では使用することが出来ません。

・Counter1 のカウントモードを選択します。

Interval Timer(1μs):1μs毎にカウントアップします。

Camera Frame:フレームカウンタです。

Encoder:エンコーダカウンタです。

・カウンタ周期を設定します。

・Counter2 のカウントモードを選択します。

Timer(1μs):1μs毎にカウントアップします。

Frame:フレームカウンタです。

Encoder:エンコーダカウンタです。

・カウンタ周期を設定します。

SetCounter

・Counter3 のカウントモードを選択します。

Timer(1μs):1μs毎にカウントアップします。

Frame:フレームカウンタです。

Encoder:エンコーダカウンタです。

・カウンタ周期を設定します。

Counter1 のカウンタ値を取得します。

Counter2 のカウンタ値を取得します。

GetCounter

Counter3 のカウンタ値を取得します。

Page 427: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

427

9. エンコーダカウンタ

「EncodeMode」タブでエンコーダ入力の設定を行う事ができます。

※PEX-H530821, H530922, H531021, H531122, H531221 では使用することが出来ません。

Direction エンコーダパルスカウンタのカウント方向を選択します。

Normal:通常方向

Reverse:逆方向

Edge カウント逓倍を選択します。

Single-edge-evaluation:1 逓倍

Double-edge-evaluation:2 逓倍

Quad-edge-evaluation:4 逓倍

PulseMode エンコーダパルスカウント方式を選択します。

Single-phase pulse count mode : 単相パルスカウントモード

Phase-shifted pulse count mode : 位相差パルスカウントモード

Page 428: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

428

10. シリアル制御

「Serial」タブでカメラとのシリアル通信を行えます。

Data Type シリアル通信するデータの形式を選択します。

Binay Data : 16 進数のバイナリデータ形式です。

ASCII Code : ASCII コード形式です。

Ctrl Code データ形式を ASCII コードに選択した場合、データに付加する制

御コードです。

STX+ETX:

データの先頭に STX(02h)、末尾に ETX(03h)を付加してデータ送

信します。

CR:

データの末尾に CR コード(0Dh)を付加してデータ

送信します。

CR+LF:

データの末尾に CR コード(0Dh)と LF コード(0Ah)を付加して

データ送信します。

None:

何も付加せずに、データ送信します。

Page 429: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

429

Send 送信するデータ(文字)を入力します。入力後、Enter を押すと入

力した行のデータを送信します。

・ASCII コードの場合

入力した文字を左から順に送信します。

・バイナリデータの場合

16 進数で入力してください。

2 文字で 1バイト分のデータとなります。

例) 123456 の場合

12h,34h,56h の順番で送信します。

12345 の場合

01h,23h,45h の順番で送信します。

Recive カメラより受信されたデータを表示します。

・ASCII コードの場合

受信したデータを文字列に変換して表示します。

ただし、受信データが ACK(06h)、NAK(15h)の場合は、

「ACK」、「NAK」と表示されます。

・バイナリデータの場合

受信されたデータをそのまま表示します。

1 バイト分のデータを 2文字で表示します。

データが 12h,34h,45h と受信された場合 123456 と

表示されます。

Page 430: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

430

11. 物理メモリ確保サイズの変更

x64 環境下で、確保された物理メモリサイズの確認と、サイズの変更を行う事ができます。

メイン画面のメニューの「View」-「Memory Setting」をクリックすると「Memory Setting」ダイアロ

グが表示されます。

ダイアログはサイズ欄に現在確保中の物理メモリのサイズを表示しています。

サイズ欄に確保したいサイズ(16 進数)を入力して「OK」ボタンをクリックしてください。

サイズ変更処理が成功すると、以下のようなメッセージが表示されます。

サイズ変更を反映させるには、CmlUtl.exe を終了し OS の再起動を行ってください。

OS 再起動後、CmlUtl.exe を起動し、「Memory Setting」ダイアログ上に確保されたサイズが表示さ

れています。

(注意)

ご使用の PC 環境によっては、指定したサイズで物理メモリを確保できるとは限りません。

お客様自身で 適なサイズを確保していただきますようお願い致します。

Page 431: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

431

第7章 重要な情報

保証の内容と制限

弊社は本ドキュメントに含まれるソースプログラムの実行が中断しないこと、またはその実行に

誤りが無いことを保証していません。

本製品の品質や使用に起因する、性能に起因するいかなるリスクも使用者が負うものとします。

弊社はドキュメント内の情報の正確さに万全を期しています。万一、誤記または誤植などがあっ

た場合、弊社は予告無く改訂する場合があります。ドキュメントまたはドキュメント内の情報に

起因するいかなる損害に対しても弊社は責任を負いません。

ドキュメント内の図や表は説明のためであり、ユーザ個別の応用事例により変化する場合があり

ます。

著作権、知的所有権

弊社は本製品に含まれるおよび本製品に対する権利や知的所有権を保持しています。

本製品はコンピュータ ソフトウェア、映像/音声(例えば図、文章、写真など)を含んでいます。

医療機器/器具への適用における注意

弊社の製品は人命に関わるような状況下で使用される機器に用いられる事を目的として設計、製

造された物では有りません。

弊社の製品は人体の検査などに使用するに適する信頼性を確保する事を意図された部品や検査機

器と共に設計された物では有りません。

医療機器、治療器具などの本製品の適用により、製品の故障、ユーザ、設計者の過失などにより、

損傷/損害を引き起こす場合が有ります。

複製の禁止

弊社の許可なく、本ドキュメントの全て、または一部に関わらず、複製、改変などを行うことは

できません。

責任の制限

弊社は、弊社または再販売者の予見の有無にかかわらず発生したいかなる特別損害、偶発的損害、

間接的な損害、重大な損害について、責任を負いません。

本製品(ハードウェア,ソフトウェア)のシステム組み込み、使用、ならびに本製品から得られる

結果に関する一切のリスクについては、本製品の使用者に帰属するものとします。

本製品に含まれるバグ、あるいは本製品の供給(納期遅延)、性能もしくは使用に起因する付帯的

損害もしくは間接的損害に対して、弊社に全面的に責がある場合でも、弊社はその製品に対する

改良(正常に動作する)、代品交換までとし、金銭面での賠償の責任は負わないものとしますので、

予めご了承ください。

本製品(ソフトウェアを含む)は、日本国内仕様です。本製品を日本国外で使用された場合、弊

社は一切責任を負いかねます。また、弊社は本製品に関し、海外での保守サービスおよび技術サ

ポート等は行っておりません。

Page 432: GPC-5300 -  · PDF file... (2値化上限しきい値、2値化下限 ... Bin 2値画像キャプチャサンプル ... Sub_Lut 拡張基板での階調変換サンプル

GPC-5300 Help for Windows

© 2005、2016 Interface Corporation. All rights reserved.

432

商標/登録商標

本書に掲載されている会社名、製品名は、それぞれ各社の商標または登録商標です。