| Автор |
Съобщение |
|
Predator_MF
Ранг: Форумен бог
Регистриран на: Чет Окт 07, 2004 1:22 pm Мнения: 1949 Местоположение: София
|
Тоя линк ти го дадох, за да прочетеш за комуникация с PC AT клавиатура. Не вярвам комуникацията с LPT порта да те затрудни особено...Аз на твое място досега да съм сложил един PIC и да го пусна през COM порта... Не ми се занимава с LPT порта, а и предпочитам серийна връзка, ще спести доста време и нерви.
|
| Съб Май 28, 2005 3:59 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
И на мен ми е по лесно да сложа пик ама тая програмка ще е нужна и на други колеги и трябва да е само на PC. Засега прекъснах заниманието че си взеха касетофона с които експериментирах,но на някои ако му попадне подробно описание за работата с клавиатурата,ще ми е от полза.
|
| Съб Май 28, 2005 6:33 pm |
|
 |
|
Predator_MF
Ранг: Форумен бог
Регистриран на: Чет Окт 07, 2004 1:22 pm Мнения: 1949 Местоположение: София
|
E колко по подробно от това... И сигналите ги има на време-диаграма и информация за контролните думи има...че и сорс наготово, можеш само да си го обърнеш за Delphi или C++
PC AT Tech. Specification
|
| Съб Май 28, 2005 6:35 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Predator_MF как ти хрумна че искам да вържа клавиатура на принтерския порт.
Тя клавиатурата ми е закачена на PS/2 порта.
На принтерския порт правя емулация на джоистик и външен дисплей за един касетофон за кола. Ама на програмата ми трябва да има вход за бутоните на джойстика които емулирам. Ама работя като приоритета на моята програма е REALTIME_PRIORITY_CLASS. Почти нищо не работи от windows в тоя режим докато не върна управлението или не спра за момент моята нишка.
Реконстуктор, GetAsyncKeyState() работи коректно ако приоритета на програмата ми е HIGH_PRIORITY_CLASS или по нисък. Доколкото на практика изследвах реал тиме режима под XP,си е почти реал таим. Изключение се получава ако преди да пусна моята програма има пуснат някакъв процес с висок приоритет. WinAmp да плеива мп3 да кажем. Тогава чат пат и този процес получава съвсем за кратко управлението.
Успях да изровя все пак информация от един руски саит
http://sizov.boom.ru/keyb.htm
и след направените експерименти се оказа че на порт 60h мога да чета последния скан код които е изпратила клавиатурата. И таман да се зарадвам се оказа че и мишката ползва същия порт и като се мръдне там се получават всевъзможни стоиности.
Значи ми трябва някаква по подробна документация от по ново време.
Дано някой да е срещал такава че загубих цяла събота да се ровя за тая глупост вече.
|
| Съб Май 28, 2005 11:38 pm |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
Не можеш ли да му направиш някакво буфериране на този принтерски порт, тогава ще можеш да работиш с по-човешки ( за Windows) приоритет. Вторият начин е да го направиш под DOS.
|
| Съб Май 28, 2005 11:45 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Ами софтуерните варианти са за предпочитане пред храдуерните обикновенно. Пък дос  ............ То XP вече и дос няма.
|
| Нед Май 29, 2005 12:19 am |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
това трябва да ти свърши работа:
|
| Нед Май 29, 2005 1:14 am |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
За които му е интересно. Измислих решение най накрая.
записа на порт 0x64 се интерпретира като команда за клавиатурния контролер или там каквото се явява в което са включени клавиатурата и PS/2 порта които се водел AUX порт.
Двете команди които вършат работа
A7h Disable the AUX port by holding the CLK line low.
A8h Enable the AUX port by releasing the CLK line.
че забранявам работата на мишката и на порт 60 е само скан кода на натиснатия клавиш.
А от тоя pdf могат да се прочетат интересни неща.
|
| Нед Май 29, 2005 4:40 am |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
Добре де! Ами XP как те пуска да четеш и пишеш по портовате на клавиатурния контролер. Щото тая к*рва XP-то се държи като стара девица и не дава да пипнеш нищо повече от това, което позволява благоприличието. Специално входно-изходните адреси ги третира като най-интимна зона 
|
| Нед Май 29, 2005 11:58 am |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
http://www.internals.com/utilities_main.htm
WinIo ти дава възможност да си човъркаш по портовете и по паметта без проблем. И което е най учудващото може и под неадминистраторски акаунт 
|
| Нед Май 29, 2005 12:32 pm |
|
 |
|
Bezmozachen
Ранг: Популярен
Регистриран на: Сря Апр 27, 2005 2:47 pm Мнения: 349 Местоположение: Varna
|
Ами нормално след като работи като kernel-mode device driver. Мноо як LIB. Замислям се за много негови приложения и колко лоши  работи мога да направя с него. 
|
| Сря Юни 01, 2005 12:37 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Вече спретнах номер на един колега като му спретнах малка програмка дето му спира мишката и му я бутнах в start-up. W start-up-a щото ако я скрия по дълбоко щеше много нерви да му вкарам. Ама иам хора дето и заслужават 
|
| Сря Юни 01, 2005 3:45 pm |
|
 |
|
forest_gump
Ранг: Професионалист
Регистриран на: Сря Окт 13, 2004 11:24 pm Мнения: 500 Местоположение: Стара Загора
|
Аз си мисля че pirev ти дава хитро решение само малко да се доразвие, закачи един трийд от твоята програма за драйвера на клавиятурата , трийда да се вика или манипулира при натискане на клавиш, може вместо трийд да е call back функция , тя от своя страна ще дава инфо на останалата програма за натиснатите клавиши, така ще стане хитро и издържано, а относно real timing-а на XP-то можеш да го провериш дали чете клавиатурата като писнеш приложението си /в реал тайм/ и натиснеш CTRL+ALT+DEL или ALT+F4, ако ги изпълни значи чете въпреки всичко, ми то тогава ако чете няма да ти трябва да се закачаш на драйвера ... друг вариянт е да сканираш постоянно опашката за съобщения към приложението за натиснат клавиш /peekmessage(handle, i t.n)/ май беше на C, а на делфи е Application.ProcesMessages.
|
| Сря Юни 01, 2005 11:06 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
В реал тиме и контрол алт дел -а не работи. Докато не спре програмата ти и мишката даже не се мърда дори и без да я забранявам. Под 98 не е точно така там имаш мишка да мърда ама нищо не прави като щтракаш с нея. Не съм го изследвал под 98. Но каквото съм написал в такъв режим за XP работи и под 98 без проблем.
Повече няма да се занимавам с това имам готово работещо решение,няма смисъл да се човъркам повече.
|
| Чет Юни 02, 2005 3:01 am |
|
|