/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
Bech_bb 500
kyllekylle 500
jdjespers.. 500
gibson 300
scootergr.. 300
molokyle 287
10  strarup 270
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.

Søg
Reklame
Statistik
Spørgsmål : 177429
Tips : 31962
Nyheder : 719565
Indlæg : 6407948
Brugere : 218878

Månedens bedste
Årets bedste
Sidste års bedste