S
Hallo,
also, ich habe jetzt versucht das ganze mit einem Timer zu realisieren, und es läuft auch schon einigermaßen, alledings ist noch ein Fehler drin, den ich nicht finde.
Ich rufe in meinem Konstruktor die Methode getButton() auf, welche folgendermaßen aussieht:
void DisplayUnit::getButton()
{
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(update()));
timer->start(100);
}
Der Slot update() ist so implementiert:
void DisplayUnit::update()
{
if ( m_CDUPushedButtonsQueue->ReceiveEntry(Button))
{
switch (m_CDUPushedButtonsQueue->ReceiveEntry(Button))
{
case 0: slotPage1();
printf("Empfange Taste %d \n",Button);
break;
case 1: slotPage2();
printf("Empfange Taste %d \n",Button);
break;
}
}
}
Jetzt habe ich noch folgende Probleme:
Egal welcher Button in Anwendung A gedrückt wird, es wird immer der slotPage1 ausgeführt, auch wenn z.B. der Button 15 gedrückt wird.
Obwohl die Ausgabe bei Anwendung A sagt, dass Button x gesendet wurde, als Ausgabe von B erscheint immer die Zahl 4223872, die ich mir überhaupt nicht erklären kann
Der slotPage2 wird nie ausgeführt, d.h. sobald ich bei Anwendung A irgendeinen Button drücke spring Anwendung B wie gewünscht zur Page2, wenn ich dann wieder Button 1 o.ä drücke passiert gar nichts.
Ich hab mit den Code jetzt 10 Mal durchgelesen, aber ich komme irgendwie nicht auf den Fehler.
EDIT: Füge ich in der update() vor der switch-Anweisung die Zeile ein
cout << Button << endl;
wird komischerweise noch die richtige zahl ausgegeben, der Fehler muss also irgendwo in der switch-Anweisung liegen
EDIT2: PROBLEM GELÖST, mit switch(Button) anstelle von switch(m_CDUPushedButtonsQueue->ReceiveEntry(Button)) funktioniert es wie gewünscht
MfG