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 :
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;
}
}
}
Per visualizzarla sto scrivendo on eclipse , che "dovebbe" impostare i premessi in automatico ,
il codice dell'applet è questo :
codice:
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;
}
}
}
La classe viene compilata come applet ma eclipse da questi errori al runtime
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