udalost pri otevreni skrine PC
Petr Šobáň
soban na centrum.cz
Sobota Květen 31 23:33:40 CEST 2003
Dne so 31. května 2003 08:58 jste napsal(a):
> On Fri, 30 May 2003 13:06:06 +0200
>
> Petr Šobáň <soban na centrum.cz> wrote:
> > Otevřu rychle dveře a kontak vratim do puvodního stavu a pokud se
> > netrefim zrovna do toho času kdy se testuje ten kontakt tak nikdo nic
> > nepozná :-)
> >
> > Já jsem takvéto věci řešil připojením na gameport jednoduše tlačítka jako
> > tlačítka joisticku no a jdou připojit i potenciometry pro sledování
> > polohy.
> >
> > :-)
>
> S tim jsem samozrejme pocital, kazdopadne by tam byl nejaky klopny
> obvod, ktery by se po nejake dobe resetoval a tim by nemohlo dojit
> ze ten 1 min. test neodhali otevreni dveri.
> Budu premyslet nad tim jostickem...
Například jsem se taky snažil přes vstupy joistiku snímat čas z DCF77 a na
k6-2 500Mhz + RH7,1 to šlo bez chyb, prostě stačilo to softvarově měřit délku
impulzu, takže na snímání tlačítka bude stačit jakýkoliv program a čas pokud
dáme 0,5 sekundy tak za tu dobu pokud použijeme třeba jazýčkový kontakt nikdo
nestačí otevřit ty dveře a vrátit kontakt do klidového stavu (magnet) na míň
jak 0,5s :-)
Větší problém bude jak vám vypnou proud a povrtají se v tom :-)
Takže nejednoduší řešení nějaké čidlo z alarmu (jazýčkový kontakt + magnet)
připojit místo tlačítka na joisticku a napsát program co to bude kontrolovat.
Dělal jsem to nějak takhle - pro inspiraci
#include <stdio.h>
#include <time.h>
#define IMPULS 0x01
#define KLID 0x00
#define JOISTICK "/dev/js0"
unsigned char tlacitka;
void delay_SS(double milisekund)
{
clock_t start, end;
start = clock();
end = start + (clock_t) ((milisekund * (double) CLOCKS_PER_SEC) / (double)
1000);
while ( start < end ) start = clock();
}
void cti_joi(void)
{
FILE *joi;
unsigned char buffer[30];
if ((joi=fopen(JOISTICK,"rb"))==NULL)
{
fprintf(stderr,"Nelze otevrit soubor "JOISTICK" \n\n");
_exit(1);
}
fread(buffer,29,1,joi);
fclose(joi);
tlacitka=buffer[4];
return;
}
int precti_bit(void)
{
do { cti_joi(); } while(tlacitka!=KLID);
do { cti_joi(); } while(tlacitka!=IMPULS);
delay_SS(170);
cti_joi();
if(tlacitka==IMPULS) return 1;
else return 0;
}
--
/----------------------------------------\
| Petr Šobáň |
| Olomouc |
|----------------------------------------|
| e-mail soban na centrum.cz |
| jabber soban na jabber.cz |
| ICQ 179223500 |
\----------------------------------------/
Další informace o konferenci Linux