Conversione funzione per CRC-8 da Arduino a VB.NET

Ciao a tutti!

Non sono molto pratico di comunicazione seriale, ma sto cercando di far comunicare il mio Arduino con un VB.net inviando un pacchetto di 7 Byte, divisi in SOH | Data1 | Data2 | Data3 | Data4 | CRC | ETX.
Il problema sta nella verifica CRC8, che implementat, lato Arduino, usando del codice trovato qua sul forum (in quanto avendo appena inziato con arduino e non ricordando più niente di C, non sarei capace di scrivere da solo) , ma che non riesco ad implementare in VB proprio per la mia ignoranza in C.

Qualcuno è in grado di fare una conversione C/Arduino -> VB?

//CRC-8 - algoritmo basato sulle formule di CRC-8 di Dallas/Maxim
//codice pubblicato sotto licenza GNU GPL 3.0
byte CRC8(const byte *data, byte len) {
  byte crc = 0x00;
  while (len--) {
    byte extract = *data++;
    for (byte tempI = 8; tempI; tempI--) {
      byte sum = (crc ^ extract) & 0x01;
      crc >>= 1;
      if (sum) {
        crc ^= 0x8C;
      }
      extract >>= 1;
    }
  }
  return crc;
}

Lato VB, ho un array di stringhe in cui è conservato il contenuto di Data1, Data2, Data3 e Data4, che vorrei utilizzare con questa funzione (infatti la variabile "len" nel codice arduino, potrei ricavarla direttamente dalla proprietà Lenght dell'array). Questo l'array:

Dim tempArray As String() = New String(3) {bytes(1), bytes(2), bytes(3), bytes(4)}

Grazie a tutti in anticipo!