private void SendWithXonXoff(byte[] buffer, int offset, int length)
{
byte[] escape = new byte[1] { 0x10 };
int max_offset = length + offset;
//scan
for (int i = offset; i < max_offset; i++)
{
if (buffer[i] == 0x10 || buffer[i] == 0x11 || buffer[i] == 0x13)
{
m_port.Write(buffer, offset, i - offset);
m_port.Write(escape, 0, 1);
buffer[i] |= 0x80;
offset = i;
}
}
//leftover
m_port.Write(buffer, offset, max_offset - offset);
}