跳转到内容

Error Codes#

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

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

该功能的使用#

运作原理#

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

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

检查 Error Codes#

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

ace 2 和 boost 相机#

要检查 ace 2 和 boost 相机中的 Error Codes,请执行以下操作:

  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 相机#

要检查 ace classic/U/L GigE 相机中的 Error Codes,请执行以下操作:

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

下表仅适用于 Basler ace classic/U/L 相机。

LastError 枚举器 含义
NoError 自上次清除错误内存以来,相机未检测到任何错误。
Overtrigger 发生了过度触发。
当相机未处于等待采集开始状态时,用户向相机应用了采集开始触发。
或者:
当相机未处于等待帧开始状态时,用户向相机应用了帧开始触发。
Userset 尝试加载用户设置集时发生错误。通常,这意味着用户设置集包含无效值。请尝试加载其他用户设置集。
InvalidParameter 输入的参数超出范围或无效。通常,仅当用户通过直接寄存器访问设置参数时,才会发生此错误。
OverTemperature 相机支持 Temperature State 功能并处于超温模式下。该错误表明可能会损坏相机组件。
PowerFailure 此错误表明供电不足。
请检查电源。
InsufficientTriggerWidth 当触发时间短于最短曝光时间的情况下,在触发宽度曝光模式下报告此错误。

示例代码#

ace 2 和 boost 相机#

// 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 = CBooleanPtr(nodemap.GetNode("BslErrorPresent"))->GetValue();
// Get the first error code
int64_t errorReportValue = CIntegerPtr(nodemap.GetNode("BslErrorReportValue"))->GetValue();
// Retrieve the next error code from the device
CCommandPtr(nodemap.GetNode("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();
// Check whether an error occured on the device
bool errorPresent = Pylon.DeviceGetBooleanFeature(hdev, "BslErrorPresent");
// Get the first error code
Int64 errorReportValue = Pylon.DeviceGetIntegerFeature(hdev, "BslErrorReportValue");
// Retrieve the next error code from the device
Pylon.DeviceExecuteCommandFeature(hdev, "BslErrorReportNext");
/* 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 = CEnumerationPtr(nodemap.GetNode("LastError"))->ToString();
// Clear the value of the last error code in the memory
CCommandPtr(nodemap.GetNode("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();
// Get the value of the last error code in the memory
string lasterror = Pylon.DeviceFeatureToString(hdev, "LastError");
// Clear the value of the last error code in the memory
Pylon.DeviceExecuteCommandFeature(hdev, "ClearLastError");
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 轻松设置参数。