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;
}