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

Langage Java Discussion :

Envoyer l'équivalent de la touche "Enter" via RS232 + port série non fermé


Sujet :

Langage Java

  1. #1
    Membre habitué
    Inscrit en
    Février 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 11
    Par défaut Envoyer l'équivalent de la touche "Enter" via RS232 + port série non fermé
    Bonjour,

    J'ai 2 problèmes.

    Le premier :
    Lorsque je lance 1 fois mon programme qui me permet d'envoyer une chaine de caractère à partir de mon PC vers un périphérique via mon port série, ca l'envoie bien mais le programme ne sarrête pas, il semblerait donc que le port série ne se soit pas fermé alors que j'ai mis out.flush(); puis un out.close(); avec out de type PrintWriter.

    De ce fait, je ne peux pas appeler 2 fois de suite ma méthode WriteRS232().
    Alors comment faire SVP? :s

    Le second problème c'est que j'aimerais communiquer avec un périphérique et malheureusement celui-ci ne réagit pas à mon programme. Quand j'utilise Hyperterminal (configuré correctement), il réagit bien après avoir appuyé "Enter" puis envoyé "p0=1", mais quand j'utilise mon programme, rien ne se passe. Alors je me suis dis que ca venait du fameux "Enter". Comment donc envoyer l'équivalent d'une touche préssée sur "Enter" via mon port série et cela à partir de mon programme java.J'ai regardé les histoires de codes ASCII, mais j'ai pas trop pigé...

    Merci d'avance et désolé d'avoir été long, mais c'est pour que vous puissiez cerner mon problème.

  2. #2
    Membre habitué
    Inscrit en
    Février 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 11
    Par défaut
    UP! plz!



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Ouverture du portCOM1...
    Donnée(s) envoyée(s)!
    Exception au niveau de la methode sentence de WriteRS232: javax.comm.PortInUseException: Port currently owned by Application1
    Quand j'écris de manière successive sur le port serie, j'ai le message suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public static void main(String args[])
    {
    		WriteRS232.sentence("\n");
    		WriteRS232.sentence("p0=1");
    }
    Les "donnée(s) envoyées(s)" correspondent à celle du premier WriteRS232.sentence ==> Pour le "\n"...

    Comment faire pour envoyer de manière successive svp?

    PS : Ci-dessous le code de ma classe

    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
    package actions;
    import javax.comm.*;
    import java.io.*;
    import java.util.Enumeration;
     
    //Classe permettant d'écrire
    public class WriteRS232
    {
    	public static void sentence (String tmpData)
    	{
    		String com = "COM1";
    		CommPortIdentifier portId;
    		SerialPort serialPort;
     
    		PrintWriter out;
    		try        //init serial port
    		{
    		portId=CommPortIdentifier.getPortIdentifier(com);
    		serialPort=(SerialPort)portId.open("Application1",2000);
    		serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
    		serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_NONE);
    		System.out.println("Ouverture du port"+com+"...");
    		out=new PrintWriter(serialPort.getOutputStream());
    		out.write(tmpData,0,tmpData.length());
    		out.flush();
    		out.close();
    		System.out.println("Donnée(s) envoyée(s)!");
    		}
     
    		catch(Exception e)
    				{
    			System.out.println("Exception au niveau de la methode sentence de WriteRS232: "+e.toString());
    				}
    	}
    Merci à tous!

  3. #3
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Tu ne peux pas faire deux fois "portId.open" sans avoir fermé explicitement le premier objet "port série".
    Le mieux est de mettre une instance de ton SerialPort en attribut, et même faire un singleton puisque tu ne peux avoir qu'un seul objet à la fois.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

Discussions similaires

  1. [À télécharger] Envoyer des informations via le port série
    Par SfJ5Rpw8 dans le forum Vos téléchargements VB6
    Réponses: 0
    Dernier message: 14/11/2010, 15h41
  2. Réponses: 3
    Dernier message: 18/07/2006, 13h37

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