Re: Relaiskarte K8056 von Velleman seriell ansteuern
Zitat:
Zitat:
Zitat:
|
Re: Relaiskarte K8056 von Velleman seriell ansteuern
Zitat:
Grüße Klaus |
Re: Relaiskarte K8056 von Velleman seriell ansteuern
ich hab mit das von Beitrag #14 mal angeguckt und rumprobiert. Ich bekomme das einfach nicht anlaufen und werde mit Fehlermeldungen überschüttet.
|
Re: Relaiskarte K8056 von Velleman seriell ansteuern
Zitat:
Grüße Klaus |
Re: Relaiskarte K8056 von Velleman seriell ansteuern
Hier ist mein Ansatz aus einer Prozedur. Ich hab immer diesen Fehler:
Zitat:
Delphi-Quellcode:
procedure TMainForm.SetRelay(Card, Relay: Char);
var CMD: Char; ST: CHAR; S: String; begin CMD := 'S'; ST := Char(13); CHECK := ((ST + Card + CMD + RELAY) XOR $FF) + 1; // <== Und das ist die Zeile wo der Fehler auftritt S := ST + CARD + CMD + RELAY + CHECK; RS.Send(S); end; |
Re: Relaiskarte K8056 von Velleman seriell ansteuern
Ja Ja ich weiss der Thread is schon verdammt alt aber ich habe eine simple Funktion gebastelt um das Problem mit der Checksumme zu lösen.
Delphi-Quellcode:
Kleines Beispiel:
function GetChecksum(Card, Relay: integer; CMD: string): integer;
var i: Extended; ASC_C: integer; ASC_R: integer; A: Extended; B: Extended; _i: integer; begin CMD := UpperCase(CMD[1]); case CMD[1] of 'E': ASC_C := 69; 'D': ASC_C := 68; 'S': ASC_C := 83; 'C': ASC_C := 67; 'T': ASC_C := 84; 'A': ASC_C := 65; 'F': ASC_C := 70; 'B': ASC_C := 66; end; if (CMD[1] <> 'A') and (CMD[1] <> 'B') then ASC_R := Relay + 48 else ASC_R := Relay; _i := 13 + Card + ASC_C + ASC_R; A := _i / 256; B := Int(A); i := (255 - 256*(A-B)) + 1; Result := Round(i); end; Relais 2 auf Karte 1 setzten
Delphi-Quellcode:
Bei den Befehl A (Karte neue Adresse zuweisen) müsst ihr bei dem Relay Parameter die neue Kartenaddresse eingeben
var
Checksum: Char; begin Checksum := Char(GetChecksum(2, 1, 'S')) ... Bei den Befehl B (Alle Relais der Karte ansteuern) müsst ihr bei dem Relay Parameter die Nummer eingeben wo drin steht welche Relais gesetzt und welche ausgeschaltet werden sollen (1..255) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 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