Современные программные средства связи микроконтроллера с компьютером по интерфейсу RS-232. Часть 1

№ 6’2006
Настоящая статья продолжает серию публикаций, посвященных современным аппаратным средствам интерфейса RS-232, и предлагает вниманию читателей знакомство с поддерживающим эти аппаратные средства программным обеспечением.

Настоящая статья продолжает серию публикаций, посвященных современным аппаратным средствам интерфейса RS-232, и предлагает вниманию читателей знакомство с поддерживающим эти аппаратные средства программным обеспечением.

Все статьи цикла:

1. Предварительные замечания

Программные средства для интерфейса RS-232, по которому компьютер и микроконтроллер обмениваются информацией между собой, условно можно разделить на две части. К первой части отнесем программы, написанные для компьютера, ко второй — программы для микроконтроллера.

В свою очередь, программы для компьютера тоже условно можно разделить на две части. К первой отнесем программы, написанные для операционной системы (ОС) DOS, ко второй — для Windows.

Если ОС DOS, последняя версия которой — седьмая (MS DOS 7.0), больше не модифицируется, то системы Windows постоянно обновляются. Существует несколько версий системы Windows. Из них мы будем рассматривать только две — последнюю версию Windows 98 второй редакции (Windows 98 SE) и последнюю версию Windows XP для профессионалов со вторым сервисным пакетом — Windows XP Professional, Service Pack 2 (Windows XP SP2). Все промежуточные системы Windows, как предшественницы Windows 98 SE2 (Windows 3.1, Windows 95), так и предшественницы Windows XP SP2 (Windows NT, Windows 2000, Windows Me и др.), рассматриваться не будут по причинам, сформулированным ниже.

Вначале несколько слов о версии Windows 98 SE2 и ее предшественницах. Windows 98 — псевдo-многозадачная операционная система, которая зарекомендовала себя как исключительно надежная (поэтому и используется до сих пор) и в которой допускается полноправное применение DOS. Программы для DOS работают в Windows 98 как в режиме «эмуляции», так и непосредственно (используется MS DOS 7.0). Псевдо-многозадачность Windows 98 проявляется в том, что несколько запущенных программ могут работать «одновременно», но в действительности в каждый момент времени работает только одна программа, которая может «захватить» все ресурсы компьютера, а остальные программы ждут своей очереди. Именно этим свойством Windows 98 похожа на MS DOS, в которой в любой момент времени может работать только одна программа (именно та, которая запущена). В Windows 98 программисту доступны все ресурсы компьютера, в том числе прямой ввод-вывод через порты. Благодаря этой особенности программирование интерфейса RS-232 в Windows 98 практически мало чем отличается от его программирования в DOS. Существуют, конечно, некоторые нюансы, о которых мы расскажем позже.

Windows 3.1 — система, которая была написана как программа DOS, поэтому большого распространения не получила. В Windows 95 было допущено много ошибок, которые постепенно были выявлены и исправлены. После устранения ошибок, а также благодаря некоторым дополнительным нововведениям, появилась система Windows 98, а затем и Windows 98 SE.

Windows XP — действительно многозадачная операционная система, в которой каждой из нескольких запущенных и работающих программ отводится определенный «квант» времени. В Windows XP уже практически нет никакой связи с DOS. Программисту доступны далеко не все ресурсы компьютера; прямой ввод-вывод через порты запрещен. И хотя и существуют некоторые «обходные» пути, позволяющие преодолеть это запрещение (в частности, есть известная программа UserPort, после запуска которой в Windows XP можно обращаться напрямую к портам ввода-вывода), основная идеология этой ОС — не разрешать программам «захватывать» все ресурсы компьютера, в том числе — запрет на прямой ввод-вывод через порты. В настоящее время ОС Windows XP является самой распространенной.

Однако система Windows 98 SE до сих пор применяется, так как она тесным образом связана с DOS, которая является исключительно надежной системой благодаря своей простоте, хорошей изученности и предсказуемости работы.

В связи с вышеизложенным, все программы для Windows будут ориентированы на применение в Windows XP. В Windows 98 они также работают, хотя некоторые из них — значительно медленнее, чем в DOS и Windows XP.

Примеры программ для DOS будут приведены по двум причинам.

Во-первых, система DOS до сих пор используется благодаря своей надежности, вовторых, на примере программ, написанных для DOS, будет показано, что программирование обмена компьютера с микроконтроллером по интерфейсу RS-232 в Windows XP мало чем отличается от программирования в DOS (если использовать «запрещенные» в Windows XP прямые процессорные команды ввода-вывода в порт: in и out).

В Windows XP (кстати сказать, и в Windows 98) обращение к RS-232 возможно через специальный программный интерфейс, разработанный компанией Microsoft специально для работы приложений (Application Program Interface — API). Функции API «славятся» своими ошибками, поскольку этот интерфейс бесплатный. Таким образом, если программист попытается использовать для программирования RS-232 описанные в MSDN [16] или в других справочниках и руководствах функции API, он рискует получить неожиданные побочные эффекты. В статье для полноты изложения показано, как достаточно просто можно запрограммировать обмен по RS-232 в Windows с помощью API-функций. Кроме того, было выявлено, что использование API, особенно в Windows 98, резко «тормозит» обмен по RS-232, в связи с чем (а также в связи с упомянутыми ошибками) автор не рекомендует пользоваться API-функциями, предназначенными для программирования интерфейса RS-232.

Теперь относительно языка программирования. Продолжая традицию использования языка Кларион, который применялся для программирования обмена между микроконтроллером и компьютером по интерфейсу RS-232 в системе DOS (Clarion v. 3.101) [2, 3], в настоящей статье все программы для компьютера, написанные для Windows XP, автор также приводит на языке Кларион (версия для Windows). В настоящее время последняя версия этого языка — 6.0.

Необходимо отметить, что язык программирования Кларион — одна из двух наиболее известных так называемых RAD-систем (вторая — Дельфи). RAD — аббревиатура английских слов Rapid Application Development, что в переводе означает: «быстрая разработка приложений (прикладных программ)». Основное преимущество RAD-системы перед обычным языком программирования в том, что в ней уже написано большое количество готовых «шаблонов». Программисту остается выбрать наиболее подходящий «шаблон» для своей подзадачи, дописать свой код, а затем так называемый генератор приложений автоматически сгенерирует код на языке высокого уровня Кларион (если используется RAD-система Кларион) или Си/Паскаль (если используется Дельфи). Сравнивать же между собой Кларион и Дельфи — дело неблагодарное. Некоторое преимущество Клариона перед Дельфи (но только на взгляд автора) заключается в том, что конечным результатом трансляции на Кларионе является программа исполняемого формата (*.exe), в которую уже включены все используемые библиотеки. Для установки такой программы на компьютер ее следует просто скопировать на жесткий диск. Для работы программы, написанной в Дельфи, на компьютер следует устанавливать еще и библиотеки (*.dll), которые используются в этой программе. Кроме того, в Кларионе несколько проще программировать управление базами данных. Наконец, язык Кларион (опять же на взгляд автора) — более компактен в написании и проще в понимании, чем, например, Паскаль или Си, поскольку использует «старомодный стиль Фортрана и Бейсика», как пишет его создатель Брюс Б. Баррингтон [1]. Статью о сравнении этих двух RAD-систем читатель может прочитать сам [8]. Необходимо также отметить, что программирование на том или ином языке, вообще говоря, — дело вкуса.

В связи с вышеизложенным, программы для DOS будут приведены на языке Кларион для DOS (Clarion v. 3.101) с использованием пакета подпрограмм для графического интерфейса пользователя (Graphic User Interface) — GUI-3. Программы для Windows будут приведены на языке Кларион для Windows (Clarion v. 6.0).

Программы для микроконтроллера в основном будут приведены на языке Си (C51-Keil v. 6.14), хотя некоторые простые программы для микроконтроллера будут приведены и на ассемблере.

Но прежде чем заниматься изложением материала по программированию интерфейса RS-232 (и для микроконтроллера, и для компьютера), автор хотел бы уделить некоторое внимание двум аспектам, которые часто вызывают затруднения у многих программистов (иногда даже достаточно высокого класса).

Первая проблема — как при написании программ (в DOS и Windows) обеспечить достаточно короткую аппаратно независимую (или, другими словами, машинно-независимую) временную задержку (в несколько микросекунд). При написании программ для микроконтроллера такая проблема не возникает, так как программисту всегда известен тип микроконтроллера и частота его тактового генератора. Поэтому эта проблема касается только программ для компьютера.

Вторая проблема — грамотное и повсеместное использование совмещений. Напомню, что совмещением называется такая структура данных, в которой две или более переменных разного формата разделяют между собой одну и ту же область памяти.

Например, двухбайтовая переменная (USHORT в Кларионе или unsigned short в Си) и две однобайтные переменные (BYTE в Кларионе и unsigned char в Си) могут располагаться в одной и той же области памяти. При обмене информации по 8-разрядному интерфейсу (например, RS-232) удобнее использовать однобайтные переменные, а при расчетах, либо для других целей, когда переменная уже находится в процессоре (или в микроконтроллере), удобнее работать с двухбайтной переменной. Но поскольку обе переменные располагаются в одной и той же области памяти, нет необходимости преобразования двух однобайтных переменных в одну двухбайтную (и обратно). А такое преобразование часто «тянет» за собой использование, например, библиотек для обработки данных с плавающей запятой, что резко увеличивает время преобразования и объем программ. При использовании совмещений проблема преобразования исчезает, так как каждый тип переменной определен, и переменную любого типа можно использовать в программе «напрямую». В текстах программ будут приведены достаточно подробные комментарии, по которым читатель, в частности, может определить эти два момента (формирование временных задержек и совмещения).

Еще будет рассмотрен вопрос об использовании нового алгоритма обмена по интерфейсу RS-232, разработанного автором [2, 3]. В связи с увеличением быстродействия как современных компьютеров, так и современных микроконтроллеров использование этого алгоритма приобретает еще большее значение (особенно это касается надежности и скорости обмена). Будут приведены некоторые уточнения и «обновления» алгоритма, а также временная диаграмма сигналов передатчика и приемника, участвующих в обмене информацией. Кроме того, будут даны рекомендации по использованию такого алгоритма как в программах для микроконтроллера, так и в программах для компьютера.

Итак, наше изложение будет иметь следующую последовательность.

Вначале будет рассмотрен вопрос об использовании нового алгоритма обмена по RS-232 (для компьютера и микроконтроллера).

Затем будут рассмотрены функции API для программирования интерфейса RS-232 в Windows. Будет показано, как их использовать совместно с новым алгоритмом обмена, разработанного автором.

Следующий вопрос, который будет рассмотрен, — как использовать прямые команды процессора ввода-вывода в порт (in и out) в Windows XP. Будут приведены тестовые программы обмена по RS-232 и сравнение быстродействия систем DOS, Windows 98 и Windows XP.

И, наконец, для того чтобы читатель смог убедиться, что аппаратные средства, о которых шла речь в предыдущих публикациях (см. «КиТ» № 3–5 за этот год), и программные средства, приведенные в настоящей статье, — не просто научные изыскания, в заключительной части статьи будет продемонстрировано практическое применение изложенного материала. Это — системы сбора информации, работающие на реальных объектах. Будут приведены некоторые снимки экранов, а также фотографии систем сбора, которые работают в составе установок по поверке и градуировке счетчиков объема газа, предназначенных для его коммерческого учета.

В следующей части статьи будет рассказано об использовании нового алгоритма обмена информацией по RS-232 между компьютером и микроконтроллером

Продолжение следует.

Литература

  1. Баррингтон Брюс Б. Как создавался Кларион. // Мир ПК. 1993. № 2
  2. Кузьминов А. Ю. Интерфейс RS-232. Связь между компьютером и микроконтроллером. От DOS к Windows98/XP — М.: ДМК-ПРЕСС, 2006 (в печати).
  3. Кузьминов А. Ю. Интерфейс RS-232. Связь между компьютером и микроконтроллером. — М.: Радио и связь, 2004.
  4. Кузьминов А. Ю. Однокристальные микро-ЭВМ — основа удаленных систем сбора и обработки сигналов, поступающих с датчиков. // Электроника и компоненты. 1998. № 2.
  5. Кузьминов А. Ю. Новые MCS51 — совместимые микроконтроллеры и их применение в системах сбора информации с датчиков. // Контрольноизмерительные приборы и системы. 1997. № 6. 1998. № 7.
  6. Кузьминов А. Ю. Удаленные системы сбора информации с датчиков на базе однокристальных микроЭВМ. // Автоматизация и производство. 1996. № 3.
  7. Кузьминов А. Ю. Универсальная система сбора и обработки данных АСИР-3. // Мир ПК. 1996. № 6.
  8. Орлов А. Два звучных слова — Clarion и Delphi. // Мир ПК. 1996. № 6.
  9. Фролов А. В., Фролов Г. В. Программирование модемов. М.: ДИАЛОГ-МИФИ, 1993.
  10. www.analog.com
  11. www.atmel.com
  12. www.maxim-ic.com
  13. www.semiconductor-philips.com
  14. www.silabs.com
  15. www.ti.com
  16. www.msdn.microsoft.com/library
  17. www.gapdev.com
  18. www.sysinternal.com

Компания Agilent Technologies представила улучшенный графический интерфейс пользователя для семейства приборов для тестирования протоколов последовательной передачи данных E2960A. Анализатор протоколов Agilent E2960A теперь также поддерживает разрядность шины PCI Express X16, обеспечивая разработчиков в компьютерной и телекоммуникационной сферах полным набором средств анализа протоколов для любой разрядности — от X1 до X16.

Функция easy-flow нового интерфейса создает среду просмотра, которая предоставляет данные в нужном пользователю режиме. Этот интерфейс также обладает функциями легкого поиска и фильтрации, которые позволяют найти одинаковые кадры или поля одним нажатием клавиши. Эти возможности значительно облегчают навигацию и управление мощными функциями системы запуска анализатора.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *