Если вы используете длину стопового бита, легко различимую от остальной части потока данных, например, 1,5-битное время, тогда будет легко начать получать передачу в середине передачи. Однако это происходит за счет увеличения накладных расходов. Ваша общая доступная пропускная способность данных пострадает при увеличении длины вашего стоп-бита.
Если вы не используете шину, которая интенсивно и часто имеет промежутки между кадрами, то это может быть просто вопросом ожидания появления одного из этих промежутков, а затем выбора первой передачи hi-lo в качестве начала вашей Следующий стартовый бит.
Имейте в виду, что число битов данных должно быть предсказуемым, как и размер кадра, поэтому даже если вы используете 100% пропускной способности шины, а ваш стоп-бит занимает один бит, вы все равно сможете найти начать бит, если вы соберете достаточно кадров. Каждый кадр гарантированно имеет переход hi-lo в нем. Стоп-бит всегда высокий. Стартовый бит всегда низкий. Предполагая, что ваши данные случайные (или достаточно случайные), вы можете сделать что-то простое, например создать буфер размером вашего кадра, установить каждый бит в нем, а затем продолжать собирать кадры и вставлять их в этот буфер, пока в буфере не будет только 1 бит установлен. Этот бит ваш стоп-бит. Следующий за ним - ваш стартовый бит. Вуаля! Вы нашли это.
Если вы используете бит четности, другим вариантом будет захват данных на два кадра, выбор первого младшего бита в качестве начального бита, а затем вычисление контрольной суммы и сравнение с битом четности. Если это соответствует, то вы (вероятно) нашли стартовый бит. Если этого не произойдет, выберите следующий младший бит и повторяйте, пока не получите хорошую контрольную сумму. Если вы не можете найти бит в ваших двух кадрах данных, который считается действительным начальным битом, тогда ваши данные были повреждены, и вам нужно будет захватить еще два кадра.