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ü