GrabBag/App/TireHolePose/TireHolePoseApp/Presenter/Inc/TireHolePoseTCPProtocol.h

54 lines
1.5 KiB
C
Raw Normal View History

#pragma once
#include <QObject>
#include <QString>
#include <functional>
#include <memory>
#include "IVrConfig.h"
#include "RobotPose6D.h"
using DetectionTriggerCallback = std::function<void(int cameraIndex, const RobotPose6D& robotPose)>;
/**
* @brief TireHolePose TCP PIMPL
*
* (Eye-to-Hand)姿
*
*
* - : D1 1
* - : count_X1_Y1_Z1_A1_B1_C1_X2_Y2_Z2_A2_B2_C2_...
* (count 6 XYZ + 姿 A/B/C)
*
* IYTCPServer QObject
*/
class TireHolePoseTCPProtocol : public QObject
{
Q_OBJECT
public:
explicit TireHolePoseTCPProtocol(QObject* parent = nullptr);
~TireHolePoseTCPProtocol();
bool StartServer(uint16_t port);
void StopServer();
bool IsConnected() const;
void SetDetectionTriggerCallback(DetectionTriggerCallback callback);
void SendResult(const QString& resultText);
signals:
void ConnectionChanged(bool connected);
void DataReceived(const QString& data);
void DetectionTriggered(int cameraIndex, const RobotPose6D& robotPose);
private slots:
void OnNewConnection();
void OnDisconnected();
void OnReadyRead(const QByteArray& data);
private:
void ProcessCommand(const QString& command);
class Impl;
std::unique_ptr<Impl> m_pImpl;
};