Вот так вот примерно и работаем. Обратите внимание, что тип MateEngine.HexEngine не расширяемый, расширяемым является только MateEngine.Hook, так что у клиентов нет шансов ничего испортить в работе протокола. Модули небольшие, трудных для понимания вещей не содержат кроме, пожалуй, сложного условия при выборе, продолжать или заканчивать работу в конце CommAction.Action.Do. В остальном, если отвлечься от тонкостей реализации hex-протокола, система достаточно простая, гибкая и безопасная. Напоследок - обобщенный пример кода, открывающего соединение через COM-порт:
## Код:
```
VAR
   action: CommAction.Action;
   engine: MateEngine.HexEngine;
   stream: CommStreams.Stream;
   res: INTEGER;
BEGIN
   CommStreams.NewStream('CommV24', '', 'COM2,19200', stream, res);
   CASE res OF
   |   CommStreams.done:
      NEW(engine);
      MateModels.dir.HookToEngine(engine);
      action := CommAction.NewAction(stream, engine);
      Dialog.ShowStatus('#Mate:port open')
..................
END;
```
