Anhang E. FAQ zu den Programmier-
Schnittstellen
Im folgenden eine Aufstellung von häufig gestellten Fragen in Bezug zur
Programmier-API bzw. der Programmierung als solches.
E.1. Fragen zum Kommunikationsprotokoll
F:
Die Berechnung der Prüfsumme (CRC) für die AnaGate-Telegramme ist unklar.
A:
Die folgende Abbildung zeigt den grundsätzlichen Aufbau eines AnaGate-
Befehlstelegramms:
Als Prüfsumme wird ein Byte benutzt, das sich durch ein XOR von sämtlichen
Bytes eines Befehlstelegramms ohne die Längen-Bytes und CRC selbst
errechnet.
Die folgende C-Funktion berechnet den CRC eines bereits erzeugten
Befehlstelegramms:
unsigned char CalcCRC( char * pBuffer, int nBufferLength )
{
int i;
unsigned char nCRC = pBuffer[2]; // skip the length bytes
// XOR all bytes in the message except the length information and the last byte
for( i = 3; i < nBufferLength - 1; ++i )
{
nCRC ^= pBuffer[i];
}
return nCRC;
}
Bei Verwendung der Funktion CalcCRC muss der Übergabeparameter pBuffer
auf einen Datenpuffer zeigen, der das vollständig erzeugte Datentelegramm
enthält. Die Längenangabe nBufferLength ist abhängig vom erzeugten
Befehlstyp und kann über folgenden Pseudocode berechnet werden:
buffer length = sizeof( command length ) + sizeof( command code )
+ sizeof( command id ) + sizeof( CRC ) + sizeof(data)
= 7 + sizeof(data)
184
© 2007-2015 Analytica GmbH