mengineer's blog

ニッチなネタばかりですが。

JAISDK TransportLayer名の取得

JAISDK上ではGigE,USB3,CXP等々、色々なIFのカメラを接続出来ます。

GigEとUSB3のカメラを同時に接続すると、こんな感じ。 f:id:mengineer:20170729131118p:plain

カメラがどのIFで接続されているかは、TransportLayer名で 判断出来ます、
ということで、今回はTransportLayer名を取得する方法について調べました。

今回もSimpleImageDisplayのサンプルを使用します、画面にtextBoxを追加し、
TransportLayer名を取得して表示させます。

f:id:mengineer:20170729132340p:plain

TransportLayer名の取得

いきなりソースコードですが、はじめの一歩の4.で出てきたSearchButton_Clickで
最後の部分に下記を追加します。

// Get the Transport Layer Name
uint iSize = 512;
StringBuilder sbTransportLayerName = new StringBuilder(512);

Jai_FactoryWrapper.EFactoryError error = Jai_FactoryWrapper.EFactoryError.Success;

error = Jai_FactoryWrapper.J_Camera_GetTransportLayerName(myCamera.ItemHandle, sbTransportLayerName, ref iSize);
if (Jai_FactoryWrapper.EFactoryError.Success != error)
{
    MessageBox.Show(this, "Error getting transport layer name for " + myCamera.CameraID, "Camera Transport Name Error", MessageBoxButtons.OK, MessageBoxIcon.Stop);
    return;
}
else
    textBox1.Text = sbTransportLayerName.ToString();

要はJ_Camera_GetTransportLayerNameでTransportLayer名を取得するだけです、
エラー無く取得出来れば、それを文字列に変換してtextBox1に表示します。

GigEカメラだと、”GEV”と表示されます。 f:id:mengineer:20170729133421p:plain

USB3カメラでは、"U3V”と表示されます。 f:id:mengineer:20170729133455p:plain

2017/8/1 追記
GitHubGistというのに登録してみました、上記の全ソースを貼ってみるテスト
行番号が付くのは便利ですね、今回追加したのは179~192行目になります。