rs232 schnittstelle ansteuern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • rs232 schnittstelle ansteuern

    Hallo zusammen,

    gibt es eine Möglichkeit mit php eine RS232 Schnittstelle zu öffnen um zb. Daten eines Dataloggers einer PV Anlage auszulesen und diese auf einem Web auszugeben?
    Vielen Dank!!!

    Gruß hwk06

  • #2
    hallo,

    1. frag ich mich ob das hier das richtige forum dafür ist.

    2. ist php nicht dafür gedacht um mit rs232 schnittstellen zu kommunizieren

    3. könnteste per exec(); oder ähnlichen funktionen auf systemfunktionen zugreifen und so ein programm starten welches dir die schnittstelle ausliest. das programm musste dir natürlich dann schreiben.

    *edit*
    4. normale antwort von manchen wäre: Nein(, nicht direkt).

    mfg
    bugbuster
    Zuletzt geändert von Bugbuster; 25.01.2008, 15:45.
    tutorial: peterkropff.de schattenbaum.de tut.php-quake.net
    documentation: php.net mysql.com framework.zend.com

    Die Nachtwache!

    Kommentar


    • #3
      Hallo Zusammen,

      nochmal zum Problem der seriellen Schnittstelle.

      Geht wohl doch (leider nur halb), per php auf die ser. zuzugreifen. Zumindest wird die Schnittstelle geöffnet und ein String, den unser Bus braucht, auf die Schnittstelle gesendet.
      Wir haben den String mit einem Serial Sniffer mitgelesen.

      PROBLEM:
      Es kommt keine Antwort zurück. Normal sollte sofort, nachdem der String gesendet wurde, ein String zurück kommen.
      Das haben wir so getestet:
      Per Serial Sniffer den String eingeben und sofort kam die Antwort:
      Z.B.
      Anfrage: #80#80#80#00.......
      Antwort: #90#04#04#01.......

      Dies sehe ich im Ausgabefenster des Serial Sniffers.

      Sobald ich die Schnittstelle per php öffne und den String sende, sehe ich im Serial Sniffer exakt die gleiche Anfrage, als hätte ich sie manuell eingegeben.
      #80#80#80#00.......

      Jedoch bleibt die Antwort aus.

      Wäre es möglich, dass php die Schnittstelle irgendwie sperrt. Sie ist zwar laut php zum Lesen und Schreiben geöffnet aber man kann ja nie wissen. Hat da jemand Erfahrung?


      PHP-Code:
      <?

      error_reporting(E_ALL);


      $fp=`mode com1: BAUD=9600 PARITY=N data=8 stop=1 DTR=ON RTS=ON`; 
          
      echo $fp;

      if (!$fp = fopen ("com1:", "w+"))
      {    
      echo ' Anschluss konnte nicht geöffnet werden!!!';
      }

       else { 
           $start_byte=chr(hexdec("80"));
           $length_byte=chr(hexdec("00"));
           $number_byte=chr(hexdec("00"));
           $device_byte=chr(hexdec("00"));
           $command_byte=chr(hexdec("01"));
               $chksum_byte=chr(hexdec("01")); 
          
          $start_sequenz=$start_byte.$start_byte.$start_byte;
              //...
          $string=$start_sequenz.$length_byte.$number_byte.$device_byte.$command_byte.$chksum_byte;

              

      fwrite ($fp, $string );


      echo $fp;



      while(feof($fp))
      {
      $out.= fread($fp, 1000000);
      echo $out;

      }
      ?>

      Kommentar


      • #4
        Sorry, aber siehst du hier ernsthaft ein SQL resp DB-Problem??? Da du es aber mit PHP versuchen willst kommst du mal zu Brainstorming. Ev hat jemand eine Idee wie das gehen könnte **move to Brainstorming**
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Ist das Skript vielleicht schon bis zum Ende gelaufen, bevor Daten kommen? Ich kenn mich damit zu wenig aus, aber kann ein sleep vor dem Lesen helfen?

          Kommentar


          • #6
            Sleep bringt auch nichts. Hab ne anderen Sniffer und der zeigt mir, dass das Skript den COM Port ca. 4 Mal öffnet, bevor er den Anfragestring schickt.

            Hier nochmal das Skript (geändert) und ne Anlage mit Bild...

            PHP-Code:
            <?php
            `mode COM1: BAUD=4800 PARITY=N data=8 stop=1 xon=off`; 
                
                
            $fp fopen ("COM1:""w+"); 
                if (!
            $fp) { 
                    echo 
            "can't open port: COM1"
                } else {
                
            $start_byte=chr(hexdec("80"));
                
            $length_byte=chr(hexdec("00"));
                
            $device_byte=chr(hexdec("00"));
                
            $type_byte=chr(hexdec("00"));
                
            $command_byte=chr(hexdec("01"));
                
            $checksum_byte=chr(hexdec("01"));
                
                    
                    
            $start_sequenz=$start_byte.$start_byte.$start_byte;
                    
            //...
                
            $string=$start_sequenz.$length_byte.$device_byte.$type_byte.$command_byte.$checksum_byte;
                    
            fputs ($fp$string ); 
            }

            sleep(10);

            ?>
            Angehängte Dateien

            Kommentar


            • #7
              und hier ein Bild, wie es eigentlich sein soll. Habe ein Testprogramm für die Schnittstelle von der Firma bekommen. Da sieht es so aus --> Anlage
              Angehängte Dateien

              Kommentar


              • #8
                Kann mir vorstellen, das PHP dazu einfach nicht Hardwarenah genug ist.

                Kommentar


                • #9
                  eine lösung wär natürlich ein extension in zb c zu schreiben.
                  sollte nich all zu schwer sein.
                  oder sowieso gleich per cgi ein natives programm ansprechen, auch nich so schwer.
                  blllubb

                  Kommentar


                  • #10
                    hallo
                    Ja, ich bin neu hier

                    Habe grad im Manual das hier gefunden...
                    http://de.php.net/manual/de/ref.dio.php
                    Vielleicht ist das ja das richtige, vorallem, da dort eine Funktion zum Setzen der baud-Rate vorhanden ist.

                    mfg
                    Zuletzt geändert von $_Baker; 24.02.2008, 22:40.

                    Kommentar

                    Lädt...
                    X