Umwandlung Ascii in Byte.

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
haderlump
Beiträge: 185
Registriert: Fr 18. Jan 2013, 09:29
OS, Lazarus, FPC: Windows 10, Windows XP, Lazarus 1.6
CPU-Target: Celeron

Umwandlung Ascii in Byte.

Beitrag von haderlump »

Hallo zusammen
Ich habe ein Seriel-Programm-modul.
Wenn ich etwas senden will, will es als Parameter ein Byte haben.
War bisher kein Problem, da ich nur numerische Daten versandt habe.
Nun will ich aber Buchstaben(Ascii) versenden.
Wie wandle ich diese in Bytes um. Ist sicherlich sehr einfach, wenn man es weiss.
Ich habe bisher immer nur Umwandlunge von Bytes in Ascii gefunden.

mfG Fritz

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Umwandlung Ascii in Byte.

Beitrag von Socke »

MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Mathias
Beiträge: 6164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Umwandlung Ascii in Byte.

Beitrag von Mathias »

Wie schreibst du in die Schnittstelle, machst du dies mit Write ?

Oder hat dein Modul eine spezielle Funktion zum schreiben ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

haderlump
Beiträge: 185
Registriert: Fr 18. Jan 2013, 09:29
OS, Lazarus, FPC: Windows 10, Windows XP, Lazarus 1.6
CPU-Target: Celeron

Re: Umwandlung Ascii in Byte.

Beitrag von haderlump »

Die Ausgabe ist:

Code: Alles auswählen

SerialXmit(Schnittstellenname: PSchnittstelle,Data:Byte);

Egentlich recht einfach.
Wenn ich aber schreibe: SerialXmit(Schnittstellenname,'X'); bekomme ich vom Compile eine Fehlermeldung (Char expecting Byte) oder so ähnlich.

Wie mache ich also aus dem 'X' eine Zahl die dem Ascii-Wert entspricht ? Also quasi die Umkehrfunktion von Char().

Socke: Dein Link hat mir leider nicht weiter geholfen. Mein Englisch ist nicht besonders gut,

Gruß Fritz

NoCee
Beiträge: 170
Registriert: Do 3. Mär 2011, 21:34
OS, Lazarus, FPC: WinXp/7/10 Opensuse13.2/Leap15.3 (L 2.2.0 FPC 3.2.2 )
CPU-Target: Intel 32/64Bit, ARM9
Wohnort: Ulm

Re: Umwandlung Ascii in Byte.

Beitrag von NoCee »

Die Umkehrung von Char() ist Ord()
also SerialXmit(Schnittstellenname, ord('X'));

NoCee

haderlump
Beiträge: 185
Registriert: Fr 18. Jan 2013, 09:29
OS, Lazarus, FPC: Windows 10, Windows XP, Lazarus 1.6
CPU-Target: Celeron

Re: Umwandlung Ascii in Byte.

Beitrag von haderlump »

Danke für die Antwort
Ich nehm das mal so wie es ist, verstanden habe ich aber nix. Vor allem das in dem Link von socke nicht. Macht aber nichts. Hauptsache es geht.

Gruß Fritz

Mathias
Beiträge: 6164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Umwandlung Ascii in Byte.

Beitrag von Mathias »

Am einfachsten macht eine Typenumwandlung.
In meinem Beispiel sieht du noch wie man einen ganzen String ausgeben kann.

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
const
  s = 'Hello World';
var
  i: integer;
begin
  SerialXmit(Name, byte('X'));      // Ein Zeichen
  for i := 1 to Length(s) do begin
    SerialXmit(Name, byte(s[i]));   // Ein kompletter String
  end;
end;


Was verwendest du für eine Komponente für deine Schnittstelle, in welcher SerialXmit vorkommt ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten