Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   VBasic > Delphi ich verstehe das was nicht (https://www.delphipraxis.net/73197-vbasic-delphi-ich-verstehe-das-nicht.html)

robinWie 13. Jul 2006 14:59


VBasic > Delphi ich verstehe das was nicht
 
Hallo,
ich habe mir die Relaiskarte K8056 von Velleman gekauft und möchte eine eigene Anwendung dafür in Delphi entwickeln. In der Anleistung steht, dass die Befehlsfolge so ausehen muss:
Zitat:

1. CHR$(13)
2. Karntenaddresse(1...255)
3. Befehl
4. Addresse(1 ... 255) oder Relaisnummer ('1'..'9' ASCII)
5. 'checksum' Summe prüfen (2-Komplement der Summer der 4 vorigen Bytes +1);
Hier mal die Wichtigsten Befehle

Zitat:

[...]
'S': Relias einstellen. 'S'-Befehl soll durch Relais # '1' bis '8' gefolgt werden. [...]
'C': Relias löshcen. 'C'-Befehl soll durch Relais # '1' bis '8' gefolt werden. [...]
Das mit der Checksumme verstehe ich nicht. In Visual Basic sieht das so aus:
Code:
checksum = (255 - ((((13 + address + Asc("S") + Asc("4")) / 256) - Int((13 + address + Asc("S") + Asc("4")) / 256)) * 256)) + 1
Niergendwo ist definiert was checksum eigentlich für ein Typ sein soll, das macht es für mich ja noch schwerer. Ihr könnt euch das Programm hier runterladen, wenn euch das hilft. der Code ist in der Datei "K8056.frm".
Der Com-Port muss so konfiguriert werden:
Baud: 2400
Paritätt: Keine
Databits: 8
Stopbits: 1

Weiss jemand wie man das in Delphi umsetzt?

Danke im Voraus

generic 13. Jul 2006 15:03

Re: VBasic > Delphi ich verstehe das was nicht
 
ja

Delphi-Quellcode:
var
  checksum: byte; // vieleicht integer

begin
  checksum := (255 - ((((13 + address + ORD("S") + ORD("4")) / 256) - ((13 + address + ORD("S") + ORD("4")) DIV 256)) * 256)) + 1
ich habs zwar nicht im compiler ausprobiert - sollte ab so laufen.

robinWie 13. Jul 2006 15:15

Re: VBasic > Delphi ich verstehe das was nicht
 
ich habe es ausprobiert aber bekomme immer die Meldung:
[Fehler] Unit2.pas(41): E2010 Inkompatible Typen: 'Byte' und 'Extended'
bzw.
[Fehler] Unit2.pas(41): E2010 Inkompatible Typen: 'Integer' und 'Extended'
Dann habe ich checksum als Extended definiert aber dann bekomme ich den nicht mehr in den String reinkopiert :x

Luckie 13. Jul 2006 15:17

Re: VBasic > Delphi ich verstehe das was nicht
 
Ersetz das "/" durch ein div.

Flocke 13. Jul 2006 15:18

Re: VBasic > Delphi ich verstehe das was nicht
 
Damit dir die Mathematik dahinter etwas deutlicher wird:
Delphi-Quellcode:
// Das hier ist die Summe der Ascii-Zeichen des Befehls
sum := 13 + address + Ord('S') + Ord('1');
// Wähle die Prüfsumme so, dass alle 5 Zeichen addiert im low byte 0 ergeben
crc := (256 - sum) mod 256;
Den VB Code hat offensichtlich jemand verfasst, der nicht wusste, dass es dort auch einen Mod-Operator gibt. Ist sogar noch ein Fehler drin: es kann nämlich (theoretisch) 256 herauskommen.

robinWie 13. Jul 2006 15:33

Re: VBasic > Delphi ich verstehe das was nicht
 
ist dieses "CHR$" eingentlich eine Routine? Ich habe ehrlich gesagt keinen Plan von VB :stupid:
Ach ja und wenn ich über mein Prog ein Befehl sende, blitzt die Lampe für den Port auf der Karte nicht einmal auf :gruebel: Dabei habe das richtig konfiguriert :gruebel:

Klaus01 13. Jul 2006 15:37

Re: VBasic > Delphi ich verstehe das was nicht
 
schau mal bitte in diesen Thread -> http://www.delphipraxis.net/internal...light=velleman
dann sollten sich Deine Fragen von alleine beantworten.

Grüße
Klaus

robinWie 13. Jul 2006 15:42

Re: VBasic > Delphi ich verstehe das was nicht
 
Danke für den Link Klaus :thumb:


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