#include "platformserver.h" #include "serialport.h" #include "serverhandler.h" #include #include PlatformServer::PlatformServer(const QString &name, QObject *parent) :QThread(parent),m_serverName(name),m_ptr(NULL) { } void PlatformServer::startwork() { if(m_ptr == NULL) { SerialPort *serial = new SerialPort(this); m_ptr = serial; if(!serial->config(m_arg)) { foreach (ServerHandler *handler, m_handlers) { handler->handleError(QString("ERROR[code=%1,string=%2]") .arg(serial->error()) .arg(serial->errorString())); } return; } connect(serial, &QSerialPort::readyRead, this, [=](){ QByteArray d =serial->readAll(); foreach (ServerHandler *handler, m_handlers) { handler->handleData(d); } }); connect(serial, static_cast(&QSerialPort::error), this, [=](QSerialPort::SerialPortError serialPortError){ qDebug()<<"error="<< serialPortError; foreach (ServerHandler *handler, m_handlers) { handler->handleError(QString("ERROR[code=%1,string=%2]") .arg(serialPortError) .arg(serial->errorString())); } }); } } void PlatformServer::stopwork() { if(m_ptr != NULL) { SerialPort *serial = dynamic_cast(m_ptr); if(serial->isOpen()) { serial->close(); } delete m_ptr; m_ptr = NULL; } } void PlatformServer::sendData(const QByteArray &d) { if(m_ptr != NULL) { SerialPort *serial = dynamic_cast(m_ptr); if(serial->isOpen()) { serial->writeData(d); } } } void PlatformServer::config(const QVariant &arg) { m_arg = arg; } void PlatformServer::addHandler(ServerHandler *handler) { m_handlers.append(handler); handler->addService(this); } void PlatformServer::removehandler(ServerHandler *handler) { m_handlers.removeOne(handler); } QString PlatformServer::serverName() { return m_serverName; }