XON / XOFF используются для управления потоком. Если вы обрабатываете информацию и не можете больше получать, потому что ваши входные буферы заполнены, вы должны отправить XOFF, чтобы сообщить другой стороне прекратить отправку. Когда у ваших входных буферов есть место, вы отправляете XON, чтобы сказать другой стороне, чтобы начать отправку снова. Приложения, которые я видел (и я делал это много лет назад), используют их только при необходимости, а не как стандартную часть сообщения.
Одна из проблем с XON / XOFF заключается в том, что в шумной строке эти символы могут быть получены неправильно, поэтому принимающая сторона может отправлять XOFF, когда буфер заполнен на 80%, и, возможно, снова, когда заполнен на 90%, и затем начните отправлять их чаще, если отправляющая сторона не останавливается.
Аналогично, принимающая сторона может отправлять XON, когда она готова к приему, но если больше ничего не получено, она может периодически отправлять ее, чтобы убедиться, что первая не была пропущена.
Для успешной реализации ни один символ не может появляться ни в одной части сообщения. Википедия объясняет кое-что из этого лучше, чем я.
В PySerial вам не нужно фактически отправлять их явно. Он будет обрабатывать это для вас, или вы можете использовать API для отправки.