Right, so I'll try another method using Serial.Available(). I was doing that but without some added precautions:
void Encoders() {
byte Enc[8];
ReceiveEnc = true;
Serial.write(SynchByte); //Get Encoder - right then left
Serial.write(0x25);
delay(50);
EncIndex = 0;
EncWait = millis() + 20;
while (Serial1.available()) {
Enc[EncIndex] = Serial1.read();
EncIndex++;
EncWait = millis() + 20;
if(EncIndex == 8) {
encoderRt = long(Enc[0])<<24; //Get Right Encoder
encoderRt += long(Enc[1])<<16;
encoderRt += long(Enc[2])<<8;
encoderRt += long(Enc[3]);
encoderLt = long(Enc[4])<<24; //Get Left Encoder Counts
encoderLt += long(Enc[5])<<16;
encoderLt += long(Enc[6])<<8;
encoderLt += long(Enc[7]);
ReceiveEnc = false;
}
}
}
John-