1. Зачем байт синхронизации? Можно делать так: Если с момента приема последнего байта прошло больше чем к примеру 1.5 времени между байтами, то это байт нового сообщения.
2. Лучше делать так, чтобы запрашиваемое устройство ВСЕГДА отвечало. (хотя бы OK)
3. Порт, дата, ИМХО излишество. Достаточно просто данные и все. Не стоит себя сразу ограничивать.
4. Почему не SPI к примеру? Робот что, такой большой?