Отговори на тема  [ 29 мнения ]  Отиди на страница 1, 2  Следваща
четене на клавиатурата на PC 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение четене на клавиатурата на PC
Правя една програмка дето работи в real time приоритет и ми се налага да чета клавиатурата директно. Но не мога да изровя как става това. Не ми се е налагало да правя такова нещо досега,имах го описано в една книжка от досовско време ама не мога да я изровя сега.
Някои може ли да помогне с инфо и акъл?


Пет Май 27, 2005 3:39 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 11:31 pm
Мнения: 10088
Мнение 
я по-подробно...
програмата на микроконтролер ли върви или на компютър
ако е на последното с каква ОС
ако на първото... въпросите са повече
:roll:


Пет Май 27, 2005 3:49 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
На PC. Pod XP но не ми е проблем да пипам по портовете директно. Не мога да използвам прекъсванията.


Пет Май 27, 2005 4:24 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Ама защо ти е необходимо това? Да четеш директно?


Пет Май 27, 2005 4:29 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Програмата постоянно работи с принтерския порт. Прави real time емулация на едно устроиство. Но ми трябва и да приема вход от клавиятурата. Итересува ме програмата да може да проверява клавиатурата за натиснат бутон и да го опознава кои е.


Пет Май 27, 2005 4:51 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение 
Ще ти свърши ли работа следното: със SetWindowsHookEx() се закачваш към драйвера на клавиатурата, пишеш си собствена __export KeyboardProc( int code, WPARAM wParam, LPARAM lParam ) , която ще се вика всеки път когато се натисне който и да е клавиш на клавиатурата, за да не блокираш работата на драйвера на клавиатурата от твоята KeyboardProc викаш CallNextHookEx(). По този начин работи FlexТъп. Ако не бъзикаш кодови таблици като FlexТъп няма да имаш проблеми. В една такава служебна програмка, записвам асинхронно във файл, какво прави потребителя с клавиатурата. Ако ти върши работа, ще ти пратя кода на C-пляс-пляс


Пет Май 27, 2005 4:53 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Проблема е че програмата е с реал тиме приоритет ,нищо освен нея не работи в windows. Няма прекъсвания. Затова трябва да работя директно с хардуера. Все едно под дос но без да ползвам прекъсвания.


Пет Май 27, 2005 4:57 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение 
Разбирам, с една дума, блокираш Windows до една нишка, от която да четеш клавиатурата и да бъзикаш паралелния порт. Не знам обаче как ще правиш времезакъснения, защото по този начин блокираш и системните таймери на Windows. Трябва и там да работиш директно с хардуера. В този случай е най-удачно да използваш поне прекъсване на BIOS за четене на клавиатурата. Иначе портовете бяха 0x64 & 0x60, обаче вече не помня, кое за какво беше. Виж в Linux какво правят: http://www.faqs.org/docs/kernel/x1206.html


Пет Май 27, 2005 5:10 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Времезакъсненията не са особенно капризни в моя случаи. Тъй като процесора е много бърз а логиката на работа е проста игнорирам времето за работа на процесора и броя обръщенията към порта които правя и това ползвам за таймер.
А там в линукс не разбрах точно що правят но си ползват прекъсване.
А някъде си стои тихо и мирно описание как точно работи клавиатурата нещо от времето на доса ама точно сега като ми трябва бързо, няма.


Пет Май 27, 2005 5:18 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение 
Съжалявам, обаче разкарах всичко от фирмения си компютър, иначе имах в електронен вид такава документация. Утре, като изтрезнея от срещата на випуска, ще ти я изпратя :partyman:


Пет Май 27, 2005 5:21 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Начи прозорците не са риъл тайм ОС, бъди сигурен. :) Тоест, освен твойта програма може да се изпълняват и разни други нещица. Таймерите не ги блокира нищо - със сигурност.
Иначе пробвай GetAsyncKeyState() - би следвало да ти свърши работа.


Пет Май 27, 2005 5:54 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 11:31 pm
Мнения: 10088
Мнение 
много на бързо погледнах букмарките:
http://www.ctips.com/ps2.html
http://www.computer-engineering.org/ps2keyboard/
нещо такова ти трябва, порови се малко
утре мога да ти изровя някои сорс, но ниама да е за прозорци :wink:


Пет Май 27, 2005 7:21 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Окт 07, 2004 1:22 pm
Мнения: 1949
Местоположение: София
Мнение 
Аз правих експерименти преди време с една клавиатура, но съм загърбил сорса някъде... Иначе в нета поне 1000 резултата ще намериш... Протокола е доста подобен на I2C. Правих си някаква тестова програмка да науча LCD-тата. Добро обяснение можещ да намериш тук:
http://www.electronic-engineering.ch/mi ... _v1xx.html


Съб Май 28, 2005 1:54 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Де да беше за някакъв малък процесор досега да съм го измислил 2 пъти ама е за PC. Там съм му изпуснал началото на нещата и ми е доста по трудно. Пък и чичко windows като е намесен,ми става кошмарно.


Съб Май 28, 2005 2:05 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Пон Фев 21, 2005 2:14 pm
Мнения: 191
Местоположение: Varna
Мнение 
в "Млад конструктор" Брой 4/ 2000
имаше статия "PC-клавиатурата и течнокристалният дисплей"
там на около страница е описан протокола на клавиатурата. спомням си че имаше клавиши със особена последователност (май беше PrtScr). ако представлява интерес пиши ми на кю-то и утре ще я сканирам и кача или пък ще снимам статията стига да се получи добре.

_________________
Шанс едно на милион, обикновено се случва девет от десет пъти.


Съб Май 28, 2005 3:08 pm
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 29 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 4 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни