Ciao sto scrivendo un applet che dovrebbe leggere dei dati dalla porta seriale utlizzando il package javacomm, ho provato prima a scrivere un semplice programma che mi visualizzasse le porte disponibili , il punto è questo, che se lancio la classe come applicazione funziona , se invece la lancio come applet non funziona,
la classe è questa :
Per visualizzarla sto scrivendo on eclipse , che "dovebbe" impostare i premessi in automatico ,codice:import javax.comm.*; import java.io.*; import java.util.*; public class SerClass implements SerialPortEventListener{ InputStream in ; public static void main(String[] args){ Enumeration enport = CommPortIdentifier.getPortIdentifiers(); CommPortIdentifier idPorta = null; if(!enport.hasMoreElements()){ System.out.println("Nessuna porta seriale trovata !"); } while(enport.hasMoreElements()){ CommPortIdentifier pid = (CommPortIdentifier)enport.nextElement(); System.out.println("Trovata porta : " + pid.getPortType() + " Nome : " + pid.getName()); } } public void serialEvent(SerialPortEvent event) { 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: byte[] readBuffer = new byte[20]; try { while (in.available() > 0){ int numBytes = in.read(readBuffer); } //System.out.print(new String(readBuffer)); } catch (IOException e) {} break; } } }
il codice dell'applet è questo :
La classe viene compilata come applet ma eclipse da questi errori al runtimecodice:import java.applet.Applet; import java.io.*; import java.awt.*; import javax.comm.*; import java.util.*; import javax.swing.*; public class MyApplet extends Applet implements SerialPortEventListener { private InputStream in; private String logPorte ; public void leggiPorte(){ Enumeration enport = CommPortIdentifier.getPortIdentifiers(); CommPortIdentifier idPorta = null; if(!enport.hasMoreElements()){ logPorte = "Nessuna porta seriale trovata !"; } while(enport.hasMoreElements()){ CommPortIdentifier pid = (CommPortIdentifier)enport.nextElement(); logPorte += "Trovata porta : " + pid.getPortType() + " Nome : " + pid.getName(); } } public void paint(Graphics g) { g.setColor(Color.blue); g.drawString("Applet WriteToDiskApplet", 120, 120); g.setColor(Color.RED); g.drawString(logPorte, 100, 100); } public void init(){ leggiPorte(); } public void serialEvent(SerialPortEvent event) { 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 : byte[] readBuffer = new byte[20]; try{ while(in.available() > 0){ int numBytes = in.read(readBuffer); } //System.out.println(new String(readBuffer)); } catch(IOException e){ e.printStackTrace(); } break; } } }
java.lang.NullPointerException: name can't be null
at java.io.FilePermission.init(Unknown Source)
at java.io.FilePermission.<init>(Unknown Source)
at java.lang.SecurityManager.checkDelete(Unknown Source)
at javax.comm.CommPortIdentifier.getPortIdentifiers(C ommPortIdentifier.java:70)
at MyApplet.leggiPorte(MyApplet.java:39)
at MyApplet.init(MyApplet.java:58)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
C'è qualcosa legata ai permessi che devo controllare ?
Spero qualcuno possa aiutarmi ...
ciao a tutti

Rispondi quotando