跳转到内容

Error Codes#

相机的 Error Codes 功能允许您从相机读取错误代码。这些代码会提醒您可以自行纠正的错误。

如果发生几个不同的错误,则将它们存储在错误列表中,并可以一一检索。

该功能的使用#

运作原理#

相机可以检测出您能自己纠正的错误。如果发生此类错误,则相机会为此错误分配一个错误代码,并将错误代码存储在内存中。

如果发生了几种不同的错误,相机将存储检测到的每种错误的代码。相机仅将每个代码存储一次,而不管它检测到相应错误的次数。

检查 Error Codes#

检查 Error Codes 是一个反复迭代的过程,具体取决于您的相机型号和发生了多少个错误。

ace 2、boost 和 dart IMX 相机#

To check error codes on ace 2, boost, and dart IMX cameras:

  1. 获取 BslErrorPresent 参数的值。
  2. 如果参数值为 true:
    1. 获取 BslErrorReportValue 参数的值。
    2. 将值存储在您的计算机上或将其记录下来以备将来参考。
    3. 执行 BslErrorReportNext 命令。这将从设备中检索下一个错误代码。
    4. 重复步骤 a) 至 c),直到 BslErrorReportValue 参数值为 0。参数值 0 表示没有更多的 Error Codes 可检索。
    5. 联系 Basler 支持部门以获取 Error Codes 列表。

ace Classic/U/L GigE 相机#

To check error codes on ace Classic/U/L GigE cameras:

  1. 获取 LastError 参数的值。
  2. 将值存储在您的计算机上或将其记录下来以备将来参考。
  3. 执行 ClearLastError 命令。这将从 Error Codes 列表中删除最后一个错误代码。
  4. 重复步骤 1) 至 3),直到 LastError 参数值为 NoError
  5. 使用下表纠正错误,或联系 Basler 支持部门以获取 Error Codes 列表。
可用错误代码#

The following table applies to Basler ace Classic/U/L cameras only.

LastError 枚举器 含义
NoError 自上次清除错误内存以来,相机未检测到任何错误。
Overtrigger 发生了过度触发。
当相机未处于等待采集开始状态时,用户向相机应用了采集开始触发。
或者:
当相机未处于等待帧开始状态时,用户向相机应用了帧开始触发。
Userset 尝试加载用户设置集时发生错误。通常,这意味着用户设置集包含无效值。请尝试加载其他用户设置集。
InvalidParameter 输入的参数超出范围或无效。通常,仅当用户通过直接寄存器访问设置参数时,才会发生此错误。
OverTemperature The camera supports the Temperature State feature and is above the over temperature threshold. This error indicates that damage to camera components may occur.
PowerFailure 此错误表明供电不足。
请检查电源。
InsufficientTriggerWidth 当触发时间短于最短曝光时间的情况下,在触发宽度曝光模式下报告此错误。

示例代码#

ace 2、boost 和 dart IMX 相机#

// Check whether an error occured on the device
bool errorPresent = camera.BslErrorPresent.GetValue();
// Get the first error code
int64_t errorReportValue = camera.BslErrorReportValue.GetValue();
// Retrieve the next error code from the device
camera.BslErrorReportNext.Execute();
INodeMap& nodemap = camera.GetNodeMap();
// Check whether an error occured on the device
bool errorPresent = CBooleanParameter(nodemap, "BslErrorPresent").GetValue();
// Get the first error code
int64_t errorReportValue = CIntegerParameter(nodemap, "BslErrorReportValue").GetValue();
// Retrieve the next error code from the device
CCommandParameter(nodemap, "BslErrorReportNext").Execute();
// Check whether an error occured on the device
bool errorPresent = camera.Parameters[PLCamera.BslErrorPresent].GetValue();
// Get the first error code
Int64 errorReportValue = camera.Parameters[PLCamera.BslErrorReportValue].GetValue();
// Retrieve the next error code from the device
camera.Parameters[PLCamera.BslErrorReportNext].Execute();
/* 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 */
_Bool errorPresent = false;
int64_t errorReportValue = 0;
/* Check whether an error occured on the device */
errRes = PylonDeviceGetBooleanFeature(hdev, "BslErrorPresent", &errorPresent);
CHECK(errRes);
/* Get the first error code */
errRes = PylonDeviceGetIntegerFeature(hdev, "BslErrorReportValue", &errorReportValue);
CHECK(errRes);
/* Retrieve the next error code from the device */
errRes = PylonDeviceExecuteCommandFeature(hdev, "BslErrorReportNext");
CHECK(errRes);

ace Classic/U/L GigE 相机#

// Get the value of the last error code in the memory
LastErrorEnums lasterror = camera.LastError.GetValue();
// Clear the value of the last error code in the memory
camera.ClearLastError.Execute();
INodeMap& nodemap = camera.GetNodeMap();
// Get the value of the last error code in the memory
String_t lasterror = CEnumParameter(nodemap, "LastError").GetValue();
// Clear the value of the last error code in the memory
CCommandParameter(nodemap, "ClearLastError").Execute();
// Get the value of the last error code in the memory
string lasterror = camera.Parameters[PLCamera.LastError].GetValue();
// Clear the value of the last error code in the memory
camera.Parameters[PLCamera.ClearLastError].Execute();
size_t len = 0;
char lasterror_str[64] = {0};
/* Get the value of the last error code in the memory */
len = sizeof(lasterror_str);
errRes = PylonDeviceFeatureToString(hdev, "LastError", lasterror_str, &len);
CHECK(errRes);
/* Clear the value of the last error code in the memory */
errRes = PylonDeviceExecuteCommandFeature(hdev, "ClearLastError");
CHECK(errRes);

您也可以使用 pylon Viewer 轻松设置参数。