诊断日志
介绍
常用获取诊断日志的方法有三种(代码以C++为例):
- 可通过在SDK Control Center诊断页面中手动导出,如下图:

- 在代码中通过设置相机构造函数的日志输出方式的参数为文件输出来获取日志,输出的日志将保存在运行程序目录下

- 在代码中通过设置相机日志回调的方式获取日志,在回调中可获取新输出的日志
常规日志类型
DISCONNECTED
Device Disconnected, ConnectionTimeMS = xxx
设备状态变为断开连接,并输出当前硬件时间
UNDER_INIT
Device Under Init, ConnectionTimeMS = xxx
设备状态变为初始化中,并输出当前硬件时间
STAND_BY
Device StandBy, ConnectionTimeMS = xxx
设备状态变为就绪状态,并输出当前硬件时间
UNDER_EXPOSURE
Device UnderExposure, ConnectionTimeMS = xxx
设备状态变为曝光中,并输出当前硬件时间
UNDER_TRANSFER
Device UnderTransfer, ConnectionTimeMS = xxx
设备状态变为传输中,并输出当前硬件时间
RECOVER_SENT
Trying to recover from no response, reconnect sent ok
phy重连信号发送成功
DEVICE_CNT
Open Device, USBDeviceCount = xxx
打开相机,输出识别到的相机数量
DeviceCount = xxx
输出当前的相机数量
OPEN_DEVICE
Update Software Preprocess Lists failed
更新软件预处理设置列表
OPEN_DEVICE_SUCCESS
Open Device Success (tidCapture=xxx tidConnection=xxx)
打开设备成功
CLASS_DISPOSE
Class dispose enter
进入相机类析构函数
Class disposed
相机类析构函数执行完毕
SET_WORKINGMODE_SUCCESS
WorkingMode = xxx
设置工作模式成功,工作模式 = xxx
SET_BINNINGSTATE_SUCCESS
Set FlipNextBinningStateEnable xxx success
设置翻转下一次像素合并状态使能 xxx 成功
SET_TRIGGERSOURCETYPE_SUCCESS
Set TriggerSource xxx success
设置触发源xxx成功
SET_EXPOSUREBASICSETTING_SUCCESS
Set ExposureMode/ExposureBasicSetting xxx Success. ExposureNumber = xxx
设置曝光模式 xxx 成功,曝光次数 = xxx
SET_USERGAIN_SUCCESS
Set UserGain xxx success
设置用户增益 xxx 成功
SET_EXPOSUREINTENSITY_SUCCESS
Set ExposureIntensity3D_1st xxx success
设置3D第一次曝光强度 xxx 成功
Set ExposureIntensity3D_2nd xxx success
设置3D第二次曝光强度 xxx 成功
Set ExposureIntensity3D_3rd xxx success
设置3D第三次曝光强度 xxx 成功
Set ExposureIntensity2D xxx success
设置2D曝光强度 xxx 成功
ET_OTHER_SETTING_SUCCESS
Set ExternalExposureEnable xxx success
设置外部曝光使能 xxx 成功
Set ProjectionMode xxx success
设置投影模式 xxx 成功
Set DataOutMode = xxx success
设置数据输出模式 = xxx 成功
TRIGGER_SEND_SUCCESS
Trigger sent OK with SW TSN xxx
软触发发送触发信号成功
SNAP_ENTER
Start snap
开始执行Snap
SNAP_OK
Snap success
Snap成功
C_HD_RESET_ENA
Series M fatal exception, transfer is done and stuck, core hard reset is needed.
M系列相机传输完成但是卡顿,需要硬重启。
Series M fatal exception, camera transfer failure out of time, core hard reset is needed.
M系列相机传输失败次数超出指定阈值,需要硬重启。
C_HD_RESET_DIS
Going to a core hard reset, reset CoreHardReset to False.
即将执行硬重启,设置CoreHardReset为false。
CoreHardReset is about to start.
即将开始硬重启。
C_HD_RESET_SUCCESS
Series M trying to recover from no response, core hard reset request sent successfully. Reset all check state count.
M系列尝试从无响应恢复,硬重启请求已成功发送,重置所有状态检查计数。
DATA_CALLBACK_ENTER
Enter user data callback
进入用户数据回调
DATA_CALLBACK_EXIT
Exit user data callback
退出用户回调
RECIEVE_ZLP
ZLP recieved
接收到ZLP数据包
RECIEVE_NZLP
NZLP recieved with len %ld, InTrans = xxx
接收到NZLP数据包
Snap data end, address is: xxx
Snap完成
NZLP Exit with len xxx, InTrans = xxx
退出接收NZLP数据包
RECIEVE_PACK_DATA_HEAD
Data body resolve begin. TSN is xxx
接收到图像数据包
ACK_REQ
ACK Req Pack recognized, TSN = xxx
接收数据包完成
RECIEVE_DATA
Copy data total len after copy xxx
接收到图像数据
COMMIT_DATA
Data Commit to Snap
图像数据输出,由Snap接收
Data Commit to CallBack
图像数据输出,由用户数据回调接收
Data Commit, no recieve
图像数据输出,未被接收
READ_OFFLINE_DATA
Read offline mpdat success : xxx
读取离线数据成功,文件名 = xxx
ACK_SENT
ACK is sent for TSN = xxx
ACK(Acknowledgment)信号已发送
ACK信号表示接收方成功接收到数据,并且数据的校验和(CRC)匹配,没有出现错误。当发送方收到ACK信号时,它会确认数据传输成功,并继续发送下一个数据包。
NAK_SENT
NAK is sent for TSN = xxx
NAK(Negative Acknowledgment)信号已发送
NAK信号表示接收方在接收数据时出现了错误。这可能是由于数据传输中的错误、数据包的格式错误或接收方暂时无法接受数据等原因导致的。此时相机会启动重发机制。
GET_HARD_TIMES
Get Hardware StartUpTimeMS = xxx
获取硬件开机时间(毫秒)
异常(错误)日志类型&分析
RECOVER_FAIL
Trying to recover from no response, reconnect sent failed
phy重连信号发送失败
CLASS_CONSTRUCTED
Incorrect version! HEAD vs BINARY file
检查相机库文件版本失败(版本不匹配)
Incorrect MPSizectorS_API binary and head file version. Binary version is:xxx, HEAD file version is:xxx
检查相机库文件版本失败(版本不匹配)
Class constructed with instance ID xxx
相机类构造函数执行完毕
XFER_TH_ABORT
Xfer thread abort, with code xxx
数据传输出现错误或异常/USB 设备发生了错误或异常
XFER_TH_INIT_FAIL
Xfer thread init failed, with code xxx
批量输入端点的 Windows NT状态和 USB设备状态存在异常或错误
XFER_TH_WAIT_XFER_TIMEOUT
Wait for xfer time out, LastError = xxx
LastError = 997
造成的原因没有定论:
- 可能是通信不稳定,受到了干扰
- 可能是USB线材质量不行,或者阻抗不匹配
解决: 可以通过换线尝试解决
XFER_TH_FINISH_XFER_FAIL
Finish data xfer fail, LastError = xxx
数据传输失败,最近的一次错误 = xxx
CORE_CMD_FAIL
Fatal error in flash loading...
USB通信失败
Control failed due to ...
USB通信失败
CORE_CMD_FLASH_BUSY
Control is freezed due to flash is busy.
flash繁忙导致控制冻结。
GET_INSTANCE_ID_FAIL
Open device GetInstanceID Failed
重连时获取phy对象id失败
DEVICE_OCCUPIED
Device Occupied
重连时设备已被占用
GET_INIT_STATE_FAIL
Get InitState failed
重连时获取初始化状态失败
TRIGGER_SEND_COM_FAIL
Trigger send com fail
软触发发送触发信号失败
TRIGGER_CHECK_COM_FAIL
Trigger send check com fail, cnt = xxx
软触发获取当前触发序列号失败
TRIGGER_CHECK_DIFFER
Trigger is sent, but not executed: sent ID = xxx, cur ID = xxx, cur src = xxx, cnt = xxx
触发频率过高,当前设备处于忙碌状态,此次触发不会被执行
C_HD_RESET_FAIL
Series M trying to recover from no response, core hard reset request sent failed!
M系列尝试从未响应中恢复,硬重启请求发送失败!
CHK_STATE_XFER_FAIL
Series M exception state in transfer failure progress over 3 times.
M系列在传输时发生异常超过3次。
CHK_STATE_XPOSE_FAIL
Series M exception state in under exposure progress 30s.
M系列发生异常,处于曝光过程30秒
CHK_STATE_INIT_ERR_FAIL
Series M exception state in UnderTransfer progress with state error 20s. State code is xxx.
M系列发生异常,处于传输过程且状态错误持续20秒,状态码为 xxx。
状态码分析流程:
- 数值转换:
检查状态码是否为负数,若为负数需要将这个负数加上2^32作为新的状态码。例如:-525055 + 2^32(也就是4294967296)= 4294442241
将状态码转换为二进制数,例如:4294442241转换为二进制为1111 1111 1111 0111 1111 1101 0000 0001
从右往左去掉前八位,例如:1111 1111 1111 0111 1111 1101 0000 0001去掉后变为1111 1111 1111 0111 1111 1101
此时,从右往左数,若第一位为0则分别表示S0错误,第二位为0则表示S1错误,第三位为0则表示S2错误。。。
例如:1111 1111 1111 0111 1111 1101,他的第二位,第十二位为0,对应的错误就是S1,S11
如下图所示:

错误如诊断页面所示:
对应错误的含义见文档诊断模块说明
CHK_HEADPACK_TEMPERATURE_FAIL
Device temperature out of range
设备温度超出范围
CHK_HEADPACK_INIT_STATES_FAIL
Check device init state error
检查设备初始化状态出错
CHK_HEADPACK_SETTING_VALIDATION_FAIL
Check device setting validation error
检查设备设置有效性出错
SNAP_FAIL
Snap fail due to disconnected
Snap失败(设备未连接)
Snap fail due to null input
Snap失败(存在空值输入)
Snap fail due to sw trigger fail
Snap失败(软触发失败)
Snap fail due to time out
Snap失败(等待接收数据超时)
RECIEVE_DATA
Need phy reconnect due to transfer too long
传输时间过长,需要phy重连
DATA_TOO_BIG
Drop data total len after copy xxx, estimated is xxx
接收到的图像数据长度超过限制长度
Data is larger than buffer, ignore
根据HeadPack计算的数据长度大于限制长度,忽略
READ_OFFLINE_DATA_FAIL
Read offline mpdat fail : xxx, xxx
读取离线数据失败,返回值 = xxx,文件名 = xxx
RECIEVE_INVALID_HEAD
Invalid packet head, lend = xxx , ignore following data
无法识别的数据包头,忽略接下来的数据
ACK_SENT
ACK send fail for TSN = xxx
ACK信号发送失败
NAK_SENT
NAK send fail for TSN = xxx
NAK信号发送失败
RECIEVE_FRAME_FAIL
copy len = xxx, estimated len = xxx
接收帧数据失败,拷贝长度为xxx, 预计长度为xxx