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

Java Discussion :

Communication port serie en java


Sujet :

Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 292
    Points : 62
    Points
    62
    Par défaut Communication port serie en java
    bonjour,
    je dois envoyer des commandes spécifique à une imprimante connectée au port série, j'ai essayé ce programme que j'ai trouvé sur le net :
    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.util.Enumeration;
     
    import javax.comm.CommPortIdentifier;
    import javax.comm.SerialPort;
     
    import com.sun.comm.Win32Driver;
     
    /*
    Cette classe permet de tester les ports séries disponibles
    en les listant puis en créant un stream d'entrée et de sortie
    */
    public class TestJavaComm
    {
    CommPortIdentifier portId;
    BufferedReader in;
    OutputStream out;
    SerialPort serialPort;
     
    /*
    Constructeur de la classe TestJavaComm qui prend en paramètre le port série à utiliser.
    Dans un premier temps on liste les ports disponibles sur le pc
    */
    public TestJavaComm (String com)
    {
    Win32Driver w32Driver= new Win32Driver();
    w32Driver.initialize(); 
    System.out.println("listage des ports série disponibles:");
    listePortsDispo();
    try
    {
    //ouverture du port série:
    portId=CommPortIdentifier.getPortIdentifier(com);
    serialPort=(SerialPort)portId.open("Envoi",2000);
     
     
    //on sélectionne tous les paramètres de la connexion série:
    serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8,
    SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);
    System.out.println("Ouverture du port "+com);
     
    //pour lire et écrire avec des streams:
    out = serialPort.getOutputStream();
     
     
    //Teste de lecture/ecriture sur le port série
     
    out.write((int)'^');
    out.write((int)'A');
    out.write((int)'^');
    out.write((int)'-');
    out.write((int)'M');
    out.write((int)'^');
    out.write((int)',');
    out.write((int)'^');
    out.write((int)'X');
    out.close();
     
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    }//fin constructeur
     
    public void listePortsDispo()
    {
    System.err.println("recherche...");
    Enumeration portList=CommPortIdentifier.getPortIdentifiers();
    if (portList==null)
    {
    System.err.println("Aucun port de communication détecté");
    return;
    }
    while (portList.hasMoreElements())
    {
    portId=(CommPortIdentifier)portList.nextElement();
    System.out.println("* "+portId.getName());
    } // while
    } //fin de la methode listePortsDispo()
     
    /*
    Methode main qui permet de tester notre classe de teste en ouvrant une connexion sur le port COM1.
    */
    public static void main(String args[])
    {
    new TestJavaComm ("COM1");
    }//fin du main
     
     
    }//fin de la classe
    j'arrive à lister les tous les port et à ouvrir le port COM1, mais apparament l'imprimante ne reçois rien, ou ne comprend rien,
    l'imprimante fonctione à merveille, je l'ai essayer avec une application écrit en c++ qui envoie des commandes, ou plutôt un activex qui communique avec l'imprimante
    merci de votre aide!!!!!!!

  2. #2
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Parce que ton imprimante elle est censée avaler quels caractères?
    de l'Ascii? de l'Ansi? du 437?

    Je pense pas que tes conversions char unicode vers int bizarres soient très digestes. Si tu mettais un Writer avec un encodage ASCII devant l'outputStream et que tu écrivais directement les caractères, t'aurais peut être plus de chance...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 292
    Points : 62
    Points
    62
    Par défaut to be contuned !
    j'ai pas saisi le writer, un exemple peut être!!!
    l'imprimante accepte les caracteres ASCII
    merci

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 292
    Points : 62
    Points
    62
    Par défaut !!!!!!!!!!!
    j'ai fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    out.write("\05".getBytes());
    out étant un outputstream

Discussions similaires

  1. Probleme Communication Port Serie
    Par Rod-III-sh dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 26/10/2009, 15h07
  2. communication avec port series en java
    Par konguess dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 23/01/2008, 12h26
  3. communication port serie avec GTK+?
    Par cguignol dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 28/06/2007, 11h15
  4. Communication port serie avec un microcontrolleur
    Par crazydede8 dans le forum C
    Réponses: 4
    Dernier message: 29/07/2006, 14h49
  5. [communication] Port serie
    Par Mr bizzz dans le forum Flash
    Réponses: 8
    Dernier message: 07/06/2006, 01h38

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