events und streams. ein virtueller verstärker stream (fast immer daten) event (fast nie daten)...
Post on 05-Apr-2015
124 Views
Preview:
TRANSCRIPT
Events und Streams
Ein „Virtueller Verstärker“
Stream
(fast
immer D
aten)
Event(fast nie Daten)
Stream
(fast imm
er Daten)
Main Loop, go home
main{RepeatMyEvent=CheckNextEvent()If(MyEvent=null)
{Abarbeiten}Else
{HandleEvent(myEvent)}Until(quit)
Klassische Abfragen
EventSource
GetStatus
HauptprogrammDas Hauptprogramm fragt zu bestimmten Zeiten den Status aller möglichen EventSources ab.
Events und Listeners
EventSource
Event
ListenerDie EventSource muss den Listener kennen !
Beispiel
Button
ActionEvent
ActionListeneraddActionlistener(ActionListener)MyListener=ActionListener
Falls was passiert:MyListener.actionPerformed()
actionPerformed(ActionEvent)
In unserem Fall
• FloatEvents
• BooleanEvents =? ActionEvents
• StringEvents =? SocketEvents
• IntegerEvents =? AdjustmentEvents
FloatControl
• FloatControl?
• FloatListener
FloatControl?
• ansprechendes Design
• intuitive Kontrollelemente
Aufrufende Klasse
FloatKreis
FloatListener
EventListener
FloatPanel
FloatControl
erst
ellt
erst
ellt
setValue
FloatLED
Event
Event
Event
Event
extends
Events
EventFloatListener
FloatPanel
Aufrufende Klasse
EventE
vent
Event
Event
package nano.awt;import java.util.*;
public interface FloatListener extends EventListener{public void FloatEventPerformed(double zahl);
}
FloatListener
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
Vorteile
• Möglichkeit der individuellen Gestaltung der Kontrollelemente (Farben)
• nur eine einmalige Definition nötig
• wenn gewünscht für alle Elemente gültig
Technische Spezifikationenvon TCP / IP
Was ist ein „Socket“ ?
• Engl. „Stecker“, ist aber eher ein Kabel.Kommt von den Inet-Ports.
• Vollständige Adressierung besteht ausIP-Nummer und Port-Nummer
• Eine bidirektionale Verbindung zwischen zwei Internet-Ports.
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)
Virtuelle Kabel
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
Abstrakte Klasse „DataLine“ ?
• Zwei Implementierungen:– TCP / IP Socket (InetAddr, Port, R/W)– Pipe (Pointer auf Pufferbereich)– (+) Schnellere Performance
• Eine einzige Implementierung:– TCP / IP Socket (InetAddr, Port, R/W)– (+) Universeller, „The Net is the Computer“
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
Signale in „Sockets“
• Elektronisches Signal ist eine FunktionR R t U(t)
• Das Signal soll sich selbst beschreiben.
• Beschreibung im Ortsraum
– Langsame Signale, (Tiefpass)
• Beschreibung im Fourier-Raum
– Schnelle Signale, (Hochpass)
II
Doppelstecker
Selbstbeschreibendes Signal
• TCP/IP Päckchen von konstanter Grösse(Derzeit 256Byte)
• In JAVA: Werte von –128 bis +127 !!• Erstes Byte=-128 bedeutet
Achtung: Beschreibung• Zweites Byte gibt an, wieviele Pakete
Beschreibung sind.
Wie beschreibt sich das Signal
• XML-Text oder was????
• Beschreibung soll beliebig offen sein.
Dokumentation undKooperation miteinem Classpath
JAVADOC
• Auf Nanoworld2 unterD:\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.
Struktur unseres Classpath
• nano.paketname.*
• Paketname sollte dem von java.lang entsprechen.– Bsp. nano.awt.*;
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.
Datenbanken
Client Client
ServerController
Experiment
Was für Klassen gibt es schon?
Beachte die strikte Trennung vonFunktionalität und GUI
Steuerung erfolgt über Kommandos
GUI generiert Kommandos(vgl. TCL/TK unter UNIX)
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)
Das Paket nano.compute
Parser-Problem
• Wir brauchen eine Zuordnung String-Methode
• Realisiert analog awt.event(Event-Methode)
Simulator API
– AddCommand(String, CommandExecutor)– AddInt– AddDouble– AddString– AddBoolean– SetBoolean(String, boolean), sb(), etc.
Sprachdefinition Basiswortschatz
• Definiert in der Klasse nano.compute.Simulator:– Set
• Parameter: name, valueBeispiel: command=set, name=speed, value=131.5
– Get• Parameter: name
– Stop• Parameter: keine
– Start• Parameter: keine
Nano.net
EventClientLocal Port
Remote IP,Port
StreamClientLocal Port
Remote IP,Port
EventServerLocal Port
StreamServerLocal Port
EventSocketListener
EventSocketListener
put
put
plug
EventClient
Pool (De- & Multiplexer)
EventClient
StreamClient
EventClient
StreamClient
EventClient
StreamClient
EventSocket-Listener
EventClient
StreamServer
MySQL
www
www
www
www
www
www
www
www
Pool_UI
• Pool_UI?
• Eigenarten der Tabellen in Java
Klasse Pool
• Verwaltung und Bereitstellung von Benutzerdaten, wie:– Anzahl der User im Pool– Name, IP-Adresse und Portnummer– User connected?– addUser()
Pool_UI
• Graphische Benutzeroberfläche der Klasse Pool
Pool_UI Pool
TableModel
JTable
setUser
Tabelle
erst
ellt
Frägt ab
Tabellen
•Model - Viewer Konzept
Früher
DefaultTableModelDaten JTable
Heute
TableModel
Model Viewer
Daten
Zuständigkeit
• TableModel:
Datenerstellung, -aufbereitung, -berechnung
• JTable:
Darstellung der Daten
Vorteile des Model-Viewer Konzeptes
• skalierbar
• Einfachere Handhabung von dynamischen und editierbaren Tabellen
• Möglichkeit von verschiedenen Viewern
• Geschwindigkeit
How To
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
Erstellen einer Tabelle mithilfe des AbstractTableModels
Implementation von folgenden Methoden notwendig:
• public int getRowCount();
• public int getColumnCount();
• public Object getValueAt(int row, int column);
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)
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);
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
Verschieben der Kolonnen
• 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
Zusammenarbeit mit demSmartSPM Projekt
Hardware-Programmierung
Stand der Dinge
HW.DLL
GUI.DLL
MIDDLE.DLLCOMM.DLL
Mainframe
TCP/IP
Measuring with Super-DAQTM (PCI or USB)
N-Channel Ultrafast AD4096 bit, 1024 GHz
M-Channel Ultrafast DA4096 bit, 1024 GHz
n-Channel Ultraslow Human Input m-Channel Ultraslow Human Output
TerraMemory
Schichtmodell SuperDAQ
HW.DLL
BF1.DLL BF2.DLL BF3.DLL BF4.DLL BF5.DLL
ADA
Funktionalitäts-Layer
Hardware-Layer
Hardware(1 Layer)
Verarbeitungs-Layer
UI-Layer JAVA - TCL/TK – TCP/IP - HTTP
JAVA C Fortran
Virtueller SuperDAQ
DSP Code
ADA ADAADA
DSP Code DSP Code
HW.DLL
BF1.DLL
HW.DLL HW.DLL
BF2.DLL BF3.DLL BF4.DLL BF5.DLL
Virtual SuperDAQ
JAVA - TCL/TK – TCP/IP - HTTP
JAVA C Fortran
Funktionalitäts-Layer
Hardware-Layer
Hardware(2 Layers)
Verarbeitungs-Layer
UI-Layer
top related