![]() |
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:
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.
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; Jetzt meine Frage. Wie kann ich den oben genannten Code ändern das anstatt der 31 eine 01 übertragen wird!? Greetz Samba |
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:
in Zahlen um sollte kein Dollar davor stehen.
StrToInt('$'+Data_edit.text)
Danach kannst du den Wert an die entsprechende Stelle im String schreiben. Gruß Carl |
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:
Jetzt kommt gar nix am Port Monitor. Was mache ich falsch?
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; |
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; |
AW: CPort Hex Zahlen senden
Ich mach das so um ein Atmel zu steuern:
Delphi-Quellcode:
gruß
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; wal |
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)); |
AW: CPort Hex Zahlen senden
Ich nochmal:
31 ist der Hexcode von 1 als Char. siehe ASCII bei goooooggglle. |
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 |
AW: CPort Hex Zahlen senden
Hi sambadancer,
Hast du mal mit einer anderen ComPort-Komponente versucht? Mit der von ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:38 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-2025 by Thomas Breitkreuz