User Output Value#

The User Output Value camera feature allows you to set the status of an output line to high (1) or low (0) by software.

This can be useful to control external events or devices, e.g., a light source.

To configure the status of all output lines in a single operation, use the User Output Value All feature.

Using the Feature#

Prerequisites#

The line source of the desired output line must be set to a User Output signal.

Setting the Output Line Status#

How to set the output line status depends on how many User Output line sources are available on your camera model.

One User Output line source is available ("User Output"):

  1. If you want to set the line status to high (1), set the UserOutputValue parameter to true.
  2. If you want to set the line status to low (0), set the UserOutputValue parameter to false.

Multiple User Output line sources are available (e.g., "User Output 1", "User Output 2"):

  1. Set the UserOutputSelector parameter to the corresponding line source.
    Example: Assume that you have set the line source of Line 2 to UserOutput1. To configure the line status of Line 2, you must set the UserOutputSelector parameter to UserOutput1.
  2. If you want to set the line status to high (1), set the UserOutputValue parameter to true.
  3. If you want to set the line status to low (0), set the UserOutputValue parameter to false.

Sample Code#

// Select Line 2 (output line)
camera.LineSelector.SetValue(LineSelector_Line2);
// Set the source signal to User Output 1
camera.LineSource.SetValue(LineSource_UserOutput1);
// Select the User Output 1 signal
camera.UserOutputSelector.SetValue(UserOutputSelector_UserOutput1);
// Set the User Output Value for the User Output 1 signal to true.
// Because User Output 1 is set as the source signal for Line 2,
// the status of Line 2 is set to high.
camera.UserOutputValue.SetValue(true);
INodeMap& nodemap = camera.GetNodeMap();
// Select Line 2 (output line)
CEnumerationPtr(nodemap.GetNode("LineSelector"))->FromString("Line2");
// Set the source signal to User Output 1
CEnumerationPtr(nodemap.GetNode("LineSource"))->FromString("UserOutput1");
// Select the User Output 1 signal
CEnumerationPtr(nodemap.GetNode("UserOutputSelector"))->FromString("UserOutput1");
// Set the User Output Value for the User Output 1 signal to true.
// Because User Output 1 is set as the source signal for Line 2,
// the status of Line 2 is set to high.
CBooleanPtr(nodemap.GetNode("UserOutputValue"))->SetValue(true);
INodeMap& nodemap = camera.GetNodeMap();
// Select Line 2 (output line)
CEnumParameter(nodemap, "LineSelector").SetValue("Line2");
// Set the source signal to User Output 1
CEnumParameter(nodemap, "LineSource").SetValue("UserOutput1");
// Select the User Output 1 signal
CEnumParameter(nodemap, "UserOutputSelector").SetValue("UserOutput1");
// Set the User Output Value for the User Output 1 signal to true.
// Because User Output 1 is set as the source signal for Line 2,
// the status of Line 2 is set to high.
CBooleanParameter(nodemap, "UserOutputValue").SetValue(true);
// Select Line 2 (output line)
camera.Parameters[PLCamera.LineSelector].SetValue(PLCamera.LineSelector.Line2);
// Set the source signal to User Output 1
camera.Parameters[PLCamera.LineSource].SetValue(PLCamera.LineSource.UserOutput1);
// Select the User Output 1 signal
camera.Parameters[PLCamera.UserOutputSelector].SetValue(PLCamera.UserOutputSelector.UserOutput1);
// Set the User Output Value for the User Output 1 signal to true.
// Because User Output 1 is set as the source signal for Line 2,
// the status of Line 2 is set to high.
camera.Parameters[PLCamera.UserOutputValue].SetValue(true);
// Select Line 2 (output line)
Pylon.DeviceFeatureFromString(hdev, "LineSelector", "Line2");
// Set the source signal to User Output 1
Pylon.DeviceFeatureFromString(hdev, "LineSource", "UserOutput1");
// Select the User Output 1 signal
Pylon.DeviceFeatureFromString(hdev, "UserOutputSelector", "UserOutput1");
// Set the User Output Value for the User Output 1 signal to true.
// Because User Output 1 is set as the source signal for Line 2,
// the status of Line 2 is set to high.
Pylon.DeviceSetBooleanFeature(hdev, "UserOutputValue", true);
/* 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 */
/* Select Line 2 (output line) */
errRes = PylonDeviceFeatureFromString(hdev, "LineSelector", "Line2");
CHECK(errRes);
/* Set the source signal to User Output 1 */
errRes = PylonDeviceFeatureFromString(hdev, "LineSource", "UserOutput1");
CHECK(errRes);
/* Select the User Output 1 signal */
errRes = PylonDeviceFeatureFromString(hdev, "UserOutputSelector", "UserOutput1");
CHECK(errRes);
/* Set the User Output Value for the User Output 1 signal to true. */
/* Because User Output 1 is set as the source signal for Line 2, */
/* the status of Line 2 is set to high. */
errRes = PylonDeviceSetBooleanFeature(hdev, "UserOutputValue", 1);
CHECK(errRes);

You can also use the pylon Viewer to easily set the parameters.