PHP RS232 + Bit-Opertoren AND-Verknüpfung in ASCII/HEX/Byte?

Gast #4797249
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

Eine eigene Frage? Dieser Thread ist über 9 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.