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.