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 :

Interfacer Port Parallèle


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 127
    Par défaut Interfacer Port Parallèle
    Bonjour,
    mon but c'est de faire un petit projet en électronique de cryptage, très simple; le but c'est d'envoyer via le port parallèle pins 2 a 5 4 bits vers un circuit integré qui fera le cryptage et qui renvoyera les réponses via les pins 6 à 9 du port parallèle et qui affichere le message "crypté" à l'ecran.
    la programmation peut etre faite sur windows or linux, je sais que outportb ne fonctionne plus sur windows xp; pour le reste, je suis plutot perdu.
    merci d'avance.
    Mario

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par mariogarcia
    la programmation peut etre faite sur windows or linux, je sais que outportb ne fonctionne plus sur windows xp; pour le reste, je suis plutot perdu.
    Pour accéder directement au port // sous Windows, il existe probablemnt une fonction système (API). Le bon forum est Développement Windows

  3. #3
    Membre éclairé Avatar de nicolas66
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 326
    Par défaut
    Salut,

    Si t'es sous linux tu dois utiliser la fonction outb pour écrire sur le port parallèle. J'avais fais il y a un moment un programme pour allumer des diodes sur ce port. En téléchargeant l'archive qui se trouve sur ce lien, tu trouveras le code source de ce fichier dans le répertoire 'diodes'. Voilà, bon courage .


    Nico.

  4. #4
    Membre expérimenté Avatar de damienlann
    Profil pro
    Étudiant
    Inscrit en
    Mai 2005
    Messages
    293
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2005
    Messages : 293
    Par défaut
    tu peux utiliser outportb sous XP mais il y a quelques bidouilles a faire... (un ajout de dll et quelques autre truc..)

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 127
    Par défaut
    bonjour, le site que tu m'as donné est tres bien mais le code est en c++? je ne peut faire que du c procedural.
    on m'a dit que outportb ne fonctionne plus sur xp, et que je devais utiliser inp32 et oup32
    le probleme est que je ne dois pas lire sur tous les broches data, seulement la moitie d'entre elles, et puis lire sur l'autre moitie.
    merci beaucoup.
    mario

  6. #6
    Membre expérimenté Avatar de damienlann
    Profil pro
    Étudiant
    Inscrit en
    Mai 2005
    Messages
    293
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2005
    Messages : 293
    Par défaut
    il faut donc utiliser des masques.
    tu fais une lecture du port entier et tu masque ce que tu n'as pas besoin.

    (valeur_du_port & 0xF0)>>4 te donne l'etat des bits de poid fort.
    valeur_du_port & 0x0F te donne la valeurs des 4 bits de poid faible

  7. #7
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 127
    Par défaut
    bonjour voila le programme. que j'ai pu faire, mais je ne sais pas a l'état 3 du switch comment envoyer les données, vers le port parallèle, puisque je crypte seulement 4 bits il faut faire de masques, c'est tres bien mais franchement je ne sais pas comment. une idéee?
    merci d'avance
    mario
    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
    65
    66
    67
    68
    69
    70
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <windows.h>
     
     
    #define FALSE 0
    #define TRUE !FALSE
    #define ADRESSEBASE 0x378 // addresse de base 
     
         typedef short _stdcall (*inpfuncPtr)(short portaddr);
         typedef void _stdcall (*oupfuncPtr)(short portaddr, short datum);
     
    void encryptionmenu(char *encryptionchoice)
    {
        //system("cls");
        printf("**********************\n");
        printf("*    cryptage menu   *\n");
        printf("**********************\n\n");
        printf("1. enter clear message\n");
        printf("2. read clear message \n");
        printf("3. read encrypted message \n");
        printf("your choice : \n");
        scanf("%c", encryptionchoice);
        fflush(stdin);
    }
      char choicemenu;
      char* encryptionchoice = &choicemenu;
    int main()
    {
        int msg;
        int cryptmsg;
        HINSTANCE hLib;
        inpfuncPtr inp32;
        oupfuncPtr oup32;
     
     
     
     
     
        hLib = LoadLibrary("inpout32.dll");
     
          inp32 = (inpfuncPtr) GetProcAddress(hLib, "Inp32");
            oup32 = (oupfuncPtr) GetProcAddress(hLib, "Out32");
     
            fflush(stdin);
            encryptionmenu(encryptionchoice);
            switch (choicemenu)
            {
              case '1':
                   printf("enter message to crypt <= 16 \n");
                   scanf("%d", &msg);
              break;
              case '2': 
                   printf("lclear msg: %d \n", msg);
              break;
              case '3':
                      /*ici je dois envoyer msg vers le port parallele dans le broches 2 à 5 et recuperer des données qui viennent du circuit imprimé dans les broches 6 à 9*/
                   printf("encrypted msg : %d\n", cryptmsg);
              break;
              default: 
                       printf("bad choice or illegal operation\n");
                       getch();
                       system("cls");
     
            }
            getch();
            return 0;
    }

Discussions similaires

  1. Interface port parallèle
    Par xortix dans le forum VB.NET
    Réponses: 4
    Dernier message: 17/12/2010, 14h09
  2. Réponses: 1
    Dernier message: 15/10/2007, 20h51
  3. Gestion du port paralléle sous 2000
    Par kardex dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 05/01/2006, 19h47
  4. ecriture vers le port parallèle
    Par Luther13 dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 19/03/2004, 22h46
  5. Port Parallèle EPP ou ECP, hardware vs software ?
    Par TONIAPEL dans le forum Assembleur
    Réponses: 3
    Dernier message: 21/08/2003, 01h39

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