Bonjour,
Je dois poller pour des lectures un port de communication dans un thread séparé. Dans la fonction Execute() du thread, si je me contente de lire byte par byte le flux entrant, ça marche correctement.
En revanche, si je fais un test préliminaire pour savoir si des données sont disponibles sur le port - comme le bon sens m'y invite - ça marche aussi mais le CPU est à 100%.
Voici un extrait du code:
Dans le code ci-dessus, le test préliminaire est mis en commentaires.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 void __fastcall USB_RX_THREAD::Execute() { DWORD BytesReturned, BytesSent, EventWord; while (!Terminated) { FT_GetStatus(ftHandle, &BytesReceived, &BytesSent, &EventWord); //if (BytesReceived) { FT_Read(ftHandle, &RxData, 1, &BytesReturned); Synchronize(ProcessRxData); //} }
Il y a sans doute qqch qui cloche dans mon code... Une idée? Merci!
Partager