vmp (22.06.2012 10:06, просмотров: 206) ответил Vladimir Ljaschko на Чем плох x-modem
Я во всех устройствах использую приблизительно один и тот же протокол. Мастер шлет пакеты (старт, длина, обязательные параметры, переменная часть, CRC32), слейв отвечает такими же пакетами только если правильно понял и выполнил команду. После посылки мастер ждет оговоренное время (например 0.5 секунды) ответа, потом переспрашивает.
В случае каких-либо непоняток - ждем паузу на линии (например тишину в течении 0.1 секунды).
В обязательном заголовке передается либо номер пакета (бит или байт по кругу), либо код операции, определенный так, что повторение пакета не приводит к каким-либо последствиям. Номер или код слейв транслирует в своем ответе мастеру.
Повтор пакета может быть, если мастер не услышал ответ слейва и заново запросил ту же операцию. В варианте с кодом операции для пересылки больщих объемов данных используются коды операций "четный блок"/"нечетный блок". Если на слейв приходит два последовательных одинаковых кода, то второй подтверждается без исполнения.
С номерами пакетов - если номер тот же, то подтверждаем без исполнения, если N+1 - исполняем.