Toon posts:

[VC++] 'time out' genereren

Pagina: 1
Acties:

Verwijderd

Topicstarter
Stel ik heb een routine die 4tekens input verwacht van een seriele poort, maar die poort antwoord niet. Dus dacht ik dit simpel op te vangen door deze code:

C++:
1
2
3
4
5
6
7
8
9
DWORD delay=static_cast <DWORD> (5000);
DWORD systemtimer=GetTickCount();
delay+=systemtimer;
//wacht tot 4tekens binnen zijn of wachten op een time_out.
while (systemtimer<delay || x<4 )
{
  x=port.ReadDataWaiting();
  systemtimer=GetTickCount();
}

als hij 4 tekens binnen krijgt, kan ik verder, echter deze 'time out' werkt niet.
Wat doe ik verkeerd?

Verwijderd

Moet je niet een && gebruiken? Als er nu nooit 4 bytes worden gelezen blijf je altijd in de loop hangen.

Verwijderd

Topicstarter
damn,
je hebt gelijk. Dat een mens daar zolang overheen kan kijken.

thx.

Verwijderd

Is het nu niet erg laat/vroeg daar? Daar zal het wel door komen... :)

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 09:44
- Blocked readDataWaiting?
- Als je gettickcount wrapped werkt je timeout niet correct
- Heb je een busyloop (van 5s :O ) gecreeerd?

Raad je aan om de standaard timeout mechanismen van je platform te gebruiken.

[ Voor 4% gewijzigd door farlane op 09-02-2006 09:51 ]

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Verwijderd

Topicstarter
farlane schreef op donderdag 09 februari 2006 @ 09:50:
- Blocked readDataWaiting?
- Als je gettickcount wrapped werkt je timeout niet correct
- Heb je een busyloop (van 5s :O ) gecreeerd?

Raad je aan om de standaard timeout mechanismen van je platform te gebruiken.
idd dat heb ik ook opgemerkt (100% CPU gebruik)
-> heb nu een Sleep() gebruikt.
Sleep en && waren de oplossing
('t was idd al wat laat toen.)
Pagina: 1