Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
как опросить кнопку ? красиво чтобы.
Отправлено
DASM
30 июля 2009, г. 11:32
Составить ответ
|
Вернуться на конференцию.
Ответы
Вот так можно опросить пин(+)
-
Quasy
(30.07.2009, 14:28:1
192.168.0.223,80.243.9.34
, 727 байт)
это неспортивно
-
DASM
(30.07.2009, 15:08:54
89.163.14.219
,
пустое
)
Компиляция дифайна в одну инструкцию sbic неспортивна? Да это Кубок УЕФА практически :)
-
Quasy
(30.07.2009, 15:13:20
192.168.0.223,80.243.9.34
,
пустое
)
Не надо мешать людям развлекаться. Вон на полстраницы наворковали, голуби. кпд->0
-
VasilyS
(30.07.2009, 20:18:52
80.92.96.25
,
пустое
)
нефига не ноль. Более менеее похожее на нормальный опрос написал. По идее кнопку теперь можно хоть удаленную по Ethernet поставить. А вы с вашим sbic завязаны на железки. Таких не берут в тайконавты !
-
DASM
(30.07.2009, 20:38:41
95.54.8.224
,
пустое
)
Не знаю насчет sbic, но смешно. Ты спросил как опросить кнопку. Тебе показали как Опросить Кнопку. Нет бля, хуцпа не позволяет просто сказать сенк ю - тебе уже следующий уровень абстрауции подавай. Ламер ты, ипиомать. И ламером помреж.
-
VasilyS
(30.07.2009, 21:04:22
80.92.96.25
,
пустое
)
Следующий принципиальный вопрос. Достаточно обрабатывать нажатия кнопок строго последовательтно, или нужна параллельность обработки?
-
Oldring
(30.07.2009, 12:24:59
83.237.164.178
,
пустое
)
по барабану вобщем то. Паралельность не нужна
-
DASM
(30.07.2009, 12:26:2
89.163.14.219
,
пустое
)
Ну то есть из диспетчера клавиатуры коллбэки вызываются строго последовательно.
-
Oldring
(30.07.2009, 12:34:19
83.237.164.178
, 608 байт)
часть из этого надо. В частности отследить одновременные нажатия и вызывать (передавать сообщение) уже совсем в другое место. Блин, если б не мега64 - Линукс с KDE поставил бы и не парился =(
-
DASM
(30.07.2009, 12:46:46
89.163.14.219
,
пустое
)
Мега 64? У Спектрума было 16 килобайт ROM - и все были довольны :)
-
Oldring
(30.07.2009, 12:55:0
83.237.164.178
,
пустое
)
ну я ж тока учусь... к тому же на нее на плюсах мало кто писал.
-
DASM
(30.07.2009, 12:58:9
89.163.14.219
,
пустое
)
Ага. И даже компилятор С воспринимался как экзотическая игрушка.
-
Oldring
(30.07.2009, 12:59:3
83.237.164.178
,
пустое
)
В общем, не с той стороны идешь. Идти нужно от UI системы. Как именно в каких ситуациях система должна реагировать. Из этого станет ясна логика твоего диспетчера и дальше его декомпозиция.
-
Oldring
(30.07.2009, 13:04:58
83.237.164.178
,
пустое
)
и все же, что делать с такой гадостью как PINE PINB ? Окромя условных выборов по числовому ID ничего в голову не лезет - но это неудобно
-
DASM
(30.07.2009, 13:09:16
89.163.14.219
,
пустое
)
(+)
-
Oldring
(30.07.2009, 13:18:10
83.237.164.178
, 748 байт)
ламерной вопрос еще (+)
-
DASM
(30.07.2009, 13:24:24
89.163.14.219
, 575 байт)
typedef bool (Keyboard::*pGetPin) (char pinnum);
-
Oldring
(30.07.2009, 13:28:9
83.237.164.178
, 202 байт)
а потрахатца ? (+)
-
DASM
(30.07.2009, 13:38:14
89.163.14.219
, 189 байт)
У тебя сколько портов? Ну и сделай по ним свитч. Или лучше таблицу по числу портов, в которой и обрабатывай дребезг.
-
Oldring
(30.07.2009, 13:42:40
83.237.164.178
,
пустое
)
типа битовой маски ?
-
DASM
(30.07.2009, 13:57:18
89.163.14.219
, 168 байт)
Да можно и так.
-
Oldring
(30.07.2009, 14:02:41
83.237.164.178
, 336 байт)
мне хотелось бы структурку на каждую кнопку, там еще автоповторы всякие считать или еще чего вздумается...
-
DASM
(30.07.2009, 14:04:17
89.163.14.219
,
пустое
)
Структуру на каждую кнопочку - ну и навесь сверху если очень хочется.
-
Oldring
(30.07.2009, 14:10:14
83.237.164.178
,
пустое
)
Только кнопочки должны быть абстрактными, чтобы на другой порт легко переносились.
-
Oldring
(30.07.2009, 14:11:0
83.237.164.178
,
пустое
)
енто как ?
-
DASM
(30.07.2009, 14:12:29
89.163.14.219
,
пустое
)
ОтвДолжны быть абстрактные идентификаторы абстрактных кнопок, и некая более или мене навороченная процедура трансляции.
-
Oldring
(30.07.2009, 14:13:53
83.237.164.178
,
пустое
)
так что значит абстрактный идентификатор то ?
-
DASM
(30.07.2009, 14:18:16
89.163.14.219
,
пустое
)
Да что угодно что позволяет легко идентифицировать авбстрактную кнопку в программе. Энум. Целочисленная константа. Константа иного типа.
-
Oldring
(30.07.2009, 14:21:12
83.237.164.178
, 152 байт)
а, ну это понятно.... enum и был , правда по чайниковости думал что sizeof (enum) равен кол-ву элементов в нем =))))))))))))
-
DASM
(30.07.2009, 14:25:9
89.163.14.219
,
пустое
)
а вот такой вопрос.. нваял следущее (коряво наверное ?) (+)
-
DASM
(30.07.2009, 14:29:4
89.163.14.219
, 1025 байт)
Да и номера портов лучше как-то обозвать.
-
Oldring
(30.07.2009, 14:39:23
83.237.164.178
,
пустое
)
Ну так сделай глобальный энум.
-
Oldring
(30.07.2009, 14:38:6
83.237.164.178
,
пустое
)
ясно... а вот такой вопрос - как мне вообще кол-во кнопок узнать ?
-
DASM
(30.07.2009, 14:44:31
89.163.14.219
, 1157 байт)
Да, временные переменные лучше размещать в конце структуры, тогда их не нужно инициализировать.
-
Oldring
(30.07.2009, 15:30:40
83.237.164.178
, 99 байт)
Спросить у механика :)
-
Oldring
(30.07.2009, 14:52:30
83.237.164.178
, 179 байт)
А Visual Studio кстати Keyboard::keys скушал и выдал вразумительное значение
-
DASM
(30.07.2009, 14:57:11
89.163.14.219
,
пустое
)
о как надо-то =( Keyboard::KEY_INFO Keyboard::keys[] = { :-( (+)
-
DASM
(30.07.2009, 15:01:32
89.163.14.219
, 106 байт)
Смотря внутри какого кода.
-
Oldring
(30.07.2009, 15:04:49
83.237.164.178
, 140 байт)
короче спасибо Ж-) Прога стала абсолютно непонятной, чего и следовало получить =) Но зато всего 3 кБайта кода и 1 кБайт ОЗУ - а уже кнопки умеет опрашивать и светодиоды зажигать !!!
-
DASM
(30.07.2009, 15:07:55
89.163.14.219
,
пустое
)
На самом деле если просто keys тут не скушал - это какая-то лажа.
-
Oldring
(30.07.2009, 15:00:48
83.237.164.178
,
пустое
)
ну там вернее sizeof(keys)/sizeof(keys[0]) но не суть - не нравится ему это дело =(
-
DASM
(30.07.2009, 14:45:40
89.163.14.219
,
пустое
)
типо так не канает ? [>]
-
MegaJohn
(30.07.2009, 13:59:41
81.222.85.88
,
пустое
,
ссылка
)
о, все просто оказалось...typedef bool (Keyboard::*pGetPin) (char pinnum);
-
DASM
(30.07.2009, 13:25:37
89.163.14.219
,
пустое
)
Хм... Требования какие?
-
Oldring
(30.07.2009, 12:01:48
83.237.164.178
, 646 байт)
очередь это будет следущий уровень, с приоритетами, диспетчерами и тп. Пока что надо опросить массив кнопок, а далее непонятно. Толи назначать callback каждой кнопке, то ли гнать месаджи по всем возможным получателям, пока кто-то не поглотит мессадж
-
DASM
(30.07.2009, 12:04:17
89.163.14.219
,
пустое
)
Получатели что, разные? Интерфейс разбит на независимо управляемые группы?
-
Oldring
(30.07.2009, 12:08:0
83.237.164.178
,
пустое
)
а фиг еще знает... обработчик явно не один будет - иначе мне светит большой switch
-
DASM
(30.07.2009, 12:10:40
89.163.14.219
,
пустое
)
Ну так я у тебя и спрашиваю: "требования какие"? "Требования" - это когда совершенно ясно не только, что нужно, но и совершенно ясно, что не нужно. Нельзя объять необъятное.
-
Oldring
(30.07.2009, 12:12:45
83.237.164.178
,
пустое
)
есть кнопки. Есть меню. Нажатие кнопок приводит к некоторым изменениям (или не приводит) в выбранных (и не только выбранных пунктах меню). Часть кнопок к меню не относится вообще.
-
DASM
(30.07.2009, 12:14:44
89.163.14.219
,
пустое
)
Есть кнопки. Есть меню. Вещи на самом деле совершенно не связанные и должны быть сильно отделены в программе.
-
Oldring
(30.07.2009, 12:20:30
83.237.164.178
,
пустое
)
да это понятно вполне.
-
DASM
(30.07.2009, 12:21:11
89.163.14.219
,
пустое
)
+
-
DASM
(30.07.2009, 12:06:49
89.163.14.219
, 834 байт)
Это продукт микрооптимизации.
-
Oldring
(30.07.2009, 12:10:16
83.237.164.178
,
пустое
)
хде продукт ? Как красиво сделать то ? map из STL ? Да все равно макрос тута не затолкнешь
-
DASM
(30.07.2009, 12:12:32
89.163.14.219
,
пустое
)
Ну посмотри на структуру этого макроса.
-
Oldring
(30.07.2009, 12:18:53
83.237.164.178
, 693 байт)
аля типо так ? [>]
-
MegaJohn
(30.07.2009, 12:08:59
81.222.85.88
,
пустое
,
ссылка
)
кошмар какой
-
DASM
(30.07.2009, 12:13:21
89.163.14.219
,
пустое
)
Предлагаю распознаванием голса. Сработка на характерные фразы типа ''Бл#ть, да чтоб тебя...''. А кнопку можно на бумажке нарисовать.
-
F8
(30.07.2009, 11:58:38
94.178.174.206
,
пустое
)
А кнопку в чем-то подозревают? или свидетелем прохродит? :)
-
RED_DRAGON
(30.07.2009, 11:41:5
92.54.101.134
,
пустое
)
Мля #ое$дец.. Дожыть до лысины и не научиться программировать.. :-о Это не ты булаву программировал? :-о Хахлы, запрограммируйте нам булаву, а?
-
Dr.Alex
(30.07.2009, 11:38:22
95.188.77.235
,
пустое
)
научи. Чтобы кнопки могли быть всех видов, подключенными куда угодно и переставляемые на ходу, а также с возможностью залипания (совецкие кнопки). И на ++ пожалуйста. И чтобы вместо кнопки можно с легкость подставить оптический датчик с модуляцией 50 гц и все это отсеивалось. И даже если это вообще не кнопка.
-
DASM
(30.07.2009, 11:40:59
89.163.14.219
,
пустое
)
под такие задачи нужен суперкомпилятор, простыми методами не решаются
-
шпунтик_
(30.07.2009, 11:54:24
192.168.3.29,62.117.117.19
,
пустое
)
второй день бьюсь =( все как-то некрасиво выходит
-
DASM
(30.07.2009, 11:33:18
89.163.14.219
,
пустое
)
++ тут не обойдешься: Контроллер подает логическую 1 на вход ключика IRLML, тот в свою очередь подает напряжение на спираль в пороховом заряде, заряд поджигается, сталкивает мячик, мячик скатывается, разблокирует колесо водяной мельницы. Дальше просто: колесо взводит арбалет, арбалет выпускает стрелу, стрела летит над кнопкой. Если кнопка нажата, приводится в движение рычаг, втыкающий флэшку в роутер. Дальше дело техники - принять UDP пакет...
-
Гудвин
(30.07.2009, 11:45:14
78.138.168.169
,
пустое
)
UDP не надежен. Придется TCP/IP
-
DASM
(30.07.2009, 11:48:4
89.163.14.219
,
пустое
)
Ты же просил "красиво" :) Про надежность ничего в ТЗ не было.
-
Гудвин
(30.07.2009, 11:55:14
78.138.168.169
,
пустое
)
у меня так[+]
-
MegaJohn
(30.07.2009, 11:42:27
81.222.85.88
, 1009 байт)
ничо не понял
-
DASM
(30.07.2009, 11:47:33
89.163.14.219
,
пустое
)
а чё непонятного ? ++ как и хотел. void btn_func( void ) вызывается системным таймером с требуемым периодом, параметры при autorepeat_linear: 30 - количество системных тиков, после которых включить автоповтор, с периодом 10 системных тиков.
-
MegaJohn
(30.07.2009, 11:52:10
81.222.85.88
,
пустое
)
где тут ++ ? И как ты из прерывания получаешь доступ к нестатическим переменным класса ? Кстати хде он ?
-
DASM
(30.07.2009, 11:58:22
89.163.14.219
,
пустое
)
я показал пример использования и интерфейс работы с классом типа дребезжасщей кнопки. Или те реализацию подавай ?
-
MegaJohn
(30.07.2009, 12:03:37
81.222.85.88
,
пустое
)
вообщем, сделано как Oldring сказал: кнопка генерирует событие, или попросту вызывает назначеную функцию.
-
MegaJohn
(30.07.2009, 12:13:26
81.222.85.88
,
пустое
)
и что, я в этой функции должен расхлебывать куда сей мессадж отправить ?
-
DASM
(30.07.2009, 12:15:30
89.163.14.219
,
пустое
)
гы, ну просвети хоть тогда как в кетае это делают по умному. Ку да уж универсальней и проще вызвать пользовательскую функцию. Но готов выслушать предложения в целях обучения
-
MegaJohn
(30.07.2009, 12:24:8
81.222.85.88
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 47:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru