跳转到内容
暂存服务器
开发服务器

User-Defined Data#

通过 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 的相机菜单中,单击文件访问权限。
  3. 在 Camera File 下拉框中,选择 User Data。
  4. 点击 Upload 并导航至您要上传的文件。该文件的后缀名必须为 *.dll。
  5. 单击打开。
  6. 关闭 Camera File Access 对话框。

该文件已存储在您的相机上。

从相机下载用户数据#

若要使用 pylon Viewer 下载用户数据文件:

  1. 在 pylon Viewer 中,打开您要从中下载用户数据文件的相机。
  2. 在 pylon Viewer 的相机菜单中,单击文件访问权限。
  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 轻松设置参数。