public IModbusWrapper Scan() { if (buffer.Count >= 8) { var code = buffer[1]; CheckCode(code); var length = 8; if (HasBytesAt6(code)) { if (buffer.Count >= 9) { length = 9 + buffer[6]; } else { return(null); } } if (buffer.Count >= length) { var request = buffer.GetRange(0, length).ToArray(); buffer.RemoveRange(0, length); return(protocol.Parse(request, 0)); } } return(null); }
public IModbusWrapper Scan() { //01,02,03,04,05,06 have 6 + 2(CRC) //15,16 have 6 + 1(len) + len + 2(CRC) if (buffer.Count >= 8) { var code = buffer[1]; CheckCode(code); var length = 8; if (HasBytesAt6(code)) { length += 1 + buffer[6]; } if (buffer.Count >= length) { var request = buffer.GetRange(0, length).ToArray(); buffer.RemoveRange(0, length); return(protocol.Parse(request, 0)); } } return(null); //not enough data to parse }