Problème affichage messages du GPS
Bonjour à tous,
Je viens de connecter un GPS de type GARMIN sur le port série de mon PC .
J'ai fait un petit programme en java qui affiche les messages envoyer par le GPS sur le port série sur le console et les stockent dans un fichier.
Le problème est que les messages s'affichent d'une manière incompréhensible comme ci-dessous:
§}«—?åë·q_{aw§§W§§e§§«—‘åë·_q[eu
§?£“§e§?“£›§e§??£?§e«›•åë·_q[eK§
››§3§™«›{åë·q_[Wu§?§?§9§«™‘åë
Portant que le GPS m'affiche le message qu'il est pret à naviguer (il détect les satellites).
Le code est le suivant:
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 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
|
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Enumeration;
import java.util.TooManyListenersException;
import javax.comm.CommPortIdentifier;
import javax.comm.NoSuchPortException;
import javax.comm.PortInUseException;
import javax.comm.SerialPort;
import javax.comm.SerialPortEvent;
import javax.comm.SerialPortEventListener;
import javax.comm.UnsupportedCommOperationException;
public class Connect_GPS {
static CommPortIdentifier portId;
static CommPortIdentifier portId2;
static Enumeration portList;
static InputStream in;
static OutputStream out;
static SerialPort serialPort;
public static String getDateTime()
{
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(cal.getTime());
}
public static void main(String args[])
{
boolean portFound = false;
String defaultPort = "COM1";
portList = CommPortIdentifier.getPortIdentifiers();
// while (portList.hasMoreElements()) {
portId = (CommPortIdentifier) portList.nextElement();
// if ((portId.getPortType() == CommPortIdentifier.PORT_SERIAL)
// &&(portId.getName().equals(defaultPort))){
try {
portId = CommPortIdentifier.getPortIdentifier("COM4");
} catch (NoSuchPortException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
serialPort = (SerialPort) portId.open("SimpleReadApp", 2000);
} catch (PortInUseException e) {
System.err.println(e.getMessage());
System.out.print("Erreur ouverture du port série\n");
}
// }
// }
System.out.print("Port "+ portId.getName()+" ouvert\n");
try {
in= serialPort.getInputStream();
int in2 = serialPort.getInputBufferSize();
System.out.println("input data size is :"+ in2);
} catch (IOException e) {
System.out.println(e);
}
serialPort.notifyOnDataAvailable(true);
try {
serialPort.setSerialPortParams(4800, SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
} catch (UnsupportedCommOperationException e) {}
/////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
try {
serialPort.addEventListener(new SerialPortEventListener()
{
public void serialEvent(SerialPortEvent pe) {
// System.out.println("un evenement est survenu "+pe);
byte rec[] = new byte[70];
try {
in.read(rec);
} catch (IOException e) {
}
// if (new String (rec).trim().contains("$GPGLL")){
// System.out.println(new String(rec).trim());
// }
System.out.println(new String(rec).trim());
////////////// Remplissage du fichier /////////////
File file = new File("MesuresGPS.txt");
FileWriter fw;
try {
//Création de l'objet
fw = new FileWriter(file,true);
//On écrit la chaîne
fw.write(new String(rec).trim());
//On ferme le flux
fw.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//////////////// Fin Remplissage //////////////////
}
});
} catch (TooManyListenersException e) {}
}
// serialPort.close();
} |
A t il quelq'un qui a une solution?
Merci d'avance.