Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
1
Events und Streams
2
Ein „Virtueller Verstärker“
(fast immer Daten) Stream Stream (fast immer Daten) Event (fast nie Daten)
3
Main Loop, go home main{ Repeat MyEvent=CheckNextEvent()
If(MyEvent=null) {Abarbeiten} Else {HandleEvent(myEvent)} Until(quit)
4
Klassische Abfragen GetStatus Event Source
Das Hauptprogramm fragt zu bestimmten Zeiten den Status aller möglichen EventSources ab. Hauptprogramm
5
Events und Listeners Event Event Source
Die EventSource muss den Listener kennen ! Listener
6
Beispiel ActionEvent Button ActionListener
addActionlistener(ActionListener) MyListener=ActionListener Falls was passiert: MyListener.actionPerformed() ActionListener actionPerformed(ActionEvent)
7
In unserem Fall FloatEvents BooleanEvents =? ActionEvents
StringEvents =? SocketEvents IntegerEvents =? AdjustmentEvents
8
FloatControl? FloatListener
9
FloatControl? ansprechendes Design intuitive Kontrollelemente
10
FloatLED FloatListener FloatPanel EventListener FloatKreis
Aufrufende Klasse Event FloatLED FloatListener erstellt Event FloatPanel extends Event EventListener erstellt Event FloatKreis Test erstellt FloatPanel(new...); FL erstellt FK->FC FC sendet ActionPerformed wenn setValue aufgerufen wird FloatListener sendet es zu allen angemeldeten Listenern setValue FloatControl
11
Events FloatListener Event Event Event FloatPanel Event
Aufrufende Klasse Event FloatPanel Event
12
public interface FloatListener extends EventListener{
package nano.awt; import java.util.*; public interface FloatListener extends EventListener{ public void FloatEventPerformed(double zahl); }
13
Klasse FloatDesign Definiert Farben der Kontrollelemente wie z.B. Zeiger-und Kreisfarbe, sowie -grösse Über Konstruktoren verschiedene Varianten vordefiniert Über Methoden auf einzelne Einstellungen zugreifbar weiteres Vorgehen und Zukunft der Klasse noch nicht klar, u.a. auch wegen Designern
14
Vorteile Möglichkeit der individuellen Gestaltung der Kontrollelemente (Farben) nur eine einmalige Definition nötig wenn gewünscht für alle Elemente gültig
15
Technische Spezifikationen von TCP / IP
16
Was ist ein „Socket“ ? Engl. „Stecker“, ist aber eher ein Kabel. Kommt von den Inet-Ports. Vollständige Adressierung besteht aus IP-Nummer und Port-Nummer Eine bidirektionale Verbindung zwischen zwei Internet-Ports.
18
Verbindungsaufbau Einer ist Server (Derjenige der auf die Verbindung gewartet hat) Einer ist Client (Derjenige der die Verbindung Initiiert hat) Handshaking Pakete werden ausgetauscht (vgl. UDP)
19
Virtuelle Kabel
20
Socket als Kabel LabView als schlechtes Vorbild
Wir nehmen Streams anstelle von Zahlen Jede Steckdose erhält den Befehl plug(DataLine) Sie hat eine Instanzvariable MyDestination
21
Abstrakte Klasse „DataLine“ ?
Zwei Implementierungen: TCP / IP Socket (InetAddr, Port, R/W) Pipe (Pointer auf Pufferbereich) (+) Schnellere Performance Eine einzige Implementierung: (+) Universeller, „The Net is the Computer“
22
Stecker-Metapher Signal kommt immer aus einer Dose (weiblich)
Anzeigegeräte (Oszi, Fluke, etc.) haben nur männliche Stecker Damit ist jeder Port männlich oder weiblich
24
Signale in „Sockets“ Elektronisches Signal ist eine Funktion R R t U(t) Das Signal soll sich selbst beschreiben. Beschreibung im Ortsraum Langsame Signale, (Tiefpass) Beschreibung im Fourier-Raum Schnelle Signale, (Hochpass) I I
25
Doppelstecker
26
Selbstbeschreibendes Signal
TCP/IP Päckchen von konstanter Grösse (Derzeit 256Byte) In JAVA: Werte von –128 bis !! Erstes Byte=-128 bedeutet Achtung: Beschreibung Zweites Byte gibt an, wieviele Pakete Beschreibung sind.
27
Wie beschreibt sich das Signal
XML-Text oder was???? Beschreibung soll beliebig offen sein.
28
Dokumentation und Kooperation mit einem Classpath
29
JAVADOC Auf Nanoworld2 unter D:\development\jdk1.3\docs\tooldocs\win32\javadoc.html (Muss noch veröffentlicht werden) Pakete müssen einzeln angegeben werden Bilder und gewisse Tags sind möglich.
31
Struktur unseres Classpath
nano.paketname.* Paketname sollte dem von java.lang entsprechen. Bsp. nano.awt.*;
32
Wer darf in den Classpath ?
Fertige Klassen (Das bedeutet: Jede Änderung muss mit einer Versionsänderung und dem zugehörigen Datum verbunden sein) Vollständig dokumentiert in Javadoc. Alle modifiers sind durchdacht. Alle Setter und Getter sind vorhanden.
33
Experiment Server Controller Datenbanken Client Client
34
Was für Klassen gibt es schon?
Beachte die strikte Trennung von Funktionalität und GUI Steuerung erfolgt über Kommandos GUI generiert Kommandos (vgl. TCL/TK unter UNIX)
35
Vorhandene Pakete Package nano.awt (Alles was mit GUI zu tun hat)
Package nano.net (Alles was mit Netzwerk und Streams zu tun hat) Package nano.compute (Alles was………..weiss auch noch nicht)
36
Das Paket nano.compute
37
Parser-Problem Wir brauchen eine Zuordnung String-Methode
Realisiert analog awt.event (Event-Methode)
40
Simulator API AddCommand(String, CommandExecutor) AddInt AddDouble
AddString AddBoolean SetBoolean(String, boolean), sb(), etc.
42
Sprachdefinition Basiswortschatz
Definiert in der Klasse nano.compute.Simulator: Set Parameter: name, value Beispiel: command=set, name=speed, value=131.5 Get Parameter: name Stop Parameter: keine Start
43
Nano.net
45
EventClient EventServer Local Port Local Port Remote IP,Port
EventSocketListener EventClient Local Port Remote IP,Port EventServer Local Port put put EventSocketListener plug StreamServer Local Port StreamClient Local Port Remote IP,Port
47
MySQL Pool (De- & Multiplexer) EventClient StreamClient EventClient
www StreamClient www EventClient www EventClient EventClient www StreamClient www StreamServer www EventClient www StreamClient www EventSocket- Listener
48
Pool_UI? Eigenarten der Tabellen in Java
49
Klasse Pool Verwaltung und Bereitstellung von Benutzerdaten, wie:
Anzahl der User im Pool Name, IP-Adresse und Portnummer User connected? addUser()
50
Pool_UI Graphische Benutzeroberfläche der Klasse Pool
53
Pool_UI Pool TableModel JTable Tabelle Frägt ab setUser erstellt
Über setUser werden die Daten in der Tabelle geändert. Tabelle
54
Tabellen Model - Viewer Konzept
55
Früher Daten DefaultTableModel JTable
56
Heute Model Viewer Daten TableModel
Einpacken in die methoden von TableModel und dann die ganzen/richtigen/wahren daten JTable übergeben TableModel Model Viewer
57
Zuständigkeit TableModel: Datenerstellung, -aufbereitung, -berechnung
JTable: Darstellung der Daten
58
Vorteile des Model-Viewer Konzeptes
skalierbar Einfachere Handhabung von dynamischen und editierbaren Tabellen Möglichkeit von verschiedenen Viewern Geschwindigkeit
59
How To
60
AbstractTableModel public abstract class AbstractTableModel extends Objects implements TableModel stellt default Implementierungen für die meisten Methoden des TableModel zur Verfügung kümmert sich um die Listener und Events
61
Erstellen einer Tabelle mithilfe des AbstractTableModels
Implementation von folgenden Methoden notwendig: public int getRowCount(); public int getColumnCount(); public Object getValueAt(int row, int column);
62
Weitere nützliche Methoden
public String getColumnName(int col) public String getColumnCount() / getRowCount public Class getColumnClass(int col) public boolean isCellEditable(int row, int col)
63
Erstellen einer 10*10 - Tabelle
TableModel beispielModel = new AbstractTableModel(){ public int getRowCount() {return 10;} public int getColumnCount() {return 10;} public Object getValueAt(int row, int column) {return new Integer(row*col);} } JTable table = new JTable(beispielModel); JScrollPane scrollpane = new JScrollPane(table);
64
TableCellRenderer Renderer: Zuständig für die Darstellung der Zellen
JTable besitzt Standard-Renderer Möglichkeit der Individuellen Darstellung von Zellen Nachteil: recht grosser Aufwand für Effizienz nötig
65
Verschieben der Kolonnen
66
Jede Kolonne eigene ID (default: Name der Kolonne)
Vorteile: Verschieben der Kolonnen ohne sich um die Änderung der Reihenfolge kümmern zu müssen -> JTable rechnet intern mit ID und stellt es richtig dar
67
Zusammenarbeit mit dem SmartSPM Projekt
Hardware-Programmierung
69
Stand der Dinge GUI.DLL HW.DLL Mainframe MIDDLE.DLL COMM.DLL TCP/IP
70
Measuring with Super-DAQTM (PCI or USB)
n-Channel Ultraslow Human Input m-Channel Ultraslow Human Output TerraMemory N-Channel Ultrafast AD 4096 bit, 1024 GHz M-Channel Ultrafast DA 4096 bit, 1024 GHz
71
Schichtmodell SuperDAQ
UI-Layer JAVA - TCL/TK – TCP/IP - HTTP Verarbeitungs- Layer JAVA C Fortran Funktionalitäts- Layer BF1.DLL BF2.DLL BF3.DLL BF4.DLL BF5.DLL Hardware- Layer HW.DLL Hardware (1 Layer) ADA
72
JAVA - TCL/TK – TCP/IP - HTTP
Virtueller SuperDAQ UI-Layer JAVA - TCL/TK – TCP/IP - HTTP Verarbeitungs- Layer JAVA C Fortran Funktionalitäts- Layer BF1.DLL BF2.DLL BF3.DLL BF4.DLL BF5.DLL Virtual SuperDAQ Hardware- Layer HW.DLL HW.DLL HW.DLL DSP Code DSP Code DSP Code Hardware (2 Layers) ADA ADA ADA
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.