Главная » Delphi » Передача данных через СОМ-порт

0

Мы себе задачу ограничим — не будем рассматривать синхронные протоколы (организация которых возможна при использовании дополнительных выводов СОМ-портового разъема), т. к. большинство устройств используют трехпроводной асинхронный протокол передачи в "чистом" виде. Задача установки в определенное состояние некоторых из этих дополнительных выводов — она требуется, например, если внешнее устройство питается от одной из таких линий, подобно СОМ-портовой мыши — разбирается в приложении 4.

Начнем с постановки задачи — как вообще организовать обмен данными через СОМ? Отметим, что таким образом поставить эту задачу так же невозможно, как в общем виде ответить на вопрос "как послать письмо по электронной почте?" Если вы хотите иметь какой-то определенный способ обмена, то придется проектировать и устройство, и программу во взаимосвязи. Но, как правило, мы уже имеем некое устройство. Зададим вопрос поконкретнее — как оно может работать?

Самым надежным способом является обмен данными по типу запрос/ответ1. Внешнее устройство, как правило, является источником данных, поэтому вы посылаете соответствующие команды-запросы, а устройство в ответ вам посылает данные. Объем посылки бывает строго оговорен (самый простой вариант), но иногда бывает, что информация о количестве данных содержится в заголовке ответного сообщения (заголовок должен при этом иметь строго оговоренный формат), или кадр с данными заканчивается чем-то конкретным — нулевым байтом, переводом строки/возвратом каретки ($13+$ 10) или еще как-то. Типичным представителем протоколов обмена по типу запрос/ответ является протокол. Garmin для GPS-приемников одноименной фирмы, там кадр с данными начинается всегда с байта $10, оканчивается всегда сочетанием байтов $10+$03, но, кроме того, имеется и информация о длине посылки (см. [27]). Если вам кажется, что односторонний протокол NMEA (когда GPS-приемник автоматически выдает сообщения в компьютер без всяких запросов), который мы далее будем использовать на практике, проще в программной реализации, то вы и правы и не правы одновременно. Подробнее об обмене с собственно GPS-модулями мы поговорим позже, а пока попытаемся понять, почему односторонний протокол передачи теоретически сложнее в реализации.

Источник: Ревнч Ю. В.  Нестандартные приемы программирования на Delphi. — СПб.: БХВ-Петербург, 2005. — 560 е.: ил.

По теме:

  • Комментарии