45
Edition 2.0 2012 8 17 Basler API C# スタートアップガイド

Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

Edition 2.0 2012 年 8 月 17 日

Basler API C# スタートアップガイド

Page 2: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual
Page 3: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

ご使用にあたっての注意 Microsoft, Windows, Windows 2000, Windows XP, Windows Vista, Windows 7 および

Visual Basic, Visual C#は、マイクロソフト社の商標もしくは登録商標です。 その他の商品名などは、各社の商標もしくは登録商標です。 本書で使用しているソフトウエアやマニュアルの一部または全部を、株式会社リンクスの書面

による許可なくして転載することはできません。また、このマニュアルで記載している内容や

ソフトウエアを、現状のまま、もしくは一部改良を加えて再販することは固く禁じられていま

すのでご注意ください。 なお、本書の内容は将来予告なしに変更する場合があります。また、内容に関しては万全を期

して作成いたしましたが、万一、本書の記述に誤りがあった場合でも弊社では一切その責任を

負いかねますのでご了承ください。

技術的お問い合わせについて

BASLER カメラのご使用に関して疑問が生じた場合は、下記までお問い合わせください。 株式会社リンクス テクニカルサポートセンター

〒225-0014 神奈川県横浜市青葉区荏田西 1-13-11 FAX : 045-979-0732 e-mail : [email protected] Web : http://www.linx.jp

技術サポートを正確に行うために、お問い合わせはファックスまたは電子メールでお願いしま

す。

更新履歴

初版: 2011 年 2 月 21 日 2 版: 2012 年 8 月 17 日

i

Page 4: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

ii

目次

1. .......................................................................................................................... 1 はじめに

1.1 ........................................................................................................... 1 システム条件

2. ......................................................................... 2 C#サンプルプログラムによる取り込み

2.1 ............................................................. 2 C#サンプルプログラムの読み込みと実行

3. ........................................................................................... 5 VC#によるプログラミング

3.1 ................................................................................................ 5 プログラミング概略

3.2 ...................................................................... 5 画像データのバッファへの取り込み

3.2.1 ................................................................................................ 5 カメラの初期化

3.2.2 ....................................................................................................... 8 画像の取得

3.2.3 ............................................................................................ 9 カメラの終了処理

3.3 ................................................................................................ 9 取り込み画像の表示

3.3.1 ................................................................................. 9 画像表示プログラミング

3.4 .......................................................................................... 12 ビルドの設定について

4. ......................................................................................................... 14 カメラの設定変更

4.1 ....................................................................................... 14 パラメーター変更の手順

4.1.1 .............................................................................................. 15 露光時間の変更

4.2 .............................................................................................. 17 カメラのモード切替

4.2.1 ........................................................................... 17 ソフトウエアトリガモード

4.2.2 ........................................................................... 20 ハードウエアトリガモード

5. .......................................................................................... 22 カメラの設定パラメーター

5.1 ................................................................................................... 22 Analog Controls5.2 ....................................................................................................... 23 Image Format5.3 ......................................................................................................... 24 AOI Controls5.4 ............................................................................................. 25 Acquisition Controls5.5 .............................................................................................. 27 Digital I/O Controls5.6 ............................................................................... 28 Counter and Timer Controls5.7 ......................................................................................................... 30 LUT Controls5.8 ..................................................................................................... 30 Transport Layer5.9 ............................................................................................... 36 Configuration Sets5.10 .................................................................................. 37 Auto Function Parameters5.11 .............................................................................................. 38 Device Information5.12 ............................................................................................ 40 Chunk Data Streams5.13 ................................................................................................ 40 Events Generation5.14 ................................................................................... 41 Remove Parameter Limits

Page 5: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

1. はじめに

本文書では、Pylon で提供されている API で画像取り込みを行うことを説明しています。その

ため、取り込み設定は正常に行われていることを想定しています。取り込み設定に関しては、

「Basler Pylon スタートアップガイド」もしくは「Basler ace スタートアップガイド」をご一

読ください。 本文書では、C#開発言語を利用した方法を説明します。なお、今回提供するサンプルプログラ

ムでは Visual Studio 2005 を利用しています。

1.1 システム条件 本文書ではWindows 上でアプリケーションを構築していくことを想定しています。そのため、

開発環境については以下の条件を満たす必要があります。 C#言語の場合 Visual Studio 2003 以上 .NET の場合 Visual Studio 2005 以上、.NET Framework2.0 の使用

1

Page 6: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

2. C#サンプルプログラムによる取り込み

本節では Visual Studio の開発環境を利用して、C#での画像取り込み方法を説明します。ここ

ではサンプルプログラムを通してプログラミングの説明を行いますが、ここで使用するサンプ

ルプログラムは、Pylon をインストールした際にインストールされるものではなく、別途用意

したプログラムになりますのでご注意ください。本サンプルプログラムは、弊社ホームページ

よりダウンロードすることができます。 リンクスホームページ

http://www.linx.jp/download/camera/index.html

2.1 C#サンプルプログラムの読み込みと実行 本節ではサンプルプログラムを実行し、実際に API を利用して画像の撮影を行います。

1. サンプルプログラムの読み込み

リンクスホームページで配布しているファイルを解凍し、プロジェクトファイルを Visual Studio で開きます。SamplePrograms¥PylonGrabSampleGUI¥PylonGrabSampleStream_CSフォルダにあるプロジェクトファイルを開くと、以下のように表示されます。

2

Page 7: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

2. ビルドの実行

サンプルプログラムのビルドを行います。ソリューションエクスプローラからプロジェクトを

選択し、右クリックにてコンテキストメニューを表示します。コンテキストメニューより“ビ

ルド”を選択します。

3. プログラムの実行

F5 キーにより、プログラムを実行してください。サンプルプログラムが実行され、以下のダ

イアログが表示されます。 プログラムを実行するためには、初めに”Open”ボタンをクリックします。”Open”ボタンを

クリックすることで、画像を取り込むための初期化が行われます。初期化が成功すると、上部

のメッセージボックスに ”カメラのオープンに成功しました” と表示されます。

3

Page 8: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

カメラの初期化に成功後、”Grab”ボタンが有効になります。”Grab”ボタンをクリックするご

とに画像の撮影が行われます。

撮影後、”Close”ボタンをクリックすると、取り込みの終了処理を行います。”Exit”ボタンを

クリックするとプログラムを終了します。

4

Page 9: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

3. VC#によるプログラミング

3.1 プログラミング概略 本章では、カメラから画像を取り込む流れについて説明します。プログラミングの流れを理解

することで、プログラミングにおいてどのような処理が必要か明確化でき、理解が容易になり

ます。 カメラから画像を取得する流れは、大きく分けて以下の 3 つのステップに分けることができま

す。

① カメラオープン処理 ② 画像の取得処理 ③ カメラクローズ処理

それぞれのステップにおいて、行う処理は具体的に以下のとおりです。

① カメラオープン処理 PC に接続されているカメラ情報を取得する 各カメラに対して初期化を行う

② 画像の取得処理

カメラに対して取り込みを実行する

③ カメラクローズ処理 各カメラに対して終了処理を行う

3 つの処理を踏まえたうえで、次項よりプログラミングの詳細を説明します。

3.2 画像データのバッファへの取り込み 本節では具体的なプログラムを通して、画像取り込みについて説明します。 使用するプログラムは も単純な画像取り込み手順であり、カメラから画像を 1 枚取得し、そ

のデータがメモリに展開されるプログラムです。サンプルプログラムはリンクスホームページ

より取得ください。 プログラムについて、3.1プログラミング概略の流れに沿って説明を行います。プログラムフ

ァイルはSamplePrograms¥PylonAPI Program¥C#¥SimpleStreamGrab_CSにあるプロジェク

トファイル(Visual Studio 2010 にて作成)を使用します。

3.2.1 カメラの初期化 カメラの初期化手順は、PC に接続されているカメラの情報取得と、カメラそれぞれに対する

初期化に分割することができます。まずは、PC に接続されているカメラの情報取得について

説明します。

5

Page 10: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

Pylon.Initialize(); ・・・・① numDevices = Pylon.EnumerateDevices(); ・・・・② if (0 == numDevices) { throw new Exception("デバイスが見つかりません."); } まず①において、Pylon 自身の初期化を行います。この初期化処理は、Pylon を使用するアプ

リケーションではプログラムの初期化段階で必ず実行する必要があります。 次に②において、このプログラムを実行する PC に接続されているカメラの数を取得します。

もしカメラが接続されていなければ、0 を返します。 Pylon の初期化が完了すると、カメラに対する初期化を行います。下記の部分が各カメラに対

する初期化になります。

hDev = Pylon.CreateDeviceByIndex(0); ・・・・① Pylon.DeviceOpen(hDev, Pylon.cPylonAccessModeControl |

Pylon.cPylonAccessModeStream); ・・・・② hGrabber = Pylon.DeviceGetStreamGrabber(hDev, 0); ・・・・③ Pylon.StreamGrabberOpen(hGrabber); ・・・・④ hWait = Pylon.StreamGrabberGetWaitObject(hGrabber); ・・・・⑤ Pylon.DeviceFeatureFromString(hDev, "AcquisitionMode", "SingleFrame"); ・・・・⑥ isAvail = Pylon.DeviceFeatureIsWritable(hDev, "GevSCPSPacketSize");・・・・⑦ if (isAvail) { Pylon.DeviceSetIntegerFeature(hDev, "GevSCPSPacketSize", 1500); } Pylon.StreamGrabberSetMaxNumBuffer(hGrabber, 1); ・・・・⑧

payloadSize = (uint)Pylon.DeviceGetIntegerFeature(hDev, "PayloadSize"); ・・・・⑨ Pylon.StreamGrabberSetMaxBufferSize(hGrabber, payloadSize); Pylon.StreamGrabberPrepareGrab(hGrabber); ・・・・⑩

6

Page 11: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

buffer = new PylonBuffer<byte>(payloadSize, true); ・・・・⑪ buffers = new Dictionary<PYLON_STREAMBUFFER_HANDLE, PylonBuffer<Byte>>(); hStream = Pylon.StreamGrabberRegisterBuffer(hGrabber, ref buffer); buffers.Add(hStream, buffer); Pylon.StreamGrabberQueueBuffer(hGrabber, hStream, 0); ・・・・⑫

実際に各カメラに対する制御を行うのは PYLON_DEVICE_HANDLE クラスです。このクラス

のインスタンスに対して、①において、PC に接続されているカメラリストの 1 番目のものを

割り当てています。②では、PYLON_DEVICE_HANDLE のインスタンスにより制御を可能にす

るためのカメラの初期化を行っています。この引数として、第一引数にはカメラを制御するイ

ンスタンスを渡し、第二引数にて、カメラをどのモードで開くか設定します。ここで設定でき

るカメラのモードは以下のとおりです。 Pylon.cPylonAccessModeControl : カメラのすべてのパラメーターを制御することが

できるモードです。

Pylon.cPylonAccessModeStream : カメラから出力される画像データにアクセスする

ことができるモードです。

Pylon.cPylonAccessModeExclusive : このフラグを立てると他のアプリケーションか

らアクセスすることができなくなります。

Pylon.cPylonAccessModeMonitor : カメラのパラメーターを参照することしかでき

なくなります。 上記のうち Pylon.cPylonAccessModeControl と Pylon.cPylonAccessModeStream が有効にな

っているので、カメラのすべてのパラメーターにアクセスでき、なおかつカメラから取得され

るデータの操作が可能になります。 カメラの初期化が終了すると、③において、ストリームグラバーを取得しています。Pylon で

は、カメラ自身を設定するハンドルとは別に、カメラから出力されてくる画像の操作を専門に

行うためのハンドルが用意されています。そのため、画像のバッファなどの設定はこのストリ

ームグラバーに対して行うことになります。 ④でストリームグラバーを初期化し、⑤においてストリームグラバーが画像オブジェクトの待

ちになります。⑥では、カメラの取り込みのモードを変更しています。 ⑦ではカメラのパケットサイズが変更できるか確認を行っています。このパラメーターは必ず

しも設定する必要はありませんが、GigE カメラの場合、パケットはジャンボパケット、つま

り、細切れとなったパケットを数多く転送するのではなく、極力パケットサイズを大きくして

データを送信することを推奨しています。そのため、このサンプルプログラムでも、パケット

サイズが変更できる場合はサイズを変更しています。 ⑧ではストリームグラバーに割り当てるバッファの数を指定しています。⑪で画像バッファを

用意していますが、その画像バッファを確保するために必要な画像のサイズを⑨で取得してい

ます。⑩によりストリームグラバーが取り込みの待ちとなります。その後、⑫によりストリー

7

Page 12: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

ムグラバーの画像バッファも取り込み待ちの状態になります。この関数が実行された後は、バ

ッファに関する変更は不可能になり、変更したい場合には取り込みの待ち状態を解除しなけれ

ばいけません。

3.2.2 画像の取得 カメラの初期化が完了すると、画像の取り込みを行います。画像の取り込みは以下のようなプ

ログラムになります。 Pylon.DeviceExecuteCommandFeature(hDev, "AcquisitionStart"); ・・・・① if (Pylon.WaitObjectWait(hWait, 3000)) ・・・・② { Byte min, max; PylonGrabResult_t grabResult; if (Pylon.StreamGrabberRetrieveResult(hGrabber, out grabResult)) ・・・・③ { if (grabResult.Status == EPylonGrabStatus.Grabbed) { if (buffers.TryGetValue(grabResult.hBuffer, out imgBuf)) { getMinMax(imgBuf.Array, grabResult.SizeX, grabResult.SizeY,

out min, out max); Console.WriteLine("画像取り込み成功!. 小輝度値 = {0},

大輝度値 = {1}", min, max); } else { Console.Error.WriteLine("画像取り込み失敗.

エラーコード = {0}", grabResult.ErrorCode); } } } else{ Console.Error.WriteLine("画像取り込み失敗. エラーコード = {0}", grabResult.ErrorCode); } } else { Console.WriteLine("タイムアウト."); } 実際に取り込みを行うのは①の実行のみです。その後、②において 3 秒取り込み完了を待ちま

す。もしこの間に画像のオブジェクトが得られなければ、タイムアウトエラーになります。取

り込みに成功すると、③において取得画像が正常であるか確認を行い、画像が正常であれば、

画像の輝度値を確認する処理を行います。

8

Page 13: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

3.2.3 カメラの終了処理 取り込みが完了すると、それまでに利用したインスタンスに対して終了処理を実行する必要が

あります。終了処理は以下のとおりです。

imgBuf.Dispose(); ・・・・① Pylon.DeviceClose(hDev); ・・・・② Pylon.DestroyDevice(hDev); ・・・・③ imgBuf = null; ・・・・④ Pylon.Terminate(); ・・・・⑤ Console.Error.WriteLine("¥n終了するにはキーを押してください."); Console.ReadLine();

①において、画像のバッファを破棄しています。その後、②、③において、カメラに対するク

ローズ処理を行っています。 後に④を実行することで、Pylon 全体に対しての終了処理とな

ります。 プログラムを実行すると、カメラが正常に動作した場合 MS-DOS プロンプトにおいて以下の

ように表示されます。

3.3 取り込み画像の表示 本節では、実際に取り込んだ画像の表示を行う方法について紹介します。この節における説明

は、2.1C#サンプルプログラムの読み込みと実行で使用したサンプルプログラムを用いて行い

ます。 画像の表示は、1 次元配列に格納されたデータを bitmap 形式に変換し、ピクチャーボックス

に表示することで行います。

3.3.1 画像表示プログラミング

本節では、取り込み手順は3.2画像データのバッファへの取り込みで説明した内容と同じにな

るため省略します。実際のプログラミングは以下のようになります。

9

Page 14: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

Pylon.DeviceExecuteCommandFeature(hPylonDeviceHandle, "AcquisitionStart"); ・・・・① if (Pylon.WaitObjectWait(hWait, 3000)) { isReady = Pylon.StreamGrabberRetrieveResult(hGrabber, out grabResult); if (isReady) {

if (grabResult.Status == EPylonGrabStatus.Grabbed) { if (buffers.TryGetValue(grabResult.hBuffer, out imgBuf)) { CreateBitmap(ref bitmap, grabResult, imgBuf); ・・・・② if (bitmap != null) { SaveImage.Enabled = true; Display.Image = bitmap; StatusMessage.Text = "画像取込に成功しました。(" + (++counter) + ")"; } else { StatusMessage.Text = "撮像に失敗しました。(ビットマップ生成エラー)"; throw new Exception(); }

Pylon.StreamGrabberQueueBuffer(hGrabber, grabResult.hBuffer, grabResult.Context);

} else { StatusMessage.Text = "撮像に失敗しました。(画像の取得失敗)"; throw new Exception(); } } } else ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ private void CreateBitmap( ref Bitmap bitmap, PylonGrabResult_t grabResult, PylonBuffer<Byte> imgBuf ) { PylonBuffer<Byte> newBuffer = null; if (grabResult.PixelType == EPylonPixelType.PixelType_Mono8) ・・・・③ { bitmap = new Bitmap(grabResult.SizeX, grabResult.SizeY, PixelFormat.Format8bppIndexed); ColorPalette colorPalette = bitmap.Palette; for (int i = 0; i < 256; i++) { colorPalette.Entries[i] = Color.FromArgb(i, i, i); } bitmap.Palette = colorPalette; newBuffer = imgBuf; }

10

Page 15: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

else if(grabResult.PixelType == EPylonPixelType.PixelType_YUV422packed) ・・・・④ { bitmap = new Bitmap(grabResult.SizeX, grabResult.SizeY,

PixelFormat.Format32bppRgb); if (!hConverter.IsValid) { hConverter = Pylon.PixelFormatConverterCreate(hPylonDeviceHandle,

1); ・・・⑤ } Pylon.PixelFormatConverterConvert(hConverter, ref newBuffer, imgBuf); } BitmapData bmpData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width,

bitmap.Height), ImageLockMode.ReadWrite, bitmap.PixelFormat); IntPtr ptrBmp = bmpData.Scan0; int imageStride = grabResult.PixelType == EPylonPixelType.PixelType_Mono8 ?

grabResult.SizeX : grabResult.SizeX * 4;

if (imageStride == bmpData.Stride) { Marshal.Copy(newBuffer.Array, 0, ptrBmp, bmpData.Stride * bitmap.Height); } else { for (int i = 0; i < bitmap.Height; ++i) { Marshal.Copy(newBuffer.Array, i * imageStride, new IntPtr(ptrBmp.ToInt64()

+ i * bmpData.Stride), grabResult.SizeX); } } bitmap.UnlockBits(bmpData); }

上記①において、取り込み開始の命令をカメラに対して送信しています。その後の IF 分岐に

より、正常に画像が撮影できたかを確認しています。②において取得画像の表示を行うための

Bitmap に変換しています。 CreateBitmap のメソッドは実際に撮影画像を Bitmap 形式に変換するために実行します。こ

の関数では、データがモノクロかカラーかを判断して、どちらも Bitmap 形式に正常に変換で

きるようになっています。③において取得画像がモノクロであると判断されると、Bitmap 関

数によりデータの作成が行われます。 ④においてカラー画像と判断されると、Bitmap 関数によりデータを作成された後、⑤におい

て PixelFormatConverterCreate 関数を呼び出しています。これは Pylon API で提供されてい

る関数です。接続されているカメラがカラー画像の場合、カメラは RGB のデータを PC に送信

しているのではなく、YUV データのうち YU のデータを PC に送信しています。このデータか

ら RGB のカラーデータに変換する必要があるため、⑤で変換を行っています。データが完成

した後は、Bitmap 形式として画像の幅が 4 の倍数である必要があるため、その並び替えを行

っています。

11

Page 16: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

3.4 ビルドの設定について これまでに紹介したプログラムでは、.NET ライブラリの参照設定をプロジェクトファイルに

設定しているため、特別な設定を行う必要はありません。しかし、実際のアプリケーションで

は設定をアプリケーションごとに行う必要があります。ここでは、.NET ライブラリの参照設

定方法について説明します。

1. ダイアログを開く

ソリューションエクスプローラのツリーにおいて、“参照設定”を選択します。右クリックに

よりコンテキストメニューを開き、“参照の追加”を選択します。

2. 共通言語ランライムサポート

参照の追加のダイアログにおいて、.NET タブを開き、表示されるリストから Pylon.NET を選

択します。

12

Page 17: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

または、同じダイアログの参照タブより C:¥Program Files¥Basler¥pylon 3.1¥pylonc.net¥binを参照することでも同じ設定を行うことができます。

13

Page 18: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

3. 設定の確認

再びソリューションエクスプローラのツリーにおいて、PylonC.NET が追加されていることが

確認できれば、設定は終了です。

4. カメラの設定変更 カメラを実際に使用する場合には、ご利用になる目的や環境に合わせて適切な設定を行う必要

があります。本章では、Pylon API を通してカメラの設定をプログラムから変更する方法につ

いて説明します。

4.1 パラメーター変更の手順 Basler GigE カメラは目的に沿った豊富な設定項目を提供しています。この豊富な設定項目の

中から目的にあったパラメーターを見つけ、Pylon API で設定する方法について、カメラのビ

ューワーソフト Pylon Viewer を用いた容易な方法を紹介します。 パラメーターの変更については、大きく分けて 3 つの手順に分割できます。

1. Pylon Viewer にて目的の機能(パラメーター)を見つける 2. 目的の動作を確認し、Pylon Viewer の説明箇所に表示されるパラメーター名を取

得する 3. Pylon API によりプログラムに実装する

上記 3 つの手続きを踏まえ、実際にパラメーターを変更する機能をアプリケーションに実装し

ます。

14

Page 19: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

4.1.1 露光時間の変更 本節では、実際にPylon APIを利用して露光時間を変更します。プログラムについては、2.1 C#サンプルプログラムの読み込みと実行 を利用して行います。 1. Pylon Viewer にて露光時間を変更 Pylon Viewer を利用して露光時間の変更を行います。Pylon Viewer の使用方法は Basler Pylon スタートアップガイドをご参照ください。露光時間については、下図のようにカメラを

コントロールするための Features にて、Basler → Acquisition Controls →Exposure time (abs)[us]の値を変更することで設定を行うことができます。

2. パラメーター名の確認 Pylon Viewer にて露光時間が変更できることを確認した後、Features の Exposure Time (Abs)[us]を選択した状態で、ツールの下部にある Feature Documentation を確認します。

Feature Documentation には、選択したパラメーターの説明が表示されます。ここで、Node Name に変更したパラメーター名、Interface Type に設定値の型が表示されます。この Node

15

Page 20: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

Name をコピーし、変更する値が IFloat 型であることを控えておきます。 3. パラメーターの実装 先ほど利用したパラメーターをプログラムに実装します。2.1C#サンプルプログラムの読み込

eviceSetFloatFeature 関数は、カメラに対して Float 型の値を設定するために用意されてい

数に対して、カメラへのハンドル、設定パラメーター名、書き込む値を指定して実行し

みと実行 で利用したサンプルプログラムをVisual Studioで開き、Grab_Click関数において

Pylon.DeviceExecuteCommandFeatureで”AcquisitionStart”を実行する関数の前に、以下の

ように追加します。

Dる 関 数 で す 。 こ の 他 に も 、 設 定 値 の 型 に 合 わ せ て DeviceSetBooleanFeature や

DeviceSetIntegerFeature などが用意されています。利用する関数については、Pylon Viewer上で確認できる Feature Documentation に記載されている Interface Type により判断しま

す。 この関

ます。設定パラメーター名には、Feature Documentation で確認したパラメーター名を指定

します。 4. Pylon API プログラムにおける露光時間変更の確認 プログラムを追加した後、実際にアプリケーションを実行して露光時間が変わることを確認し

0000µsec の場合

てください。 4

Pylon.DeviceSetFloatFeature(hPylonDeviceHandle, "ExposureTimeAbs", 10000); //追加部分

ylon.DeviceExecuteCommandFeature(hPylonDeviceHandle, "AcquisitionStart"); P

16

Page 21: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

5000µsec の場合

4.2 カメラのモード切替

えを Pylon API で行う方法について説明します。これまで

4.2.1 ソフトウエアトリガモード について説明します。ソフトウエアトリガモ

本節では、取り込みモードの切り替

のサンプルプログラムでは、カメラのタイミングで画像を取り込むフリーランモードにて取り

込みを行いました。ここでは、ソフト上で撮影のタイミングをカメラに知らせる“ソフトウエ

アトリガモード”、外部からの入力信号のタイミングで画像の撮影を行う“ハードウエアトリガ

モード”の説明を行います。

ここでは、ソフトウエアトリガモードの取り込み

ードの実装方法についても、露光時間の切り替えと同様に、まず初めに Pylon Viewer にて取

り込み動作とパラメーター名を確認し、そのパラメーター名を利用してアプリケーションに実

装します。 1. Pylon Viewer によるソフトウエアトリガ取り込み はじめに Pylon Viewer にてソフトウエアトリガ取り込みを確認します。

17

Page 22: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

取り込みを開始する前に、カメラのモード設定を変更します。Acquisition Controls ツリーにお

いて、Trigger Mode の項目を”On”、Trigger Source の項目を”Trigger Software”に変更しま

す。この変更の後に、連続取り込みの開始ボタンをクリックします。Pylon Viewer に画像表示

用のウインドウが表示されますが、この時点では画像は表示されません。この状態で、Generate Software Trigger の項目にある”Execute”ボタンをクリックします。このとき、初めて画像が撮

影され、ウインドウに画像が表示されます。”Execute”のボタンをクリックするごとに画像が撮

影されることを確認してください。 2. パラメーターの確認 変更したパラメーターを Feature Documentation にて確認します。利用したパラメーターは以

下のとおりです。 Trigger Mode NodeName : TriggerMode

Interface Type : IEnumeration • Interface Type が IEnumeration の場合、文字列を指定します。この場合、設定したい項目

の” Symbolic Name”の値を指定します。このときの文字列は”On”です。 Trigger Source NodeName :TriggerSource

Interface Type : IEnumeration ※ Trigger Source の値は” Software”です Generate Software Trigger NodeName : TriggerSoftware

Interface Type : ICommand • Interface Type が ICommand の場合、コマンドを実行するための関数に、NodeName を指

定します。 3. モード変更の実装

18

Page 23: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

Pylon Viewerに確認したパラメーターを実装します。4.1.1露光時間の変更 と同様にGrab_Click関数のPylon.DeviceExecuteCommandFeatureで”AcquisitionStart”を実行する関数の前に、以

下のように追加します。

関数の①と②において、取り込みのモードを変更しています。取り込みのモードが変更された後

に、③で取り込み開始を行っています。ただし、取り込みがトリガモードに切り替わっているの

で、画像の撮影は行いません。④の関数を実行することで初めて撮影が行われます。 4. 撮影の確認 プログラムを実行して、正しく撮影が行えることを確認してください。なお、 Pylon.DeviceExecuteCommandFeature(hPylonDeviceHandle, "TriggerSoftware");を無効化す

ることで、撮影が行えなくなり、正しくソフトウエアトリガモードで動作していることを確認す

ることができます。

Pylon.DeviceExecuteCommandFeature(hPylonDeviceHandle, "AcquisitionStart");・・・③ Pylon.DeviceExecuteCommandFeature(hPylonDeviceHandle, "TriggerSoftware");・・・④

Pylon.DeviceFeatureFromString(hPylonDeviceHandle, "TriggerMode", "On");・・・① Pylon.DeviceFeatureFromString(hPylonDeviceHandle,

"TriggerSource", "Software");・・・②

19

Page 24: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

4.2.2 ハードウエアトリガモード ここではハードウエアトリガ取り込みについて、Pylon API を用いた実装方法を説明します。

基本的なプログラミングについては、ソフトウエアトリガと変わりません。 1. Pylon Viewer による取り込み確認 ハードウエアトリガによる取り込みが正常に動作するか Pylon Viewer にて確認を行います。

取り込みを開始する前に、カメラの設定を変更します。Acquisition Controls ツリーにおいて、

Trigger Mode の項目を”On”、Trigger Source の項目を”Line 1”もしくは”Line 2”に変更しま

す。この入力ラインの選択に関しては、ご利用環境に合わせて設定してください。次に、トリ

ガの極性を示す Trigger Activation を”Rising Edge”もしくは”Falling Edge”の設定にします。

こちらもご利用環境に合わせて適切な設定を行ってください。変更が完了した後に、連続取り

込みの開始ボタンをクリックします。Pylon Viewer に画像表示用のウインドウが表示されま

すが、この時点では画像は表示されません。外部よりトリガ信号を入力するごとに、画像が表

示されることをご確認ください。 2. パラメーターの確認 変更したパラメーターを Feature Documentation にて確認します。利用したパラメーターは

以下のとおりです。 Trigger Mode NodeName : TriggerMode

Interface Type : IEnumeration ※ Trigger Mode の値は” On”です

20

Page 25: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

Trigger Source NodeName :TriggerSource

Interface Type : IEnumeration ※ Trigger Source の値は” Line1”もしくは” Line2”です。 Trigger Source NodeName : TriggerActivation

Interface Type : IEnumeration ※ Trigger Activation の値は” RisingEdge”もしくは” FallingEdge”です。 4. モード変更の実装

Pylon Viewerに確認したパラメーターを実装します。4.1.1露光時間の変更 と同様に

Grab_Click関数のPylon.DeviceExecuteCommandFeatureで”AcquisitionStart”を実行する関

数の前に、以下のように追加します。

①において、カメラのモードをトリガモードに切り替えています。その後、②において Line1より入力される信号をトリガとして設定し、③においてトリガの極性を指定しています。④に

てトリガ取り込みを開始していますが、実際にはトリガ入力を待つ状態になります。 5. 撮影の確認 プログラムを実行し、Open ボタンで初期化を行い、Grab ボタンで取り込みを開始します。

このとき、ピクチャーボックスには画像は表示されず、トリガが入力されたタイミングで画像

が表示されることを確認してください。

Pylon.DeviceFeatureFromString(hPylonDeviceHandle,

"TriggerActivation", "RisingEdge")・・・③ Pylon.DeviceExecuteCommandFeature(hPylonDeviceHandle,

"AcquisitionStart"); ・・・④

Pylon.DeviceFeatureFromString(hPylonDeviceHandle, "TriggerMode", "On");・・・① Pylon.DeviceFeatureFromString(hPylonDeviceHandle, "TriggerSource", "Line1");・・・②

21

Page 26: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

5. カメラの設定パラメーター

BASLER カメラは非常に多くの設定パラメーターを有しており、これらを適切に設定すること

によって高度な画像取込を実現することができます。この章では Pylon を通して設定可能なカ

メラパラメーター一覧を紹介します。

5.1 Analog Controls カテゴリー パラメーター (Node Name) 説明

GainAuto 自動ゲイン設定機能モードを設定します。自

動ゲイン設定機能を用いてゲインを自動的に

調整する場合に使用します。 Enum Value: Off, Once, Continuous Interface Type: IEnumeration

GainSelector ゲイン制御方法を選択します。 Enum Value: All Interface Type: IEnumeration

ゲイン設定

GainRaw 選択したゲイン制御に指定する値を設定しま

す。設定は整数値です。 Interface Type: IInteger

ブラックレベ

ル設定

BlackLevelSelector ブラックレベル制御方法を選択します。 Enum Value: All Interface Type: IEnumeration

22

Page 27: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

BlackLevelRaw ブラックレベルの制御値を整数で指定しま

す。 Interface Type: IInteger

BalanceWhiteAuto 自動ホワイトバランス機能を適用します。 Enum Value: Off, Once Interface Type: IEnumeration

BalanceRatioSelector BalanceRatio 制御方法を選択します。 Enum Value: Red, Green, Blue Interface Type: IEnumeration

BalanceRatioAbs BalanceRatio の制御値を実数で指定します。 Interface Type: IFloat

ホワイト バランス設定

BalanceRatioRaw BalanceRatio の制御値を整数で指定します。 Interface Type: IInteger

GammaEnable ガンマ補正の適用有無を選択します。 Interface Type: IBoolean

ガンマ補正設

Gamma ピクセル輝度のガンマ補正を実施します。通

常は CRT のような表示システムの非線形性を

補正するために使用します。 Interface Type: IFloat

ディジタル シフト設定

DigitalShift ディジタルシフト制御の値を指定します。 Interface Type: IInteger

5.2 Image Format カテゴリー パラメーター (Node Name) 説明

PixelFormat 画像のピクセルフォーマットを指定します。 Enum Value: Mono8, Mono12Packed,

Mono12, BayerBG8, BayerBG12, YUV422Packed, YUV422_YUYV_Packed

Interface Type: IEnumeration

画像フォーマ

ット設定

PixelSize (読取専用パラメーター) 画像のピクセルの深さを bit で示します。こ

の値にはピクセルフォーマットの設定が関係

しています。 Interface Type: IEnumeration

23

Page 28: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

PixelColorFilter (読取専用パラメーター) 取得される画像に適用されているベイヤーフ

ィルター配列を示します。 Interface Type: IEnumeration

PixelDynamicRangeMin (読取専用パラメーター) ピクセルが取りうる 小輝度値を示します。 Interface Type: IInteger

PixelDynamicRangeMax (読取専用パラメーター) ピクセルが取りうる 大輝度値を示します。 Interface Type: IInteger

ReverseX 画像を水平方向に反転して出力します。AOI設定は反転させた後の画像に反映されます。 Interface Type: IBoolean

TestImageSelector テスト画像モードを選択します。 Enum Value: Off, Testimage1 ~ 6 Interface Type: IEnumeration

5.3 AOI Controls カテゴリー パラメーター (Node Name) 説明

Width AOI の幅を指定します。 Interface Type: IInteger

AOI サイズ設

Height AOI の高さを指定します。 Interface Type: IInteger

OffsetX AOI の X オフセット(センサーの左端から画

像の左端までの距離)をピクセル単位で指定

します。 Interface Type: IInteger

OffsetY AOI の Y オフセット(センサーの上端から画

像の上端までの距離)をピクセル単位で指定

します。 Interface Type: IInteger

AOI 位置設定

CenterX 画像(AOI)中心の X 座標をセンサー中心に

合わせます。 Interface Type: IBoolean

24

Page 29: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

CenterY 画像(AOI)中心の Y 座標をセンサー中心に

合わせます。 Interface Type: IBoolean

5.4 Acquisition Controls カテゴリー パラメーター (Node Name) 説明 連続取込 枚数設定

AcqusitionFrameCount 一回の取込命令で連続的に取得する画像

の枚数を指定します。(マルチショット機

能) Interface Type: IInteger

TriggerSelector トリガタイプを選択します。 Enum Value: AcquisitionStart,

FrameStart Interface Type: IEnumeration

TriggerMode トリガモードを設定します。 Enum Value: On, Off Interface Type: IEnumeration

TriggerSoftware ソフトウエアトリガ信号を生成します。

TriggerSource を'software'に設定した場

合に使用します。 Interface Type: ICommand

TriggerSource トリガ信号のソースを指定します。 Enum Value: TriggerSoftware, Line1 Interface Type: IEnumeration

TriggerActivation トリガ信号の極性を指定します。 Enum Value: RisingEdge, FallingEdge Interface Type: IEnumeration

トリガ モード設定

TriggerDelayAbs トリガディレイ時間を実数で指定します

(単位:usec)。 トリガ信号を受けてから実際に有効化す

るまでの時間を設定できます。 Interface Type: IFloat

露光モード設

ExposureMode 露光モードを指定します。 Enum Value: Timed, TriggerWidth Interface Type: IEnumeration

25

Page 30: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

ExposureAuto 自動露光機能のモードを有効化します。自

動露光機能は、設定可能範囲内で自動的に

露光時間(AutoExposureTimeAbs)を調

整します。 Enum Value: Off, Once, Continuous Interface Type: IEnumeration

ExposureTimeAbs カメラの露光時間を実数で指定します。

(単位:usec) Interface Type: IFloat

ExposureTimeRaw ExposureTimeBase パラメーターへの乗数

を整数値で指定します。実際の露光時間

は、ExposureTimeRaw と

ExposureTimeBaseAbs の積になります。 Interface Type: IInteger

ReadoutTimeAbs (読取専用パラメーター) センサー読み出し時間を示します。(単

位:usec) Interface Type: IFloat

ExposureOverlapTimeMaxAbs TriggerWidth(パルス幅露光)モードにお

いて、センサー露光とセンサー読み出しの

大オーバーラップ時間を実数値で設定

します。(単位:usec) Interface Type: IFloat

ExposureOverlapTimeMaxRaw TriggerWidth(パルス幅露光)モードにお

いて、センサー露光とセンサー読み出しの

大オーバーラップ時間を raw 値で設定

します。 Interface Type: IInteger

AcquisitionFrameRateEnable カメラのフレームレート指定機能を有効

化します。 Interface Type: IBoolean

AcquisitionFrameRateAbs フレームレートを指定します。1 秒間に取

得する画像枚数を実数で指定することが

できます。 Interface Type: IFloat

フレーム レート設定

ResultingFrameRateAbs (読取専用パラメーター) 現在の AOI、露光時間、バンド幅設定にお

ける 大フレームレートを示します。フレ

26

Page 31: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

ームレートは実数で表され、1 秒間に取り

込むことができるフレーム数

(frames/sec)を意味します。 Interface Type: IFloat

AcquisitionStatusSelector AcquisitionStatus で読み取る内部的な状

態を指定します。 Enum Value: FrameTriggerWait Interface Type: IEnumeration

取込状態 感知設定

AcquisitionStatus (読取専用パラメーター) AcquisitionStatusSelector で選択した内

部的な状態を示します(True または

False)。 Interface Type: IBoolean

5.5 Digital I/O Controls カテゴリー パラメーター (Node Name) 説明

LineSelector 使用する I/O ポートの入出力ラインを選択

します。 Enum Value: Line1, Out1 Interface Type: IEnumeration

LineMode カメラの物理ライン(入力または出力)を

制御するために使用されます。ラインが入

力と出力のどちらのモードも対応してい

る場合、電気的な競合を避けるためデフォ

ルトでは入力が選択されています。 Enum Value: Input, Output Interface Type: IEnumeration

LineSource 選択されたラインが Output 設定の場合、

カメラ内部で生成される信号(ソースとな

る信号)を指定します。 Enum Value: ExposureActive,

FrameTriggerWait, TimerActive, UserOutput

Interface Type: IEnumeration

I/O ポート設

LineInverter 選択された入力または出力ラインの信号

を極性反転させる場合に使用します。 Interface Type: IBoolean

27

Page 32: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

LineDebouncerTimeAbs 選択された入力ラインの Debouncer 時間

(無効時間)を設定します。(単位:usec)入力信号のパルス幅が設定された時間以

下の場合は無視されます。 Interface Type: IFloat

LineStatus (読取専用パラメーター) 選択された入力ラインの現在の論理状態

を示します。 Interface Type: IBoolean

LineStatusAll (読取専用パラメーター) 使用可能なすべての入力ラインの現在の

論理状態を示します。 Interface Type: IInteger

UserOutputSelector ユーザ定義可能な出力信号を選択します。 Enum Value: UserOutput1 Interface Type: IEnumeration

UserOutputValue ユーザ定義出力信号の状態を指定します。 Interface Type: IBoolean

UserOutputValueAll すべてのユーザ定義出力信号の状態を一

度に指定します。 Interface Type: IInteger

5.6 Counter and Timer Controls カテゴリー パラメーター (Node Name) 説明

TimerDelayTimebaseAbs タイマー遅れ時間の設定において、raw 値

(TimerDelayRaw)に対する乗数(time base 値)を実数で指定します。(単位:

usec) Interface Type: IFloat

TimerDurationTimebaseAbs タイマー持続時間の設定において、raw 値 (TimerDurationRaw)に対する乗数

(time base 値)を実数で指定します。(単

位:usec) Interface Type: IFloat

タイマーモー

ド設定

TimerSelector タイマー設定を選択します。

28

Page 33: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

Enum Value: Timer1 Interface Type: IEnumeration

TimerDelayAbs タイマー遅れ時間を実数で指定します。

(単位:usec) Interface Type: IFloat

TimerDelayRaw

タイマー遅れ時間の raw 値を整数で指定

します。実際のタイマー遅れ時間は、

TimerDelayRaw と

TimerDelayTimeBaseAbs の積になりま

す。 Interface Type: IInteger

TimerDurationAbs

タイマー持続時間を実数で指定します。

(単位:usec) Interface Type: IFloat

TimerDurationRaw タイマー持続時間の raw 値を整数で指定

します。実際のタイマー持続時間は、

TimerDurationRaw と

TimerDurationTimeBaseAbs の積になり

ます。 Interface Type: IInteger

TimerTriggerSource タイマーの開始トリガ信号として使用さ

れるカメラ内部信号を指定します。 Enum Value: ExposureStart Interface Type: IEnumeration

TimerTriggerActivation タイマー開始信号の極性を指定します。 Enum Value: RisingEdge Interface Type: IEnumeration

CounterSelector カウンターを選択します。 Enum Value: Counter1, Counter2 Interface Type: IEnumeration

CounterEventSource カウンターをインクリメントするソース

となるイベントを指定します。 Enum Value: FrameStart Interface Type: IEnumeration

カウンター設

CounterResetSource カウンターをリセットするソースを指定

します。 Enum Value: Off, Software, Line1 Interface Type: IEnumeration

29

Page 34: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

CounterReset カウンターのリセットを即座に実行しま

す。リセット後、カウンターはすぐに次の

カウントを開始します。 Interface Type: ICommand

5.7 LUT Controls カテゴリー パラメーター (Node Name) 説明

LUTSelector ルックアップテーブルを設定します。 Enum Value: Luminance Interface Type: IEnumeration

LUTEnable ルックアップテーブルを有効化します。 Interface Type: IBoolean

LUTIndex アクセスするルックアップテーブルの要

素を指定します。LUT 配列のインデックス

指定に使用します。 Interface Type: IInteger

LUT 設定

LUTValue ルックアップテーブル要素の値を指定し

ます。LUTIndex で指定した要素に反映さ

れます。 Interface Type: IInteger

5.8 Transport Layer カテゴリー パラメーター (Node Name) 説明

PayloadSize ペイロードサイズ(単位:バイト)。ペイ

ロードは画像データと CHUNK データ

(AOI サイズなどの付加情報)であり、パ

ケットのヘッダー以外の情報を指します。 Interface Type: IInteger

データ伝送設

GevVersionMajor (読取専用パラメーター) カメラがサポートする GigE Vision 規格の

メジャーバージョンを示します。 Interface Type: IInteger

30

Page 35: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

GevVersionMinor (読取専用パラメーター) カメラがサポートする GigE Vision 規格の

マイナーバージョンを示します。 Interface Type: IInteger

GevDeviceModeIsBigEndian (読取専用パラメーター) ブートストラップレジスターのエンディ

アンを示します。'True'の場合、ビッグエ

ンディアンになります。 Interface Type: IBoolean

GevDeviceModeCharacterSet (読取専用パラメーター) キャラクタセットの値です。 1の時、UTF-8を意味します。 Interface Type: IInteger

GevInterfaceSelector 設定を反映するネットワークインターフ

ェースを選択します。 Enum Value: NetworkInterface0 Interface Type: IEnumeration

GevMACAddress (読取専用パラメーター) 選択したネットワークインターフェース

の MAC アドレスを示します。 Interface Type: IInteger

GevSupportedIPConfigurationLLA

(読取専用パラメーター) 選択したネットワークインターフェース

が LLA(自動的に IP アドレスを取得する機

能)に対応しているかを示します。 Interface Type: IBoolean

GevSupportedIPConfigurationDHCP

(読取専用パラメーター) 選択したネットワークインターフェース

が DHCP 方式による IP アドレス設定機能

に対応しているかを示します。 Interface Type: IBoolean

GevSupportedIPConfigurationPersistentIP

(読取専用パラメーター) 選択したネットワークインターフェース

が固定 IP アドレス設定に対応しているか

を示します。 Interface Type: IBoolean

GevCurrentIPConfiguration 選択したネットワークインターフェース

の IP 設定(固定 IP アドレス、DHCP、また

31

Page 36: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

は LLA)を設定します。 Interface Type: IInteger

GevCurrentIPAddress (読取専用パラメーター) 選択したネットワークインターフェース

の現在の IP アドレスを示します。 Interface Type: IInteger

GevCurrentSubnetMask (読取専用パラメーター) 選択したネットワークインターフェース

の現在のサブネットマスクを示します。 Interface Type: IInteger

GevCurrentDefaultGateway (読取専用パラメーター) 選択したネットワークインターフェース

の現在のデフォルトゲートウェイを示し

ます。 Interface Type: IInteger

GevPersistentIPAddress 選択したネットワークインターフェース

が固定 IP アドレス設定に対応しており、か

つ有効化されている場合、固定 IP アドレス

を設定します。 Interface Type: IInteger

GevPersistentSubnetMask 選択したネットワークインターフェース

が固定 IP アドレス設定に対応しており、か

つ有効化されている場合、固定サブネット

マスクを設定します。 Interface Type: IInteger

GevPersistentDefaultGateway 選択したネットワークインターフェース

が固定 IP アドレス設定に対応しており、か

つ有効化されている場合、固定デフォルト

ゲートウェイを設定します。 Interface Type: IInteger

GevLinkSpeed (読取専用パラメーター) 選択したネットワークインターフェース

の接続速度(Mbps)を示します。 Interface Type: IInteger

GevFirstURL (読取専用パラメーター) XML 形式のデバイス記述ファイルへの

URL を示します。

32

Page 37: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

Interface Type: IString

GevSecondURL (読取専用パラメーター) XML 形式のデバイス記述ファイルへの

URL(候補 2)を示します。 Interface Type: IString

GevNumberOfInterfaces (読取専用パラメーター) デバイス上のネットワークインターフェ

ースの数を示します。 Interface Type: IInteger

GevMessageChannelCount (読取専用パラメーター) デバイス上でサポートされているメッセ

ージチャンネルの数を示します。 Interface Type: IInteger

GevStreamChannelCount (読取専用パラメーター) デバイス上でサポートされているストリ

ームチャンネルの数を示します。 Interface Type: IInteger

GevSupportedOptionalCommandsEVENTDATA

(読取専用パラメーター) EVENTDATA_CMD と EVENTDATA_ACKがサポートされているかを示します。 Interface Type: IBoolean

GevSupportedOptionalCommandsEVENT

(読取専用パラメーター) EVENT_CMDとEVENT_ACKがサポートさ

れているかを示します。 Interface Type: IBoolean

GevSupportedOptionalCommandsPACKETRESEND

(読取専用パラメーター) PACKETRESEND_CMD がサポートされて

いるかを示します。 Interface Type: IBoolean

GevSupportedOptionalCommandsWRITEMEM

(読取専用パラメーター) WRITEMEM_CMD と WRITEMEM_ACK が

サポートされているかを示します。 Interface Type: IBoolean

GevSupportedOptionalCommandsConcatenation

(読取専用パラメーター) 単一メッセージでの複数操作機能がサポ

ートされているかを示します。 Interface Type: IBoolean

33

Page 38: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

GevHeartbeatTimeout (読取専用パラメーター) ハートビートタイムアウト時間を示しま

す。(単位:msec) Interface Type: IInteger

GevTimestampTickFrequency (読取専用パラメーター) 1 秒間のタイムスタンプクロック数(tick)

を示します。 Interface Type: IInteger

GevTimestampControlLatchReset

保持されているタイムスタンプコントロ

ール値をリセットします。 Interface Type: ICommand

GevCCP (読取専用パラメーター) コントロールチャンネル優先機能を設定

します。 Enum Value: Control Interface Type: IEnumeration

GevSCPInterfaceIndex (読取専用パラメーター) 使用するネットワークインターフェース

のインデックスを設定します。 Interface Type: IInteger

GevSCPHostPort (読取専用パラメーター) デバイスがデータを送るポートを設定し

ます。 Interface Type: IInteger

GevSCPSDoNotFragment 伝送パケットのサイズが NIC の許容値を

超えている場合に、パケットを一切伝送し

ない設定を有効化/無効化します。有効化し

た場合には、NIC の許容値の調整を必ず行

う必要があります。無効化した場合、デー

タパケットは縮小されて到達し、リセンド

要求を頻発することで伝送を確立しよう

とする挙動になります。 Interface Type: IBoolean

GevSCPSBigEndian (読取専用パラメーター) ビッグエンディアン設定を示します。 Interface Type: IBoolean

GevSCPSPacketSize 選択したストリームチャンネルから伝送

するデータのパケットサイズを設定しま

34

Page 39: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

す(単位:Byte)。パケットの先頭と終端

部分は除きます。(パケットサイズは画像

1 つを等分割したサイズである必要はない

ため、 後のパケットはここで設定したサ

イズよりも小さくなる可能性がありま

す。) Interface Type: IInteger

GevSCPD (Inter-Packet Delay)

選択したストリームチャンネルから伝送

される各パケット間の遅れ時間を設定し

ます。(単位:tick) Interface Type: IInteger

GevSCFTD (Frame Transmission Delay)

選択したストリームチャンネルから伝送

されるパケットの伝送開始までの遅れ時

間を設定します。通常伝送が開始される時

点から実際に開始するまでの時間を設定

します。 Interface Type: IInteger

GevSCBWR (Bandwidth Reserve)

カメラとホスト PC 間において、パケット

再送およびカメラ設定用コントロールデ

ータのために確保するイーサネットバン

ド幅を設定します。パラメーターは

BandWidth Assignedパラメーターに対す

る割合(%)で表されます。例えば、

BandWidth Assigned パラメーターが

30MB/sec であり、この値を 5%に設定し

た場合、1.5MB/sec の帯域が確保されます。 Interface Type: IInteger

GevSCBWRA (Bandwidth Reserve Accumulation)

BandWidth Reserve パラメーターへの積

算値を設定します。この値は、異常時に突

発的にパケット再送要求が急増した場合

に、確保されている帯域を広げるために使

用されます。 Interface Type: IInteger

GevSCBWA (Bandwidth Assigned)

(読取専用パラメーター) カメラが画像データ、Chunk データ、パケ

ット再送およびコントロールデータを伝

送するために使用するバンド幅を示しま

す(単位:Byte/sec)。この値は Packet Sizeと Inter-Packet Delay の設定値から決定さ

れます。

35

Page 40: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

Interface Type: IInteger

GevSCDMT (Device Max Throughput)

(読取専用パラメーター) カメラが現在の設定において理想的な状

態(バンド幅の制限がなく、パケット再送

も発生しない状態)を仮定した場合に生成

するデータ量を示します。(単位:Byte/sec) Interface Type: IInteger

GevSCDCT (Device Current Throughput)

(読取専用パラメーター) カメラが現在の AOI 設定、Chunk 設定、

およびピクセルフォーマット設定におい

て、画像データと Chunk データを伝送す

るために使用する実際のバンド幅を示し

ます。(単位:Byte/sec) Interface Type: IInteger

GevSCFJM (Frame Jitter Max)

(読取専用パラメーター) BandWidth Reserve Accumulation パラ

メーターが高い値に設定されている場合、

データ再送要求が多発した場合であって

もカメラは対応することができます。この

場合、次の画像データ伝送の開始を遅らせ

る可能性があります。Frame Jitter Max パ

ラメーターは、次の画像伝送が開始するま

での許容遅れ時間を設定します。(単位:

tick) Interface Type: IInteger

5.9 Configuration Sets カテゴリー パラメーター (Node Name) 説明

カメラ設定 選択/保存/読込

UserSetSelector 読み込み、保存、または設定するための設

定セット(Configuration Set)を選択しま

す。以下の選択肢があります。 Default : 工場出荷時の初期設定 User Set : ユーザ設定 デフォルト設定が読み込まれると、デバイ

スは工場出荷時の状態になり、連続取込動

作を行うことができます。Default User Set は読取専用パラメーターで、修正する

ことはできません。

36

Page 41: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

Enum Value: Default, UserSet1 ~ 3 Interface Type: IEnumeration

UserSetLoad 選択された設定セット(Configuration Set)をカメラ内部の保存メモリから読み

込んで一時メモリに設定し、有効化しま

す。 Interface Type: ICommand

UserSetSave 選択されたユーザ設定セットに、現在のパ

ラメーター設定を保存します。選択された

ユーザ設定セットに対応するカメラ内部

の保存メモリに設定が書き込まれます。 Interface Type: ICommand

UserSetDefaultSelector カメラ起動時に読み込む設定セットを指

定します。指定されたセットは、カメラ起

動時およびリセット時に読み込まれます。 Enum Value: Default, UserSet1 ~ 3 Interface Type: IEnumeration

DefaultSetSelector どの工場出荷設定をデフォルトセットに

使用するか選択します。 Enum Value: Standard, HighGain,

AutoFunctions Interface Type: IEnumeration

5.10 Auto Function Parameters カテゴリー パラメーター (Node Name) 説明

AutoTargetValue ゲインおよび露光時間の自動調整機能に

おいて、ターゲットとなる平均輝度値を設

定します。 Interface Type: IInteger

AutoGainRawLowerLimit Auto Gain (Raw)パラメーターの下限値を

示します。 Interface Type: IInteger

自動調整機能

設定

AutoGainRawUpperLimit Auto Gain (Raw)パラメーターの上限値を

示します。

37

Page 42: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

Interface Type: IInteger

AutoExposureTimeAbsLowerLimit

Auto Exposure Time (Abs)パラメーター

の下限値を示します。 Interface Type: IFloat

AutoExposureTimeAbsUpperLimit

Auto Exposure Time (Abs)パラメーター

の上限値を示します。 Interface Type: IFloat

AutoFunctionProfile ゲインおよび露光時間を自動かつ同時に

調整する方法を選択します。 Enum Value: GainMinimum,

ExposureMinimum Interface Type: IEnumeration

サブツリー:Auto Function AOIs

AutoFunctionAOISelector 自動調整機能の AOI を選択します。 Enum Value: AOI1, AOI2 Interface Type: IEnumeration

AutoFunctionAOIWidth 自動調整機能の AOI の幅を設定します。

(単位:ピクセル) Interface Type: IInteger

AutoFunctionAOIHeight 自動調整機能の AOI の高さを設定します。

(単位:ピクセル) Interface Type: IInteger

AutoFunctionAOIOffsetX 自動調整機能の AOI を設定するための開

始列を指定します。(単位:ピクセル) Interface Type: IInteger

自動調整機能

用 AOI 設定

AutoFunctionAOIOffsetY 自動調整機能の AOI を設定するための開

始行を指定します。(単位:ピクセル) Interface Type: IInteger

5.11 Device Information カテゴリー パラメーター (Node Name) 説明

カメラ情報取

DeviceVendorName (読取専用パラメーター) デバイスのベンダー名をテキスト表記し

ます。

38

Page 43: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

Interface Type: IString

DeviceModelName (読取専用パラメーター) デバイスのモデル名をテキスト表記しま

す。 Interface Type: IString

DeviceManufacturerInfo (読取専用パラメーター) デバイスのベンダーが示すカメラの追加

情報を示します。 Interface Type: IString

DeviceVersion (読取専用パラメーター) デバイスのバージョンを示します。 Interface Type: IString

DeviceFirmwareVersion (読取専用パラメーター) デバイスのファームウエアおよびソフト

ウエアのバージョンを示します。 Interface Type: IString

DeviceID (読取専用パラメーター) シリアル番号や GUID のようなデバイス固

有の情報を示します。 Interface Type: IString

DeviceUserID 読み込みおよび書き込み可能な、ユーザ指

定のデバイス名です。 Interface Type: IString

DeviceScanType (読取専用パラメーター) デバイスに搭載されているセンサーに適

用可能なスキャンタイプを示します。 Enum Value: AreaScan Interface Type: IEnumeration

SensorWidth (読取専用パラメーター) カメラに搭載されているセンサーの実際

の幅を整数で示します。(単位:ピクセル) Interface Type: IInteger

SensorHeight (読取専用パラメーター) カメラに搭載されているセンサーの実際

の高さを整数で示します。(単位:ピクセ

ル) Interface Type: IInteger

39

Page 44: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

The Most Advanced GigE Vision camera – ace

WidthMax (読取専用パラメーター) 実際に取得可能な画像の 大幅を整数で

示します。(単位:ピクセル) Interface Type: IInteger

HeightMax (読取専用パラメーター) 実際に取得可能な画像の 大高さを整数

で示します。(単位:ピクセル) Interface Type: IInteger

5.12 Chunk Data Streams カテゴリー パラメーター (Node Name) 説明

ChunkModeActive カメラの Chunk モードを有効化/無効化し

ます。 Interface Type: IBoolean

ChunkSelector 有効化する Chunk を選択します。 Enum Value:

Image, OffsetX, OffsetY, Width, Height, PixelFormat, DynamicRangeMax, DynamicRangeMin, Timestamp, LineStatusAll, Framecounter, Triggerinputcounter, FrameTriggerIgnoredCounter, FrameTriggerCounter, FramesPerTriggerCounter, PayloadCRC16

Interface Type: IEnumeration

Chunk デー

タ設定

ChunkEnable 選択された Chunk データを伝送データに

埋め込むかどうかを設定します。 Interface Type: IBoolean

5.13 Events Generation カテゴリー パラメーター (Node Name) 説明

イベント設定 EventSelector 有効化するイベントのタイプを選択しま

す。

40

Page 45: Basler API C# スタートアップガイドlinx.jp/wordpress/wp-content/uploads/2015/11/Basler_API_CS_Startup... · C#サンプルプログラムによる取り込み 本節ではVisual

41

The Most Advanced GigE Vision camera – ace

Enum Value: ExposureEnd, FrameStartOverTrigger, EventOverrun

Interface Type: IEnumeration EventNotification 選択されたイベントに対して、ホストアプ

リケーションに送られる通知タイプを設

定します。 Enum Value: Off, GenICamEvent Interface Type: IEnumeration

5.14 Remove Parameter Limits カテゴリー パラメーター (Node Name) 説明

ParameterSelector 制限解除機能を適用するパラメーターを

選択します。 Enum Value: Gain Interface Type: IEnumeration

パラメーター

制限設定

RemoveLimits 選択されたパラメーターの工場出荷時の

制限値をなくします。これが適用されたパ

ラメーターは、設定可能な制限範囲が拡張

されます。この範囲は技術的な制約値まで

広げられますが、画像の品質が劣化してし

まう点に注意してください。 Interface Type: IBoolean