Hallo,
ich muß zugeben - ich habe mit FiFo's unter C und PHP noch nie was gemacht und daher stellen sich ein paar grundsätzliche Fragen.
Erst mal zu dem, was ich machen möchte:
Ich habe ein C Programm, was eine Art Gerätesteuerung macht und auch immer laufen muß. (An dem Gerät ist ein 100mW Laser, der schaltungstechnisch gesperrt wird, wenn der Raspberry / oder das Programm abstürtzt - Stichwort: Lasersicherheit).
Ich möchte zunächst das Ganze über ein Web-Interface steuern, ggf. später noch einen TCP Kanal dazuprogrammieren.
Nun ist das Problem, wie man die Daten vom PHP in's C und andersherum bekommt.
Ich habe dazu 2 FIFO's (mkfifo) erzeugt. Eine FIFO dient als Kanal vom PHP zum C und die andere ist für die andere Richtung da.
Eigentlich hätte ich gedacht, daß die FiFo etwa so funktionieren, wie in Labview die Queues, aber dem scheint nicht so zu sein.
Kann ich eine FiFo immer auslesen, egal ob etwas drinnsteht oder nicht - kann man das irgendwie umstellen?
z.B. Ich sage dem C Programm: "mache Messung" und warte dann, bis an der anderen FiFo Daten anliegen (halt mit einem Timeout). Momentan liest der halt nichts und irgendwann kommen dann mal Daten und ich muß mir das alles erst wieder zusammenbauen.
Genau so bei dem Datenformat. Egal, wie langsam ich die Daten in die FiFo schaufele - die kommen immer als eine Zeile am anderen Ende raus.
z.B.: ich schiebe: 1, 2, 3, 4 .. usw im Abstand von 100ms in die Fifo und lese mit dem PHP das auf der anderen Seite ein. Bekomme ich: 1 2 3 4 (als ein String) und die Zahlen sind von einem 0xB6 und 0x04 getrennt. Warum ist das so?
Sorry, falls die Fragen etwas doof sind, ich werde aus den FiFo Beschreibung, die es so im Netz gibt einfach nicht schlau...