Skannaa näppäimistön näppäinkooditaulukko. Kysymys peminin digitaalisten signaalien arvioinnista. näppäimistöt. QR-koodien skannaus Androidilla

Suurin osa nykyaikaiset näppäimistöt varustettu multimedianäppäimillä, ja hiirillä on jo kolmesta seitsemään painiketta. Kuljettajat ja kaikenlaista hyödyllisiä ohjelmia Vain Windows. Kaikki tietävät, että Linux on kuuluisa kyvystään mukauttaa järjestelmä itse, jos tietysti tiedät missä ja mitä määrittää. Tehtävämme on opettaa pingviini työskentelemään lisäleipien kanssa.

Avaimen skannauskoodin määrittäminen

Riippumatta siitä, mitä painat näppäimistölläsi, X-palvelin ja ydin eivät yleensä välitä siitä, mitä siihen kirjoitetaan tai piirretään. Heitä kiinnostaa vain painikkeen skannauskoodi, ja ensin X:t lukevat ytimen avainkooditaulukon ja sitten avainkoodi linkitetään omaan kooditaulukkoonsa. Jos sisään Windowsin ongelmia Konsolissa ei sinänsä ole asetusta multimedianäppäimille, joten Linuxissa täytyy erikseen konfiguroida reaktio painikkeiden painamiseen konsolissa ja X-Windowissa.

Avainkoodin selvittämiseksi sinun tulee käyttää X-palvelimen mukana tulevaa xev-apuohjelmaa. Sen käynnistämisen jälkeen Event Tester -ikkuna tulee näkyviin, paina nyt näppäimiä peräkkäin muistaen annettu koodi:

$xev
...
KeyRelease-tapahtuma, sarjanumero 31, synteettinen NO, ikkuna 0x3e00001,
juuri 0x67, subw 0x0, aika 279734676, (311,611), juuri:(1104,687),
tila 0x2000, avainkoodi 236 (keysym 0x1008ff19, XF86Mail), sama_näyttö KYLLÄ,

XFilterEvent palauttaa: False
KeyRelease-tapahtuma, sarjanumero 31, synteettinen NO, ikkuna 0x2600001,
juuri 0x67, subw 0x0, aika 265877259, (883 334), juuri: (886 358),
tila 0x0, avainkoodi 161 (avaintunnus 0x0, ei-symboli), sama_näyttö KYLLÄ,
XLookupString antaa 0 tavua:
XFilterEvent palauttaa: False

Tulos voi olla valtava, koska jokaista hiiren liikettä seurataan, kun se kulkee Event Tester -ikkunan yli. Avain on kuvattu KeyRelease-lohkolla, erityisesti avainkoodin arvo on juuri se skannauskoodi, jonka haluamme tietää. Esitetyssä esimerkissä painetaan kahta näppäintä. Avainkoodi 236 vastaa avainkoodia X-palvelimelle, joka on määritetty keysymissä, sekä XF86Mail-toimintoa, joka KDE:ssä käynnistää oletussähköpostiohjelman. Avaimen numero 161 koodia ja toimintoa ei ole määritetty.

On mahdollista, että näppäintä painetaan, mutta sen skannauskoodia ei anneta. Tämä tarkoittaa, että ydin ei löydä vastaavaa arvoa. dmesg-tulosteen tulee sisältää seuraava rivi:

Käytä "setkeycodes 0xec "tehdä se tunnetuksi.

Toisin sanoen sinulle tarjotaan avaimen skannauskoodin asettamista itse käyttämällä setkeycodes-koodeja, ja avainkoodin arvon valitseminen on hyvin yksinkertaista. Muunna saatu luku desimaaliluvuksi (useimmat laskimet voivat tehdä tämän) ja lisää 128. Tässä esimerkissä 0xec = 236, eli saamme skannauskoodin 364. Jos olet epävarma, luettelo käytetyistä ja käyttämättömistä skannauskoodeista voidaan tarkastellaan suorittamalla getkeycodes-apuohjelma konsolissa tai dumpkeysissa. Jos tuloste on esimerkiksi "getkeycodes | grep<код клавиши>"ei antanut mitään, joten tätä koodia voi käyttää turvallisesti.

XKeycaps-apuohjelma (www.jwz.org/xkeycaps), joka on Xmodmapin graafinen käyttöliittymä, voi myös auttaa määrittämään skannauskoodin.

Xev-ohjelma ei tietenkään toimi konsolissa. Selvittääksesi ytimen antaman skannauskoodin, sinun tulee käyttää showkey- tai getkeycodes-apuohjelmaa:

$showkey
näppäimistö oli UNICODE-tilassa
paina mitä tahansa näppäintä (ohjelma päättyy 10 sekuntia viimeisen painalluksen jälkeen)...
0xe0 0x6c 0xe0 0xec

Kaksi ensimmäistä numeroa vastaavat painettua näppäintä, toinen - painamisen puuttumista.

Skannauskoodin sitomisen määrittäminen X-Windowissa

Joten nyt meillä on skannauskoodit, meidän on ilmoitettava X-palvelimelle, mitä sen pitäisi tehdä, kun tätä näppäintä painetaan, eli annettava sille symbolinen nimi. Symbolien nimien luettelo on XF86keysym.h-otsikkotiedostossa. Oletuksena X-palvelimen otsikkotiedostoja ei asenneta nykyaikaisiin jakeluihin. Nähdäksesi sen Ubuntussa, sinun on asennettava paketti x11proto-core-dev, minkä jälkeen tämä tiedosto sijaitsee /usr/include/X11-hakemistossa. Vaihtoehtoisesti voit ottaa yhteyttä X.Org CVS -palvelimeen. Katsotaan:

$ cat /usr/include/X11/XF86keysym.h
/*
* Näppäimet löytyvät joistakin "Internet"-näppäimistöistä.
*/
#define XF86XK_Standby 0x1008FF10
#define XF86XK_AudioLowerVolume 0x1008FF11
#define XF86XK_AudioRaiseVolume 0x1008FF13
#define XF86XK_AudioPlay 0x1008FF14
#define XF86XK_AudioStop 0x1008FF15
#define XF86XK_Mail 0x1008FF19

Jos vertaamme viimeistä riviä xev-tuloon, huomaamme, että arvot vastaavat avainta avainkoodilla 236 - keysym 0x1008ff19, XF86Mail (ilman XK_-liitettä). Löydät luettelon kaikista käytettävissä olevista arvoista sellaisina kuin niitä tulisi käyttää tiedostossa /usr/share/X11/XKeysymDB.

Voit luoda oman asettelun kahdella tavalla: luoda näppäimistön kuvaus tai käyttää Xmodmapia. Viimeinen menetelmä on yksinkertaisin, joten puhumme siitä lisää. Luo käyttäjän kotihakemistoon tiedosto.Xmodmap, johon kirjoitamme halutut arvot:

$ mcedit ~/. Xmodmap

avainkoodi 161 XF86 Laskin
avainkoodi 174 XF86AudioLowerVolume
avainkoodi 176 XF86AudioRaiseVolume
avainkoodi 162 XF86AudioPause

Ja niin edelleen, periaate on mielestäni selvä. Lisäksi avainkoodi voidaan syöttää sekä desimaali- että heksadesimaalimuodossa. Havaintoni mukaan useimpien avainten koodit ovat standardoituja. Siksi, jos määrität vastauksen näppäimen painallukseen kerran ja siirrät tiedoston toiselle tietokoneelle, on mahdollista, että toisella näppäimistöllä reaktio näppäimen painallukseen, joka on myös allekirjoitettu, on samanlainen. Gnome-työpöydän käyttäjät, joissa on GDM, voivat kirjoittaa kaikki nämä rivit järjestelmänlaajuiseen tiedostoon /etc/X11/Xmodmap.

Muissa tapauksissa meidän on silti kehotettava X-palvelinta käyttämään luotua tiedostoa. Tämä toteutetaan eri jakeluissa eri tavalla, pääajatuksena on ajaa /usr/bin/xmodmap $HOME/.Xmodmap komento, kun käyttäjä kirjautuu sisään tai kun X alkaa.Tässä jokainen tanssii miten haluaa. Foorumeilla he ehdottavat $HOME/.xsession-tiedoston (joissakin jakeluissa sitä voidaan kutsua nimellä .Xsession), .xprofile- tai järjestelmän /etc/X11/Xsession käyttöä. Ja pelkään, ettei siinä vielä kaikki mahdollisia vaihtoehtoja. Katsotaan kuinka se tehdään KUbuntussa:

$ sudo grep -iR xmodmap /etc

Tämän seurauksena löydämme erittäin mielenkiintoisen tiedoston /etc/X11/Xsession.d/80ubuntu-xmodmap, jonka sisältö on seuraava:

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

/usr/bin/xmodmap /usr/share/apps/kxkb/ubuntu.xmodmap || totta

USRMODMAP="$HOME/.Xmodmap"

jos [ -x /usr/bin/xmodmap]; sitten
if [ -f "$USRMODMAP" ]; sitten
/usr/bin/xmodmap "$USRMODMAP" || totta
fi
fi

Eli ubuntu.xmodmap-tiedoston sisältö ja user.Xmodmap, jos se on olemassa, ladataan. Kun avaat ubuntu.xmodmap-tiedoston editorissa, löydät luettelon avainkoodeista ja niihin liittyvistä symbolisista nimistä. Tästä voimme päätellä: jos kehittäjä ilmoittaa, että hänen jakelunsa tukee multimedianäppäimistöjä, voit suurella todennäköisyydellä löytää samanlaisen tiedoston. Muissa jakeluissa on samanlainen järjestelmä mukautettujen xmodmap-tiedostojen käynnistämiseen.

Nyt kun näppäimille on annettu symboliset nimet, voit määrittää niille haluamasi toiminnot. Jotkut ikkunaympäristöt, kuten KDE, voivat käsitellä symbolisiin nimiin perustuvia toimintoja. Joten kun painat painiketta XF86AudioPlay (QUESTION) -toiminnolla, oletussoitin aloittaa toiston. Aseta haluamasi yhdistelmä siirtymällä kohtaan "KDE Control Center -> Alue- ja esteettömyysasetukset -> Näppäimistöyhdistelmät" (KUbuntussa, katso "Järjestelmäasetukset -> Näppäimistö ja hiiri"). Samanlainen valikkokohta on sekä Gnomessa (voit kutsua gnome-keyboard-bindings) että XFce:ssä. Lisäksi jotkin ohjelmat, kuten Amarok, Konqueror, MPD, voivat myös käsitellä näppäinpainalluksia. Muissa ympäristöissä ilman
graafiset konfigurointityökalut vaativat todennäköisesti manuaalisen puuttumisen asetustiedostoihin. Esimerkiksi, jotta IceWM:ssä, kun painat symbolista XF86AudioPlay-nimistä näppäintä, XMMS-soitin käynnistyy, ja kun sitä painetaan uudelleen, se pysähtyy, sinun tulee lisätä rivi ~/.icewm-tiedostoon, joka tulee näkyviin ensimmäisen käynnistyksen jälkeen:

$ mcedit ~/.icewm

näppäin XF86AudioPlay xmms --toisto-tauko

Fluxboxissa soittimen käynnistysrivi näyttäisi tältä:

$ mcedit ~/.fluxbox/keys

Ei mitään XF86AudioPlay:ExecCommand xmms --play-pause

Konfiguraatioissa on yleensä esimerkkejä, joten luulen, että voit helposti selvittää loput ikkunanhallinnasta itse.

Reaktion asettaminen konsolissa

Konsolissa menettely on hieman erilainen. Kuten muistat, dmesg-ulostulo suositteli avainkoodien määrittämistä setkeycodes-komennolla. Mutta tässä on eroja - konsolissa voi olla enintään 128 näppäinkomentoa, sinun tulee valita arvot välillä 0 - 127:

$setkeycodes 0xec 118

Voit tarkastella ilmaisia ​​arvoja nykyisessä näppäimistöasettelutiedostossa. Ubuntussa ja kaikissa Debian-pohjaisissa jakeluissa tämä on yleensä /etc/console-setup/boottime.kmap.gz. Jos käynnistyksen jälkeen avaimissa ei ole ongelmia, lisää tämä rivi johonkin käynnistyskomentosarjaan, esimerkiksi tiedostoon /etc/init.d/rc.local.

Nyt jäljellä on vain asettaa avaimen ja suoritettavan toiminnon välinen vastaavuus. Tässä on vielä enemmän tilaa luovuudelle kuin X:ssä. Keymaps(5) -ohjelmassa avainkoodin täsmäämismenettely on seuraava:

(tavallinen | ) avainkoodi avainnumero = avainsym

# Käännä konsoli takaisin, kun painat näppäintä koodilla 105
keycode 105 = Decr_Console
# Vaihtaa konsolia eteenpäin, kun napsautat ja avain koodilla 106
alt keycode 106 = Incr_Console

Mutta voit luoda omia vaihtoehtoja määrittämällä komennon muuttujissa:

avainkoodi 120 = F100
string F100 = "/sbin/shutdown -h now\n"

Toisin sanoen näppäimen painaminen koodilla 120 suorittaa F100-muuttujassa määritellyn toiminnon; meidän tapauksessamme tietokone on asetettu sammumaan. F100:n sijaan voit tietysti käyttää mitä tahansa muuta nimeä.

Nyt yhtä tärkeä osa on se, mihin tämä kaikki kirjoitetaan. Dokumentaatio ja lukuisat vinkit ehdottavat nykyisen konsolin asettelutiedoston käyttöä (minun tapauksessani boottime.kmap.gz). Muuten, tämä on ainoa tiedosto, joka kuvaa KUbuntun asennuksen jälkeen käytettävissä olevia asetteluja; Jos haluat nähdä muita vaihtoehtoja, sinun tulee asentaa console-data-paketti. Tämän jälkeen hakemistosta /usr/share/keymaps/i386/ löydät useita alihakemistoja, joissa on tiedostoja. Mutta jos sinun on vaihdettava toiseen asetteluun (Ubuntussa ja joissakin muissa jakeluissa /etc/default/console-setup- tai ~/.console-setup-tiedostoa käytetään tähän tarkoitukseen), kaikki asetukset on siirrettävä toiseen. tiedosto, joka on jonkin verran
epämukavaa. Jos päätät ottaa tämän vaiheen, käytä olemassa olevia merkintöjä mallina kirjoittamatta mitään ensimmäiseen kohtaan ja älä unohda jättää tyhjää riviä loppuun.

Vähän kannettavasta

Toistaiseksi en ole törmännyt kannettavaan tietokoneeseen, jonka avainten skannauskoodeja ei voitu määrittää. Siksi tässä esitetyt asetukset eivät eroa yllä kuvatuista. Vaikka on yksi tekniikka, josta haluaisin puhua. Pidän lepotilaa erittäin kätevänä käyttää, kun kun käynnistät tietokoneen, löydät kaiken paikoillaan. Nykyaikaiset jakelut yleensä tukevat sitä, vaikka asennus on yleensä yksinkertainen - asenna vain hibernate-paketti ja ohita tarvittavat parametrit määritystiedostossa. Ainoa asia on, että joka kerta vaihtaaksesi tähän tilaan, sinun on suoritettava komentosarja /usr/sbin/hibernate, mikä ei aina ole kätevää. Haluan vain sulkea kannettavan tietokoneen kannen ja käynnistää sen uudelleen
ruokaa, löydä kaikki paikoillaan.

Tämä on erittäin helppo tehdä käyttämällä acpid-daemonia, joka on eräänlainen käyttöliittymä, jonka avulla voit hallita kaikkia ACPI-tapahtumia, jotka ovat saatavilla /proc/acpi/event kautta. Tässä tapauksessa acpid lukee joukon asetustiedostoja hakemistosta /etc/acpi/events/. Jos demonin sisältävä paketti ei sisälly jakeluun, asenna se arkistosta; Uusin versio on saatavana verkkosivustolta phobos.fs.tum.de/acpi. Asennuksen jälkeen sinun on luotava kaksi tiedostoa /etc/acpi/events-hakemistoon: kansi ja power. Ensimmäinen kuvaa reaktiota kannen sulkemiseen, toinen virtapainikkeen painamiseen.

$ sudo mcedit /etc/acpi/events/lid

tapahtuma=painike/kansi.*
action=/usr/sbin/hibernate

$ sudo mcedit /etc/acpi/events/power

tapahtuma=painike/virta.*
action=/sbin/shutdown -h nyt

Nämä ovat hieman yksinkertaistettuja vaihtoehtoja; KUbuntusta löydät monimutkaisempia komentosarjoja. Tämän jälkeen sinun on käynnistettävä acpid-daemon uudelleen:

$ sudo /etc/init.d/acpid restart

Nyt kun suljet kannettavan tietokoneen kannen, järjestelmä siirtyy horrostilaan virran ollessa pois päältä, ja kun painat virtapainiketta, se sammuu. Yksinkertainen ja kätevä.

Asennusohjelmat

Jos et pidä asetustiedostojen näpertelystä, suosittelen useita ohjelmia, jotka auttavat sinua määrittämään multimedianäppäinten toiminnan. Esimerkiksi Sven-ohjelman (sven.linux.kiev.ua) alkuperäinen tarkoitus on konfiguroida lisänäppäimiä multimedianäppäimistölle, mutta versiosta 0.4 alkaen se voi korjata kirjoitusvirheet ja muuttaa näppäimistön asettelua. Lisäksi, vaikka sinulla olisi tavallinen näppäimistö, sen avulla voit emuloida multimedianäppäimiä käyttämällä sen sijaan pikanäppäimiä. Voit myös määrittää toimintoja tietyille hiiren painikkeille. Hän ymmärtää noin 10 000 venäjän sanaa ja 9 500 englanninkielistä sanaa. Jos ohjelma ei vaihda
itse, asettelua voidaan muuttaa manuaalisesti käyttämällä erityistä näppäintä (oletuksena Break). Erillinen näppäin (Scroll Lock) voi muuttaa sanojen kirjainkokoa (ylempi, alempi, ensimmäinen kirjain on ylempi, loput ovat pienempiä). Näppäimistön asettelun kytkimen ilmaisin muistaa kunkin ikkunan tilan, joten jos vaihdat usein sovellusten välillä, sinun ei enää tarvitse muuttaa asettelua. Ohjelmassa on erinomaiset ominaisuudet, ja suosittelen sinua tutustumaan siihen. Kaikki asetukset tehdään käyttämällä grafiikkaohjelma, rakennettu GTK+ -kirjastoille. Sven testattiin Linuxilla, mutta periaatteessa sen pitäisi toimia *BSD-järjestelmissä. Käytetty ikkunanhallinta
ei väliä.

KeyTouchin (keytouch.sf.net) ominaisuudet ovat hieman vaatimattomammat, tätä apuohjelmaa käytetään yksinomaan multimedianäppäinten määrittämiseen. Vaikka sen avulla voit määrittää eri toiminnon mille tahansa näppäimelle, joka eroaa oletusasetuksista. Ohjelman verkkosivuilta löytyy joidenkin jakelujen lähdetekstien ja pakettien lisäksi valmiita asetuksia tunnetuimpien valmistajien multimedianäppäimistöille.

Toinen mielenkiintoinen ratkaisu- xbindkeys (hocwp.free.fr/xbindkeys/xbindkeys.html) - voit määrittää mitä tahansa komentoja, mukaan lukien komentotulkkikomennot, mille tahansa näppäimistölle ja hiiren painikkeelle. Kaikki asetukset tehdään asetustiedostoon, jonka muoto on yksinkertainen ja ymmärrettävä.

Todennäköisesti jo puhelimessasi asennettu oletuksena QR-koodinlukija, jonka avulla voit helposti skannata ensimmäisen QR-koodisi. Tämä on erittäin helppo tehdä. Seuraa vain ohjeitamme.

1. Avaa puhelimesi QR-koodinlukija.

2. Pidä laitettasi QR-koodin päällä niin, että se näkyy selvästi älypuhelimen näytöllä.

Jos pidät älypuhelinta oikein QR-koodin päällä, tapahtuu seuraavaa:

  • Puhelin skannaa koodin automaattisesti.
  • Joissakin sovelluksissa sinun on napsautettava kuvaa skannataksesi koodin painikkeen sijaan, kuten ottaisit valokuvan älypuhelimellasi.

3. Paina tarvittaessa ilmoitettua painiketta.

Super! Älypuhelimesi lukee koodin ja seuraa annettua linkkiä, mikä ei aina tapahdu hetkessä. Useimmissa laitteissa tämä voi kestää muutaman sekunnin.

Alat nähdä QR-koodeja kaikkialla. Niitä käytetään opettamiseen, tiedottamiseen, selittämiseen ja moniin muihin asioihin. Etsi ne ja skannaa ne! QR-koodit säästävät paljon aikaa ja vaivaa.

QR-koodien skannaus Androidilla

Nyt kerromme sinulle, kuinka voit käyttää QR-koodin skannaussovellusta Androidissa.

Lyhyesti:
1. Avaa Pelikauppa .
2. Hae QR-koodin lukija .
3. Valitse QR-koodin lukija(Skannauksen kautta).
4. Napsauta " Asentaa".
5. Avaa ohjelma QR-koodin lukeminen.
7. Osoita kamera QR-koodiin.
8. Napsauta " OK".

Vaihe 1. Avaa Play Kauppa Androidilla. Tämä on kuvake sovelluksessa tai aloitusnäytössä.

Vaihe 2. Kirjoita hakukoneeseen QR-koodinlukija. Näkyviin tulee luettelo sovelluksista QR-koodin lukemiseen.

  • Tässä artikkelissa kerrotaan, miten QR-koodinlukijaa käytetään, mutta voit valita haluamasi sovelluksen. Muista vain lukea sovelluksesta ennen lataamista.
  • Vaiheiden tulee olla samat kaikissa QR-koodinlukusovelluksissa.

Vaihe 3.Napsauta Scanin kehittämä QR-koodinlukija. Kehittäjän nimi on lueteltu kunkin sovelluksen alla. Saatat joutua vierittämään alas löytääksesi Scanin tekemän sovelluksen.

Vaihe 4.Napsauta Asenna. Näkyviin tulee ponnahdusikkuna, jossa sinua pyydetään myöntämään lupa käyttää tietoja Android-laitteellasi.

Vaihe 5.Napsauta Hyväksy. QR Code Reader asennetaan nyt Android-laitteeseesi.

    • Kun sovellus on ladattu, "Asenna"-painike muuttuu "Avaa" ja sinulla on uusi kuvake sovelluksessa.

Vaihe 6.Avaa QR-koodinlukija. Tämä kuvake näyttää QR-koodilta sovelluksessa. Tämä avaa sovelluksen, joka näyttää tavalliselta kameranäytöltä.

Vaihe 7Kohdista QR-koodi kameran kehyksessä. Vähän niin kuin kuvien ottaminen, paitsi että sinun ei tarvitse painaa mitään painikkeita. Kun viivakoodinlukija lukee koodin, näkyviin tulee ponnahdusikkuna, jossa on koodissa oleva URL-osoite.


Vaihe 8Napsauta "OK" avataksesi verkkosivuston. Tämä käynnistää oletusselaimesi ja siirtyy QR-koodissa olevaan URL-osoitteeseen.

Seuraava tyypillinen PC-laite, joka näyttää yksinkertaiselta, mutta joskus aiheuttaa ongelmia tutkijalle, on näppäimistö.

Yleisesti ottaen laite on yksinkertainen. Eivät varsinkaan jo vanhentuneet mallit, jotka on kytketty PS/2-porttiin. Kuten lukuisat kokeelliset tiedot osoittavat, näppäimistön ohjaussiru skannaa näppäinpainallukset ja lähettää ne sarjakoodina porttiin. Tämän lähetyksen kellotaajuus on (useimmissa tapauksissa) 6,3 tai 10 kHz kerrannainen. Vaikka kirjoittaja törmäsi viime vuosina pariin kopioon, joiden kellotaajuus oli noin 20 kHz.

Kun painat ja pidät painettuna mitä tahansa näppäintä, kaikki näppäimistöt alkavat (tauon jälkeen) toistaa näppäinkoodin lähetyksen "ad infinitum". Normaalitilassa tämä johtaa yleensä ohjaimen puskurin ylivuotoon ja toimintahäiriöön muutamassa sekunnissa. Näkyy äänimerkki järjestelmä "dynamiikka" - "kitista". Testitilan (yleisin hyväksytty) olemus on estää puskurin ylivuotokomento, joka mahdollistaa näppäintä painettaessa varmistaa valitun merkin loputtoman siirron "näppäimistö"-kaapelin kautta.

Kuten aina, oikean myöhemmän tuloksen laskemiseksi on tarpeen luoda jatkuva pulssien vuorottelu koodipakettiin. Näppäimistökoodeilla voi olla kaksi tällaista yhdistelmää:

10101010 (55) näppäin “+; = "

01010101 (AA) vakiotaulukoissa - ei sovellettavissa

Skannauskoodien yleinen taulukko on taulukossa 14.1

Taulukko 14.1- Näppäimistön skannauskoodit

Avain

Skannaa koodi

Avain

Skannaa koodi

Avain

Skannaa koodi

Avain

Skannaa koodi

Siten testaustilaa toteutettaessa ja esimerkiksi painoa asetettaessa “+”-näppäimelle näppäimistökaapelissa on ääretön pulssipakettien sarja. Tässä tapauksessa pulssin toistojakso paketissa (eli kellotaajuus) on yhtä suuri kuin 6,10 tai 20 kHz, ja paketin toistotaajuus on paljon pienempi. Tietojen muoto on esitetty kuvassa 14.1

Tietojen vaihtamiseksi näppäimistökaapelissa on kaksi linjaa - KBData ja KBSync. Skannauskoodeja lähetettäessä näppäimistö asettaa seuraavan databitin KBData-riville ja vahvistaa lähetyksen siirtämällä signaalin "1":stä "0":aan KBSync-rivillä.

Ohjain voi ilmoittaa olevansa valmis lähettämään/vastaanottamaan dataa alhaisella tasolla KBSync-linjalla. Muun ajan, kun lähetettävää dataa ei ole, molemmilla linjoilla on korkea signaalitaso.



Kuten yllä olevasta seuraa, näppäimistökaapelin PEMIN-spektrissä pitäisi odottaa taajuuskomponentteja kellotaajuudella 1/76.04·10 -6 = 13.15 kHz. Lisäksi kahden vaihesiirretyn signaalin läsnäolon vuoksi, joilla on eri (mutta useita!) jaksot, parilliset ja parittomat taajuuskomponentit eroavat amplitudiltaan.

Kuten voisi odottaa, synkronoidun datalinjan PEMIN on periaatteessa epäinformatiivinen. Mutta PEMINien erottaminen toisesta ei ole ollenkaan helppoa. Kaapelia on vain yksi, signaalit ovat synkronisia...

Käytännössä ainoa tapa– valitse skannauskoodi, jossa on vähimmäismäärä loogisia "1s" pakkauksessa. Nämä ovat "F3" ja F9-näppäimet (03 ja 01 heksadesimaalikoodissa). Koodia "00" ei käytetä.

Skannauskoodin "F3" oskilogrammi näkyy alla.


Tarkkaan "energian suhteen", jos mittaat kaikki PEMINin taajuuskomponentit koodilla "=" ja esimerkiksi koodilla "F9", niin ero vastaanottimen lukemissa KAIKKIEN taajuuskomponenttien kohdalla on oikea tieto. osa PEMIN-energiaa. Lisäksi tämä on maksimi maksimi. Työ on melko monimutkaista ja työlästä, jos sitä ei ole mahdollista uskoa "automaattikoneelle". PEMINin komponentit sellaisiin matalat taajuudet ei ole helppo tunnistaa. Joten myös erojen "saappaamiseen"...



SI-käytännössä suurimmassa osassa tapauksia he yksinkertaisesti mittaavat PEMIN-tasoja (vähentämättä mitään) ja laskevat turvaparametrin. Tämä on mahdollista "varauksella", mutta asiantuntijan on tiedettävä asioiden todellinen tila.

Katsauksen lopussa - AT- ja PS/2-näppäimistöliittimien "pinout".


Vastaanottimen "kuvat" eivät näytä läheskään niin "klassisilta", mutta se on silti melko tunnistettavissa. Tässä on esimerkkejä



Spektri osoittaa selvästi komponenttien amplitudin kasvun taajuuden pienentyessä.

Tällä taajuusalueella on myös "klaavi"-mittausten ominaisuuksia (kymmistä kHz:istä ja siitä eteenpäin). Tosiasia on, että näppäimistö sijaitsee tavallisessa paikassaan lähellä järjestelmän yksikkö. Ja SB:n yläosassa on pulssilohko virtalähde on tehokkain PEMIN-lähde sekä E- että H-komponenteille. Tällaisen teatterin valokeilan "valossa" näppäimistön hämärän "valon" näkeminen on erityistä taidetta! Siksi ehdotan seuraavaa tekniikkaa. Siirrä näppäimistö mahdollisimman kauas SB:stä. Parempi - PS/2-laajentimella. Noin 2-2,5 metriä.

Sijoita antenni niin, että se osoittaa mahdollisimman vähän satelliitista (signaali, jonka vastaanottimen kaistanleveys on yli 10 kHz, on jatkuva spektri). Ja lähellä suunnattua, kiinteää antennia, aloita näppäimistön ja sen kaapelin kiertäminen (ei päinvastoin!). Silloin sinulla on paljon paremmat mahdollisuudet havaita PEMIN-signaalit näppäimistöltä ja nähdä PEMIN-komponentit analysaattorin näytöllä omin silmin.

Kaikki yllä oleva koskee näppäimistöä, jossa on PS/2-liitäntä. Mutta nyt niitä korvataan massiivisesti USB-liitännällä varustetuilla näppäimistöillä.

Yleisesti ottaen tästä käyttöliittymästä keskusteltiin yksityiskohtaisesti yhdessä tulostimien kanssa. Olisi kuitenkin hyödyllistä antaa näppäimistölle jokin "kohdenimike".

Muistakaamme USB-liitännän pakettien rakentaminen ottaen huomioon, että näppäimistö on kytketty tiukasti hitaalla nopeudella (eli itse asiassa USB 1.0 -liitännän kautta).

Hitaiden laitteiden DATA-hyötykuorman enimmäiskoko on 8 tavua. Tämä on juuri sitä, mitä näppäimistön skannauskoodi vaatii.

Signaalin (eli datan) näkeminen USB-linjalla ei osoittautunut niin helpoksi. Siitä huolimatta tämä paljastui juuri tyypillisen USB-näppäimistömallin GENIUS KB-06XE kaapelista, erityisesti "data +" -linjasta (johdosta) (Kuva 14.10)


Nämä kaksi oskillogrammia vaihtavat toisiaan määrittelemättömällä (kaoottisella) jaksollisuudella, ja signaalien "kuvat" eivät riipu painetusta näppäimistön näppäimestä (tai ei painetusta). Muita muutoksia paketin (kehyksen) "muuttuvassa" osassa ei voitu tunnistaa.

Näiden pakettien taajuus on tiukasti stabiloitu (kuva 14.11), ja kunkin kesto on (näkyy oskilogrammeista) noin 34 ± 1 μs.


Paketit seuraavat 4 ms:n välein. On kuitenkin huomattava, että jokaisen paketin loppu "värähtelee" koko ajan, ja klassinen "jitter" on havaittavissa. Tästä syystä spektrikuva on hieman epäselvä ja selkeytyy vain riittävän pitkällä keskiarvolla.


Lisäksi tulee ottaa huomioon, että erilaisista pulssien toistojaksoista ja niiden kestoista johtuen spektrillä on jatkuvan ja viivaspektrin jonkin seoksen luonne. Siitä huolimatta spektrin keilaluonne, joka on luonnollinen äärettömälle pakettien sekvenssille ja moninkertainen sen keskimääräisen paketin keston "keilassa", säilyy erittäin selvästi. Vain funktion "nollat" tasoitetaan värinällä ja yksittäisten pulssien muuttumattomalla toistojaksolla. Itse kuva on kuitenkin varsin tyypillinen. Tarkemmalla taajuusresoluutiolla spektri alkaa erottua pakettien toistotaajuuden (250 Hz) määrittäviksi "viivoiksi" (Kuva 14.13) Näin ollen yksinkertaisimmalla oskillogrammien katselulla, joka ei ole synkronoitu skannauskoodin todellisen lähetyksen kanssa, tunnistaa ja visualisoida kehyksen (paketin) osia, jotka vastaavat tiedonsiirrosta, epäonnistuivat. Voidaan kuitenkin väittää, että näppäimistökaapelin PEMIN on silti tämä eikä mikään muu. On selvää, millä taajuuksilla sitä etsitään, on selvää, että se on luonteeltaan jatkuvaa (joka tapauksessa vastaanottimen taajuuden resoluutiolla yli 0,3 kHz). Ja on selvää, mikä arvo korvataan kelloarvona laskelmissa (kokeessa paketin pulssien minimijakso oli 1,322 μs). Tämän mittaaminen millä tahansa SI:llä oskilloskoopilla, jonka kaistanleveys on vähintään 200 MHz, on triviaali tehtävä. Testitila on itse asiassa mikä tahansa, voit painaa mitä tahansa näppäintä tai et paina mitään. Paketit lähetetään joka tapauksessa rajapinnan kautta. Ja ensiarviolta pidämme niitä informatiivisina (kunnes toisin todistetaan).

Annetut oskillogrammit ja spektrit on saatu käyttämällä AKIP-4108/2-oskilloskooppia, joka oli kytketty samaan tietokoneeseen, jolla mittaukset suoritettiin (huomaa, että tämä on erittäin toimiva toisto meidän PICO Technology -yhtiön kehityksestä. Ei huonompi kuin kiinalaiset :)).

Spektri ylittää selvästi 1 MHz:n (oskilloskooppi ei enää sallinut sitä, eikä analysaattorin liittämisessä ollut mitään järkeä). Loput määräytyvät kaapelin satunnaisena antennina ja sen suojausasteen mukaan.

Muita USB-liitännän tiloja varten tarvitset oskilloskoopin, jonka kaistanleveys on useita GHz.

Kuinka tarkalleen laskea jatkuva spektri ja samalla pysyä nykyisen NMD:n puitteissa, on erillinen keskustelu eikä avoin keskustelu, valitettavasti... Mutta myöhemmissä julkaisuissa meidän on palattava siihen, siellä ei ole minnekään mennä. Yritän "pysyä rajoissa"...

Se, mikä sai minut työskentelemään tämänkaltaisen laitteen parissa, oli se, että useimmat helposti toistettavat Gamemort-laitteet eivät sallineet riittävän määrän ohjauspainikkeita. PC-peliportti suunniteltiin alun perin enintään neljälle painikkeelle. Kaikenlaisissa laajennuksissa ei myöskään ole toivottua joustavuutta. Esimerkiksi DIY-tekijöiden suosiossa CH Flightstick Pro -laajennus mahdollistaa jopa 14 painikkeen käyttöönoton, mutta et voi käyttää kahta painiketta samanaikaisesti - noin lentämisestä sellaisilla laitteilla peleissä, joissa sinun on jatkuvasti "käännettävä" pää” - samoissa linnuissa voit unohtaa. Jotkut laajennukset käyttävät puhtaasti digitaalista käyttöliittymää - tiedot painikkeista ja nupin taipumisesta siirretään digitaalisia peliporttilinjoja pitkin, jotka alun perin oli tarkoitettu lähettämään tietoja neljästä "vakiopainikkeesta". Pidän tällaisia ​​laajennuksia jopa hieman tarpeettomina. Ja analogisen tiedon muuntaminen digitaaliseksi vaikeuttaa ohjaussauvan suunnittelua. Lisäksi jokainen peli ei halua ymmärtää, millainen hirviö siihen "kiinni". Ja näppäimistö - tässä se on, kaikessa 102 näppäimen komeudessaan! Lisäksi RU.GAME.FLIGHT-tilaajat lisäsivät polttoainetta tuleen ja kysyivät aika ajoin "miten voin kesyttää näppäimistön ja ylittää sen ilolla?" ja lähteä ilman mitään.

Lyhyesti sanottuna laitteen tehtävänä on "istua" näppäimistön ja PC:n välisellä väylällä ja simuloida näppäimistön näppäinpainalluksia laitteen painikkeiden mukaisesti.

Joten istuin kehittämään sitä. Sitä ennen minulla oli kokemusta erilaisten mikroprosessorien ja mikro-ohjainten kanssa työskentelystä. Yleensä - sormet korvasta korvaan. Ja naiivisti uskoin, että nyt otan telakat, teen RTFM:n ja viikon päästä olen valkoisen hevosen selässä. Koko ongelma oli, että en löytänyt dokumentaatiota näppäimistön ja ohjaimen välisestä tiedonsiirtoprotokollasta Internetistä enkä asiaankuuluvista Fido-konferensseista. Minun täytyi ottaa oskilloskooppi ja viettää useita viikkoja purkaessani väliaikaisia ​​toimenpiteitä ja yrittää toistaa niitä. Siksi suurin osa alla esitetyistä tiedoista on tulosta päätelmistäni, eikä niitä ole dokumentoitu. Jos olen jossain väärässä, kuulen mielelläni kommenttisi osoitteessa rashpil klo ukr piste netto.

Tiedonsiirron perusperiaatteet

Kaikki seuraava koskee PS/2- ja AT-näppäimistöjä, jotka eroavat vain liittimen rakenteesta (voidaan liittää sovittimen kautta).

Kaksisuuntainen tiedonvaihto tapahtuu näppäimistön ja tietokoneen emolevyllä sijaitsevan ohjaimen (jäljempänä yksinkertaisesti "ohjain") välillä. Ohjain lähettää erilaisia ​​komentoja (esimerkiksi LEDien tilan muuttaminen tai automaattinen toistonopeus). Näppäimistö lähettää painettujen näppäinten skannauskoodit (skannauskoodi - symboli avaimia, ei pidä sekoittaa ASCII-koodeihin).

Skannaa koodit

Avain Skannaa koodi Avain Skannaa koodi Avain Skannaa koodi Avain Skannaa koodi
1 16 2 1E 3 26 4 25
5 2E 6 36 7 3D 8 3E
9 46 0 45 - 4E + 55
Askelpalautin 66 Tab 0D K 15 W 1D
E 24 R 2D T 2C Y 35
U 3C minä 43 O 44 P 4d
[ 54 ] 5B Tulla sisään 5A Ctrl (L) 14
A 1C S 1B D 23 F 2B
G 34 H 33 J 3B K 42
L 4B ; 4C " 52 ` 0E
Vaihto (L) 12 \ 61 Z 1A X 22
C 21 V 2A B 32 N 31
M 3A , 41 . 49 / 4A
Vaihto (R) 59 Alt (L) 11 Avaruus 29 Caps Lock 58
poistu 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 Vierityslukko 7E * 7C Numerolukko 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 Tulostusnäyttö E0-12-E0-7C
Lisää E0-70 Poistaa E0-71 Vasen E0-6B Koti E0-6C
Loppu E0-69 Ylös E0-75 Alas E0-72 Sivu ylös E0-7D
Sivu alas E0-7A Oikein E0-74 Tulla sisään E0-5A / E0-4A

Huomautus: AT-näppäimistössä on itse asiassa kolme erilaista skannauskoodisarjaa. Olen antanut vain arvot sarjalle nro 2 - oletusarvolle.

Kun painat näppäintä, näppäimistö lähettää tämän näppäimen skannauskoodin ohjaimelle. Kun vapautetaan, ensin etuliite 0F0h ja sitten vapautetun avaimen skannauskoodi.

Näppäinyhdistelmät Shift-, Alt- ja Ctrl-näppäimillä lähetetään kahden skannauskoodin sarjana. Ohjaimen näkökulmasta nämä näppäimet eivät eroa muista. Samalla tavalla Num Lock- ja Caps Lock -tilat eivät eroa toisistaan ​​laitteistotasolla - ne eroavat ohjelmistotasolla näppäimistön keskeyttämän ohjelman mukaan.

Haluaisin keskustella lyhyesti automaattisen toistotilan toteuttamisesta. Automaattisen toiston toiminnot on yleensä määritetty itse näppäimistölle - tietyn ajan kuluttua, jos näppäintä ei vapauteta, näppäimistö lähettää toisen täsmälleen saman skannauskoodin. Jos painat toista näppäintä tällä hetkellä, toinen skannauskoodi "lentää" ohjaimeen ja katsotaan, että vain yhtä näppäintä on painettu. Pelissä tämä ongelma ratkaistaan ​​yksinkertaisesti - näppäintä pidetään painettuna, kunnes vastaava skannauskoodi etuliitteellä 0F0h saapuu. Siksi en ottanut automaattisen toiston toimintoja periaatteessa käyttöön.

Yllä olevien skannauskoodien lisäksi näppäimistö voi palauttaa joitain palvelukomentoja. Mutta näillä komennoilla, kuten myös ohjaimen antamilla komennoilla, ei ole tässä tapauksessa käytännön arvoa. Siksi en aio käsitellä niitä.

Vaihtoprotokollan kuvaus

Tietojen vaihto näppäimistön ja ohjaimen välillä tapahtuu asynkronisesti sarjaprotokollan avulla. Asynkronisen lähetyksen ydin on, että dataa siirretään vain silloin, kun lähetettävää on - näppäimistön näppäintä painetaan/vapautetaan ja vastaava skannauskoodi on annettava tai ohjaimen on annettava komento näppäimistölle.

Tiedonvaihtoon on kaksi linjaa - KBData ja KBSync. Skannauskoodeja lähetettäessä näppäimistö asettaa seuraavan databitin KBData-riville ja vahvistaa lähetyksen siirtämällä signaalin "1":stä "0":aan KBSync-rivillä. Vastaanottaessaan tietoja ohjaimesta näppäimistö lukee databitin KBData-riviltä ja vahvistaa vastaanoton siirtämällä KBSync-linjan signaalin arvosta 1 arvoon 0. Ohjain voi ilmoittaa olevansa valmis lähettämään/vastaanottamaan dataa alhaisella tasolla KBSync-linjalla. Muun ajan, kun lähetettävää dataa ei ole, molemmilla linjoilla on korkea signaalitaso. KBSync-linjan pulssin toistotaajuus on noin 10-25 KHz.

Data välitetään seuraavassa järjestyksessä: yksi aloitusbitti - "0", kahdeksan databittiä, pariteettibitti (kaikkien bittien summa +1), yksi lopetusbitti - "1". Vastaanotettuaan jokaisen datatavun ohjain asettaa KBSync-linjan matalaksi ja ilmoittaa siten, että se on varattu käsittelemään vastaanotettua dataa eikä ole valmis vastaanottamaan seuraavaa. Tätä voidaan pitää hyväksymisen vahvistuksena. Näppäimistö vahvistaa vastaanotetun komennon jokaisen tavun antamalla koodin 0FAh. Jos lähetyksen aikana tapahtuu virhe, ohjain voi vaatia viimeisen tavun lähetyksen toistamista antamalla 0FEh-komennon. Näppäimistö toimii eri tavalla - se yksinkertaisesti jättää virheet huomiotta. En näe tässä mitään kohtalokasta - jos järjestelmäsi kaatuu usein, sillä ei ole paikkaa työpöydälläsi.

Todennäköisesti selitykseni olivat liian hämmentäviä, joten yritän havainnollistaa niitä useilla aikakaavioilla.

Yleisnäkymä tiedonsiirrosta näppäimistöltä (S1 - aloitusbitti; S2 - lopetusbitti; D0-D7 - data; P - pariteettibitti; W - vastaanotetun datan käsittely)

Esimerkki tavun 74 tunnin lähetyksestä - numeronäppäimistön "6"-näppäin. Tässä esimerkissä, kun näppäimistö aloittaa siirron, ohjain ilmoittaa, että se ei ole valmis vastaanottamaan tietoja ja näppäimistö odottaa KBSync-linjan vapautumista.

Laitteiston toteutus

Nyt siirryn suoraan kuvaukseen laitteen toteutuksesta laitteistossa.

Laite on kytketty KBSync- ja KBData-signaalien katkaisuun ja välittää signaalit näppäimistöltä/näppäimistölle itsensä kautta, kyselee neljän painikkeen tilan ja antaa vastaavat skannauskoodit simuloiden siten näppäimistön toimintaa.

Laite perustuu yksisiruiseen mikrokontrolleriin AT89C2051. Atmel AT89C2051 -mikro-ohjain kuuluu MCS-51-perheeseen ( kotimainen analogi- MK-51). Suurin ero AT89C2051:n ja i8051:n välillä on pienempi virrankulutus, I/O-linjojen määrä 15:een ja ulkoisen muistin käyttökyvyttömyys. Lisää yksityiskohtainen tieto AT89C2051 ja i8051 löytyvät osoitteista www.atmel.com ja www.intel.com. AT89C2051:n sijaan voit käyttää AT89C51:tä, i8051:tä (KR1816BE51) tai i8031:tä (KR1816BE31) ulkoisella ROM-muistilla. Mutta kaksi viimeistä vaihtoehtoa voivat lisääntyneen virrankulutuksensa vuoksi johtaa näppäimistön ohjaimen sulakkeen palamiseen.

Atmelin mikro-ohjaimissa päämerkinnän jälkeen kellogeneraattorin maksimitaajuus ilmoitetaan megahertseinä. Suosittelen asentamaan mikro-ohjaimen, joka on suunniteltu taajuudelle 24 MHz ja kvartsille korkeammalla taajuudella - 16-20 MHz.

Kaaviokuva. (R1-R4 - 47K; R5 - 10K; C1, C2 - 18pF; C3 - 1uF; D1 - AT89C2051; BQ1 - kvartsi 12-24MHz)

Linjaa P1.4 käytetään näppäinkyselyn aktivointilähtönä. Tämä on perusta tuleville laajennuksille - rivejä P1.4-P1.7 käytetään painettujen painikkeiden pollauslinjan osoitteen antamiseen (jopa 16 riviä, joissa kussakin on 4 painiketta). "0" rivillä P1.0-P1.3 tarkoittaa, että vastaavaa painiketta painetaan.

Elementit C3 ja R5 toteuttavat piirin, joka tuottaa nollaussignaalin, kun virta kytketään.

KBData-linjat näppäimistöltä ja ohjaimelta syötetään tuloihin P3.2 (INT0) ja P3.3 (INT1). Siten yritys aloittaa tiedonsiirto näppäimistöltä tai ohjaimelta aiheuttaa vastaavan keskeytyksen. Näiden keskeytysten huoltorutiinit yksinkertaisesti lähettävät signaaleja, jotka vastaavat yhden tavun siirtoa mikro-ohjaimen kautta. Kun mikro-ohjain ei ole varattu tiedonsiirtoon, rivit P1.0-P1.4 pollataan, vastaanotettu data käsitellään ja vastaavat pyyhkäisykoodit annetaan ohjaimelle. Tämä versio antaa etusijalle itse laitteen lähettämät tiedot. Siksi näppäimistön tiedot voivat joskus kadota.

Tämän jakson päätteeksi kerron AT- ja PS/2-näppäimistöliittimistä.

-KBReset-signaali on valinnainen signaali. Jotkut ohjaimet voivat käyttää tätä näppäimistön nollaukseen.

Laiteohjelmiston teksti

Tarjoan AT89C2051-mikro-ohjaimen laiteohjelmiston lähdetekstin siinä toivossa, että utelias lukija voi korjata minut tai mukauttaa ohjelman toimimaan muun tyyppisen mikro-ohjaimen kanssa.

Org 0 sjmp aloita org 3 jmp from_keyboard ; INT0 org 13h jmp to_keyboard ; INT1 aloita siirto a,#5 ; keskeytystyypin asettaminen mov tcon,a ; INT0 ja INT1 edessä - mov a,#0 ; siirtyminen "1":stä "0":aan mov ip,a mov a,#85h mov ie,a mov a,#0ffh ; viimeinen mov 6,a on tallennettu osoitteeseen 06h; käsitelty koodi clr p1.4; ota kyselysilmukka käyttöön mov a,p1 ; painikkeiden anl a,#15 tila luetaan; - portin P1 vähiten merkitsevät neljä bittiä; D0 - ylös; D1 - oikea; D2 - alas; D3 - vasen mov dptr,#hat_taulukko ; lue tiedot neljästä painikkeesta movc a,@a+dptr ; laajennettu kahdeksaan suuntaan; D0 - ylös; D1 - oikea; D2 - alas; D3 - vasen; D4 - oikealle ylös; D5 - oikealle alas; D6 - vasen alas; D7 - vasen ylös mov r2,a ; tietojen tallentaminen mov r0,a xrl a,6 ; jos uusi data ei eroa jz-silmukasta; vastaanotettu edellisessä jaksossa - toista kysely mov r1,#8 ; silmukka kahdeksalle bitille loop3 jnb acc.7, loop2 ; "1" - tapahtui muutos push acc mov a,r1 mov dptr,#key_table-1 ; pura vastaava skannauskoodi movc a,@a+dptr push acc mov a,r0 ; rekisteri R0 - rlc:n painamisen/vapautuksen merkki a ; emuloitu avain mov r0,a ; "1" - "avain" vapautettiin pop acc mov acc.7,c ; jos D7=1 - skannauskoodia edeltää 0f0h acall send_key ; skannauskoodin antaminen 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 loop send_key mov ie,#80h ; keskeyttää estetty acall send2comp ; skannauskoodin lähettäminen mov ie,#85h ; keskeytykset käytössä ret send2comp jnb acc.7,send ; tarvittaessa 0f0h push acc mov a,#0f0h acall lähetä pop acc clr acc.7 mov b,#200 l9 nop djnz b,l9 lähetä push 1 push 0 clr p3.3 ; P3.3 - KBData mov b,#6 ; alkubitti 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 ; kahdeksan databitin tulostaminen ja pariteettilaskenta 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 ; lähtöpariteettibitti 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 ; lähtö stop bit 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 ; yhden tavun siirto ohjaimeen mov eli #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 ; yhden tavun siirtäminen näppäimistöön mov eli #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 eli ,#85h reti hat_table ; taulukko portista P1 luetun datan laajentamiseksi; taulukon indeksi on nelibittinen binaarikoodi; data - kahdeksan emuloidun avaimen tila; "0" - näppäintä painettu db 0ffh ; vasen+oikea+ylös+alas=kielletty yhdistelmä db 0ffh ; vasen+oikea+alas=kielletty yhdistelmä db 0ffh ; vasen+ylös+alas=kielletty yhdistelmä db 0bfh ; vasen+alas=vasen-alas db 0ffh ; vasen+oikea+ylös=kielletty yhdistelmä db 0ffh ; vasen+oikea=kielletty yhdistelmä db 07fh ; vasen+ylös=vasen ylös db 0f7h ; vasen db 0ffh ; oikea+ylös+alas=kielletty yhdistelmä db 0dfh ; alas+oikea=alas-oikea db 0ffh ; ylös+alas=kielletty yhdistelmä db 0fbh ; alas db 0efh ; oikea+ylös=oikea ylös db 0fdh ; oikea db 0feh ; ylös db 0ffh ; ei painikkeita painettu key_table ; skannauskooditaulukko db 75h; numeronäppäimistö 8 db 74h ; numeronäppäimistö 6 db 72h ; numeronäppäimistö 2 db 6bh ; numeronäppäimistö 4 db 7dh ; numeronäppäimistö 9 db 7ah ; numeronäppäimistö 3 db 69h ; numeronäppäimistö 1 db 6ch ; numeronäppäimistö 7

Tools.zip-arkistosta löydät kaksi ohjelmaa: a51.exe - assembler, hex2bin - muuntaja hex-tiedostoista, jotka saadaan assemblerin lähdöstä binäärimuotoon, joka soveltuu mikro-ohjaimen ROM-muistin päivittämiseen ohjelmoijalla .

Kokoaminen ja vianetsintä

Voit koota laitteen yllä olevan kaavion mukaan leipälaudalle, kotona syövytetylle tai teollisesti valmistetulle levylle. Mikro-ohjaimen alle tulee laittaa pistorasia. On parasta jättää levylle tilaa 2-3 16-nastaiselle DIP-paketille - ne lisätään myöhemmissä versioissa.

Seuraavaksi, kun halutut muutokset on tehty, kootaan mikroohjelman lähdeteksti a51.exe-ohjelmalla. Laiteohjelmiston päivittämiseksi ohjelmoijan kanssa hex2bin.exe-ohjelma muuntaa tuloksena olevan hex-tiedoston binäärikuvaksi.

Kun laite on koottu kokonaan, yhdistämme sen näppäimistöön ja tietokoneeseen. Kolme... Kaksi... Yksi... Mennään!.. Tunnetuista hyvistä komponenteista oikein kootun laitteen pitäisi toimia heti. Jos ei, tarkista oikea asennus ja mikro-ohjaimen virran saanti. Tarkista oskilloskoopilla, onko kellogeneraattori käynnistynyt ja tuleeko korkean tason pulssi RST-tuloon, kun virta kytketään. Kun painetaan näppäimistön näppäimiä, rivien P3.3 ja P3.5 pulssien tulee toistaa jonkin verran viiveellä pulssit rivillä P3.2 ja P3.4. Kun painat/vapautat laitteen painikkeita, pulssien pitäisi näkyä myös riveillä P3.3 ja P3.5. Jos tämä ei auta, kirjoita minulle ( rashpil klo aport piste ru) virheraportti, josta käy ilmi näppäimistösi, emolevyn/monikorttisi, käytetyn mikro-ohjaimen malli ja tyyppi (AT, PS/2) ja käytetyn taajuus kvartsiresonaattori. Yritin testata laitetta suurimmalla käytettävissäni olevalla määrällä emolevyt ja näppäimistöt - ongelmia ei havaittu. Minun tapauksessani käytettiin 14,2 MHz kvartsia.

Tunnetut bugit

Laiteohjelmiston nykyinen versio sisältää seuraavat viat:

  • Kaksitavuisia skannauskoodeja ei seurata. Tämä johtaa siihen, että joskus, kun käytetään kota ja näppäimistöä samanaikaisesti, näppäimistön näppäimet "jäätyvät" painettaessa tai ne havaitaan väärin;
  • Joskus tietoja siirretään väärin ohjaimesta näppäimistölle. Tämä voidaan ilmaista esimerkiksi siinä, että LEDit eivät muuta tilaansa, kun Num Lock, Caps Lock, Scroll Lock -näppäimiä painetaan;
  • Mökin painikkeiden koskettimien kolinaa. Toistaiseksi tämä ei ole ollut kohtalokasta minulle pelaamisessa.

Tulevaisuuden suunnitelmat

Tässä on lyhyt luettelo siitä, mitä haluaisin ottaa käyttöön tulevissa versioissa:

  • Pienet bugikorjaukset - oikeampi signaalinkäsittely; kaksitavuisten skannauskoodien seuranta;
  • 16x4 matriisin liitäntä - tuki jopa 64 painikkeelle tai kahdelle kotalle ja jopa 56 painikkeelle;
  • Tukee jopa 16 erilaista skannauskoodiasettelua, jotka on tallennettu mikro-ohjaimen ROM-muistiin;
  • NVRAM-sirun liitäntä, jossa on mahdollisuus tallentaa ja ohjelmoida uudelleen "lennossa" jopa 32 skannauskoodiasettelua.

Johtopäätös

Yritin esittää kaikki tarvittavat tiedot laitteeni toimintaperiaatteen ymmärtämiseksi. Tämä kuvaus ei väitä olevansa 100 % teknisesti tarkka. Jos olen jossain väärässä, kerro minulle oma versiosi tapahtumista. Jos voit tehdä parannuksia ja lisäyksiä piiriini ja/tai laiteohjelmistoon, jos sinulla on ideoita piirin edelleen kehittämiseksi, kerro myös minulle. Lisäksi odotan tietoja käsityöläisiltä, ​​jotka pystyivät kopioimaan tai mukauttamaan tämän laitteen muun tyyppisiin mikrokontrollereihin.

Vladimir "Rasp" Klimus (rashpil klo ukr piste netto)

  1. Google Play -ikkunan yläosassa on hakumerkkijono. Juuri tätä tulemme käyttämään. Aktivoimme ja kirjoitamme sovelluksemme nimen. Sitä ei tarvitse syöttää kokonaan. Heti kun kuvakaappauksessa mainittu kohde ilmestyy hakutuloksiin, napauta sitä.
  1. Meidät ohjataan ohjelman kotisivulle. Siellä on iso vihreä painike, jossa lukee "INSTALL". Klikkaa sitä.
  1. Odotamme sovelluksen latauksen päättymistä. Koska se painaa hieman alle 5 Mt, prosessi ei vie paljon aikaa.
  1. Valmis. Kun automaattinen asennus on valmis, voimme käynnistää ohjelman suoraan täältä.
  1. Myös päällä aloitusnäyttö(jos se on aktivoitu asetuksissa) käynnistyspikakuvake tulee näkyviin.

Tässä vaiheessa ohjelman asennus on valmis, ja voimme siirtyä yleiskatsaukseen sen kanssa työskentelemisestä.

Alla olevassa kuvakaappauksessa näet ohjelmiston käyttöliittymä. Tässä se on jaettu 3 päävälilehteen. Siellä on myös hammaspyörän muodossa tehty asetuskuvake. "SCAN"-päävälilehdellä on 4 päätyökalua:

  • Skannaa viivakoodi. Tämä on QR-skanneri, joka toimii kameran kautta;
  • Manuaalinen näppäily. Manuaalisen koodin tiedonsyöttötoiminto;
  • Purkaa tiedostosta. Dekoodaus tiedostosta. Täältä voit avata aiemmin ladatun QR-koodin ja lukea sen;
  • Pura URL-osoitteesta. Skannaa linkin kautta.

Alareunassa on useita painikkeita, jotka eivät tarjoa hyödyllisiä toimintoja. Niihin ei pidä kiinnittää huomiota.

Katsotaanpa ohjelman asetuksia. Niitä on täällä aika paljon. Näytöilläsi on kuvakaappauksia eri konfiguraatioalueista, mutta kerromme vain joitain mielenkiintoisimmista kohdista.

Esimerkiksi ensimmäisessä näytössä voit ottaa ohjelman äänen käyttöön tai poistaa sen käytöstä. Sama voidaan tehdä tärinävasteella. Voit asettaa toimintatilan, kun ohjelma käynnistyy välittömästi skannerista päävalikon ohittaen. Toinen tärkeä ominaisuus on tietojen automaattinen kopiointi leikepöydälle.

Heti kun haluamme aloittaa skannauksen ja käynnistää itse skannerin, ohjelma pyytää pääsyä tarvittaviin järjestelmäresursseihin. Luonnollisesti se on ratkaistava. Napsauta kuvakaappaukseen merkittyä painiketta.

Seuraavaksi asetamme skannerin kehyksen niin, että vaakasuora nauha putoaa suoraan QR:n päälle. Yritä olla kättelemättä ja samalla tarkkaile keskittymistäsi. Ilman normaalia terävyyttä skannaus ei onnistu.

Jotta QR BARCODE SCANNER voisi toimia heikossa valaistuksessa, siinä on taustavalo.

Kun koodi on tunnistettu, näet alla olevassa kuvakaappauksessa näkyvät tiedot.

QR-koodien skannaamisen lisäksi voit myös luoda niitä täällä. Voit tehdä tämän siirtymällä kolmanteen välilehteen. Merkitsimme sen kuvakaappaukseen. Luettelo näyttää kaikentyyppiset tiedot, jotka voidaan salata. Seuraavaa tuetaan:

  • puhelinluettelon yhteystiedot;
  • puhelinnumero;
  • URL-osoite;
  • Sähköposti;
  • sovellus;
  • sijainti;
  • mikä tahansa teksti;
  • kirjanmerkki;
  • kalenteritapahtuma.

Kaikki näyttää tältä:

Kun tietotyyppi on valittu ja määritetty, meidän tarvitsee vain napsauttaa "Koodaa" -painiketta. Tässä tapauksessa olemme salaaneet linkin.

Yritetään salata myös mielivaltainen teksti. Voit tehdä tämän valitsemalla haluamasi kohteen.

Kirjoita lause sille varattuun kenttään ja paina "Koodaa" -painiketta.

Tulos näyttää upealta. Vaihdetaan myös sen väriä. Napsauta tähän tarkoitettua painiketta.

Valitse haluamasi sävy paletista.

Ja ihailemme saatua QR-koodia.

Siirrytään seuraavaan ohjelmaan, jossa on myös vaikuttava toiminnallisuus.

QR Droid-koodinlukija

Toinen sovellus, joka löytyy Google Playsta. Voit myös ladata sen Google-sivuston suorasta linkistä. Toistaiseksi tarkastelemme itse ohjelmaa.

Tältä näyttää QR Droid Code Scanner -käynnistyspikakuvake - napsauta sitä.

Tämä sovellus, toisin kuin edellinen, on tehty venäjäksi, ja heti kun se käynnistyy, meidän on napsautettava painiketta, joka sanoo: "ALOITA".

Skanneri näkyy heti, mutta katsotaan ensin sen asetuksia. Napauta oikeassa yläkulmassa olevaa painiketta.

Päävalikossa näkyy 6 painikeruutua, jotka ohjaavat käyttäjän haluttuun osioon. Täällä he ovat:

Joten, jotta voit käyttää skanneria, sinun on aktivoitava se päävalikosta ja osoittamalla QR-koodia, painettava "Lue" -painiketta.

Täältä valitset aloitusnäytön ja asetat osoitteen Varakopio ja ohjelmistoliittymän kieli on määritetty.

Seuraavaksi voimme asentaa skannausmekanismin. Käytetään yhtä patentoiduista algoritmeista: Zapper tai ZXing. Alla voit ottaa hiusristikon käyttöön tai poistaa sen käytöstä, määrittää automaattinen toiminta skannauksen jälkeen ja salli työkaluvihjeiden näyttäminen tai linkin kopioiminen leikepöydälle.

Tämä osio määrittää äänisäestys, tärinä kytkeytyy päälle ja pois päältä. Toimintojen tallentaminen lokiin ja vuorovaikutus älykello Android Wear.

Sitten voimme viedä tai tuoda varmuuskopio tai aseta päivämäärä.

Salli nimettömien tietojen lähettäminen (on parempi poistaa käytöstä), aktivoi tarkistuksen aikana vastaanotetun suojauslinkin vahvistus tai määritä eräskannaus. Ominaisuudet, kuten zoomaus tai korostus, ovat saatavilla alla.

Mutta asetuksemme eivät lopu tähän. Yllä olevien toimintojen lisäksi meillä on seuraavat:

  • näytön suunnan asettaminen;
  • työskentely etukameran kanssa;
  • linkin jäsentäminen;
  • myymälöiden esittely.
  • laajennettu liukutoiminto;
  • joidenkin erikoismerkkien kieltäminen;
  • WEB-esikatselun aktivointi;
  • etsi tallennettuja kuvia.

Viimeinen asetusnäyttö sisältää mielenkiintoisia ominaisuuksia, kuten asemien enimmäismäärän asettamisen, mukautettujen CSV-tiedostojen konfiguroinnin, älykellon ravistamisen ja päällekkäisten asemien tallentamisen.

Asetusten lisäksi QR Droid Code Scanner -valikossa on kohta nimeltä "Lisää". Mietitäänpä sen toimivuutta.

Tässä on seuraavat mahdollisuudet:

Katsotaanpa viimeistä, mutta ei vähemmän toimivaa sovellusta luettelossamme.

NeoReader QR- ja viivakoodilukija

Tämän ohjelman, kuten muutkin, voit ladata ja asentaa kautta Google play tai suoran linkin kautta. Kun tämä on tehty, voit jatkaa suoraan sen kanssa työskentelemiseen.

Kun käynnistämme ensimmäisen kerran, meidän on täytettävä käyttöoikeuspyyntö. Napsauta "ALLOW".

Sitten näkyviin tulee asetusikkuna. Täällä voit valita kielen, ilmoittaa maasi, sukupuolesi ja ikäsi. Alla olevien kahden valintaruudun avulla voit ottaa käyttöön tai poistaa käytöstä ohjelman pääsyn geotietoihin.

Voit todella aloittaa skannauksen. Suuntaa kamerasi QR-koodiin, niin NeoReader QR & Barcode Scanner tunnistaa sen sisällön automaattisesti.

Uskomme, että nämä kolme ohjelmaa ovat täysin riittäviä kenelle tahansa. Valitse sinulle sopivin ja käytä sitä harkintasi mukaan. Puhumme joistakin kiinalaisten laitteiden ominaisuuksista.

Vakiotoiminnallisuus

Joissakin älypuhelimissa ja tableteissa (merkistä riippuen) on QR-koodin skannaustoiminto vakiona, ja kaikki onnistuu ilman sovellusta. Emme luettele niitä kaikkia; käsittelemme vain Xiaomin mallia.

Tehdään se yhteenveto

Tämän seurauksena opimme skannaamaan QR-koodin Androidilla eri tavoilla. Toivomme, että artikkelista oli sinulle hyötyä. Jos sinulla on vielä kysyttävää, kysy ne kommenteissa. Yritämme auttaa kaikkia.

Vaikka näin ei tapahtuisi, yksi sivuston käyttäjistä kertoo varmasti, kuinka pääset pois tilanteesta ja antaa käytännön neuvoja. Sinun tarvitsee vain herättää se henkiin.

Video ohje




Yläosa