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.
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?
Hey, ich möchte es mit mySQL machen, da ich die Messwerte vom Controller später sowieso in einer mySQL ablegen möchte. Von daher...
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ß
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.
Du meinst sozusagen einen Event auslösen, sobald eine Änderung vorliegt? Wie funktioniert das genau??
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?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.