![]() |
Ü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 |
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 |
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.
|
Re: Über RS232 Port Hex senden und empfangen???
Zitat:
ü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:
Hier ist es egal welches der drei commands Du sendest; es ist immer das selbe.
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; |
Re: Über RS232 Port Hex senden und empfangen???
Ich hab mal folgendes geschrieben:
Delphi-Quellcode:
und zum empfangen:
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;
Delphi-Quellcode:
leider keine Reaktion. Kann leider nicht überprüfen ob das an mir oder dem Gerät liegt ;-)
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; Kann jemand sich das do oben mal durchschaun??? mfg tobi |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:26 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