Programme Leitung Oszilloskop seriell0 NetzHW_seriell Morsen Senden/Empfangen RS232 Terminal3 Terminal4 Fehlerkorrektur Threads CTS-Interrupt Routing Socket-Programmierung Timer Java Spiel
Pfad: Startseite / Fächer / Informatik / Netze / Programme / Java
Autor: H.Heusel
06.10.2007 14:31
1471
Java

Herr Heusel aus Herxheim hat viele Programme nach Java übertragen:

Serielle Schnittstelle mit Java

Die Einbindung des javax.comm - Erweiterungspakets.

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)

  1. win32com.dll wird ins Verzeichnis <jdk>\jre\bin kopiert.
  2. comm.jar wird ins Verzeichnis <jdk>\jre\lib\ext kopiert.
  3. javax.comm.properties wird ins Verzeichnis <jdk>\jre\lib kopiert.
  4. Der CLASSPATH-Eintrag wird nicht geändert.

Java-Applet:

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);
}
}

Klasse:

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()));
  }
}

Socket-Programmierung

httpKommando

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();
   }

}

httpKommando.java

Seriell-Port-Test von Uwe Korn

Java-Serial-Port-Test.zip, NetzHW.java

Valid XHTML 1.0! lokal