Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   CPort Hex Zahlen senden (https://www.delphipraxis.net/165879-cport-hex-zahlen-senden.html)

sambadancer 19. Jan 2012 14:32

CPort Hex Zahlen senden
 
Hallo,

ich hab erst angefangen ein wenig mit der RS232 zu experimentieren. Habe viel gelesen und versucht auch umzusetzen. Aber eines gelingt mir im Moment nicht.
Ich habe einen Microcontroller C-Control Pro. Dieser wartet auf Zahlen die ich ihm über die RS232 schicke damit er sein Programm ausführen kann.
In dem Example das bei der Lib Cport dabei ist sieht dies folgendermaßen aus :
Code:
procedure TForm1.Button_SendClick(Sender: TObject);
var
  Str: String;
begin
  Str := Edit_Data.Text;
  if NewLine_CB.Checked then
    Str := Str + #13#10;
  ComPort.WriteStr(Str);
end;
z.B. Trage ich eine 1 zum senden ein wird eine 31 ausgegeben. Dies habe ich mit meinem Port Monitor verfolgt. Mit einem anderen Terminal Programm kommt aber eine 01 aus die ich auch verwenden könnte.

Jetzt meine Frage. Wie kann ich den oben genannten Code ändern das anstatt der 31 eine 01 übertragen wird!?

Greetz

Samba

CarlAshnikov 19. Jan 2012 14:49

AW: CPort Hex Zahlen senden
 
Hallo,

du musst unterscheiden zwischen 1 als Char (hat den Ascii Hex Code 31) oder einer 1 als Zahl.
Willst du also eine 1 eingeben im Edit und die auch als 1 übertragen, musst du sie erst umwandeln.
Hexzahlen wandelt man mit
Delphi-Quellcode:
StrToInt('$'+Data_edit.text)
in Zahlen um sollte kein Dollar davor stehen.
Danach kannst du den Wert an die entsprechende Stelle im String schreiben.

Gruß Carl

sambadancer 19. Jan 2012 15:20

AW: CPort Hex Zahlen senden
 
Hallo,

Vielen Dank für die schnelle Antwort. Aber irgendwie scheint das noch nicht zu gehen.
In deinem Befehl denke ich mal ist das Edit_Data.Text falsch geschrieben oder? Das hoffe ich mal das ich das erkannt habe.

Wann muss ich das denn einfügen? Anstelle von
Code:
Str := Edit_Data.Text;
?`

Ich habe das mal so versucht :

Code:
procedure TForm1.Button_SendClick(Sender: TObject);
var
  Str: String;
begin

  StrToInt(Edit_Data.Text); // oder auch mit StrToInt('$'+Edit_Data.Text);
  if NewLine_CB.Checked then
    Str := Str + #13#10;
  ComPort.WriteStr(Str);
end;
Jetzt kommt gar nix am Port Monitor. Was mache ich falsch?

DeddyH 19. Jan 2012 15:30

AW: CPort Hex Zahlen senden
 
Wie ist es so?
Delphi-Quellcode:
procedure TForm1.Button_SendClick(Sender: TObject);
var
  Str: String;
  i: integer;
begin
  Str := Edit_Data.Text;
  for i := 1 to Length(Str) do
    Str[i] := Chr(StrToInt(Str[i]));
  if NewLine_CB.Checked then
    Str := Str + sLineBreak;
  ComPort.WriteStr(Str);
end;

Wal 19. Jan 2012 15:31

AW: CPort Hex Zahlen senden
 
Ich mach das so um ein Atmel zu steuern:
Delphi-Quellcode:
var
Buffer      : PACKED ARRAY[0..9] OF UCHAR;

procedure TMainForm.SetElev(Elv: Byte);
begin
  Buffer[0]   := $66;
  Buffer[1]   := $30;
  Buffer[2]   := Elv;
  Buffer[3]   := $00;
  Buffer[4]   := $00;
  Buffer[5]   := $00;
  Buffer[6]   := $00;
  Buffer[7]   := $00;
  Buffer[8]   := $00;
  Buffer[9]   := $66;
  if Com then
    ComPort.Write(Buffer, SizeOf(Buffer));
end;
gruß
wal

Wal 19. Jan 2012 15:40

AW: CPort Hex Zahlen senden
 
In deinem Fall quasi ohne es getestet zu haben:

Delphi-Quellcode:
var
Buffer: Byte;

Buffer := $01;
ComPort.Write(Buffer, SizeOf(Buffer));

Wal 19. Jan 2012 15:46

AW: CPort Hex Zahlen senden
 
Ich nochmal:
31 ist der Hexcode von 1 als Char. siehe ASCII bei goooooggglle.

p80286 19. Jan 2012 17:45

AW: CPort Hex Zahlen senden
 
Das kommt darauf an was sich hinter ComPort.Writestr() verbirgt.
(Mein delphi kennt's nicht'
Bei einem shortstring kannst Du diesen problemlos als Buffer mißbrauchen.

Gruß
K-H

Coffeecoder 19. Jan 2012 18:58

AW: CPort Hex Zahlen senden
 
Hi sambadancer,

Hast du mal mit einer anderen ComPort-Komponente versucht?
Mit der von Dejan Crnila habe ich gute Erfahrungen gemacht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:24 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