public bool frameDecoder(byte b) { switch (state) { case frameState.S_READY: if (b == STARTCHAR) { state = frameState.S_SYNC; } else { state = frameState.S_READY; } break; case frameState.S_SYNC: if (b == thisaddr) { state = frameState.S_IDENT; } else { state = frameState.S_READY; } break; case frameState.S_IDENT: length = b; checksum = 0; decode = ""; if (length != 0) { state = frameState.S_READ; } else { state = frameState.S_READY; } break; case frameState.S_READ: checksum ^= b; decode += (char)b; if (--length == 0) { state = frameState.S_CHECK; } else { state = frameState.S_READ; } break; case frameState.S_CHECK: state = frameState.S_READY; if (checksum == b) { return(true); } break; } return(false); }
public frameDecode(byte address) { state = frameState.S_READY; thisaddr = address; }