Пернетақта перне кодтары кестесін сканерлеу. Пемин цифрлық сигналдарын бағалау мәселесі бойынша. пернетақталар. Android жүйесінде QR кодтарын қалай сканерлеуге болады

Көпшілік заманауи пернетақталармультимедиялық пернелермен жабдықталған, ал тышқандарда үштен жетіге дейін түймелер бар. Жүргізушілер және барлық түрлері пайдалы бағдарламаларТек Windows. Linux жүйесі жүйені өзіңізге теңшеу мүмкіндігімен әйгілі екенін бәрі біледі, егер, әрине, сіз қайда және нені конфигурациялау керектігін білсеңіз. Біздің міндетіміз пингвинді қосымша нанмен жұмыс істеуге үйрету.

Негізгі сканерлеу кодын анықтау

Пернетақтада не бассаңыз да, X сервері және ядро, жалпы алғанда, онда не жазылғаны немесе сызылғаны маңызды емес. Оларды тек батырманың сканерлеу коды қызықтырады және алдымен X-тер ядро ​​кілтінің код кестесін оқиды, содан кейін кілт коды өзінің код кестесімен байланыстырылады. Егер кірсе Windows проблемаларыКонсольде мультимедиялық пернелер үшін мұндай параметр жоқ, сондықтан Linux жүйесінде консольдегі және X-терезесідегі түймелерді басу реакциясын бөлек конфигурациялау керек.

Кілт кодын білу үшін X серверіне кіретін xev утилитасын пайдалану керек. Оны іске қосқаннан кейін Event Tester терезесі пайда болады, енді берілген кодты есте сақтай отырып, пернелерді кезекпен басыңыз:

$xev
...
KeyRelease оқиғасы, серия 31, синтетикалық NO, 0x3e00001 терезесі,
түбір 0x67, subw 0x0, уақыт 279734676, (311,611), түбір:(1104,687),
күй 0x2000, кілт коды 236 (кілт 0x1008ff19, XF86Mail), бірдей_экран ИӘ,

XFilterEvent қайтарады: False
KeyRelease оқиғасы, серия 31, синтетикалық NO, терезе 0x2600001,
түбір 0x67, subw 0x0, уақыт 265877259, (883,334), түбір:(886,358),
күй 0x0, кілт коды 161 (keysym 0x0, NoSymbol), бірдей_экран ИӘ,
XLookupString 0 байт береді:
XFilterEvent қайтарады: False

Шығару өте үлкен болуы мүмкін, өйткені тінтуірдің әрбір қозғалысы Event Tester терезесінен өткен кезде бақыланады. Кілт KeyRelease блогымен сипатталады, атап айтқанда, кілт кодының мәні дәл біз білгіміз келетін сканерлеу коды болып табылады. Көрсетілген мысалда екі перне басылған. 236 кілт коды keysym ішінде көрсетілген X серверінің кілт кодына, сондай-ақ KDE-де әдепкі пошта клиентін іске қосатын XF86Mail әрекетіне сәйкес келеді. 161 кілт нөмірі үшін код пен әрекет анықталмаған.

Перне басылған болуы мүмкін, бірақ оның сканерлеу коды берілмейді. Бұл ядро ​​сәйкес мәнді таба алмайтынын білдіреді. dmesg шығысында келесі жол болуы керек:

Setkeycodes 0xec пайдаланыңыз «оны белгілі ету үшін.

Яғни, setkeycodes көмегімен кілт сканерлеу кодын өзіңіз орнату ұсынылады және кілт кодының мәнін таңдау өте қарапайым. Алынған санды ондық санға түрлендіріңіз (көптеген калькуляторлар мұны істей алады) және 128 қосыңыз. Бұл мысалда 0xec = 236, яғни 364 сканерлеу кодын аламыз. Егер күмәніңіз болса, пайдаланылған және пайдаланылмаған сканерлеу кодтарының тізімі болуы мүмкін. консольде немесе дампкейлерде getkeycodes қызметтік бағдарламасын іске қосу арқылы қаралады. Мысалы, егер шығыс «getkeycodes | grep<код клавиши>«ештеңе бермеді, сондықтан бұл кодты қауіпсіз пайдалануға болады.

Xmodmap үшін графикалық интерфейс болып табылатын XKeycaps утилитасы (www.jwz.org/xkeycaps) сканерлеу кодын анықтауға да көмектеседі.

xev бағдарламасы, әрине, консольде жұмыс істемейді. Ядро шығарған сканерлеу кодын білу үшін showkey немесе getkeycodes утилитасын пайдалану керек:

$шоу
пернетақта UNICODE режимінде болды
кез келген пернені басыңыз (бағдарлама соңғы рет басқаннан кейін 10 секундтан кейін аяқталады)...
0xe0 0x6c 0xe0 0xec

Алғашқы екі сан басылған пернеге, екіншісі - басу жоқтығына сәйкес келеді.

X-терезесінде сканерлеу кодын байланыстыруды орнату

Сонымен, қазір бізде сканерлеу кодтары бар, біз X серверіне осы пернені басқан кезде не істеу керектігін көрсетуіміз керек, яғни оған символдық атау беріңіз. Таңба атауларының тізімі XF86keysym.h тақырып файлында берілген. Әдепкі бойынша, X серверінің тақырып файлдары заманауи дистрибутивтерде орнатылмаған. Оны Ubuntu жүйесінде көру үшін x11proto-core-dev бумасын орнату керек, содан кейін бұл файл /usr/include/X11 каталогында орналасады. Немесе X.Org CVS серверіне хабарласуға болады. Қарап көрейік:

$ cat /usr/include/X11/XF86keysym.h
/*
* Кейбір «Интернет» пернетақталарында бар пернелер.
*/
#XF86XK_Күту режимін 0x1008FF10 анықтаңыз
#XF86XK_AudioLowerVolume 0x1008FF11 анықтау
#XF86XK_AudioRaiseVolume 0x1008FF13 анықтау
#XF86XK_AudioPlay 0x1008FF14 анықтаңыз
#XF86XK_AudioStop 0x1008FF15 анықтаңыз
#XF86XK_Mail 0x1008FF19 анықтаңыз

Соңғы жолды xev шығысымен салыстырсақ, мәндер 236 кілт коды бар кілтке сәйкес келетінін көреміз - keysym 0x1008ff19, XF86Mail (XK_ жұрнағы жоқ). Сіз барлық қол жетімді мәндердің тізімін таба аласыз, себебі олар /usr/share/X11/XKeysymDB ішінде қолданылуы керек.

Жеке макет жасаудың екі жолы бар: пернетақтаның сипаттамасын жасаңыз немесе Xmodmap пайдаланыңыз. Соңғы әдіс ең қарапайым, сондықтан біз бұл туралы әрі қарай сөйлесеміз. Пайдаланушының үй каталогында файлды жасаңыз.Xmodmap, оған біз қажетті мәндерді енгіземіз:

$ mcedit ~/. Xmodmap

кілт коды 161 XF86Калькулятор
кілт коды 174 XF86AudioLowerVolume
кілт коды 176 XF86AudioRaiseVolume
кілт коды 162 XF86AudioPause

Және тағы басқа, принцип, менің ойымша, түсінікті. Сонымен қатар, кілт кодын ондық және он алтылық түрінде енгізуге болады. Менің бақылауларым бойынша, көптеген кілттердің кодтары стандартталған. Сондықтан, егер сіз пернені бір рет басу жауабын орнатып, файлды басқа компьютерге жіберсеңіз, басқа пернетақтада қол қойылған пернені басу реакциясы ұқсас болуы мүмкін. GDM бар Gnome жұмыс үстелінің пайдаланушылары осы жолдардың барлығын /etc/X11/Xmodmap жалпы жүйелік файлға жаза алады.

Басқа жағдайларда, біз әлі де X серверіне жасалған файлды пайдалануды айтуымыз керек. Бұл әртүрлі дистрибутивтерде әртүрлі жүзеге асырылады, негізгі идея - пайдаланушы жүйеге кіргенде немесе X іске қосылғанда /usr/bin/xmodmap $HOME/.Xmodmap пәрменін іске қосу.Мұнда әркім өз қалауынша билейді. Форумдарда олар $HOME/.xsession файлын (кейбір дистрибутивтерде ол .Xsession деп аталуы мүмкін), .xprofile немесе /etc/X11/Xsession жүйесін пайдалануды ұсынады. Және бұл бәрі емес деп қорқамын ықтимал опциялар. Оның KUbuntu-да қалай жасалғанын көрейік:

$ sudo grep -iR xmodmap /т.б

Нәтижесінде біз келесі мазмұны бар өте қызықты /etc/X11/Xsession.d/80ubuntu-xmodmap файлын табамыз:

$ cat /etc/X11/Xsession.d/80ubuntu-xmodmap

/usr/bin/xmodmap /usr/share/apps/kxkb/ubuntu.xmodmap || рас

USRMODMAP="$HOME/.Xmodmap"

егер [ -x /usr/bin/xmodmap ]; содан кейін
егер [ -f "$USRMODMAP" ]; содан кейін
/usr/bin/xmodmap "$USRMODMAP" || рас
fi
fi

Яғни, ubuntu.xmodmap файлының мазмұны және ол бар болса, user.Xmodmap жүктеледі. Өңдегіште ubuntu.xmodmap ашқанда, кілт кодтары мен байланысты символдық атаулардың тізімін табасыз. Бұдан қорытынды жасауға болады: егер әзірлеуші ​​оның дистрибутиві мультимедиялық пернетақталарды қолдайтыны туралы хабарласа, жоғары ықтималдықпен сіз ұқсас файлды таба аласыз. Басқа дистрибутивтерде теңшелетін xmodmap файлдарын іске қосудың ұқсас жүйесі бар.

Енді пернелерге символдық атаулар тағайындалғандықтан, оларға қажетті әрекеттерді тағайындауға болады. KDE сияқты кейбір терезелеу орталары символдық атауларға негізделген әрекеттерді өңдей алады. Сонымен, XF86AudioPlay (QUESTION) көмегімен түймені басқан кезде әдепкі ойнатқыш ойнай бастайды. Қажетті комбинацияны орнату үшін «KDE басқару орталығы -> Аймақтық және қол жетімділік опциялары -> Пернетақта тіркесімдері» тармағына өтіңіз (KUbuntu жүйесінде «Жүйе параметрі -> Пернетақта және тінтуір» бөлімін қараңыз). Ұқсас мәзір элементі Gnome екеуінде де бар (сіз жай ғана gnome-keyboard-bindings деп атауға болады) және XFce. Сонымен қатар, Amarok, Konqueror, MPD сияқты кейбір бағдарламалар да пернелерді басуларды өңдей алады. Басқа орталарда онсыз
графикалық конфигурация құралдары конфигурация файлдарына қолмен араласуды қажет етеді. Мысалы, IceWM жүйесінде XF86AudioPlay символдық атауы бар пернені басқан кезде, XMMS ойнатқышы іске қосылады және қайта басылғанда ол кідіртіледі, жолды бірінші іске қосқаннан кейін пайда болатын ~/.icewm файлына қосу керек:

$ mcedit ~/.icewm

пернесі XF86AudioPlay xmms --ойнату-кідірту

Fluxbox-та ойнатқышты іске қосу желісі келесідей болады:

$ mcedit ~/.fluxbox/кілттер

Ешбір XF86AudioPlay:ExecCommand xmms --ойнату-кідірту

Әдетте конфигурацияларда мысалдар бар, сондықтан сіз қалған терезе менеджерлерін өзіңіз оңай анықтай аласыз деп ойлаймын.

Консольде реакцияны орнату

Консольде процедура сәл өзгеше. Естеріңізде болса, dmesg шығысы setkeycodes пәрменін пайдаланып кілт кодтарын тағайындауды ұсынады. Бірақ мұнда айырмашылықтар бар - консольде 128-ден артық негізгі командалар болуы мүмкін емес, 0-ден 127-ге дейінгі мәндерді таңдау керек:

$setkeycodes 0xec 118

Ағымдағы пернетақта орналасу файлында бос мәндерді көруге болады. Ubuntu және барлық Debian негізіндегі дистрибутивтерде бұл әдетте /etc/console-setup/boottime.kmap.gz болып табылады. Егер іске қосқаннан кейін пернелерде ақаулар болмаса, осы жолды іске қосу сценарийлерінің біріне қосыңыз, мысалы, /etc/init.d/rc.local ішінде.

Енді кілт пен орындалатын әрекет арасындағы сәйкестікті орнату ғана қалады. Мұнда X-ке қарағанда шығармашылық үшін көбірек орын бар. Кілттік карталарда(5) кілт кодын сәйкестендіру процедурасы келесідей:

(қарапайым | ) кілт коды кілт саны = кілттер

# 105 коды бар пернені басқан кезде консольді бір артқа ауыстырыңыз
кілт коды 105 = Decr_Console
# Басқан кезде консольді бір алға ауыстырады және 106 коды бар кілт
alt кілт коды 106 = Incr_Console

Бірақ айнымалылардағы пәрменді көрсету арқылы өзіңіздің опцияларыңызды жасай аласыз:

кілт коды 120 = F100
string F100 = "/sbin/shutdown -h now\n"

Басқаша айтқанда, 120 коды бар пернені басу F100 айнымалысында көрсетілген әрекетті орындайды; біздің жағдайда компьютер өшіру үшін орнатылған. F100 орнына, әрине, кез келген басқа атауды қолдануға болады.

Енді осының барлығын қайда жазу керектігі бірдей маңызды. Құжаттама және көптеген кеңестер ағымдағы консоль орналасу файлын (менің жағдайда, boottime.kmap.gz) пайдалануды ұсынады. Айтпақшы, бұл KUbuntu орнатқаннан кейін қол жетімді макеттерді сипаттайтын жалғыз файл; Басқа опцияларды көру үшін console-data бумасын орнату керек. Осыдан кейін /usr/share/keymaps/i386/ ішінде файлдары бар бірнеше ішкі каталогтарды таба аласыз. Бірақ басқа орналасуға ауысу қажет болса (Ubuntu және кейбір басқа дистрибутивтерде осы мақсат үшін /etc/default/console-setup немесе ~/.console-setup файлы пайдаланылады), барлық параметрлерді басқасына ауыстыру қажет болады. файл, бұл біршама
ыңғайсыз. Егер сіз осы қадамды жасауды шешсеңіз, бірінші орынға ештеңе жазбай, бар жазбаларды үлгі ретінде пайдаланыңыз және соңында бос жол қалдыруды ұмытпаңыз.

Ноутбук туралы аздап

Осы уақытқа дейін мен кілтті сканерлеу кодтары анықталмаған ноутбукты кездестірген жоқпын. Сондықтан мұндағы параметрлер жоғарыда сипатталғандардан еш айырмашылығы жоқ. Мен айтқым келетін бір техника бар. Мен күту режимін пайдалану өте ыңғайлы деп есептеймін, компьютерді қосқан кезде сіз бәрін өз орнында табасыз. Қазіргі дистрибутивтер, әдетте, оны қолдайды, бірақ орнату жалпы алғанда қарапайым - күту бумасын орнатып, конфигурация файлындағы қажетті параметрлерді қайта анықтаңыз. Жалғыз нәрсе - бұл режимге ауысу үшін әрқашан /usr/sbin/hibernate сценарийін іске қосу керек, бұл әрқашан қолайлы емес. Мен жай ғана ноутбуктың қақпағын жауып, оны қайта қосқым келеді
тамақ, бәрін өз орнында табыңыз.

Мұны /proc/acpi/event арқылы қол жетімді кез келген ACPI оқиғаларын басқаруға мүмкіндік беретін пайдаланушы интерфейсінің бір түрі болып табылатын acpid демоны арқылы орындау өте оңай. Бұл жағдайда acpid /etc/acpi/events/ каталогынан конфигурация файлдарының жинағын оқиды. Демоны бар бума дистрибутивке қосылмаған болса, оны репозиторийден орнатыңыз; Соңғы нұсқаны phobos.fs.tum.de/acpi веб-сайтынан алуға болады. Орнатқаннан кейін /etc/acpi/events каталогында екі файл жасау керек: қақпақ және қуат. Біріншісі қақпақты жабу реакциясын, екіншісі қуат түймесін басуды сипаттайды.

$ sudo mcedit /etc/acpi/events/lid

оқиға=түйме/қақпақ.*
action=/usr/sbin/hibernate

$ sudo mcedit /etc/acpi/events/power

оқиға=түйме/қуат.*
action=/sbin/shutdown -h қазір

Бұл біршама жеңілдетілген опциялар; KUbuntu-да сіз күрделі сценарийлерді таба аласыз. Осыдан кейін acpid демонын қайта іске қосу керек:

$ sudo /etc/init.d/acpid қайта іске қосу

Енді ноутбуктың қақпағын жапқан кезде жүйе қуат өшірілген кезде күту режиміне өтеді, ал қуат түймесін басқан кезде ол өшеді. Қарапайым және ыңғайлы.

Бағдарламаларды орнату

Конфигурация файлдарымен айналысуды ұнатпасаңыз, мен мультимедиялық пернелердің жұмысын конфигурациялауға көмектесетін бірнеше бағдарламаны ұсынамын. Мысалы, Sven бағдарламасының (sven.linux.kiev.ua) бастапқы мақсаты мультимедиялық пернетақтада қосымша пернелерді конфигурациялау болып табылады, бірақ 0.4 нұсқасынан бастап ол теру қателерін түзетіп, пернетақта орналасуын өзгерте алады. Оның үстіне, сізде кәдімгі пернетақта болса да, оның көмегімен оның орнына пернелер тіркесімін пайдалану арқылы мультимедиялық пернелерді эмуляциялауға болады. Сондай-ақ белгілі бір тінтуір түймелеріне әрекеттерді тағайындауға болады. Ол шамамен 10 000 орыс сөзін және 9 500 ағылшын сөзін түсінеді. Бағдарлама ауыспаса
өзі, содан кейін орналасуды арнайы тағайындалған пернені пайдаланып қолмен өзгертуге болады (әдепкі бойынша үзіліс). Бөлек перне (Scroll Lock) сөздердің регистрін өзгерте алады (жоғарғы, төменгі, бірінші әріп жоғарғы, қалғандары төмен). Пернетақта орналасуын ауыстыру индикаторы әрбір терезе үшін оның күйін есте сақтайды, сондықтан қолданбалар арасында жиі ауыссаңыз, енді орналасуды қосымша өзгерту қажет болмайды. Бағдарламаның керемет мүмкіндіктері бар, мен сізге оны қарап шығуға кеңес берер едім. Барлық параметрлер көмегімен жасалады графикалық бағдарлама, GTK+ кітапханаларында құрастырылған. Sven Linux жүйесінде сынақтан өтті, бірақ ол негізінен *BSD жүйелерінде жұмыс істеуі керек. Терезе менеджері пайдаланылады
мағынасы жоқ.

KeyTouch (keytouch.sf.net) мүмкіндіктері біршама қарапайым; бұл қызметтік бағдарлама тек мультимедиялық пернелерді орнату үшін пайдаланылады. Оның көмегімен әдепкі параметрлерден ерекшеленетін кез келген пернеге басқа әрекетті тағайындауға болады. Бағдарлама веб-сайтында кейбір дистрибутивтерге арналған бастапқы мәтіндер мен бумалардан басқа, көптеген танымал өндірушілердің мультимедиялық пернетақталарына арналған дайын параметрлерді таба аласыз.

Басқа қызықты шешім- xbindkeys (hocwp.free.fr/xbindkeys/xbindkeys.html) - кез келген пернетақта мен тінтуір түймешігіне кез келген пәрмендерді, соның ішінде қабық пәрмендерін тағайындауға мүмкіндік береді. Барлық параметрлер қарапайым және түсінікті пішімі бар конфигурация файлында жасалған.

Мүмкін сіздің телефоныңызда әдепкі бойынша орнатылған QR код сканері, оны бірінші QR кодын сканерлеу үшін оңай пайдалануға болады. Мұны істеу өте оңай. Тек біздің нұсқауларды орындаңыз.

1. Телефоныңыздағы QR кодын оқу құралын ашыңыз.

2. Құрылғыны смартфон экранында анық көрінетіндей етіп QR кодының үстінен ұстаңыз.

Егер смартфонды QR кодының үстінде дұрыс ұстасаңыз, келесі әрекеттер орындалады:

  • Телефон кодты автоматты түрде сканерлейді.
  • Кейбір қолданбаларда кодты сканерлеу үшін смартфонда суретке түсіру сияқты түймені емес, суретті басу керек.

3. Қажет болса, көрсетілген түймені басыңыз.

Тамаша! Смартфоныңыз кодты оқиды және берілген сілтеме бойынша жүреді, бұл әрқашан бірден бола бермейді. Көптеген құрылғыларда бұл бірнеше секундқа созылуы мүмкін.

Сіз барлық жерде QR кодтарын көре бастайсыз. Олар оқытуға, ақпараттандыруға, түсіндіруге және басқа да көптеген нәрселерге пайдаланылады. Оларды тауып, сканерлеңіз! QR кодтары сізге көп уақыт пен күш жұмсайды.

Android жүйесінде QR кодтарын қалай сканерлеуге болады

Енді Android жүйесінде QR кодын сканерлеу қолданбасын қалай пайдалану керектігін айтамыз.

Қысқаша:
1. Ашық Ойын дүкені .
2. Іздеу QR кодын оқу құралы .
3. таңдаңыз QR кодын оқу құралы(Сканерлеу арқылы).
4. « Орнату».
5. Бағдарламаны ашыңыз QR кодын оқу.
7. Камераны QR кодына бағыттаңыз.
8. « түймесін басыңыз. ЖАРАЙДЫ МА».

1-қадам. Android жүйесінде Play Store дүкенін ашыңыз.Бұл қолданбадағы немесе негізгі экрандағы белгіше.

2-қадам. Іздеу жүйесіне QR кодын оқу құралын енгізіңіз. QR кодын оқуға арналған қолданбалар тізімі пайда болады.

  • Бұл мақалада QR кодын оқу құралын пайдалану жолы түсіндіріледі, бірақ сіз өзіңізге ұнайтын қолданбаны таңдай аласыз. Жүктеп алмас бұрын қолданба туралы оқып шығыңыз.
  • Қадамдар барлық QR кодын оқу қолданбалары үшін бірдей болуы керек.

3-қадам.Scan әзірлеген QR кодын оқу құралын басыңыз.Әзірлеушінің аты әрбір қолданбаның астында берілген. Сканерлеу арқылы жасалған қолданбаны табу үшін төмен айналдыру қажет болуы мүмкін.

4-қадам.Орнату түймесін басыңыз. Android құрылғыңыздағы ақпаратқа қол жеткізуге рұқсат беруіңізді сұрайтын қалқымалы терезе пайда болады.

5-қадам.Қабылдау түймесін басыңыз. QR Code Reader енді Android құрылғыңызға орнатылады.

    • Қолданбаны жүктеп алған кезде «Орнату» түймесі «Ашу» күйіне өзгереді және қолданбада жаңа белгіше пайда болады.

6-қадам.QR кодын оқу құралын ашыңыз.Бұл қолданбадағы QR кодына ұқсайтын белгіше. Бұл стандартты камера экранына ұқсайтын қолданбаны ашады.

7-қадамQR кодын камера жақтауында туралаңыз.Суретке түсіру әдісі сияқты, бірақ кез келген түймені басу қажет емес. Штрих-код сканері кодты оқығанда, кодта URL мекенжайы бар қалқымалы терезе пайда болады.


8-қадамВеб-сайтты ашу үшін «OK» түймесін басыңыз.Бұл әдепкі веб-шолғышты іске қосады және QR кодындағы URL мекенжайына өтеді.

Қарапайым болып көрінетін, бірақ кейде зерттеушіге қиындық тудыратын келесі типтік компьютер құрылғысы - пернетақта.

Жалпы, құрылғы қарапайым. Әсіресе PS/2 портына қосылған ескірген үлгілер емес. Көптеген эксперименттік деректер көрсеткендей, пернетақтаны басқару чипі пернелерді басуларды сканерлейді және оларды сериялық кодпен портқа жібереді. Бұл берілістің тактілік жиілігі 6,3 немесе 10 кГц көп (көп жағдайда) болып табылады. Автор соңғы жылдары бірнеше көшірмеге тап болғанымен, олардың тактілік жиілігі 20 кГц шамасында болды.

Кез келген пернені басып ұстап тұрғанда барлық пернетақталар «ad infinitum» перне кодын жіберуді қайталау үшін (үзілістен кейін) басталады. Қалыпты режимде бұл әдетте контроллер буферінің толып кетуіне және бірнеше секунд ішінде ақаулыққа әкеледі. Пайда болады дыбыстық сигнал«динамика» жүйесі – «сықырлау». Сынақ режимінің мәні (ең жалпы қабылданған) пернені басқан кезде таңдалған таңбаның «пернетақта» кабелі арқылы шексіз берілуін қамтамасыз етуге мүмкіндік беретін буфердің толып кетуі пәрменін блоктау болып табылады.

Әдеттегідей, нәтижені кейінгі дұрыс есептеу үшін кодтық пакетте импульстердің тұрақты кезектесуін жасау қажет. Пернетақта кодтары үшін осындай екі комбинация болуы мүмкін:

10101010 (55) пернесі “+; = "

Стандартты кестелерде 01010101 (AA) – қолданылмайды

Сканерлеу кодтарының жалпы кестесі 14.1 кестеде келтірілген

14.1-кесте- Пернетақтаны сканерлеу кодтары

Кілт

Кодты сканерлеу

Кілт

Кодты сканерлеу

Кілт

Кодты сканерлеу

Кілт

Кодты сканерлеу

Осылайша, сынақ режимін іске асырған кезде және, мысалы, «+» пернесіне салмақ қойғанда, пернетақта кабелінде импульстік пакеттердің шексіз тізбегі болады. Бұл жағдайда пакеттегі импульстің қайталану кезеңі (яғни тактілік жиілігі) 6,10 немесе 20 кГц-ке тең болады, ал пакеттің қайталану жиілігі әлдеқайда төмен болады. Деректер пішімі 14.1-суретте көрсетілген

Пернетақта кабелінде мәліметтермен алмасу үшін екі жол бар - KBData және KBSync. Сканерлеу кодтарын жіберген кезде пернетақта KBData жолында деректердің келесі битін орнатады және KBSync желісіндегі сигналды «1»-ден «0»-ге ауыстыру арқылы жіберуді растайды.

Контроллер KBSync желісінде төмен деңгейлі деректерді жіберуге/қабылдауға дайын еместігі туралы сигнал бере алады. Қалған уақытта, жіберуге деректер болмаған кезде, екі жолдың да сигнал деңгейі жоғары болады.



Жоғарыда айтылғандай, пернетақта кабелінің PEMIN спектрінде 1/76,04·10 -6 = 13,15 кГц тактілік жиілігі бар жиілік құрамдастарын күту керек. Оның үстіне әр түрлі (бірақ бірнеше!) кезеңдері бар екі фазалық ауыспалы сигналдардың болуына байланысты жұп және тақ жиілік құрамдастары амплитудасы бойынша әр түрлі болады.

Күтуге болатындай, синхрондалған деректер желісінің PEMIN мәні, негізінен, ақпаратсыз. Бірақ бір PEMIN-ді екіншісінен ажырату оңай емес. Бір ғана кабель бар, сигналдар синхронды...

Іс жүзінде жалғыз жол– бумадағы ең аз логикалық «1с» саны бар сканерлеу кодын таңдаңыз. Бұл «F3» және F9 пернелері (он алтылық кодта 03 және 01). «00» коды пайдаланылмайды.

«F3» сканерлеу кодының осциллограммасы төменде көрсетілген.


Қатаң «энергия тұрғысынан», егер сіз PEMIN барлық жиілік құрамдастарын «=» коды және, мысалы, «F9» коды арқылы өлшесеңіз, онда жиілік құрамдастарының ӘРБІРІ бойынша қабылдағыш көрсеткіштерінің айырмашылығы шынайы ақпарат болып табылады. ПЕМИН энергиясының бөлігі. Оның үстіне, бұл максималды максимум. Егер оны «автоматты машинаға» сеніп тапсыру мүмкін болмаса, жұмыс өте күрделі және жалықтырады. Мұндай үшін PEMIN компоненттерінің өзі төмен жиіліктероңай анықталмайды. Сонымен қатар айырмашылықтарды «ұстау» үшін ...



SI тәжірибесінде, жағдайлардың басым көпшілігінде олар жай ғана PEMIN деңгейлерін өлшейді (ештеңені алып тастамай) және қауіпсіздік параметрін есептейді. Бұл «резервпен» мүмкін, бірақ маман нақты жағдайды білуге ​​міндетті.

Шолудың соңында - AT және PS/2 пернетақта қосқыштарының «pinout».


Ресивердегі «суреттер» соншалықты «классикалық» емес сияқты, дегенмен, ол өте танымал. Міне мысалдар



Спектр жиіліктің төмендеуімен компоненттер амплитудасының ұлғаюын анық көрсетеді.

Бұл жиілік аймағында (ондаған кГц және одан жоғары) «клав» өлшемдерінің ерекшеліктері де бар. Мәселе мынада, пернетақта өзінің әдеттегі орналасуында алыс емес жерде орналасқан жүйелік блок. Ал SB жоғарғы жағында орналасқан импульстік блокқуат көзі «E» және «H» компоненттері үшін де PEMIN ең қуатты көзі болып табылады. Осындай театр прожекторының «жарығында» пернетақтаның күңгірт «жарығын» көру - ерекше өнер! Сондықтан мен келесі техниканы ұсынамын. Пернетақтаны SB құрылғысынан мүмкіндігінше алыс жылжытыңыз. Жақсырақ - PS/2 кеңейткішінде. Шамамен 2-2,5 метр.

Антеннаны спутниктен мүмкіндігінше аз бағытта болатындай етіп орналастырыңыз (қабылдағыштың өткізу қабілеті 10 кГц-тен жоғары сигнал үздіксіз спектр болып табылады). Ал бағдарланған, стационарлық антеннаның жанында пернетақта мен оның кабелін бұра бастаңыз (керісінше емес!). Сонда пернетақтадан PEMIN сигналдарын анықтау және анализатор экранында PEMIN компоненттерін өз көзіңізбен көру мүмкіндігіңіз әлдеқайда жоғары болады.

Жоғарыда айтылғандардың барлығы PS/2 интерфейсі бар пернетақтаға қатысты. Бірақ қазір оларды USB интерфейсі бар пернетақталар жаппай ауыстырады.

Жалпы алғанда, бұл интерфейс принтерлермен бірге егжей-тегжейлі талқыланды. Дегенмен, пернетақтаға қатысты кейбір «мақсатты белгілеу» беру пайдалы болар еді.

Пернетақта қатаң төмен жылдамдықпен (яғни USB 1.0 интерфейсі арқылы) қосылғанын ескере отырып, USB интерфейсіне арналған пакеттердің құрылысын еске түсірейік.

Төмен жылдамдықты құрылғылар үшін ең үлкен DATA пайдалы жүктеме өлшемі 8 байт. Яғни, пернетақтаны сканерлеу коды дәл осыны талап етеді.

USB желісіндегі сигналды (дәлірек айтқанда деректерді) көру оңай жұмыс емес болып шықты. Дегенмен, бұл GENIUS KB-06XE типтік USB «пернетақтасының» кабелінде, атап айтқанда «деректер +» жолында (сым) нақты анықталған нәрсе (14.10-сурет)


Бұл екі осциллограмма бір-бірін анықталмаған (хаотикалық) кезеңділікпен өзгертеді және сигналдардың «суреттері» пернетақта пернесінің басылғанына (немесе ешбірі басылмауына) байланысты емес. Пакеттің (рамканың) «айнымалы» бөлігіндегі басқа өзгерістерді анықтау мүмкін болмады.

Бұл пакеттердің жиілігі қатаң тұрақтандырылған (14.11-сурет), ал әрқайсысының ұзақтығы (осциллограммаларда көрінеді) шамамен 34 ± 1 мкс.


Пакеттер әр 4 мс сайын жүреді. Дегенмен, әрбір пакеттің соңы үнемі «дірілдеп», классикалық «діріл» байқалатынын атап өткен жөн. Сондықтан спектрлік кескін біршама бұлыңғыр және жеткілікті ұзақ орташалау кезінде ғана анық болады.


Сонымен қатар, әртүрлі импульстердің қайталану кезеңдеріне және олардың әртүрлі ұзақтығына байланысты спектр үздіксіз және сызықтық спектрдің кейбір қоспасы сипатына ие екенін ескеру қажет. Осыған қарамастан, пакеттердің шексіз тізбегі үшін табиғи және оның орташа пакет ұзақтығының «лобтарында» көп болатын спектрдің лобтық сипаты өте анық сақталған. Функцияның тек «нөлдері» дірілмен және жеке импульстердің айнымалы емес қайталану кезеңімен тегістеледі. Дегенмен, суреттің өзі өте тән. Жіңішке жиілік рұқсатымен спектр пакеттердің қайталану жиілігімен (250 Гц) анықталатын «сызықтарға» айнала бастайды (14.13-сурет) Осылайша, осциллограммаларды қарапайым қарау кезінде және сканерлеу кодының шынайы берілуімен синхрондалмаған, кадрдың (пакеттің) бөлімдерін анықтау және визуализациялау , деректерді тасымалдауға жауапты, сәтсіз аяқталды. Дегенмен, пернетақта кабелінің PEMIN әлі де бұл және басқа емес болады деп айтуға болады. Оны қандай жиіліктерден іздеу керек екені түсінікті, ол үздіксіз сипатта болатыны анық (кез келген жағдайда қабылдағыш жиілігі 0,3 кГц-тен жоғары рұқсатпен). Есептеулер кезінде сағат мәні ретінде қандай мәнді ауыстыру керектігі түсінікті (тәжірибедегі пакеттегі импульстердің ең аз кезеңі 1,322 мкс болды). Мұны кез келген СИ-де кем дегенде 200 МГц өткізу қабілеті бар осциллографпен өлшеу тривиальды міндет болып табылады. Сынақ режимі, шын мәнінде, кез келген, кез келген пернелерді басуға болады немесе ештеңені баса алмайсыз. Пакеттер бәрібір интерфейс арқылы беріледі. Және, бірінші жуықтау үшін, біз оларды ақпараттық деп санаймыз (басқасы дәлелденгенге дейін).

Берілген осциллограммалар мен спектрлер өлшеулер жүргізілген сол компьютерге қосылған AKIP-4108/2 осциллографы арқылы алынды (бұл біздің PICO Technology компаниясының дамуының өте функционалды қайталануы екенін атап өткен жөн. Жоқ. қытайлардан да жаман :)).

Спектр 1 МГц-тен әлдеқайда асып түсетіні анық (осциллограф бұдан былай оған мүмкіндік бермеді және анализаторды қосудың мәні аз болды). Қалғаны кездейсоқ антенна ретінде кабельмен және оның экрандалу дәрежесімен анықталады.

USB интерфейсінің басқа режимдері үшін сізге өткізу қабілеттілігі көп ГГц болатын осциллограф қажет.

Үздіксіз спектрді қалай дәл есептеу керек және сонымен бірге қазіргі NMD аясында қалу - бұл жеке әңгіме және ашық талқылау үшін емес, өкінішке орай... Алайда, кейінгі жарияланымдарда біз оған оралуға тура келеді, сонда барар жері жоқ. Мен «шектерде қалуға» тырысамын...

Мені осындай құрылғыда жұмыс істеуге итермелейтін нәрсе, оңай көшірілетін Gamemort құрылғыларының көпшілігі басқару түймелерінің жеткілікті санын жүзеге асыруға мүмкіндік бермеуі болды. ДК ойын порты бастапқыда ең көбі төрт түймеге арналған. Кеңейтімдердің барлық түрлері де қажетті икемділікке ие емес. Мысалы, DIY жасаушылар арасында танымал CH Flightstick Pro кеңейтімі 14 түймені іске асыруға мүмкіндік береді, бірақ сіз бір уақытта екі түймені пайдалана алмайсыз - ойындарда мұндай құрылғыларда ұшу туралы үнемі «бұру керек» бас» - сол құстарда сіз ұмыта аласыз. Кейбір кеңейтімдер таза сандық интерфейсті пайдаланады - басылған түймелер және тұтқаның ауытқуы туралы деректер бастапқыда төрт «стандартты» түймелер туралы деректерді жіберуге арналған цифрлық геймпорт желілері бойынша беріледі. Мен тіпті мұндай кеңейтімдерді біршама артық деп санаймын. Ал аналогтық деректерді сандық түрлендіру джойстик дизайнын қиындатады. Сонымен қатар, әрбір ойын оған қандай құбыжық «байланысты» екенін түсінгісі келмейді. Ал пернетақта – міне, 102 пернелік даңқымен! Сонымен қатар, RU.GAME.FLIGHT абоненттері анда-санда «пернетақтаны қалай икемдеп, қуанышпен өтуге болады?» деп сұрап, отқа май құйып жатты. және ештеңесіз кетеді.

Қысқаша айтқанда, құрылғының жұмысы пернетақта мен ДК арасындағы автобуста «отыру» және құрылғыда басылған түймелерге сәйкес пернетақтадағы пернелердің басылуын имитациялау болып табылады.

Сондықтан мен оны дамыту үшін отырдым. Бұған дейін әртүрлі микропроцессорлармен және микроконтроллерлермен жұмыс істеу тәжірибем болды. Жалпы - саусақтар құлақтан құлаққа дейін. Енді мен доктарды алып, RTFM жасаймын және бір аптадан кейін ақ боз атқа мінемін деп аңғал сендім. Мәселе мынада, мен Интернетте де, тиісті Fido конференцияларында да пернетақта мен контроллер арасындағы деректерді тасымалдау протоколы туралы құжаттаманы таба алмадым. Мен осциллографты алып, бірнеше апта бойы уақытша құрылғыларды бөлшектеп, оларды қайталауға тырыстым. Сондықтан төменде келтірілген ақпараттың көпшілігі менің қорытындыларымның нәтижесі болып табылады және құжатталмаған. Егер мен бірдеңе туралы қателессем, сіздің пікірлеріңізді тыңдауға қуаныштымын рашпилсағ ukrнүкте тор.

Мәліметтерді берудің негізгі принциптері

Төмендегілердің барлығы PS/2 және AT пернетақталарына қатысты, олар тек қосқыштың конструкциясында ерекшеленеді (адаптер арқылы қосылуға болады).

Екі жақты деректер алмасу пернетақта мен компьютердің аналық платасында орналасқан контроллер (бұдан әрі жай «контроллер» деп аталады) арасында орын алады. Контроллер әртүрлі пәрмендерді жібереді (мысалы, жарық диодтарының күйін өзгерту немесе автоматты қайталау жылдамдығы). Пернетақта басылған пернелердің сканерлеу кодтарын жібереді (сканерлеу коды - шартты белгіпернелерді ASCII кодтарымен шатастырмау керек).

Кодтарды сканерлеу

Кілт Кодты сканерлеу Кілт Кодты сканерлеу Кілт Кодты сканерлеу Кілт Кодты сканерлеу
1 16 2 1E 3 26 4 25
5 2E 6 36 7 3D 8 3E
9 46 0 45 - 4E + 55
Backspace 66 қойындысы 0D Q 15 В 1D
Е 24 Р 2D Т Ы 35
У I 43 О 44 П 4d
[ 54 ] Енгізіңіз Ctrl(L) 14
А С 1B D 23 Ф 2B
Г 34 Х 33 Дж 3B Қ 42
Л 4B ; 4C " 52 ` 0E
Shift(L) 12 \ 61 З X 22
C 21 В Б 32 Н 31
М 3A , 41 . 49 / 4A
Shift(R) 59 Alt(L) 11 Ғарыш 29 Жоғарғы бас әріп регистрі 58
Шығу 76 F1 05 F2 06 F3 04
F4 F5 03 F6 0B F7 83
F8 0A F9 01 F10 09 F11 78
F12 07 Scroll Lock 7E * Num Lock 77
7 8 75 9 7D - 7B
4 6B 5 73 6 74 +
1 69 2 72 3 0 70
. 71 Alr(R) E0-11 Ctrl(R) E0-14 Басып шығару экраны E0-12-E0-7C
Кірістіру E0-70 Жою E0-71 Сол E0-6B Үй E0-6C
Соңы E0-69 Жоғары E0-75 Төмен E0-72 PageUp E0-7D
PageDown E0-7A Дұрыс E0-74 Енгізіңіз E0-5A / E0-4A

Ескертпе: AT пернетақтасында сканерлеу кодтарының үш түрлі жинағы бар. Мен тек №2 жиынның мәндерін бердім - әдепкі.

Пернені басқан кезде пернетақта осы перненің сканерлеу кодын контроллерге жібереді. Шығарылған кезде алдымен 0F0h префиксі, содан кейін босатылған кілттің сканерлеу коды көрсетіледі.

Shift, Alt және Ctrl пернелер тіркесімі екі сканерлеу кодының тізбегі ретінде беріледі. Контроллер тұрғысынан бұл кілттер басқалардан еш айырмашылығы жоқ. Дәл осылай Num Lock және Caps Lock режимдері аппараттық құрал деңгейінде ерекшеленбейді - олар бағдарламалық жасақтама деңгейінде пернетақта үзулеріне қызмет көрсететін бағдарлама бойынша ерекшеленеді.

Мен автоқайталау режимін енгізу туралы қысқаша сөйлескім келеді. Әдетте, автоматты қайталау функциялары пернетақтаның өзіне тағайындалады - белгілі бір уақыттан кейін, егер перне босатылмаса, пернетақта дәл сол сканерлеу кодын жібереді. Осы уақытта басқа пернені бассаңыз, басқа сканерлеу коды контроллерге «ұшады» және тек бір перне басылған деп есептеледі. Ойындарда бұл мәселе жай шешіледі - перне 0F0h префиксі бар сәйкес сканерлеу коды келгенше басылған болып саналады. Сондықтан мен автоқайталау функцияларын негізінен іске асырмадым.

Жоғарыдағы сканерлеу кодтарына қоса, пернетақта кейбір қызмет пәрмендерін қайтара алады. Бірақ бұл командалардың, сондай-ақ контроллер шығаратын командалардың бұл жағдайда практикалық мәні жоқ. Сондықтан мен оларға тоқталмаймын.

Айырбастау хаттамасының сипаттамасы

Пернетақта мен контроллер арасындағы деректер алмасу сериялық хаттаманың көмегімен асинхронды түрде жүзеге асырылады. Асинхронды жіберудің мәні мынада: деректер жіберу үшін бірдеңе болған кезде ғана беріледі – пернетақтадағы перне басылған/босатылған және сәйкес сканерлеу кодын шығару немесе контроллер пернетақтаға команда беру қажет.

Деректер алмасу үшін екі жол бар - KBData және KBSync. Сканерлеу кодтарын жіберген кезде пернетақта KBData жолында деректердің келесі битін орнатады және KBSync желісіндегі сигналды «1»-ден «0»-ге ауыстыру арқылы жіберуді растайды. Контроллерден деректерді қабылдау кезінде пернетақта KBData жолынан деректер битін оқиды және KBSync желісіндегі сигналды «1»-ден «0»-ге ауыстыру арқылы қабылдауды растайды. Контроллер KBSync желісінде төмен деңгейлі деректерді жіберуге/қабылдауға дайын еместігі туралы сигнал бере алады. Қалған уақытта, жіберуге деректер болмаған кезде, екі жолдың да сигнал деңгейі жоғары болады. KBSync желісінің импульстік қайталану жиілігі шамамен 10-25 КГц құрайды.

Деректер келесі ретпен беріледі: бір бастапқы бит – «0», сегіз деректер биті, паритет биті (барлық биттердің қосындысы +1), бір тоқтату биті – «1». Деректердің әрбір байтты алғаннан кейін контроллер KBSync сызығын төмен етіп орнатады, осылайша оның қабылданған деректерді өңдеумен бос еместігін және келесісін қабылдауға дайын еместігін білдіреді. Бұл қабылдауды растау деп санауға болады. Пернетақта 0FAh кодын шығару арқылы қабылданған пәрменнің әрбір байтын растайды. Егер жіберу кезінде қате орын алса, контроллер 0FEh пәрменін беру арқылы соңғы байтты қайталауды талап етуі мүмкін. Пернетақта басқаша әрекет етеді - ол қателерді елемейді. Мен бұл жерде өлімге әкелетін ештеңе көрмеймін - егер сіздің жүйеңіз жиі бұзылса, онда оның жұмыс үстелінде орын жоқ.

Сірә, менің түсініктемелерім тым түсініксіз болды, сондықтан мен оларды бірнеше уақыт диаграммаларымен көрсетуге тырысамын.

Пернетақтадан мәліметтерді тасымалдаудың жалпы көрінісі (S1 - бастау биті; S2 - тоқтату биті; D0-D7 - деректер; P - паритет биті; W - алынған мәліметтерді өңдеу)

74 сағаттық байт беру мысалы - сандық тақтадағы «6» пернесі. Бұл мысалда пернетақта арқылы тасымалдау басталған кезде контроллер оның деректерді қабылдауға дайын еместігі туралы сигнал береді және пернетақта KBSync желісі бос болғанша күтеді.

Аппараттық қамтамасыз етуді жүзеге асыру

Енді мен құрылғыны аппараттық құралда іске асыру сипаттамасына тікелей көшемін.

Құрылғы KBSync және KBData сигналдарының үзілуіне қосылады және сигналдарды пернетақтадан/одан өзі арқылы береді, төрт түйменің күйін сұрайды және сәйкес сканерлеу кодтарын шығарады, осылайша пернетақтаның жұмысын имитациялайды.

Құрылғы AT89C2051 бір чипті микроконтроллерге негізделген. Atmel AT89C2051 микроконтроллері MCS-51 отбасына жатады ( отандық аналогы- МК-51). AT89C2051 мен i8051 арасындағы негізгі айырмашылық - аз қуат тұтыну, енгізу/шығару желілерінің саны 15-ке дейін азаяды және сыртқы жадты пайдалану мүмкін емес. Көбірек егжей-тегжейлі ақпарат AT89C2051 және i8051 www.atmel.com және www.intel.com сайттарынан табуға болады. AT89C2051 орнына сыртқы ROM бар AT89C51, i8051 (KR1816BE51) немесе i8031 (KR1816BE31) пайдалануға болады. Бірақ соңғы екі опция қуатты тұтынудың жоғарылауына байланысты пернетақта контроллерінің сақтандырғышының жарылуына әкелуі мүмкін.

Atmel микроконтроллерлерінде негізгі белгілеуден кейін тактілік генератордың максималды жиілігі мегагерцте көрсетіледі. Мен сізге 24 МГц жиілікке арналған микроконтроллерді және жоғары жиілікті - 16-20 МГц кварцты орнатуға кеңес беремін.

Схематикалық диаграмма. (R1-R4 - 47K; R5 - 10K; C1, C2 - 18pF; C3 - 1uF; D1 - AT89C2051; BQ1 - кварц 12-24МГц)

P1.4 жолы түймені сұрауды қосу шығысы ретінде пайдаланылады. Бұл болашақ кеңейтулер үшін негіз болып табылады - P1.4-P1.7 жолдары басылған түймелерді сұрауға арналған жолдың мекенжайын шығару үшін пайдаланылады (әрқайсысы 4 түймеден тұратын 16 жолға дейін). P1.0-P1.3 жолындағы «0» сәйкес түйменің басылғанын білдіреді.

C3 және R5 элементтері қуат қосылған кезде қалпына келтіру сигналын тудыратын схеманы жүзеге асырады.

Пернетақта мен контроллерден KBData желілері P3.2 (INT0) және P3.3 (INT1) кірістеріне беріледі. Осылайша, пернетақтадан немесе контроллерден деректерді тасымалдауды бастау әрекеті сәйкес үзуді тудырады. Бұл үзілістерге қызмет көрсету тәртібі микроконтроллер арқылы бір байтты тасымалдауға сәйкес келетін сигналдарды жай ғана таратады. Микроконтроллер деректерді берумен бос емес кезде, P1.0-P1.4 жолдары сұралады, алынған деректер өңделеді және контроллерге сәйкес сканерлеу кодтары беріледі. Бұл нұсқа құрылғының өзі жіберетін деректерге басымдық береді. Сондықтан пернетақта деректері кейде жоғалуы мүмкін.

Бұл бөлімді аяқтау үшін мен AT және PS/2 пернетақта қосқыштарының түйіспелерін беремін.

-KBReset сигналы қосымша сигнал болып табылады. Кейбір контроллерлер мұны пернетақтаны қалпына келтіру үшін пайдалануы мүмкін.

Микробағдарлама мәтіні

Мен AT89C2051 микроконтроллеріне арналған микробағдарламаның бастапқы мәтінін ұсынамын, бұл қызығушылық танытатын оқырман мені түзете алады немесе бағдарламаны микроконтроллердің басқа түрімен жұмыс істеуге бейімдей алады деп үміттенемін.

Org 0 sjmp start org 3 jmp from_keyboard ; INT0 org 13сағ jmp to_keyboard ; INT1 бастау қозғалысы a,#5 ; үзу түрін орнату mov tcon,a ; INT0 және INT1 алдыңғы жағында - mov a,#0 ; "1"-ден "0"-ге көшу mov ip,a mov a,#85h mov ie,a mov a,#0ffh ; соңғы mov 6,a 06h мекенжайында сақталады; өңделген код clr ​​p1.4; сұрау циклін қосу mov a,p1 ; anl a,#15 түймелерінің күйі оқылады; - Р1 портының ең аз маңызды төрт биті; D0 - жоғары; D1 - оң жақ; D2 - төмен; D3 - сол жақ mov dptr,#hat_table ; төрт түйме туралы деректерді оқу movc a,@a+dptr ; сегіз бағытқа кеңейтілді; D0 - жоғары; D1 - оң жақ; D2 - төмен; D3 - сол жақ; D4 - оңға қарай; D5 - оңға төмен; D6 - солға төмен; D7 - солға қарай mov r2,a ; деректерді сақтау mov r0,a xrl a,6 ; егер жаңа деректер jz циклінен ерекшеленбесе ; алдыңғы циклде алынған - сауалнаманы қайталаңыз mov r1,#8 ; сегіз битке арналған цикл loop3 jnb acc.7,loop2 ; «1» - өзгерту болды push acc mov a,r1 mov dptr,#key_table-1 ; сәйкес сканерлеу кодын шығарып алыңыз movc a,@a+dptr push acc mov a,r0 ; регистр R0 - rlc a басу/босату белгісі; эмуляцияланған кілт mov r0,a ; «1» - «кілт» pop acc mov acc.7,c шығарылды; егер D7=1 - сканерлеу коды алдында 0f0h acall send_key болады; сканерлеу кодын шығару pop acc sjmp loop2a loop2 push acc mov a,r0 rlc a mov r0,a pop acc loop2a rl a djnz 1,loop3 mov 6,r2 sjmp циклі send_key mov яғни,#80h ; үзулер ажыратылған acal send2comp ; сканерлеу кодын жіберу mov яғни, #85h ; үзулер қосылған ret send2comp jnb acc.7,send ; қажет болса, 0f0h push acc mov a,#0f0h acall send pop acc clr acc.7 mov b,#200 l9 nop djnz b,l9 send push 1 push 0 clr p3.3 ; P3.3 - KBData mov b,#6 ; старттық бит шығару l10 nop djnz b,l10 clr p3.5 mov b,#15 l2 nop djnz b,l2 setb p3.5 mov b,#6 l3 nop djnz b,l3 mov r0,#8 ; сегіз деректер биттерін шығару және паритеттерді санау mov r1,#1 byte_loop xrl 1h,a rrc a mov p3.3,c mov b,#6 l6 nop djnz b,l6 clr p3.5 mov b,#15 l4 nop djnz b, l4 setb p3.5 mov b,#6 l5 nop djnz b,l5 djnz r0,byte_loop mov a,r1 mov c,acc.0 mov p3.3,c ; шығыс паритет бит mov b,#6 l8 nop djnz b,l8 clr p3.5 mov b,#15 l12 nop djnz b,l12 setb p3.5 mov b,#6 l13 nop djnz b,l13 setb p3.3 ; шығыс тоқтату бит mov b,#6 l7 nop djnz b,l7 clr p3.5 mov b,#15 l11 nop djnz b,l11 setb p3.5 mov b,#200 l14 nop djnz b,l14 setb p3.5 pop 0 pop 1 ret from_keyboard ; контроллерге бір байтты тасымалдау mov, яғни #80h push psw push acc push b mov b,#2 in6 jnb p3. 4,in8 djnz b,in6 sjmp in7 in8 mov b,#10 in1 mov a,p3 rl a orl a,#11010111b mov p3,a jnb p3.4,in1 in2 mov a,p3 rl a orl a,#11010111b mov p3,a jb p3.4,in2 djnz b,in1 in3 mov a,p3 rl a orl a,#11010111b mov p3,a jnb p3.4,in3 mov p3,#0ffh in4 jb p3.5,in4 in5 jnb p3 .3,in7 clr p3.4 jnb p3.5,in5 in7 mov p3,#0ffh pop b pop acc pop psw mov tcon,#5 mov, яғни,#85h реті пернетақтаға ; пернетақтаға бір байтты тасымалдау, яғни, #80h push psw push acc push b mov b,#5 out61 jb p3.5,out7 djnz b,out61 setb p3.4 setb p3.2 out62 jnb p3.5,out62 out6 mov c ,p3.4 mov p3.5,c mov c,p3.3 mov p3.2,c jb p3.4,out6 out8 mov b,#10 out1 mov c,p3.4 mov p3.5,c mov c , p3.3 mov p3.2,c jnb p3.4,out1 out2 mov c,p3.4mov p3.5,c mov c,p3.3mov p3.2,c jb p3.4,out2 djnz b, out1 out3 mov c,p3.4 mov p3.5,c mov c,p3.2 mov p3.3,c jnb p3.2,out3 out7 mov p3,#0ffh pop b pop acc pop psw mov tcon,#5 mov яғни ,#85h reti hat_table ; P1 портынан оқылатын деректерді кеңейтуге арналған кесте; кестедегі индекс төрт разрядты екілік код; деректер - сегіз эмуляцияланған кілттің күйі; «0» - перне басылды db 0ffh ; сол+оң+жоғары+төмен=тыйым салынған комбинация db 0ffh ; сол+оң+төмен=тыйым салынған комбинация db 0ffh ; сол+жоғары+төмен=тыйым салынған комбинация db 0bfh ; сол+төмен=солдан төмен db 0ffh ; сол+оң+жоғары=тыйым салынған комбинация db 0ffh ; сол+оң=тыйым салынған комбинация db 07fh ; сол+жоғары=солға жоғары db 0f7h ; сол жақ db 0ffh; оң+жоғары+төмен=тыйым салынған комбинация db 0dfh ; төмен+оң=төмен-оң db 0ffh ; жоғары+төмен=тыйым салынған комбинация db 0fbh ; төмен db 0efh; оңға+жоғары=оңға жоғары db 0fdh ; оң жақ db 0feh; жоғары db 0ffh; түймелер басылмады key_table ; сканерлеу кодының кестесі db 75h; сандық тақта 8 дб 74 сағ; сандық тақта 6 дб 72 сағ; сандық тақта 2 дб 6бсағ; сандық тақта 4 дб 7dh; сандық тақта 9 дб 7ah; сандық тақта 3 дб 69 сағ; сандық тақта 1 дб 6 канал; сандық тақта 7

Tools.zip мұрағатында сіз екі бағдарламаны таба аласыз: a51.exe - ассемблер, hex2bin - ассемблердің шығысында алынатын алтылық файлдарды екілік пішімге микроконтроллердің ROM-ды бағдарламашымен жыпылықтау үшін қолайлы түрлендіргіші. .

Құрастыру және ақаулықтарды жою

Құрылғыны жоғарыда көрсетілген схемаға сәйкес нан тақтасына, үйде оюланған тақтайшаға немесе өнеркәсіптік өндірісте құрастыруға болады. Микроконтроллердің астына розетка қою керек. 2-3 16 істікшелі DIP пакеттері үшін тақтада бос орын қалдырған дұрыс - олар келесі нұсқаларда қосылады.

Әрі қарай, қажетті өзгерістерді енгізгеннен кейін, микробағдарламаның бастапқы мәтіні a51.exe бағдарламасының көмегімен жиналады. Микробағдарламаны бағдарламашымен бірге жыпылықтау үшін, алынған hex файлы hex2bin.exe бағдарламасы арқылы екілік кескінге түрлендіріледі.

Құрылғыны толығымен жинағаннан кейін біз оны пернетақта мен компьютерге қосамыз. Үш... Екі... Бір... Кеттік!.. Белгілі жақсы құрамдас бөліктерден дұрыс құрастырылған құрылғы дереу жұмыс істеуі керек. Олай болмаса, дұрыс орнатуды және микроконтроллерде қуат бар-жоғын тексеріңіз. Осциллографты пайдаланып, сағат генераторының іске қосылғанын және қуат қосылған кезде RST кірісіне жоғары деңгейлі импульстің келетінін тексеріңіз. Пернетақтадағы пернелерді басқан кезде, P3.3 және P3.5 жолдарындағы импульстар, тиісінше, P3.2 және P3.4 жолдарындағы импульстар біраз кідіріспен қайталануы керек. Құрылғы түймелерін басқан/босатқан кезде импульстар P3.3 және P3.5 жолдарында да пайда болуы керек. Бұл көмектеспесе, маған жазыңыз ( рашпилсағ апортнүкте ru) пернетақтаның, аналық платаның/мультикардтың, микроконтроллердің моделі мен түрін (AT, PS/2) және пайдаланылған жиілікті көрсететін қате туралы есеп кварц резонаторы. Мен құрылғыны қол жетімді максималды санмен сынауға тырыстым аналық платаларжәне пернетақталар - проблемалар анықталмады. Менің жағдайда 14,2 МГц кварц пайдаланылды.

Белгілі қателер

Микробағдарламаның ағымдағы нұсқасында келесі ақаулар бар:

  • Екі байт сканерлеу кодтары бақыланбайды. Бұл кейде саятшылықты және пернетақтаны бір уақытта пайдаланған кезде пернетақта пернелері басылғанда «қатып қалады» немесе дұрыс қабылданбайды;
  • Кейде деректер контроллерден пернетақтаға қате жіберіледі. Мұны, мысалы, Num Lock, Caps Lock, Scroll Lock пернелері басылған кезде жарық диодтары өз күйін өзгертпейтіндігінде көрсетуге болады;
  • Шатыр түймелерінің түйіспелерінің дірілдегені. Әзірге бұл мен үшін ойында өлімге әкелген жоқ.

Болашақ жоспарлар

Міне, болашақ нұсқаларда іске асырғым келетін нәрселердің қысқаша тізімі:

  • Кішігірім қателерді түзету - сигналды дұрыс өңдеу; қос байт сканерлеу кодтарын қадағалау;
  • 16x4 матрицаны қосу - 64 түймеге немесе екі үйшікке және 56 түймеге дейін қолдау;
  • ROM микроконтроллерінде сақталған 16 түрлі сканерлеу кодының орналасуын қолдайды;
  • 32 сканерлеу кодының макетіне дейін «жұмыс үстінде» сақтау және қайта бағдарламалау мүмкіндігі бар NVRAM чипінің қосылуы.

Қорытынды

Мен құрылғының жұмыс принципін түсіну үшін қажетті барлық деректерді ұсынуға тырыстым. Бұл сипаттама техникалық тұрғыдан 100% дәл деп мәлімдемейді. Егер мен бірдеңеде қателессем, оқиғалардың нұсқасын айтыңыз. Егер сіз менің схемаға және/немесе микробағдарламаға жақсартулар мен толықтырулар жасай алсаңыз, схеманы одан әрі дамыту туралы идеяларыңыз болса, маған хабарлаңыз. Сонымен қатар, мен осы құрылғыны микроконтроллерлердің басқа түрлеріне көшіруге немесе бейімдеуге қабілетті шеберлерден ақпарат күтемін.

Владимир «Расп» Климус (рашпилсағ ukrнүкте тор)

  1. Google Play терезесінің жоғарғы жағында орналасқан іздеу жолы. Біз дәл осыны қолданамыз. Біз іске қосып, қолданбамыздың атын жазамыз. Оны толығымен енгізу қажет емес. Скриншотта көрсетілген нысан іздеу нәтижелерінде пайда болғаннан кейін оны түртіңіз.
  1. Біз бағдарламаның басты бетіне қайта бағытталамыз. «ОРНАТУ» деген үлкен жасыл түйме бар. Оны басыңыз.
  1. Біз қолданбаны жүктеп алуды аяқтауын күтеміз. Оның салмағы 5 МБ-тан аз болғандықтан, процесс көп уақытты қажет етпейді.
  1. Дайын. Автоматты орнату аяқталғаннан кейін біз бағдарламаны осы жерден тікелей іске қоса аламыз.
  1. Сондай-ақ қосулы негізгі экран(параметрлерде белсендірілген болса) іске қосу таңбашасы пайда болады.

Осы кезде бағдарламаны орнату аяқталды және біз онымен жұмыс істеуге шолу жасауға көшеміз.

Төмендегі скриншотта сіз көресіз бағдарламалық интерфейс. Мұнда ол 3 негізгі қойындыға бөлінген. Сондай-ақ беріліс түрінде жасалған параметрлер белгішесі бар. Негізгі «SCAN» қойындысында 4 негізгі құрал бар:

  • Штрих-кодты сканерлеу. Бұл камера арқылы жұмыс істейтін QR сканері;
  • Қолмен енгізу. Қолмен кодты деректерді енгізу функциясы;
  • Файлдан кодты шешу. Файлдан декодтау. Осы жерден сіз бұрын жүктелген QR кодын ашып, оны оқи аласыз;
  • Url мекенжайынан кодты шешу. Сілтеме бойынша сканерлеу.

Төменгі жағында пайдалы функционалдылықты қамтамасыз етпейтін бірнеше түймелер бар. Сіз оларға назар аудармауыңыз керек.

Бағдарлама параметрлерін қарастырайық. Мұнда олардың саны өте көп. Экрандарыңызда әртүрлі конфигурация аймақтарының скриншоттары болады, бірақ біз жай ғана ең қызықты нүктелердің кейбірін айтамыз.

Мысалы, бірінші экранда бағдарламаның дыбысын қосуға немесе өшіруге болады. Діріл реакциясымен де солай жасауға болады. Негізгі мәзірді айналып өтіп, бағдарлама сканерден бірден іске қосылғанда жұмыс режимін орнатуға болады. Тағы бір маңызды мүмкіндік - деректерді алмасу буферіне автоматты түрде көшіру.

Сканерлеуді және сканердің өзін іске қосқымыз келгенде, бағдарлама қажетті жүйелік ресурстарға қол жеткізуді сұрайды. Әрине, оны шешу керек. Скриншотта белгіленген түймені басыңыз.

Әрі қарай, сканер жақтауын көлденең жолақ тікелей QR-ге түсетіндей етіп орналастырамыз. Қолыңызды сермеуге тырысыңыз және сонымен бірге назарыңызды қадағалаңыз. Қалыпты айқындық болмаса, сканерлеу сәтті болмайды.

QR штрих-код сканерін аз жарық жағдайында жұмыс істеуге қосу үшін артқы жарық бар.

Код танылғаннан кейін төмендегі скриншотта көрсетілген ақпаратты көресіз.

QR сканерлеуден басқа, оларды осында жасауға болады. Мұны істеу үшін үшінші қойындыға өтіңіз. Біз оны скриншотта белгіледік. Тізім шифрлауға болатын деректердің барлық түрлерін көрсетеді. Мыналарға қолдау көрсетіледі:

  • телефон кітапшасының байланысы;
  • телефон нөмірі;
  • URL;
  • Электрондық пошта;
  • қолдану;
  • орналасқан жері;
  • кез келген мәтін;
  • бетбелгі;
  • күнтізбелік оқиға.

Мұның бәрі келесідей көрінеді:

Деректер түрі таңдалып, көрсетілгеннен кейін бізге «Кодтау» түймесін басу жеткілікті. Бұл жағдайда біз сілтемені шифрладық.

Ерікті мәтінді де шифрлауға тырысайық. Мұны істеу үшін қажетті элементті таңдаңыз.

Белгіленген өріске сөз тіркесін енгізіп, «Кодтау» түймесін басыңыз.

Нәтиже керемет көрінеді. Оның да түсін өзгертейік. Бұл үшін арналған түймені басыңыз.

Бояғыштан қажетті реңкті таңдаңыз.

Біз алынған QR-ге таңданамыз.

Келесі бағдарламаға көшейік, оның да әсерлі функционалдығы бар.

QR Droid код сканері

Google Play дүкенінен табуға болатын басқа қолданба. Сондай-ақ оны Google веб-сайтындағы тікелей сілтемеден жүктеп алуға болады. Әзірге біз бағдарламаның өзін қарастырамыз.

QR Droid Code Scanner іске қосу таңбашасы осылай көрінеді – оны басыңыз.

Бұл қосымша, алдыңғысынан айырмашылығы, орыс тілінде жасалған және ол іске қосылғаннан кейін біз «БАСТАУ» деген түймені басуымыз керек.

Сканер бірден көрінеді, бірақ алдымен оның параметрлерін қарастырайық. Жоғарғы оң жақ бұрышта орналасқан түймені түртіңіз.

Негізгі мәзірде пайдаланушыны қажетті бөлімге қайта бағыттайтын 6 түйме тақтасы көрінеді. Міне олар:

Сонымен, сканерді пайдалану үшін оны негізгі мәзірде белсендіру керек және QR кодын көрсетіп, «Оқу» түймесін басыңыз.

Мұнда сіз бастау экранын таңдайсыз, мекенжайды орнатыңыз Резервтік көшірмежәне бағдарламалық құрал интерфейсінің тілі конфигурацияланады.

Әрі қарай сканерлеу механизмін орнатуға болады. Меншікті алгоритмдердің бірі қолданылады: Zapper немесе ZXing. Төменде крестті қосуға немесе өшіруге, конфигурациялауға болады автоматты әрекетсканерлегеннен кейін және құралдар кеңестерін көрсетуді немесе сілтемені алмасу буферіне көшіруді қосыңыз.

Бұл бөлім конфигурацияланады дыбыстық сүйемелдеу, діріл қосылады және өшеді. Журналға әрекеттерді жазу және өзара әрекеттесу процесі ақылды сағат Android Wear.

Сонда біз экспортқа немесе импорттауға мүмкіндік аламыз сақтық көшірменемесе күнді белгілеңіз.

Анонимді деректерді жіберуге рұқсат етіңіз (оны өшірген дұрыс), сканерлеу кезінде алынған қауіпсіздік сілтемесін тексеруді қосыңыз немесе пакеттік сканерлеуді конфигурациялаңыз. Масштабтау немесе бөлектеу сияқты мүмкіндіктер төменде қол жетімді.

Бірақ біздің параметрлеріміз мұнымен бітпейді. Жоғарыда аталған функциялардан басқа, бізде келесі функциялар бар:

  • экран бағдарын орнату;
  • алдыңғы камерамен жұмыс істеу;
  • сілтемені талдау;
  • дүкендердің көрсетілімі.
  • ұзартылған сырғу функциясы;
  • кейбір ерекше белгілерге тыйым салу;
  • WEB алдын ала қарауды белсендіру;
  • сақталған кескіндерді іздеу.

Соңғы параметрлер экранында позициялардың максималды санын орнату, реттелетін CSV файлдарын конфигурациялау, смарт сағатты шайқау және қайталанатын орындарды сақтау сияқты қызықты мүмкіндіктер бар.

Параметрлерге қосымша, QR Droid Code Scanner мәзірінде «Қосымша» деп аталатын элемент бар. Оның функционалдығын қарастырайық.

Мұнда келесі мүмкіндіктер берілген:

Біздің тізімдегі соңғы, бірақ кем емес функционалды қосымшаны қарастырайық.

NeoReader QR және штрих-код сканері

Бұл бағдарлама, басқалар сияқты, сіз арқылы жүктеп алуға және орнатуға болады Google ойынынемесе тікелей сілтеме арқылы. Бұл аяқталғаннан кейін онымен тікелей жұмыс істеуге болады.

Алғаш рет іске қосқан кезде бізге рұқсат сұрауын қанағаттандыру қажет. «Рұқсат ету» түймесін басыңыз.

Содан кейін параметрлер терезесі пайда болады. Мұнда сіз тілді таңдай аласыз, еліңізді, жынысыңызды және жасыңызды көрсете аласыз. Төмендегі екі құсбелгі бағдарламаның геодеректерге қол жеткізуін қосуға немесе өшіруге мүмкіндік береді.

Сіз шынымен сканерлеуді бастай аласыз. Камераны QR кодына бағыттаңыз және NeoReader QR және штрих-код сканері оның мазмұнын автоматты түрде таниды.

Бұл үш бағдарлама кез келген адамға толық жетеді деп ойлаймыз. Сізге ең қолайлысын таңдап, оны өз қалауыңыз бойынша пайдаланыңыз. Біз қытайлық құрылғылардың кейбір ерекшеліктері туралы айтатын боламыз.

Стандартты функционалдылық

Кейбір смартфондар мен планшеттерде (брендке байланысты) стандарт ретінде QR кодын сканерлеу функциясы бар және барлығын қолданбасыз жасауға болады. Біз олардың барлығын тізімдемейміз; біз тек Xiaomi моделіне тоқталамыз.

Қорытындылайық

Нәтижесінде Android жүйесінде QR кодын сканерлеуді үйрендік әртүрлі жолдар. Мақала сізге пайдалы болды деп үміттенеміз. Егер сізде әлі де сұрақтар болса, оларды түсініктемелерде сұраңыз. Біз барлығына көмектесуге тырысамыз.

Тіпті бұл орын алмаса да, сайттағы пайдаланушылардың бірі сізге жағдайдан қалай шығу керектігін айтып, практикалық кеңес береді. Сізге тек оны өмірге әкелу жеткілікті.

Бейне нұсқау




Жоғарғы