Pourquoi?
Suite à un accident de moto, je me retrouve dans une chaise toute la journée à developper des bouts de code ici et là et pour tout et n'importe quoi. Je bricole en C, C++, Python et quelques macro en VB. Un collegue me tanne pour commencer le java, donc je me lance sur un projet qui me tient à coeur.
Le projet final consiste à developper un soft de répondeur automatique RTC.
Je gère des stations de mesure automatique disséminées un peu partout, mais qui sont toutes connectées sur RTC ou GSM. Ces dernières peuvent renvoyer des alarmes à un numéro de telephone. Le but est donc de récuperer ces infos, les enregistrer et enventuellement les dispatcher par mail et/ou par SMS.
Le pseudo algorithme serait le suivant:
Attendre un appel
Decrocher
Ecouter
Acquiter
Racrocher
Enregistrer les infos
Dispatcher si necessaire
Coté matériel et logiciel, je dispose de tout le necessaire, modem RTC externe, modem GSM, 2 ports com libres, une ligne RTC, une carte SIM,java,eclipse et internet 
Bien évidemment, je ne me lance pas d'un bloc dans ce projet, j'essaye de découper un peu le travail, donc dans un premier temps, je voudrais bien comprendre comment fonctionne l'interface modem et je bloque déjà 
Voici le code:
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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
| import java.io.*;
import java.util.*;
import javax.comm.*;
import com.sun.comm.Win32Driver;
public class UtilisationFlux {
static CommPortIdentifier portId;
static Enumeration portList;
private SerialPort sPort; //le port série
private BufferedReader bufRead; //flux de lecture du port
private OutputStream outStream; //flux d'écriture du port
public UtilisationFlux(String port) {
//initialisation du driver
Win32Driver w32Driver = new Win32Driver();
w32Driver.initialize();
//récupération de l'identifiant du port
try {
portId = CommPortIdentifier.getPortIdentifier(port);
} catch (NoSuchPortException e) {
}
//ouverture du port
try {
sPort = (SerialPort) portId.open("UtilisationFlux", 10000);
} catch (PortInUseException e) {
}
//règle les paramètres de la connexion
try {
sPort.setSerialPortParams(
9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
} catch (UnsupportedCommOperationException e) {
}
//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) {
}
}
public String communique(int envoie) {
String poids = null;
try {
//demande de poids
outStream.write(envoie);
//lecture du poids
poids = bufRead.readLine().trim();
} catch (IOException e) {
}
return poids;
}
public String communique() {
String poids = null;
String envoie = "ATD0612345678";
try {
outStream.write(41);
poids = bufRead.readLine().trim();
} catch (IOException e) {
}
return poids;
}
public void close(){
try {
bufRead.close();
outStream.close();
} catch (IOException e) {
}
sPort.close();
}
public static void main(String[] args) {
portList = CommPortIdentifier.getPortIdentifiers();
//while (portList.hasMoreElements()) {
portId = (CommPortIdentifier) portList.nextElement();
System.out.println (portId.getName());
//}
UtilisationFlux conversation = new UtilisationFlux(portId.getName());
BufferedReader clavier = new BufferedReader(new InputStreamReader(System.in));
int x=1;
try
{
//String lu = clavier.readLine();
while (x==1){
System.out.println(conversation.communique());
}
}finally
{
conversation.close();
}
} |
et l'erreur, en plus de ne pas numéroter 
COM1
java.lang.NullPointerException
at UtilisationFlux.<init>(UtilisationFlux.java:36)
at UtilisationFlux.main(UtilisationFlux.java:92)
Exception in thread "main"
Quelqu'un a t'il eu le courage de tout lire?
Partager