Ajouter un commentaire

fredericmazue

Quote:

Ce qui est d'autant plus etrange c'est que lorsque je lance cette classe, et qu'ensuite j'interroge mon modem via Windows, ce dernier ne repond plus! C'est donc que mes commandes ont quand meme eu un effet sur le modem...

Pas sûr. Tu peux très bien bloquer le port série sans atteindre ton modem pour autant ;) Ca c'est déjà vu :lol:
mais je ne pense pas que ça soit le cas ici.

Je connais très bien la programmation du port série Windows, mais je ne l'ai jamais fait avec Java.
Toutefois il me semble que tu ne fais qu'écrire sur le port sans jamais le lire.

Quand tu envoies une commande Hayes à un modem, un simple AT, le modem va te répondre OK (+ un retour chariot)
Tu dois retirer ces octets du port avant d'en envoyers d'autres. Comme je disais tu ne lit pas les octets il me semble:

 try {
outputStream = serialPort.getOutputStream();
System.out.println("Recuperation du outPutStream : OK ");
}
catch (IOException e) {
System.out.println("Erreur recuperation outPutStream " + e.toString());
e.printStackTrace();
} 

tu récuperes le outputStream, c'est une chose, mais faut lire les octets dedans ce qui est une autre chose. Et tu dois les lire chaque fois que tu as envoyé une commande Hayes et même tout le temps en fait car le modem lui même peut très bien décider de t'envoyer des octets (RING par exelmple)

La méthode est normalement de mettre outPutStream.read() dans un thread.

Je dis normalement parce que peut être Java le fait automatiquement (en .Net 2.0 c'est automatisé), mais moi je ne l'ai jamais fait en Java alors je ne sais pas exactement.
Si c'est automatisé, alors c'est sans doute dans le gestionnaire d'évenement onDataAvailable que tu dois faire outputStream.read(/* ... */)

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
     J  N   N  FFFF  Y   Y  RRRR  
J NN N F Y Y R R
J N N N FFF Y RRRR
J J N NN F Y R R
JJJ N N F Y R RR