Skenējiet tastatūras taustiņu tabulas kodus. Par pamin digitālo signālu izvērtēšanas jautājumu. klaviatūras. Kā skenēt QR kodus operētājsistēmā Android

Vairums modernas tastatūras aprīkotas ar multivides taustiņiem, un pelēm jau ir no trim līdz septiņām pogām. Diskā, kas nāk komplektā, un ražotāja vietnē, draiveri un dažādi noderīgas programmas tikai operētājsistēmai Windows. Ikviens zina, ka Linux ir slavena ar savu spēju pielāgot sistēmu sev, ja, protams, zināt, kur un ko konfigurēt. Mūsu uzdevums ir iemācīt pingvīnam darboties ar papildus klaipiņiem.

Atslēgas skenēšanas koda definīcija

Lai ko jūs nospiestu uz tastatūras, X serverim un kodolam kopumā ir vienalga, kas uz tā ir rakstīts vai uzzīmēts. Viņus interesē tikai pogas skenēšanas kods, un vispirms Xs nolasa kodola atslēgas kodu tabulu, un pēc tam atslēgas kods tiek piesaistīts savai kodu tabulai. Ja iekšā Windows problēmas Multivides taustiņiem konsolē kā tādā nav iestatījumu, tad Linux ir atsevišķi jākonfigurē reakcija uz pogu nospiešanu konsolē un X-Window.

Lai uzzinātu atslēgas kodu, jums jāizmanto utilīta xev, kas ir iekļauta X serverī. Pēc palaišanas tiek parādīts logs Event Tester, tagad mēs secīgi nospiežam taustiņus, atceroties izsniegto kodu:

$xev
...
KeyRelease notikums, sērijas 31, sintētiskais NO, logs 0x3e00001,
sakne 0x67, subw 0x0, laiks 279734676, (311,611), sakne: (1104,687),
stāvoklis 0x2000, atslēgas kods 236 (keysym 0x1008ff19, XF86Mail), same_screen JĀ,

XFilterEvent atgriež: False
KeyRelease notikums, sērijas 31, sintētiskais NO, logs 0x2600001,
sakne 0x67, subw 0x0, laiks 265877259, (883 334), sakne: (886 358),
stāvoklis 0x0, atslēgas kods 161 (atslēgas simbols 0x0, simbols nav), tas pats_ekrāns JĀ,
XLookupString dod 0 baitu:
XFilterEvent atgriež: False

Izvade var būt milzīga, jo tiek izsekota katra peles kustība, ejot pāri Event Tester logam. Atslēga ir aprakstīta ar KeyRelease bloku, jo īpaši atslēgas koda vērtība ir tieši skenēšanas kods, kuru mēs vēlamies uzzināt. Parādītajā piemērā tiek nospiesti divi taustiņi. Keycode 236 atbilst atslēgas kodam X serverim, kas norādīts keysym un XF86Mail darbībā, kas KDE palaiž noklusējuma pasta klientu. Atslēgas numuram 161 kods un darbība nav definēti.

Iespējams, ka taustiņš ir nospiests, bet tā skenēšanas kods netiek izsniegts. Tas nozīmē, ka kodols nevar atrast atbilstošu vērtību. dmesg izvadei vajadzētu izskatīties šādi:

Izmantojiet "setkeycodes 0xec lai to darītu zināmu.

Tas ir, jums tiek piedāvāts pašam iestatīt atslēgas skenēšanas kodu, izmantojot setkeycodes, savukārt atslēgas koda vērtības izvēle ir ļoti vienkārša. Konvertējiet iegūto ciparu par decimālo skaitli (to var izdarīt lielākā daļa kalkulatoru) un pievienojiet 128. Šajā piemērā 0xec=236, tas ir, mēs iegūstam skenēšanas kodu 364. Ja rodas šaubas, iespējoto un atspējoto skenēšanas kodu sarakstu var skatīt, palaižot utilītu getkeycodes konsolē vai dumpkeys. Piemēram, ja izvade ir "getkeycodes | grep<код клавиши>” neko nedeva, tāpēc šo kodu var droši izmantot.

XKeycaps utilīta (www.jwz.org/xkeycaps), kas ir Xmodmap grafiskā saskarne, var arī palīdzēt noteikt skenēšanas kodu.

Programma xev, protams, nedarbojas konsolē. Lai uzzinātu kodola izdoto skenēšanas kodu, izmantojiet utilītu showkey vai getkeycodes:

$showkey
tastatūra bija UNICODE režīmā
nospiediet jebkuru taustiņu (programma beigsies 10 sekundes pēc pēdējās taustiņa nospiešanas)...
0xe0 0x6c 0xe0 0xec

Pirmie divi cipari atbilst nospiestajam taustiņam, otrie - nospiešanas neesamībai.

Skenēšanas koda saistīšanas konfigurēšana programmā X-Window

Tātad, tagad mums ir skenēšanas kodi, mums ir jāpasaka X serverim, kas tam faktiski jādara, kad tiek nospiests šis taustiņš, tas ir, jāpiešķir tai simbolisks nosaukums. Simbolu nosaukumu saraksts ir norādīts galvenes failā XF86keysym.h. Pēc noklusējuma X servera galvenes faili netiek instalēti mūsdienu izplatījumos. Lai to redzētu Ubuntu, jums jāinstalē x11proto-core-dev pakotne, pēc kuras šis fails atradīsies /usr/include/X11 direktorijā. Varat arī sazināties ar X.Org CVS serveri. Mēs skatāmies:

$ cat /usr/include/X11/XF86keysym.h
/*
* Taustiņi ir atrodami dažās "Internet" tastatūrās.
*/
#define XF86XK_Standby 0x1008FF10
#define XF86XK_AudioLowerVolume 0x1008FF11
#define XF86XK_AudioRaiseVolume 0x1008FF13
#define XF86XK_AudioPlay 0x1008FF14
#define XF86XK_AudioStop 0x1008FF15
#define XF86XK_Mail 0x1008FF19

Ja salīdzinām pēdējo rindiņu ar xev izvadi, mēs redzam, ka vērtības atbilst atslēgai ar atslēgas kodu 236 - keysym 0x1008ff19, XF86Mail (bez XK_ sufiksa). Jūs atradīsit visu pieejamo vērtību sarakstu tādā formā, kādā tās jāizmanto, mapē /usr/share/X11/XKeysymDB.

Ir divi veidi, kā izveidot savu izkārtojumu: izveidojiet tastatūras aprakstu vai izmantojiet Xmodmap. Pēdējā metode ir vienkāršākā, tāpēc mēs par to runāsim tālāk. Lietotāja mājas direktorijā izveidojiet .Xmodmap failu, kurā ievadām vajadzīgās vērtības:

$medit ~/. xmodmap

atslēgas kods 161 XF86Kalkulators
atslēgas kods 174 XF86AudioLowerVolume
atslēgas kods 176 XF86AudioRaiseVolume
atslēgas kods 162 XF86Audiopauze

Un tā tālāk, princips, manuprāt, ir skaidrs. Turklāt atslēgas kodu var ievadīt gan decimālā, gan heksadecimālā formā. Pēc maniem novērojumiem, lielāko daļu atslēgu kodi ir standartizēti. Tāpēc, ja vienreiz iestatāt reakciju uz taustiņa nospiešanu un pārsūtāt failu uz citu datoru, visticamāk, uz citas tastatūras reakcija uz taustiņa nospiešanu, kas arī ir parakstīts, būs līdzīga. Gnome darbvirsmas lietotāji ar GDM var rakstīt visas šīs rindiņas visas sistēmas mapē /etc/X11/Xmodmap.

Citos gadījumos mums joprojām ir jāpasaka X serverim, ka tas izmanto ģenerēto failu. Tas dažādos izplatījumos tiek realizēts atšķirīgi, galvenā doma ir palaist komandu /usr/bin/xmodmap $HOME/.Xmodmap, kad lietotājs piesakās vai startē X. Šeit katrs dejo kā grib. Forumos ir ieteikts izmantot failu $HOME/.xsession (dažos izplatījumos to var saukt par .Xsession), .xprofile vai sistēmas failu /etc/X11/Xsession. Un es baidos, ka tas vēl nav viss. iespējamie varianti. Apskatīsim, kā tas tiek darīts KUbuntu:

$ sudo grep -iR xmodmap /etc

Rezultātā mēs atrodam ziņkārīgāko failu /etc/X11/Xsession.d/80ubuntu-xmodmap ar šādu saturu:

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

/usr/bin/xmodmap /usr/share/apps/kxkb/ubuntu.xmodmap || taisnība

USRMODMAP="$HOME/.Xmodmap"

ja [-x /usr/bin/xmodmap]; tad
ja [ -f "$USRMODMAP"]; tad
/usr/bin/xmodmap "$USRMODMAP" || taisnība
fi
fi

Tas nozīmē, ka faila ubuntu.xmodmap un custom.Xmodmap faila saturs, ja tāds pastāv, tiek ielādēts. Atverot ubuntu.xmodmap redaktorā, tiks parādīts atslēgu kodu un kartēto simbolu nosaukumu saraksts. No tā mēs varam secināt: ja izstrādātājs ziņo, ka viņa izplatīšanas komplekts atbalsta multivides tastatūras, tad ar lielu varbūtības pakāpi jūs varat atrast līdzīgu failu. Citos izplatījumos ir līdzīga sistēma pielāgotu xmodmap failu palaišanai.

Tagad, kad taustiņiem ir piešķirti simboliskie nosaukumi, varat tiem piešķirt vajadzīgās darbības. Dažas logu vides, piemēram, KDE, var apstrādāt darbības ar simboliskiem nosaukumiem. Tātad, nospiežot pogu XF86AudioPlay (QUESTION), tiek atskaņots noklusējuma atskaņotājs. Lai iestatītu vēlamo kombināciju, vienkārši dodieties uz "KDE vadības centrs -> Reģionālais un pieejamība -> Tastatūras īsceļi" (KUbuntu skatiet sadaļu "Sistēmas iestatījumi -> Tastatūra un pele"). Līdzīgs izvēlnes vienums ir Gnome (jūs varat vienkārši izsaukt gnome-keyboard-bindings) un XFce. Turklāt dažas programmas, piemēram, Amarok, Konqueror, MPD, apstrādā arī taustiņu nospiešanu. Citās vidēs bez
grafiskajiem konfigurācijas rīkiem, visticamāk, būs nepieciešama manuāla iejaukšanās konfigurācijas failos. Piemēram, lai IceWM palaistu XMMS atskaņotāju, nospiežot taustiņu ar simbolisko nosaukumu XF86AudioPlay, un pēc tam vēlreiz to nospiežot, pievienojiet šādu rindiņu ~/.icewm failam, kas parādās pēc pirmās palaišanas:

$ mcedit ~/.icewm

taustiņš XF86AudioPlay xmms -- atskaņošanas pauze

Programmā Fluxbox atskaņotāja palaišanas virkne izskatītos šādi:

$ mcedit ~/.fluxbox/keys

Nav XF86AudioPlay:ExecCommand xmms -- play-pause

Parasti konfigurācijās ir piemēri, tāpēc domāju, ka pārējos logu pārvaldniekus varat viegli izdomāt pats.

Reakcijas iestatīšana konsolē

Konsolē procedūra ir nedaudz atšķirīga. Kā jūs atceraties, dmesg izvade ieteica piešķirt atslēgu kodus, izmantojot komandu setkeycodes. Bet šeit ir atšķirības - konsolē nevar būt vairāk par 128 tastatūras komandām, jums jāizvēlas vērtības no 0 līdz 127:

$setkeycodes 0xec 118

Pašreizējā tastatūras izkārtojuma failā varat skatīt bezmaksas vērtības. Ubuntu un visos Debian distribūcijās tas parasti ir /etc/console-setup/boottime.kmap.gz. Ja pēc palaišanas nav problēmu ar taustiņiem, mēs ievadām šo rindu vienā no sākuma skriptiem, piemēram, /etc/init.d/rc.local.

Tagad atliek iestatīt atslēgas un veiktās darbības atbilstību. Šeit radošuma iespējas ir vēl lielākas nekā X. Programmā Keymaps (5) atslēgas koda saskaņošanas procedūra ir šāda:

(vienkāršs | ) atslēgas kods atslēgas numurs = atslēgas simbols

# Konsoles pārslēgšana atpakaļ, nospiežot taustiņu ar kodu 105
atslēgas kods 105 = Decr_Console
# Pārslēdziet konsoli vienu uz priekšu, kad noklikšķināt uz un atslēga ar kodu 106
alt keycode 106 = Incr_Console

Bet jūs varat izveidot savas opcijas, norādot komandu mainīgajos:

atslēgas kods 120 = F100
string F100 = "/sbin/shutdown -h now\n"

Citiem vārdiem sakot, nospiežot taustiņu ar kodu 120, tiks veikta F100 mainīgajā norādītā darbība; mūsu gadījumā dators ir iestatīts uz izslēgšanos. F100 vietā, protams, varat izmantot jebkuru citu nosaukumu.

Tagad tikpat svarīga ir vieta, kur to visu pierakstīt. Dokumentācija un daudzi padomi iesaka izmantot pašreizējo konsoles izkārtojuma failu (manā gadījumā boottime.kmap.gz). Starp citu, šis ir vienīgais izkārtojuma apraksta fails, kas pieejams pēc KUbuntu instalēšanas; lai redzētu citas opcijas, instalējiet konsoles datu pakotni. Pēc tam mapē /usr/share/keymaps/i386/ varat atrast vairākus apakšdirektorijus ar failiem. Bet, ja jums ir jāpārslēdzas uz citu izkārtojumu (Ubuntu un dažos citos izplatījumos šim nolūkam tiek izmantots fails /etc/default/console-setup vai ~/.console-setup), visi iestatījumi būs jāpārnes uz citu. failu, kas ir nedaudz
neērti. Ja tomēr nolemjat spert šo soli, izmantojiet esošos ierakstus kā veidni, neko neierakstot pirmajā pozīcijā un neaizmirstiet beigās atstāt tukšu rindiņu.

Mazliet par klēpjdatoru

Līdz brīdim, kad tiku pie klēpjdatora, kura atslēgu skenēšanas kodus nevarēja noteikt. Tāpēc iestatījumi šeit neatšķiras no iepriekš aprakstītajiem. Lai gan ir viena tehnika, par kuru es gribētu runāt. Man šķiet ļoti ērts lietošanā hibernācijas režīms, ieslēdzot datoru, visu atrod savās vietās. Mūsdienu izplatījumi parasti to atbalsta, lai gan konfigurācija parasti ir vienkārša - vienkārši instalējiet hibernate pakotni un konfigurācijas failā ignorējiet nepieciešamos parametrus. Vienīgais ir tas, ka katru reizi, kad jums ir jāpalaiž /usr/sbin/hibernate skripts, lai pārslēgtos uz šo režīmu, kas ne vienmēr ir ērti. Es tikai vēlos aizvērt klēpjdatora vāku un atkal to ieslēgt
ēdienu, atklāj visu savās vietās.

To ir ļoti viegli izdarīt, izmantojot acpid dēmonu, kas ir sava veida lietotāja saskarne, kas ļauj pārvaldīt visus ACPI notikumus, kas pieejami, izmantojot /proc/acpi/event. To darot, acpid nolasa konfigurācijas failu kopu no direktorija /etc/acpi/events/. Ja izplatīšanā nav pakotnes ar dēmonu, instalējiet to no repozitorija; jaunāko versiju var lejupielādēt no phobos.fs.tum.de/acpi. Pēc instalēšanas direktorijā /etc/acpi/events ir jāizveido divi faili: vāks un jauda. Pirmajā ir aprakstīta reakcija uz vāka aizvēršanu, otrajā - uz barošanas pogas nospiešanu.

$ sudo mcedit /etc/acpi/events/lid

notikums=poga/vāks.*
action=/usr/sbin/hibernate

$ sudo mcedit /etc/acpi/events/power

notikums=poga/barošana.*
action=/sbin/shutdown -h tagad

Šīs ir nedaudz vienkāršotas iespējas, KUbuntu jūs atradīsit sarežģītākus skriptus. Pēc tam ir jārestartē acpid dēmons:

$ sudo /etc/init.d/acpid restart

Tagad, aizverot klēpjdatora vāku, sistēma pārziemosies ar izslēgtu barošanu, un, nospiežot barošanas pogu, tā izslēgsies. Vienkārši un ērti.

Uztvērēji

Ja jums nepatīk steigties ar konfigurācijas failiem, šeit ir dažas programmas, kas palīdzēs pielāgot multivides taustiņu darbību. Piemēram, Sven programmas (sven.linux.kiev.ua) sākotnējais mērķis bija uzstādīt papildu taustiņus uz multivides tastatūras, taču, sākot ar versiju 0.4, tā var labot drukas kļūdas un mainīt tastatūras izkārtojumu. Turklāt, pat ja jums ir parasta tastatūra, ar tās palīdzību varat atdarināt multivides taustiņus, tā vietā izmantojot īsinājumtaustiņus. Varat arī piešķirt darbības noteiktām peles pogām. Viņa saprot aptuveni 10 000 krievu vārdu un 9 500 angļu valodu. Ja programma nepārslēdzās
pati, tad izkārtojumu var mainīt manuāli, izmantojot īpaši definētu taustiņu (Pārtraukt pēc noklusējuma). Ar atsevišķu taustiņu (Scroll Lock) var mainīt vārdu reģistru (augšējais, apakšējais, pirmais burts ir augšējais, pārējie ir zemāki). Tastatūras izkārtojuma slēdža indikators atceras tā stāvokli katram logam, tāpēc, ja bieži pārslēdzaties starp lietojumprogrammām, jums vairs nebūs jāmaina izkārtojums. Programmai ir lieliskas iespējas, un es ieteiktu jums to apskatīt. Visi iestatījumi tiek veikti, izmantojot grafikas programma, kas veidota uz GTK+ bibliotēkām. Svens ir pārbaudīts uz Linux, bet principā tam vajadzētu strādāt *BSD sistēmās. Izmantojamais logu pārvaldnieks
nav nozīmes.

KeyTouch (keytouch.sf.net) funkcijas ir nedaudz pieticīgākas, šī utilīta tiek izmantota tikai multivides taustiņu konfigurēšanai. Lai gan ar tā palīdzību jūs varat piešķirt savu darbību jebkuram taustiņam, kas atšķiras no noklusējuma iestatījumiem. Programmas vietnē papildus avota kodiem un pakotnēm dažiem izplatījumiem varat atrast gatavus iestatījumus multivides tastatūrām no vairuma pazīstamu ražotāju.

Cits interesants risinājums- xbindkeys (hocwp.free.fr/xbindkeys/xbindkeys.html) - ļauj jebkurai tastatūrai un peles pogai piešķirt jebkuru komandu, ieskaitot čaulas komandas. Visi iestatījumi tiek veikti konfigurācijas failā, kura formāts ir vienkāršs un saprotams.

Visticamāk, jau tālrunī instalēta pēc noklusējuma QR koda skeneris, ar to var viegli skenēt pirmo QR kodu. To izdarīt ir ļoti vienkārši. Vienkārši izpildiet mūsu norādījumus.

1. Tālrunī atveriet QR koda lasītāju.

2. Turiet ierīci virs QR koda, lai tas būtu skaidri redzams viedtālruņa ekrānā.

Ja pareizi turat viedtālruni virs QR koda, notiks tālāk norādītais.

  • Tālrunis automātiski skenē kodu.
  • Dažās lietotnēs jums ir jānoklikšķina uz attēla, lai skenētu kodu, nevis pogu, kā jūs to darītu, lai viedtālrunī uzņemtu fotoattēlu.

3. Ja nepieciešams, nospiediet norādīto pogu.

Super! Jūsu viedtālrunis nolasa kodu un seko norādītajai saitei, kas ne vienmēr notiek uzreiz. Lielākajā daļā ierīču tas var ilgt dažas sekundes.

Jūs visur sāksit redzēt QR kodus. Tos izmanto mācīšanai, informēšanai, skaidrošanai un daudzām citām lietām. Atrodiet tos un skenējiet! QR kodi ietaupīs daudz laika un pūļu.

Kā skenēt QR kodus operētājsistēmā Android

Un tagad mēs jums pateiksim, kā Android ierīcē izmantot QR koda skenera lietotni.

Īsumā:
1. Atvērt Play tirgus .
2. Meklēt QR koda lasītājs .
3. Izvēlieties QR koda lasītājs(izmantojot skenēšanu).
4. Noklikšķiniet uz " Uzstādīt".
5. Atveriet programmu QR koda lasīšana.
7. Pavērsiet kameru pret QR kodu.
8. Noklikšķiniet uz " LABI".

1. darbība. Android ierīcē atveriet Play veikalu. Tā ir ikona lietotnē vai sākuma ekrānā.

2. darbība Meklētājprogrammā ievadiet QR koda lasītāju. Tiks parādīts lietojumprogrammu saraksts QR koda lasīšanai.

  • Šajā rakstā ir paskaidrots, kā izmantot QR koda lasītāju, taču varat izvēlēties sev tīkamo lietojumprogrammu. Pirms lejupielādes noteikti izlasiet par lietotni.
  • Darbībām jābūt vienādām visām QR koda lasītāju lietotnēm.

3. darbībaNoklikšķiniet uz Scan izstrādātais QR koda lasītājs. Izstrādātāja vārds ir norādīts zem katras lietotnes. Iespējams, jums būs jāritina lapa uz leju, lai atrastu Scan izveidoto lietotni.

4. darbībaNoklikšķiniet uz Instalēt. Tiks parādīts uznirstošais logs ar lūgumu piešķirt atļauju piekļūt informācijai savā Android ierīcē.

5. darbībaNoklikšķiniet uz "Pieņemt". Tagad jūsu Android ierīcē tiks instalēts QR koda lasītājs.

    • Kad lietotne ir lejupielādēta, poga "Instalēt" mainīsies uz "Atvērt" un lietotnē būs jauna ikona.

6. darbībaAtveriet QR koda lasītāju. Tā ir ikona, kas lietotnē izskatās kā QR kods. Tiks atvērta lietotne, kas izskatās kā standarta kameras ekrāns.

7. darbībaIzlīdziniet QR kodu kameras rāmī. Mazliet līdzīgi kā jūs fotografējat, tikai jums nav jāspiež neviena poga. Kad svītrkoda skeneris nolasa kodu, tiks parādīts uznirstošais logs ar URL kodā.


8. darbībaNoklikšķiniet uz Labi, lai atvērtu vietni. Tas palaiž jūsu noklusējuma tīmekļa pārlūkprogrammu un pāriet uz URL QR kodā.

Nākamā tipiskā datora ierīce, kas šķietami vienkārša, bet dažkārt rada problēmas pētniekam, ir tastatūra.

Kopumā ierīce ir vienkārša. Īpaši neviens no novecojušajiem modeļiem nav savienots ar PS / 2 portu. Kā liecina daudzi eksperimentālie dati, Claudia vadības mikroshēma skenē taustiņsitienus un pārraida tos sērijas kodā uz portu. Šīs pārraides pulksteņa frekvence ir daudzkārtēja (lielākajā daļā gadījumu) 6,3 vai 10 kHz. Lai gan autors pēdējos gados ticis pie pāris eksemplāriem, kuru takts frekvence bija 20 kHz apgabalā.

Visas tastatūras, nospiežot un turot jebkuru taustiņu, sāk (pēc pauzes) atkārtot taustiņa koda pārraidi “līdz bezgalībai”. Normālā režīmā tas parasti izraisa kontroliera bufera pārpildīšanu un avāriju pēc dažām sekundēm. Parādās skaņas signāls sistēmas "skaļrunis" - "čīkstēt". Testa režīma (visbiežāk sastopamā) būtība ir bloķēt bufera pārpildes komandu, kas ļauj, nospiežot taustiņu, nodrošināt bezgalīgu izvēlētās rakstzīmes pārraidi pa “clave” kabeli.

Kā vienmēr, lai pareizi aprēķinātu rezultātu, koda paketē ir jāizveido pastāvīga impulsu maiņa. Tastatūras kodiem var būt divas šādas kombinācijas:

10101010 (55) taustiņš “+”; = »

01010101 (AA) standarta tabulās - nav piemērojams

Vispārīgā skenēšanas kodu tabula ir parādīta 14.1. tabulā

14.1. tabula- Tastatūras skenēšanas kodi

Atslēga

Skenēt kodu

Atslēga

Skenēt kodu

Atslēga

Skenēt kodu

Atslēga

Skenēt kodu

Tādējādi, ieviešot testa režīmu un, piemēram, uz taustiņa “+” novietotu svaru, “klāva” kabelī būs bezgalīga impulsu pakešu secība. Šajā gadījumā impulsa atkārtošanās periods paketē (tas ir, pulksteņa frekvence) būs vienāds ar 6,10 vai 20 kHz, un pakešu atkārtošanās ātrums būs daudz mazāks. Datu formāts parādīts 14.1. attēlā

Datu apmaiņai tastatūras kabelī tiek izmantotas divas līnijas - KBData un KBSync. Pārraidot skenēšanas kodus, tastatūra iestata nākamo datu bitu KBData līnijā un apstiprina pārraidi, pārsūtot signālu no "1" uz "0" KBSync līnijā.

Kontrolieris var signalizēt par savu nevēlēšanos pārraidīt/saņemt datus ar zemu līmeni KBSync līnijā. Pārējā laikā, kad nav datu, ko pārraidīt, abām līnijām ir augsts signāla līmenis.



Kā izriet no iepriekš minētā, tastatūras kabeļa PEMIN spektrā ir jārēķinās ar frekvenču komponentiem ar takts frekvenci 1/76.04·10 -6 =13.15 kHz. Turklāt divu fāzes nobīdītu signālu klātbūtnes dēļ ar dažādiem (bet vairākiem!) periodiem, pāra un nepāra frekvences komponenti atšķirsies amplitūdā.

Kā gaidīts, PEMIN sinhronizācijas datu līnija principā nav informatīva. Bet atšķirt vienu PAMIN no cita nepavisam nav viegli. Viens kabelis, signāli ir sinhroni ...

Praktiski vienīgais ceļš- iepakojumā atlasiet skenēšanas kodu ar minimālo loģisko "1" skaitu. Tie ir taustiņi "F3" un F9 "(03 un 01 heksadecimālajā kodā). Kods "00" netiek izmantots.

Zemāk ir parādīta skenēšanas koda "F3" oscilogramma.


Stingri “enerģijas ziņā”, ja visas PEMIN frekvences komponentes mēra ar kodu “=” un, piemēram, kodu “F9”, tad uztvērēja rādījumu atšķirība KATRU no frekvences komponentiem ir PEMIN enerģijas patiesā informatīvā daļa. Un tas ir maksimālais maksimums. Darbs ir diezgan sarežģīts un nogurdinošs, ja to nav iespējams uzticēt “mašīnai”. Pati PEMIN komponenti tādiem zemas frekvences nav viegli identificēt. Tātad arī atšķirības "noķert" ...



Praksē SI vairumā gadījumu vienkārši mēra PEMIN līmeni (neko neatņemot) un aprēķina drošības parametru. Tas ir iespējams un tā, "ar rezervi", bet speciālistam ir jāzina patiesais lietu stāvoklis.

Noslēgumā jāapsver AT un PS / 2 tastatūras savienotāju "izslēgšana".


Uztvērēja “attēli” nebūt neizskatās tik “klasiski”, tomēr tas ir diezgan atpazīstams. Šeit ir piemēri



Spektrs skaidri parāda komponentu amplitūdas pieaugumu ar frekvences samazināšanos.

Šajā frekvenču reģionā ir arī “klāva” mērījumu iezīmes (no desmitiem kHz un tālāk). Fakts ir tāds, ka tastatūra parastajā vietā atrodas netālu no sistēmas bloks. Un SB augšējā daļā ir komutācijas barošanas avots - jaudīgākais PEMIN avots gan "E", gan "H" komponentiem. Šādas teātra prožektoru gaismas "gaismā" redzēt blāvo tastatūras "gaismu" ir īpaša māksla! Tāpēc es ierosinu šādu pieeju. Pārvietojiet “claudia” pēc iespējas tālāk no SB. Labāk - uz PS / 2 pagarinātāja kabeļa. Reklāmas 2-2,5 metri.

Novietojiet antenu tā, lai pēc iespējas mazāk uz to tiktu vērsta no SB (signāls ar uztvērēja joslas platumu, kas lielāks par 10 kHz, ir nepārtraukts spektrs). Un tagad, netālu no tik orientētās, fiksētās antenas, sāciet griezt "klāvu" un tā kabeli (nevis otrādi!). Tad jums būs daudz lielākas iespējas atklāt tastatūras PEMIN signālus, savām acīm redzēt PEMIN komponentus analizatora ekrānā.

Viss iepriekš minētais attiecas uz tastatūru ar PS / 2 interfeisu. Bet tagad tos masveidā aizstāj USB tastatūras.

Kopumā šis interfeiss tika izskatīts pietiekami detalizēti kopā ar printeriem. Tomēr attiecībā uz tastatūru būtu lietderīgi piešķirt kādu "mērķa apzīmējumu".

Atcerēsimies USB interfeisa pakotņu uzbūvi, ņemot vērā, ka tastatūra ir stingri savienota ar zemu ātrumu (tas ir, faktiski, izmantojot USB 1.0 interfeisu).

Maksimālais DATU lietderīgās slodzes lielums maza ātruma ierīcēm ir 8 baiti. Tas ir, tieši tas ir nepieciešams tastatūras skenēšanas kodam.

Signāla (proti, datu) redzēšana USB līnijā nebija tik viegls uzdevums. Neskatoties uz to, tieši tas tika atklāts modeļa GENIUS KB-06XE tipiskā USB “klāva” kabelī, konkrēti “data +” līnijā (vadā) (14.10. attēls)


Šīs divas oscilogrammas maina viena otru ar nenoteiktu (haotisku) frekvenci, un signālu “attēli” nav atkarīgi no nospiestā tastatūras taustiņa (vai neviena nospiesta). Citas izmaiņas paketes (rāmja) "mainīgajā" daļā nevarēja noteikt.

Šo pakešu atkārtošanās biežums ir stingri stabilizēts (14.11. att.), un katras paketes ilgums (redzams oscilogrammās) ir aptuveni 34 ± 1 μs.


Paketes seko ik pēc 4 ms. Taču jāņem vērā, ka katras paciņas beigas visu laiku “trīc”, un ir manāma klasiskā “drebēšana”. Tāpēc spektrālais attēls ir nedaudz izplūdis un kļūst skaidrs tikai pēc pietiekami ilgas vidējās noteikšanas.


Turklāt jāņem vērā, ka dažādu impulsu atkārtošanās periodu un dažāda impulsa ilguma dēļ spektram ir nepārtraukta un līnijas spektra sajaukuma raksturs. Neskatoties uz to, ļoti skaidri saglabājas spektra lobētais raksturs, kas ir dabisks bezgalīgai pakešu secībai un ir daudzkārtējs tā "ziedlapiņās" ar vidējo paketes ilgumu. Tikai funkcijas "nulles" izlīdzina nervozitāte un atsevišķu impulsu neatkārtošanās periods. Tomēr pati bilde ir diezgan tipiska. Ar precīzāku frekvenču izšķirtspēju spektrs sāk izšķirties uz “līnijām”, ko nosaka pakešu atkārtošanās ātrums (250 Hz) (14.13. att.), kas atbild par datu pārsūtīšanas neveiksmi. Neskatoties uz to, var apgalvot, ka PEMIN tastatūras kabelis joprojām būs šāds un ne kāds cits. Ir skaidrs, kādās frekvencēs to meklēt, ir skaidrs, ka tas būs nepārtraukts (jebkurā gadījumā ar uztvērēja frekvences izšķirtspēju virs 0,3 kHz). Un ir skaidrs, kuru vērtību aprēķinos aizstāt kā pulksteņa vērtību (minimālais impulsu periods paketē eksperimentā bija 1,322 μs). To izmērīt ar jebkuru SI, kam ir osciloskops, vismaz ar 200 MHz joslu, ir triviāls uzdevums. Testa režīms, faktiski - jebkurš, jūs varat nospiest taustiņus (jebkurus), jūs nevarat nospiest neko. Paketes saskarnē tiek pārsūtītas vienādi. Un kā pirmo tuvinājumu mēs tos uzskatām par informatīviem (kamēr nav pierādīts pretējais).

Dotās oscilogrammas un spektri iegūti, izmantojot osciloskopu AKIP-4108/2, kas savienots ar to pašu datoru, uz kura tika veikti mērījumi (jāpiebilst, ka šis ir ļoti funkcionāls mūsu PICO Technology izstrādes atkārtojums. Ne sliktāks par ķīniešu :)) .

Spektrs nepārprotami pārsniedz 1 MHz (osciloskops vairs nebija atļauts, un analizatora pievienošanai nebija jēgas). Pārējais jau ir kabeļa dēļ, kā nejauša antena un tā ekranēšanas pakāpe.

Citiem USB interfeisa režīmiem jau ir nepieciešams osciloskops ar daudzu GHz joslas platumu.

Kā precīzi saskaitīt nepārtraukto spektru un tajā pašā laikā palikt esošā NMD ietvaros, tā ir atsevišķa saruna, nevis atklātai diskusijai, diemžēl... Tomēr turpmākajās publikācijās pie tā būs jāatgriežas, tur nav kur iet. Cenšoties turēties robežās...

Mani strādāt pie šāda veida ierīces pamudināja fakts, ka lielākā daļa viegli pavairojamo Gamemort ierīču neļāva ieviest pietiekamu skaitu vadības pogu. Datorspēļu ports sākotnēji bija paredzēts ne vairāk kā četrām pogām. Arī visu veidu paplašinājumiem nav vēlamās elastības. Piemēram, CH Flightstick Pro paplašinājums, kas ir populārs pašdarītāju vidū, ļauj ieviest līdz pat 14 pogām, taču jūs nevarat vienlaikus izmantot divas pogas - par lidošanu šādās ierīcēs spēlēs, kurās jūs nepārtraukti "jāpagriež galva" - tajos pašos putnos jūs varat aizmirst. Daži paplašinājumi izmanto tikai digitālo interfeisu - dati par nospiestajām pogām un roktura novirze tiek pārsūtīti pa spēļu porta digitālajām līnijām, kuras sākotnēji bija paredzētas datu pārsūtīšanai uz četrām "standarta" pogām. Es pat uzskatu, ka šādi paplašinājumi ir nedaudz lieki. Jā, un analogo datu pārvēršana ciparu formātā sarežģī kursorsviras dizainu. Turklāt ne katra spēle gribēs saprast, kāds briesmonis tai "pieķēries". Un klave – lūk, tā ir visā tās 102 atslēgu skaistumā! Turklāt RU.GAME.FLIGHT abonenti pielēja eļļu ugunij, ik pa laikam jautājot: “kā es varu pieradināt Klaudiju un krustoties ar Džoju?” un aiziet bez nekā.

Īsāk sakot, ierīces uzdevums ir "sēdēt" kopnē starp tastatūru un datoru un simulēt tastatūras taustiņsitienus atbilstoši ierīces nospiestajām pogām.

Tātad, es apsēdos attīstībai. Pirms tam man bija pieredze ar dažādiem mikroprocesoriem un mikrokontrolleriem. Vispār – pirksti no auss līdz ausij. Un es naivi domāju, ka tagad paņemšu dokus, uztaisīšu RTFM un pēc nedēļas būšu baltā zirgā. Visa ķibele izrādījās tāda, ka nevarēju atrast dokumentāciju par datu pārraides protokolu starp tastatūru un kontrolieri ne internetā, ne attiecīgajās Fido konferencēs. Man bija jāpaņem osciloskops un jāpavada vairākas nedēļas, lai analizētu pagaidu būdiņas un mēģinātu tās atkārtot. Tāpēc lielākā daļa tālāk sniegtās informācijas ir manu secinājumu rezultāts un nav dokumentēta. Ja kaut ko kļūdos, labprāt uzklausīšu komentārus plkst rashpil plkst ukr punkts tīkls.

Datu pārraides pamatprincipi

Viss tālāk minētais attiecas uz PS / 2 un AT tastatūrām, kas atšķiras tikai ar savienotāja dizainu (tās var savienot, izmantojot adapteri).

Starp tastatūru un kontrolieri, kas atrodas uz datora mātesplates (turpmāk tekstā vienkārši “kontrolieris”), tiek veikta divvirzienu datu apmaiņa. Kontrolieris pārraida dažādas komandas (piemēram, mainot gaismas diožu stāvokli vai automātiskās atkārtošanas ātrumu). Tastatūra pārsūta nospiesto taustiņu skenēšanas kodus (skenēšanas kods - simbols atslēgas, ko nedrīkst sajaukt ar ASCII kodiem).

Skenēt kodus

Atslēga Skenēt kodu Atslēga Skenēt kodu Atslēga Skenēt kodu Atslēga Skenēt kodu
1 16 2 1E 3 26 4 25
5 2E 6 36 7 3D 8 3E
9 46 0 45 - 4E + 55
atpakaļatkāpe 66 Tab 0D J 15 W 1D
E 24 R 2D T 2C Y 35
U 3C es 43 O 44 P 4d
[ 54 ] 5B Ievadiet 5A Ctrl(L) 14
A 1C S 1B D 23 F 2B
G 34 H 33 3B K 42
L 4B ; 4C " 52 ` 0E
Shift (L) 12 \ 61 Z 1A X 22
C 21 V 2A B 32 N 31
M 3A , 41 . 49 / 4A
Shift (R) 59 Alt (L) 11 Kosmoss 29 vāciņu slēdzene 58
Esc 76 F1 05 F2 06 F3 04
F4 0C F5 03 F6 0B F7 83
F8 0A F9 01 F10 09 F11 78
F12 07 ritināšanas bloķēšana 7E * 7C Num Lock 77
7 6C 8 75 9 7D - 7B
4 6B 5 73 6 74 + 5A
1 69 2 72 3 7A 0 70
. 71 Alr(R) E0-11 Ctrl(R) E0-14 Drukāšanas ekrāns E0-12-E0-7C
Ievietot E0-70 Dzēst E0-71 Pa kreisi E0-6B Mājas E0-6C
Beigas E0-69 Uz augšu E0-75 Uz leju E0-72 PageUp E0-7D
PageDown E0-7A Pa labi E0-74 Ievadiet E0-5A / E0-4A

Piezīme: AT tastatūrai faktiski ir trīs dažādi skenēšanas kodu komplekti. Es norādīju tikai vērtības kopas numuram 2 — noklusējuma vērtībai.

Nospiežot taustiņu, tastatūra nosūta šī taustiņa skenēšanas kodu kontrollerim. Atlaižot - vispirms prefikss 0F0h un pēc tam atbrīvotās atslēgas skenēšanas kods.

Taustiņu kombinācijas ar Shift, Alt un Ctrl tiek pārsūtītas kā divu skenēšanas kodu secība. No kontroliera viedokļa šie taustiņi neatšķiras no visiem pārējiem. Tādā pašā veidā num Lock un Caps Lock režīmi neatšķiras aparatūras līmenī – programmatūras līmenī tie atšķiras pēc programmas, kas apkalpo tastatūras pārtraukumus.

Īsumā es vēlos pakavēties pie automātiskās atkārtošanas režīma ieviešanas. Automātiskās atkārtošanas funkcijas parasti tiek piešķirtas pašai tastatūrai - pēc noteikta laika, ja taustiņš netiek atlaists, tastatūra nosūta citu tieši tādu pašu skenēšanas kodu. Ja šajā laikā tiek nospiests vēl viens taustiņš, tad uz kontrolieri “lidos” cits skenēšanas kods un tiks uzskatīts, ka ir nospiests tikai viens taustiņš. Spēlēs šī problēma tiek atrisināta elementāri - tiek uzskatīts, ka taustiņš ir nospiests, līdz tiek saņemts atbilstošais skenēšanas kods ar prefiksu 0F0h. Tāpēc es principā neieviesu automātiskās atkārtošanas funkcijas.

Papildus iepriekš minētajiem skenēšanas kodiem tastatūra var atgriezt dažas pakalpojumu komandas. Bet šīm komandām, kā arī kontroliera izdotajām komandām šajā gadījumā nav praktiskas vērtības. Tāpēc es pie tiem nekavēšos.

Apmaiņas protokola apraksts

Datu apmaiņa starp tastatūru un kontrolieri tiek veikta asinhroni, izmantojot seriālo protokolu. Asinhronās pārraides būtība ir tāda, ka dati tiek pārraidīti tikai tad, kad ir ko pārraidīt - tiek nospiests/atlaists taustiņš uz tastatūras un jāizdod attiecīgais skenēšanas kods vai arī kontrolierim jāizdod komanda klaviatūrai.

Datu apmaiņai tiek izmantotas divas līnijas - KBData un KBSync. Pārraidot skenēšanas kodus, tastatūra iestata nākamo datu bitu KBData līnijā un apstiprina pārraidi, pārsūtot signālu no "1" uz "0" KBSync līnijā. Saņemot datus no kontrollera, tastatūra nolasa datu bitu no KBData līnijas un izsniedz saņemšanas apstiprinājumu, pārsūtot signālu no "1" uz "0" KBSync rindā. Kontrolieris var signalizēt par savu nevēlēšanos pārraidīt/saņemt datus ar zemu līmeni KBSync līnijā. Pārējā laikā, kad nav datu, ko pārraidīt, abām līnijām ir augsts signāla līmenis. KBSync līnijas impulsu atkārtošanās ātrums ir aptuveni 10-25KHz.

Dati tiek pārraidīti šādā secībā: viens sākuma bits - "0", astoņi datu biti, paritātes bits (visu bitu summa +1), viens beigu bits - "1". Pēc katra datu baita saņemšanas kontrolieris KBSync līnijā iestata zemu līmeni, tādējādi signalizējot, ka tas ir aizņemts ar saņemto datu apstrādi un nav gatavs saņemt nākamo. To var uzskatīt par pieņemšanas apstiprinājumu. Tastatūra apstiprina katru saņemtās komandas baitu, izdodot kodu 0FAh. Ja pārraides laikā rodas kļūda, kontrolieris var pieprasīt atkārtot pēdējā baita pārraidi, izdodot komandu 0FEh. Tastatūra darbojas citādi - tā vienkārši ignorē kļūdas. Es tajā neredzu neko liktenīgu - ja jūsu sistēma bieži izraisa avārijas, tad tai nav vietas uz darbvirsmas.

Visticamāk, mani skaidrojumi bija pārāk mulsinoši, tāpēc mēģināšu tos ilustrēt ar dažām laika shēmām.

Vispārējs skats datu pārraidei no tastatūras (S1 - sākuma bits; S2 - beigu bits; D0-D7 - dati; P - paritātes bits; W - saņemto datu apstrāde)

Pārsūtīšanas baita 74h piemērs ir ciparatatūras taustiņš "6". Šajā piemērā, kad tastatūra sāk pārraidi, kontrolleris signalizē, ka tas nav gatavs datu saņemšanai, un tastatūra gaida, līdz tiks atbrīvota KBSync līnija.

Aparatūras ieviešana

Tagad es pāriešu tieši uz ierīces ieviešanas aprakstu aparatūrā.

Ierīce ir iekļauta spraugā starp KBSync un KBData signāliem un caur sevi nodod signālus no / uz tastatūru, aptaujā četru pogu stāvokli un izdod atbilstošos skenēšanas kodus, tādējādi simulējot tastatūras darbību.

Ierīces pamatā ir vienas mikroshēmas mikrokontrolleris AT89C2051. Atmel mikrokontrolleris AT89C2051 pieder MCS-51 saimei ( vietējais analogs- MK-51). Galvenā atšķirība starp AT89C2051 un i8051 ir mazāks enerģijas patēriņš, I/O līniju skaits samazināts līdz 15 un nespēja izmantot ārējo atmiņu. Vairāk Detalizēta informācija AT89C2051 un i8051 var atrast vietnēs www.atmel.com un www.intel.com. AT89C2051 vietā varat izmantot AT89C51, i8051 (KP1816BE51) vai i8031 (KP1816BE31) ar ārējo ROM. Taču pēdējās divas iespējas to palielinātā enerģijas patēriņa dēļ var novest pie tastatūras kontrollera drošinātāja izpūstas.

Atmel mikrokontrolleros pēc galvenā apzīmējuma ir norādīta pulksteņa ģeneratora maksimālā frekvence megahercos. Es iesaku instalēt mikrokontrolleri, kas paredzēts 24 MHz frekvencei un kvarcam ar augstāku frekvenci - 16-20 MHz.

ķēdes shēma. (R1-R4 - 47K; R5 - 10K; C1, C2 - 18pF; C3 - 1uF; D1 - AT89C2051; BQ1 - kvarcs 12-24MHz)

Līnija P1.4 tiek izmantota kā pogu aptaujas iespējošana izvade. Šī ir rezerve turpmākiem paplašinājumiem - līnijas P1.4-P1.7 tiks izmantotas, lai izsniegtu nospiesto pogu aptauju līnijas adresi (līdz 16 rindām pa 4 pogām katrā). "0" rindā P1.0-P1.3 nozīmē, ka ir nospiesta atbilstošā poga.

Elementi C3 un R5 īsteno ķēdi atiestatīšanas signāla ģenerēšanai, kad tiek pieslēgta jauda.

KBData līnijas no tastatūras un kontrollera tiek padotas uz ieejām P3.2 (INT0) un P3.3 (INT1). Tādējādi mēģinājums uzsākt datu pārsūtīšanu no tastatūras vai kontrollera izraisa atbilstošu pārtraukumu. Šo pārtraukumu apkalpošanas kārtība vienkārši pārraida signālus, kas atbilst viena baita pārsūtīšanai caur mikrokontrolleri. Laikā, kad mikrokontrolleris nav aizņemts ar datu pārraidi, tiek aptaujātas līnijas P1.0-P1.4, saņemtie dati tiek apstrādāti un attiecīgie skenēšanas kodi tiek izsniegti kontrolierim. Šajā versijā prioritāte ir pašas ierīces pārsūtītajiem datiem. Tāpēc dažreiz var tikt zaudēti dati no tastatūras.

Noslēdzot šo sadaļu, es sniegšu AT un PS / 2 tastatūras savienotāju kontaktdakšu.

Signāls -KBReset ir izvēles signāls. Daži kontrolleri to var izmantot, lai atiestatītu tastatūru.

Programmaparatūras teksts

Es sniedzu mikrokontrollera AT89C2051 programmaparatūras pirmkodu, cerot, ka zinātkārs lasītājs var mani izlabot vai pielāgot programmu darbam ar cita veida mikrokontrolleru.

org 0 sjmp start org 3 jmp from_keyboard ; INT0 org 13h jmp to_keyboard ; INT1 start mov a,#5 ; pārtraukuma tipa iestatīšana mov tcon,a ; INT0 un INT1 priekšpusē - mov a,#0 ; pāreja no "1" uz "0" mov ip,a mov a,#85h mov ie,a mov a,#0ffh ; adresē 06h tiek saglabāts pēdējais mov 6,a; apstrādātais kods clr p1.4 ; iespējot aptaujas cilpu mov a,p1 ; pogu stāvoklis tiek nolasīts anl a,#15 ; - jaunākie četri porta P1 biti; D0 - uz augšu; D1 - pa labi; D2 - uz leju; D3 - pa kreisi mov dptr,#hat_table ; lasīt datus par četrām pogām movc a,@a+dptr ; paplašinot līdz astoņiem virzieniem; D0 - uz augšu; D1 - pa labi; D2 - uz leju; D3 - pa kreisi; D4 - pa labi uz augšu; D5 - pa labi uz leju; D6 - pa kreisi uz leju; D7 - pa kreisi uz augšu mov r2,a ; saglabāt datus mov r0,a xrl a,6 ; ja jaunie dati ir tādi paši kā jz cilpa ; saņemts iepriekšējā ciklā - atkārtojiet aptauju mov r1,#8 ; cilpa astoņiem bitiem loop3 jnb acc.7,loop2 ; "1" - notika izmaiņas push acc mov a,r1 mov dptr,#key_table-1 ; izvilkt atbilstošo skenēšanas kodu movc a,@a+dptr push acc mov a,r0 ; reģistrs R0 - rlc nospiešanas/atlaišanas zīme a ; emulētā atslēga mov r0,a ; "1" - "atslēga" tika izlaista pop acc mov acc.7,c ; ja D7=1 - pirms skenēšanas koda tiks ievadīts 0f0h acall send_key ; izvades skenēšanas kods 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 cilpa send_key mov ie,#80h ; pārtrauc atspējots acall send2comp ; nosūtīt skenēšanas kodu mov ie,#85h ; pārtrauc iespējots ret send2comp jnb acc.7,send ; ja nepieciešams, 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 ; iestatīt sākuma bitu 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 ; paritātes izvade 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 ; izejas stop bits 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 ; nosūtīt vienu baitu kontrolierim mov ie,#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 ie,#85h reti to_keyboard ; nosūtīt vienu baitu uz tastatūru mov ie,#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.4 mov p3.5,c mov c,p3.3 mov 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 ie ,#85h reti hat_table ; tabula no porta P1 nolasīto datu paplašināšanai; indekss tabulā - četrciparu binārais kods; dati - astoņu emulēto atslēgu stāvoklis; "0" - taustiņš nospiests db 0ffh ; pa kreisi+pa labi+augšup+uz leju=nelegāla kombinācija db 0ffh ; pa kreisi+pa labi+uz leju=nelegāla kombinācija db 0ffh ; pa kreisi+augšup+uz leju=nelegāla kombinācija db 0bfh ; pa kreisi+uz leju=pa kreisi-uz leju db 0ffh ; pa kreisi+pa labi+augšup=nelegāla kombinācija db 0ffh ; pa kreisi+pa labi=nelegāla kombinācija db 07fh ; pa kreisi+augšup=pa kreisi uz augšu db 0f7h ; pa kreisi db 0ffh ; pa labi+augšup+uz leju=nelegāla kombinācija db 0dfh ; uz leju+pa labi=uz leju-pa labi db 0ffh ; uz augšu+uz leju=nelegāla kombinācija db 0fbh ; uz leju db 0efh ; pa labi+augšup=pa labi uz augšu db 0fdh ; pa labi db 0feh ; uz augšu db 0ffh ; nav nospiestas pogas key_table ; skenēšanas kodu tabula db 75h ; ciparnīca 8 db 74h ; cipartaustiņš 6 db 72h ; ciparnīca 2 db 6bh ; ciparnīca 4 db 7dh ; ciparnīca 9 db 7ah ; cipartaustiņš 3 db 69h ; cipartaustiņš 1 db 6ch ; ciparu tastatūra 7

Tools.zip arhīvā jūs atradīsiet divas programmas: a51.exe - montētājs, hex2bin - hex failu pārveidotājs, kas tiek iegūts montētāja izejā, binārā formātā, kas piemērots mikrokontrollera ROM mirgošanai ar programmētāju.

Montāža un traucējummeklēšana

Ierīci var salikt pēc iepriekš minētās shēmas uz maizes dēļa, mājās iegravētas vai rūpnieciski ražotas tāfeles. Ievietojiet kontaktligzdu zem mikrokontrollera. Vislabāk uz tāfeles atstāt vietu 2-3 16-pin DIP pakotnēm – tās tiks pievienotas nākamajās versijās.

Tālāk pēc vēlamo izmaiņu veikšanas tiek samontēts mikroprogrammas pirmkods - ar programmu a51.exe. Lai programmētājs mirgo, saņemto hex failu programma hex2bin.exe pārvērš binārā attēlā.

Kad ierīce ir pilnībā salikta, mēs to savienojam ar tastatūru un datoru. Trīs... Divi... Viens... Ejam!.. Ierīcei, kas pareizi salikta no zināmām labām detaļām, nekavējoties jādarbojas. Ja nē, pārbaudiet pareizu uzstādīšanu, mikrokontrollera strāvas esamību. Izmantojiet osciloskopu, lai pārbaudītu, vai pulksteņa ģenerators ir iedarbināts un vai augsta līmeņa impulss nonāk RST ieejā, kad tiek ieslēgta barošana. Nospiežot tastatūras taustiņus, impulsiem rindiņās P3.3 un P3.5 ar zināmu aizkavi jāatkārto impulsi attiecīgi rindiņās P3.2 un P3.4. Nospiežot/atlaižot ierīces pogas, impulsiem jāparādās arī rindās P3.3 un P3.5. Ja tas nepalīdz - rakstiet man ( rashpil plkst aport punkts lv) kļūdu ziņojums, kurā norādīts tastatūras, mātesplates/multikartes, izmantotā mikrokontrollera modeli un veidu (AT, PS/2) un izmantotā mikrokontrollera biežumu. kvarca rezonators. Es mēģināju pārbaudīt ierīci ar maksimālo skaitu mātesplatēm un tastatūras - nekādas problēmas netika konstatētas. Manā gadījumā tika izmantots 14,2 MHz kvarcs.

Zināmas kļūdas

Pašreizējā programmaparatūras versijā ir šādi trūkumi:

  • Divbaitu skenēšanas kodi netiek izsekoti. Tas noved pie tā, ka dažreiz, vienlaikus lietojot cepuri un tastatūru, tastatūras taustiņi “sasalst” nospiestā stāvoklī vai tiek uztverti nepareizi;
  • Dažreiz dati tiek nepareizi pārsūtīti no kontrollera uz tastatūru. To var izteikt, piemēram, ar to, ka, nospiežot, gaismas diodes nemaina savu stāvokli Ciparu taustiņi Lock, Caps Lock, Scroll Lock;
  • Būdas pogu kontaktu atsitiens. Pagaidām spēlēs tas man nav kļuvis liktenīgs.

Nākotnes plāni

Šeit ir īss saraksts ar to, ko es vēlētos ieviest nākamajās versijās:

  • Nelieli kļūdu labojumi - pareizāka signāla apstrāde; divbaitu skenēšanas kodu izsekošana;
  • 16x4 matricas pievienošana - atbalsts līdz 64 pogām vai divām būdām un līdz 56 pogām;
  • Atbalsts līdz 16 dažādiem skenēšanas kodu izkārtojumiem, kas saglabāti mikrokontrollera ROM;
  • NVRAM mikroshēmas pievienošana ar iespēju saglabāt un pārprogrammēt "lidojumā" līdz pat 32 skenēšanas koda izkārtojumiem.

Secinājums

Es mēģināju uzrādīt visus nepieciešamos datus, lai saprastu manas ierīces darbības principu. Šis apraksts nepretendē uz 100% tehniski precīzu. Ja es kaut ko kļūdos, lūdzu, pastāstiet man savu notikumu versiju. Ja varat veikt uzlabojumus un papildinājumus manai shēmai un/vai programmaparatūrai, ja jums ir idejas shēmas tālākai attīstībai, arī dariet man ziņu. Turklāt gaidu informāciju no amatniekiem, kuri šo ierīci varēja atkārtot vai pielāgot cita veida mikrokontrolleriem.

Vladimirs "Rasp" Klimuss (rashpil plkst ukr punkts tīkls)

  1. Google Play loga augšdaļā ir meklēšanas virkne. Tas ir tas, ko mēs izmantosim. Mēs aktivizējam un ierakstām mūsu lietojumprogrammas nosaukumu. Nav nepieciešams to pabeigt. Tiklīdz ekrānuzņēmumā norādītais objekts parādās meklēšanas rezultātos, vienkārši pieskarieties tam.
  1. Mēs tiksim novirzīti uz programmas sākumlapu. Ir liela zaļa poga, kas saka INSTALL. Noklikšķiniet uz tā.
  1. Mēs gaidām lietojumprogrammas lejupielādes pabeigšanu. Tā kā tas "sver" nedaudz mazāk par 5 MB, process neaizņems daudz laika.
  1. Gatavs. Kad automātiskā instalēšana ir pabeigta, mēs varam palaist programmu tieši no šejienes.
  1. Palaišanas saīsne tiks parādīta arī sākuma ekrānā (ja tas ir iespējots iestatījumos).

Tas pabeidz programmas instalēšanu, un mēs varam turpināt darbu ar to.

Zemāk esošajā ekrānuzņēmumā redzat programmatūras interfeiss. Šeit tas ir sadalīts 3 galvenajās cilnēs. Ir arī iestatījumu ikona, kas izveidota zobrata veidā. Galvenajā cilnē "SCAN" ir 4 galvenie rīki:

  • Skenējiet svītrkodu. Šis ir QR skeneris, kas darbojas caur kameru;
  • Manuāla ievade. Manuālas datu ievades funkcija par kodu;
  • Atšifrēt no faila. Dekodēšana no faila. Šeit jūs varat atvērt iepriekš lejupielādētu QR kodu un izlasīt to;
  • Atšifrēt no URL. Skenēt, izmantojot saiti.

Tālāk ir norādītas dažas pogas, kurām nav noderīgas funkcionalitātes. Jums nevajadzētu pievērst viņiem uzmanību.

Apsveriet programmas iestatījumus. Šeit tādu ir diezgan daudz. Jūsu ekrānos būs dažādu konfigurācijas apgabalu ekrānuzņēmumi, taču mēs tikai izrunāsim dažus interesantākos punktus.

Piemēram, pirmajā ekrānā varat iespējot vai atspējot programmas skaņu. To pašu var izdarīt ar vibrācijas atgriezenisko saiti. Jūs varat iestatīt darbības režīmu, kad programma tiek startēta uzreiz no skenera, apejot galveno izvēlni. Vēl viena svarīga funkcija ir automātiska datu kopēšana starpliktuvē.

Tiklīdz mēs vēlamies sākt skenēšanu un palaist pašu skeneri, programma pieprasīs piekļuvi nepieciešamajiem sistēmas resursiem. Protams, tas ir jāatļauj. Noklikšķiniet uz ekrānuzņēmumā atzīmētās pogas.

Pēc tam pārvietojiet skenera rāmi tā, lai horizontālā josla tieši saskartos ar QR. Centieties nekratīt rokas un tajā pašā laikā koncentrēties. Bez normāla asuma skenēšana neizdosies.

QR SVĪTKODU SKENERIM ir fona apgaismojums, lai tas darbotos vāja apgaismojuma apstākļos.

Kad kods ir atpazīts, jūs redzēsit informāciju, kas parādīta tālāk esošajā ekrānuzņēmumā.

Papildus QR skenēšanai varat tos arī izveidot šeit. Lai to izdarītu, dodieties uz trešo cilni. Mēs to atzīmējām ekrānuzņēmumā. Sarakstā ir parādīti visu veidu dati, kurus var šifrēt. Tiek atbalstīti šādi:

  • tālruņu kataloga kontaktpersona;
  • telefona numurs;
  • URL;
  • e-pasts;
  • Pielikums;
  • atrašanās vieta;
  • jebkurš teksts;
  • grāmatzīme;
  • kalendāra pasākums.

Tas viss izskatās šādi:

Kad datu tips ir atlasīts un iestatīts, mums vienkārši jānoklikšķina uz pogas "Kodēt". Šajā gadījumā mēs esam šifrējuši saiti.

Mēģināsim šifrēt arī patvaļīgu tekstu. Lai to izdarītu, atlasiet vajadzīgo vienumu.

Ievadiet frāzi norādītajā laukā un nospiediet pogu "Kodēt".

Rezultāts izskatās lieliski. Mainīsim vēlreiz tā krāsu. Nospiežam tam paredzēto pogu.

Izvēlieties vēlamo toni no paletes.

Un apbrīnot saņemto QR.

Pāriesim pie nākamās programmas, kurai ir arī iespaidīga funkcionalitāte.

QR Droid koda skeneris

Vēl viena lietotne, ko varat atrast pakalpojumā Google Play. Varat arī lejupielādēt to no tiešās saites Google vietnē. Pagaidām apskatīsim pašu programmu.

Šādi izskatās QR Droid koda skenera saīsne - noklikšķiniet uz tā.

Šī aplikācija, atšķirībā no iepriekšējās, ir veidota krievu valodā un tiklīdz tā sākas, jānoklikšķina uz pogas, kas saka: "SĀKT".

Skeneris ir uzreiz redzams, bet vispirms tiksim galā ar tā iestatījumiem. Pieskarieties pogai, kas atrodas augšējā labajā stūrī.

Galvenajā izvēlnē ir redzamas 6 pogu flīzes, kas novirza lietotāju uz vēlamo sadaļu. Šeit tie ir:

Tātad, lai izmantotu skeneri, tas ir jāaktivizē galvenajā izvēlnē un, norādot uz QR kodu, jānospiež poga "Lasīt".

Šeit tiek atlasīts sākuma ekrāns, adrese Rezerves kopija un programmēšanas interfeisa valoda ir konfigurēta.

Tālāk mēs varam instalēt skenēšanas dzinēju. Tiek izmantots viens no patentētajiem algoritmiem: Zapper vai ZXing. Zemāk varat iespējot vai atspējot krustojumu, konfigurēt automātiska darbība pēc skenēšanas un iespējojiet rīka padomu parādīšanu vai saites kopēšanu starpliktuvē.

Šī sadaļa nosaka skaņas pavadījums, ieslēdz un izslēdz vibro. Tas arī konfigurē darbību reģistrēšanas un mijiedarbības ar viedais pulkstenis Android apģērbs.

Tad varēsim eksportēt vai importēt dublējums vai iestatīt datumu.

Atļaujiet sūtīt anonīmus datus (labāk ir atspējot), aktivizējiet skenēšanas laikā saņemtās drošības saites pārbaudi vai konfigurējiet sērijveida skenēšanu. Tādas funkcijas kā tālummaiņa vai izcelšana ir pieejamas tālāk.

Bet ar to mūsu iestatījumi nebeidzas. Papildus iepriekš minētajām funkcijām mums ir šādas:

  • ekrāna orientācijas iestatījums;
  • strādāt ar priekšējo kameru;
  • saišu parsēšana;
  • veikala displejs.
  • paplašināta apraksta funkcija;
  • dažu speciālo rakstzīmju aizliegums;
  • WEB priekšskatījuma aktivizēšana;
  • meklēt saglabātos attēlus.

Pēdējā iestatījumu ekrānā ir interesantas funkcijas, piemēram, maksimālā pozīciju skaita iestatīšana, pielāgotu CSV failu konfigurēšana, viedpulksteņa kratīšana un dublēto pozīciju saglabāšana.

Papildus iestatījumiem QR Droid koda skenera izvēlnē ir vienums ar nosaukumu “Vairāk”. Apskatīsim tā funkcionalitāti.

Tālāk ir norādītas iespējas.

Apsveriet pēdējo, bet ne mazāk funkcionālo lietojumprogrammu mūsu sarakstā.

NeoReader QR un svītrkodu skeneris

Šo programmu, tāpat kā citas, varat lejupielādēt un instalēt caur google play vai izmantojot tiešu saiti. Kad tas ir izdarīts, varat turpināt darbu ar to.

Pirmajā reizē mums būs jāapmierina piekļuves pieprasījums. Noklikšķiniet uz "ATĻAUT".

Pēc tam parādīsies logs ar iestatījumiem. Šeit jūs varat izvēlēties valodu, norādīt savu valsti, dzimumu un vecumu. Divas tālāk esošās izvēles rūtiņas ļauj iespējot vai atspējot programmas piekļuvi ģeodatiem.

Jūs faktiski varat sākt skenēšanu. Pavērsiet kameru pret QR kodu, un NeoReader QR un svītrkodu skeneris automātiski atpazīs tā saturu.

Domājam, ka ar šīm trim programmām pietiks jebkuram cilvēkam. Izvēlieties sev ērtāko un izmantojiet pēc saviem ieskatiem. Mēs runāsim par dažām ķīniešu ierīču funkcijām.

Standarta funkcionalitāte

Dažiem viedtālruņiem un planšetdatoriem (atkarībā no zīmola) standartā ir QR kodu skenēšanas funkcionalitāte, un jūs varat darīt visu bez lietojumprogrammas. Mēs tos visus neuzskaitīsim, mēs pieskarsimies tikai Xiaomi modelim.

Summējot

Rezultātā mēs esam iemācījušies skenēt QR kodu operētājsistēmā Android Dažādi ceļi. Mēs ceram, ka raksts jums bija noderīgs. Ja jums joprojām ir jautājumi, uzdodiet tos komentāros. Mēs centīsimies palīdzēt ikvienam.

Pat ja tas nenotiks, kāds no vietnes lietotājiem noteikti pastāstīs, kā izkļūt no situācijas, un sniegs labu padomu. Jums tas vienkārši jāatdzīvina.

Video instrukcija




Tops