Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi ComPort hex senden (https://www.delphipraxis.net/47243-comport-hex-senden.html)

Logh 8. Jun 2005 11:22


ComPort hex senden
 
Hallo,

bin wieder auf ein Problem gestoßen!

wollte mit der comport komponente hex Zahlen senden und empfangen.
dazu habe ich

Code:
comport.writestr('C1'); //C1 als hex Zahl gedacht - kann durch jede andere hex Zahl ersetzt werden.
geschriben.

Aber, die Anwendung -das Angeschlossene Gerät ist ohne belang- hat mir nur
mist zurück geschickt.
Frage ist jetzt, ob mit dem obigen code hex Zahlen senden kann?

bitte um Antwort.

Logh

Kedariodakon 8. Jun 2005 11:29

Re: ComPort hex senden
 
Welche Comport Komponente?

Für sowas kann ich TurboPower - Async Professional empfehlen...

Bye

Olli 8. Jun 2005 11:30

Re: ComPort hex senden
 
Schon
Delphi-Quellcode:
comport.writestr(chr($C1));
probiert?

Logh 8. Jun 2005 12:23

Re: ComPort hex senden
 
mit chr kann doch nur die 7 bit ascci version benutzen oder?

ich versuchs mal

danke

runger 8. Jun 2005 12:24

Re: ComPort hex senden
 
Hallo,

du musst dich entscheiden was du willst. Willst du Hex Zahle als ASCI runterschicken, dann ist dein Ansatz richtig, ansonsten der des letzten Beitrags.
Nimm Asynchpro (sourceforge).
Damit hast du keine Problem. Hast du Baudrate Parity.... überprüft und richtig eingestellt?

Rainer

runger 8. Jun 2005 12:25

Re: ComPort hex senden
 
Hallo logh,

nein, woher hast du den Quatsch, wenn deine serielle Schnittstelle auf 8 Bit steht geht das.
Dann werden auch 8 Bit übertragen, das hat absolut nichts mit chr() zu tun.

Rainer

Sharky 8. Jun 2005 12:31

Re: ComPort hex senden
 
Hai Logh,

ersteinmal muss man sich über eine Begriffsdefinition klar sein ;-)

Es gibt keine HEXzahlen. Genausowenig wie Binär / Oktal oder sonst etwas.

HEX ist eine schreibweise für die natürlichen Zahlen.

Jetzt kommt es darauf an was dein serielles Gerät von dir möchte?
Es gibt welche die möchten ihre Befehle als HEX-Zeichenfolge bekommen.

z.B.
Einschalten -> C4 (Es musst also das Zeichen C und das Zeichen 4 gesendet werden.

Dann gibt es wieder welche die möchten einfach nur ein Byte als Befehl haben.
Einschalten -> C4 (Es muss ein Byte mit dem Wert 196 gesendet werden.

Olli 8. Jun 2005 14:55

Re: ComPort hex senden
 
Zitat:

Zitat von Logh
mit chr kann doch nur die 7 bit ascci version benutzen oder?

ASCII ist immer 7bit ;) ... 8bit ist EASCII (wird aber oft noch einfach als ASCII bezeichnet).

Ansonsten kannst du zumindest mit Delphi ab Version 2 davon ausgehen, daß ein Zeichen immer 8Bit ist. Also wird $C1 korrekt übersetzt.

Logh 8. Jun 2005 15:56

Re: ComPort hex senden
 
die frage bleibt offen, denn wie übertrage ich mit comport ein byte?
und wie emppfange ich in hex?

Olli 8. Jun 2005 18:06

Re: ComPort hex senden
 
Es gibt kein "in Hex" Stephan (Sharky) hat doch wunderbar erklärt was hexadezimal bedeutet. Du mußt dir nun also klarwerden, was du schicken willst. Wenn das, was du oben schicken wolltest, ein Byte sein soll, dann mach die Umwandlung wie ich oben geschrieben habe. Ansonsten denk nochmal nach was genau du willst und wie du uns das beibringen willst. Aktuell basieren die Tips nämlich auf Rätselraten :zwinker:

Logh 8. Jun 2005 22:09

Re: ComPort hex senden
 
Gut ich möcht ein Byte schicken, z.B. C1 oder E1,...
und empfnsgen möchte ich auch nur byteweise.

Olli 8. Jun 2005 22:14

Re: ComPort hex senden
 
Zitat:

Zitat von Logh
Gut ich möcht ein Byte schicken, z.B. C1 oder E1,...
und empfnsgen möchte ich auch nur byteweise.

Gut, dann mußt du, wenn du nur diese Routine zum Schreiben eines String hast, deinen String aus einzelnen Zeichen (deinen Hexwerten) zusammensetzen.
Dabei mußt du beachten, daß du vom Wert ($C1, $E1 ...) in ein Zeichen konvertierst. Das geht so:

chr($C1)

Mehrere Zeichen in Kette ergeben sprichwörtlich einen String. Diesen kannst du dann schicken.

Du schickst also chr($C1) und liest dann einen String aus. Und so weiter und so weiter ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz