GrabBag/BeltTearingApp/Presenter/Inc/BeltTearingPresenter.h

59 lines
2.1 KiB
C++

#ifndef BELTTEARINGPRESENTER_H
#define BELTTEARINGPRESENTER_H
#include "IVrBeltTearingConfig.h"
#include "VrTcpClient.h"
#include <QObject>
#include <QString>
#include "widgets/DeviceStatusWidget.h"
enum class ByteDataType {
Text = 0x01,
Image = 0x02
};
class BeltTearingPresenter : public QWidget
{
Q_OBJECT
public:
explicit BeltTearingPresenter(QWidget* parent = nullptr);
~BeltTearingPresenter();
void Init();
QStringList getServerNames() const;
QString getServerIp(const QString &serverName) const ;
quint16 getServerPort(const QString &serverName) const ;
QString getServerDisplayName(const QString &serverName) const ;
// 设置设备状态控件
void setDeviceStatusWidget(DeviceStatusWidget* widget) { m_deviceStatusWidget = widget; }
// 设置状态更新接口
void setStatusUpdate(IStatusUpdate* statusUpdate) { m_statusUpdate = statusUpdate; }
private:
// IBeltTearingPresenter interface implementation
bool initializeConfig(const QString &configPath);
bool connectToServer(const ServerInfo &serverInfo, const QString &serverName = QString());
void disconnectFromServer(const QString &serverName = QString()) ;
bool isConnected(const QString &serverName = QString()) const ;
bool sendData(const QByteArray &data, const QString &serverName = QString());
private slots:
void onConnected(const QString &serverName);
void onDisconnected(const QString &serverName);
void onDataReceived(const QString &serverName, const QByteArray &data);
void onTcpError(const QString &serverName, const QString &error);
private:
IStatusUpdate* m_statusUpdate; // 状态更新接口
IVrBeltTearingConfig * m_config;
DeviceStatusWidget* m_deviceStatusWidget; // 设备状态控件
QMap<QString, VrTcpClient*> m_tcpClients; // 服务器名称 -> TCP客户端映射
QMap<QString, ServerInfo> m_serverInfos; // 服务器名称 -> 服务器信息映射
};
#endif // BELTTEARINGPRESENTER_H