Bonjour,

Dans le cadre d'un stage en deuxieme année d'informatique,
je dois créer une application qui envoie les message et les receptionne,

J'ai appris à communiquer avec le Port com et l"utilisation des buffers avec le tuto javax.comm de Christophe Jollivet
ici -> http://christophej.developpez.com/tu...java/javacomm/

L'envoie c'est OK, elle est en prod pour la notification SMS sur l'onduleur des serveurs.

Cependant il faudrait que lorsque j'envoie un code sur le GSM branché dans la salle serveur en fonction du code reçu il y est un traitement.

J'arrive à lister les messages dans la memoire du téléphone.
J'arrive à communiquer sur le port COM.

Voici le resultat de la commande AT du CGML (listage) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
+CMGL: 0,"REC READ","33681*0*6*4",,"09/04/08,16:16:19-08"
Premier message
 
+CMGL: 1,"REC READ","33681*0*6*4",,"09/04/08,16:35:47-08"
Deuxieme message
Comment puis-je extraire le numero et le message pour pouvoir faire le traitement?
J'ai pensé a utilise un Pattern mais le message et sur une autre ligne donc l'index de l'array ne peut etre definis en dur. ensuite une regex mais je ne vois pas ou je pourrais couper...

Pour créer cette affichage voici ma fonction:

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
try{
			out = port.getOutputStream();
			in2 = new Scanner(new InputStreamReader(port.getInputStream()));
 
		}catch(IOException e){
			System.out.println(e.getMessage());
		}
		byte[] theBytes= (command+"\n").getBytes();
		for (int i=0; i<theBytes.length;i++){
			char newCharacter = (char)theBytes[i];
			if ((int)newCharacter==10) newCharacter = '\r';
			try{
				out.write((int)newCharacter);
			}catch(IOException e){
				System.out.println(e);
			}
		}
		int i = 0;
		String text = ""; 
		String tmp = "";
 
		while(in2.hasNext()){
			tmp = in2.nextLine();
 
			if(tmp.compareTo("OK")==0){
				i++;
			}else if(tmp.compareTo(command)==0){
			}else if(tmp.contains("+CMS ERROR: ")==true){
				break;
			}else{
				text=text+"\n"+tmp;
			}
			if(i>=2){
				System.out.println(text);
				break;
			}
		}
Merci d'avance.

Xenogaz