Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Über RS232 Port Hex senden und empfangen??? (https://www.delphipraxis.net/71290-ueber-rs232-port-hex-senden-und-empfangen.html)

EDatabaseError 12. Jun 2006 17:38


Über RS232 Port Hex senden und empfangen???
 
Kleine Frage wie kann ich über den Comport Hex senden und empfangen??? Hab die Async32 Kps.


Mfg
Tobi

DaFox 12. Jun 2006 17:45

Re: Über RS232 Port Hex senden und empfangen???
 
Hi Tobi,

lange nicht mehr mit AsyncPro gearbeitet, deshalb nur in Theorie:
Du empfängst/sendest 8-Bit Daten über RS232 was also dem Datentyp char/byte entspricht. Diese Bytes kannst du nun in/aus Deinem Schreib-/Lese-Puffer schreiben/lesen und per IntToHex() bzw. StrToInt() in hexadezimaler Form darstellen.

Viele Grüße,
Markus

EDatabaseError 12. Jun 2006 17:50

Re: Über RS232 Port Hex senden und empfangen???
 
ja... ich will sie aber nicht als Hex darstellen ich bekomm sie als hex und zwar von einem Motor der NUR Hex kann... Ich muss das zeug in Hex senden da es so sachen wie 1B sind und das ist nicht wirklich ein String.

Sharky 13. Jun 2006 05:24

Re: Über RS232 Port Hex senden und empfangen???
 
Zitat:

Zitat von EDatabaseError
Kleine Frage wie kann ich über den Comport Hex senden und empfangen??? ...

Hai Tobi,

über die RS232 wird ein Byte gesendet. Also ein Zahl.
Dabei ist es völlig egal in welcher Schreibweise diese Zahl im Programm steht.
Delphi-Quellcode:
function BinToInt(Binary: string): Integer;
var
  i: Integer;
begin
  Result := 0;
  for i := Length(Binary) downto 1 do
  begin
    Inc(Result, StrToInt(Binary[i]) * 1 shl (Length(Binary) - i));
  end;
end;

procedure TDemoForm.btn_sendcommandClick(Sender: TObject);
var
  command1: Byte;
  command2: Byte;
  command3: Byte;
begin
  command1 := $1B;
  command1 := 27;
  command3 := BinToInt('11011');
end;
Hier ist es egal welches der drei commands Du sendest; es ist immer das selbe.

EDatabaseError 15. Jun 2006 11:48

Re: Über RS232 Port Hex senden und empfangen???
 
Ich hab mal folgendes geschrieben:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
   i:Integer;
   sti:String;
begin
 i := 27;
 sti := Chr(i);
 i := 0;
 sti := sti + Chr(i);
 i := 1;
 sti := sti + Chr(i);
 i := 28;
 sti := sti + Chr(i);
 showmessage(sti);
 Comm1.Write(sti[1], Length(Sti));
end;
und zum empfangen:
Delphi-Quellcode:
procedure TForm1.Comm1RxChar(Sender: TObject; Count: Integer);
var
   buffer: array[0..1024] of Char;
   i1, current: Integer;
   s, sti: String;
begin
 Fillchar(Buffer, SizeOf(buffer), 0);
 Comm1.Read(Buffer, Count);

 showmessage(buffer[0]);
 if Ord(buffer[0]) = 6 then
  begin
   showmessage('ACK');
  end;
 if Ord(buffer[0]) = 21 then
  begin
   showmessage('NAK');
  end;
 if Ord(buffer[0]) = 22 then
  begin
   showmessage('TOUT');
  end;
end;
leider keine Reaktion. Kann leider nicht überprüfen ob das an mir oder dem Gerät liegt ;-)
Kann jemand sich das do oben mal durchschaun???


mfg
tobi


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