Einzelnen Beitrag anzeigen

HaGü

Registriert seit: 18. Apr 2006
Ort: Cochem
19 Beiträge
 
#27

Re: Relaiskarte K8056 von Velleman seriell ansteuern

  Alt 27. Mai 2006, 10:12
Hallo Leute,

in C++ haben wir es rausbekommen.
Die Checksumme haben wir so berechnet:
Zitat:
void ResetRelais(int Nr){
char achSData[6]="";
signed char cCheckSum=0;
int result=0;

achSData[0]=13;
achSData[1]=1;
achSData[2]='C';
achSData[3]=Nr+48;
cCheckSum=achSData[0]+achSData[1]+achSData[2]+achSData[3];
cCheckSum=TwosComplement(cCheckSum);
achSData[4]=cCheckSum;

result=SendData(achSData, 5);
Die Beschreibung von Velleman ist falsch.
Einfach bei
Zitat:
'checksum' Summe prüfen (2-Komplement der Summe der 4 vorigen Bytes +1)
das
Zitat:
+1
weglassen, dann klappt es auch mit dem Nachbarn.

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:
dcb.fDtrControl = DTR_CONTROL_DISABLE;
dcb.fRtsControl = RTS_CONTROL_DISABLE;
Habe jetzt nur noch das Problem mit der richtigen deklaration der Variablen. C++ braucht
Zitat:
signed Char
, Delphi????. Die cCheckSum besteht ja aus Buchstaben und Zahlen.
Werde mal bischen rumdoktern.
Vielleicht hat ja von Euch einer eine Idee.

Bis dann
HaGü
  Mit Zitat antworten Zitat