Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1603 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C] Gestion d'une liaison rs 232

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Gestion d'une liaison rs 232

n°701032
lamarmotte​du69
Je pense donc je pense ....
Posté le 16-04-2004 à 13:48:38  profilanswer
 

Bonjour a tous
 
Voila j'ai un tp a preparer pour la rentrée, le but de celui ci etant de transmettre dans un premier temps un caractere par la lisaison com2 du pc. Je vais structurer mon programme en 2 parties: une partie initialisation de la liaison et une seconde emission du caractere.
 
En fait c'est surtout dans la partie init que je bloque, je ne sais pas a quelle adresse les registres DLM ET DLL permettant de diviser la frequence se trouvent (apres avoir mis a 1 le bit b7 de LCR qui nous permet d'avoir acces au diviseur de frequence) :pfff:  
 
J'ai fait quelques recherches sur different forum, et a chaque fois l'initialisation se presente sous cette forme:
 

Code :
  1. void init_rs1 (void)
  2. {
  3.    union REGS regs;
  4.    regs.h.ah = 0;
  5.    regs.x.dx = 0;               /* 0 : COM1 et 1 : COM2 */
  6.    regs.h.al = 0x1e;            /* mettre la config (vitesse, parite...); (1E) = (0001 1110) */
  7.    int86 (0x14, &regs, &regs);
  8. }


 
Mais je ne comprends pas du tout ce que cela signifie  :( , si qq un pouvait m'expliquer se serai super.
 
Mes questions sont surement ridicules, mais je debute tout juste en language C... Merci de votre lecture et merci d'avance pour votre aide.

mood
Publicité
Posté le 16-04-2004 à 13:48:38  profilanswer
 

n°701066
cricri_
Posté le 16-04-2004 à 14:12:03  profilanswer
 

Houla ! mais ça c'est sous dos, on remplit des registres et on appele l'interruption 0x14 qui doit être celle de la ligne série.  
Actuellement sous windows il ne faut pas faire ça, il faut utiliser l'API windows, cherche un peu il y a eu des topics récents sur le sujet.

n°701073
lamarmotte​du69
Je pense donc je pense ....
Posté le 16-04-2004 à 14:17:22  profilanswer
 

oui en effet apres des recherches plus approfondies c'est ce que j'ai remarqué, mais je prefererai passer directement par les adresses des differnets registres pour les mettre a jour (comme par exemple les fonction inportb et outportb)
 
D'ailleurs est ce que ces deux fonctions peuvent etre utilisées pour un envoie par liaison serie (la derniere fois je m'en suis servi pour une liaison // )

n°701176
cricri_
Posté le 16-04-2004 à 15:43:23  profilanswer
 

oui, mais c'est très fortement déconseillé sous windaube !

n°701428
Carbon_14
Posté le 16-04-2004 à 20:22:06  profilanswer
 

C'est pour du pur DOS sur une machine DOS ?
 
pour dx : 0 : port COM1, 1 : port COM2, etc.
pour al :
Bits 0-1  : largeur de données 10 : 7 bits, 11 : 8 bits
Bit 2 : nombre de bits stop 0 : 1 bit stop, 1 : 2 bits stop
Bits 3-4 : contrôle de parité : 00 : aucun, 01 impaire, 11 paire
Bits 5-7 : vitesse de transmission. 000 : 110 "bauds"; 001 : 150; 010 : 300; 011 : 600; 100 : 1200; 101 : 2400; 110 : 4800; 111 : 9600.

n°701853
lamarmotte​du69
Je pense donc je pense ....
Posté le 17-04-2004 à 19:29:42  profilanswer
 

voila ce que j'ai ecris, pensez vous que cela fonctionnera ?
 

Code :
  1. void configuration(int adport, int vitesse ,char caractere)
  2. {
  3. char DLAB_ON=0x80;   // Masque permettant d activer DLAB
  4. char DLAB_OFF=0x7F;   // Masque permettant de desactiver DLAB
  5. int ad_THR-DLL,ad_LCR,ad_DLM;    // adresses des differents registres pour la config de la
  6.      // communication serie
  7. int coeff;    // Coefficient diviseur a envoyer sur DLL
  8. ad_THR_DLL=adport;   // Adresse registre DLL (diviseur de frequence)
  9.      //  - Tampons emission/reception = adresse de
  10.      // base com2
  11. ad_LCR=adport+3;
  12. ad_DLM=adport+1;
  13. coeff=frequence/(vitesse*16);  // Calcul du coeff diviseur
  14. outportb(ad_LCR,(commande|DLAB_ON)); // envoie de la config dans le registre LCR
  15.      // DLAB est active pour atteindre le diviseur de frequence
  16. outportb(ad_THR_DLL,coeff);  // selection de la vitesse de transmission
  17. outportb(ad_DLM,0);   // idem
  18. outportb(ad_LCR,(commande&DLAB_OFF)); // Desactivation de DLAB pour preparer la transmission
  19. }

n°702811
lamarmotte​du69
Je pense donc je pense ....
Posté le 19-04-2004 à 14:49:22  profilanswer
 

personne por dire si ca parait correct ???

n°702821
HelloWorld
Salut tout le monde!
Posté le 19-04-2004 à 14:58:24  profilanswer
 

Citation :

voila ce que j'ai ecris, pensez vous que cela fonctionnera ?


As tu au moins compilé ? => ad_THR-DLL
Tu bosses sous quel Windows ?
Essaye un truc à base de fopen( "COM1", "w+" ), + fwrite...
C'est à ma connaissance le code le plus facilement portable.
Mais faut voir, si c'est un TP, je suppose qu'il faut faire comment le prof a dit... katil dit ?

n°703224
lamarmotte​du69
Je pense donc je pense ....
Posté le 19-04-2004 à 21:19:03  profilanswer
 

Oui j'ai compilé, mais il me trouve 10 erreurs la dedans a chaque fois il me marque une erreur sur mes commentaires, apres avoir corriger le ad_THR_DLL :( (j'utilise turbo c)
Chez moi je suis sou xp, mais en tp sur win98
fopen et fwrite quelles sont ses fonctions je ne les ai jamais vues avant ...  
Et nos consignes sont, uiliser le langage c pour faire cette transmission.
 
merci pour ta reponse en tout cas

n°703450
HelloWorld
Salut tout le monde!
Posté le 20-04-2004 à 09:43:23  profilanswer
 

En C les commentaires c'est /*...*/, pas //...fin de ligne (la dernière norme corrige ça je crois, mais TurboC est un peu vieux).

mood
Publicité
Posté le 20-04-2004 à 09:43:23  profilanswer
 

n°703684
lamarmotte​du69
Je pense donc je pense ....
Posté le 20-04-2004 à 12:27:22  profilanswer
 

ah oki, boulettes :( merci

n°710427
tham
Posté le 28-04-2004 à 09:15:23  profilanswer
 

hello tout le monde
 
Voila, je suis en stage de fin de DUT genie electrique. Mon truc est la programmation microcontroleur et mon projet est la discution d'un micro avec un agenda electronique. Pour le simuler, j'ai besoin d'utilisé un PC via RS232. mais moi, j'y connais rien... Mes petits betes sont bien diferante. Alors vos explications sont des fois un peu du charabia! Je ne suis meme pas sur d'avoir les bonnes librerie. Si quelqu'un avait la gentillesse de faire une explication du fonctionnement et des manipes et instruction version tres simple voir neuneu, ca serait po mal.
 
Merci beaucoup, vous m'enlevrez un chere brotelle...
 
PS: mettre aussi, si possible, les site ou je peux trouver des infos

n°710473
HelloWorld
Salut tout le monde!
Posté le 28-04-2004 à 10:07:31  profilanswer
 

Commence par créer un topic.
Précises ce que c'est ton agenda électronique.
Tes profs t'ont donné aucune piste ?

n°711092
tham
Posté le 28-04-2004 à 16:04:55  profilanswer
 

l'agenda electronique est un PALM et sinon question aide, j'ai pas grand chose... comme c'est un stage de fin d'etude, je dois un peu me debrouiller par moi meme. En fait, il me faut pouvoir envoyer un octet (un ordre) receptionner bcp (environs 20000*7 en une fois) (la reponse).
je tourne actuellement a 9600bauds, 1bit stop, 1bit start, 8bits de données, pas de pariter. Si je receptionne mes données dans un tableau par exemple, je me demerderais tjrs a les ranger de facon lisible.
Apres, comme c po du tt mon domain... c quoi un topic! Mon truc c'est la programmation super bas niveau... vous me donnez micro tt seul (sans OS ou autre)et je vous en fais ce que vous voulez. Merci bcp

n°711163
Mr yvele
yvele n'est plus.
Posté le 28-04-2004 à 16:58:56  profilanswer
 

BTS ISIS (II) rorbacher.. haguenau? [:cupra]

n°711199
HelloWorld
Salut tout le monde!
Posté le 28-04-2004 à 17:31:02  profilanswer
 

Citation :

l'agenda electronique est un PALM


...tu fais un programme sur Palm et sur PC ou tu dois interroger un programme qui est pas à toi sur Palm ?

Citation :

je dois un peu me debrouiller par moi meme


Ouai, ils doivent qd même s'assurer de la faisabilité.

Citation :

Apres, comme c po du tt mon domain... c quoi un topic!


topic = sujet.
Le topic actuel c'est "Gestion d'une liaison rs 232".
Et là on post...
Créés-en un nouveau.

Citation :

Mon truc c'est la programmation super bas niveau... vous me donnez micro tt seul (sans OS ou autre)et je vous en fais ce que vous voulez.


Je vois ça...

n°711386
printf
Baston !
Posté le 28-04-2004 à 22:32:47  profilanswer
 

tham a écrit :

hello tout le monde
 
Voila, je suis en stage de fin de DUT genie electrique. Mon truc est la programmation microcontroleur et mon projet est la discution d'un micro avec un agenda electronique. Pour le simuler, j'ai besoin d'utilisé un PC via RS232. mais moi, j'y connais rien... Mes petits betes sont bien diferante. Alors vos explications sont des fois un peu du charabia! Je ne suis meme pas sur d'avoir les bonnes librerie. Si quelqu'un avait la gentillesse de faire une explication du fonctionnement et des manipes et instruction version tres simple voir neuneu, ca serait po mal.
 
Merci beaucoup, vous m'enlevrez un chere brotelle...
 
PS: mettre aussi, si possible, les site ou je peux trouver des infos


 
Une seule solution : le topic GEII [:xp1700]
 
http://forum.hardware.fr/hardwaref [...] 7655-1.htm
 
EDIT : si tu développe sous Windows avec Visual C++ : http://www.codeguru.com/Cpp/I-N/ne [...] php/c5425/
 
Si c'est avec VB c'est encore plus simple [:joce]


Message édité par printf le 28-04-2004 à 22:36:59
n°711496
tham
Posté le 29-04-2004 à 09:02:04  profilanswer
 

je sors de GEII et mon sujet est inclu la communication RS232 entre un palm et un microcontroleur du type µPSD. Comme ca, je suis claire avec tout le monde. Je veux juste pouvoir simuler l'un avec un pc pour mettre au point l'autre sans utiliser l'hyperterminal qui est assez sommaire qu'en même.
merci d'un petit peu d'aide! Si, c trop hard, je me demerderais tt seul sans pc.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C] Gestion d'une liaison rs 232

 

Sujets relatifs
gestion de tournoi de jeux en phpGestion de demande de congés en ASP ( /!\ n00b inside)
[lien] PHP + XML en écriture : gestion accès multiples ?[résolu] PHP + XML en écriture : gestion accès multiples ?
[résolu] gestion d'erreursWait () et gestion des signaux
Gestion de la mémoire et documentation /EDIGestion d'image sans passer par des fichiers.
projet de jeu de gestion en ligne ...[VB] Gestion de planning
Plus de sujets relatifs à : [C] Gestion d'une liaison rs 232


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR