Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 17

Thema: Variable von PHP nach C

  1. #1
    Registrierter Benutzer
    Registriert seit
    30.01.2003
    Beiträge
    97

    Variable von PHP nach C

    Hallo!

    Wie kann ich über ein PHP-Skript eine Variable in einem laufenden C-Programm ändern?

    Wie ist es z.B. möglich, aus PHP einen Integer in eine bestimmte Speicheradresse zu schreiben, und diese dann mit C auszulesen?

    Vielen Dank für Hilfe und Tipps!

  2. #2
    Registrierter Benutzer
    Registriert seit
    14.01.2002
    Beiträge
    657
    shared memory, ich weiß allerdings nicht ob php das schon kann, ansonsten message queue. Suche einfach mal nach IPC oder inter process communication

    Gruß Markus

  3. #3
    Registrierter Benutzer
    Registriert seit
    05.06.2002
    Ort
    Hof
    Beiträge
    154
    phoku:

    willst du eine Datenbank-Schnittstelle zum "Neverwinter Nights
    Server" schreiben? :-D
    Wenn Du geschafft hast, dich mit einem Programm zu verbinden,
    kannst Du mir dann kurz umreissen wie Du es geschafft hast?

    cu, stop.h

  4. #4
    Registrierter Benutzer
    Registriert seit
    30.01.2003
    Beiträge
    97
    jwebworks:

    ne, eigentlich nicht. wie kommst du darauf?

    Was ich eigentlich vorhab, ist meine Relaiskarte am Parallelport über das Internet zu steuern. So dass ich über das Internet Licht ein-/ausschalten, Fische füttern usw. kann

    Das C-Programm hab ich mittels parapin schon realisiert, jetzt fehlt nur noch anbindung an C. Du bringst mich aber auf ne andere Lösung: Ich schreibe die Variable einfach in ne Datenbank, und lese die mit C aus... oder wird das zu systemlastig, wenn ich das stumpf in einer Schleife mache, damit es keine Verzögerungen gibt?

  5. #5
    Registrierter Benutzer
    Registriert seit
    05.06.2002
    Ort
    Hof
    Beiträge
    154
    wie schnell soll das teil denn reagieren.
    wenn du alle 5 sekunden nachschaust.

    du kannst den auftrag ja auch in eine datei
    schreiben und die auf änderungen hin
    überwachen

    cu, stop.h

  6. #6
    Registrierter Benutzer
    Registriert seit
    30.01.2003
    Beiträge
    97
    ne, das soll nahezu in real-time geschehen.
    per live-stream-webcam soll man das ganze beobachten können; und da wären verzögerungen ja ärgerlich.

  7. #7
    Registrierter Benutzer
    Registriert seit
    14.01.2002
    Beiträge
    657
    und wenn du das C Programm einfach von PHP aus aufrufst mit den nötigen Argumenten, es muss ja nicht immer laufen..

  8. #8
    Registrierter Benutzer
    Registriert seit
    30.01.2003
    Beiträge
    97
    wäre wohl ne möglichkeit, stellt aber nicht zufrieden.
    damit wären dann nur recht einfache programme möglich.

    wenn ich z.b. übers internet sage "drehe die cam auf position 240°" muss das programm ja wissen, wo die cam gerade steht, um dann die nötige drehung zu machen. dafür muss die alte position immer in einer variablen gespeichert werden (und das soll nicht in einem file o.ä. geschehen).

  9. #9
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    03.10.2001
    Ort
    potsdam
    Beiträge
    881
    möglich wäre auch eine kommunikation über tcp/ip-sockets. Dein c-prog könnte als serverprozess agieren und auf den soketconnect von php aus reagieren. ich hab sowas zwischen php auf linux und vb auf win zu laufen...
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

  10. #10
    Registrierter Benutzer
    Registriert seit
    30.01.2003
    Beiträge
    97
    da ich die relaiskarte sowiso irgendwann autonom im netzwerk mit eigenem kleinem rechner laufen lassen wollte, hört sich das sehr sehr interessant an!

    kannst du mir dazu weitere quellen schicken?

  11. #11
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    03.10.2001
    Ort
    potsdam
    Beiträge
    881
    Hi,
    ich habe einen serverprocess auf einer win-maschine laufen, der mittels crysal reports reports in pdf erzeugt. mit dem kommuniziere ich so:
    PHP-Code:
    global $PDFPFAD;
    global 
    $REPPFAD;
    global 
    $CRSERVER;

    #vars festlegen
    $param=str_replace("*","=",$param);
    $pdffile=$PDFPFAD.str_replace("/","\\",urldecode($pdffile));
    $repfile=$REPPFAD.$repfile;

    #soket öffnen
    $rsvr=fsockopen($CRSERVER,"7588");   

    if(!
    $rsvr) {echo "Keine Verbindung zum Report-Server";}
    else {    
            
    #daten an report-server senden
        
    fputs($rsvr,"#RSTART#".$repfile."#".$pdffile."#".$param);
        
    $data=fread($rsvr,4);
             
    #auf ok warten für datenempfang
        
    if ($data=="#OK#") {
                    
    #auf ok warten für jobende
            
    $data=fread($rsvr,4);
            }
            
    #verbindung schliessen
        
    fclose($rsvr);
        } 
    und der Server ist ein VB Programm das auf dem port 7588 auf verbindung wartet.
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

  12. #12
    Registrierter Benutzer
    Registriert seit
    16.09.2002
    Beiträge
    73
    geht auch noch einfacher:
    Du erzeugst in deinem C-Programm einfach eine named pipe. Diese öffnest du im C-Programm lesend. Das PHP-Script muss dann nur diese Datei (daher named pipe) öfnnen, einen Befehl hineinschreiben und kann sie dann wieder löschen. Das Lesen in deinem C-Programm könnte blockierend sein.

  13. #13
    Registrierter Benutzer
    Registriert seit
    30.01.2003
    Beiträge
    97
    Wie läßt sich das umsetzen?
    Was ist eine "named pipe"?

  14. #14
    Registrierter Benutzer
    Registriert seit
    16.09.2002
    Beiträge
    73
    ganz einfach ein beispiel:

    Code:
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <stdio.h>
    
    int main(void)
    {
    FILE* file;
    int befehl;
    int argument;
    
    if (mkfifo("/tmp/mypipe", I_RUSR|IWUSR) != 0){
    	perror("pipe konnte nicht erzeugt werden");
    	return 1;
    	}
    
    file = fopen("/tmp/mypipe","r");
    if (!file){
    	perror("pipe konnte nicht geöffnet werden");
    	return 1;
    	}
    
    while (fscanf(file,"%d,%d", &befehl, &argument) == 2){
    	//befehl und argument auswerten
    	if (befehl == 100) break; //befehl zum beenden
    	}
    
    fclose(file);
    return 0;
    }
    Damit wird eine pipe als datei "/tmp/mypipe" angelegt und lesend geöffnet. Dein php-Script muss dann nur immer Befehle der Form "integer,integer\n" hineinschreiben. Man kann natürlich auch Befehle als Strings nehmen.
    Geändert von brotzi (06-03-2003 um 14:12 Uhr)

  15. #15
    Registrierter Benutzer
    Registriert seit
    30.01.2003
    Beiträge
    97
    hm, ne datei anzulegen ist aber bestimmt nicht die eleganteste lösung, oder?

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •