sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #17468
Re: C-kode til læsning på parallelporten + bash random-funktion
In <000001bf62d9$5fe2fd40$4796fea9@ks> "Kristian Sørensen" <kristian.s@xxxxxxxxxx> writes:
>Vi har nogle fotoceller, hvor vi gerne vil have vores program, som er
>skrevet i C til at læse på porten, og ved at cellen aktiveres, skal
>programmet så gå videre, og sætte en bit (som fx starter en pumpe). Vi har i
>øjeblikket én parallelport i men vil have to mere sat i på et tidspunkt.
>Er der nogen der ved hvordan man læser på porten?
Direkte adgang til hardware fra et program er almindeligvis ikke muligt
i Linux - normalt bliver hardware styret af kernen, så en mulighed er
at skrive et lille kerne-modul som understøtter nogle ioctl() kald, der
implementerer det som i vil gøre. I kerne-modulet kan I så bruge inb()
og outb() funktionerne (eller inw/outw og inl/outl hvis det er words
eller longs i skal læse/skrive).
Hvis I vil lave det i et almindeligt program (det er vanskeligere at
styre timingen fra et almindeligt program) skal I kalde funktionen
ioperm() først, for overhovedet at få adgang til at læse/skrive
til porten. Se "man ioperm()" - det kræver bl.a. at jeres program
kører med root-privilegier.
>gentaget... det kalder vi random når andre hører det :-) MEN hvordan laves
>det i bashscript random altså. Vi har ikke kunne finde noget om det.
>Det vi vil er fx at definere et interval for pauser fx fra 1-10 sekunder.
>Hvorefter et tilfældigt tal udvælges til sleep$.
En mulighed er at læse en byte fra /dev/urandom (leverer pseudo-random
bytes) eller /dev/random (ægte random bytes, men I kan risikere at
læsningen blokerer fordi der ikke er mere tilfældighed at tage af).
Den byte konverteres så til et tal i det interval, I skal bruge.
Noget i retning af
od --read-bytes=1 -d /dev/urandom | cut -c13
(kan sikkert laves bedre, men fortolkningen af output fra filen
vil jeg lade jer om).
--
Henrik Storner | "Software engineering is a race between engineers
<storner@xxxxxxxx> | who try to create foolproof software and the
| universe which is trying to create bigger fools.
| So far, the universe is winning..."
References