[gelöst] Signals and Slots
Verfasst: 11. September 2008 11:49
Ich habe mir das Beispiel über Signal ans slots angeschaut und genau soetwas in der Art habe ich gesucht. Folgendes Szenario. Gui Thread - Thread für serielle schnittstelle - arrayspeicher.
der serielle schnittstellen thread schreibt in das array. Über signal ans slots (connect) wird der gui mitgeteilt das neue daten drin sind. Soweit die theorie die funktionieren sollte
nun die Praxis:
gui
data ist hier der pointer auf die klasse in der das array erstellt/befüllt ... wird
seriellthread
daten ist hier der pointer auf die klasse in der das array erstellt/befüllt wird
arrayklasse.cpp
arrayklasse.h
nun kompilieren tut er und er zeigt keine fehler an. Sobald ich das Programm start schmiert er ab.
hier der problembericht:
AppName: fertig.exe AppVer: 0.0.0.0 ModName: qtcored4.dll
ModVer: 4.4.1.0 Offset: 001609c8
die technischen details dazu poste ich mal nicht. Hoffe es ist nur ein kleiner denkfehler.
der serielle schnittstellen thread schreibt in das array. Über signal ans slots (connect) wird der gui mitgeteilt das neue daten drin sind. Soweit die theorie die funktionieren sollte
nun die Praxis:
gui
Code: Alles auswählen
QObject::connect(data, SIGNAL(valueChange(int,int16_t)),this,SLOT(einlesen1(int,int16_t)));
...
void tabs::einlesen1(int adresse,int16_t wert)
{
cout<< "neuer Wert"<<endl;
}seriellthread
Code: Alles auswählen
daten->set(1,speicher.puffer[39]);
daten->set(1,speicher.puffer[12]);
arrayklasse.cpp
Code: Alles auswählen
...
void Datenhaltung::set(int adresse,int16_t zahl)
{
schutz.acquire();
v[adresse].wert=zahl;
schutz.release();
emit valueChange(adresse,zahl);
}Code: Alles auswählen
class Datenhaltung : public QObject
{
Q_OBJECT
public:
Datenhaltung();
virtual ~Datenhaltung();
QSemaphore schutz;
public slots:
void set(int adresse,int16_t zahl);
signals:
void valueChange(int adresse,int16_t wert);
private:
intspeicher v[25];
};
#endif /* DATENHALTUNG_H_ */hier der problembericht:
AppName: fertig.exe AppVer: 0.0.0.0 ModName: qtcored4.dll
ModVer: 4.4.1.0 Offset: 001609c8
die technischen details dazu poste ich mal nicht. Hoffe es ist nur ein kleiner denkfehler.