Witam,
Nie rozumiem pewnego zjawiska. Muszę wykorzystać w aplikacji komunikację modbus oraz porównywanie wartości zmiennych. W momencie spełnienia warunków "dzieją się" odpowiednie zdarzenia. Przebrnąłem już przez wątki i utworzyłem wątek do komunikacji modbus. I teraz testuję szkic głównej funkcji. Mój problem polega na tym ,że chcę z jednej funkcji wysłać przynajmniej dwa emit'y, które spowodowałyby reackję w wątku komunikacji modbus.Dodatkowo funkcja główna jest wywoływana cyklicznie przez timer (chodzi o szybkie odświeżanie wartości z modbus'a)
Teraz kod:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "settings.h"
#include <QStatusBar>
#include <QDebug>
#include<QString>
#include <QSqlQueryModel>
#include <QFile>
#include <QThread>
#include "modbus.h"
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
timer_1=new QTimer(this);
timer_1->setInterval(2000);
// Zarządzanie wątkami
QThread* thread = new QThread;
modbus* Modbus = new modbus;
Modbus->moveToThread(thread);
connect(this, SIGNAL (cyl_1_FF()), Modbus, SLOT (Cylinder_1_FF()));
connect(this, SIGNAL(Read_1()),Modbus, SLOT(Read_1_value()));
thread->start();
connect(timer_1,SIGNAL(timeout()),this,SLOT(Test_mode_1()));
}
void MainWindow::Test_mode_1(){
//Tryb badania
emit Read_1();
emit cyl_1_FF();
}
Problem jest taki, że jak zostawię tylko jeden emit to ten emit działa. Przy dwóch emitach - żaden nie działa.
Próbowałem również rodzaju połączenia Qt::BlockingQueuedConnection ale to również nie działa.