Hallo und Entschuldigung,
hier nun mal der ganze Code. Mit den Schreibconventionen habe ich es nicht so.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
/**
* Fenster der Anwendung
*/
public class frame001 extends JFrame
{
JMenuBar menu = new JMenuBar();
JMenu menuDatei = new JMenu();
JMenuItem menuDateiImport = new JMenuItem();
JMenuItem menuDateiBeenden = new JMenuItem();
SimpleSerial m_SerialPort = null;
String inputString = new String();
TextArea m_TextInput = new TextArea();
String dateiaus = new String("comport.txt");
String[] ausgabearray = new String[200];
int m_PortIndex;
TextArea text2 = new TextArea();
frame001Panel leinwand = new frame001Panel(this);
public frame001()
{
super();
daten_von_schnittstelle_laden()
{
@Override
protected Boolean doInBackground() throws Exception
{
try {
BufferedWriter da1 = new BufferedWriter(new FileWriter(dateiaus));
while( true ){
if (m_SerialPort != null){
inputString = m_SerialPort.readString(); //von Schnitstelle lesen
if( inputString.length() > 3 ){
text2.append(inputString);
System.out.println("Wert : " + inputString);
da1.write(inputString + "\r\n"); // In Datei schreiben
}
}
try{
Thread.sleep(100);
}
catch (InterruptedException e){
//da1.close();
}
}
// hier dein code zum laden rein
}
catch (IOException ioe ){
System.out.println("Error -- ");
}
return true;
}
};
try {
fensterEinrichten();
}
catch(Exception e) {
e.printStackTrace();
}
}
//Initialisierung der Komponenten
private void fensterEinrichten() throws Exception
{
// Anwendungssymbol einrichten
leinwand.setSize(600, 400);
getContentPane().add(leinwand);
this.setSize(new Dimension(600,400));
this.setTitle("XXXX");
this.setResizable(false);
// Menü
menuDatei.setText("Port");
//menuDateiBeenden.setText("Beenden");
menuDateiBeenden.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
menuDateiBeenden_actionPerformed(e);
}
});
menuDatei.add(menuDateiImport);
menuDatei.add(menuDateiBeenden);
menu.add(menuDatei);
this.setJMenuBar(menu);
}
// Ereignisbehandlung für Menübefehle
public void menuDateiBeenden_actionPerformed(ActionEvent e)
{
System.exit(0);
}
protected void processWindowEvent(WindowEvent e)
{
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING)
{
System.out.println("processWindowEvent");
menuDateiBeenden_actionPerformed(null);
}
}
}
class frame001Panel extends JPanel
{
Image hintergrundbild;
frame001 hf;
JButton btn1 = new JButton();
JButton btn2 = new JButton();
TextArea text2 = new TextArea();
SimpleSerial m_SerialPort = null;
SwingWorker daten_von_schnittstelle_laden = new SwingWorker();
frame001Panel(frame001 fenster)
{
this.setLayout(null);
text2.setBounds(new Rectangle(20, 20, 550, 250));
btn1.setText("Start");
btn1.setForeground(Color.BLACK);
btn1.setBounds(new Rectangle(225,300, 125, 25));
btn1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
// Init the serial port and associated Input/Output streams
//public void initSerialPort() throws IOException
//{
// If serial port was previously opened, close it now
// Most applications open serial port, and never need to close it again.
if (m_SerialPort != null)
{
m_SerialPort.close();
m_SerialPort = null;
}
// New instance of the serial port.
m_SerialPort = new SimpleSerialJava(1);
// If there's an error, throw an exception
//if (!m_SerialPort.isValid())
//{
// throw (new IOException("Serial port not opened"));
//}
button_start(e); //btn1_actionPerformed(e);
}
});
btn2.setText("Ende");
btn2.setForeground(Color.BLACK);
btn2.setBounds(new Rectangle(400, 300, 80, 25));
btn2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
btn2_actionPerformed(e);
}
});
add(btn1, null);
add(btn2, null);
add(text2,null);
}
public void button_start(ActionEvent eee)
{ // Ende Montstl zu Unt
System.out.println("Start");
daten_von_schnittstelle_laden.execute();
}
public void btn2_actionPerformed(ActionEvent e)
{
System.exit(0);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawImage(hintergrundbild, 0, 0, getWidth(), getHeight(), this);
}
}
Ich hoffe das ist besser lesbar Ohne deine Code, der im Button implentiert ist, läuft das Programm ohne Ende, da auf der serielen Schnittstelle immer was ankommt. Dieses soll dan in eine Datei geschrieben werden. Jedoch ohne ein xx.close() geht es nicht. Und die seriel immer sendet finde ich so keine Ende.
mfg GG