boez » 24 июн 2009, 00:47
Именно, нужна преамбула так называемая - определенное количество легко распознаваемых байт, которые заставят уарт нормально засихронизироваться (подозреваю что хорошо подойдет что-то типа 0xF0 или 0X0F (ну в общем тот из них, который даст меандр, наверное 0x0F, биты ж с младшего передаются?). Затем идет определенный байт, отличный от байтов преамбулы (синхробайт, ну например какой-нить 0x5a), приняв который программа приемника понимает, что дальше пойдут байты данных. И все. То есть на приеме игнорируем все что валит на уарт, пока не пришло несколько (не менее 2-3) байт преамбулы и за ними синхробайт. Тогда начинаем складывать принятые байты в буфер. Окончание приема лучше всего ловить с помощью протокола - где-то в начале пакета передавать его длину и считать байты.