![]() |
Re: Comport und LED Lauflicht
Hier nochmal:
Delphi-Quellcode:
Wal
Const
LedHeader = '$CST-ES'; Address = ?; '? = Integerwert Version = ?; '? = Integerwert SignW = ?; '? = Integerwert SignH = ?; '? = Integerwert SignC = ?; '? = Integerwert Reserved := '00000'; function SchnuerePaket(Sendestring: String): String; var Laenge: Integer; Highnibbel, Lownibbel: Byte; HighAddress, LowAddress: Byte; HighSignW, LowSignW: Byte; Checksumme: Integer; Check : String; iIndex := Integer; begin Sendestring := chr($1) + chr($1) + chr($1) + chr($EF) + chr($A0) + chr($EF) + chr($B0) + Sendestring + chr($FF) + chr($FF); Laenge := 2 + 1 + 2 + 1 + 1 + 5 + Length(Sendestring); Highnibbel:= Laenge div 256; Lownibbel:= Laenge mod 256; HighAddress:= Address div 256; LownAddress:= Address mod 256; HighSignW:= SignW div 256; LownSignW:= SignW mod 256; Check := Chr(HighAddress) + Chr(LowAddress) + Chr(Version) + Chr(HighSignW) + Chr(LowSignW) + Chr(SignH) + Chr(SignC) + Reserved + Sendestring; for iIndex := 1 to Length(Check) do begin Checksumme := Ord(MidStr(Check, iIndex ,1)); if Checksumme >= 256 then Checksumme := Checksumme - 256; end; result := LedHeader + Chr(Highnibbel) + Chr(Lownibbel) + Check + Chr(Checksumme); end; procedure Senden; begin ApdComPort1.PutString(SchnuerePacket('Hallo')); end; |
Re: Comport und LED Lauflicht
Hallo Wal
bekomme bei
Delphi-Quellcode:
die fehlermeldung: [DCC Fehler] Unit2.pas(63): E2008 Inkompatible Typen
Checksumme := Ord(MidStr(Check, iIndex ,1));
LG Pumba |
Re: Comport und LED Lauflicht
Moin,
MidStr() würde ich nur dann verwenden, wenn ich mehr als ein einzelnes Zeichen abgreifen möchte. Bei einem einzelnen Zeichen kann ich den String wie ein Character Array benutzen. Muss die CheckSumme nicht vorher initialisiert werden?
Delphi-Quellcode:
Freundliche Grüße
begin
// ... CheckSumme := 0; for iIndex := 1 to Length(Check) do Checksumme := (CheckSumme + Ord(Check[iIndex])) mod 256; |
Re: Comport und LED Lauflicht
Zitat:
wie gesagt habe es aus dem Kopf mal schnell gepostet. Es ging mir aber auch nicht darum eine fertige Lösung bereitzustellen, sondern dir einen Ansatz zu geben wie es funktionieren könnte. Die Zeile oben soll nur ein Char in den ASCII-Wert wandeln, das ein String mit einem Buchstaben jetzt kein Char ist, habe ich in der Eile nicht bedacht. Evtl. stimmt die Zeile von Marabu ? Gehe den Code Zeile für Zeile durch und finde heraus was er bezwegt, das hat hoffentlich ein Lerneffekt. Als Hilfe das Protokoll zur Hand nehmen. Die Zeilen sind auch so geproggt, damit es offensichtlich ist was sie bewirken. Das Ganze geht viel einfacher zu machen. Wal P.S. Progge auch erst seit kurzem mit Delphi, also bitte Fehler ignorieren. :-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:11 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