Forum: PC Hard- und Software PHP RS232 + Bit-Opertoren AND-Verknüpfung in ASCII/HEX/Byte?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von PHP-Lernender (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich habe an der Seriellen schnittstelle einen ATMEGA168 mit DS3231 
hängen. Er ist auf verschiedene Kommandos bei Empfang eines Bytes vom 
Computer Programmiert:
So sollte z.b. bei senden von 'C' durch den Computer die aktuelle 
Systemzeit des DS3231 zurückgegeben werden.

Dass funktioniert auch, problem ist jedoch dass umrechnen dieser als 
Byte empfangenen Zeit in eine als ASCII darstelbare Zeit.
Ich kann die Zeit nicht auswerten, da ich mit den Bitoperatoren nicht 
zurech komme.

Die Auswertung sieht wie folgt aus:
1
    $Zeit="ABCD";
2
    echo "Die serielle Schnittstelle konnte ge&oumlffnet werden!</br>";
3
    fwrite($fp,'C');
4
    sleep(2);
5
    $inhalt='ABCD';
6
    $inhalt=fread($fp, strlen($zeit));
7
8
    $flag1 = 0x0f;
9
    echo "</br> InhaltGes ";
10
    echo $inhalt;
11
    echo "</br> Inhalt[0] ";
12
    echo $inhalt[0];  
13
    
14
    echo "</br>AND-Verknüpfung ";
15
    echo $inhalt[0] & $flag1;
16
    
17
    $sek1 = $inhalt[0] & 0x0f;
18
    $sek10 = $inhalt[0] & 0xf0;
19
    echo "</br>1: SEK 1 : ";
20
    echo $sek1;
21
    echo "</br>1: SEK 10 : ";
22
    echo $sek10;
23
    
24
    $sek10 >> 4;
25
    echo "</br>2: SEK 10 : ";
26
    echo $sek10;

Angenommen inhalt[0]='U' oder 85 oder 0x55.
Dann wird als AND-Verknüpfung von inhalt[0] und 0x0f = 0 ausgegeben.
Ebenso wird sek1 und sek10 = 0.

Scheinbar mache ich einen entscheidenden fehler.
Erstaunlich ist jedoch, dass bei inhalt[0]='8' oder 56 oder 0x38 
tatsächlich 8 für die AND-Verknüpfung des gesamten Bytes mit 0x0f 
erscheint.

Scheinbar scheint PHP inhalt[0] als char zu interpretieren und in ASCII 
auszuwerten?
So etwas habe ich aber nochnie erlebt, und auch einiges suchen brachte 
bisher keine Erklärung oder Lösungsmöglichkeit.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.