ReaderWindow

Aus Programmers Guide

(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
Roy (Diskussion | Beiträge)
(Die Seite wurde neu angelegt: „= ReaderWindow = <source lang="java"> import java.awt.Button; import java.awt.DisplayMode; import java.awt.Frame; import java.awt.GraphicsConfiguration; import…“)
Zum nächsten Versionsunterschied →

Version vom 10:23, 25. Aug. 2010

ReaderWindow

import java.awt.Button;
import java.awt.DisplayMode;
import java.awt.Frame;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.InputStream;
import java.util.Enumeration;
 
import javax.comm.CommPortIdentifier;
import javax.comm.SerialPort;
 
 
public class ReaderWindow {
 
private static final long serialVersionUID = 1L;
 
private Button b1;
private static TextArea ta;
@SuppressWarnings("unchecked")
static Enumeration ports;
static CommPortIdentifier pID;
InputStream inStream;
SerialPort serPort;
private Frame f;
public ReaderWindow (CommPortIdentifier ci){
	f = new Frame("PortReader");
	f.addWindowListener(new WindowListener(){
		public void windowClosing(WindowEvent e){
			f.dispose();
			try{
				PortReader.getSerPort().close();
			}catch(Exception ex){}	
			System.exit(0);
		}
		@Override
		public void windowActivated(WindowEvent arg0) {}
		@Override
		public void windowClosed(WindowEvent arg0) {}
		@Override
		public void windowDeactivated(WindowEvent arg0) {}
		@Override
		public void windowDeiconified(WindowEvent arg0) {}
		@Override
		public void windowIconified(WindowEvent arg0) {}
		@Override
		public void windowOpened(WindowEvent arg0) {}
	});
 
	f.setLayout(null); // "Null-Layout" setzen
 
	ta = new TextArea();
	ta.setBounds(0, 0, 299, 120); // x, y, breite, höhe
 
	b1 = new Button();
	b1.setBounds(110,125,80,20);
	b1.setLabel("schliessen");
	b1.setName("Fenster schliessen");
	b1.addActionListener(buttonListener);
 
	f.add(ta);
	f.add(b1);
 
	DisplayMode dMode = null;
	GraphicsConfiguration gc = f.getGraphicsConfiguration();
	GraphicsDevice gd = gc.getDevice();
	dMode = gd.getDisplayMode();
 
	int width = dMode.getWidth() / 2 - 150;
	int height = dMode.getHeight() / 2 - 77;
 
	f.setLocation(width,height);
	f.setSize(300,150);
	f.setResizable(false);
	f.setUndecorated(true);
	f.setVisible(true);
	try {
		//new PortReader(ci);
	} catch (Exception e) {
		e.printStackTrace();
	}
}
private ActionListener buttonListener = new ActionListener() {
	public void actionPerformed(ActionEvent event) {
		f.dispose();
		try{
			PortReader.getSerPort().close();
		}catch(Exception ex){}
		System.exit(0);
	}
};
 
public static TextArea getTa() {
	return ta;
}
public static void setTa(TextArea ta) {
	ReaderWindow.ta = ta;
}
 
}

PortReader

import java.io.IOException;
import java.io.InputStream;
 
import javax.comm.CommPortIdentifier;
import javax.comm.PortInUseException;
import javax.comm.SerialPort;
import javax.comm.SerialPortEvent;
import javax.comm.SerialPortEventListener;
public class PortReader implements SerialPortEventListener {
  //@SuppressWarnings("unchecked")
  private InputStream inStream;
  private static SerialPort serPort=null;
  public PortReader(CommPortIdentifier pID) throws Exception{
	  ReaderWindow.getTa().append("Lausche auf Port:"+pID.getName()+"\n");
	  try{
	    serPort = (SerialPort) pID.open("PortReader", 2000);
	    inStream = serPort.getInputStream();
	    serPort.addEventListener(this);
	    serPort.notifyOnDataAvailable(true);
	    serPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
	  }catch(PortInUseException piu){
		  ReaderWindow.getTa().append("Der Port ist in Benutzung\n");
	  }
  }
 
  public void serialEvent(SerialPortEvent event) {
    switch (event.getEventType()) {
    case SerialPortEvent.BI:
      ReaderWindow.getTa().append("SerialPortEvent.BI occurred\n");
    case SerialPortEvent.OE:
    	ReaderWindow.getTa().append("SerialPortEvent.OE occurred\n");
    case SerialPortEvent.FE:
    	ReaderWindow.getTa().append("SerialPortEvent.FE occurred\n");
    case SerialPortEvent.PE:
    	ReaderWindow.getTa().append("SerialPortEvent.PE occurred\n");
    case SerialPortEvent.CD:
    	ReaderWindow.getTa().append("SerialPortEvent.CD occurred\n");
    case SerialPortEvent.CTS:
    	ReaderWindow.getTa().append("SerialPortEvent.CTS occurred\n");
    case SerialPortEvent.DSR:
    	ReaderWindow.getTa().append("SerialPortEvent.DSR occurred\n");
    case SerialPortEvent.RI:
    	ReaderWindow.getTa().append("SerialPortEvent.RI occurred\n");
    case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
    	ReaderWindow.getTa().append("SerialPortEvent.OUTPUT_BUFFER_EMPTY occurred\n");
      break;
    case SerialPortEvent.DATA_AVAILABLE:
    	ReaderWindow.getTa().append("SerialPortEvent.DATA_AVAILABLE occurred\n");
      byte[] readBuffer = new byte[20];
 
      try {
        while (inStream.available() > 0) {
          int numBytes = inStream.read(readBuffer);
          ReaderWindow.getTa().append("Bytes: "+numBytes+"\n");
        }
        ReaderWindow.getTa().append(new String(readBuffer));
      } catch (IOException ioe) {
    	  ReaderWindow.getTa().append("Exception " + ioe+"\n");
      }
      break;
    }
  }
 
public static SerialPort getSerPort() {
	return serPort;
}
 
public void setSerPort(SerialPort serPort) {
	PortReader.serPort = serPort;
}
 
}
Persönliche Werkzeuge