IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Emmission/Reception


Sujet :

C

  1. #1
    Membre habitué Avatar de benjiprog
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 134
    Points
    134
    Par défaut Emmission/Reception
    Bonjour, voilà j'ai fait un programme de reception d'un caractère d'un PC à un autre relier par un cable, seulement il marche sous turbo C dans mon universiter mais il ne marche pas sous dev C/C++, voilà mon code source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    #include<stdio.h>
    #include <conio.h>
    #include<dos.h>
     
    #define PORT (0x3F8)
    #define RBR PORT
    #define THR PORT
    #define LSR (PORT+5)
    #define IIR (PORT+2)
    #define LCR (PORT+3)
    #define DLL PORT
    #define DLM PORT
    #define IER (PORT+1)
    #define MCR (PORT+4)
    #define MSR (PORT+6)
     
    void init_8250(void);
    char recep_oct(void);
     
    int main(void)
    {
    	char c;
    	init_8250();
    	printf("Attente d'un caractere ...\n");
    	c=recep_oct();
    	printf("Le caractere recu est : %c \n",c);
     
    	getch ();
    	return(0);
    }
    void init_8250(void)
    {
    	/*1 rapidite de modulation*/
    	outportb(LCR,0x80);
    	outportb(DLM,0x01);
    	outportb(DLL,0x80);
     
    	/*2 format des donnes*/
    	outportb(LCR,0x17);
     
    	/*3 mode de transfert : scrutation*/
    	outportb(IER,0);
    }
    char recep_oct(void)
    {
    	char test,inter;
    	char c;
    	test=inportb(LSR);
    	while (test&&0x01==0)
     
    	c=inportb(RBR);
     
    	return (c);
    }
    Il me donne les erreurs suivantes :
    `outportb' undeclared (first use this function)
    `inportb' undeclared (first use this function)
    J'ai peut-être oublier une librairie, j'ai besoin de votre aide merci.
    Les élèves glandeurs c'est comme le linge, quand il fait beau ca sèche.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    inportb et outportb n'existent pas sous Windows.
    Si tu es sous Windows98 ou inférieur, tu peux utiliser _inp(), _inpw(), _outp() et _outpw().
    Mais sous un Windows de type NT (comme 2000 ou XP) ça ne marchera pas.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: Emmission/Reception
    Citation Envoyé par benjiprog
    Bonjour, voilà j'ai fait un programme de reception d'un caractère d'un PC à un autre relier par un cable, seulement il marche sous turbo C dans mon universiter mais il ne marche pas sous dev C/C++, voilà mon code source :
    <...>
    Ce genre de manip bas niveau (toute ma jeunesse) n'est plus possible sur les systèmes sérieux comme XP, Linux MacOS etc. Ces systèmes gèrent des espaces utilisateurs protégés et des espaces noyaux. L'espace utilisateur n'a pas accès au matériel directement. Il doit passer par le noyau qui seul a ce privilège. C'est pourquoi il faut utiliser les fonctions systèmes (accessibles aux utilisateurs) qui gèrent tout ça automatiquement.

    Sous Windows OpenFile() ReadFile() etc. Le Web est plein d'exemples de liaisons séries sous Windows.

    Le bon forum est "Développement Windows"
    Pas de Wi-Fi à la maison : CPL

  4. #4
    Membre habitué Avatar de benjiprog
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 134
    Points
    134
    Par défaut
    Ah d'accord c'est donc pour ça qu'on programme dans une salle ou il y a Windows 95. Mais sinon le programme de reception que j'ai mis est bon?
    Les élèves glandeurs c'est comme le linge, quand il fait beau ca sèche.

  5. #5
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par benjiprog
    Ah d'accord c'est donc pour ça qu'on programme dans une salle ou il y a Windows 95. Mais sinon le programme de reception que j'ai mis est bon?
    Je ne connais pas par coeur la sémantique de tous les registres du 8250.

    http://www.xs4all.nl/~ganswijk/chipdir/reg/8250.txt

    Le principe a l'air bon en admettant qu'il y ait un UART en 0x3F8.

    Pour que le code soit lisible, il est recommandé d'utiliser des masques de bits respectant la sémantique. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    typedef enum
    {
       UART_REG_DLL = 0,            /* 00 Divisor Latch Low   */
       UART_REG_DLH,                /* 01 Divisor Latch High  */
     
       UART_REG_RXD = 0,            /* 00 Receive Data        */
       UART_REG_TXD = 0,            /* 00 Transmit Data       */
       UART_REG_IER,                /* 01 Interrupt Enable    */
       UART_REG_IIR,                /* 02 Interrupt Indicator */
       UART_REG_LCR,                /* 03 Line Control        */
       UART_REG_MCR,                /* 04 Modem Control       */
       UART_REG_LSR,                /* 05 Line Status         */
       UART_REG_MSR,                /* 06 Modem Status        */
       UART_REG_SCR,                /* 07 SCratch             */
       UART_REG_NB
    }
    tUART_REG;
     
    /* Macros de reduction (plus facile a utiliser) */
    #define DLL UART_REG_DLL
    #define DLH UART_REG_DLH
     
    #define RXD UART_REG_RXD
    #define TXD UART_REG_TXD
    #define IER UART_REG_IER
    #define IIR UART_REG_IIR
    #define LCR UART_REG_LCR
    #define MCR UART_REG_MCR
    #define LSR UART_REG_LSR
    #define MSR UART_REG_MSR
    #define SCR UART_REG_SCR
     
    #define REG_MAX ((uint) (UART_REG_NB - 1))
    #define REG_PAS 1
     
    #define LCR_WL_MSK ((uint)(bit1|bit0))
    #define LCR_WL_DEC 0
     
    #define LCR_STB  bit2
    #define LCR_PEN  bit3
    #define LCR_EPS  bit4
    #define LCR_DLAB bit7
     
    #define MCR_DTR  bit0           /* 108 */
    #define MCR_RTS  bit1           /* 105 */
    #define MCR_OUT1 bit2
    #define MCR_OUT2 bit3
     
    #define MSR_CTS  bit4
    #define MSR_DSR  bit5
    #define MSR_RI   bit6
    #define MSR_DCD  bit7
     
    #define IIR_IP   ((uint) bit0)
    #define IIR_AI   ((uint) (bit1|bit2))
     
    #define LSR_RXDA bit0
    #define LSR_OE   bit1
    #define LSR_PE   bit2
    #define LSR_FE   bit3
    #define LSR_BD   bit4
    #define LSR_TXDE bit5
    #define LSR_TXMS bit6
    Les définitions manquantes sont ici :

    http://emmanuel-delahaye.developpez..../ed/inc/bits.h
    Pas de Wi-Fi à la maison : CPL

  6. #6
    Membre éclairé
    Avatar de Elijha
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Avril 2003
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2003
    Messages : 314
    Points : 742
    Points
    742
    Par défaut
    Salut,

    Avec Turbo C, tu dois avoir in/outportb dans l'entête <io.h>

    bye..

    [Edit] Arff, dsl !!! Ce n'est effectivement pas dans <io.h>, mais dans <dos.h>. Ne doit plus fonctionner sous windows[/Edit]
    - Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !
    - Travailler dur n'a jamais tué personne, mais pourquoi prendre le risque (Edgar Bergen)

  7. #7
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Elijha
    Avec Turbo C, tu dois avoir in/outportb dans l'entête <io.h>
    D'abord, c'est faux, car ils sont dans <dos.h>, et ensuite, quels sont les mots que tu ne comprends pas dans "mais il ne marche pas sous dev C/C++,"
    Pas de Wi-Fi à la maison : CPL

  8. #8
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Par quel type de port tes pc communiquent-ils?
    Si c'est du port serie RS232, tu peux rechercher de la doc pr qu'il soit utilisable sous Windows XP, ce n'est pas tres difficile.
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

Discussions similaires

  1. [C#] Récupérer Boite de Reception Outlook
    Par Tranber dans le forum Windows Forms
    Réponses: 2
    Dernier message: 06/04/2004, 17h47
  2. [MFC]Pb de reception des messages!
    Par thief dans le forum MFC
    Réponses: 18
    Dernier message: 03/03/2004, 13h05
  3. Reception avec Tcomport
    Par web-angel dans le forum C++Builder
    Réponses: 16
    Dernier message: 27/01/2004, 16h20
  4. Pb reception TComPort....
    Par jeannot27 dans le forum C++Builder
    Réponses: 3
    Dernier message: 10/11/2003, 09h07
  5. Sockets + Receptions de messages
    Par raf_gug dans le forum MFC
    Réponses: 14
    Dernier message: 07/11/2003, 10h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo