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 ?
Oniria
Messages postés292Date d'inscriptiondimanche 14 mars 2004StatutMembreDernière intervention18 décembre 20143 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.
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 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 !
Vous n’avez pas trouvé la réponse que vous recherchez ?
aqwxszedc111
Messages postés15Date d'inscriptionmardi 16 septembre 2008StatutMembreDernière intervention22 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.
Oniria
Messages postés292Date d'inscriptiondimanche 14 mars 2004StatutMembreDernière intervention18 décembre 20143 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.
Oniria
Messages postés292Date d'inscriptiondimanche 14 mars 2004StatutMembreDernière intervention18 décembre 20143 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.
"
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 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