Fonction Entrée en C
Répondre à la discussion
Affichage des résultats 1 à 15 sur 15

Fonction Entrée en C



  1. #1
    invite80e0db49

    Fonction Entrée en C


    ------

    Bien le bonjour,

    J'ai un petit soucis avec mon code. En effet, si la ligne ne se valide pas le programme ne tourne pas.

    Code:
    printf("\rbonjour\n")
    Code simplifié mais je voulais juste savoir quoi rajouter pour que la ligne ce valide, soit un équivalent de la touche entrée.


    Merci

    -----

  2. #2
    mp3dux

    Re : Fonction Entrée en C

    bonjour,

    valider la ligne ? soit plus précis.

    Déjà tu peux rajouter un point virgule à la fin ça irait mieux...

    Le programme ne tourne pas ça veut dire ...

    ça ne se compile pas ou ça bloque...

    Dans le premier cas t'as forcément un message d'erreur du compilateur, Il met quoi ?

  3. #3
    invite80e0db49

    Re : Fonction Entrée en C

    Oui j'avoue que j'ai manqué d'explication.

    Pour le ";" c'était mis il n'y a pas de soucis. Le problème est le suivant :

    Je doit gérer des interfaces routeur/coordinateur par le biais d'un cable RS. J'ai crée un programme (dans un pic16F877A) qui m'affiche "bonjour" dans l'hyperterminal. Mais dés que j'envoie ce programme dans mon routeur, il n'envoie pas l'instruction : "bonjour" au coordinateur. Je pensais que le problème était du au fait qu'il envoyé le message "bonjour" puis resté en attente. C'est pourquoi je demandais conseil pour que cette instruction soit validé.

  4. #4
    Chanur

    Re : Fonction Entrée en C

    Bonjour,
    Je ne connais rien aux pic16F877A, donc ma réponse peut ne pas être la bonne.
    Peut-être pourrais-tu utiliser fflush (stdout); qui force l'écriture effective des données bufferisées ?
    @+
    Ce qui se conçoit bien s'énonce clairement ; et les mots pour le dire arrivent aisément.

  5. A voir en vidéo sur Futura
  6. #5
    Jack
    Modérateur

    Re : Fonction Entrée en C

    Tant que la situation n'aura pas été clairement décrite il sera difficile d'avancer. Je subodore un système de configuration automatique de routeurs mais tien n'est moins sûr.
    Je doit gérer des interfaces routeur/coordinateur
    C'est quoi un coordinateur? Une personne physique, un système informatique, un programme?
    par le biais d'un cable RS
    C'est quoi un câble RS? Un câble pour liaison série RS-232?
    il n'envoie pas l'instruction : "bonjour" au coordinateur
    "bonjour est une instruction?
    Je pensais que le problème était du au fait qu'il envoyé le message "bonjour" puis resté en attente
    C'est qu'il? Le PIC? Dans ce cas, le PIC fait ce que tu lui demande de faire: Si tu le programme pour qu'il lise des données renvoyées par le routeur, il le fera. Je ne peux pas deviner ce que tu as fait comme programme.

    Bref, il manque beaucoup d'infos pour avancer.

    A+

  7. #6
    invite80e0db49

    Re : Fonction Entrée en C

    @Chanur, j'ai essayé ta fonction que j'ai un petit peu changé pour qu'elle soit plus stable, je te remercie

    Code:
    void vider_buffer(void)
    {
    
    int x = 0;
    while (x != '\n' && x != EOF) 
    
    	{
    	x = getchar();
    	}
    }

    @Jack. Je sais que j'ai eu, et j'ai un peu de mal a décrire exactement ce que c'est mais je fais de mon mieux.

    C'est quoi un coordinateur? Une personne physique, un système informatique, un programme?
    Il s'agit d'un module TinyBee "FZ750BC" configuré en mode coordinateur.

    C'est quoi un câble RS? Un câble pour liaison série RS-232?
    Oui

    "bonjour est une instruction?
    Bonjour est mon instruction, en attendant de pouvoir le compléter d'avantage. Entre autre.

    C'est qu'il? Le PIC? Dans ce cas, le PIC fait ce que tu lui demande de faire: Si tu le programme pour qu'il lise des données renvoyées par le routeur, il le fera. Je ne peux pas deviner ce que tu as fait comme programme.
    Code:
    #include <htc.h>
    #include "usart.h"
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    void main(void);
    void vider_buffer(void)
    {
    
    int c = 0;
    while (c != '\n' && c != EOF) 
    
    	{
    	c = getchar();
    	}
    }
    
    void main(void)
    {
    	unsigned char input;
    	init_comms();	// set up the USART - settings defined in usart.h
    	printf("\rbonjour\n");// Output a message to prompt the user for a keypress
    	vider_buffer();
    
    }
    Code:
    #include <htc.h>
    #include <stdio.h>
    #include "usart.h"
    
    void 
    putch(unsigned char byte) 
    {
    /* output one byte */
    	while(!TXIF)/* set when register is empty */
    		continue;
    	TXREG = byte;
    }
    
    unsigned char
    getch()
    {
    																								/* retrieve one byte */
    	while(!RCIF)/* set when register is not empty */
    		continue;
    	return RCREG;
    }
    
    unsigned char
    getche(void)
    {
    	unsigned char c;
    	putch(c = getch());
    	return c;
    }
    Code:
    #ifndef _SERIAL_H_
    #define _SERIAL_H_
    
    #define BAUD 19200    
    #define FOSC 20000000L
    #define NINE 0     /* Use 9bit communication? FALSE=8bit */
    
    #define DIVIDER ((int)(FOSC/(16UL * BAUD) -1))
    #define HIGH_SPEED 1
    
    #if NINE == 1
    #define NINE_BITS 0x40
    #else
    #define NINE_BITS 0
    #endif
    
    #if HIGH_SPEED == 1
    #define SPEED 0x4
    #else
    #define SPEED 0
    #endif
    
    #if defined(_16F87) || defined(_16F88)
    	#define RX_PIN TRISB2
    	#define TX_PIN TRISB5
    #else
    	#define RX_PIN TRISC7
    	#define TX_PIN TRISC6
    #endif
    
    /* Serial initialization */
    #define init_comms()\
    	RX_PIN = 1;	\
    	TX_PIN = 1;		  \
    	SPBRG = DIVIDER;     	\
    	RCSTA = (NINE_BITS|0x90);	\
    	TXSTA = (SPEED|NINE_BITS|0x20)
    
    void putch(unsigned char);
    unsigned char getch(void);
    unsigned char getche(void);
    
    #endif
    Voila pour ce qui est du programme complet.

  8. #7
    ventilopomme

    Re : Fonction Entrée en C

    j'ai trouvé ceci
    http://www.phanderson.com/icd/PIC16F...ial_sample.pdf
    http://www.pages.drexel.edu/~cy56/PIC.htm

    Code:
    http://www.mikroe.com/eng/chapters/view/6/chapter-5-ccp-modules/
    tu es sur que tu dois bien utiliser getchar ?
    j'aurais mis à la place getch ou getche
    car pourquoi definirais tu des fonctions getch et getche si tu les utilises pas ?
    exclu à jamais du présent

  9. #8
    Jack
    Modérateur

    Re : Fonction Entrée en C

    Mais qu'est sensé faire le routeur à la réception d'une trame? La renvoyer, la traiter, envoyer un accusé de réception?

    Es-tu sur que le protocole de transmission est bien celui du routeur?

    Tu as essayé également de faire une connexion entre le PC et le routeur au travers d'hyperterminal?

    A+

  10. #9
    invite80e0db49

    Re : Fonction Entrée en C

    Es-tu sur que le protocole de transmission est bien celui du routeur?

    Tu as essayé également de faire une connexion entre le PC et le routeur au travers d'hyperterminal?
    Oui et oui. Router vers PC sa fonctionne niquel. De même que ce programme vers l'hyperterminal. C'est la liaison Router/Programme qui ne fonctionne pas :s

    Sinon je regarde les documents, encore merci.


    Mais qu'est sensé faire le routeur à la réception d'une trame?
    J'ai branché mon coordinateur sur l'hyperterminal via une liason RS232. Théoriquement dés que le router reçoit une donnée elle est envoyé par onde HF sur le coordinateur. Ce qui ne se fait pas avec le code. Par contre si je branche mon router sur l'hyperterminal et que j’appuie sur un des boutons poussoirs l'hyperterminal du coord' le détecte. Il s'agit vraiment d'un soucis entre le programme et le router. Mais lequel ? ^^ 1journée que je suis dessus.

  11. #10
    Jack
    Modérateur

    Re : Fonction Entrée en C

    Théoriquement dés que le router reçoit une donnée elle est envoyé par onde HF sur le coordinateur
    Je comprends de moins en moins. Un routeur qui communique par HF? Tu parles vraiment d'un routeur? Quelle est sa référence, que je me rende compte.

    A+

  12. #11
    invite80e0db49

    Re : Fonction Entrée en C

    Si cela intéresse je peux te renvoyer vers ce lien ci : http://www.lextronic.fr/P20618-modul...e-fz750bc.html Qui t'expliquera cela bien mieux que moi je suis certain ^^.

    Fréquence de 2,4GHz sinon.

  13. #12
    Jack
    Modérateur

    Re : Fonction Entrée en C

    Ah bin c'est dommage que n'aies pas commencé par là, ça aurait évité beaucoup de temps perdu. Comment voulais-tu que l'on devine de quoi il s'agissait?

    J'ai regardé en diagonale le quick guide (10 ko/s en téléchargement !!!) et il me semble que le dialogue s'effectue avec des commande AT, comme avec un modem. Donc le bonjour que tu lui envoies n'est pas une commande et ne doit donc avoir aucun effet.

    A+

  14. #13
    invite80e0db49

    Re : Fonction Entrée en C

    Par mes magnifiques explications voyons !

    Non j'avoue que sur ce coup j'ai un peu merdé. Mais les commandes AT servent uniquement pour paramétrer le module (j'ai une doc sous les yeux et c'est ce que je crois comprendre). Et sur ce point sa allait (réglage du mode d'utilisation, du baud, etc ...)

    Même après avoir testé en AT+... sa ne fonctionne pas à moins que je n'utilise pas le bon code ... Je continue de creuser (désespérément )

    Et encore merci pour les solutions proposées.

  15. #14
    bzh_nicolas

    Re : Fonction Entrée en C

    Tu as essayé d'envoyer "bonjour\n" plutôt que "\rbonjour\n" ?
    Sinon, tu as essayé \r\n à la fin plutôt que seulement \n ?

  16. #15
    invite80e0db49

    Re : Fonction Entrée en C

    Oui j'ai testé tout les assemblage de solution avec le \n et \r. En 2jours j'ai eu des idées mais aucune qui n'aille

Discussions similaires

  1. Entrée In
    Par invite7eba9079 dans le forum Électronique
    Réponses: 1
    Dernier message: 22/06/2011, 13h13
  2. Réponses: 0
    Dernier message: 02/11/2009, 18h28
  3. Entrée en TS : que revoir ?
    Par invite00c84a60 dans le forum Orientation avant le BAC
    Réponses: 19
    Dernier message: 26/08/2009, 16h02
  4. Entrée en seconde
    Par invite6a244aed dans le forum Orientation avant le BAC
    Réponses: 5
    Dernier message: 08/04/2009, 16h29
  5. entrée en master
    Par invite5a2747f6 dans le forum Orientation après le BAC
    Réponses: 2
    Dernier message: 18/03/2008, 16h06