ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
334
334
EMPFEHLEN
-
Hallo
ich habe folgendes Problem:
Unten steht der Code des TestJFrame. Aus dieser GUI soll die Klasse "TwoWaySerialComm" initalisiert werden. Diese Klasse erzeugt einen SerialPortEventListener damit ich gleichzeitg auf der Seriellen Schnittstelle schreiben und Lesen kann ohne Polling. (Code des bisherigen Aufrufes steht weiter unten)
Mein Problem ist es, das ich nicht weiß wo ich den Aufruf in Swing tätigen muss, damit es läuft. Testweise habe ich den Code einfach in die main() des TestJFrame geschrieben. Allerdings wird dieser anscheinend garnicht erst ausgeführt.
In Zukunft soll aus "TwoWaySerialComm" die Farbe des Button geändert werden.
Code des JFrame:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
public class TestJFrame extends JFrame { JButton testJButton = new JButton("Schaltfläche"); public TestJFrame() { initComponents(); } private void initComponents() { setTitle("Testfenster"); // Fenstertitel setzen testJButton.addActionListener(new TestActionListener()); // EventListener für Schaltfläche hinzufügen add(testJButton); // Schaltfläche zum Fenster hinzufügen pack(); setSize(200,200); // Fenstergröße einstellen // (notwendig, damit das Fenster geschlossen werden kann) setVisible(true); // Fenster (inkl. Inhalt) sichtbar machen } class TestActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { System.out.println("Schaltfläche wurde gedrückt"); } } /** * @param args * @throws IOException * @throws SAXException * @throws ParserConfigurationException */ public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException { SwingUtilities.invokeLater(new Runnable() { public void run() { new TestJFrame(); } }); // Erzeugt einen neuen Thread, der eine Instanz von TestJFrame erzeugt } }
Aufruf TwoWaySerialComm
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14
Console user = new Console(); XVerwaltung xverwaltung = new XVerwaltung(); try { TwoWaySerialComm rs232 = new TwoWaySerialComm(tagverwaltung); rs232.connect("COM1"); } catch ( Exception e ) { // TODO Auto-generated catch block e.printStackTrace(); }
Gruß
Krikus
-
03.06.11 20:43 #2
- Registriert seit
- Feb 2009
- Beiträge
- 193
Hast du schon überprüft ob der Code in main(String[] args) wirklich nicht aufgerufen wird mit dem Debugger, oder indem du Ausgaben mit System.out.println gemacht hast?
PS: Aus persönlichen Interesse, in welcher Bibliothek befindet sich die Implementation zur Kommunikation mit der rs232-Schnittstelle?
-
HAllo,
ich benutze rxtx für den Seriellen Zugriff.
Habe die main einmal so abgeändert:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException { SwingUtilities.invokeLater(new Runnable() { public void run() { System.out.print(" TEst_1\n"); new TestJFrame(); System.out.print(" TEst_1\n"); } }); // Erzeugt einen neuen Thread, der eine Instanz von TestJFrame erzeugt XVerwaltung xverwaltung = new XVerwaltung(); System.out.print(" TEst_2\n"); try { TwoWaySerialComm rs232 = new TwoWaySerialComm(tagverwaltung); rs232.connect("COM1"); } catch ( Exception e ) { // TODO Auto-generated catch block e.printStackTrace(); } }
Leider bekomme ich von den Testausgaben auf der Konsole keinen einzigen zu sehen. Nur die Ausgabe wenn der Button gedrückt wird erscheint.
Woran liegt das?
-
03.06.11 21:31 #4
- Registriert seit
- Feb 2009
- Beiträge
- 193
Ich habe das mal ausprobiert, bei mir funktioniert alles genau so wie es soll, erhalte folgende Ausgabe:
TEst_2
TEst_1
TEst_1
Schaltfläche wurde gedrückt
(Das letzte natürlich nur wenn ich den Button drücke), das einzige was ich geändert habe ist, dass ich die Zeilen 10, 14 und 16 auskommentiert habe, weil mir die Klassen fehlen und es sich sonst nicht kompelieren ließe
-
03.06.11 23:29 #5
- Registriert seit
- Jun 2009
- Beiträge
- 870
Du solltest dir Gedanken machen, ob du den Zugriff auf die Hardware nicht von einem separaten Thread aus durchführst. Das hat den Vorteil, dass deine GUI vollständig nutzbar bleibt, während dein Programm mit dem RS232-Gerät munter kommunizieren kann.
Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
Ähnliche Themen
-
Aus einer öffentlichen Methode eine weitere öffentliche Methode aufrufen
Von BlubBlub im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 11.04.11, 10:48 -
JFrame.EXIT_ON_CLOSE + weitere Anweisung durchführen
Von Lautsprecher im Forum JavaAntworten: 4Letzter Beitrag: 21.12.07, 10:53 -
JFrame- Methoden aus Main aufrufen
Von Andre_Java im Forum JavaAntworten: 3Letzter Beitrag: 18.12.07, 14:08 -
mit php c# klassen aufrufen
Von FJK im Forum PHPAntworten: 5Letzter Beitrag: 25.11.07, 00:52 -
Ein JFrame aus einem anderem JFrame aufrufen!
Von Lautsprecher im Forum JavaAntworten: 1Letzter Beitrag: 14.11.05, 09:37





Zitieren
Login





