Witam.
Potrzebuję małej pomocy w C z portem LPT.
Działam na systemie Linux, a dokładniej Debian Wheezy.
Chciałbym uzyskać sterowanie komputerem poprzez przyciski.
Mam kod:
// /home/user/lpt
#include <stdio.h>
#include <sys/io.h>
int main ()
{
int stan;
ioperm(0x378,3,1);
stan=inb(0x379);
printf("%d\n",stan);
return 0;
}
Przyciski podłączone według schematu:
O 5V
|
|
-
| | 10k
| |
-
|
+-----------o input (X)
|
|
o
\
o
|
|
=== GND
Gdzie "X" to 10, 11 i 12 pin portu LPT.
Dzięki temu programowi wiem, że jak nic nie jest zwarte do masy to mam "126".
Pin 10 zwarty do masy "110",
pin 11 zwarty do masy "62",
pin 12 zwarty do masy "254"
A teraz do sedna.
- Jak to zrobić, aby gdy nic nie jest zwarte to nic się nie dzieje, jeżeli zwarty jest któryś z pinów to uruchomią się skrypty bash:
pin 10-/home/user/skrypt1.sh
pin 11-/home/user/skrypt2.sh
pin 12-/home/user/skrypt3.sh - Wszystko będzie działać w nie skończonej pętli.
- Program sam wystartuje po starcie systemu i będzie działał w tle.
EDYTA:
Czy to ma sens:
// /home/user/lpt
#include <stdio.h>
#include <sys/io.h>
int main (void)
{
while(1) {
int stan;
ioperm(0x378,3,1);
stan=inb(0x379);
switch( stan )
{
case 110:
system("/home/user/skrypt1.sh", NULL);
break;
case 254:
system("/home/user/skrypt2.sh", NULL);
break;
case 62:
system("/home/user/skrypt3.sh", NULL);
break;
}
}
return 0;
}
I w /etc/rc.local
/home/user/lpt > /dev/null 2>&1
Teoretycznie działa, teoretycznie bo po naciśnięciu przycisku wykonuje się skrypt, ale obciążenie procesora wzrasta do 100%. Bez uruchomionego programu obciążenie procesora 0%-max10%.