|
| Kald funktion når værdi ændres (event) Fra : Peter Andersen |
Dato : 15-11-05 16:53 |
|
Hej,
Jeg arbejder på et lille program i c på FreeBSD-platform, hvor jeg konstant
(i en uendelig løkke) aflæser en værdi. Jeg vil gerne kalde en funktion med
værdien som argument, hvis værdien ændrer sig (noget den ikke gør så tit).
Hvordan gør man sådan noget i c?
På forhånd tak
| |
Kent Friis (15-11-2005)
| Kommentar Fra : Kent Friis |
Dato : 15-11-05 16:59 |
|
Den Tue, 15 Nov 2005 16:52:39 +0100 skrev Peter Andersen:
> Hej,
>
> Jeg arbejder på et lille program i c på FreeBSD-platform, hvor jeg konstant
> (i en uendelig løkke) aflæser en værdi. Jeg vil gerne kalde en funktion med
> værdien som argument, hvis værdien ændrer sig (noget den ikke gør så tit).
> Hvordan gør man sådan noget i c?
Noget i denne retning?
old=read()
while(1) {
value=read;
if(value!=old) funktion(value);
old=value;
}
Mvh
Kent
--
Hard work may pay off in the long run, but laziness pays off right now.
| |
Peter Andersen (15-11-2005)
| Kommentar Fra : Peter Andersen |
Dato : 15-11-05 17:02 |
|
"Kent Friis" <nospam@nospam.invalid> wrote in message
news:437a05b3$0$41140$14726298@news.sunsite.dk...
> Noget i denne retning?
>
> old=read()
> while(1) {
> value=read;
> if(value!=old) funktion(value);
> old=value;
> }
Ja det virker jo ret enkelt. Jeg tænkte vist bare for objektorienteret.
Tak. :)
| |
Arne Vajhøj (15-11-2005)
| Kommentar Fra : Arne Vajhøj |
Dato : 15-11-05 17:10 |
|
Kent Friis wrote:
> Noget i denne retning?
>
> old=read()
> while(1) {
> value=read;
> if(value!=old) funktion(value);
> old=value;
> }
Sådan en konstruktion kan være en rigtigt
CPU gnasker.
Arne
| |
Peter Andersen (15-11-2005)
| Kommentar Fra : Peter Andersen |
Dato : 15-11-05 17:15 |
|
"Arne Vajhøj" <arne@vajhoej.dk> wrote in message
news:437a0861$0$210$edfadb0f@dread16.news.tele.dk...
> Kent Friis wrote:
>> Noget i denne retning?
> Sådan en konstruktion kan være en rigtigt
> CPU gnasker.
Ja. Maskinen har et load avarage på ca. 1 når den kun kører programmet.
Grunden er, at jeg skal aflæse hvornår et ben på parallelporten ændrer
tilstand i FreeBSD med /dev/ppi.
Man har, så vidt jeg kan se, ikke mulighed for at sætte et interrupt op som
kaldes når benet ændres. Derfor aflæser jeg hele tiden.
| |
Arne Vajhøj (15-11-2005)
| Kommentar Fra : Arne Vajhøj |
Dato : 15-11-05 17:43 |
|
Peter Andersen wrote:
> "Arne Vajhøj" <arne@vajhoej.dk> wrote in message
> news:437a0861$0$210$edfadb0f@dread16.news.tele.dk...
>>Sådan en konstruktion kan være en rigtigt
>>CPU gnasker.
>
> Ja. Maskinen har et load avarage på ca. 1 når den kun kører programmet.
> Grunden er, at jeg skal aflæse hvornår et ben på parallelporten ændrer
> tilstand i FreeBSD med /dev/ppi.
> Man har, så vidt jeg kan se, ikke mulighed for at sætte et interrupt op som
> kaldes når benet ændres. Derfor aflæser jeg hele tiden.
Og du kan ikke tillade dig at lave en lille bitte
usleep ?
ARne
| |
Peter Andersen (15-11-2005)
| Kommentar Fra : Peter Andersen |
Dato : 15-11-05 17:57 |
|
"Arne Vajhøj" <arne@vajhoej.dk> wrote in message
news:437a102e$0$125$edfadb0f@dread16.news.tele.dk...
> Og du kan ikke tillade dig at lave en lille bitte
> usleep ?
Joe det kunne jeg sikkert godt. Hvor lang tid vil du anbefale?
| |
Arne Vajhøj (15-11-2005)
| Kommentar Fra : Arne Vajhøj |
Dato : 15-11-05 18:09 |
|
Peter Andersen wrote:
> "Arne Vajhøj" <arne@vajhoej.dk> wrote in message
> news:437a102e$0$125$edfadb0f@dread16.news.tele.dk...
>>Og du kan ikke tillade dig at lave en lille bitte
>>usleep ?
>
> Joe det kunne jeg sikkert godt. Hvor lang tid vil du anbefale?
Så lang tid som du kan leve med.
Arne
| |
Kent Friis (15-11-2005)
| Kommentar Fra : Kent Friis |
Dato : 15-11-05 18:30 |
|
Den Tue, 15 Nov 2005 17:10:10 +0100 skrev Arne Vajhøj:
> Kent Friis wrote:
>> Noget i denne retning?
>>
>> old=read()
>> while(1) {
>> value=read;
>> if(value!=old) funktion(value);
>> old=value;
>> }
>
> Sådan en konstruktion kan være en rigtigt
> CPU gnasker.
Det kan den, men det kommer helt an på funktionen til aflæsning.
En normal read()/fread()/getchar()/... har ikke problemet medmindre
man selv beder om det (ved at vælge non-blocking i/o).
Jeg kan dog se længere nede at i dette tilfælde fik du fuldstændig
ret.
Mvh
Kent
--
Hard work may pay off in the long run, but laziness pays off right now.
| |
|
|