![]() |
Re: Relaiskarte K8056 von Velleman seriell ansteuern
Hier leute! Warum denn so umständlich?
Das Beispielprogramm, welches beim K8056 dabei ist, verwendet das Actix-X Element MicrosoftComm, welches man auch nach Delphi inportieren kann. Dann kann man es genau so verwenden, wie in VB auch. Hab ich auch so gemacht! |
Re: Relaiskarte K8056 von Velleman seriell ansteuern
Hallo Cyberbob,
jetzt weiß ich gar nicht mehr weiter. Bin Anfänger, bitte, was meinst Du jetzt :gruebel: . Ich möchte ja keinen fertigen Code haben, aber ein paar Tips oder Hinweise wären schon nicht schlecht. Grüsse von der Mosel HaGü P.S. Lasse mich auch gerne mit der Nase draufstossen. |
Re: Relaiskarte K8056 von Velleman seriell ansteuern
Ganz einfach... ?
Ich hab mir die Karte auch vor einiger Zeit gekauft. Habe mir auch das Beispielsteuerprogramm heruntergeladen, den Quellcode analysiert und festgestllt, das die Daten mit dem ActiveX Object MicrosoftComm übertragen werden. Dieses kann man auch in Delphi Installieren. Komponente/ActiveX importieren/Microsoft Comm Control 6.0 (Version 1.1) und dann auf Installieren Klicken. Einfach installieren und du kannst es verwenden wie in VB. Natürlich mit den Delphi-konformen Befehlen ( aus CHR$(13) wird also Chr(13) oder auch #13 ) Schau mal ob ich von meinem Programm den Quelltext finde... |
Re: Relaiskarte K8056 von Velleman seriell ansteuern
Habe mir gerade Die mscomm32.ocx gesaugt und installiert.
Die Version 6.00.8169 ist aber von 1998, gibt es vielleicht eine neuere? Werde Morgen wieder reinschauen. Gepannt wie ein Flitzebogen HaGü |
Re: Relaiskarte K8056 von Velleman seriell ansteuern
Ich hab die auch. Beim alten Notebook hats noch funktioniert. Hab jetzt allerdings ein neues ohne Serielle Schnittstelle, sodass ichs nicht mehr Testen kann.
|
Re: Relaiskarte K8056 von Velleman seriell ansteuern
Hai HaGü,
bei meinem Code war wohl die Berechnung des zweierkomplements falsch :oops: Aber Klaus01 hat ja den richtigen Code geschreiben:
Delphi-Quellcode:
Wenn ich Probleme mit der seriellensteuerung von Geräten hatte habe ich immer versucht zu ermitteln was denn das "Herstellerprogramm" sendet. Dafür einfach zwei Serielleschnittstellen mit einem Null-Modem kabel verbinden. Auf Com1 sendet das Programm und auf Com2 werden mit Hyperterminal oder einem eingenen Delphiprogramm die Daten empfangen. Dann kann man einmal genau vergleichen was das Originalprogramm sendet und was dein Programm sendet.
function Zweierkomplement(aValue: Integer): Integer;
begin result := (aValue xor $FF) + 1; end; Zum Empfang ist es gut ein Programm zu haben welches mit den Zahlenwert der empfangenen Byte anzeigt. Dadurch hat man keine Probleme wenn der ASCII-Wert ein Steuerzeichen oder nicht darstellbares zeichen ist. |
Re: Relaiskarte K8056 von Velleman seriell ansteuern
Hallo Leute,
in C++ haben wir es rausbekommen. Die Checksumme haben wir so berechnet: Zitat:
Einfach bei Zitat:
Zitat:
Auch ist es wichtig die Com-Schnittstelle richtig zu öffnen. Wenn man DTR und RTS abschaltet, funktioniert es direkt, da man ja nur eine 2-Draht Verbindung hat, bringt es nichts wenn die Schnittstelle auf ein Steuersignal über RTS bzw. DTR wartet. Zitat:
Zitat:
Werde mal bischen rumdoktern. Vielleicht hat ja von Euch einer eine Idee. Bis dann HaGü |
Re: Relaiskarte K8056 von Velleman seriell ansteuern
Zitat:
|
Re: Relaiskarte K8056 von Velleman seriell ansteuern
Hallo HaGü,
Zitat:
![]() Das Delphi Pendant dazu wäre shortInt. unsigned char entspricht dem Byte. [edit] schön, daß Du schon weitergekommen bist [/edit][i] Grüße Klaus |
Re: Relaiskarte K8056 von Velleman seriell ansteuern
Hallo Leute,
ich bin soweit. Kann die Karte jetzt ansteuern, die einzelnen relais ein-/anschalten sowie alle an und alle aus. Was ich noch nicht hinbekommen habe, ist die Deklaration der Variablen. Darum habe ich halt die CheckSumme per Hand ausgerechnet, war eh nicht schwer, da sich der Wert nur um eins Verschiebt. Habe also für jedes Relais eine RadioGroup erstellt.
Delphi-Quellcode:
für Relais 2 und
procedure TForm1.RadioGroup2Click(Sender: TObject);
var BefehlRG21, BefehlRG22: Char; CheckSummeRG21, CheckSummeRG22: String; begin Start := Char(13); KartenAdresse := Char(1); BefehlRG21 := 'S'; BefehlRG22 := 'C'; RelaisNr := '2'; CheckSummeRG21:= Char(109); ChecksummeRG22:= Char(125); if RadioGroup2.Items[RadioGroup2.ItemIndex]= 'an' then S:= Start + KartenAdresse + BefehlRG21 + RelaisNr + CheckSummeRG21; if RadioGroup2.Items[RadioGroup2.ItemIndex]= 'aus' then S:= Start + KartenAdresse + BefehlRG22 + RelaisNr + CheckSummeRG22; C:= C+C; SerialPortNG1.SendString(S); Edit1.Text:= S;
Delphi-Quellcode:
für Relais 1.
procedure TForm1.RadioGroup1Click(Sender: TObject);
var BefehlRG11, BefehlRG12: Char; CheckSummeRG11, CheckSummeRG12: String; begin Start := Char(13); KartenAdresse := Char(1); BefehlRG11 := 'S'; BefehlRG12 := 'C'; RelaisNr := '1'; CheckSummeRG11:= Char(110); ChecksummeRG12:= Char(126); if RadioGroup1.Items[RadioGroup1.ItemIndex]= 'an' then S:= Start + KartenAdresse + BefehlRG11 + RelaisNr + CheckSummeRG11; if RadioGroup1.Items[RadioGroup1.ItemIndex]= 'aus' then S:= Start + KartenAdresse + BefehlRG12 + RelaisNr + CheckSummeRG12; C:= C+C; SerialPortNG1.SendString(S); Edit1.Text:= S; end; Wer möcht kann gerne den kompletten Code haben. Er muß mir nur zeigen, wie ich ihn hier verlinken kann. Ich Danke schon mal Allen die mir geholfen haben und noch helfen werden. :cheers: und werde fleisig weiter :coder: . Mit Grüssen von der Mosel HaGü |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:09 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