![]()  | 
			|||
| HSG | 
		    
  | 
		
Herr Heusel aus Herxheim hat viele Programme nach Java übertragen:
Die folgenden Ausführungen lehnen sich teilweise an eine Anleitung des Gymnasiums Korschenbroich an.
Bei der Programmierung der seriellen Schnittstelle gibt man die Plattform-Unabhängigkeit von Java auf. Die entsprechenden Klassen und Methoden gehören nicht zum Kernbereich von Java. Aber für die Windows- und Solaris-Betriebssysteme gibt es ein Erweiterungs-Paket mit Namen javax.comm, das alle benötigten Programmiermöglichkeiten bietet. Das Paket kann im Internet von java.sun.com/products/javacomm/ heruntergeladen werden. Es enthält doc-Dateien, Beispielprogramme und die notwendigen Java-Erweiterungsdateien win32com.dll, comm.jar und javax.comm.properties. Um diese in die Java jdk1.2 oder jdk1.3 Programmierumgebung einzubinden, müssen sie in die hier angegebenen Verzeichnisse kopiert werden, wobei <jdk> das Basis-Verzeichnis der jdk-Installation bezeichnen soll (also z.B. c:\jdk1.2)
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class morsen extends Applet
{
  bitschicht bs;
  public void init()
  {
      bs = new bitschicht("COM1","morsen");
      bs.ausgangSetzen(true);
}
}
import javax.comm.*;
public class bitschicht
{
  static CommPortIdentifier portID;
  static SerialPort serss;
  public bitschicht(String anschluss, String programm)
  {
    try{
         portID = CommPortIdentifier.getPortIdentifier(anschluss);
         serss = (SerialPort) portID.open(programm,2000);
       }
    catch(Exception exc){
        //System.out.println("Fehler :"+exc);
                        }
/*    try {
          serss.setSerialPortParams(2400,
                                   SerialPort.DATABITS_8,
                                   SerialPort.STOPBITS_1 ,
                                   SerialPort.PARITY_NONE);
        }
    catch (UnsupportedCommOperationException e) {}
*/    serss.setDTR(true);
  }
  public void ausgangSetzen(boolean jn)
  {
    serss.setRTS(!(jn));
  }
  public boolean eingangLesen()
  {
    return ( ! (serss.isCTS()));
  }
}
import java.awt.*;
import java.util.*;
import java.io.*;
import java.net.Socket;
import java.awt.event.*;
public class httpKommando extends Frame implements ActionListener{
// Das Programm ist eine Erweiterung der Klasse frame
   TextField kommando;
   TextArea ausgabe;
   Button los;
   public httpKommando()    {
        super("Kleines HTTP-Programm");       // Konstruktor der Klasse frame mit Fenstertitel
        this.addWindowListener  (new WindowAdapter(){
            public void windowClosing(WindowEvent e){  // Programmende beim Schliessen des Fensters
                dispose();
                System.exit(0);
            }
        });
        setLayout(new FlowLayout());
        kommando=new TextField("Eingabe: HTTP-Befehl",50);
        add(kommando);
        los=new Button("Senden");
        add(los);
        los.addActionListener(this);
        ausgabe=new TextArea(20,70);
        add(ausgabe);
    }
    public void actionPerformed(ActionEvent e)
    {
      ausgabe.setText("");
      try { kommunizieren( kommando.getText() ); }
      catch( IOException ioe ) { ausgabe.setText("Kein Server erreichbar!"); }
    }
    public  static void main(String args[])    // Automatischer Aufruf beim Programmstart
    {
      httpKommando f = new httpKommando();     // frame wird erzeugt, die Groesse definiert und
      f.setSize(1000,400);
      f.show();                                // angezeigt.
    }
    public void kommunizieren(String eingabe) throws IOException
    {
      String befehl,zeile;
      Socket partner;
      PrintWriter out;
      BufferedReader in;
      befehl=eingabe+" HTTP/1.1\r\n\r\n"; // Protokollspezifikationen anhaengen
      partner=new Socket("www-proxy.t-online.de", 80 ); // Proxy IP und Port
      ausgabe.append("\tgesendeter Befehl: >>>>>>>>>>  "+eingabe+" HTTP/1.1\n");
      ausgabe.append("\tTCP/IP Hostnummer: >>>>>>>>>>  "+partner.getLocalAddress()+"\n\n");
      out=new PrintWriter(partner.getOutputStream());
      out.println(befehl);
      out.flush();
      in = new BufferedReader(new InputStreamReader(partner.getInputStream()));
      zeile = in.readLine();
      while( zeile != null )
      {
        ausgabe.append("<<< " + zeile + "\n");
        zeile=in.readLine();
      }
      in.close();
      out.close();
      partner.close();
   }
}