Lire des trames sur la broche CTS d'un port série [Résolu]

Signaler
Messages postés
6
Date d'inscription
dimanche 24 septembre 2006
Statut
Membre
Dernière intervention
28 décembre 2006
-
Messages postés
6
Date d'inscription
dimanche 24 septembre 2006
Statut
Membre
Dernière intervention
28 décembre 2006
-
Bonjour,

Certains programmes utilisés par les radioamateurs se servent de la broche CTS des ports séries pour récupérer des trames issues d'une interface reliée à un recepteur.
Savez vous comment est géré cette lecture sur la broche CTS ?

Merci pour votre aide.

Francis

9 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
En vb6, il te faut rajouter le controle MS Comm à ton projet.

Ensuite il faut que tu fasse une boucle pour venir scruter régulièrement la propriété CTSHolding de ton controle, mémoriser chaque état (bits) pour les regrouper ensuite en mots de 8 bits.
En gros, il faut que tu te tappe la désérialisation des données à la main.

Plutot étrange d'utiliser la ligne CTS pour communiquer, pourquoi ne pas prendre la ligne RX qui est prevue pour cela.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
1200bauds ça fait en gros 0.8ms par bit.

Tu ne peux pas utiliser le controle Timer. Mais avec une boucle faut voir ce que ça donne.
Sinon faut passer par un Timer système, en utilisant les api windows

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
6
Date d'inscription
dimanche 24 septembre 2006
Statut
Membre
Dernière intervention
28 décembre 2006

Bon d'accord j'ai rien dit, je vais voir du coté de "DoEvents()".

Merci pour ton aide.

Francis
Messages postés
6
Date d'inscription
dimanche 24 septembre 2006
Statut
Membre
Dernière intervention
28 décembre 2006

Merci pour la réponse, je pense que l'utilisation de la broche CTS est plus pratique dans ce cas car elle n'impose pas la reception des bits par octets.
Le projet qui m'interesse prévoit la reception d'une trame de 120 bits minimum, il n'y a pas de bit de start ni d'arret "entourant" un mot.
La vitesse de transmission est de 1200 bauds/s n'est ce pas trop rapide pour VB ?

Francis
Messages postés
6
Date d'inscription
dimanche 24 septembre 2006
Statut
Membre
Dernière intervention
28 décembre 2006

Existe t-il un moyen de mesurer le temps d'execution d'une boucle ?
Je vais rechercher coté API quand même.

Francis
Messages postés
6
Date d'inscription
dimanche 24 septembre 2006
Statut
Membre
Dernière intervention
28 décembre 2006

Bonsoir,
Je viens de trouver ça   http://support.microsoft.com/kb/172338 , la résolution annoncée dans les meilleurs des cas et de 10 ms, n'y at-il pas plus rapide ?

Francis
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
Il faudrait éplucher ce document, mais ces résultats ne sont pas réalistes.

Time, controle Timer, ... ont une résolution de 20ms environ (18.2ms exactement)
GetTickCount à une résolution de 1ms puis que cette api te renvoie le nombre de ms depuis l'allumage de la machine.
QueryPerformanceCounter a une résolution dépendant de la machine mais généralement largement inférieure à la µs. Sur mon Pc, de ce que j'ai pu estimer, je tourne aux environ de la dizaine de ns ( 0.00001ms).

Malheuresement, QueryPerformanceCounter n'est pas disponibles sur tous les PC même les modernes. Sur ceux pour lesquels cett api marche, la résolution est donnée par la formule 1/freq, avec freq : la fréquence renvoiyée par l'api QueryPerformanceFrequency

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
6
Date d'inscription
dimanche 24 septembre 2006
Statut
Membre
Dernière intervention
28 décembre 2006

Je ne comprends pas quand tu dis "Malheuresement, QueryPerformanceCounter n'est pas disponibles sur tous les PC même les modernes" ce n'est qu'une question de code ?

Francis
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
Non, pour que cette api marche, il est necessaire que soit implanté dans le système (processeur, chipset, ou carte mère, je sais pas où exactement), des compteurs Hautes performances. Ca dépend du matériel, ce n'est pas une question de code.

Regarde ces liens de l'apiguide :
http://www.allapi.net/apilist/QueryPerformanceCounter.shtml
http://www.allapi.net/apilist/QueryPerformanceFrequency.shtml

et l'exemple donné est commun aux 2 apis

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #