Question sur tcomport

aqwxszedc111 Messages postés 15 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 22 novembre 2009 - 21 nov. 2009 à 11:49
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 - 23 nov. 2009 à 11:50
bonjour tout le monde

j'utilise la bibliotéque tcomport pour un projet

je précise que j'ai déja lu se tuto :

http://nono40.developpez.com/tutoriel/delphi/2005/comport/

mais j'ai pas trouvé de réponse a mes questions:

donc si je ne veux pas envoyer des caractère sur TxD mais une trame de bit bien précis par exemple (0110101) c'est possible ?si oui quelle instruction utiliser ?

et aussi le composant "comterminal" j'arrive pas taper des caractères deçu lors de l'exécution du programme...prk ?

voila merci!

12 réponses

aqwxszedc111 Messages postés 15 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 22 novembre 2009
21 nov. 2009 à 16:19
un petit UP
0
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
21 nov. 2009 à 19:02
Bonjour,

Pour l'emmission, TComport ne peut pas envoyer une trame de bit, il envoit un octet ou une suite d'octet avec le port série (donc avec un bit de start, 0 ou plusieur bit de stop). Tu ne peut pas avec ce composant, controler précisément tous les bits qui sortent du port.
Si tu veut envoyer un octet particulier, a toi de faire une transformation de ta trame de bit en octet puis de le transmettre.car le TComport peut envoyer soit des octets, soit des caractères.

Pour le comterminal, je ne peut pas t'aider car je ne l'utilise pas.


Oniria
0
aqwxszedc111 Messages postés 15 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 22 novembre 2009
21 nov. 2009 à 20:44
salut Oniria ! merci bien pour ton aide !

ta réponse me vas mais juste que j'ai pas bien compris ce que tu veux dire par:

"a toi de faire une transformation de ta trame de bit en octet puis de le transmettre."

merci !
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
22 nov. 2009 à 01:10
Ta trame est composée de bits. Il te suffit alors de faire des groupes de 8 bits afin de former un octet (qui en passant peut se représenter par un caractère) et d'envoyer tout ça sur ton composant. Exemple :

111010010010111101010010 deviendra [11101001] [00101111] [01010010], tu convertis ces trois "paquets" en octets et tu envoies

Evidemment, desfois ta frame n'aura pas une taille multiple de 8 bits exactement, donc il y aura des bits qui "dépasseront", dans ce cas-là il faudra t'arranger pour envoyer un "morceau d'octet" qui contient des données utiles et un "remplissage" (précédé d'un signal STOP), à toi de voir.

Cordialement, Bacterius !
0

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

Posez votre question
aqwxszedc111 Messages postés 15 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 22 novembre 2009
22 nov. 2009 à 09:52
bonjours !

merci pour votre explication Bacterius !

je viens d'avoir une idée pour simplifier les choses:

comme c'est moi qui vas programmer le système récepteur (mon circuit électronique), donc il peut accepter les octets que je veux
donc il me suffi simplement d'envoyer sur TxD un "A" qui est selon le ASCII 10000001 , et mon circuit (PIC) doit être programmer
pour accepter ses octets.

c'est juste ce que je dit ??

merci de me confirmer.
0
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
22 nov. 2009 à 09:56
Bonjour,

ce que veux dire Bacterius c'est que la trame RS232 est composé :
d'un bit de start => incontrolable
des bits de données => ton octet à envoyer qui peut avoir une taille variable
d'un bit de parité => que l'on peut mettre ou non
d'un ou 1,5 ou 2 bits de stop => obligatoire et incontrolable sauf le nombre de bit que est configurable.

Si tu veux vraiment controler l'emmission de tous les bits, il faut que tu controle une autre ligne de commande RS232 directement et là, c'est bien plus complexe, il te faudra gérer les durées des niveaux 1 et 0, et surtout avoir une procédure d'étalonnage du système d'emission.

Cordialement


Oniria
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
22 nov. 2009 à 11:05
d'un ou 1,5 ou 2 bits de stop

Oniria, tu me diras comment tu fais pour définir un bit et demi

Cordialement, Bacterius !
0
aqwxszedc111 Messages postés 15 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 22 novembre 2009
22 nov. 2009 à 12:23
ok ! alors quand le TxD envois "A" qui est 10000001 et ajouter un bit de start donc 110000001 mais ce n'est plus un octet de 8 bit??
0
aqwxszedc111 Messages postés 15 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 22 novembre 2009
22 nov. 2009 à 19:33
hello

c bon, je crois que je viens de trouver une autre solution plus adapté a mon projet .... la DLL RSCOM !

merci pour votre aide !
0
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
23 nov. 2009 à 07:31
Bonjour,

Ta DLL RSCOM utilise les appels system aussi. Dis moi ce que tu fais avec ton projet, je te dirais si ca marche. Il ne faut pas mélanger tout en même temps. Si tu veux faire communiquer un PC avec un autre PC ou un µControleur via une RS232, tu dois juste configurer les deux périphérique série de la même manière et tu n'auras plus qu'a te soucier de tes octets. si avec ta ligne Txd, tu veux faire une horloge où une communication série que ne respecte pas les trame RS232, tu n'as pas d'autre choix que d'utiliser une ligne de controle que tu pourras piloter librement.
J'espére que j'ai été clair....

Pour Bacterius, la longueur du bit de stop peut faire 1,5 bits car on parle de durée. Voici l'extrait de l'aide de TComport sur le sujet :
" Specifies the number of stop bits to be used.

type TStopBits = (sbOneStopBit, sbOne5StopBits, sbTwoStopBits);
property StopBits: TStopBits;

Description
Sets the number of stop bits per charachter. StopBits can be set to one of the following values:


Value Meaning

sbOneStopBit 1 stop bit per byte
sbOne5StopBits 1.5 stop bits per byte
sbTwoStopBits 2 stop bits per byte

Note
Use of 5 data bits with 2 stop bits is invalid combination, as is 6, 7 or 8 data bits with 1.5 stop bits.
"


Oniria
0
Utilisateur anonyme
23 nov. 2009 à 08:38
Salut aqwxszedc111 : je pense que tu devrais te renseigner sur le protocole RS232 avant de l'utiliser. Un tuto
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
23 nov. 2009 à 11:50
salut,
petites précision sur les ports série.
il en existe plusieurs types les asynchrones et les synchrones. celui qui t'intéresse est un port asynchrone et pour ne pas perdre de données il est indispensable de les resynchroniser régulièrement c'est le but des bits de START et de STOP.
ton micro contrôleur possède certainement en interne un UART qui gère ce port et donc tu n'as pas à te préoccuper de ces bits: il les ajoutera d'office tout comme l'UART du PC les enlève avant de transmettre les données au programme l'opération est transparente pour l'utilisateur initial et final.
tu as juste à configurer le port du pc et celui du micro contrôleur (vitesse, NB de bits de données, NB de bit de START et de STOP)
ensuite il te suffit d'envoyer les données.
que tu prennes la DLL ou TCOMPORT le processus est le même.
@+
JLEN
0
Rejoignez-nous