private void RemoveXonOff(byte[] buffer, int offset, ref int max_offset, ref bool compliment_next)
{
//X'10' (DLE) => X'10' X'90'
//X'11' (XON) => X'10' X'91'
//X'13' (XOFF) => X'10' X'93'
for (int i = offset; i < max_offset; i++)
{
if (compliment_next)
{
buffer[i] &= 0x7F;
compliment_next = false;
}
else if (buffer[i] == 0x11 || buffer[i] == 0x13 || buffer[i] == 0x10)
{
if (buffer[i] == 0x10) compliment_next = true;
if ((max_offset - i) > 0)
Array.Copy(buffer, i + 1, buffer, i, max_offset - i);
max_offset--;
i--;
}
}
}