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

Entrée/Sortie Java Discussion :

liaison série avec interruption


Sujet :

Entrée/Sortie Java

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 11
    Points : 2
    Points
    2
    Par défaut liaison série avec interruption
    salut
    je suis debutant en java et je voudrais réaliser une interruption de communication pendant la reception de données d'un port série grace a la touche CTRL+A. Je travaille sous Eclipse et voici le programme de ma communication liaison série :
    la communication s'arrete si je ne recois plus rien grace un time out !!!


    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
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    /**
     * Programme de Communication Liaison série
     * @version 1.0
     */
     
    package communication;
    import javax.comm.*;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import com.sun.comm.Win32Driver;	
     
     
    public class C_com {
     
    	protected BufferedReader m_bufRead;                     //flux de lecture du port
    	protected OutputStream m_outStream;                     //flux d'écriture du port
    	protected CommPortIdentifier m_portId;                  //identifiant du port
    	protected SerialPort m_sPort;                           //le port série
    	protected int m_flowControlIn=SerialPort.FLOWCONTROL_RTSCTS_IN;
    	private String m_Port_com = "COM1";
    	private int m_Bits_donnees = SerialPort.DATABITS_8;
    	private int m_Parite = SerialPort.PARITY_NONE;
    	private int m_Bits_stop = SerialPort.STOPBITS_1;
    	private int m_Vitesse = 1200;
     
    //***************************************************************************************************//
     
    	/**
             * Constructeur de la classe C_com
             */
     
    	public C_com(){open (m_Port_com , m_Vitesse,m_Bits_donnees,m_Bits_stop,m_Parite);}
     
    //*******************************************************************************************//
     
    	/**
             * Methode d'ouverture de la liaison série
             * 
             */
     
    	public void open (String port_com, int vitesse, int bits_donnees, int bits_stop, int parite){
     
    		/**
                     * initialisation du driver
                     */
    				Win32Driver Driver = new Win32Driver();
    				Driver.initialize();
    		/**
                    * récupération de l'identifiant du port
                    */
     
    				try {
    						m_portId = CommPortIdentifier.getPortIdentifier(m_Port_com);}
    				catch (NoSuchPortException e) {System.out.println("Port introuvable");}
     
    		/**
                    * Ouverture du port
                    */
    				try {
    						m_sPort = (SerialPort) m_portId.open("UtilisationFlux", 30000);} 
    				catch (PortInUseException e) {e.printStackTrace();}
     
    		/**
                     * règle les paramètres de la connexion, control de flux et le Timeout
                     */
    				try {
    					   	m_sPort.setFlowControlMode(m_flowControlIn); 
    					   	m_sPort.enableReceiveTimeout(3000);  //si on recoit rien au bout de 5s on sort du read
    						m_sPort.setSerialPortParams(m_Vitesse,m_Bits_donnees,m_Bits_stop,m_Parite);} 
    				catch (UnsupportedCommOperationException e) {e.printStackTrace();}
     
    		/**
                     * récupération du flux de lecture et écriture du port
                     */
    				try {
    						m_outStream = m_sPort.getOutputStream();
    						m_bufRead =new BufferedReader(new InputStreamReader(m_sPort.getInputStream()));} 
    				catch (IOException e) {e.printStackTrace();}	
    						}
     
    //**************************************************************************************//
    	/**
             * Changer les paramètres par défaut
             * 
             */
     
    	public void change(String m_port_com,int m_Vitesse,int m_Bits_donnees,int m_Bits_stop,int m_Parite){
    		close();
    		open(m_port_com,m_Vitesse,m_Bits_donnees,m_Bits_stop,m_Parite);}
     
    //****************************************************************************************//
    	     /**
                  * Méthode de communication générique : lecture d'une ligne de chaines de caractères (readline())
                  * @return reponse
                  */ 
     
    	public String communique(String envoi){
    		String reponse = null;
    		try{
    			//Demande
    				m_outStream.write(envoi.getBytes());
    			//Lecture
    			reponse = m_bufRead.readLine().trim();}				
    		catch (IOException e){e.printStackTrace();}
    		return reponse;}
     
    //******************************************************************************************//	
    	     /**
                 * La méthode de fermeture des flux et du port
                 * 
                 * @exception fermeture du port
                  */
     
    	public void close(){
    		try {
    			m_bufRead.close();
    			m_outStream.close();
    			m_sPort.close();}
    		catch (IOException e) {}
    			m_sPort.close();}
     
    //*****************************************************************************************//
    	     /**
                 * Les accesseurs 
                 */
     
    	public int get_bitsdonnees(){return m_Bits_donnees;}
    	public int get_parite(){return m_Parite;}
    	public int get_bitsstop(){return m_Bits_stop;}
    	public int get_vitesse(){return m_Vitesse;}
    	public String get_portcom(){return m_Port_com;}
     
    	public void set_bitsdonnees(int p_donnees){m_Bits_donnees=p_donnees;}
    	public void set_parite(int p_parite){m_Parite=p_parite;}
    	public void set_bitsstop(int p_bitsstop){m_Bits_stop=p_bitsstop;}
    	public void set_vitesse(int p_vitesse){m_Vitesse=p_vitesse;}
    	public void set_portcom(String p_port){m_Port_com=p_port;}
     
    }

  2. #2
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    est ce quelqu'un peut m'aider c'est assez urgent !!!
    merci d'avance...

  3. #3
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 292
    Points : 317
    Points
    317
    Par défaut
    ajoute un keylistener, si tu recois CTRL+A tu ferme ta connection.
    utilise les balise CODE... Merci..

  4. #4
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    c'est quoi une balise CODE ?
    merci

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Points : 429
    Points
    429
    Par défaut
    [ CODE ] [ /CODE ] sans espaces.


  6. #6
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    j'arrive pas a implementer un key listener dans le thread qui sert a interompre la liaison série ?
    voila le code !!
    merci pour votre aide
    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
    package communication;
     
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
     
     
    public class CtrlA extends Thread implements KeyListener {
     
     
    		public CtrlA (){}
     
     
    		public void run(){
     
     
    		}
     
     
    		public void keyPressed(KeyEvent a) {
    			if (a.getKeyCode()==KeyEvent.VK_ESCAPE){
    				System.out.println("connexion interrrompu");}
     
    		}
     
     
    		public void keyReleased(KeyEvent arg0) {
    			// TODO Auto-generated method stub
     
    		}
     
     
    		public void keyTyped(KeyEvent arg0) {
    			// TODO Auto-generated method stub
     
    		}
    }

  7. #7
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    personne ne sait comment faire ?
    merci de votre aide...

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 45
    Points : 23
    Points
    23
    Par défaut
    Salut,

    Il me semble qu'il faut que l'objet est le focus pour que l'evenement soit entendu. Donc avoir un objet qui s'affiche sur l'écran.

Discussions similaires

  1. [Port série] Liaison série avec Qt
    Par krapo13 dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 24/02/2011, 15h41
  2. Liaison série avec une imprimante Imaje(S8)
    Par laeti23 dans le forum C#
    Réponses: 0
    Dernier message: 29/12/2008, 15h39
  3. gestion de la liaison série avec VBA
    Par riquet90 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 11/08/2008, 17h30
  4. Réponses: 4
    Dernier message: 30/03/2007, 16h27
  5. liaison Série avec kernell32
    Par Emcy dans le forum Windows
    Réponses: 8
    Dernier message: 31/08/2005, 08h58

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