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

Programmation et administration système Perl Discussion :

[debutants] Port série


Sujet :

Programmation et administration système Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    kap
    kap est déconnecté
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 188
    Par défaut [debutants] Port série
    Bonjour,
    J'ai une application qui doit envoyer et recevoir des fichiers sur les ports séries. Je suis en train de réaliser quelques tests : lecture d'un fichier, ecriture de ce fichier sur le port COM2, ce port est relié au port COM1, lecture du fichier sur COM1 puis écriture sur un fichier.
    J'ai écrit le code suivant :
    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
     
    my $sortie="F:\\Cours\\TX\\resultat.txt";
      my $entree="F:\\Cours\\TX\\essai.txt";
      my $port_entree="COM1";      #Choix du port série sur COM1
      my $port_sortie="COM2";
      my $speed="96";    #Vitesse 11=110Baud/15=150Baud/30=300Baud/60=600Baud/12=1200Baud/24=2400Baud/48=4800Baud/96=9600Baud/19=19200Baud 
      my $parity="n";      #Parité n=none/e=even/o=odd=m=mark/s=space
      my $bit="8";         #bit de donnée 5 à 6 bits
      my $bitStop="1";    #bit de stop 1 ou 2
      my $protoc=",x";    #Protocol ",x": XON/XOFF ",p": HANDSHAKE, "": Aucun
      my $test="";
      my $term="M30";
      my $ligne;
      my $buff;
      my $i="0";
      if (!($entree eq ""))
      {
        system "mode $port_entree:$speed,$parity,$bit,$bitStop $protoc";
        system "mode $port_sortie:$speed,$parity,$bit,$bitStop $protoc";
        #Configuration PORT série avec commande MS-DOS MODE        
        open PORT_ENTR, "<$port_entree" or die "Impossible d'ouvrir ";
        open PORT_SORT, "+>$port_sortie" or die "Impossible d'ouvrir ";
        open ENTREE, "<$entree" or die "Impossible d'ouvrir ";
        open SORTIE, "+>$sortie" or die "Impossible d'ouvrir le fichier ";
     
        print("Emission en cours, patientez....\n"); 
        while ($ligne = <ENTREE>)
        {
          print PORT_SORT $ligne;
          print($ligne);
        }
        print("Réception en cours, patientez....\n");
        while (read( PORT_ENTR, $buff, 1))
        {
          print ("ligne ".$i." : ".$buff."\n");
          print SORTIE $buff;
          print ("a");
          $i=$i+1;
        }
        print("Transmission OK\n");
        close(PORT_ENTR);
        close(PORT_SORT);
        close(ENTREE);
        close(SORTIE);
      }
      else
      {
        print("erreur fichier");
      }
    J'ai un problème au niveau de la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    while (read( PORT_ENTR, $buff, 1))
        {
          print ("ligne ".$i." : ".$buff."\n");
          print SORTIE $buff;
          print ("a");
          $i=$i+1;
        }
    Le programme boucle à l'infini sans que les instructions à l'intérieur soit effectuées.Quelqu'un a-t-il une idée?

  2. #2
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Je te conseille d'utiliser plutôt Win32::SerialPort pour trafiquer les ports COM1 et COM2 sous Windows.

    --
    Jedaï

  3. #3
    kap
    kap est déconnecté
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 188
    Par défaut
    C'est la seule solution pour jouer avec les ports COM?
    Sinon est-ce qu'il y a sous Windows un moyen de savoir si les ports COM envoient ou recoient des informations?

Discussions similaires

  1. [Série] Accès au port série sous linux
    Par ghost dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 10/10/2007, 10h43
  2. [DEBUTANT] Port série
    Par ricky78 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 26/01/2007, 14h58
  3. Réponses: 7
    Dernier message: 09/06/2006, 10h38
  4. Recherche de l'adresse du port série
    Par StephCal dans le forum Langage
    Réponses: 8
    Dernier message: 07/01/2004, 11h23
  5. Problème avec le port série sous Windows XP
    Par didou2dek dans le forum Composants VCL
    Réponses: 6
    Dernier message: 02/09/2003, 19h50

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