PHP <RS232> M8 in ASCII

Gast #1152432
Hallo,

ich habe ein (hoffentlich) kleineres Problem. Ich versuche momentan 
meinen M8 über einen RS232 mit PHP anzusteuern.

Ich weis, das eine Verbindung besteht (habe mir hierzu ein Testprogramm 
geschrieben und auf den Controller geflasht, eine LED geht an sobald 
Daten eingehen. Dies geschieht beim Senden mit meinem PHP Script).
Ich empfange ebenso Daten von dem Controller.
Das Problem besteht darin die Daten zu interpretieren.
Leider versteht mein Controller derzeit nur binäre Befehle (suche hier 
noch ein Script für ASCII Empfang), daher kannn ich noch keine Tests 
machen der Verbindung PHP > Controller.
Die andere Richtung (M8 > PHP) habe ich durch ein "uart_puts("muh"); in 
1 Sekunden Abständen getestet. Die Daten werden von PHP erkannt und 
ausgegeben, jedoch nicht "muh" sondern etwas kryptisches.

Meine Frage an euch also:
-Kennt sich jemand mit PHP <> M8 in ASCII aus ?

Vielen Dank

Dominik
Gast #1152441
>Die andere Richtung (M8 > PHP) habe ich durch ein "uart_puts("muh"); in
>1 Sekunden Abständen getestet. Die Daten werden von PHP erkannt und
>ausgegeben, jedoch nicht "muh" sondern etwas kryptisches.

Baudrate stimmt nicht.

>Meine Frage an euch also:
>-Kennt sich jemand mit PHP <> M8 in ASCII aus ?

Was ist ein M8?
Gast #1152463
>Die Baudrate ist gleich: 57600 bei PHP und im Controller
>M8 => Atmel Mega 8

Hast du den Int.RC. Osci ausgewählt?
Mit einem Baudratenquarz klappt sowas wesentlich besser.
Gast #1152469
>Baudrate stimmt nicht.

Vielleicht auch die Datenbreite, die Anzahl der Stop-Bits oder die 
Parität.
Was auch noch sehr beliebt ist: man benutzt den internen RC-Oszillator.
Das ist aber bei solchen asynchronen Sachen Pfui!
Gast #1152478
Wenn im Terminal das richtige ankommt, dann kann es ja nur an falschen 
einstellungen auf der PHP Seite liegen. Hast du dort auch die ich denke 
mal 8 datenbits, 1 Stopbit und keine partity ausgewählt? (8N1)
Gast #1152480
Der Fehler lag darin das ich ausversehen den String nicht einmal pro 
Sekunde gesendet habe sondern mit 16MHz .. vor die Stirn hau

Der String kommt nun sauber an!

Danke für die schnelle Hilfe!

Nun bleibt noch die Frage wie ich meinem Controller ASCII verständlich 
mache
Gast #1152535
Kenne mich in C++ leider nicht so gut aus vorallem nicht mit mit 
Zeigern, welche für soetwas verwendet werden.

Auf meiner PHP Seite habe ich mir ein Script geschrieben, welches ab 
einem Startzeichen solange Chars sammelt bis zum Stopzeichen und diesen 
String dann an eine Switch sendet welche die Aktion ausführt.
1
while (false !== ($char = fgetc($fp))) {
2
      if($char = "m") {
3
      $buffer = array();
4
        while (false !== ($char = fgetc($fp)) AND ($char != "h")){
5
          $buffer[] = $char;
6
          DoIt($buffer);
7
        }
8
      }
9
    }





Wäre jemand so nett mir das in C++ zu schreiben?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.