Linux hotkey

Ladislav Vaiz spam na nagano.cz
Pátek Září 17 16:02:21 CEST 2021


Správné řešení pod linuxem je volat v hlavní smyčce select(). Tomu se 
předají filedescriptory, ze kterých chci číst, do kterých chci zapisovat 
a případný timeout pro nejbližší časovač.

U GPIO se otevře soubor  .../value a jeho descriptor se přidá do readfds 
selectu. V obsluze pak:
lseek(gpio->value_fd, 0, SEEK_SET);
read(gpio->value_fd, buf, 1);

L.


Dne 17.09.2021 v 13:15 Michal Grunt napsal(a):
> Tak usleep(1) moc nepomůže. Vyžere to 100% CPU. Když zadám
> usleep(50000) tak už je to snesitelnějších cca 1.6%. Ale stejně je mi
> proti srsti, aby tak jednoduchý program, který čeká na stisk klávesy
> sežral takových prostředků. Kdyby takto fungovala klasická klávesnice
> tak by z toho asi nikdo radost neměl. Ano mohu zadat větší číslo jako
> parametr, ale už tam bude znatelná prodleva stisk/akce.
>
> so 10. 7. 2021 v 20:56 odesílatel Michal Vanka <junk.mv na gmail.com> napsal:
>> Za mych mladych Linuxovych let volani usleep(1) na Intel procesorech odevzdalo proces scheduleru,
>> ten si udelal svoje veci a po nejake dobe (myslim, ze to bylo kolem 15 milisekund) se k procesu opet vratil.
>> Cili, obsluha tlacitka nezatezujici procesor by mohla vypadat takto: while(1) { obsluhaTlacitka(); usleep(1); }
>>
>> Dle odkazu zde:
>>
>> https://www.raspberrypi.org/forums/viewtopic.php?t=80705
>>> the minimum time it would take is in the order of 100µS
>> by to na raspi melo byt cekat 100us a principialne by to melo fungovat stejne (ale nemam overeno).
>> Michal
>>
>>
>>
>> On Sat, Jul 10, 2021 at 7:18 PM Jindroush <jindroush na seznam.cz> wrote:
>>> On 10.07.2021 18:50, Michal Grunt wrote:
>>>> Mám napsany v C jednoduchý program, který na RPi sleduje jedno GPIO
>>>> (kde je tlacitko) a při jeho stisknutí vygeneruje zmacknuti virtuální
>>>> klávesy třeba X. Funguje to, ale jak to napsat tak, aby to
>>>> nezatezovalo moc procesor? Mám tam nekonečnou smyčku kde sleduji GPIO,
>>>> ale pokud do té smyčky nedám delay třeba 200ms tak to sežere snad
>>>> všechen CPU čas a nebo je to dost náročný (už si to přesně
>>>> nepamatuji). Ale zase s těmi 200ms je to zmacknuti detekování se
>>>> zpožděním... Jak ten stav GPIO detekovat bez zpoždění a s minimální
>>>> zátěží CPU?
>>>>
>>> Pogoogleni povidalo neco o tom, ze lze nektere GPIO nastavit na interrupt.
>>> https://raspberrypi.stackexchange.com/questions/89072/is-there-a-way-to-use-interrupt-driven-gpio-input-through-the-sysfs-interface-wi
>>> neco i zde
>>> http://raspberrypi-aa.github.io/session2/input.html
>>>
>>> --
>>> Jindroush <jindroush na seznam.cz>
>>>
>>> _______________________________________________
>>> HW-list mailing list  -  sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list





Další informace o konferenci Hw-list