mySQL - Polling/Interrupt in C?

Gast #1882827
Hallo Leute!

Es geht nun mal wieder um mein Projekt, was ihr hier in der Rubrik 'µC & 
Elektronik' hier nachlesen könnt: "Wohnungssteuerung - Gießroboter"

Und zwar habe ich jetzt soweit das PHP-Skript mit einem Button, welches 
nach dem Klick in die mySQL-Datenbank einen Wert schreibt.
Daraufhin überprüft das C-Programm, ob denn dieser Wert in der 
mySQL-Datenbank vorliegt und schickt dann ein Zeichen über die Serielle 
Schnittstelle an meinen AVR.

Nun ist der nächste Schritt, nicht mehr durch "händisches Polling" 
(indem man das C-Programm desöfteren ausführt und darauf wartet, dass 
auf den Button im PHP-Skript geklickt wurde) die mySQL-Datenbank 
abzufragen.

Und genau darum gehts jetzt :-)

Wie kann ich in meinem c-Programm entweder einen Interrupt auslösen 
lassen, sobald ein bestimmter Wert in der mySQL-Datenbank vorliegt, dass 
er eine bestimmte Subroutine ausführt (z.B. "sende Zeichen über RS232") 
oder wie kann ich "ressourcenschonend" diese mySQL-Datenbank pollen?

Erfahrungsgemäß wäre eine while(1)-Schleife wohl das "einfachste", 
allerdings ist dies mit Sicherheit nicht das eleganteste, da mein 
Programm ja nebenher auch noch Messwerte liefern und diese in eine 
andere mySQL-Tabelle schreiben soll.

Ich bräuchte praktisch einen zweiten Thread, der immer nach dem Zustand 
des mySQL-Wertes schaut, währenddessen aber auch noch Messwerte z.B. vom 
Mikrocontroller entgegennimmt.

Wisst ihr was ich meine?
Leider kenne ich bisher solche Sachen nur aus der Mikrocontroller-Welt, 
beispielsweise beim Tastendruck-Abfragen. Zumal es bei Mikrocontroller 
eben einen Hardware-Interrupt-Eingang gibt.

Wie ist das beim PC?



Vielen Dank!

Gruß
Joh.
Gast
leider gibt es soche möglichkeiten nicht im SQL-Standard. Es gibt 
datenbanken dort kann man sich für events registrieren (borland) aber 
für MySql kenn ich nichts. Warum kannst du nicht von dem PHP direkt eine 
Nachricht an das C Programm schicken?
Gast
Werde mal anfangen, mich in die Threadprogrammierung einzulesen.

Werde dann per Thread alle Sekunden einmal auf die DB zugreifen und 
einlesen, ob sich was geändert hat.



Gruß
Gast
JK schrieb:
> ich möchte es mit mySQL machen, da ich die Messwerte vom Controller
> später sowieso in einer mySQL ablegen möchte. Von daher...

das kannst du ja zusätzlich machen und wenn du sie eingetragen hast 
kannst du über einen anderne weg dem C programm eine Nachricht schicken.
(Firma: tsx89) Persönliche Seite
JK schrieb:
> Werde dann per Thread alle Sekunden einmal auf die DB zugreifen und
> einlesen, ob sich was geändert hat.

Ist zwar schon zu spät:
Für solche Sachen hab ich mir überlegt, die gewünschte Anwendung per PHP 
+ Parameter zu starten. (So ne Art Silent-Switch) Falls das nicht geht, 
weil die App schon rennt, oder nicht nochmal ausgeführt werden darf: 
Eine zweite App schreiben, die von PHP aufgerufen wird, und dann per 
Localhost-Socket oder sonnst wie mit der ersten App kommuniziert und 
etwas aufruft. So hat man nahezu verzögerungsfreie Events, spaart 
Performance, und anstelle von der Localhost-Vebindung, kann es auch ein 
anderer Cluster oder Server sein, wo die erste App rennt!!!

Ich bauch das sehr oft, auch für Haus-Automatisierung.. Gibts noch ne 
andere und vielleicht bessere Idee?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.