Andre_Java
Mitglied
Ich habe eine Klasse namens comframe von einer externen Quelle. Die Klasse an sich funktioniert einwandfrei. Ich möchte diese jetzt in meinem Programm benutzen.
comframe:
Und so sieht mein Programm aus: (ein leeres Netbeans Projekt)
Was muss ich jetzt in die Main-Schleife schreiben, damit die Klasse aufgerufen wird? Das was in der Klasse unter Main steht ist ja nur in der Klasse gültig.
Ich rufe meine Klasse jetzt folgendermaßen auf und bekomme eine NullPointerException:
comframe:
PHP:
import java.io.*;
import javax.comm.*;
import java.awt.*;
import java.awt.event.*;
public class comframe extends Frame{
static CommPortIdentifier portID;
InputStream ins;
OutputStream out;
static SerialPort serss;
TextArea ausgabe;
TextField tfe;
Button bt;
public static void main(String[] args){
try{portID = CommPortIdentifier.getPortIdentifier("COM1");
serss = (SerialPort) portID.open("mein_programm",2000);
comframe f = new comframe();
f.setSize(330,250);
f.show();
}
catch(Exception exc){System.out.println("Fehler :"+exc);}
}
public comframe() {
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
dispose();
System.exit(0);
}
});
setLayout(new FlowLayout());
add(tfe=new TextField(40));
tfe.addActionListener(new sendeListener());
add(bt=new Button("Senden"));
bt.addActionListener(new sendeListener());
add(ausgabe=new TextArea("Port COM2 geöffnet\n",7,40));
try {ins = serss.getInputStream();
out = serss.getOutputStream();
serss.addEventListener(new commListener());
}
catch (Exception e) { System.out.println("Fehler: "+e);}
serss.notifyOnDataAvailable(true);
try {serss.setSerialPortParams(2400,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1 ,
SerialPort.PARITY_NONE);}
catch (UnsupportedCommOperationException e) {}
}
public class sendeListener implements ActionListener{
public void actionPerformed(ActionEvent e){
PrintWriter aus = new PrintWriter(out);
aus.println(tfe.getText());
aus.flush();
aus.close();
}
}
public class commListener implements SerialPortEventListener{
public void serialEvent(SerialPortEvent event) {
if(event.getEventType()==SerialPortEvent.DATA_AVAILABLE){
byte[] readBuffer = new byte[20];
try {
while (ins.available() > 0) {int numBytes = ins.read(readBuffer);}
String nachricht = new String(readBuffer);
ausgabe.append(nachricht);
}
catch (IOException e) {System.out.println("Fehler: "+e);}
}
}
}
}
Und so sieht mein Programm aus: (ein leeres Netbeans Projekt)
PHP:
package xyz;
import java.io.*;
import javax.comm.*;
import java.awt.*;
import java.awt.event.*;
public class Main {
public Main() {
}
public static void main(String[] args) {
// TODO code application logic here
}
}
Was muss ich jetzt in die Main-Schleife schreiben, damit die Klasse aufgerufen wird? Das was in der Klasse unter Main steht ist ja nur in der Klasse gültig.
Ich rufe meine Klasse jetzt folgendermaßen auf und bekomme eine NullPointerException:
PHP:
//TODO....
comframe f = new comframe();
try{f.portID = CommPortIdentifier.getPortIdentifier("COM1");
f.serss = (SerialPort) f.portID.open("mein_programm",2000);
f.setSize(330,250);
f.show();
}
catch(Exception exc){System.out.println("Fehler :"+exc);}
Zuletzt bearbeitet: