AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

"Komische" HEX-Codes

Ein Thema von Tumm · begonnen am 15. Jun 2008 · letzter Beitrag vom 15. Jun 2008
Antwort Antwort
Tumm

Registriert seit: 17. Jun 2006
Ort: Celle
171 Beiträge
 
Turbo Delphi für Win32
 
#1

"Komische" HEX-Codes

  Alt 15. Jun 2008, 13:58
Hi

Ich glaub ich stell mich einfach mal wieder zu dumm an. Die Forensuche hab ich schon bemüht, leider ohne richtiges Ergebnis.

Ich nutze die SynaSer Bibilothek um eine serielle Verbindung zu einem Gerät (Grafiktaschenrechner) aufzubauen.

Der Taschenrechner möchte als erstes gerne den HEX-Code 16 senden (so steht es zumindest auf einer Dokumentationsseite und so ist es glaube ich auch (siehe weiter unten)).

Zum Testen frage ich erstmal laufend den COM-Port auf neue Eingaben ab. Wenn ich auf dem Taschenrechner dann die Kommunikation starte, kommt in meinem Log am PC nur so ein Zeichen: "" Mann kann es anscheinend auch nicht richtig einfügen

Ich hab mir gedacht "Schön, dass is ein HEX-Code also auch eine Zahl" und erstmal das ganze versucht in einen Integer umzuwandeln. Geht nicht (Ungültiger Integerwert).

Daraufhin hab ich bei Google nach diesem Zeichen gesucht, weil ich sonst auf keine andere Weise dahintergekommen bin, was dieses Zeichen nun wirklich ist.
Als Suchquery hat Google dann angezeigt: %16, die Zahl ist also irgendwie in diesem Zeichen.

Das Problem ist nur, dass ich nicht weiß, wie ich das komische Zeichen in meinem Delphiprogramm zu der 16 bekomme bzw. eine andere Dezimalzahl in so ein komisches Zeichen umwandeln kann, was der Taschenrechner versteht.
Code Gear = Kot Gier
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

Re: "Komische" HEX-Codes

  Alt 15. Jun 2008, 14:05
Was du da hast ist vermutlich das Zeichen #22. Die 16 ist in Dezimalschreibweise eine 22. Mit Ord() kannst du das Char in eine Zahl umwandeln.
  Mit Zitat antworten Zitat
Tumm

Registriert seit: 17. Jun 2006
Ort: Celle
171 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: "Komische" HEX-Codes

  Alt 15. Jun 2008, 14:10
Thx

Es funktioniert:

Delphi-Quellcode:
var
s:String;
P:Char;
begin
 try
  s := ser.RecvPacket(50); //Fragt den COM-Port ab
 except
  s := '';
 end;
  if length(s) > 0 then begin
    Memo1.Lines.Add(s); //Schreibe "das Zeichen" ins Log
    p := s[1]; //Speichert das erste Zeichen in P
    Memo1.Lines.Add(IntToStr(ord(p))); //Schreibe den Zeichencode ins Log
end;
Code Gear = Kot Gier
  Mit Zitat antworten Zitat
Cyf

Registriert seit: 30. Mai 2008
407 Beiträge
 
Lazarus
 
#4

Re: "Komische" HEX-Codes

  Alt 15. Jun 2008, 18:21
Zitat von Tumm:
Thx

Es funktioniert:

Delphi-Quellcode:
var
s:String;
P:Char;
begin
 try
  s := ser.RecvPacket(50); //Fragt den COM-Port ab
 except
  s := '';
 end;
  if length(s) > 0 then begin
    Memo1.Lines.Add(s); //Schreibe "das Zeichen" ins Log
    p := s[1]; //Speichert das erste Zeichen in P
    Memo1.Lines.Add(IntToStr(ord(p))); //Schreibe den Zeichencode ins Log
end;
Es sollte doch auch ein einfacher Cast nach Integer mit Integer(p) möglich sein, oder?
(Bewegt nicht die Welt, aber man spart einen Funktionsaufruf.)
Warum überprüfst du nochmal, ob die Länge größer als 0 ist, statt das direkt im try-Block auszuführen?
Try-Blöcke sollten kurz gehalten werden, aber das macht imho wenig Sinn.
Weiterhin stimmt was mit deinen end; nicht.
Nur als Anregung gemeint.
In eigener Sache, es wäre wikrlich sehr schön, wenn du kurz sagen könntest, was du für ein Objekt um auf die seielle Schnittstelle zuzugreifen, habe das vor einiger Zeit mal gesucht und nicht gefunden und auch die OH ist nicht seh auskunftsfreudig.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: "Komische" HEX-Codes

  Alt 15. Jun 2008, 18:31
Wieso sollte das einen Funktionsaufruf sparen?
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Cyf

Registriert seit: 30. Mai 2008
407 Beiträge
 
Lazarus
 
#6

Re: "Komische" HEX-Codes

  Alt 15. Jun 2008, 18:41
Weil ord() wahrscheinlich auch nichts anderes macht, als as ganze in einen neuen Stack-Frame zu kopieren, dann zu casten und dann als Rückgabewert zurück zu liefern, während der Cast, denke ich, nur die Fehlermeldung deaktiviert, da ja eigentlich an den Daten nichts verändert wird, außer das du garantierst, dass du weißt was du tust. Sollte ich mich hier irren, so Asche über meein Haupt. Ich neige sowieso dazu, mir das ganze direkt so vorzustellen, da ich das damals in C gelernt hab und das sich ohnehin nicht darum schert, ob du mit einem Char eine kleine Zahl (8 Bit (unsigned) bzw. 7 Bit + Vorzeichen (signed)) meinst. Bei der Gelgenheit, könnte man hier das ganze auch gleich als Byte deklarieren, falls man das Zeichen nicht mehr bräuchte und es hier nur zu Testzwecken verwendet wird.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: "Komische" HEX-Codes

  Alt 15. Jun 2008, 18:45
Ord wird mit Compilermagic umgesetzt zu einem Cast in den kleinstmöglichen ordinalen Typen.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz