AGB  ·  Datenschutz  ·  Impressum  







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

CPort Hex Zahlen senden

Ein Thema von sambadancer · begonnen am 19. Jan 2012 · letzter Beitrag vom 19. Jan 2012
Antwort Antwort
sambadancer

Registriert seit: 18. Jan 2012
11 Beiträge
 
Delphi 7 Enterprise
 
#1

CPort Hex Zahlen senden

  Alt 19. Jan 2012, 15:32
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
  Mit Zitat antworten Zitat
CarlAshnikov

Registriert seit: 18. Feb 2011
Ort: Erfurt
108 Beiträge
 
Delphi XE5 Enterprise
 
#2

AW: CPort Hex Zahlen senden

  Alt 19. Jan 2012, 15:49
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 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
Sebastian
  Mit Zitat antworten Zitat
sambadancer

Registriert seit: 18. Jan 2012
11 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: CPort Hex Zahlen senden

  Alt 19. Jan 2012, 16:20
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?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#4

AW: CPort Hex Zahlen senden

  Alt 19. Jan 2012, 16:30
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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Wal

Registriert seit: 22. Sep 2006
57 Beiträge
 
#5

AW: CPort Hex Zahlen senden

  Alt 19. Jan 2012, 16:31
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
Gruß Wal

Es gibt viel zu tun, sitzen wir's aus ! 0(°~°)0
  Mit Zitat antworten Zitat
Wal

Registriert seit: 22. Sep 2006
57 Beiträge
 
#6

AW: CPort Hex Zahlen senden

  Alt 19. Jan 2012, 16:40
In deinem Fall quasi ohne es getestet zu haben:

Delphi-Quellcode:
var
Buffer: Byte;

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

Es gibt viel zu tun, sitzen wir's aus ! 0(°~°)0
  Mit Zitat antworten Zitat
Wal

Registriert seit: 22. Sep 2006
57 Beiträge
 
#7

AW: CPort Hex Zahlen senden

  Alt 19. Jan 2012, 16:46
Ich nochmal:
31 ist der Hexcode von 1 als Char. siehe ASCII bei goooooggglle.
Gruß Wal

Es gibt viel zu tun, sitzen wir's aus ! 0(°~°)0
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

AW: CPort Hex Zahlen senden

  Alt 19. Jan 2012, 18:45
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Coffeecoder
Coffeecoder

Registriert seit: 27. Apr 2011
242 Beiträge
 
Delphi 6 Enterprise
 
#9

AW: CPort Hex Zahlen senden

  Alt 19. Jan 2012, 19:58
Hi sambadancer,

Hast du mal mit einer anderen ComPort-Komponente versucht?
Mit der von Dejan Crnila habe ich gute Erfahrungen gemacht.
Coffeecoder
  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 13:07 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