//*******Applet Java réalisée en 2005 pour le centre ERASME par Guillaume BROBECKER********// // Importation des librairies //********************************************************************** import java.applet.*; import java.net.*; import java.awt.*; import javax.swing.JTextField; import javax.swing.JButton; import javax.comm.*; import com.sun.comm.Win32Driver; import java.io.*; import java.util.*; import javax.swing.JLabel; import javax.swing.*; // Déclaration de la classe publique URLComplet qui hérite de la classe Applet et qui implémente la class SerialportEventLitener public class URLComplet extends Applet implements SerialPortEventListener { // Définition des variables private CommPortIdentifier portId; private SerialPort serialPort; private BufferedReader fluxLecture; private String valeurLue=""; String s; String f; // Initialisation du contexte graphique BorderLayout borderLayout1 = new BorderLayout(); JTextField TextField1 = new JTextField(); JLabel jLabel1 = new JLabel(); // Initialisation de l'applet public void init() { // Adresse de la page web à charger s = "http://rfid.erasme.org/formulaire3.php?identifiant="; //s = "http://www.google.fr"; // Nom de la frame où doit apparaître la page web f = "droite"; try { jbInit(); TextField1.setEditable(false); } catch (Exception e) { e.printStackTrace(); } } // Fonction permettant de charger une page web locale ou mondiale, public void chargerPage(String s, String f) { URL u; // Si s est indéfinie, ne pas aller plus loin if (s == null) return; // Si la frame est indéfinie, prendre _self par défaut if (f == null) f = "_self"; // Construire l'URL et charger la page try { // Construire une URL mondiale (si la chaîne démarre par http://) // ou une URL locale (dans le cas contraire) if (s.startsWith("http://")) u = new URL(s); else u = new URL(getDocumentBase(), s); // Charger la page getAppletContext().showDocument(u, f); } catch (MalformedURLException e) { System.out.println("Erreur lors de l'ouverture de la page :"+s); } } //******************FIN DE LA FCT chargerPage()*********************** // getValeurLue retourne la valeur de l'identifiant détecté par le lecteur public String getValeurlue(){ return (valeurLue); } // Méthode de gestion des événements. 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 : try { //lecture du buffer et affichage fluxLecture.read(); valeurLue = new String(fluxLecture.readLine().toString()); fluxLecture.read(); TextField1.setText(""+valeurLue); System.out.println(valeurLue); // Appeler la fonction qui permet le chargement de la page HTML chargerPage(s+valeurLue, f); } catch (IOException e) { } break; } } // Initialiser le composant private void jbInit() throws Exception { TextField1.setPreferredSize(new Dimension(110, 20)); TextField1.setSelectionStart(12); jLabel1.setDisplayedMnemonic('0'); jLabel1.setHorizontalAlignment(SwingConstants.LEFT); jLabel1.setHorizontalTextPosition(SwingConstants.LEFT); jLabel1.setText("Identifiant :"); jLabel1.setVerticalAlignment(SwingConstants.BOTTOM); jLabel1.setVerticalTextPosition(SwingConstants.BOTTOM); this.add(jLabel1); this.add(TextField1); } // Démarrer l'applet public void start() { try { String port = "COM4"; //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 { serialPort = (SerialPort) portId.open("ModeEvenement", 2000); } catch (PortInUseException e) { } //récupération du flux try { fluxLecture = new BufferedReader(new InputStreamReader(serialPort.getInputStream())); } catch (IOException e) { } //ajout du listener try { serialPort.addEventListener(this); } catch (TooManyListenersException e) { } //paramétrage du port serialPort.notifyOnDataAvailable(true); try { serialPort.setSerialPortParams( 9600, SerialPort.DATABITS_7, SerialPort.STOPBITS_1, SerialPort.PARITY_EVEN); } catch (UnsupportedCommOperationException e) { } //System.out.println("port ouvert, attente de lecture"); } catch (Exception e) { e.printStackTrace(); } } // Arrêter l'applet public void stop() { try { fluxLecture.close(); } catch (IOException e) { } serialPort.close(); super.stop(); } }