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 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228
| public class Envoi extends javax.swing.JFrame implements SerialPortEventListener{
public static Timer timer1;
public static Timer timer2;
public static Timer timer3;
private BufferedReader fluxLecture;
private BufferedReader entree;
private InputStream inStream;
private OutputStream outStream;
private PrintWriter sortie;
private String flux="";
private SerialPort port=null;
private Enumeration portList;
private CommPortIdentifier portId;
public Envoi() {
super();
initialisation();
traiter();
}
public void initialisation()
{
//initialisation du driver
Win32Driver w32Driver= new Win32Driver();
w32Driver.initialize();
//r?cup?ration de l'?num?ration
portList=CommPortIdentifier.getPortIdentifiers();
//affichage des noms des ports
portId=null;
while (portList.hasMoreElements()){
portId=(CommPortIdentifier)portList.nextElement();
System.out.println(portId.getName());
}
try{
portId=CommPortIdentifier.getPortIdentifier("COM2");
}catch(NoSuchPortException ex){
System.out.println("NoSuchPortException");
}
try {
port=(SerialPort)portId.open("Envoi", 2000); // 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");
}
try {
outStream = port.getOutputStream();
inStream = port.getInputStream();
fluxLecture =new BufferedReader(new InputStreamReader(inStream));
sortie = new PrintWriter(outStream, true);
} catch (IOException e) {
System.out.println("IOException");
}
//ajout du listener
try {
port.addEventListener(this);
} catch (TooManyListenersException e) {
}
port.notifyOnDataAvailable(true);
/* 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?
*/
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");
}
//pour deriger directement les accusses des messages emis ainsi les nouveaux messages sur le port serie
sortie.println("AT+cnmi=0,2,0,1,0"+(char)13);
//pour activer les status report request
sortie.println("AT+csmp=33"+(char)13);
etapeSeq=-1;
typeModem=1;
}
public void serialEvent(SerialPortEvent event) {
//gestion des ?v?nements sur le port :
//on ne fait rien sauf quand les donn?es sont disponibles
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 :
break;
}
}
public void envoiTimer1()
{
System.out.println("Timer1");
System.out.println("etapeSEq="+etapeSeq);
switch(etapeSeq)
{
case 0:
sortie.println("AT"+(char)13);
System.out.println("AT");
etapeSeq=1;
break;
case 1:
System.out.println("flux= "+flux);
if(typeModem == 1) //Second type de modem (1 dans le fichier ini)
{
//if(flux.compareTo((char)13+(char)10+"OK"+(char)13+(char)10)==0) // V?rifier que le modem a r?pondu OK
if(flux.compareTo("OK")==0)
{
flux="";
System.out.println("etapeSeq1ifType1= "+etapeSeq);
etapeSeq=2; //Comme le modem a r?pondu OK on continu ? l'?tape suivante
}
else //Communication avec le terminal Impossible ! Rev?rifiez les branchements !", vbCritical, "Erreur")
{
System.out.println("Communication avec le terminal Impossible !Modem1");
System.out.println("etapeSeq1elseType1= "+etapeSeq);
}
}
break;
case 2:
//On envoi au modem le num?ro de destinataire
//Commande AT --> AT+CMGS="num?ro"
sortie.println("AT+CMGS=+21622000000"+(char)13);
System.out.println("etapeSeq2= "+etapeSeq);
etapeSeq=3; //Continu le s?quencement en laissant au modem le temps de r?pondre
break;
case 3:
System.out.println("flux= "+flux);
if(typeModem== 1)
{
System.out.println("flux.length()");
if(flux.compareTo(">")==0)
{
//flux="";
System.out.println("etapeSeq31= "+etapeSeq);
etapeSeq=4; //Comme le modem ? r?pondu, on continu le s?quencement
}
}
break;
case 4:
//Dans cette derni?re ?tape, il ne reste plus qu'? envoyer au modem le texte du SMS Chr$(26) --> caract?re ASCII de la combinaison de touches CTRL+Z (permet de valider l'envoi du SMS apr?s y avoir entr? le texte du message => propr au terminal)
sortie.println("blabla"+(char)26);
System.out.println("etapeSeq4= "+etapeSeq);
etapeSeq=5;
break;
case 5:
System.out.println("etapeSeq5= "+etapeSeq);
etapeSeq=-1;
break;
}
}
public void envoiTimer3()
{
System.out.println("Timer3");
flux = new String();
try {
//lecture du buffer et affichage
flux= (String) fluxLecture.readLine();
if(flux.isEmpty())
flux="";
System.out.println("flux= "+flux);
} catch (IOException e) {
e.printStackTrace();
}
}
public void traiter()
{
etapeSeq=0;
timer1 = new Timer(150,new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
envoiTimer1();
//timer1.stop();
}
});
timer1.start();
timer3 = new Timer(60, new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
envoiTimer3();
//timer3.stop();
}
});
timer3.start();
}
} |
Partager