Files
qt5-legatus-legacy/Lts/Tools/SerialToTcpConverter/converter.h
T
2026-08-13 18:33:10 +02:00

81 lines
1.5 KiB
C++
Executable File

/**
* Converter serial to tcp
* $Id$
* $HeadURL$
* $Author$
* Created by Philipp Dassow, NLT, 30-11-2018
*/
#pragma once
#include <QObject>
#include <QSerialPort>
#include <QString>
#include <QTcpServer>
#include <QTcpSocket>
#include <QThread>
#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<QTcpSocket*> m_sockets;
LOGGER_T m_logger;
};
} //namespace SerialToTcpConverter