/ 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
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Overvågning af process
Fra : Stephan Henningsen


Dato : 11-10-01 10:10


Nå, jeg fandt efter lidt bakseri og sved på panden ud af, at
den smarteste måde at føre ikke-buffered kommunikation på i
C++ med streams er ved ikke at bruge C++ og streams, men ved
at kalde C's open/close/read/write i stedet for. Så nu
virker det. Sådan da.

Jeg har skrevet en funktion der sender en forespørgsel til
noget hardware på serielporten, og hardwaren melder så
tilbage, og jeg læser informationerne. Problemet er, at
nogen gange går kommunikationen død af uvisse årsager (kan
det skyldes at mit seriel-kabel er ~5 meter langt?).

Så jeg har tænkt på at give funktionen et vist antal
sekunder til at udføre sin komunikation, og hvis den ikke
returnerer inden da, så slå den ihjel.

Er det smart at bruge tråde og f.eks. lade dem dele en
bool operation_completed ?

Er dette den rigtige måde, at gøre det på?

Er der andre, der har erfaringer med dette?

--
Stephan Henningsen /
/ tisprut productions[tm]


 
 
Kent Friis (11-10-2001)
Kommentar
Fra : Kent Friis


Dato : 11-10-01 21:32

Den 11 Oct 2001 09:10:16 GMT skrev Stephan Henningsen:
>
>Nå, jeg fandt efter lidt bakseri og sved på panden ud af, at
>den smarteste måde at føre ikke-buffered kommunikation på i
>C++ med streams er ved ikke at bruge C++ og streams, men ved
>at kalde C's open/close/read/write i stedet for. Så nu
>virker det. Sådan da.

Øh, C har da ikke open/close/read/write. De hedder fopen/fclose/fread/
fwrite.

På *nix er open/close/read/write systemkald.

>Jeg har skrevet en funktion der sender en forespørgsel til
>noget hardware på serielporten, og hardwaren melder så
>tilbage, og jeg læser informationerne. Problemet er, at
>nogen gange går kommunikationen død af uvisse årsager (kan
>det skyldes at mit seriel-kabel er ~5 meter langt?).

Det burde det ikke.

>Så jeg har tænkt på at give funktionen et vist antal
>sekunder til at udføre sin komunikation, og hvis den ikke
>returnerer inden da, så slå den ihjel.
>
>Er det smart at bruge tråde og f.eks. lade dem dele en
>bool operation_completed ?
>
>Er dette den rigtige måde, at gøre det på?

Hvis du spørger mig, så er threads aldrig den rigtige måde at gøre
noget på. Der er simpelthen så mange muligheder for at noget kan gå
galt.

Jeg ville til dit formål (forudsat *nix) bruge select(), og give den
en passende timeout.

Mvh
Kent
--
War does not determine who is right, only who is left.

Stephan Henningsen (12-10-2001)
Kommentar
Fra : Stephan Henningsen


Dato : 12-10-01 08:30

On Thu, 11 Oct 2001 20:32:08 +0000 (UTC), Kent Friis wrote:
>
>Øh, C har da ikke open/close/read/write. De hedder fopen/fclose/fread/
>fwrite.
>
>På *nix er open/close/read/write systemkald.

Aha, jeg troede de var en del af standard C.


>>Er det smart at bruge tråde og f.eks. lade dem dele en
>>bool operation_completed ?
>>
>>Er dette den rigtige måde, at gøre det på?
>
>Hvis du spørger mig, så er threads aldrig den rigtige måde at gøre
>noget på. Der er simpelthen så mange muligheder for at noget kan gå
>galt.
>
>Jeg ville til dit formål (forudsat *nix) bruge select(), og give den
>en passende timeout.

Jeg sidder og laeser man-siden nu. Mange tak.

Jeg har ioevrigt fundet en fejl i mit program samt lavet en
smartere laese-loekke, saa jeg tror, at jeg klarer mig uden
select() indtil videre.


--
Stephan Henningsen /
/ tisprut productions[tm]


Kim Petersen (14-10-2001)
Kommentar
Fra : Kim Petersen


Dato : 14-10-01 21:16

stephan@levelout.tisprut.dk (Stephan Henningsen) writes:
> On Thu, 11 Oct 2001 20:32:08 +0000 (UTC), Kent Friis wrote:
> >
> >Øh, C har da ikke open/close/read/write. De hedder fopen/fclose/fread/
> >fwrite.
> >
> >På *nix er open/close/read/write systemkald.
>
> Aha, jeg troede de var en del af standard C.
Det er de også, open/close/read/write er de "rigtige" funktioner,
hvorimod fopen/fclose etc. er "bufferede" filer. Disse er implementeret
i C. Hvorimod open/close etc. som regel er lowlevel system kald.
>
>
> >>Er det smart at bruge tråde og f.eks. lade dem dele en
> >>bool operation_completed ?
> >>
> >>Er dette den rigtige måde, at gøre det på?
> >
> >Hvis du spørger mig, så er threads aldrig den rigtige måde at gøre
> >noget på. Der er simpelthen så mange muligheder for at noget kan gå
> >galt.
> >
> >Jeg ville til dit formål (forudsat *nix) bruge select(), og give den
> >en passende timeout.
>
> Jeg sidder og laeser man-siden nu. Mange tak.
>
> Jeg har ioevrigt fundet en fejl i mit program samt lavet en
> smartere laese-loekke, saa jeg tror, at jeg klarer mig uden
> select() indtil videre.
>
>
> --
> Stephan Henningsen /
> / tisprut productions[tm]
>

--
Mvh. Kim Petersen /| Tlf: +4575831551 |\ Jomfru Ingefreds Vej 18
Software Engineer / | Fax: (none atm.) | \ 7100 Vejle
LSS / | Email: kim@vindinggaard.dk | \ DK - Danmark

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste