Port serie : bit de start

Signaler
Messages postés
4
Date d'inscription
lundi 25 juillet 2005
Statut
Membre
Dernière intervention
29 juillet 2005
-
Messages postés
4
Date d'inscription
lundi 25 juillet 2005
Statut
Membre
Dernière intervention
29 juillet 2005
-
Bonjour à tous,

Je débute et j'ai quelques questions à propos de l'API windows

Je dois communiquer avec un melangeur video via un port série et les
trames des messages que je dois envoyer sont de la forme suivante :

[1 bit de start] [8 bits de données][1bit de parité][1 bit de stop].

Le problème est que dans la structure DCB il est possible de définir
uniquement si on veut le bit de parité et les bits de stop, il n'y a
pas de bit de start.

Est-ce que celà fonctionnerait si je mettais le ByteSize à 9 au lieu de 8 ? on aurait alors (je pense) :

[9 bits de données][1bit de parité][1 bit de stop], le bit rajouté servant de bit de start.



Autre chose, je souhaite fixer la sortie Tx du port série soit à l'état 1 soit à l'état 0.

Est-que les commandes "EscapeCommFunction(hcom, SETBREAK)" et "EscapeCommFunction(hcom, CLRBREAK)" jouent ce rôle ?



Merci d'avance

6 réponses

Messages postés
126
Date d'inscription
jeudi 5 juin 2003
Statut
Membre
Dernière intervention
11 juillet 2006

Bonjour,

Premierement de base une trame RS232 a forcement un bit de start donc tu dois dans la structure DCB parametrer uniquement 8 bits de donnees, 1 de parite et 1 de stop. La longueur du bit de start dependant bien entendu du baudrate.

deuxiemement la fonction escapecommfunction ne permet pas de positionner directement la sortie Tx à 1 ou à 0. Celle-ci permet de controler uniquement les pattes DTR,DTS,CTR,CTS et le BREAK.
Si tu veux fixer la patte Tx à un niveau logique 1 ou 0 tu le peux uniquement en ecrivant 11111111b ou 00000000b sur le port.
Bien entendu ce niveau sera dans une trame, si c'est un niveau logique continu que tu veux controler sert toi plutot de la patte DTR de la com en n'utilisant pas le controle de flux .

cordialemnent

TOCHE
Messages postés
4
Date d'inscription
lundi 25 juillet 2005
Statut
Membre
Dernière intervention
29 juillet 2005

Je te remercie de ta réponse tu m'as déjà bien éclairé.

Mais en fait avant d'envoyer des trames, il faut que je transmette 17 à
20 bits à l'état 0 puis 2 bit ou plus à l'état 1 pour que l'appareil
avec laquelle je communique se mette à l'état actif ( ils appellent ça
le "break character" dans la doc), donc je ne peux pas utiliser la
patte DTR, ni écrire 11111111b ou 00000000b sur le port je pense.
Messages postés
126
Date d'inscription
jeudi 5 juin 2003
Statut
Membre
Dernière intervention
11 juillet 2006

Ce sue je ne comprends pas et que toute communication sur le port serie via la sortie Tx est formaté par un bit de start le nombre de bit de donné le bit de parite et le bit de stop, c'est un standard.
Si ton appareil a besoin d'autre chose qu'un format standard pour s'initialiser cela ne peut etre sur la sortie TX qui ne te permettra que d'avoir 8 ou 9 bits à l'etat bas.

Si c'est relleement 20 bits à OL sur le TX je ne vois pas, par contre si c'est un temps à l'etat bas tu peux jouer en diminuant au debut le baudrate au min et lancer un 00000000b mas normalement in doit pas y avoir de communication non tramé sur le port serie..

Si tu as plus d'info, je suis un peu dans le flou

TOCHE
Messages postés
4
Date d'inscription
lundi 25 juillet 2005
Statut
Membre
Dernière intervention
29 juillet 2005

C'est peut-être moi qui n'ai pas bien compris, dans la doc il est écrit :

"Break Character". The conerstone of the... protocols is the 1-1/2
characterlength "Break", which is a spacing or a logical low condition
on the serial bus. The Break is transmitted by the Bus Controller and
serves to get the attention of all tributaries on the bus prior to
transmitting a message."



Apres il y a un schema qui montre à quoi ressemble le break character, les infos à en tirer sont les suivantes :



break charater :

[spacing data, 17 to 20 bit times (etat 0)][marking data, 2 or more bit tiles] ensuite debut des trames

1 bit time = 26 µs à 38,4k



Merci d'avance
Messages postés
126
Date d'inscription
jeudi 5 juin 2003
Statut
Membre
Dernière intervention
11 juillet 2006

Cela veut dire que ce melangeur doit etre commander par une liason serie serie proprietaire que tu cree a partir d'un microcontroleur ou d'un DSP, mais je ne vois pas comment faire passer 20 bits a l'etat bas sur une RS232 standard provenant d'un PC a moins de le faire en assembleur en mode DOS.

Cordialement

TOCHE
Messages postés
4
Date d'inscription
lundi 25 juillet 2005
Statut
Membre
Dernière intervention
29 juillet 2005

En relisant la doc, j'ai vu qu'on peut en fait s'affranchir du break
character en utilisant une version simplifié du protocole, donc c'est
bon.

Merci à vous.