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
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
j'ai arrivé à initialisé mon modem GSM voilà mon code:
et j'ai importé ces packages:
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"); }
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 import javax.comm.*; import com.sun.comm.Win32Driver; import java.io.*;Est ce que quelqu'un peut m'aider?Merci
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) {
Bonsoir,
Tu dois déclarer un PrintWriter comme suit :
Ensuite tu as juste à faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 private PrintWriter sortie; sortie = new PrintWriter(bufRead.getOutputStream(), true);
Bon courage,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 sortie.println("Je te send des données");
Mes liens: Profil | Blog
Mes articles Java : JSF 2.0 | NetBeans 6.9/OSGi
Mes articles Webmarketing : Apprenez à mixer, filtrer, différentes sources de flux (RSS,...)
Vidéos pour les membres :
James Gosling - Créateur du langage Java
Chris Melissinos - Chef Evangéliste
Réseaux sociaux: Twitter Webmarketing | Facebook Webmarketing
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.
sauf que la méthode getOutputStream n'est pas défini pour un objet BufferedReader...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 private PrintWriter sortie; sortie = new PrintWriter(bufRead.getOutputStream(), true);
Sinon quand j'essaye d'envoyer des commandes à mon modem
le modem devrait me répondre, en utilisant le bufRead
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());
je lis ce que j'envoie et non ce que mon modem devrait me renvoyer...
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 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![]()
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 }
Mes liens: Profil | Blog
Mes articles Java : JSF 2.0 | NetBeans 6.9/OSGi
Mes articles Webmarketing : Apprenez à mixer, filtrer, différentes sources de flux (RSS,...)
Vidéos pour les membres :
James Gosling - Créateur du langage Java
Chris Melissinos - Chef Evangéliste
Réseaux sociaux: Twitter Webmarketing | Facebook Webmarketing
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 !
Où vous avez changé ça? Est ce que vous avez changer ce codepar celui ci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 private PrintWriter sortie; sortie = new PrintWriter(bufRead.getOutputStream(), true);? Svp si vous trouvez correctement comment envoyer les commandes AT au modem aidez moi car je me bloque.Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 private PrintWriter sortie; sortie = new PrintWriter(outputStream.write(messageString .getBytes()), true);
tout simplement comme ça:
puis:
Code : Sélectionner tout - Visualiser dans une fenêtre à part sortie = new PrintWriter(outputStream, true);
je mettrais le code complet quand ça marchera bien
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);
mais en mettant ce code j'arrive à avoir la réponse "OK" du modem, ça veut dire que ma commande passe correctement !
Partager