ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
10 июля
334681 Топик полностью
Dir (12.06.2012 01:36, просмотров: 72) ответил mazur на Ну предложил, ищи искомое в списке статей. Предложи тогда альтернативу очереди сообщений. Мне нужно задействовать клавиатуру, дисплей, управление циклом работы станка. Как реализовать взаимодействие модулей?
Зачем статьи? Тут просто здравый смысл включить надо. Например, нажали кнопку. После отработки антидребезга выставляется флаг нажатия кнопки, а ее код записывается в буфер клавиатуры. Этот буфер может быть и не из одного символа. Тогда нужны указатели на его вершину и количество символов в нем. При нажатие на кнопку "Ввод", этот отработчик (или специально созданный для этой цели) анализирует последовательность кодов в буфере клавиатуры и в зависимости от нее формирует флаг команды, код команды и выводит диагностические сообщения на дисплей. Возможно, этих кодов будет и не один, тогда они записываются в аналогичный клавиатурному многосимвольный буфер. Флаг команды анализируется обрабочиком команд. Он отрабатывает команды из буфера (управляет станком) и в конце отработки сбрасывает флаг команды. Все. Нет общей очереди сообщений. Есть флаги сообщений и отдельные буфера, которые анализируются соответствующими обработчиками. Размер этих буферов и их организация - самая разная. Наиболее часто используются линейные и кольцевые буфера. Надо просто выбрать такой их размер, чтобы они не переполнялись и вовремя их сбрасывать или извлекать оттуда входящие данные. По мере появления флагов в суперлупе вызывается соответствующий обработчик. Рекомендую посмотреть как в CodeVision AVR программируются кольцевые буфера (на С). Их автоматом создает Wizard. Очень познавательно ;)