Lire des trames sur la broche CTS d'un port série

Résolu
flyingrock66 Messages postés 6 Date d'inscription dimanche 24 septembre 2006 Statut Membre Dernière intervention 28 décembre 2006 - 28 déc. 2006 à 14:54
flyingrock66 Messages postés 6 Date d'inscription dimanche 24 septembre 2006 Statut Membre Dernière intervention 28 décembre 2006 - 28 déc. 2006 à 19:42
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

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
28 déc. 2006 à 15:25
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 #
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
28 déc. 2006 à 17:00
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 #
3
flyingrock66 Messages postés 6 Date d'inscription dimanche 24 septembre 2006 Statut Membre Dernière intervention 28 décembre 2006
28 déc. 2006 à 19:42
Bon d'accord j'ai rien dit, je vais voir du coté de "DoEvents()".

Merci pour ton aide.

Francis
3
flyingrock66 Messages postés 6 Date d'inscription dimanche 24 septembre 2006 Statut Membre Dernière intervention 28 décembre 2006
28 déc. 2006 à 16:34
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
flyingrock66 Messages postés 6 Date d'inscription dimanche 24 septembre 2006 Statut Membre Dernière intervention 28 décembre 2006
28 déc. 2006 à 17:12
Existe t-il un moyen de mesurer le temps d'execution d'une boucle ?
Je vais rechercher coté API quand même.

Francis
0
flyingrock66 Messages postés 6 Date d'inscription dimanche 24 septembre 2006 Statut Membre Dernière intervention 28 décembre 2006
28 déc. 2006 à 18:06
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
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
28 déc. 2006 à 18:49
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 #
0
flyingrock66 Messages postés 6 Date d'inscription dimanche 24 septembre 2006 Statut Membre Dernière intervention 28 décembre 2006
28 déc. 2006 à 18:59
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
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
28 déc. 2006 à 19:09
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 #
0
Rejoignez-nous