Byte 1 + 2 = 12 wie machbar
Byte 1 + 2 = 12 wie machbar
Hallo,
ich lese seriell ein Byte z.B.
a:=1 danach das nächtste, z.B.
b:=2 nun will ich beide Bytes wieder in eine Bytevaraible schieben zu stelle ein und zwei also so
c:=12;
Wie realisiere ich das?
ich lese seriell ein Byte z.B.
a:=1 danach das nächtste, z.B.
b:=2 nun will ich beide Bytes wieder in eine Bytevaraible schieben zu stelle ein und zwei also so
c:=12;
Wie realisiere ich das?
Re: Byte 1 + 2 = 12 wie machbar
Verstehe ich das richtig, dass du zwei Bytes zu einem Wert kombinieren willst? Dann ist das Ergebnis aber kein Byte mehr. Und sind es nur zwei Byte, oder können es auch mehr sein?
Bei zwei Bytes wäre eine mögliche Realisierungsmöglichkeit:
Bei zwei Bytes wäre eine mögliche Realisierungsmöglichkeit:
Code: Alles auswählen
function CombineBytes(Byte1, Byte2: byte): word;
begin
Result := Byte1 + Byte2 shl 8;
end;
Re: Byte 1 + 2 = 12 wie machbar
es geht darum das ich über die Serielle nur Byteweise Daten empfangen kann also nur 1 oder 2 aber halt nicht 12...
In der darauffolgenden CASE Anweisungen werden aber Eingaben bis 16 geprüft, und druch dieses Problem komme ich halt nicht über 9..
In der darauffolgenden CASE Anweisungen werden aber Eingaben bis 16 geprüft, und druch dieses Problem komme ich halt nicht über 9..
Re: Byte 1 + 2 = 12 wie machbar
hm, also wenn ich Dein beispiel Anwenden kommt bei a + b shl 8 = 513 raus?! also wenn a=1 b =2 es soll aber halt 12 rauskommen
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2840
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Byte 1 + 2 = 12 wie machbar
12 passt auch in ein Byte, wenn es um den Zahlenwert geht. Anscheinend sind aber bei dir die Werte der ASCII-Zeichen enthalten.
Code: Alles auswählen
var
Byte1, Byte2: Byte;
ResultString: String;
begin
ResultString := Chr(Byte1) + Chr(Byte2);
end;
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
Re: Byte 1 + 2 = 12 wie machbar
Nein, habe es gerade im Freespascal fenster ausprobiert nur mit variablen..
hmm
Die Lösung muss ganz nah sein
wenn 1 = 0000 0001 und 2 = 0000 0010
dann verschiebe ich was genau um wieviel mit shr bzw shl?
hmm
Die Lösung muss ganz nah sein

wenn 1 = 0000 0001 und 2 = 0000 0010
dann verschiebe ich was genau um wieviel mit shr bzw shl?
Zuletzt geändert von corado am Mi 7. Aug 2013, 18:48, insgesamt 2-mal geändert.
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2840
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Byte 1 + 2 = 12 wie machbar
Wie sieht denn dein Ausprobieren aus?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2840
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Byte 1 + 2 = 12 wie machbar
Es gibt nicht viele Möglichkeiten:
- Wenn tatsächlich die Daten als Zahlenwerte byteweise ankommen, dann bekommst du 12 mit einem Einlesen. Das Byte reicht von 0 bis 255.
- Wenn ASCII-Zeichen gesendet werden (also erst '1', dann '2'), dann hilft dir mein Vorschlag von oben.
- Für den (seltsamen) Fall dass Zahlenwerte kommen, aber immer nur 0 bis 9 (erst Zehner dann Einer-Stellen), hilft dir folgender Code:
Code: Alles auswählen
function Combine(Zehner, Einer: Byte): Byte; begin Result := Zehner * 10 + Einer; end;
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
Re: Byte 1 + 2 = 12 wie machbar
wie sieht es denn mit c:= (a + b) shl 2 ; aus?
das scheint zu funktionieren

Re: Byte 1 + 2 = 12 wie machbar
och nö, sehe das sit Quatsch, das geht auch nicht 

Re: Byte 1 + 2 = 12 wie machbar
merkwürdigerweise geth das auch nicht 
Result := Zehner * 10 + Einer;

Result := Zehner * 10 + Einer;
Re: Byte 1 + 2 = 12 wie machbar
outsch, hat sich erledigt, der Sender hat alle Befehle verstellt, nach neun lauteten alle anderen bis sechzen plötzlich auch neun ich bekomme ne Kriese
Danke dennoch
Danke dennoch
-
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 10:38
- OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
- Wohnort: Hessen
- Kontaktdaten:
Re: Byte 1 + 2 = 12 wie machbar
Das löst aber die eingangs gestellte Fragecorado hat geschrieben:merkwürdigerweise geth das auch nicht
Result := Zehner * 10 + Einer;
