#include #include #include // Definuje port JOYSTICKu #define DATA 0x200 #define STATUS DATA #define CONTROL DATA float ZmerTo (unsigned short naportu, unsigned char odkud, int stav) #define DelkaCyklu 0xffff { int t0, t1, t2; int mask = (1 << odkud); t1=0; t2=0; for (t0 = 0; t0 < DelkaCyklu; t0++) if ((inb (naportu) & mask) == 0) t1++; t2=DelkaCyklu-t1; if (stav!=0) { t1=t2; t2=DelkaCyklu-t1; }; return ((((double)t2 / ((double)DelkaCyklu)) - 0.318) / 0.0047); } int main (void) { FILE *out_file; if (setuid (0) < 0) { printf ("Program musi byt spusten rootem\n"); exit (1); } if (ioperm (STATUS, 3, 1)) { printf ("Program musi byt spusten rootem\n"); exit (1); } if (ioperm (DATA, 4, 1)) { printf ("Neni pristup na port\n"); exit (1); } // zapis vysledku do souboru out_file = fopen("out_file_teplomer","w"); fprintf(out_file,"%4.1f", ZmerTo (DATA,4, 0)); fclose(out_file); return (0); }