Пишу программу для получения и и парсинга данных по ком порту. Столкнулся с такой проблемой. При соединений с ком портом необходимо, чтобы запускался класс обработчика принятых данных. Но параметры в слот передать нельзя.
через QObject::sender тоже нельзя, так как сперва идет сигнал на коннект с ком портом, потом сигнал на чтение данных с ком порта.
Вот как выглядит алгоритм:
с Action menu - >коннект с ком->коннект на чтение данных.
Вот код:
В mainwindow
connect(ui->actionSwelab_Alfa_1, SIGNAL(triggered()), this, SLOT(ConnCom());
connect(ui->actionSwelab_Alfa_2, SIGNAL(triggered()), this, SLOT(ConnCom());
void MainWindow::ConnCom()(QString port,int baudrate,QString analizator){
serialPort=new QSerialPort(this);
serialPort->setPortName(port);
serialPort->setBaudRate(baudrate);
serialPort->setDataBits(QSerialPort::Data8);
serialPort->setParity(QSerialPort::NoParity);
serialPort->setStopBits(QSerialPort::OneStop);
serialPort->setFlowControl(QSerialPort::NoFlowControl);
//настройки для CTS/RTS
//serialPort->setRequestToSend(true);
//serialPort->setDataTerminalReady(true);
serialPort->open(QIODevice::ReadOnly);
##Сигнал на чтение данных с ком порта
QObject::connect(serialPort,SIGNAL(readyRead()),this,SLOT(ReadDataSerial()));
if(serialPort->isOpen()){
QMessageBox::about(this,"title","Соединение установлено успешно");
dialogSettCom->close();
//запускаем чтение данных с порта
}else{
QMessageBox::warning(this,"title","Соединение не установлено");
}
}
void MainWindow::ReadDataSerial(){
QString byte;
byte = serialPort->readAll();
ui->terminal->append("send sample \n"+ byte);
//класс обработчик для каждого устройства свой?
SweelabAlfa *Alfa;
Alfa=new SweelabAlfa();
//я хочу чтобы приходил какой нить параметр, который определял бы какой класс подключать
если бы QObjet::sender() был бы , я бы просто использовал бы if().
}
Подскажите как решить данную проблему.