statt mit einem pointer das array zu befüllen wwürde ich mit 2 inizes arbeiten
Code:
int writecount;
int readcount;
ISR(){
Buff[writecount++] = RxByte;
}
...
bytestoread = writecount - readcount;
if (bytestoread < 0) bytestoread += buffsize;
if (bytestoread > 1) { // mehr als 2 bytes empfangen (also auch das längebyte)
if ((bytestoread > buff[readcount+1]+2) // ausreichend bytes anhand der länge im paket ?
&& (getCRC(&buff[readcount]) == buff[buff[readcount+1]+2])) { // crc nachrechnen und mit der im paket vergleichen
doyourwork();
}
}
ACHTUNG dieser code kann rechenfehler beinhalten, aber so ungefähr habe ich das gelöst
Lesezeichen