Цитата(umup @ Oct 5 2008, 17:26)

просто - по тайм-ауту приема
А если между пакетами пройдет помеха ? Тогда у Вас следующий пакет будет отброшен, хотя и мог бы быть принят без ошибок. В общем, не сюр.
Кстати, в полудуплексе, на rs485 без растяжек Ваш протокол работает ? Без ошибок ?
Цитата(umup @ Oct 5 2008, 17:26)

работать с устройствами, которые имеют разные настройки скорости/четности/стопов
Жуть.
Цитата(umup @ Oct 5 2008, 17:26)

а если он будет искажен помехой ?
Значит слейв продолжит дожидать завершение пакета, а мастер, после таймаута, повторит запрос.
Цитата(umup @ Oct 5 2008, 17:26)

контролироваться должны все данные.
Считать CRC ? От управляющих символов ? Смысл ? При искажении итак перезапрос произойдет, хоть контролируй, хоть не контролируй.
Часть команд:
Код
// Slp_pipe_commands ===========================================================
//
#define Slp_pipe_commands 0x00
#define Slp_pipe_a 0x0A // 0x0A D..D C-C
#define Slp_pipe_b 0x0B // 0x0B D..D C-C
#define Slp_pipe_c 0x0C // 0x0C D..D C-C
#define Slp_pipe_d 0x0D // 0x0D D..D C-C
Код
// Slp_system_commands =========================================================
//
#define Slp_system_commands 0x10
#define Slp_system_reset 0x10 // 0x10 C-C
#define Slp_system_start 0x11 // 0x11 C-C
#define Slp_system_wakeup 0x12 // 0x12 C-C
#define Slp_system_sleep 0x13 // 0x13 C-C
#define Slp_system_standby 0x14 // 0x14 C-C
#define Slp_system_set_datetime 0x15 // 0x15 S-M-H-D-D-M-Y C-C
#define Slp_system_set_bitrate 0x16 // 0x16 B-B-B C-C
#define Slp_system_enumerate 0x17 // 0x17 A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A S C-C
Про перечисление устройств я уже писал где-то рядом, а остальное вроде бы должно быть понятно.