@AlexSer

Как соединить сигнал на чтение данных с COM в другом классе в QT?

Есть MainWindow и есть класс в котором я выделил слот на чтение данных с COm порта.
Листинг SerialClass.h
#ifndef SERIALCONNECT_H
#define SERIALCONNECT_H
#include <QString>
#include <QSerialPort>
#include <QSerialPortInfo>
class SerialClass: public QObject
{
    Q_OBJECT
public:
    SerialClass(QString);
    void Start();
    void Stop();
    void RecieveMsg(QByteArray data);
    bool StatusConnection();

    QSerialPort *serial;
private:
    QSerialPort *serialPort;
    QString portName;
    int baudRate;
    int dataBits;
    int parity;
    int stopBits;
    int flowControl;

public slots:
      void ReadData();
};



#endif // SERIALCONNECT_H


Листинг SerialClass.cpp
SerialClass::SerialClass(QString analizator)
{

    QSettings *settings = new QSettings("conf.ini",QSettings::IniFormat);
    portName=settings->value(analizator+"/port").toString();
    baudRate=settings->value(analizator+"/baudrate").toInt();
    dataBits=settings->value(analizator+"/dataBits").toInt();
    parity=settings->value(analizator+"/parity").toInt();
    stopBits=settings->value(analizator+"/stopBits").toInt();
    flowControl=settings->value(analizator+"/flowControl").toInt();
}

void SerialClass::Start()
{

     serialPort=new QSerialPort();
     serialPort->setPortName(portName);
     serialPort->setBaudRate(baudRate);
     serialPort->setDataBits(QSerialPort::DataBits(dataBits));
     serialPort->setParity(QSerialPort::Parity(parity));
     serialPort->setStopBits(QSerialPort::StopBits(stopBits));
     serialPort->setFlowControl(QSerialPort::FlowControl(flowControl));
     serialPort->open(QIODevice::ReadWrite);
}

void SerialClass::Stop()
{
     serialPort->close();
}

void SerialClass::ReadData()
{
     const auto byte=serialPort->readAll();
    qDebug()<<byte;
}

void SerialClass::RecieveMsg(QByteArray data)
{
    serialPort->write(data);
}

bool SerialClass::StatusConnection()
{
    if(serialPort->isOpen()){
        return  true;
    }
    return false;
}

Как в mainWindow привязать на чтение данных со слота ReadData()?
SerialClass *serial;
    serial =new SerialClass("Device");
    serial->Start();
делаю 
 connect(this,SIGNAL(ReadyRead()),serial, &SerialClass::ReadData);

Но что то я не понимаю....Подскажите плиз!
  • Вопрос задан
  • 202 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы