abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 18:11 | Nová verze

    Programovací jazyk Python byl vydán v nové major verzi 3.14.0. Podrobný přehled novinek v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 2
    včera 16:33 | IT novinky

    Bylo oznámeno, že Qualcomm kupuje Arduino. Současně byla představena nová deska Arduino UNO Q se dvěma čipy: MPU Qualcomm Dragonwing QRB2210, na kterém může běžet Linux, a MCU STM32U585 a vývojové prostředí Arduino App Lab.

    Ladislav Hagara | Komentářů: 1
    včera 15:55 | Nová verze

    Multiplatformní open source voxelový herní engine Luanti byl vydán ve verzi 5.14.0. Podrobný přehled novinek v changelogu. Původně se jedná o Minecraftem inspirovaný Minetest v říjnu loňského roku přejmenovaný na Luanti.

    Ladislav Hagara | Komentářů: 0
    včera 13:22 | Nová verze

    Byla vydána nová stabilní verze 6.10 (YouTube) multiplatformního frameworku a GUI toolkitu Qt. Podrobný přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    6.10. 23:55 | Komunita

    Ubuntu 26.04 LTS bude (𝕏) Resolute Raccoon (rezolutní mýval).

    Ladislav Hagara | Komentářů: 3
    6.10. 21:00 | Nová verze

    Netwide Assembler (NASM) byl vydán v nové major verzi 3.00. Přehled novinek v poznámkách k vydání v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    6.10. 20:11 | Komunita

    Linuxová distribuce Frugalware (Wikipedie) ke konci roku 2025 oficiálně končí.

    Ladislav Hagara | Komentářů: 0
    6.10. 17:22 | Nová verze

    Byla vydána nová verze 3.0.6 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP (GNU Image Manipulation Program). Přehled novinek v oznámení o vydání a v souboru NEWS na GitLabu. Nový GIMP bude brzy k dispozici také na Flathubu.

    Ladislav Hagara | Komentářů: 0
    6.10. 16:11 | IT novinky

    Americký výrobce čipů AMD uzavřel s americkou společností OpenAI smlouvu na několikaleté dodávky vyspělých mikročipů pro umělou inteligenci (AI). Součástí dohody je i předkupní právo OpenAI na přibližně desetiprocentní podíl v AMD.

    Ladislav Hagara | Komentářů: 1
    6.10. 12:22 | Nová verze Ladislav Hagara | Komentářů: 0
    Jaké řešení používáte k vývoji / práci?
     (39%)
     (46%)
     (15%)
     (17%)
     (21%)
     (15%)
     (18%)
     (16%)
     (16%)
    Celkem 191 hlasů
     Komentářů: 12, poslední 4.10. 20:35
    Rozcestník

    Debugování komunikace s klávesnicí

    26.11.2005 21:50 | Přečteno: 1463× | Linux | poslední úprava: 26.11.2005 22:48

    Momentálně si hraju s vylepšováním svojí klávesnice, akorát mi to moc nejde. Už jsem strávil tejdny různým zkoušením (no, nemám na hraní celý dny, proto tolik), až jsem uznal, že je nutný vědět, co se mezi klávesnicí a PC vlastně děje, protože podle teorie to prostě nefungovalo.

    Takže jsem vyštrachal obvod MAX232, 5 kondenzátorů a napojil klávesnici na sériový port.

    schema
    fotka

    Šmírovací program jsem obšlehl od sitha. V C totiž vůbec neumím a připadá mi jako totálně nepohodlný a nepřehledný jazyk, takže - vím, že je to napsaný prasácky, ale je to jednoúčelová věc a stačí mi:

    #include <stdio.h>
    #include <fcntl.h>
    #include <termios.h>
    #include <sys/ioctl.h>
    #include <time.h>
    
    #define SERIAK "/dev/ttyS0"
    
    int openserial ();
    void closeserial ();
    float mereni ();
    
    int fd;
    
    int
    openserial ()			//otevrit seriak
    {
    	if ((fd = open (SERIAK, O_RDWR)) == -1)
    	{
    		return 0;
    	}
    	return 1;
    }
    
    void
    closeserial ()			//zavrit seriak
    {
    	close (fd);
    }
    
    float
    mereni ()			//hlavni fce, mereni napeti
    {
    	int status, hodnota1 = 2, hodnota2 = 3;
    
    	while (1!=2)
    	{
    	ioctl (fd, TIOCMGET, &status);
    	hodnota1 = (status & TIOCM_CTS)/TIOCM_CTS; //clock
    	hodnota2 = (status & TIOCM_RI)/TIOCM_RI; //data
    	printf ("%i,", hodnota1);
    	printf ("%i\n", hodnota2);
    	}
    //	return (hodnota1);
    }
    
    int
    main ()
    {
    	if (!openserial ())
    	{
    		printf ("Nelze inicializovat port \"s\".", SERIAK);
    		return 0;
    	}
    	mereni();
    	closeserial ();
    	return 0;
    }
    

    Prostě to vypisuje dvě hodnoty oddělený čárkou, první je stav CLOCK a druhý je stav DATA. Protože PS/2 jede jen na 9600 baudů, stíhá se to krásně:

    ...
    1,0
    1,0
    1,0
    0,0
    0,0
    0,0
    0,0
    0,0
    0,0
    0,0
    0,0
    0,0
    0,0
    0,0
    0,1
    0,1
    0,1
    ...
    
    Update:

    A když se to nacpe do OpenOffice, tak se to dá krásně zvizualizovat:

    graf

    English summary: Spying on the PS/2 keyboard protocol using serial port.

           

    Hodnocení: 100 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    Pavel Stárek avatar 26.11.2005 23:07 Pavel Stárek | skóre: 43 | blog: Tady bloguju já :-) | Kolín
    Rozbalit Rozbalit vše Re: Debugování komunikace s klávesnicí
    Nooo, to je sice pěkné, ale tak nějak jsem nepochopil, jak chceš z těch grafíků z OO luštit, co tedy vlastně z té klávesnice leze ? Nu třeba máš naštudovaný protokol klávesnice na úrovni log. 0 a 1 :-)
    Kdo chce, hledá způsob; kdo nechce, hledá důvod.
    hajma avatar 27.11.2005 00:37 hajma | skóre: 27 | blog: hajma | Říčany
    Rozbalit Rozbalit vše Re: Debugování komunikace s klávesnicí
    mám :-)
    21 promarněných znaků
    13.3.2006 23:40 David Sedláček | skóre: 20 | Žďár nad Sázavou
    Rozbalit Rozbalit vše Re: Debugování komunikace s klávesnicí
    Ahoj.

    Ten muj puvodni program bych opravdu napsal uplne jinak - mas right, prasecina. Ovsem v podstate je v poradku - je to komunikace na nejnizsi urovni a proto se zdaj (a jsou) napr. ty bitove operace docela hardcore :).

    Kazdopadne velmi zaujimave takhle napojit klavesku :).

    13.3.2006 23:43 David Sedláček | skóre: 20 | Žďár nad Sázavou
    Rozbalit Rozbalit vše Re: Debugování komunikace s klávesnicí
    Zapomel jsem dodat:

    while (1!=2)

    -LOL :))

    20.3.2006 20:06 Bronek
    Rozbalit Rozbalit vše Re: Debugování komunikace s klávesnicí
    Taky skousim udelat jakysi emulator klavesnice s procesorem PIC16F84 a pro odladeni pouzivam podobnou metodu :) Teda nevim ,jestli se to metodou da vubec nazvat. Pro zachytavani ale nepouzivam seriovy ale paralelni port. Protoze vsechna komunikaca Klavesnice<>PC prebiha pres TTL +5V. Takze jsem usteril ten MAX a kopec kondiku.

    Komunikaci mam zachycenou ale emulace jaksi nefunguje.

    Skusim jeste trosku posprtat.
    hajma avatar 28.3.2006 15:25 hajma | skóre: 27 | blog: hajma | Říčany
    Rozbalit Rozbalit vše Re: Debugování komunikace s klávesnicí
    no, já jsem někde čet, že paralel se snadno spálí, takže radši přes ten sériovej. Už jsem to párkrát zkratoval ...
    21 promarněných znaků

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.