IP Address initialization Save をプログラムで行なう方法を教えてください。


Q: カメラ付属のソフト(StCamGigWare) の GigEVisionCameraSelection画面で IP Address initialization Save ボタンでIPアドレスの書き込みができますがこれはどうやって行うのでしょうか?

 

A: 下記のサンプルコードで、現在のIPアドレス、サブネットマスクをPersistentに設定することができます。

GevCurrentIPConfigurationPersistentIPをtrue(有効)にすると、Persistentに設定されているIPアドレス、サブネットマスク、デフォルトゲートウェイが有効になります。
GevCurrentIPAddress:現在のIPアドレス
GevCurrentSubnetMask:現在のサブネットマスク
GevPersistentIPAddress:GevCurrentIPConfigurationPersistentIPがtureとなっている時、カメラの電源立ち上げ時のIPアドレス
GevPersistentSubnetMask:GevCurrentIPConfigurationPersistentIPがtureとなっている時、カメラの電源立ち上げ時のIPアドレス

これらの項目名はカメラ内部に持っています。
StGigEPlayerを起動させ、カメラをコネクトした後、DeviceControl画面を表示してください。
TransportLayerControlカテゴリにこれらの項目があります。

bool SetIPAddress( PvDevice *pDevice, bool bAuto )
{
PvResult pvResult;

PvGenParameterArray *lGenDevice = pDevice->GetGenParameters();

//GevCurrentIPConfigurationPersistentIPがtrueの場合はPersistentIPが有効
PvGenBoolean *lPersistentIPBoolean = dynamic_cast( lGenDevice->Get( “GevCurrentIPConfigurationPersistentIP” ) );

ASSERT( lPersistentIPBoolean != NULL );

if( bAuto==true ){ //自動(PersistentIPが無効)
pvResult = lPersistentIPBoolean->SetValue(false);
}
else
{
PvGenInteger *lIPAddressParam = dynamic_cast( lGenDevice->Get( “GevCurrentIPAddress” ) );
PvGenInteger *lFlushIPAddressParam = dynamic_cast( lGenDevice->Get( “GevPersistentIPAddress” ) );
PvGenInteger *lSubnetMaskParam = dynamic_cast( lGenDevice->Get( “GevCurrentSubnetMask” ) );
PvGenInteger *lFlushSubnetMaskParam = dynamic_cast( lGenDevice->Get( “GevPersistentSubnetMask” ) );

ASSERT( lIPAddressParam != NULL );
ASSERT( lFlushIPAddressParam != NULL );
ASSERT( lSubnetMaskParam != NULL );
ASSERT( lFlushSubnetMaskParam != NULL );

//IP読込
PvInt64 lIPAddress = 0;
PvInt64 lSubnetMask = 0;

pvResult = lIPAddressParam->GetValue( lIPAddress ); //現在のIPアドレスを取得
if( pvResult.IsOK() )
pvResult = lSubnetMaskParam->GetValue( lSubnetMask ); //現在のサブネットマスクを取得
if( pvResult.IsOK() )
pvResult = lFlushIPAddressParam->SetValue( lIPAddress ); //現在のIPアドレスをPersistentIPAddressに設定
if( pvResult.IsOK() )
pvResult = lFlushSubnetMaskParam->SetValue( lSubnetMask ); //現在のサブネットマスクをPersistentSubnetMaskに設定

if( pvResult.IsOK() )
lPersistentIPBoolean->SetValue(true); //Persistentを有効にする
}

return pvResult.IsOK();
}

———-

 

このFAQを別のページで表示する