Billentyűzet billentyűkódok táblázatának beolvasása. A pemin digitális jelek kiértékelésének kérdéséről. billentyűzetek. QR-kódok beolvasása Androidon

Többség modern billentyűzetek multimédiás gombokkal van felszerelve, és az egerek már három-hét gombbal rendelkeznek. Sofőrök és mindenféle hasznos programokat Csak Windows. Mindenki tudja, hogy a Linux arról híres, hogy képes személyre szabni a rendszert, ha természetesen tudja, hol és mit kell beállítani. A mi feladatunk, hogy megtanítsuk a pingvint további cipókkal dolgozni.

A kulcs szkennelési kódjának meghatározása

Nem számít, mit nyomunk meg a billentyűzeten, az X szervernek és a kernelnek általában nem mindegy, hogy mit írnak vagy rajzolnak rá. Csak a gomb letapogatási kódja érdekli őket, és először az X-ek olvassák be a kernel kulcskódtáblázatát, majd a kulcskód hozzá van kapcsolva a saját kódtáblázatához. Ha be Windows problémák A multimédiás billentyűk beállítása a konzolban önmagában nincs, ezért Linuxban külön kell beállítani a gombnyomásra adott reakciót a konzolban és az X-Windowban.

A kulcskód kiderítéséhez használja az X szerverhez mellékelt xev segédprogramot. Indítása után megjelenik az Eseménytesztelő ablak, most nyomja meg egymás után a billentyűket, emlékezve a kiadott kódra:

$xev
...
KeyRelease esemény, sorozat 31, szintetikus NO, ablak 0x3e00001,
root 0x67, subw 0x0, time 279734676, (311,611), root:(1104,687),
állapot 0x2000, kulcskód 236 (keysym 0x1008ff19, XF86Mail), azonos_képernyő IGEN,

Az XFilterEvent eredménye: False
KeyRelease esemény, serial 31, szintetikus NO, ablak 0x2600001,
root 0x67, subw 0x0, time 265877259, (883,334), root:(886,358),
állapot 0x0, kulcskód 161 (keysym 0x0, NoSymbol), azonos_képernyő IGEN,
Az XLookupString 0 bájtot ad:
Az XFilterEvent eredménye: False

A kimenet hatalmas lehet, mivel minden egérmozdulatot nyomon követ a rendszer, amint áthalad az Event Tester ablakon. A kulcsot a KeyRelease blokk írja le, a kulcskód értéke pontosan az a szkennelési kód, amelyet tudni akarunk. A bemutatott példában két billentyűt kell lenyomni. A 236-os kulcskód megfelel a keysym-ben megadott X-kiszolgáló kulcskódjának, valamint az XF86Mail műveletnek, amely a KDE-ben elindítja az alapértelmezett levelezőklienst. A 161-es kulcsnál a kód és a művelet nincs meghatározva.

Lehetséges, hogy megnyomnak egy gombot, de a beolvasási kódot nem adják ki. Ez azt jelenti, hogy a kernel nem talál megfelelő értéket. A dmesg kimenetnek a következő sort kell tartalmaznia:

Használja a "setkeycodes 0xec "hogy ismertté tegye.

Ez azt jelenti, hogy felajánlja, hogy saját maga állítsa be a kulcskeresési kódot a setkeycodes segítségével, és a kulcskód értékének kiválasztása nagyon egyszerű. A kapott számot konvertálja decimális számmá (a legtöbb számológép képes erre), és adjon hozzá 128-at. Ebben a példában 0xec = 236, azaz a 364-es szkennelési kódot kapjuk. Ha kétségei vannak, a használt és nem használt szkennelési kódok listája megtekinthető a getkeycodes segédprogram futtatásával a konzolban vagy a dumpkeysben. Például, ha a kimenet a „getkeycodes | grep<код клавиши>"nem adott semmit, így ez a kód biztonságosan használható.

Az XKeycaps segédprogram (www.jwz.org/xkeycaps), amely az Xmodmap grafikus felülete, szintén segíthet a szkennelési kód meghatározásában.

A xev program természetesen nem működik a konzolban. A kernel által kiadott szkennelési kód kiderítéséhez használja a showkey vagy getkeycodes segédprogramot:

$showkey
a billentyűzet UNICODE módban volt
nyomja meg bármelyik gombot (a program az utolsó megnyomás után 10 másodperccel befejeződik)...
0xe0 0x6c 0xe0 0xec

Az első két számjegy a lenyomott billentyűnek, a második a megnyomás hiányának felel meg.

Szkennelési kód-kötés beállítása az X-Windowban

Tehát most vannak szkennelési kódjaink, jeleznünk kell az X szervernek, hogy ennek a billentyűnek a lenyomásakor valójában mit kell tennie, vagyis szimbolikus nevet kell neki rendelni. A szimbólumnevek listája az XF86keysym.h fejlécfájlban található. Alapértelmezés szerint az X szerver fejlécfájljai nincsenek telepítve a modern disztribúciókra. Az Ubuntuban való megtekintéséhez telepítenie kell az x11proto-core-dev csomagot, amely után ez a fájl az /usr/include/X11 könyvtárban lesz. Alternatív megoldásként kapcsolatba léphet az X.Org CVS szerverrel. Nézzük:

$ cat /usr/include/X11/XF86keysym.h
/*
* Néhány „Internet” billentyűzeten található billentyűk.
*/
#define XF86XK_Standby 0x1008FF10
#define XF86XK_AudioLowerVolume 0x1008FF11
#define XF86XK_AudioRaiseVolume 0x1008FF13
#define XF86XK_AudioPlay 0x1008FF14
#define XF86XK_AudioStop 0x1008FF15
#define XF86XK_Mail 0x1008FF19

Ha összehasonlítjuk az utolsó sort az xev kimenettel, azt látjuk, hogy az értékek egyeznek a 236-os kulcskóddal - keysym 0x1008ff19, XF86Mail (az XK_ utótag nélkül). A /usr/share/X11/XKeysymDB fájlban talál egy listát az összes elérhető értékről, amelyeket használni kell.

Kétféleképpen hozhat létre saját elrendezést: készítsen leírást a billentyűzetről, vagy használja az Xmodmap alkalmazást. Az utolsó módszer a legegyszerűbb, ezért tovább fogunk beszélni róla. A felhasználó saját könyvtárában hozzunk létre egy fájlt.Xmodmap, amibe beírjuk a kívánt értékeket:

$ mcedit ~/. Xmodmap

kulcskód 161 XF86Számológép
kulcskód 174 XF86AudioLowerVolume
kulcskód 176 XF86AudioRaiseVolume
kulcskód 162 XF86AudioPause

És így tovább, az elv szerintem egyértelmű. Ezenkívül a kulcskód decimális és hexadecimális formában is megadható. Megfigyeléseim szerint a legtöbb kulcs kódja szabványos. Ezért ha egyszer beállítja a billentyűlenyomásra adott választ, és átviszi a fájlt egy másik számítógépre, akkor fennáll annak az esélye, hogy egy másik billentyűzeten is hasonló lesz a reakció a szintén aláírt billentyű lenyomására. A GDM-mel rendelkező Gnome asztal felhasználói ezeket a sorokat a rendszerszintű /etc/X11/Xmodmap fájlba írhatják.

Más esetekben továbbra is szólnunk kell az X szervernek, hogy használja a generált fájlt. Ezt a különböző disztribúciókban másképp valósítják meg, az alapötlet az, hogy a felhasználó bejelentkezésekor vagy az X indulásakor futtassuk a /usr/bin/xmodmap $HOME/.Xmodmap parancsot.Itt mindenki úgy táncol, ahogy akar. A fórumokon a $HOME/.xsession fájl (egyes disztribúciókban .Xsession néven), az .xprofile vagy az /etc/X11/Xsession rendszer használatát javasolják. És attól tartok, ez még nem minden lehetséges opciók. Lássuk, hogyan történik ez a KUbuntuban:

$ sudo grep -iR xmodmap /etc

Ennek eredményeként egy nagyon érdekes /etc/X11/Xsession.d/80ubuntu-xmodmap fájlt találunk a következő tartalommal:

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

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

USRMODMAP="$HOME/.Xmodmap"

if [ -x /usr/bin/xmodmap]; akkor
if [ -f "$USRMODMAP" ]; akkor
/usr/bin/xmodmap "$USRMODMAP" || igaz
fi
fi

Vagyis betöltődik az ubuntu.xmodmap fájl tartalma és a user.Xmodmap, ha létezik. Amikor megnyitja az ubuntu.xmodmap fájlt a szerkesztőben, megjelenik a kulcskódok és a kapcsolódó szimbolikus nevek listája. Ebből arra következtethetünk: ha egy fejlesztő arról számol be, hogy a disztribúciója támogatja a multimédiás billentyűzeteket, akkor nagy valószínűséggel találhat hasonló fájlt. Más disztribúciók hasonló rendszerrel rendelkeznek az egyéni xmodmap fájlok indítására.

Most, hogy a billentyűkhöz szimbolikus neveket rendeltek, hozzárendelheti a kívánt műveleteket. Egyes ablakos környezetek, mint például a KDE, képesek szimbolikus neveken alapuló műveleteket kezelni. Tehát, ha megnyomja a gombot az XF86AudioPlay (QUESTION) funkcióval, az alapértelmezett lejátszó kezdi el a lejátszást. A kívánt kombináció beállításához lépjen a „KDE Vezérlőközpont -> Területi és kisegítő lehetőségek -> Billentyűzetkombinációk” menüpontra (a KUbuntuban nézze meg a „Rendszerbeállítások -> Billentyűzet és egér” részt). Hasonló menüpont van a Gnome-ban (egyszerűen hívhatjuk a gnome-keyboard-bindings-t) és az XFce-ben is. Ráadásul egyes programok, mint például az Amarok, Konqueror, MPD, a billentyűleütéseket is képesek feldolgozni. Más környezetben anélkül
A grafikus konfigurációs eszközök valószínűleg manuális beavatkozást igényelnek a konfigurációs fájlokban. Például, hogy az IceWM-ben egy XF86AudioPlay szimbolikus nevű billentyű megnyomásakor az XMMS-lejátszó elindul, és ismételt megnyomásra szünetel, akkor az első indítás után megjelenő ~/.icewm fájlhoz kell hozzáadni a sort:

$ mcedit ~/.icewm

gomb XF86AudioPlay xmms --play-pause

A Fluxboxban a lejátszó elindításának sora így néz ki:

$ mcedit ~/.fluxbox/keys

Nincs XF86AudioPlay:ExecCommand xmms --play-pause

A konfigurációkban általában vannak példák, így szerintem a többi ablakkezelőt könnyen kitalálhatod magadnak.

A reakció beállítása a konzolban

A konzolban az eljárás kissé eltér. Mint emlékszel, a dmesg kimenet a kulcskódok hozzárendelését javasolta a setkeycodes paranccsal. De itt vannak különbségek - a konzolban nem lehet több 128 billentyűparancsnál, 0 és 127 közötti értékeket kell választania:

$setkeycodes 0xec 118

Megtekintheti a szabad értékeket az aktuális billentyűzetkiosztási fájlban. Ubuntu és minden Debian-alapú disztribúció esetén ez általában az /etc/console-setup/boottime.kmap.gz. Ha az indítás után nincs probléma a kulcsokkal, adja hozzá ezt a sort az egyik indítási parancsfájlhoz, például az /etc/init.d/rc.local fájlba.

Most már csak be kell állítani a megfelelést a kulcs és a végrehajtandó művelet között. Itt még több hely van a kreativitásnak, mint az X-ekben. A keymaps(5)-ben a kulcskód egyeztetésének eljárása a következő:

(sima | ) kulcskód kulcsszám = kulcsszim

# Ha megnyomja a 105-ös kódot, akkor kapcsolja vissza a konzolt
keycode 105 = Decr_Console
# Ha rákattint, eggyel előre fordítja a konzolt és egy kulcs 106-os kóddal
alt keycode 106 = Incr_Console

De létrehozhatja saját beállításait a parancs változókban történő megadásával:

kulcskód 120 = F100
string F100 = "/sbin/shutdown -h now\n"

Más szavakkal, a 120-as kódú billentyű megnyomása az F100-as változóban meghatározott műveletet hajtja végre; esetünkben a számítógép leállításra van állítva. Az F100 helyett természetesen bármilyen más név is használható.

Most ugyanilyen fontos rész az is, hogy mindezt hova írjuk le. A dokumentáció és számos tipp a jelenlegi konzolelrendezési fájl használatát javasolja (esetemben a boottime.kmap.gz). Egyébként ez az egyetlen fájl, amely leírja a KUbuntu telepítése után elérhető elrendezéseket; További lehetőségek megtekintéséhez telepítse a console-data csomagot. Ezek után a /usr/share/keymaps/i386/ könyvtárban több alkönyvtár is található, amelyeken belül vannak fájlok. De ha másik elrendezésre kell váltania (az Ubuntuban és néhány más disztribúcióban az /etc/default/console-setup vagy a ~/.console-setup fájlt használják erre a célra), az összes beállítást át kell vinni egy másikba. fájl, ami valamelyest
kényelmetlen. Ha úgy dönt, hogy megteszi ezt a lépést, használja a meglévő bejegyzéseket sablonként anélkül, hogy bármit is írna az első helyre, és ne felejtsen el üres sort hagyni a végén.

Egy kicsit a laptopról

Eddig nem találkoztam olyan laptoppal, aminek a kulcsszkennelési kódjait ne lehetett volna megállapítani. Ezért az itt megadott beállítások nem különböznek a fent leírtaktól. Bár van egy technika, amiről szeretnék beszélni. Nagyon kényelmesnek találom a hibernált üzemmódot, amikor a számítógép bekapcsolásakor mindent a helyén talál. A modern disztribúciók általában támogatják, bár a beállítás általában egyszerű - csak telepítse a hibernált csomagot, és írja felül a konfigurációs fájl szükséges paramétereit. Az egyetlen dolog, hogy minden alkalommal, amikor erre a módra vált, le kell futtatnia az /usr/sbin/hibernate parancsfájlt, ami nem mindig kényelmes. Csak szeretném lecsukni a laptop fedelét és újra bekapcsolni
étel, fedezzen fel mindent a helyén.

Ez nagyon könnyen megtehető az acpid démon használatával, amely egyfajta felhasználói felület, amely lehetővé teszi a /proc/acpi/event fájlon keresztül elérhető ACPI események kezelését. Ebben az esetben az acpid beolvassa a konfigurációs fájlokat az /etc/acpi/events/ könyvtárból. Ha a démont tartalmazó csomag nem szerepel a terjesztésben, telepítse a tárból; A legújabb verzió a phobos.fs.tum.de/acpi webhelyről szerezhető be. A telepítés után két fájlt kell létrehoznia az /etc/acpi/events könyvtárban: lid és power. Az első a fedél zárására, a második a bekapcsológomb megnyomására adott reakciót írja le.

$ sudo mcedit /etc/acpi/events/lid

event=button/lid.*
action=/usr/sbin/hibernate

$ sudo mcedit /etc/acpi/events/power

event=button/power.*
action=/sbin/shutdown -h most

Ezek némileg leegyszerűsített opciók; a KUbuntuban bonyolultabb szkripteket találhat. Ezután újra kell indítania az acpid démont:

$ sudo /etc/init.d/acpid restart

Most, amikor lecsukja a laptop fedelét, a rendszer kikapcsolt állapotban hibernált állapotba kerül, a bekapcsológomb megnyomásakor pedig kikapcsol. Egyszerű és kényelmes.

Telepítő programok

Ha nem szeret a konfigurációs fájlokkal babrálni, ajánlok néhány programot, amelyek segítenek a multimédiás billentyűk működésének konfigurálásában. Például a Sven program (sven.linux.kiev.ua) eredeti célja további billentyűk konfigurálása egy multimédiás billentyűzeten, de a 0.4-es verziótól kezdve képes kijavítani a gépelési hibákat és megváltoztatni a billentyűzetkiosztást. Sőt, még ha van is egy normál billentyűzeted, a segítségével emulálhatod a multimédiás billentyűket billentyűparancsok használatával. Az egér egyes gombjaihoz műveleteket is rendelhet. Körülbelül 10 000 orosz szót és 9 500 angol szót ért. Ha a program nem vált át
magát, akkor az elrendezés manuálisan módosítható egy speciálisan kijelölt billentyűvel (alapértelmezés szerint megszakítás). Egy külön gomb (Scroll Lock) megváltoztathatja a szavak kis- és nagybetűit (felső, alsó, az első betű felső, a többi alsó). A billentyűzetkiosztás kapcsoló jelzője megjegyzi az egyes ablakok állapotát, így ha gyakran vált az alkalmazások között, többé nem kell módosítania az elrendezést. A program nagyszerű képességekkel rendelkezik, és azt tanácsolom, hogy nézze meg. Minden beállítás a segítségével történik grafikus program, GTK+ könyvtárakra épül. A Sven-t Linuxon tesztelték, de elvileg működnie kellene *BSD rendszereken. Ablakkezelő használt
nem számít.

A KeyTouch (keytouch.sf.net) képességei valamivel szerényebbek, ezt a segédprogramot kizárólag multimédiás kulcsok beállítására használják. Bár segítségével bármely, az alapértelmezett beállításoktól eltérő billentyűhöz más műveletet rendelhet. A program honlapján egyes disztribúciók forrásszövegei és csomagjai mellett kész beállítások találhatók a legtöbb ismert gyártó multimédiás billentyűzetéhez.

Egy másik érdekes megoldás- xbindkeys (hocwp.free.fr/xbindkeys/xbindkeys.html) - lehetővé teszi bármilyen parancs hozzárendelését, beleértve a shell parancsokat is, bármely billentyűzethez és egérgombhoz. Minden beállítás egy konfigurációs fájlban történik, amelynek egyszerű és érthető formátuma van.

Valószínűleg már a telefonodon alapértelmezés szerint telepítve QR-kód olvasó, egyszerűen használhatja az első QR-kód beolvasásához. Ezt nagyon könnyű megtenni. Csak kövesse az utasításainkat.

1. Nyissa meg a QR-kód olvasót a telefonján.

2. Tartsa a készüléket a QR-kód fölé, hogy jól látható legyen az okostelefon képernyőjén.

Ha helyesen tartja okostelefonját a QR-kód felett, a következő történik:

  • A telefon automatikusan beolvassa a kódot.
  • Egyes alkalmazásokban a kód beolvasásához egy képre kell kattintania, nem pedig egy gombra, mint az okostelefonon való fényképezéshez.

3. Nyomja meg a jelzett gombot, ha szükséges.

Szuper! Az okostelefon beolvassa a kódot, és követi a megadott hivatkozást, ami nem mindig történik meg azonnal. A legtöbb eszközön ez eltarthat néhány másodpercig.

Mindenhol QR-kódokat fog látni. Tanításra, tájékoztatásra, magyarázatra és sok más dologra használják. Keresse meg és szkennelje be őket! A QR-kódok sok időt és erőfeszítést takarítanak meg.

QR-kódok beolvasása Androidon

Most elmondjuk, hogyan kell használni a QR-kód beolvasó alkalmazást Androidon.

Röviden:
1. Nyissa meg A Play Áruház .
2. Keresés QR kód olvasó .
3. Válassza ki QR kód olvasó(a Scan segítségével).
4. Kattintson a " Telepítés".
5. Nyissa meg a programot QR kód olvasás.
7. Irányítsa a kamerát a QR-kódra.
8. Kattintson a " RENDBEN".

1. lépés. Nyissa meg a Play Áruházat Androidon. Ez egy ikon egy alkalmazásban vagy a kezdőképernyőn.

2. lépés. Írja be a QR-kód olvasót a keresőbe. Megjelenik a QR-kód olvasásához szükséges alkalmazások listája.

  • Ez a cikk elmagyarázza, hogyan kell használni a QR-kód olvasót, de kiválaszthatja a kívánt alkalmazást. Letöltés előtt feltétlenül olvassa el az alkalmazást.
  • A lépéseknek azonosnak kell lenniük minden QR-kód olvasó alkalmazásnál.

3. lépésKattintson a Scan által kifejlesztett QR-kód olvasó elemre. A fejlesztő neve az egyes alkalmazások alatt található. Előfordulhat, hogy le kell görgetnie a Scan által készített alkalmazás megtalálásához.

4. lépés.Kattintson a Telepítés gombra. Megjelenik egy felugró ablak, amely arra kéri, hogy adjon engedélyt az adatokhoz való hozzáféréshez Android készülékén.

5. lépés.Kattintson az Elfogadás gombra. A QR Code Reader mostantól telepítve lesz Android-eszközére.

    • Az alkalmazás letöltése után a „Telepítés” gomb „Megnyitás”-ra változik, és egy új ikon jelenik meg az alkalmazásban.

6. lépés.Nyissa meg a QR-kód olvasót. Ez egy QR-kódnak tűnő ikon az alkalmazásban. Ez megnyit egy alkalmazást, amely úgy néz ki, mint egy szabványos kameraképernyő.

7. lépésIgazítsa a QR-kódot a kamera keretébe. Kicsit olyan, mint a fotózáshoz, azzal a különbséggel, hogy nem kell megnyomni egyetlen gombot sem. Amikor a vonalkód-leolvasó beolvassa a kódot, megjelenik egy felugró ablak a kódban található URL-lel.


8. lépésKattintson az "OK" gombra a webhely megnyitásához. Ezzel elindítja az alapértelmezett webböngészőt, és a QR-kódban található URL-re navigál.

A következő tipikus PC-s eszköz, ami egyszerűnek tűnik, de néha gondot okoz a kutatónak, a billentyűzet.

Általában véve a készülék egyszerű. Főleg nem a PS/2 portra csatlakoztatott, már elavult modelleket. Amint azt számos kísérleti adat mutatja, a billentyűzet vezérlőchipje beolvassa a billentyűleütéseket, és sorozatkódban továbbítja azokat a portra. Ennek az átvitelnek az órajel frekvenciája (az esetek túlnyomó többségében) 6,3 vagy 10 kHz többszöröse. Bár a szerző az elmúlt években találkozott egy-két olyan példányával, amelyek órajele 20 kHz körül mozgott.

Bármely billentyű lenyomásakor és lenyomva tartásakor minden billentyűzet elkezdi (szünet után) megismételni a billentyűkód „ad a végtelenségig” átvitelét. Normál módban ez általában a vezérlőpuffer túlcsordulásához és néhány másodpercen belüli hibás működéshez vezet. Megjelenik hangjelzés rendszer "dinamikája" - "nyikorgás". A teszt mód (a legáltalánosabban elfogadott) lényege, hogy blokkolja a puffer túlcsordulási parancsot, amely lehetővé teszi, hogy egy billentyű lenyomásakor biztosítsa a kiválasztott karakter végtelen átvitelét a „billentyűzet” kábelen keresztül.

Mint mindig, az eredmény helyes későbbi kiszámításához az impulzusok állandó váltakozását kell létrehozni a kódcsomagban. A billentyűzetkódok esetében két ilyen kombináció létezhet:

10101010 (55) gomb „+; = "

01010101 (AA) szabványos táblázatokban - nem alkalmazható

A szkennelési kódok általános táblázatát a 14.1. táblázat tartalmazza

14.1. táblázat- Billentyűzet szkennelési kódok

Kulcs

Kód beolvasása

Kulcs

Kód beolvasása

Kulcs

Kód beolvasása

Kulcs

Kód beolvasása

Így a tesztmód implementálásakor és például súlyozáskor a „+” billentyűre, impulzuscsomagok végtelen sorozata lesz jelen a billentyűzet kábelében. Ebben az esetben a csomagban az impulzusismétlési periódus (azaz az órajel frekvencia) 6,10 vagy 20 kHz lesz, és a csomagismétlési frekvencia sokkal alacsonyabb lesz. Az adatformátum a 14.1. ábrán látható

Az adatcseréhez a billentyűzetkábelen két vonal van - KBData és KBSync. A letapogatási kódok átvitelekor a billentyűzet a következő adatbitet állítja be a KBData vonalon, és megerősíti az átvitelt a jel „1”-ről „0”-ra történő átvitelével a KBSync vonalon.

A vezérlő a KBSync vonalon alacsony szinten tudja jelezni, hogy nem áll készen az adatok küldésére/vételére. A fennmaradó időben, amikor nincs továbbítandó adat, mindkét vonalnak magas a jelszintje.



A fentiekből következően a billentyűzet kábel PEMIN spektrumában 1/76,04·10 -6 = 13,15 kHz órajelű frekvenciakomponensekre kell számítani. Sőt, a két különböző (de többszörös!) periódusú fáziseltolásos jel jelenléte miatt a páros és páratlan frekvenciakomponensek amplitúdója eltérő lesz.

Ahogy az várható is, egy szinkronizált adatsor PEMIN-je elvileg nem informatív. De az egyik PEMIN megkülönböztetése a másiktól egyáltalán nem könnyű. Csak egy kábel van, a jelek szinkronban vannak...

Gyakorlatilag az egyetlen módja– válasszon ki egy szkennelési kódot a minimális számú logikai „1-essel” a csomagban. Ezek az „F3” és az F9 billentyűk (03 és 01 hexadecimális kódban). A „00” kód nem használatos.

Az „F3” letapogatási kód oszcillogramja lent látható.


Szigorúan „energia szempontjából”, ha a PEMIN összes frekvenciakomponensét a „=” kóddal és például az „F9” kóddal méri, akkor a vevő MINDEN frekvenciakomponensen mért leolvasási különbsége a valódi információ. a PEMIN energia része. Ráadásul ez egy maximum maximorum. A munka elég bonyolult és fárasztó, ha nem lehet „automata gépre” bízni. A PEMIN komponensei az ilyen alacsony frekvenciák nem könnyen azonosíthatók. Tehát a különbségek „elkapására” is...



Az SI gyakorlatban az esetek túlnyomó többségében egyszerűen megmérik a PEMIN szintet (anélkül, hogy bármit levonnának), és kiszámítják a biztonsági paramétert. Ez lehetséges, „tartalékkal”, de a szakember köteles ismerni a dolgok valódi állását.

Az áttekintés végén - az AT és PS/2 billentyűzetcsatlakozók „kivezetése”.


A vevőkészüléken lévő „képek” korántsem olyan „klasszikusnak” tűnnek, de jól felismerhető. Itt vannak példák



A spektrum egyértelműen mutatja a komponensek amplitúdójának növekedését csökkenő frekvenciával.

Ebben a frekvenciatartományban (tíz kHz-től és azon túl) is vannak „kláv” mérések jellemzői. A helyzet az, hogy a billentyűzet a szokásos helyén nem messze található rendszer egysége. És az SB tetején van impulzusblokk A tápegység a PEMIN legerősebb forrása az „E” és a „H” komponensek számára egyaránt. Egy ilyen színházi reflektorfény „fényében” a billentyűzet halvány „fényét” látni különleges művészet! Ezért a következő technikát javaslom. Vigye a billentyűzetet a lehető legtávolabbra az SB-től. Jobb – PS/2 bővítőn. Kb 2-2,5 méter.

Az antennát úgy helyezze el, hogy a lehető legkevesebb felé mutasson a műholdról (a 10 kHz-nél nagyobb vevő sávszélességű jel folytonos spektrum). És az orientált, álló antenna közelében kezdje el csavarni a billentyűzetet és a kábelét (nem fordítva!). Ekkor sokkal nagyobb eséllyel észlelheti a PEMIN-jeleket a billentyűzetről, és saját szemével láthatja a PEMIN-komponenseket az analizátor képernyőjén.

A fentiek mindegyike PS/2 interfésszel rendelkező billentyűzetre vonatkozik. Most azonban tömegesen felváltják őket az USB interfésszel rendelkező billentyűzetek.

Általánosságban elmondható, hogy ezt a felületet a nyomtatókkal együtt részletesen tárgyaltuk. Hasznos lenne azonban néhány „célmegjelölést” adni a billentyűzettel kapcsolatban.

Emlékezzünk vissza az USB interfész csomagjainak felépítésére, figyelembe véve, hogy a billentyűzet szigorúan alacsony sebességgel van csatlakoztatva (vagyis tulajdonképpen az USB 1.0 interfészen keresztül).

A kis sebességű eszközök maximális DATA hasznos adatmérete 8 bájt. Vagyis pontosan ezt követeli meg a billentyűzet szkennelési kódja.

A jel (nevezetesen az adatok) megtekintése az USB vonalon nem volt olyan egyszerű feladat. Ennek ellenére pontosan ez derült ki egy tipikus GENIUS KB-06XE USB „billentyűzet” modell kábeléből, konkrétan az „adat +” vonalból (vezetékből) (14.10. ábra)


Ez a két oszcillogram meghatározatlan (kaotikus) periodicitással változtatja egymást, és a jelek „képei” nem függenek a lenyomott (vagy nem lenyomott) billentyűzet billentyűitől. A csomag (frame) „változó” részében más változást nem lehetett azonosítani.

Ezeknek a csomagoknak a frekvenciája szigorúan stabilizált (14.11. ábra), és mindegyik időtartama (az oszcillogramokon látható) körülbelül 34 ± 1 μs.


A csomagok 4 ms-onként következnek. Meg kell azonban jegyezni, hogy minden csomag vége folyamatosan „remeg”, és a klasszikus „jitter” észrevehető. Ezért a spektrális kép kissé homályos, és csak kellően hosszú átlagolással válik tisztává.


Ezen túlmenően figyelembe kell venni, hogy a különböző impulzusismétlési periódusok és ezek eltérő időtartama miatt a spektrum a folytonos és a vonalas spektrum valamilyen keverékének a karakterével rendelkezik. Mindazonáltal a spektrum lebeny karaktere, amely természetes a csomagok végtelen sorozatára, és az átlagos csomag időtartamú „lebenyeiben” többszörös, nagyon világosan megmarad. Csak a függvény „nullapontjait” simítja ki a jitter és az egyes impulzusok nem változó ismétlési periódusa. Maga a kép azonban meglehetősen jellemző. Finomabb frekvenciafelbontásnál a spektrum a csomagismétlési ráta (250 Hz) által meghatározott „vonalakra” kezd feloldódni (14.13. ábra) Így az oszcillogramok legegyszerűbb megtekintésével, és nem szinkronizálva a letapogatási kód valódi átvitelével, Az adatátvitelért felelős keret (csomag) szakaszainak azonosítása és megjelenítése sikertelen. Arról azonban lehet vitatkozni, hogy a billentyűzetkábel PEMIN-je továbbra is ez lesz és nem más. Egyértelmű, hogy milyen frekvenciákon kell keresni, egyértelmű, hogy folyamatos jellegű lesz (mindenesetre 0,3 kHz-nél nagyobb vevőfrekvencia-felbontással). És világos, hogy milyen értéket kell helyettesíteni órajelként a számításokban (a kísérletben az impulzusok minimális időtartama egy csomagban 1,322 μs volt). Ezt bármely SI-n legalább 200 MHz-es sávszélességű oszcilloszkóppal megmérni triviális feladat. A teszt mód valójában bármelyik, bármelyik billentyűt megnyomhatja, vagy semmit sem. A csomagok egyébként is az interfészen keresztül kerülnek továbbításra. És első közelítésképpen informatívnak tekintjük őket (amíg az ellenkezőjét be nem bizonyítják).

A megadott oszcillogramokat és spektrumokat egy AKIP-4108/2 oszcilloszkóp segítségével kaptuk, amely ugyanahhoz a számítógéphez volt csatlakoztatva, amelyen a méréseket végeztük (megjegyzendő, hogy ez a PICO Technology cég fejlesztésének nagyon funkcionális megismétlése a miénk. Nem. rosszabb mint a kínai :)).

A spektrum egyértelműen jóval meghaladja az 1 MHz-et (az oszcilloszkóp már nem engedte, és nem sok értelme volt elemzőt csatlakoztatni). A többit a kábel, mint véletlenszerű antenna, és az árnyékolás mértéke határozza meg.

Az USB interfész egyéb módjaihoz sok GHz-es sávszélességű oszcilloszkópra van szükség.

Hogy pontosan hogyan kell kiszámítani a folytonos spektrumot, és egyúttal a jelenlegi NMD keretein belül maradni, az egy külön beszélgetés, és nem nyílt megbeszélés, sajnos... A későbbi publikációkban azonban még vissza kell térnünk rá, ott nincs hova menni. Megpróbálok "a határokon belül maradni"...

Az késztetett arra, hogy egy ilyen eszközön dolgozzak, az a tény, hogy a legtöbb könnyen reprodukálható Gamemort készülék nem tette lehetővé kellő számú vezérlőgomb megvalósítását. A PC-s játékportot eredetileg maximum négy gombhoz tervezték. Mindenféle bővítmény nem rendelkezik a kívánt rugalmassággal. Például a barkácsolók körében népszerű CH Flightstick Pro bővítmény lehetővé teszi akár 14 gomb megvalósítását, de nem használhat két gombot egyszerre - az ilyen eszközökön való repülésről olyan játékokban, amelyekben folyamatosan „forgatni kell” fej” - ugyanazokban a madarakban, el lehet felejteni. Egyes bővítmények tisztán digitális interfészt használnak – a megnyomott gombokról és a gombok eltérítéséről szóló adatok a digitális gameport vonalak mentén kerülnek továbbításra, amelyek eredetileg a négy „szabványos” gomb adatainak továbbítására szolgáltak. Még az ilyen kiterjesztéseket is feleslegesnek tartom. Az analóg adatok digitálisvá alakítása pedig bonyolítja a joystick kialakítását. Ráadásul nem minden játék akarja megérteni, hogy milyen szörnyeteg „csatlakozott” hozzá. És a billentyűzet – itt van, teljes 102 billentyűs pompájában! Emellett a RU.GAME.FLIGHT előfizetők olajat öntöttek a tűzre, és időről időre megkérdezték: „Hogyan tudnám megszelídíteni a billentyűzetet, és keresztezni az örömmel?” és semmivel távozik.

Röviden, a készülék feladata, hogy „üljön” a buszon a billentyűzet és a PC között, és szimulálja a billentyűleütéseket a billentyűzeten a készüléken lenyomott gomboknak megfelelően.

Szóval leültem fejleszteni. Ezt megelőzően volt tapasztalatom különféle mikroprocesszorokkal és mikrokontrollerekkel való munkában. Általában - az ujjak a fültől a fülig. És naivan azt hittem, hogy most fogom a dokkokat, megcsinálom az RTFM-et és egy hét múlva fehér lovon leszek. Az egész probléma az volt, hogy sem az interneten, sem a megfelelő Fido konferenciákon nem találtam dokumentációt a billentyűzet és a vezérlő közötti adatátviteli protokollról. Elő kellett vennem egy oszcilloszkópot, és több hetet el kellett töltenem azzal, hogy szétszedjem a rögtönzött dolgokat, és megpróbáljam megismételni őket. Ezért az alábbiakban bemutatott információk többsége az én következtetéseim eredménye, és nincsenek dokumentálva. Ha tévedek valamiben, szívesen meghallgatom észrevételeiket a címen rashpil nál nél ukr pont háló.

Az adatátvitel alapelvei

A következők mindegyike igaz a PS/2 és AT billentyűzetekre, amelyek csak a csatlakozó kialakításában térnek el (adapteren keresztül csatlakoztatható).

Kétirányú adatcsere történik a billentyűzet és a számítógép alaplapján található vezérlő (a továbbiakban egyszerűen csak „vezérlő”) között. A vezérlő különféle parancsokat küld (például a LED-ek állapotának megváltoztatása vagy az automatikus ismétlési sebesség). A billentyűzet továbbítja a lenyomott billentyűk beolvasási kódjait (szkennelési kód - szimbólum kulcsokat, nem szabad összetéveszteni az ASCII kódokkal).

Kódok beolvasása

Kulcs Kód beolvasása Kulcs Kód beolvasása Kulcs Kód beolvasása Kulcs Kód beolvasása
1 16 2 1E 3 26 4 25
5 2E 6 36 7 3D 8 3E
9 46 0 45 - 4E + 55
Backspace 66 Tab 0D K 15 W 1D
E 24 R 2D T 2C Y 35
U 3C én 43 O 44 P 4d
[ 54 ] 5B Belép 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
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 Hely 29 Caps Lock 58
Kilépés 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 Scroll Lock 7E * 7C Szám zár 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 Print Screen E0-12-E0-7C
Beszúrás E0-70 Töröl E0-71 Bal E0-6B itthon E0-6C
Vége E0-69 Fel E0-75 Le E0-72 Oldal fel E0-7D
Lapozás lefelé E0-7A Jobb E0-74 Belép E0-5A / E0-4A

Megjegyzés: az AT billentyűzet valójában három különböző szkennelési kódkészlettel rendelkezik. Csak a 2. számú készlet értékeit adtam meg - az alapértelmezett.

Amikor megnyom egy billentyűt, a billentyűzet továbbítja a billentyű letapogatási kódját a vezérlőnek. Elengedéskor először a 0F0h előtag, majd a felszabadított kulcs szkennelési kódja.

A Shift, Alt és Ctrl billentyűkombinációk két letapogatási kód sorozataként kerülnek továbbításra. Vezérlő szempontjából ezek a billentyűk semmiben sem különböznek a többitől. Ugyanígy a Num Lock és a Caps Lock módok nem különböznek hardver szinten – szoftver szinten különböznek attól a programtól, amelyet a billentyűzet megszakít.

Az automatikus ismétlési mód megvalósításáról szeretnék röviden beszélni. Az automatikus ismétlési funkciók általában magához a billentyűzethez vannak hozzárendelve - egy bizonyos idő elteltével, ha a billentyűt nem engedik el, a billentyűzet egy másik, pontosan ugyanazt a szkennelési kódot küld. Ha ekkor megnyom egy másik gombot, egy másik letapogatási kód „repül” a vezérlőhöz, és a rendszer úgy tekinti, hogy csak egy gombot nyomtak meg. A játékokban ezt a problémát egyszerűen megoldják - a billentyűt addig lenyomva kell tekinteni, amíg meg nem érkezik a megfelelő szkennelési kód a 0F0h előtaggal. Ezért elvileg nem valósítottam meg az automatikus ismétlési funkciókat.

A fenti szkennelési kódokon kívül a billentyűzet néhány szervizparancsot is visszaadhat. De ezeknek a parancsoknak, valamint a vezérlő által kiadott parancsoknak ebben az esetben nincs gyakorlati értéke. Ezért nem foglalkozom velük.

A csereprotokoll leírása

A billentyűzet és a vezérlő közötti adatcsere aszinkron módon, soros protokoll segítségével történik. Az aszinkron átvitel lényege, hogy az adatátvitel csak akkor történik, ha van mit továbbítani - a billentyűzeten lenyomnak/felengednek egy billentyűt, és ki kell adni a megfelelő szkennelési kódot, vagy a vezérlőnek kell parancsot adnia a billentyűzetnek.

Két vonal van az adatcserére - KBData és KBSync. A letapogatási kódok átvitelekor a billentyűzet a következő adatbitet állítja be a KBData vonalon, és megerősíti az átvitelt a jel „1”-ről „0”-ra történő átvitelével a KBSync vonalon. Amikor adatot fogad a vezérlőtől, a billentyűzet beolvassa az adatbitet a KBData sorról, és a KBSync vonalon lévő jelet „1”-ről „0”-ra továbbítva nyugtázza a vételt. A vezérlő a KBSync vonalon alacsony szinten tudja jelezni, hogy nem áll készen az adatok küldésére/vételére. A fennmaradó időben, amikor nincs továbbítandó adat, mindkét vonalnak magas a jelszintje. A KBSync vonal impulzusismétlési gyakorisága körülbelül 10-25 KHz.

Az adatok továbbítása a következő sorrendben történik: egy kezdőbit - „0”, nyolc adatbit, egy paritásbit (az összes bit összege +1), egy stopbit - „1”. Minden egyes adatbájt fogadása után a vezérlő alacsonyra állítja a KBSync vonalat, ezzel jelezve, hogy elfoglalt a fogadott adatok feldolgozásával, és nem áll készen a következő fogadására. Ez tekinthető az elfogadás megerősítésének. A billentyűzet a kapott parancs minden egyes bájtját a 0FAh kód kiadásával megerősíti. Ha hiba történik az átvitel során, a vezérlő megkövetelheti az utolsó bájt átvitelének megismétlését a 0FEh parancs kiadásával. A billentyűzet másként viselkedik – egyszerűen figyelmen kívül hagyja a hibákat. Nem látok ebben semmi végzetes dolgot – ha a rendszer gyakran összeomlik, akkor nincs helye az asztalon.

Valószínűleg túlságosan zavarosak voltak a magyarázataim, ezért megpróbálom több idődiagrammal illusztrálni azokat.

A billentyűzetről történő adatátvitel általános képe (S1 - start bit; S2 - stop bit; D0-D7 - adat; P - paritás bit; W - fogadott adatok feldolgozása)

Példa a 74 órás bájtos átvitelre – a „6” gomb a számbillentyűzeten. Ebben a példában, amikor a billentyűzet átvitelt kezdeményez, a vezérlő jelzi, hogy nem áll készen az adatok fogadására, és a billentyűzet arra vár, hogy a KBSync vonal felszabaduljon.

Hardveres megvalósítás

Most közvetlenül az eszköz hardveres megvalósításának leírására térek át.

A készülék a KBSync és a KBData jelek megszakítására csatlakozik, és magán keresztül továbbítja a billentyűzetről/a billentyűzetre jeleket, lekérdezi a négy gomb állapotát és kiadja a megfelelő szkennelési kódokat, ezáltal szimulálja a billentyűzet működését.

A készülék egy chipes AT89C2051 mikrokontrolleren alapul. Az Atmel AT89C2051 mikrokontroller az MCS-51 családba tartozik ( hazai analóg- MK-51). A fő különbség az AT89C2051 és az i8051 között az alacsonyabb energiafogyasztás, az I/O vonalak száma 15-re csökkentve, valamint a külső memória használatának hiánya. Több részletes információk Az AT89C2051 és az i8051 a www.atmel.com és a www.intel.com webhelyeken találhatók. Az AT89C2051 helyett használhatja az AT89C51-et, az i8051-et (KR1816BE51) vagy az i8031-et (KR1816BE31) külső ROM-mal. De az utolsó két lehetőség a megnövekedett energiafogyasztás miatt a billentyűzetvezérlő biztosítékának kiolvadásához vezethet.

Az Atmel mikrokontrollereken a fő megjelölés után az óragenerátor maximális frekvenciája megahertzben van feltüntetve. Azt tanácsolom, hogy telepítsen egy 24 MHz-es frekvenciára és kvarcra tervezett mikrokontrollert magasabb frekvenciájú - 16-20 MHz-re.

Sematikus ábrája. (R1-R4 - 47K; R5 - 10K; C1, C2 - 18pF; C3 - 1uF; D1 - AT89C2051; BQ1 - kvarc 12-24MHz)

A P1.4 vonal a gombos lekérdezés engedélyezése kimenete. Ez alapja a jövőbeli bővítéseknek – a P1.4-P1.7 sorok a megnyomott gombok lekérdezésére szolgáló vonal címének kiadására szolgálnak (legfeljebb 16 sor, egyenként 4 gomb). A „0” a P1.0-P1.3 sorban azt jelenti, hogy a megfelelő gomb meg van nyomva.

A C3 és R5 elemek olyan áramkört valósítanak meg, amely visszaállítási jelet generál, amikor tápfeszültséget kapnak.

A billentyűzet és a vezérlő KBData vonalai a P3.2 (INT0) és a P3.3 (INT1) bemenetekre kerülnek. Így a billentyűzetről vagy a vezérlőről történő adatátvitel kezdeményezésére tett kísérlet megfelelő megszakítást okoz. Az ezen megszakítások kiszolgálására szolgáló rutinok egyszerűen egy bájt mikrokontrolleren keresztüli átvitelének megfelelő jeleket sugároznak. Amikor a mikrokontroller nem adatátvitellel van elfoglalva, a P1.0-P1.4 sorokat lekérdezi, a fogadott adatokat feldolgozza, és a megfelelő letapogatási kódokat kiadja a vezérlőnek. Ez a verzió elsőbbséget ad a készülék által továbbított adatoknak. Emiatt a billentyűzet adatai néha elveszhetnek.

Ennek a résznek a befejezéseként megadom az AT és PS/2 billentyűzet csatlakozók kivezetését.

A -KBReset jel egy opcionális jel. Egyes vezérlők ezt használhatják a billentyűzet alaphelyzetbe állításához.

Firmware szöveg

Az AT89C2051 mikrokontroller firmware-jének forrásszövegét közlöm abban a reményben, hogy egy érdeklődő olvasó képes lesz kijavítani, vagy a programot más típusú mikrokontrollerrel való működésre adaptálni.

Org 0 sjmp start org 3 jmp from_keyboard ; INT0 org 13h jmp to_keyboard ; INT1 start mov a,#5 ; a megszakítás típusának beállítása mov tcon,a ; INT0 és INT1 az előlapon - mov a,#0 ; átmenet "1"-ről "0"-ra mov ip,a mov a,#85h mov ie,a mov a,#0ffh ; az utolsó mov 6,a a 06h címen van tárolva; feldolgozott kód clr p1.4; lekérdezési ciklus engedélyezése mov a,p1 ; az anl a,#15 gombok állapota beolvasásra kerül; - a P1 port legkisebb jelentőségű négy bitje; D0 - fel; D1 - jobb; D2 - lefelé; D3 - balra mov dptr,#hat_table ; négy gomb adatainak olvasása movc a,@a+dptr ; nyolc irányba bővült; D0 - fel; D1 - jobb; D2 - lefelé; D3 - bal; D4 - jobbra felfelé; D5 - jobbra lefelé; D6 - balra lefelé; D7 - balra felfelé mov r2,a ; adatok mentése mov r0,a xrl a,6 ; ha az új adat nem különbözik a jz ciklustól ; az előző ciklusban kapott - ismételje meg a szavazást mov r1,#8 ; hurok nyolc bithez loop3 jnb acc.7,loop2 ; "1" - változás történt push acc mov a,r1 mov dptr,#key_table-1 ; kivonja a megfelelő szkennelési kódot movc a,@a+dptr push acc mov a,r0 ; R0 regiszter - rlc a megnyomásának/elengedésének jele ; emulált kulcs mov r0,a ; "1" - a "kulcs" megjelent pop acc mov acc.7,c ; ha D7=1 - a letapogatási kódot 0f0h előzi meg acall send_key ; szkennelési kód kiadása 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 ; megszakítja a send2comp hívás letiltását; szkennelési kód küldése mov ie,#85h ; megszakítások engedélyezve ret send2comp jnb acc.7,send ; szükség esetén 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 ; kibocsátó start bit 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 ; nyolc adatbit kimenete és paritásszámlálás 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 ; kimeneti paritás bit 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 ; kimenet 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 ; egy bájt átvitele a vezérlőre 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 ; egy bájt átvitele a billentyűzetre 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 azaz ,#85h reti hat_table ; táblázat a P1 portról olvasott adatok bővítéséhez; a táblázat indexe egy négybites bináris kód; adatok - a nyolc emulált kulcs állapota; "0" - gomb lenyomva db 0ffh ; bal+jobb+fel+le=tiltott kombináció db 0ffh ; bal+jobb+le=tiltott kombináció db 0ffh ; bal+fel+le=tiltott kombináció db 0bfh ; balra+le=balra-le db 0ffh ; bal+jobb+fel=tiltott kombináció db 0ffh ; bal+jobb=tiltott kombináció db 07fh ; balra+fel=balra fel db 0f7h ; bal db 0ffh ; jobb+fel+le=tiltott kombináció db 0dfh ; le+jobbra=le-jobbra db 0ffh ; fel+le=tilos kombináció db 0fbh ; le db 0efh ; jobbra+fel=jobbra felfelé db 0fdh ; jobb db 0feh ; fel db 0ffh ; nincs nyomva gomb key_table ; szkennelési kódtábla db 75h; számpad 8 db 74h ; számpad 6 db 72h ; számpad 2 db 6bh ; számbillentyűzet 4 db 7dh ; számbillentyűzet 9 db 7ah ; számpad 3 db 69h ; számbillentyűzet 1 db 6ch ; számbillentyűzet 7

Az tools.zip archívumban két programot talál: a51.exe - assembler, hex2bin - hex fájlok konvertálója, amelyeket az assembler kimenetén kapunk meg bináris formátumba, amely alkalmas a mikrokontroller ROM-jának programozóval való flashelésére. .

Összeszerelés és hibaelhárítás

A készüléket a fenti ábra szerint összeállíthatja kenyérsütőlapra, otthon maratott vagy iparilag gyártott táblára. A mikrokontroller alá egy aljzatot kell helyezni. A legjobb, ha helyet hagy a táblán 2-3 16 tűs DIP-csomagnak – ezeket a későbbi verziókban hozzáadjuk.

Ezután a kívánt változtatások elvégzése után a mikroprogram forrásszövege összeállításra kerül az a51.exe programmal. A firmware programozóval való flasheléséhez a kapott hexa fájlt a hex2bin.exe program bináris képpé alakítja.

Az eszköz teljes összeszerelése után csatlakoztatjuk a billentyűzethez és a számítógéphez. Három... Kettő... Egy... Gyerünk!.. Az ismert jó alkatrészekből helyesen összeállított készüléknek azonnal működnie kell. Ha nem, ellenőrizze a helyes telepítést és a tápfeszültség meglétét a mikrokontrolleren. Oszcilloszkóp segítségével ellenőrizze, hogy az óragenerátor elindult-e, és hogy a tápfeszültség bekapcsolásakor magas szintű impulzus érkezik-e az RST bemenetre. A billentyűzet gombjainak megnyomásakor a P3.3 és P3.5 sorok impulzusainak némi késleltetéssel meg kell ismételnie a P3.2 és P3.4 sorok impulzusait. Amikor megnyomja/elengedi a készülék gombjait, az impulzusoknak a P3.3 és P3.5 sorokon is meg kell jelenniük. Ha ez nem segít, írj nekem ( rashpil nál nél aport pont ru) hibajelentés, amely tartalmazza a billentyűzet, az alaplap/multikártya, a használt mikrokontroller típusát és típusát (AT, PS/2) és a használat gyakoriságát kvarc rezonátor. Megpróbáltam tesztelni a készüléket a számomra elérhető maximális számmal alaplapokés billentyűzetek – nem észleltek problémát. Az én esetemben 14,2 MHz-es kvarcot használtam.

Ismert hibák

A firmware jelenlegi verziója a következő hibákat tartalmazza:

  • A kétbájtos szkennelési kódokat a rendszer nem követi nyomon. Ez arra a tényre vezet, hogy néha a kunyhó és a billentyűzet egyidejű használatakor a billentyűzet billentyűi „lefagynak”, amikor megnyomják, vagy helytelenül érzékelik őket;
  • Néha az adatok helytelenül kerülnek átvitelre a vezérlőről a billentyűzetre. Ez kifejezhető például abban, hogy a LED-ek nem változtatják állapotukat a Num Lock, Caps Lock, Scroll Lock billentyűk lenyomásakor;
  • A kunyhó gombjainak érintkezőinek zörgése. Eddig ez nem volt végzetes a játékban.

Jövőbeli tervek

Íme egy rövid lista arról, hogy mit szeretnék megvalósítani a jövőbeli verziókban:

  • Kisebb hibajavítások - korrektebb jelfeldolgozás; kétbájtos szkennelési kódok nyomon követése;
  • 16x4-es mátrix csatlakoztatása - legfeljebb 64 gomb vagy két kunyhó és legfeljebb 56 gomb támogatása;
  • Támogatja a mikrokontroller ROM-jában tárolt legfeljebb 16 különböző szkennelési kód elrendezést;
  • NVRAM chip csatlakoztatása, amely képes „menet közben” menteni és újraprogramozni akár 32 szkennelési kód elrendezést.

Következtetés

Igyekeztem bemutatni minden szükséges adatot, hogy megértsem a készülékem működési elvét. Ez a leírás nem állítja, hogy műszakilag 100%-ban pontos. Ha valamiben tévedek, kérem, mondja el nekem az eseményekről szóló verzióját. Ha javítani és kiegészíteni tudja az áramkörömet és/vagy a firmware-emet, ha van ötlete az áramkör továbbfejlesztésére, kérem, jelezze felém is. Ezen kívül olyan mesteremberektől várom az információkat, akik képesek voltak ezt az eszközt más típusú mikrokontrollerekhez is lemásolni vagy adaptálni.

Vladimir "Rasp" Klimus (rashpil nál nél ukr pont háló)

  1. A Google Play ablakának tetején található keresési karakterlánc. Pontosan ezt fogjuk használni. Aktiváljuk és beírjuk az alkalmazásunk nevét. Nem szükséges teljesen beírni. Amint a képernyőképen jelzett objektum megjelenik a keresési eredmények között, egyszerűen koppintson rá.
  1. Átirányítunk a program kezdőlapjára. Van egy nagy zöld gomb, amelyen az „TELEPÍTÉS” felirat áll. Kattints rá.
  1. Várjuk az alkalmazás letöltésének befejezését. Mivel a súlya alig kevesebb, mint 5 MB, a folyamat nem tart sok időt.
  1. Kész. Az automatikus telepítés befejezése után közvetlenül innen tudjuk elindítani a programot.
  1. Szintén bekapcsolva kezdőképernyő(ha be van kapcsolva a beállításokban) megjelenik egy indítási parancsikon.

Ezen a ponton a program telepítése befejeződött, és áttérhetünk a vele való munka áttekintésére.

Az alábbi képernyőképen látod szoftver interfész. Itt 3 fő lapra van osztva. Van egy beállítási ikon is, amely fogaskerék formájában készült. A fő „SCAN” lapon 4 fő eszköz található:

  • Vonalkód beolvasása. Ez egy QR-szkenner, amely kamerán keresztül működik;
  • Kézi kulcsbevitel. Kézi kód adatbevitel funkciója;
  • Dekódolás fájlból. Dekódolás fájlból. Innen megnyithatja a korábban letöltött QR-kódot és elolvashatja azt;
  • Dekódolás az URL-ből. Szkennelés linkkel.

Alul számos gomb található, amelyek nem biztosítanak hasznos funkciókat. Nem szabad rájuk figyelni.

Nézzük a program beállításait. Itt elég sok van belőlük. Képernyőképek lesznek a különböző konfigurációs területekről a képernyőkön, de mi egyszerűen hangot adunk a legérdekesebb pontok közül.

Például az első képernyőn engedélyezheti vagy letilthatja a program hangját. Ugyanezt meg lehet tenni a vibrációs reakcióval is. Beállíthatja azt az üzemmódot, amikor a program azonnal elindul a szkennerről, a főmenü megkerülésével. Egy másik fontos funkció az adatok automatikus másolása a vágólapra.

Amint el akarjuk kezdeni a szkennelést és elindítani magát a szkennert, a program hozzáférést kér a szükséges rendszererőforrásokhoz. Természetesen meg kell oldani. Kattintson a képernyőképen megjelölt gombra.

Ezután úgy helyezzük el a szkenner keretét, hogy a vízszintes csík közvetlenül a QR-ra essen. Próbáljon meg ne rázni a kezét, és közben figyelje a fókuszát. Normál élesség nélkül a beolvasás nem sikerül.

Annak érdekében, hogy a QR-VONALKÓDSZKENNER gyenge fényviszonyok mellett is működjön, háttérvilágítással rendelkezik.

A kód felismerése után az alábbi képernyőképen látható információk jelennek meg.

A QR-kódok beolvasása mellett itt is létrehozhatja azokat. Ehhez lépjen a harmadik lapra. Megjelöltük a képernyőképen. A lista az összes titkosítható adattípust tartalmazza. A következők támogatottak:

  • telefonkönyv kapcsolatfelvétel;
  • telefonszám;
  • URL;
  • Email;
  • Alkalmazás;
  • elhelyezkedés;
  • bármilyen szöveg;
  • könyvjelző;
  • naptári esemény.

Az egész így néz ki:

Az adattípus kiválasztása és megadása után már csak a „Kódolás” gombra kell kattintanunk. Ebben az esetben a hivatkozást titkosítottuk.

Próbáljunk meg tetszőleges szöveget is titkosítani. Ehhez válassza ki a kívánt elemet.

Írja be a kifejezést a kijelölt mezőbe, és nyomja meg a „Kódolás” gombot.

Az eredmény nagyszerűen néz ki. Változtassuk meg a színét is. Kattintson az erre szolgáló gombra.

Válassza ki a kívánt árnyalatot a palettáról.

Mi pedig csodáljuk a kapott QR-t.

Térjünk át a következő programra, amely szintén lenyűgöző funkciókkal rendelkezik.

QR Droid kódolvasó

Egy másik alkalmazás, amely megtalálható a Google Playen. A Google webhelyén található közvetlen linkről is letöltheti. Egyelőre magát a programot nézzük meg.

Így néz ki a QR Droid Code Scanner indító parancsikonja – kattintson rá.

Ez az alkalmazás, az előzőtől eltérően, orosz nyelven készült, és amint elindul, rá kell kattintanunk a „KEZDJEN” gombra.

A szkenner azonnal látható, de először nézzük meg a beállításait. Érintse meg a jobb felső sarokban található gombot.

A főmenüben 6 gomblapka látható, amelyek átirányítják a felhasználót a kívánt részhez. Itt vannak:

Tehát a szkenner használatához aktiválnia kell a főmenüben, és a QR-kódra mutatva nyomja meg az „Olvasás” gombot.

Itt kiválasztja a kezdőképernyőt, beállítja a címet Tartalékmásolatés a szoftver interfész nyelve be van állítva.

Ezután telepíthetjük a szkennelési mechanizmust. Az egyik szabadalmaztatott algoritmus használatos: Zapper vagy ZXing. Az alábbiakban engedélyezheti vagy letilthatja a szálkeresztet, konfigurálhatja automatikus cselekvés beolvasás után, és engedélyezze az eszköztippek megjelenítését vagy a hivatkozás vágólapra másolását.

Ez a szakasz konfigurálja hangkíséret, a rezgés be- és kikapcsol. A műveletek rögzítésének folyamata a naplóban és a velük való interakció okos óra Android Wear.

Akkor tudunk majd exportálni vagy importálni biztonsági másolat vagy állítson be időpontot.

Engedélyezze a névtelen adatok küldését (jobb, ha letiltja), engedélyezze a szkennelés során kapott biztonsági hivatkozás ellenőrzését, vagy konfigurálja a kötegelt vizsgálatot. Az alábbiakban olyan funkciók érhetők el, mint a nagyítás vagy a kiemelés.

De a beállításaink ezzel nem érnek véget. A fenti funkciókon kívül az alábbiakkal rendelkezünk:

  • a képernyő tájolásának beállítása;
  • munka az elülső kamerával;
  • link elemzése;
  • üzletek bemutatása.
  • kiterjesztett csúszás funkció;
  • egyes speciális karakterek tiltása;
  • a WEB előnézet aktiválása;
  • mentett képek keresése.

Az utolsó beállítások képernyő érdekes funkciókat tartalmaz, mint például a pozíciók maximális számának beállítása, egyéni CSV-k konfigurálása, az okosóra rázása és a duplikált pozíciók mentése.

A beállításokon kívül a QR Droid Code Scanner menüben van egy „Tovább” nevű elem is. Nézzük meg a funkcionalitását.

Íme a következő lehetőségek:

Nézzük a listánk utolsó, de nem kevésbé funkcionális alkalmazását.

NeoReader QR és vonalkód olvasó

Ez a program másokhoz hasonlóan letölthető és telepíthető a következőn keresztül A Google Play vagy közvetlen linken keresztül. Ha ez megtörtént, közvetlenül folytathatja a vele való munkát.

Az első indításkor teljesítenünk kell a hozzáférési kérelmet. Kattintson az „Engedélyezés” gombra.

Ezután megjelenik egy beállítási ablak. Itt választhat nyelvet, megadhatja országát, nemét és életkorát. Az alábbi két jelölőnégyzet lehetővé teszi a program geoadatokhoz való hozzáférésének engedélyezését vagy letiltását.

Valójában elkezdheti a szkennelést. Irányítsa kameráját a QR-kódra, és a NeoReader QR- és vonalkódolvasó automatikusan felismeri annak tartalmát.

Úgy gondoljuk, hogy ez a három program mindenki számára elegendő. Válassza ki az Ön számára legkényelmesebbet, és használja saját belátása szerint. Szó lesz a kínai eszközök néhány funkciójáról.

Standard funkcionalitás

Egyes okostelefonokon és táblagépeken (márkától függően) alapfelszereltség a QR-kód beolvasása, és minden alkalmazás nélkül is megoldható. Nem soroljuk fel az összeset, csak a Xiaomi modelljére térünk ki.

Foglaljuk össze

Ennek eredményeként megtanultuk, hogyan kell QR-kódot beolvasni Androidon különböző utak. Reméljük, hogy a cikk hasznos volt az Ön számára. Ha még mindig vannak kérdései, tedd fel őket a megjegyzésekben. Igyekszünk mindenkinek segíteni.

Még ha ez nem is történik meg, a webhely egyik felhasználója biztosan elmondja, hogyan lehet kijutni a helyzetből, és gyakorlati tanácsokat ad. Nincs más dolgod, mint életre kelteni.

Videós utasítás




Top