/** * Converter serial to tcp * $Id$ * $HeadURL$ * $Author$ * Created by Philipp Dassow, NLT, 30-11-2018 */ #pragma once #include #include #include #include #include #include #include "logger.h" namespace SerialToTcpConverter { class Converter; class ConverterThread : public QThread { Q_OBJECT public: explicit ConverterThread(const QString &serialPortName, int baudrate, int tcpPort); QString portName() const { return m_serialPortName; } protected: void run() override; signals: void connected(const QString &port); private: QString m_serialPortName; int m_baudrate; int m_tcpPort; LOGGER_T &m_logger; // Logger-Object }; class Converter : public QObject { Q_OBJECT public: explicit Converter(QObject* parent = nullptr); ~Converter(); bool init(const QString &serialPortName, int baudrate, int tcpPort); private slots: // serial bool openSerialPort(); void readSerial(); void serialClosed(); void handleSerialError(QSerialPort::SerialPortError error); // tcp void newConnection(); void readTcp(); void tcpDisconnected(); void handleTcpError(QAbstractSocket::SocketError error); private: QSerialPort *m_serialPort; QString m_serialPortName; int m_baudrate; QTcpServer *m_tcpServer; QVector m_sockets; LOGGER_T m_logger; }; } //namespace SerialToTcpConverter