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

Développement Mobile en Java Discussion :

Modem GSM en java


Sujet :

Développement Mobile en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 121
    Par défaut Modem GSM en java
    Comment je peut indiquer le type et le port d'un modem GSM wavecom en java? je sais qu'avec VB, il y a un objet MSComm. Y-a-t'il un équivalent en java?
    Merci d'avance

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 121
    Par défaut
    j'ai arrivé à initialisé mon modem GSM voilà mon 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
    43
    44
    //initialisation du driver
    		Win32Driver w32Driver= new Win32Driver();
    		w32Driver.initialize();
            //r?cup?ration de l'?num?ration
    		Enumeration portList=CommPortIdentifier.getPortIdentifiers();
            //affichage des noms des ports
    		CommPortIdentifier portId=null;
    		while (portList.hasMoreElements()){
    			portId=(CommPortIdentifier)portList.nextElement();
    			System.out.println(portId.getName());
    		}
    		try{
    			portId=CommPortIdentifier.getPortIdentifier("COM1");
    		}catch(NoSuchPortException ex){
    			System.out.println("NoSuchPortException");
    		}
    		SerialPort port=null;
    		try {
    			port=(SerialPort)portId.open("Frame1", 10000); // L'appel de la m?thode open accepte deux param?tres : * le nom de l'application qui demande le port * le d?lai d'attente pour l'obtention du port en millisecondes.Si le port est d?j? utilis? par une autre application, le syst?me propage un PORT_OWNERSHIP_REQUESTED et donne alors le d?lai au syst?me pour lib?rer le port. En cas d'?chec une PortInUseException est lev?e. 
    		} catch (PortInUseException ex) {
    			System.out.println("PortInUseException");
    		}
    		/* Apr?s son ouverture, vous devez param?trer le port. Les param?tres importants pour la communication par port s?rie sont :
     
    	    * le contr?le de flux
    	    * le d?bit de la connexion (en Bauds)
    	    * le nombre de bits de donn?es
    	    * le ou les bits stop
    	    * la pr?sence d'un bit de parit?
     
    	    */
    //		ajout du listener
    		try {
    			port.addEventListener(this);
    		} catch (TooManyListenersException e) {
    		}
    		port.notifyOnDataAvailable(true);
     
    		try{
    			port.setFlowControlMode(SerialPort.FLOWCONTROL_NONE);
    			port.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
    		}catch (UnsupportedCommOperationException ex){
    			System.out.println("UnsupportedCommOperationException");
    		}
    et j'ai importé ces packages:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import javax.comm.*;
     
    import com.sun.comm.Win32Driver;
    import java.io.*;
    mais je ne sais pas comment envoyer un flux précis sur le port je sais seulement lire les flux entrants et sortants sur le port
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    private OutputStream outStream; //flux d'écriture du port
    //récupération du flux de lecture et écriture du port
    		try {
    			outStream = sPort.getOutputStream();
    			bufRead =
    				new BufferedReader(
    					new InputStreamReader(sPort.getInputStream()));
    		} catch (IOException e) {
    Est ce que quelqu'un peut m'aider?Merci

  3. #3
    Membre Expert
    Avatar de X-plode
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    682
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2005
    Messages : 682
    Par défaut
    Bonsoir,


    Tu dois déclarer un PrintWriter comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    private PrintWriter sortie;
    sortie = new PrintWriter(bufRead.getOutputStream(), true);
    Ensuite tu as juste à faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sortie.println("Je te send des données");
    Bon courage,

  4. #4
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Par défaut
    salut

    j'ai à peu prêt le même problème: la communication entre mon modem et mon application.

    Du coup j'essaye la solution de X-plode.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    private PrintWriter sortie;
    sortie = new PrintWriter(bufRead.getOutputStream(), true);
    sauf que la méthode getOutputStream n'est pas défini pour un objet BufferedReader...

    Sinon quand j'essaye d'envoyer des commandes à mon modem
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String messageString = "AT+CSQ";
    System.out.println("Envoi de "+messageString);
    outputStream.write(messageString .getBytes());
    le modem devrait me répondre, en utilisant le bufRead

    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
    public void serialEvent(SerialPortEvent event) {
            switch(event.getEventType()) {
            case SerialPortEvent.BI:
            case SerialPortEvent.OE:
            case SerialPortEvent.FE:
            case SerialPortEvent.PE:
            case SerialPortEvent.CD:
            case SerialPortEvent.CTS:
            case SerialPortEvent.DSR:
            case SerialPortEvent.RI:
            case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
                break;
            case SerialPortEvent.DATA_AVAILABLE:
            	System.out.println("Reception...");
            	int messageLu = 0;
    				try {
    					while (inputStream.available() > 0) {
    					//messageLu = bufRead.readLine().trim();
    					messageLu = bufRead.read();
    					System.out.println((char)messageLu);
    					}
    				} catch (IOException e) {
    					e.printStackTrace();
    				}
                break;
            }
        }
    je lis ce que j'envoie et non ce que mon modem devrait me renvoyer...
    Je fais surement quelque chose de mal au niveau des flux mais j'ai du mal à comprendre comment marche le transfert de données !

    j'ai tenté de suivre le tuto http://christophej.developpez.com/tu...java/javacomm/ sans réussir à communiquer avec mon modem.
    Modem qui marche bien d'ailleurs, puisqu'avec Hyperterminal je n'ai aucun soucis. Mon but étant d'envoyer des sms avec.

    Merci !

    EDIT:
    après réflexion, j'ai changé bufRead.getOutputStream() par mon objet outputStream et cette fois ci ça marche. Je récupère à peu prêt la réponse de mon modem. C'est pas encore ça mais c'est déjà un pas de fait

  5. #5
    Membre Expert
    Avatar de X-plode
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    682
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2005
    Messages : 682
    Par défaut
    Désolé c'étais pour un socket.

    Pour l'API, est-ce que tu fais ainsi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SerialPort port;
    try {
    	port=(SerialPort)portId.open("Mon_Appli", 10000);
    } catch (PortInUseException ex) {
    	//traitement de l'exception
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    InputStream in;
    OutputStream out; 
    try {
    	out = port.getOutputStream();
    	in = port.getInputStream();
    } catch (IOException ex) {
    	//gestion de l'exception
    }

  6. #6
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Par défaut
    oui j'ai fait comme ça, mais apparemment ça vient de ma façon d'envoyer mes messages au modem.
    J'ai édité mon post du dessus.
    Ta méthode semble fonctionner. Je tiendrais mon post à jour quand je réussirai à faire ce que je veux, ou si j'ai un prob !
    Merci !

  7. #7
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 121
    Par défaut
    Citation Envoyé par xiror Voir le message
    après réflexion, j'ai changé bufRead.getOutputStream() par mon objet outputStream et cette fois ci ça marche. Je récupère à peu prêt la réponse de mon modem. C'est pas encore ça mais c'est déjà un pas de fait
    Où vous avez changé ça? Est ce que vous avez changer ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    private PrintWriter sortie;
    sortie = new PrintWriter(bufRead.getOutputStream(), true);
    par celui ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    private PrintWriter sortie;
    sortie = new PrintWriter(outputStream.write(messageString .getBytes()), true);
    ? Svp si vous trouvez correctement comment envoyer les commandes AT au modem aidez moi car je me bloque.Merci d'avance

  8. #8
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Par défaut
    tout simplement comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sortie = new PrintWriter(outputStream, true);
    puis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String messageString = "AT";
    		System.out.println("Envoi de "+messageString);
    		sortie.println(messageString);
    je mettrais le code complet quand ça marchera bien
    mais en mettant ce code j'arrive à avoir la réponse "OK" du modem, ça veut dire que ma commande passe correctement !

Discussions similaires

  1. [JAVA] Modem GSM par USB
    Par touronster dans le forum Développement
    Réponses: 0
    Dernier message: 19/08/2009, 01h41
  2. connexion au modem gsm
    Par Haryou dans le forum Exchange Server
    Réponses: 1
    Dernier message: 16/10/2007, 23h23
  3. Développer sur Modem GSM
    Par moutey dans le forum Développement Mobile en Java
    Réponses: 4
    Dernier message: 01/03/2007, 18h56
  4. [C# et GSM] trouver des contrôles pour cartes sim et modems gsm
    Par Abydos Business Group dans le forum Windows Forms
    Réponses: 1
    Dernier message: 25/07/2006, 00h47
  5. Modem GSM (Gateway)
    Par mejri dans le forum Hardware
    Réponses: 7
    Dernier message: 27/06/2006, 15h10

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