alloah, ich habe ein Programm geschrieben, das momentan nur in der Konsole läuft. Es steuert eigentlich nur eine Relaikarte über die serielle Schnitstelle. Die Relais werden in bestimmten Sequenzen geschaltet. Gibt man eine 1 ein so wird Sequenz 1 ausgeführt und gibt man eine 2 ein wird Sequenz 2 ausgefüht. Die Eingabe wird mittels kbhit ( ) und getch ( ) ausgewertet.
C++:
char c; { while (c != 'q')% { if (kbhit()) { c = getch() //weitere Auswertungen } } //weitere Steurung Sleep (1 ) } }
So weit funktioniert es wunderbar. Jetzt möchte ich das Programm aber nicht mehr über die Konsole sondern über ein Interface, das in Python geschrieben ist steuern. Das müsste ja am einfachsten per pipes funktionieren. Leider tut es das nicht. Ich denke mal das Problem ist die Funktion kbhit, da ja keine Tastautur eingabe stattfindet. Hat jemand ne andere Idee wie ich meine Eingabe pollen kann? Auf Threads wollte ich eigentlich verzichten.
Wenn das Programm sonst nichts tut und nur aktiv werden muss, wenn ein Befehl eintrudelt, dann kannst du einfach blockierend aus der Pipe lesen, also etwa so (Pseudocode):
C++:
while (true) { readpipe (&command); // bleibt stehen, bis ein Kommando aus der Pipe kommt process (&command); // verarbeitet das Kommando. }
Tschuldigung das habe ich vergessen zu erwähnen. Es muss noch jede hunderstel sekunde die eingänge an meiner Karte auslesen. Deswegen darf es nicht blockieren.
und benutz dann fread o.ä um davon nichtblockierend zu lesen -- class God : public ChuckNorris { };Dieser Post wurde am 30.05.2010 um 15:51 Uhr von FloSoft editiert.