跳至內容
測試伺服器
開發伺服器

使用者自訂資料#

The User-Defined Data camera feature 允許您在相機中儲存使用者定義的資料。

使用此功能#

運作原理#

您有三個選項可用於在相機中儲存使用者定義的資料:

配置 User-Defined Values#

相機最多可儲存五個使用者定義的值。這些可以是您的應用程式可能需要的值(例如用於全景影像的光學參數值)。這些值是 32 位元帶號整數值,您可以根據需要進行設定和取得。它們作為儲存位置,對相機的運作沒有任何影響。

這些值的名稱為 Value1 設定為 Value5.

若要設定使用者定義的值:

  1. 將 UserDefinedValueSelector 參數設為所需的使用者定義值,例如 Value1.
  2. 輸入 UserDefinedValue 參數的值。

設定裝置使用者 ID#

透過 DeviceUserID 參數,您可以為相機指派使用者定義的名稱。

若要為相機指派使用者定義的名稱:

  1. 輸入名稱以供 DeviceUserID 資料夾內的 Device Control 類別。此 DeviceUserID 可由數字、字母和空格的任意組合組成。

對於 GigE 相機,您可以設定 DeviceUserID 同樣也可以在 pylon IP Configurator 中進行。

在 USB 3.0 相機上,您必須使用 DeviceReset 命令重設相機,變更才會生效。

另請參閱關於其他 device information parameters 的資訊。

將使用者資料儲存為二進位檔案#

您可以在相機上儲存二進位資料(在 ace 2 相機上最高可達約 200 kB)。此資料會儲存為名為 User Data 的獨立檔案,並使用 pylon Viewer 中的 File Access 功能進行傳輸。

典型使用者資料的範例:

  • 校正資料
  • Shading Correction 資料

將使用者資料上傳至相機#

若要使用 pylon Viewer 上傳使用者資料檔案:

  1. 在 pylon Viewer 中,開啟您要上傳使用者資料檔案的相機。
  2. 在 pylon Viewer 的 Camera 功能表中,按一下 File Access。
  3. 在 Camera File 下拉方塊中,選取 User Data。
  4. 按一下 Upload 並瀏覽至您要上傳的檔案。該檔案的副檔名必須為 *.dll。
  5. 按一下 Open。
  6. 關閉 Camera File Access 對話方塊。

檔案已儲存至您的相機。

從相機下載使用者資料#

若要使用 pylon Viewer 下載使用者資料檔案:

  1. 在 pylon Viewer 中,開啟您要下載使用者資料檔案的相機。
  2. 在 pylon Viewer 的 Camera 功能表中,按一下 File Access。
  3. 在 Camera File 下拉方塊中,選取 User Data。
  4. 按一下 Download,瀏覽至您要儲存檔案的目錄,然後輸入所需的檔名以及副檔名 *.dll。
  5. 按一下 Save。
  6. 關閉 Camera File Access 對話方塊。

檔案已下載至指定的目錄。

範例程式碼#

// Select user-defined value 1
camera.UserDefinedValueSelector.SetValue(UserDefinedValueSelector_Value1);
// Set the value for the UserDefinedValue parameter
camera.UserDefinedValue.SetValue(1000);
// Get the value of user-defined value 1
camera.UserDefinedValueSelector.SetValue(UserDefinedValueSelector_Value1);
int64_t UserValue1 = camera.UserDefinedValue.GetValue();
INodeMap& nodemap = camera.GetNodeMap();
// Select user-defined value 1
CEnumParameter(nodemap, "UserDefinedValueSelector").SetValue("Value1");
// Set the value for the UserDefinedValue parameter
CIntegerParameter(nodemap, "UserDefinedValue").SetValue(1000);
// Get the value of user-defined value 1
CEnumParameter(nodemap, "UserDefinedValueSelector").SetValue("Value1");
int64_t UserValue1 = CIntegerParameter(nodemap, "UserDefinedValue").GetValue();
// Select user-defined value 1
camera.Parameters[PLCamera.UserDefinedValueSelector].SetValue(PLCamera.UserDefinedValueSelector.Value1);
// Set the value for the UserDefinedValue parameter
camera.Parameters[PLCamera.UserDefinedValue].SetValue(1000);
// Get the value of user-defined value 1
camera.Parameters[PLCamera.UserDefinedValueSelector].SetValue(PLCamera.UserDefinedValueSelector.Value1);
Int64 UserValue1 = camera.Parameters[PLCamera.UserDefinedValue].GetValue();
/* Macro to check for errors */
#define CHECK(errc) if (GENAPI_E_OK != errc) printErrorAndExit(errc)
GENAPIC_RESULT errRes = GENAPI_E_OK;  /* Return value of pylon methods */
int64_t UserValue1 = 0;
/* Select user-defined value 1 */
errRes = PylonDeviceFeatureFromString(hdev, "UserDefinedValueSelector", "Value1");
CHECK(errRes);
/* Set the value for the UserDefinedValue parameter */
errRes = PylonDeviceSetIntegerFeature(hdev, "UserDefinedValue", 1000);
CHECK(errRes);
/* Get the value of user-defined value 1 */
errRes = PylonDeviceFeatureFromString(hdev, "UserDefinedValueSelector", "Value1");
CHECK(errRes);
errRes = PylonDeviceGetIntegerFeature(hdev, "UserDefinedValue", &UserValue1);
CHECK(errRes);
# Select user-defined value 1
camera.UserDefinedValueSelector.Value = "Value1"
# Set the value for the UserDefinedValue parameter
camera.UserDefinedValue.Value = 1000
# Get the value of user-defined value 1
camera.UserDefinedValueSelector.Value = "Value1"
UserValue1 = camera.UserDefinedValue.Value

您也可以使用 pylon Viewer 來輕鬆設定參數。