Se você usar um tamanho de bit de parada que seja facilmente discernido do restante do fluxo de dados, como um tempo de 1,5 bits, será fácil começar a receber a transmissão intermediária. No entanto, isso tem um custo de sobrecarga aumentada. Seu rendimento total de dados disponível sofrerá à medida que você aumentar a duração do seu bit de parada.
Se você não estiver usando o barramento com muita freqüência e com intervalos entre os quadros, pode ser apenas uma questão de esperar que um desses intervalos ocorra e depois pegar a primeira transmissão oi-lo no início do seu próximo bit de início.
Lembre-se de que o número de bits de dados deve ser previsível, assim como o tamanho do quadro, portanto, mesmo se você estiver usando 100% da capacidade do barramento e seu bit de parada for um único bit, ainda será possível encontrar o bit de início se você coletar quadros suficientes. É garantido que todos os quadros tenham uma transição oi-lo. O bit de parada é aquele que está sempre alto. O bit inicial é aquele que é sempre baixo. Supondo que seus dados sejam aleatórios (ou aleatórios o suficiente), você pode fazer algo tão simples quanto criar um buffer do tamanho do seu quadro, definir cada bit nele e continuar coletando quadros e ANDando-os nesse buffer até que o buffer tenha apenas 1 conjunto de bits. Este bit é o seu bit de parada. O seguinte é o seu bit de início. Voila! Você encontrou.
Se você estiver usando um bit de paridade, outra opção seria coletar dois quadros de dados, escolher o primeiro bit baixo como o bit inicial e calcular a soma de verificação e comparar com o bit de paridade. Se corresponder, você (provavelmente) encontrou o bit inicial. Caso contrário, escolha o próximo bit baixo e repita até obter uma boa soma de verificação. Se você não conseguir encontrar um bit em seus dois quadros de dados com check-out válido, então seus dados foram corrompidos e você precisará pegar mais dois quadros.