Byte 1 + 2 = 12 wie machbar

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
corado
Beiträge: 48
Registriert: Mi 7. Aug 2013, 17:00

Byte 1 + 2 = 12 wie machbar

Beitrag von corado »

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?

wp_xyz
Beiträge: 5223
Registriert: Fr 8. Apr 2011, 09:01

Re: Byte 1 + 2 = 12 wie machbar

Beitrag von wp_xyz »

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:

Code: Alles auswählen

 
function CombineBytes(Byte1, Byte2: byte): word;
begin
  Result := Byte1 + Byte2 shl 8;
end;
 

corado
Beiträge: 48
Registriert: Mi 7. Aug 2013, 17:00

Re: Byte 1 + 2 = 12 wie machbar

Beitrag von corado »

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..

corado
Beiträge: 48
Registriert: Mi 7. Aug 2013, 17:00

Re: Byte 1 + 2 = 12 wie machbar

Beitrag von corado »

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

Benutzeravatar
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

Beitrag von m.fuchs »

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

corado
Beiträge: 48
Registriert: Mi 7. Aug 2013, 17:00

Re: Byte 1 + 2 = 12 wie machbar

Beitrag von corado »

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?
Zuletzt geändert von corado am Mi 7. Aug 2013, 18:48, insgesamt 2-mal geändert.

Benutzeravatar
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

Beitrag von m.fuchs »

Wie sieht denn dein Ausprobieren aus?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Benutzeravatar
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

Beitrag von m.fuchs »

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

corado
Beiträge: 48
Registriert: Mi 7. Aug 2013, 17:00

Re: Byte 1 + 2 = 12 wie machbar

Beitrag von corado »

wie sieht es denn mit c:= (a + b) shl 2 ; aus? :-) das scheint zu funktionieren

corado
Beiträge: 48
Registriert: Mi 7. Aug 2013, 17:00

Re: Byte 1 + 2 = 12 wie machbar

Beitrag von corado »

och nö, sehe das sit Quatsch, das geht auch nicht :-(

corado
Beiträge: 48
Registriert: Mi 7. Aug 2013, 17:00

Re: Byte 1 + 2 = 12 wie machbar

Beitrag von corado »

merkwürdigerweise geth das auch nicht :-(
Result := Zehner * 10 + Einer;

corado
Beiträge: 48
Registriert: Mi 7. Aug 2013, 17:00

Re: Byte 1 + 2 = 12 wie machbar

Beitrag von corado »

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

Euklid
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

Beitrag von Euklid »

corado hat geschrieben:merkwürdigerweise geth das auch nicht :-(
Result := Zehner * 10 + Einer;
Das löst aber die eingangs gestellte Frage ;)

Antworten