#include "DetectionOutputConverter.h" #include "IYJiuruiWorkpiecePoseStatus.h" #include #include #include ProtocolDetectionOutput DetectionOutputConverter::ConvertWorkpieceResult( const std::vector& workpieceInfoList, bool success, int errorCode, const QString& message, int cameraIndex) { ProtocolDetectionOutput output; output.success = success; output.errorCode = errorCode; output.message = message; output.cameraIndex = cameraIndex; for (const auto& info : workpieceInfoList) { JiuruiWorkpieceDetectOutput wpOutput; wpOutput.x = info.centerX; wpOutput.y = info.centerY; wpOutput.z = info.centerZ; // roll/pitch/yaw 由 PoseAxesBuilder 在 DetectPresenter 中计算填充 output.workpieceOutputs.push_back(wpOutput); } return output; } QJsonObject DetectionOutputConverter::WorkpieceOutputToJson(const JiuruiWorkpieceDetectOutput& output) { QJsonObject obj; obj["X"] = output.x; obj["Y"] = output.y; obj["Z"] = output.z; obj["Roll"] = output.roll; obj["Pitch"] = output.pitch; obj["Yaw"] = output.yaw; return obj; } QJsonObject DetectionOutputConverter::ToJson(const ProtocolDetectionOutput& output) { QJsonObject response; response["MessageType"] = "WorkpieceResult"; QJsonObject data; data["Success"] = output.success; data["ErrorCode"] = output.errorCode; data["Message"] = output.message; data["CameraIndex"] = output.cameraIndex; QJsonArray arr; for (const auto& wp : output.workpieceOutputs) { arr.append(WorkpieceOutputToJson(wp)); } data["Count"] = static_cast(output.workpieceOutputs.size()); data["Workpieces"] = arr; response["Data"] = data; response["Timestamp"] = output.timestamp; return response; }