RS-232-Kommunikation¶
Bemerkung
Bitte beachten Sie, dass die RS-232-Schnittstelle eine gemeinsame Masseverbindung zwischen USBoard-USS4 und Rechner erfordert.
Die RS-232-Schnittstelle wird mit 19.200 Baud betrieben. Das Protokoll besitzt das gleiche Format wie bei der CAN-Kommunikation, jedoch mit den folgenden Erweiterungen:
Jede Nachricht vom USBoard-USS4 beginnt mit einem Startbyte, das den Wert 0xFF
hat. Abschließend zu jeder aus 8 Datenbytes bestehenden Nachricht wird eine 16 Bit Checksumme gesendet. Die vollständige Nachricht hat somit 11 Bytes:
Byte 1 | Bytes 2-9 | Byte 10 | Byte 11 |
---|---|---|---|
0xFF |
Datenbytes | checksum high byte | checksum low byte |
Die Checksumme berechnet sich nach CRC-CCITT über alle 8 Datenbytes.
Die zum USBoard-USS4 verschickten Nachrichten enthalten lediglich die Datenbytes 1-8.
Implementierung der Checksummenberechnung (C-Code):
unsigned int getCheckSum(unsigned char *c, size_t iNumBytes){
unsigned int uCrc16;
unsigned char ucData[2];
size_t i;
uCrc16 = 0;
ucData[0] = 0;
for(i=0; i<iNumBytes; i++){
ucData[1] = ucData[0];
ucData[0] = c[i];
if(uCrc16 & 0x8000){
uCrc16 = (uCrc16 & 0x7fff) << 1;
uCrc16^= 0x1021;
}else{
uCrc16 <<= 1;
}
uCrc16^= (unsigned int)(ucData[0]) | ((unsigned int)(ucData[1]) << 8);
}
return uCrc16;
}