Bonjour et bonne année,
J'ai retourné mon problème dans tous les sens, j'ai vraiment besoin de vos avis éclairés ...
Je réalise un programme C (WinXP SP2, BCC 5.02) pour lire des données émises par un appareil bluetooth (qui communique avec le port 40 de mon pc).
Le programme crée un handle sur le port 40 (fonctions createfile, ...), paramètre les propriétés de l'appareil (baud rate = 9600, no parity, 1 stop bit), la taille du buffer, les timeouts.
! Je n'ai rien paramétré de spécial pour 'No Flow Control' par contre.
La connexion est OK, les données sont lues (la doc technique indique : 3 paquets de 125 Bytes de données par sec).
Le programme lit les données Byte par Byte, en mode synchrone (readfile).
La plupart des durées de lecture sont < 1ms. MAIS
tous les 250 bytes environ, la lecture d'un byte va prendre 600 ms (ou encore 15 ms).
J'ai fixé les timeouts comme ceci :
Merci par avance. je suis preneur de toutes les idées !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ReadIntervalTimeout=10; ReadTotalTimeoutMultiplier=10; ReadTotalTimeoutConstant=5000; Mais ça n'a aucun effet (les 2 premiers en tout cas), est - ce le fait que c'est une connexion bluetooth ?
Les miennes sont :
1) Readfile n'a rien à lire pendant 600 ms et attend. Mais pourquoi les timeout n'ont aucun effet ?
2) Les données arrivent normalement en continu mais la fonction Readfile 'buggue pendant 600 ms' pour la lecture d'un byte classique
3) Readfile met 600 ms pour lire un gros truc. Est ce possible que des stop bits soient manquants (erreur de l'appareil) pendant 600 ms ?
Pour info, j'utilise la Instrument Control Toolbox de matlab et j'ai exactement le même comportement.
Patrick
Partager