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