mySQL - Polling/Interrupt in C?

Gast #1882827
Lesenswert?

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 #1882854
Lesenswert?

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 #1883765
Lesenswert?

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 #1895077
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren