ComPortTester
Aus Programmers Guide
(Unterschied zwischen Versionen)
Roy (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „= ComPortTester = <source lang="java"> import java.awt.Button; import java.awt.DisplayMode; import java.awt.Frame; import java.awt.GraphicsConfiguration; import …“) |
Roy (Diskussion | Beiträge) |
||
(Der Versionsvergleich bezieht 1 dazwischenliegende Version mit ein.) | |||
Zeile 1: | Zeile 1: | ||
- | = ComPortTester = | + | = ComPortTester = |
+ | |||
<source lang="java"> | <source lang="java"> | ||
Zeile 166: | Zeile 167: | ||
} | } | ||
} | } | ||
- | </source> | + | </source> |
+ | |||
+ | <br> | ||
+ | |||
+ | Die Klasse [[ReaderWindow|ReaderWindow]] wird dann aufgerufen sobald ein Element in der Liste geklickt wurde. Dann wird [[PortReader]] implementiert. | ||
+ | |||
+ | [[Category:Java]] [[Category:Com]] [[Category:Klassen]] [[Category:Snippet]] |
Aktuelle Version vom 10:47, 25. Aug. 2010
ComPortTester
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.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Enumeration; import javax.comm.*; public class Main { //Variablendeklaration private static final long serialVersionUID = 1L; private static Button b1; private static List list; static Enumeration<?> ports; private static CommPortIdentifier pID; private Frame f; public Main (){ /* * Kopiervorgang */ File win32 = new File(System.getProperty("java.home")+"\\bin\\win32com.dll"); File prop = new File(System.getProperty("java.home")+"\\lib\\javax.comm.properties"); if(!win32.isFile()){ System.out.println(copyFile("win32com.dll",System.getProperty("java.home")+"\\bin\\win32com.dll")); } if(!prop.isFile()){ System.out.println(copyFile("javax.comm.properties",System.getProperty("java.home")+"\\lib\\javax.comm.properties")); } //fenster erzeugen f = new Frame("verfügbare Ports"); //was machen wir wenn sich der fensterstatus verändert, also das fenster extern geschlossen wird f.addWindowListener(new ExitWindowListener()); // "Null-Layout" setzen f.setLayout(null); //neues listenobjekt list = new List(); list.setBounds(0, 0, 299, 120); // x, y, breite, höhe //itemlistener reagiert auf klicks in der liste list.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent arg0) { //wenn klick auf einen item System.out.println(list.getItem(Integer.valueOf(arg0.getItem().toString()))); CommPortIdentifier ci=null; try { //versuche den eintrag in der liste zu lesen ci = (CommPortIdentifier.getPortIdentifier(list.getItem(Integer.valueOf(arg0.getItem().toString())))); //fenster schließen f.dispose(); //lesefenster erzeugen new ReaderWindow(ci); } catch (Exception e) { e.printStackTrace(); } }}); /* * Fensterschnulli */ 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); /* * ENDE Fensterschnulli */ } //wenn schließen gedrückt ActionListener buttonListener = new ActionListener() { public void actionPerformed(ActionEvent event) { f.dispose(); try{ SimpleRead.getSerialPort().close(); }catch(Exception ex){} System.exit(0); } }; //holen der verfügbaren ports 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()); } } } //kopieren der dateien public static boolean copyFile(String fileIn,String fileOut) { try { File f1 = new File(fileIn); File f2 = new File(fileOut); InputStream in = new FileInputStream(f1); OutputStream out = new FileOutputStream(f2); byte[] buf = new byte[1024]; int len; while ((len = in.read(buf)) > 0) { out.write(buf, 0, len); } in.close(); out.close(); return true; } catch (FileNotFoundException ex) { return false; } catch (IOException e) { return false; } } //die MAIN methode, hier geht alles los public static void main (String args[]){ new Main (); getPortList(); } //wenn externes beenden class ExitWindowListener extends WindowAdapter{ public void windowClosing(WindowEvent e){ f.dispose(); try{ SimpleRead.getSerialPort().close(); }catch(Exception ex){} System.exit(0); } } }
Die Klasse ReaderWindow wird dann aufgerufen sobald ein Element in der Liste geklickt wurde. Dann wird PortReader implementiert.