Вам следует обратить внимание на другие последовательные модели отправки / получения, такие как HTTP.В .NET объект HTTPWebRequest - это место, где вы собираете вместе все фрагменты информации для отправки по проводам, включая команду (МЕТОД HTTP: GET, PUT, POST и т. Д.) И поток байтов.Объект HTTPWebRequest (и стек HTTP) внутренне обрабатывает «бумажную работу» по вычислению контрольных сумм данных, разбивке больших данных на более мелкие пакеты и т. Д. Все, что должен сделать ваш код, - это создать объект запроса, установить команду, назначитьпоток данных в свойство объекта запроса и отправка.
Еще одна причина, по которой вы должны смотреть на существующие модели объектов связи, такие как .NET HTTP, заключается в том, что последовательные соединения обычно асинхронны с точки зрения вашего центрального процессора.Много времени ЦП может пройти при передаче символов запроса по последовательному порту и при ожидании ответа.Используйте асинхронную модель для вашего запроса / ответа, чтобы не блокировать вызывающий поток и потенциально заморозить ваш пользовательский интерфейс.
Чтобы продолжить пример .NET HTTP, HTTPWebRequest имеет метод GetResponse, который отправляет запрос и будетблокировать вызывающий поток до получения ответа.HTTPWebRequest также имеет пару BeginGetResponse () / EndGetResponse (), так что вы можете отправить запрос и предоставить обратный вызов, который будет выполнен, когда ответ придет в более позднее время.
Даже если ваш непосредственный дизайн в порядке сМодель синхронного вызова с блокировкой потоков, вы должны, по крайней мере, исследовать шаблоны асинхронного кодирования и рассмотреть возможность реализации своего объекта как такового.Вы всегда можете вызвать асинхронный метод синхронным способом, блокирующим потоки, но гораздо сложнее вызвать асинхронный метод синхронным методом.Потратьте немного времени сейчас, чтобы дать себе больше возможностей в будущем.