| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| четене на клавиатурата на PC http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=691 |
Страница 1 от 2 |
| Автор: | Nikola Kirov [ Пет Май 27, 2005 3:39 pm ] |
| Заглавие: | четене на клавиатурата на PC |
Правя една програмка дето работи в real time приоритет и ми се налага да чета клавиатурата директно. Но не мога да изровя как става това. Не ми се е налагало да правя такова нещо досега,имах го описано в една книжка от досовско време ама не мога да я изровя сега. Някои може ли да помогне с инфо и акъл? |
|
| Автор: | ДедоБоре [ Пет Май 27, 2005 3:49 pm ] |
| Заглавие: | |
я по-подробно... програмата на микроконтролер ли върви или на компютър ако е на последното с каква ОС ако на първото... въпросите са повече |
|
| Автор: | Nikola Kirov [ Пет Май 27, 2005 4:24 pm ] |
| Заглавие: | |
На PC. Pod XP но не ми е проблем да пипам по портовете директно. Не мога да използвам прекъсванията. |
|
| Автор: | Реконструктор [ Пет Май 27, 2005 4:29 pm ] |
| Заглавие: | |
Ама защо ти е необходимо това? Да четеш директно? |
|
| Автор: | Nikola Kirov [ Пет Май 27, 2005 4:51 pm ] |
| Заглавие: | |
Програмата постоянно работи с принтерския порт. Прави real time емулация на едно устроиство. Но ми трябва и да приема вход от клавиятурата. Итересува ме програмата да може да проверява клавиатурата за натиснат бутон и да го опознава кои е. |
|
| Автор: | ¶ [ Пет Май 27, 2005 4:53 pm ] |
| Заглавие: | |
Ще ти свърши ли работа следното: със SetWindowsHookEx() се закачваш към драйвера на клавиатурата, пишеш си собствена __export KeyboardProc( int code, WPARAM wParam, LPARAM lParam ) , която ще се вика всеки път когато се натисне който и да е клавиш на клавиатурата, за да не блокираш работата на драйвера на клавиатурата от твоята KeyboardProc викаш CallNextHookEx(). По този начин работи FlexТъп. Ако не бъзикаш кодови таблици като FlexТъп няма да имаш проблеми. В една такава служебна програмка, записвам асинхронно във файл, какво прави потребителя с клавиатурата. Ако ти върши работа, ще ти пратя кода на C-пляс-пляс |
|
| Автор: | Nikola Kirov [ Пет Май 27, 2005 4:57 pm ] |
| Заглавие: | |
Проблема е че програмата е с реал тиме приоритет ,нищо освен нея не работи в windows. Няма прекъсвания. Затова трябва да работя директно с хардуера. Все едно под дос но без да ползвам прекъсвания. |
|
| Автор: | ¶ [ Пет Май 27, 2005 5:10 pm ] |
| Заглавие: | |
Разбирам, с една дума, блокираш Windows до една нишка, от която да четеш клавиатурата и да бъзикаш паралелния порт. Не знам обаче как ще правиш времезакъснения, защото по този начин блокираш и системните таймери на Windows. Трябва и там да работиш директно с хардуера. В този случай е най-удачно да използваш поне прекъсване на BIOS за четене на клавиатурата. Иначе портовете бяха 0x64 & 0x60, обаче вече не помня, кое за какво беше. Виж в Linux какво правят: http://www.faqs.org/docs/kernel/x1206.html |
|
| Автор: | Nikola Kirov [ Пет Май 27, 2005 5:18 pm ] |
| Заглавие: | |
Времезакъсненията не са особенно капризни в моя случаи. Тъй като процесора е много бърз а логиката на работа е проста игнорирам времето за работа на процесора и броя обръщенията към порта които правя и това ползвам за таймер. А там в линукс не разбрах точно що правят но си ползват прекъсване. А някъде си стои тихо и мирно описание как точно работи клавиатурата нещо от времето на доса ама точно сега като ми трябва бързо, няма. |
|
| Автор: | ¶ [ Пет Май 27, 2005 5:21 pm ] |
| Заглавие: | |
Съжалявам, обаче разкарах всичко от фирмения си компютър, иначе имах в електронен вид такава документация. Утре, като изтрезнея от срещата на випуска, ще ти я изпратя |
|
| Автор: | Реконструктор [ Пет Май 27, 2005 5:54 pm ] |
| Заглавие: | |
Начи прозорците не са риъл тайм ОС, бъди сигурен. Иначе пробвай GetAsyncKeyState() - би следвало да ти свърши работа. |
|
| Автор: | ДедоБоре [ Пет Май 27, 2005 7:21 pm ] |
| Заглавие: | |
много на бързо погледнах букмарките: http://www.ctips.com/ps2.html http://www.computer-engineering.org/ps2keyboard/ нещо такова ти трябва, порови се малко утре мога да ти изровя някои сорс, но ниама да е за прозорци |
|
| Автор: | Predator_MF [ Съб Май 28, 2005 1:54 pm ] |
| Заглавие: | |
Аз правих експерименти преди време с една клавиатура, но съм загърбил сорса някъде... Иначе в нета поне 1000 резултата ще намериш... Протокола е доста подобен на I2C. Правих си някаква тестова програмка да науча LCD-тата. Добро обяснение можещ да намериш тук: http://www.electronic-engineering.ch/mi ... _v1xx.html |
|
| Автор: | Nikola Kirov [ Съб Май 28, 2005 2:05 pm ] |
| Заглавие: | |
Де да беше за някакъв малък процесор досега да съм го измислил 2 пъти ама е за PC. Там съм му изпуснал началото на нещата и ми е доста по трудно. Пък и чичко windows като е намесен,ми става кошмарно. |
|
| Автор: | Cvetanov [ Съб Май 28, 2005 3:08 pm ] |
| Заглавие: | |
в "Млад конструктор" Брой 4/ 2000 имаше статия "PC-клавиатурата и течнокристалният дисплей" там на около страница е описан протокола на клавиатурата. спомням си че имаше клавиши със особена последователност (май беше PrtScr). ако представлява интерес пиши ми на кю-то и утре ще я сканирам и кача или пък ще снимам статията стига да се получи добре. |
|
| Страница 1 от 2 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|