Рис. 1 — Фрагменты листингов программ опроса датчика
В данном примере предполагается, что некоторая задача осуществляет опрос датчика и помещает полученное с него значение в глобальную переменную sensor_value, значение которой предполагается отправить для обработки в персональный компьютер. Для минимизации объёма передаваемых данных, отправка осуществляется только при изменении значения переменной. Значение отправляется в виде двухбайтного массива (предполагается, что значение имеет длину 2 байта) через последовательный интерфейс, и может быть принято и обработано программой на ПК.
Фрагмент принимающей программы демонстрирует один из вариантов организации получения значений из последовательного порта. В данном случае приём осуществляется в массив из двух байтов, который на самом деле является одной переменной, хранящей шестнадцатиразрядное целое число. После получения обоих байтов значения, оно отправляется на дальнейшую обработку, а буфер начинает заполняться с начала.
Другой пример связан с отправкой команд с ПК на микроконтроллер для управления подключенными устройствами. Поскольку устройство, которым предполагается управлять, может не успевать обрабатывать команды с той скоростью, с которой они приходят с ПК (предполагается, что скорость отправки команд
в среднем не превышает максимально возможную скорость их обработки), получаемые команды следует размещать в буфере достаточного размера. Пока буфер команд, принимаемых через последовательный интерфейс, пуст, программа микроконтроллера (а именно, тот её компонент, который осуществляет управление подключенным внешним устройством) пребывает в состоянии ожидания. При появлении данных в буфере осуществляется их извлечение и обработка (отправка соответствующих команд подключенному оборудованию).
Фрагмент листинга программы для микроконтроллера, участвующей в таком обмене данными, приведён на рисунке 2.