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 :

Lecture fichier port COM en java


Sujet :

Entrée/Sortie Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 66
    Par défaut Lecture fichier port COM en java
    Bonjour,

    j'aimerais pouvoir lire et écrire dans un fichier COM1, j'utilise eclipse et j'ai donc essayer un code simple pour tester la lecture :
    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
    import java.io.*;
     
    public class test {
     
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    			  BufferedReader k = null ;
    			  System.out.println("lecture COM...");
    			 // try {
    				  try {
    					k = new BufferedReader (new java.io.FileReader("COM1"));
    				} catch (FileNotFoundException e) {System.out.println(e.getMessage());}
    				  for(;;){
    					  String st = null;
    					try {
    						st = k.readLine();
    					} catch (IOException e) {System.out.println(e.getMessage());}
    					  	if (st == null)
    					  		break;
     
    					  			System.out.println(st);
    					  	}
     
    			//  }catch(Exception e){System.out.println("lecture COM1 échoué");}
    		}
    Seulement j'obtiens une exception qui est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    lecture COM...
    COM1 (Accès refusé)
    Exception in thread "main" java.lang.NullPointerException
    	at test.main(test.java:16)
    Je ne comprend pas , comment puis-je lire et écrire dans un fichier périphérique sur windows??

    Merci d'avance pour toute vos réponses !

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Avril 2008
    Messages : 184
    Par défaut
    Salut,

    Ce n'est pas aussi simple que cela. Il faut utiliser une API pour le faire. Sun en propose une : http://java.sun.com/products/javacomm/

    Je l'ai utilisé y a quelques années mais je n'ai plus d'exemple sous la main

  3. #3
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    Citation Envoyé par youkoun Voir le message
    Il faut utiliser une API pour le faire. Sun en propose une : http://java.sun.com/products/javacomm/
    aussi ,tu peux voir ce cour

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 66
    Par défaut
    Citation Envoyé par youkoun Voir le message
    Salut,

    Ce n'est pas aussi simple que cela. Il faut utiliser une API pour le faire. Sun en propose une : http://java.sun.com/products/javacomm/

    Je l'ai utilisé y a quelques années mais je n'ai plus d'exemple sous la main
    Salut,


    Pourtant j'y suis arrivé, le problème était simple , je n'avais rien de connecter au port série et celui était mal configurer !
    j'ai pu le configurer avec la commande MODE COM 3, j'ai auparavant vérifier les configs dont j'avais besoin pour mon appli. à partir d'HyperTerminale.

    Le code pour écrire dans mon fichier COM3 est le suivant , si jamais quelqu'un avait besoin d'un prog. simple permettant d'utiliser un port COM , c'est la même chose mais en utilisant le fichier /dev/ttyS0 ou /dev/ttyACM0 pour les port virtuel comme le miens , donc voici le code :
    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
    public class COM implements Runnable{
    	 static   Thread myThread=null;
    	 static   BufferedReader br;
    	 static   BufferedWriter wr;
    	 static   InputStreamReader isr;
    	 static   OutputStreamWriter osw;
    	 static   java.io.RandomAccessFile port;
     
    	    public  COM(){ /**Constructeur*/
    			  myThread=new Thread(this);
    	    }
     
    		public void start(){
    			try {
    			   port=new java.io.RandomAccessFile("COM3","rwd");
    			   port.writeBytes("\r\n");
    			   port.writeBytes("c,31,0,0,5\r\n");
    			   port.writeBytes("T,1000,1\r\n");
    			}
    			catch (Exception e) {
    			System.out.println("start "+e.toString());
    			}
    	        myThread.start();
    		}
     
     
    		public void run() {
    			  System.out.println("lecture COM...");
    			  for(;;){
    				  String st = null;
    				try {
    					st=port.readLine();
    				} catch (IOException e) {System.out.println(e.getMessage());}
    				  			System.out.println(st);
    			  }
    		 }
    		public static void main(String[] args) {
     
    				  COM temp= new COM();
    				  temp.start();
    		}
    	}
    Je m'en suis servi il fonctionne très bien, je récupère simplement une température sur un capteur et je l'affiche.

    Merci pour vos réponses.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Par défaut Lecture fichier port COM en java
    Bonjour makia,
    j'ai utilisé vos programmes mais j'ai toujours un petit problème, en effet, je récupère aussi des données d'un capteur et je veux les insérer dans une base de données.
    voila l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    lecture COM...
    COM1 (Le fichier spécifié est introuvable)
    Exception in thread "main" java.lang.NullPointerException
    	at test.main(test.java:17)
    merci d'avance

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Avril 2008
    Messages : 184
    Par défaut
    makia42, ne seriez vous pas sous Linux/Unix? Je pense que dans ce cas la cela peu marcher puisque ce systeme considere les ports "comme" des fichiers.

    Par contre sous Windows, je ne vois pas comment cela peu marcher.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 66
    Par défaut
    Citation Envoyé par sayomona23 Voir le message
    Bonjour makia,
    j'ai utilisé vos programmes mais j'ai toujours un petit problème, en effet, je récupère aussi des données d'un capteur et je veux les insérer dans une base de données.
    voila l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    lecture COM...
    COM1 (Le fichier spécifié est introuvable)
    Exception in thread "main" java.lang.NullPointerException
    	at test.main(test.java:17)
    merci d'avance

    Salut ,

    Il semblerait que tu ne te soit pas connecter sur le bon port, sur quel système d'exploitation est-tu?
    Si c'est windows , ouvre hyperterminale (ou simplement sur le gestionnaire de périphérique) et vérifie que la connexion existe bien !
    Si c'est sur linux c'est pareil avec minicom ou alors en ligne de commande dans un terminale tu tape ls /dev/tty* et test le port en déconnectant puis reconnectant ton périphérique ...tu saura alors quel port tu utilise !

    Voila j'èspére t'avoir aidé!
    a+

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 66
    Par défaut
    Citation Envoyé par youkoun Voir le message
    makia42, ne seriez vous pas sous Linux/Unix? Je pense que dans ce cas la cela peu marcher puisque ce systeme considere les ports "comme" des fichiers.

    Par contre sous Windows, je ne vois pas comment cela peu marcher.
    Salut ,

    Mon programme fonctionne sous Linux et Windows, c'est l'intérêt même d'utiliser java , je n'est qu'a changer le nom du port que je veux utiliser !

    L'ordinateur considère chaque port série comme un "périphérique". On l'appelle parfois périphérique terminal puisqu'à un moment les terminaux représentaient une utilisation courante des ports série. Pour chacun de ces ports série, il existe un fichier spécial dans le répertoire /dev (device : périphérique). /dev/ttyS0 est le fichier spécial pour le port série connu sous le nom COM1 dans le monde DOS/Windows

  9. #9
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 13
    Par défaut
    Citation Envoyé par makia42 Voir le message
    Salut,


    Pourtant j'y suis arrivé, le problème était simple , je n'avais rien de connecter au port série et celui était mal configurer !
    j'ai pu le configurer avec la commande MODE COM 3, j'ai auparavant vérifier les configs dont j'avais besoin pour mon appli. à partir d'HyperTerminale.

    Le code pour écrire dans mon fichier COM3 est le suivant , si jamais quelqu'un avait besoin d'un prog. simple permettant d'utiliser un port COM , c'est la même chose mais en utilisant le fichier /dev/ttyS0 ou /dev/ttyACM0 pour les port virtuel comme le miens , donc voici le code :
    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
    public class COM implements Runnable{
    	 static   Thread myThread=null;
    	 static   BufferedReader br;
    	 static   BufferedWriter wr;
    	 static   InputStreamReader isr;
    	 static   OutputStreamWriter osw;
    	 static   java.io.RandomAccessFile port;
     
    	    public  COM(){ /**Constructeur*/
    			  myThread=new Thread(this);
    	    }
     
    		public void start(){
    			try {
    			   port=new java.io.RandomAccessFile("COM3","rwd");
    			   port.writeBytes("\r\n");
    			   port.writeBytes("c,31,0,0,5\r\n");
    			   port.writeBytes("T,1000,1\r\n");
    			}
    			catch (Exception e) {
    			System.out.println("start "+e.toString());
    			}
    	        myThread.start();
    		}
     
     
    		public void run() {
    			  System.out.println("lecture COM...");
    			  for(;;){
    				  String st = null;
    				try {
    					st=port.readLine();
    				} catch (IOException e) {System.out.println(e.getMessage());}
    				  			System.out.println(st);
    			  }
    		 }
    		public static void main(String[] args) {
     
    				  COM temp= new COM();
    				  temp.start();
    		}
    	}
    Je m'en suis servi il fonctionne très bien, je récupère simplement une température sur un capteur et je l'affiche.

    Merci pour vos réponses.
    Bonjour à tous,

    Cette conversation date un peu, mais je souhaiterai avoir plus de précision quant à votre code.

    Pourriez-vous m'expliquer ces quelques lignes s'il vous plait ? Je ne vois pas à quoi correspondent le T, le C et les chiffres donnés en paramètre :

    Citation Envoyé par makia42 Voir le message
    port=new java.io.RandomAccessFile("COM3","rwd");
    port.writeBytes("\r\n");
    port.writeBytes("c,31,0,0,5\r\n");
    port.writeBytes("T,1000,1\r\n");
    Je vous remercie par avance pour vos réponses

    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utilisation des ports COM en Java avec RXTX
    Par philippe57460 dans le forum Général Java
    Réponses: 13
    Dernier message: 02/02/2010, 12h18
  2. port com en java
    Par philippe57460 dans le forum EDI et Outils pour Java
    Réponses: 1
    Dernier message: 27/02/2009, 12h41
  3. Problème de lecture du port Com
    Par zoheir13 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 26/04/2008, 13h49
  4. erreur fichier ports COM
    Par _yeye_ dans le forum Visual C++
    Réponses: 3
    Dernier message: 27/09/2006, 08h16
  5. Problème de lecture sur port COM
    Par Marthym dans le forum MFC
    Réponses: 10
    Dernier message: 11/04/2006, 15h36

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