RS232

Aus Programmers Guide

(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: „= Java und die RS232-Schnittstelle = == Einbinden der JAVA-COMM-API == ===== 1.Schritt ===== Kopiere win32com.dll C:\Programme\Java\jre6\bin<br> ===== 2. …“)
Zeile 136: Zeile 136:
}
}
-
</source>
+
</source>  
 +
 
 +
Das ReaderWindow wird dann aufgerufen sobald ein Element in der Liste geklickt wurde.

Version vom 10:14, 25. Aug. 2010

Inhaltsverzeichnis

Java und die RS232-Schnittstelle

Einbinden der JAVA-COMM-API

1.Schritt

Kopiere win32com.dll C:\Programme\Java\jre6\bin

2. Schritt

Kopiere javax.comm.properties C:\Programme\Java\jre6\lib

3. Schritt
  • Kopiere comm.jar C:\Programme\Java\jre6\lib\ext
  • Implementiere die comm.jar in Dein Projekt indem du den Build-Path anpasst und die jar mit einfügst

Jetzt kann die API einfach genutzt werden: Beispielprogramm zum Anzeigen aller verfügbaren Ports in einem Frame:

package de.roybohn.com;
 
import java.awt.Button;
import java.awt.DisplayMode;
import java.awt.Frame;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.List;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Enumeration;
 
import javax.comm.CommPortIdentifier;
import javax.comm.NoSuchPortException;
 
 
public class Main {
	private static final long serialVersionUID = 1L;
	private Button b1;
	private static List list;
	@SuppressWarnings("unchecked")
	static Enumeration ports;
	private static CommPortIdentifier pID;
	private Frame f;
 
public Main (){
 
	f = new Frame("verfügbare Ports");
	f.addWindowListener(new ExitWindowListener());
	f.setLayout(null); // "Null-Layout" setzen
	list = new List();
	list.setBounds(0, 0, 299, 120); // x, y, breite, höhe
	list.addItemListener(new ItemListener() {	
	@Override
		public void itemStateChanged(ItemEvent arg0) {
			System.out.println(list.getItem(Integer.valueOf(arg0.getItem().toString())));
			CommPortIdentifier ci=null;
			try {
				ci = (CommPortIdentifier.getPortIdentifier(list.getItem(Integer.valueOf(arg0.getItem().toString()))));
			} catch (NumberFormatException e) {
				e.printStackTrace();
			} catch (NoSuchPortException e) {
				e.printStackTrace();
			}
 
			try {
				//new ReaderWindow(ci);
				f.dispose();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	});
 
	b1 = new Button();
	b1.setBounds(110,125,80,20);
	b1.setLabel("schliessen");
	b1.setName("Fenster schliessen");
	b1.addActionListener(buttonListener);
 
	f.add(list);
 
	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);
	}
	private ActionListener buttonListener = new ActionListener() {
		public void actionPerformed(ActionEvent event) {
			f.dispose();
			try{
				PortReader.getSerPort().close();
			}catch(Exception ex){}	
			System.exit(0);
		}
	};
	private class ExitWindowListener extends WindowAdapter{
		public void windowClosing(WindowEvent e){
			f.dispose();
			try{
				PortReader.getSerPort().close();
			}catch(Exception ex){}	
			System.exit(0);
		}
	}
	public static void getPortList(){
	    ports = CommPortIdentifier.getPortIdentifiers();
	    while (ports.hasMoreElements()) {
	      pID = (CommPortIdentifier) ports.nextElement();
	      System.out.println("Port " + pID.getName());
 
	     if (pID.getPortType() == CommPortIdentifier.PORT_SERIAL) {
	        list.add(pID.getName());
	      }
	    }
	}
 
	public static void main (String args[]){
		new Main ();
		getPortList();
	}
}

Das ReaderWindow wird dann aufgerufen sobald ein Element in der Liste geklickt wurde.

Persönliche Werkzeuge