#$K+ OSZI – Oszilloskop-Programm
Dieses Programm ist ein Funktionsgenerator, ein Vielkanal-Oszilloskop (64 Kanäle), ein Transientenrekorder, ein Datenlogger, ein Spektrum- sowie gleichzeitig ein Logikanalysator – wenn's fertig ist. Zur Datenaufzeichnung dient eine Soundkarte oder die Conrad DSO220-Karte. Wegen der Zugänglichkeit des Quelltextes und dem DLL-Konzept (geplant!) können beliebige Datenquellen vom Anwender hinzugefügt werden.
Als herausragendes Merkmal ist eine kinderleichte, bildschirmorientierte Bedienung konzipiert, die ohne oszilloskop-typische Einstell-Organe auskommt.
Wie es sich für ein Oszilloskop gehört ist die Bildschirmaktualisierung rasend schnell (Echtzeit ist angestrebt) und flackerfrei. Beschränkungen durch die begrenzte Bildwiederholrate werden durch intelligente Mehrfach-Kurvenzeichenroutinen kaschiert (geplant).
Zur Prozessautomatisierung steht eine DDE-Schnittstelle zur Verfügung.
Der Quelltext ist in jedem Speichermodell compilierbar, für Windows 3.1 bis hin zur Unicode-Version.
Dieses Programm ist total unfertig – Konstruktive Bug-Berichte bitte an * henrik.haftmann@e-technik.tu-chemnitz.de.

Zum Programm
Vorwort
Funktionsprinzip
Erforderliche Hard- und Software
Bedienung
Hauptfenster
Dialoge
Tastatur-Belegung
DDE
Benutzerdefinierte Kodierung erstellen
Hilfe OSZI © h#s (10/04)

+$#K Vorwort
Geschichte
Stein des Anstoßes war die katastrophal langsame Oszilloskop-Software der DSO220-Karte von Conrad. Das Warten auf Updates zur international als „Scope Card 220“ verkauften koreanischen Karte brachte nichts.
Sicher hat es einigen Hobby-Programmierern unter den Fingern gebrannt, dafür etwas ordentliches zu programmieren. Dummerweise lohnt sich das kaum, denn diese Einsteckkarte hat grauenhafte technische Daten und ist zudem für neuere Rechner ohne ISA-Steckplatz nicht geeignet.
Gegen letzteres Übel wurde eine Lösung ersonnen, ISA-Karten ohne Software-Änderung(!) am Druckerport zu betreiben (siehe WWW-Link). Dem Aufbauvorschlag fehlt jedoch zurzeit die XP-Unterstützung. Aufgegriffen und getestet hat's auch niemand.
Es wurde ein BeLL-Schülerprojekt erarbeitet, mit dem Ziel, diese Karte mit einer ordentlichen Software zum Unterricht zu verwenden (Darstellung von Lade/Entladekurven mittels Laptop und Beamer). Wegen mangelnder Programmiererfahrung verlief dieses Projekt im Sand.
Zur Vorbereitung der BeLL habe ich alles verfügbare Informationsmaterial bei Conrad angefordert und die vorhandene Software so tief wie möglich untersucht, um der Funktion der Ein/Ausgabeports der Karte auf die Schliche zu kommen. Die gelieferte Dokumentation war hierzu schlicht unbrauchbar. Siehe WWW-Link.
Ich selbst habe nicht den Fehler gemacht, diese Karte zu kaufen; ich hatte ein richtiges Oszilloskop gekauft. Nun aber liegt die Karte ungenutzt herum, und da ein Freund diese Karte hat (ha, Fehler gemacht!) gab es mir den Antrieb zum Losprogrammieren.
Weiterhin gibt es kein wirklich vernünftiges Programm, um die Soundkarte als Oszilloskop zu verwenden; das „beste“ dieser Art ist XXX, mit einigen erheblichen Einschränkungen. Eine Soundkarte hat gute technische Daten, abgesehen vom Frequenzgang.
Inzwischen gibt es sogar eine USB-Version der DSO220, offenbar mit den gleichen schlechten technischen Daten wie das ISA-Modell. Eine DLL kann ich dafür erst schreiben, wenn Dokumentation zum USB-Interface bekannt ist. Möglicherweise werde ich dazu vom 14-Tage-Rückgaberecht Gebrauch machen…
Zielstellung
Siehe auch Startseite!
Oszilloskop und Logikanalysator sind in ihrer Funktion sehr nahe verwandt. Ein Transientenrekorder ist nichts weiter als ein Oszilloskop mit immenser Speichertiefe (also ein Audiorecorder, wenn's für Tonfrequenzen ist). Daher liegt es nahe, diese Funktionen in ein Programm zu integrieren.
Für einen Logikanalysator typische Aktionen wie das Zusammenfassen von Bits zu einem Bus sind ja eigentlich auch an einem Oszilloskop brauchbar. Bei 64 Kanälen will keiner jeden einzelnen Kanal mit der Maus herumschubsen; hier ist eine wirkungsvolle Gruppierung gefragt.
Die Spektralanalyse erledigen nahezu alle Digitaloszis mittels FFT „ganz nebenbei“; damit wird er zum Spektrumanalysator. (Zur genauen Spektralanalyse per FFT sind sehr viele Samples nötig; ein gewöhnliches Oszilloskop kann daher einen Spektrumanalyzer [das nicht mit FFT arbeitet] nicht ersetzen!)
Zum Laden und Speichern der aufgezeichneten Daten wird schlicht das WAV-Format „missbraucht“, es unterstützt von selbst bis zu 65535 Kanäle und bis zu reichlich 4 GSa/s; genug Luft für den PC-Gebrauch. Wenn's „rein zufällig“ 2 Kanäle und audiotypische Sampleraten sind, kann diese WAV-Datei (mit anderer Erweiterung zwecks Programmzuordnung) eben auch mit Sound-Editoren bearbeitet und wiedergegeben werden.
Ein Datenlogger ist wiederum ein Transientenrekorder mit extrem geringer Samplerate. Bis auf die veränderte Kurvendarstellung und evtl. ein anderes Speicherformat ist alles dasselbe.
Der Funktionsgenerator hat mit all den aufzeichenden Messgeräten nichts zu tun. Es wäre aber frevelhaft, die Soundkarte (oder per DLL wiederum irgendein externes Gerät) nicht als solchen zu gebrauchen; man braucht diese Geräte sowieso oft zusammen.

+$#K Funktionsprinzip
Ein Oszilloskopprogramm ist nichts anderes als eine Waveform-Anzeige, mit einem gewichtigen Zusatz: dem Triggersystem!
So unscheinbare Randprobleme wie Geschwindigkeit, extrem unterschiedliche Sampleraten oder mathematische Verknüpfungen wie X/Y-Betrieb, 2. Zeitbasis… machen den Programmieransatz zur Mammutaufgabe.

+$#K Hard- und Software-Erfordernisse
Dieses Programm benötigt:
·	PC ab 286, empfohlen 486 ab 100 MHz.
(Falls jemand nicht weiß, was das ist, und das hier liest, hat sicherlich das, was ich meine.)
·	Windows 3.1 (Standard-Modus) oder höher
(Weiß noch jemand, was das war? Praktisch gesprochen, es läuft mit jedem Windows.)
·	eine Soundkarte oder eine sonstige unterstützte Datenquelle
Zum Demobetrieb ist eine „frei programmierbare Datenquelle“ eingebaut, die zum Test/Vorführung auch ohne Soundkarte gedacht ist.

Dieses Programm gibt es in 3 Kompilaten:
·	OSZI.EXE für Windows 3.1 (16 bit)
·	OSZIA.EXE für Windows 95, 98, Me (32 bit, ANSI)
·	OSZIW.EXE für Windows NT, 2000, XP, 2003, Longhorn (32 bit, Unicode)
Hinzu kommen ggf. verschiedene sprachspezifische Ressourcen-Dateien. Vorgabesprache ist Deutsch!!
Während der Entwicklung taucht OSZI32.EXE auf. Diese mit BorlandC erstellte 32-bit-ANSI-Version läuft auf allen drei Plattformen dank Win32s.

	Windows 3.x	Windows 95/98/Me	Windows NT/2000/XP
OSZI.EXE	OK	OK	OK
OSZIA.EXE	—	OK	OK
OSZIW.EXE	—	—	OK (mit Unicode)
OSZI32.EXE	mit Win32s	OK	OK

Die 16-bit-Unterstützung (OSZI.EXE) ist für die nähere Zukunft nicht mehr vorgesehen!
#6 Performance-Tipps
Sie können sich beruhigt zurücklehnen, wenn Ihnen die Titelleiste 30 und mehr Bilder pro Sekunde bescheinigt. Das ist genug für Ihr Auge, mehr sieht es sowieso nicht; Ihr Rechner ist schnell genug. Voraussetzung, Ihre Triggerbedingung ist überhaupt so flink (Netzbrummen bspw. ist viel langsamer).

Andernfalls versuchen Sie folgende Tipps:
·	Verkleinern Sie das Oszi-Fenster, machen Sie's nur so groß wie nötig
·	Schalten Sie doppelte und dreifache Pufferung ab (erreichbar im Menü unter Anzeige…)
·	Benutzen Sie einen Bildschirmmodus mit weniger Farben
Bug: OSZI.EXE hat noch keine Palettenunterstützung für den 256-Farben-Modus.
·	Benutzen Sie weniger Stützstellen für die Kurve
Bug: Sie können das zurzeit gar nicht einstellen.

+$#K Hauptfenster
Das Programm präsentiert sich als Oszi-Bildschirm, welches sämtliche Einstellmöglichkeiten auf einen Blick serviert. Beim Draufziehen von Dateien (Drag'n'Drop) werden diese ausgegeben. Bug: Märchen!

{bmc oszi.shg}
Klicke mit der Maus auf Dialogelemente, oder drücke TAB und ENTER, um detaillierte Hilfe zu erhalten.

#Frequenz-Anzeige
Zeigt die Aktualisierungsgeschwindigkeit oder den Betriebszustand (bspw. „angehalten“) an.
Siehe auch: Performance

#Menü
Unter „Oszilloskop“ finden Sie alles, was Sie auch an einem Oszilloskop erwarten.
Unter „Bearbeiten“ eher das, was bei einem Oszi unüblich ist.

#Gitter
Zugehörige Einstellungen unter „Bearbeiten/Anzeige“.
Siehe Anzeige-Gitter.

#Systemfeld für Zeitbasis
Bringt per rechter Maustaste ein Kontextmenü.
Später Ausschalten des zugehörigen Readouts.

#Readout Zeitbasis (X)
Bringt per rechter Maustaste auf entsprechende Zahl(!) Kontextmenü.

#Zeitbasis (X) „zusammenziehen“
Knopf vergrößert(!) den Ablenkkoeffizienten 1-2-5 und drückt die Signaldarstellung in X-Richtung.

#Zeitbasis (X) „expandieren“
Knopf verkleinert(!) den Ablenkkoeffizienten 1-2-5 und expandiert die Signaldarstellung in X-Richtung.

#Systemfeld für Trigger
Bringt per rechter Maustaste ein Kontextmenü.
Später Ausschalten des zugehörigen Readouts.

#Readout Trigger
Bringt per rechter Maustaste auf entsprechende Zeichenkette(!) Kontextmenü.

#Trigger-Schaltfeld (Run/Stop)
Knopf lässt Signaldarstellung laufen oder anhalten.

#Trigger-Kreuz
Symbolisiert Prätrigger (-X) und Triggerpegel (Y). Verschieben in beide Richtungen mit der Maus. Rechte Maustaste = Trigger-Kontextmenü.

#Masse-Symbol
Symbolisiert Nullpegel für den jweiligen Kanal. Verschiebbar mit Maus in Y-Richtung. Rechte Maustaste = Kanal-Kontextmenü.

#Signal Kanal Y1
Zugehöriges Massesymbol in gleicher Farbe.

#Signal Kanal Y2
Zugehöriges Massesymbol sowie Triggerkreuz (wegen Triggerquelle = Y2) in gleicher Farbe.

#Systemfeld für Kanal
Bringt per rechter Maustaste ein Kontextmenü.
Später Ausschalten und Verschieben des zugehörigen Readouts.

#Readout Kanal Y1
Bringt per rechter Maustaste auf entsprechende Zeichenkette/Symbol Kontextmenü.
Hinterlegung zeigt Fokussierung an!

#Readout Kanal Y2
Bringt per rechter Maustaste auf entsprechende Zeichenkette/Symbol Kontextmenü.
Fehlende Hinterlegung zeigt Nicht-Fokussierung (Tastatur) an!

#Signaldarstellung (Y) „zusammenziehen“
Knopf vergrößert(!) den Ablenkkoeffizienten 1-2-5 und drückt die Signaldarstellung in Y-Richtung.

#Signaldarstellung (Y) „expandieren“
Knopf verkleinert(!) den Ablenkkoeffizienten 1-2-5 und expandiert die Signaldarstellung in Y-Richtung.

+$#KDialoge
Die meisten Dialoge sind moduslos (»modeless«). Man kann mit ihnen und dem Hauptfenster gleichzeitig arbeiten. Deren Position wird gespeichert. Beim Beenden und Neustart des Programms werden sogar beim Schließen offene Dialoge wieder geöffnet.
In vielen Fällen werden Eingaben sofort umgesetzt, nach einer kurzen Zeit (um eine mehrstellige Zahl eingeben zu können).
DDE-beobachtete Einstellwerte (DDEADVISE) werden durch gelb hinterlegte Eingabefelder kenntlich gemacht.
DDE-Pokes greifen direkt zu jedem geöffneten Dialog durch. So kann man die Automatisierung auch verfolgen.
Rote Hintergrundfarben zeigen fehlerhafte Eingabedaten an.
Graue Hintergrundfarben zeigen an, dass sich zwischen mehreren Kanälen einer Gruppe die Werte unterscheiden.

Grundeinstellungen
Anzeige
Datenquelle: Funktionsgenerator
Datenquelle: DSO220
Datenquelle: Soundkarte
Datenquelle: Parallelport
Zeitbasis
Trigger
Kanal
Gruppe

#gelb wie Gelbsucht…
Die Farbe für die Hinterlegung von DDE-beobachteten Eingabezeilen ist nur gelb, wenn die Standard-Hintergrundfarbe weiß ist. Die modifizierte Hintergrundfarbe ergibt sich aus der bitweisen Exklusiv-ODER-Verknüpfung der Standard-Hintergrundfarbe mit der Farbe Blau. Daher wird aus Gelb Weiß, aus Schwarz Blau usw.
Ähnlich verhält es sich mit der roten (= fehlerhafte Angabe) und grauen (= ungleiche bei mehreren Kanälen) Hintergrundfarbe.

+$#K Grundeinstellungen
Dieser Dialog ist modal. Die Einstellungen sind teilweise erst nach Neustart des Programms wirksam!

Kanalnamen-Präfix
Zählweise
Zeichen für Mikro
Maximal gelistete Kanäle
Dezimaltrennzeichen
Ausrichtung
Einheiten-Vorsätze

+$#K Kanalnamen-Präfix
Dieses Programm unterstützt eine Vielzahl von Kanälen. Deshalb erscheint eine Buchstaben-Zählweise (A,B, X,Y) älterer Oszilloskope hier nicht sinnvoll. Kanäle werden durch einen Buchstaben, gefolgt von einer Zahl, bezeichnet.
Vorgabe:	Y
Speicherort:	Zusammen mit Zählweise als C-Formatstring unter [Elbe] KanalFormat
DDE:	–
Experte:	Chinesische und Sonderzeichen sind in der Unicode-Version zulässig, werden aber zurzeit noch nicht korrekt gespeichert.

+$#K Zählweise
Dieses Programm unterstützt eine Vielzahl von Kanälen. Es kann von null oder ein, dezimal oder hexadezimal, mit oder ohne führende Null (2stellig) gezählt werden.
Vorgabe:	dezimal, ohne führende Null, ab 1
Speicherort:	Zusammen mit Präfix als C-Formatstring unter [Elbe] KanalFormat
DDE:	–
Experte:	KanalFormat in der OSZI.INI kann auch von Hand für beliebige Zählweisen und Startnummern geändert werden! Entsprechende Felder sind dann uninitialisiert und werden auch bei OK nicht überschrieben.
Auch eine Buchstaben-Zählweise ist mittels %c und Startwert 41 (für "A") möglich.
Für die verschiedenen Formatanweisungen siehe wvsprintf in der Windows-API.

+$#K Zeichen für Mikro
Nicht in jedem Zeichensatz ist das Zeichen µ enthalten. Dafür ist genau ein Ersatzzeichen möglich. Außer dem kleinen u sind keine Zeichen des ASCII-Zeichensatzes zugelassen!
Vorgabe:	µ
Speicherort:	unter [Elbe] Mikro
DDE:	–
Experte:	Chinesische Zeichen sind in der Unicode-Version zulässig…

+$#K Maximal gelistete Kanäle
Normalerweise gibt es im Menü und auf dem Oszi-Schirm für jeden Kanal einen Menü-Eintrag. Bei bspw. 64 Kanälen ist das Unsinn; dann kann hiermit eine Grenze gezogen werden. Die übrigen Kanäle sind (nur) über den Kanal-Dialog zugänglich.
Vorgabe:	16
Speicherort:	unter [Elbe] MaxKanalMenü
DDE:	–
Experte:	Gelistet werden die zuletzt genutzten Kanäle. [BUG: Sollen gelistet werden.]

+$#K Dezimaltrennzeichen
Als ein gesittetes Programm arbeitet dieses mit den Vorgaben der Systemsteuerung. Bisweilen ist das jedoch hinderlich, bes. beim Datenaustausch, dann kann die Windows-Vorgabe durch Punkt oder Komma überschrieben werden.
Vorgabe:	Windows-Vorgabe (meistens Komma)
Speicherort:	unter [Elbe] Dezimaltrenner, ? entspricht Windows-Vorgabe
DDE:	Das Zeichen ist bei DDEREQUEST wirksam!
Experte:	In der OSZI.INI darf auch ein beliebiges anderes Zeichen stehen! Kein Auswahlfeld im Dialog ist dann ausgewählt, und bei OK wird nicht überschrieben.
Bei Eingaben wird stets dieses Zeichen als auch Komma oder Punkt akzeptiert.

+$#K Ausrichtung
Es geht hierbei um die Ausrichtung des Erscheinungsbildes des Hauptfensters, wo per Vorgabe die Readouts erscheinen. In semitischen Ländern wird eine Rechts-nach-Links-Ausrichtung bevorzugt.
Als ein gesittetes Programm arbeitet dieses mit den Vorgaben der Systemsteuerung. Bisweilen ist das jedoch lästig, dann kann die Windows-Vorgabe überschrieben werden.
Vorgabe:	Windows-Vorgabe (meistens links-nach-rechts) [BUG: Tot.]
Speicherort:	unter [Elbe] Ausrichtung?
DDE:	–

+$#K Einheiten-Vorsätze
Für die Y-Werte ist ein automatischer Einheitenvorsatz-Generator aktiv, der von Atto bis Penta alle Vorsätze kennt. Kennen Sie diese? Nein? Dann können Sie hiermit die Liste einschränken.
Bei der Angabe aller Einheiten und Vorsätze ist korrekte Groß/Kleinschreibung wichtig!
Vorgabe:	p..M (Die beiden Punkte sind hierbei syntaktisch erforderlich!)
Speicherort:	unter [Elbe] Vorsätze
DDE:	–
Experte:	Bei Begrenzung auf µ muss dieses Zeichen mit dem Zeichen für Mikro übereinstimmen. (?)

+$#KAnzeige
Dieser Dialog ist moduslos. Die Einstellungen werden sofort übernommen.
(Bug: Ein Wechsel zum Hauptfenster ist zurzeit nur per Maus möglich.)
(Bug: Kontextsensitive Hilfe, bspw. per F1, nicht implementiert.)

Linien
XorPut
Doppelte Pufferung
Dreifache Pufferung
Gitternetz, Ticks, Gitternetz-Farbe
Hintergrund-Farbe

+$#KLinien (statt Punkte)
Abtastwerte liegen naturgemäß als zeit- und wertdiskrete Punkte vor. Die übliche Darstellung erfolgt jedoch unter Verbindung derer durch Verbindung mit Linien (Vertexen) unter Annahme linearer Interpolation.
Vorgabe:	þ ein (Linien)
Speicherort:	unter [Elbe] Anzeige Bit 0?
DDE:	–
Experte:	Die Punktdarstellung ist bisweilen undeutlicher, jedoch ehrlicher.
Bug: Die Anzahl der Punkte kann zurzeit nicht beeinflusst werden!

+$#KXor-Ausgabe (Quatsch)
Siehe Titel: dieser Schalter ist Quatsch! Bitte prüfen!
Vorgabe:	¨ aus (Copy-Ausgabe)
Speicherort:	unter [Elbe] Anzeige Bit 1?
DDE:	–
Experte:	Siehe R2_COPYPEN und R2_XORPEN im Windows-SDK.

+$#KDoppelte Pufferung (flackerfrei)
Schrecklich, wenn Oszilloskop-Programme auch noch flackern!
Und wie grazil manche das Problem „lösen“ (soll ich dazu mal eine BeLL zitieren?)
Dabei ist's ein alter Hut, steht in jedem Anfänger-Grafikbuch…
Vorgabe:	þ ein (flackerfrei)
Speicherort:	unter [Elbe] Anzeige Bit 2?
DDE:	–
Experte:	Nachteil der doppelten Pufferung ist der Speicherverbrauch für die erforderliche Hintergrund-Bitmap. Unverständlicherweise ist auch die Performance deutlich geringer, besonders im True-Color-Modus und bei großem Fenster.

+$#KDreifache Pufferung (betrifft Hintergrund-Bild)
Da bei der Oszillogramm-Darstellung viele Teile des Bildes unverändert bleiben, das Gitternetz und das Readout nämlich, liegt es nahe, diese in einer weiteren Bitmap vorzuhalten. Dank „zu genialer“ Programmierung ist das beinahe ohne positiven Effekt; die Zeichenroutinen arbeiten allesamt zu schnell. Das könnte sich bei 'zig Kanälen ändern…
Vorgabe:	¨ aus (kein drittes Bitmap)
Speicherort:	unter [Elbe] Anzeige Bit 3?
DDE:	–
Experte:	Nachteil der dreifachen Pufferung ist der Speicherverbrauch für die weitere Hintergrund-Bitmap.

+$#KGitternetz, Ticks, Gitternetz-Farbe
Sie können das Gitternetz, die Ticks (Gitter-Unterteilungen) und deren Farbe festlegen.
Vorgabe:	Gitter: þ ein, 10x8
Ticks: þ ein, 5x5
Farbe: hellgrün
Speicherort:	unter [Elbe] Anzeige Bit 4,5?, Kästel, Ticks, Gitternetz
DDE:	–
Experte:	Das Ausschalten des Gitters führt zu keiner nennenswerten Geschwindigkeitssteigerung. Das Gitter ist Hameg-Oszilloskopen nachempfunden.
„Schlaue Gitter“, die sich an die Koeffizienten anpassen und Beschriftungen aufweisen, sind vorgesehen.

+$#KHintergrund-Farbe
Die Hintergrundfarbe des Oszilloskop-Fensters ist festlegbar.
Bug: Ist erst bei Programm-Neustart wirksam.
Vorgabe:	weiß
Speicherort:	unter [Elbe] Hintergrund (als HTML-Farbe)
DDE:	–
Experte:	Benutzen Sie Weiß, wenn Sie an Bildschirmausdrucken interessiert sind.
Benutzen Sie Schwarz, um die Kanal-Farben besser leuchten zu lassen, besonders beim Vielkanal-Betrieb.
Benutzen Sie möglichst keine anderen Farben.

+$#KDatenquelle: Funktionsgenerator
Dieser Dialog ist KOMPLETT FUNKTIONSLOS!
(Bug: Ein Wechsel zum Hauptfenster ist zurzeit nur per Maus möglich.)

Kanal
Frequenz
Amplitude
Offset
Kurvenform
Tastverhältnis
Rauschen

#Kanal
Die Einstellungen gelten für den hiermit ausgewählten Kanal.
Die Kanalzahl kann zurzeit nicht festgelegt werden.

#Frequenz
Frequenz des Funktionsgenerators (Grundschwingung). Einheiten Hz, kHz, MHz möglich.
Muss größer Null sein.
Vorgabe: 1 kHz

#Amplitude
Amplitude in Volt Spitze-Spitze. Einheiten mV, V möglich.
Null schaltet den Funktionsgenerator-Kanal quasi ab.
Vorgabe: 1 V

#Offset
Gleichspannungs-Anteil. Einheiten mV, V möglich.
Null für Gleichspannungsfreiheit (reine Wechselspannung).
Gleichspannungsfreiheit gilt nicht bei Rechteck mit Tastverhältnis ¹ 50 %.
Vorgabe: 0 V

#Kurvenform
Auswählbar sind Sinus, Dreieck oder Rechteck.
Mittels Tastverhältnis wird aus Dreieck Sägezahn, aus Rechteck Nadelimpulse.
Vorgabe: Sinus

#Tastverhältnis
Angebbares zeitliches Verhältnis der steigenden zur fallenden Flanke (Dreieck) bzw. dem High- und dem Low-Teil (Rechteck).
Nicht verfügbar, wenn Sinus ausgewählt ist.
Vorgabe: 50 %

#Rauschen
Rauschanteil (weißes Rauschen) als Effektivwert. Einheiten V, mV, µV möglich.
Vorgabe: 0 V

+$#KDatenquelle: DSO220
Dieser Dialog ist FUNKTIONSTÜCHTIG!
(Bug: Ein Wechsel zum Hauptfenster ist zurzeit nur per Maus möglich.)

Adresse
Jumper
USB

Nehmen Sie den Hinweis am Fuß des Dialogs unbedingt ernst!

#Adresse
Wählen Sie die richtige Adresse Ihrer Karte. Die Jumperbelegung passt sich automatisch an.
Vorgabe: 280h
Hinweis: Die Karte benutzt 8 aufeinanderfolgende Adressen.

#Jumper (= Steckbrücken)
Setzen Sie die Jumper so wie sie auf der Karte stecken. Die passende Adresse wird sofort mit angezeigt.
Vorgabe: alle Jumper gesteckt
Hinweis: Stecken Sie nicht benötigte Jumper auf nur einen Stift auf, um sie nicht zu verlieren.

#USB
Haben Sie die USB-Version der Karte, benutzen Sie dieses Schaltfeld. Sie können m. W. nur ein Gerät anschließen.
Vorgabe: aus
Hinweis: Gibt's noch gar nicht! Wird niemals in der 16-bit-Version unterstützt!

+$#KDatenquelle: Soundkarte
Dieser Dialog ist TEILWEISE FUNKTIONSTÜCHTIG!
(Bug: Ein Wechsel zum Hauptfenster ist zurzeit nur per Maus möglich.)

Kalibrierung
Mixer
Kopplung

Tastspitzen
Um die Soundkarte als Oszi verwenden zu können, ist es zweckmäßig, sich zwei geeignete Tastspitzen selbst an einen Klinkenstecker zu bauen. Richtige Tastköpfe sind Overkill für Soundkarten.
Als zweckmäßig hat es sich erwiesen, (DDR-)Klepse ans Ende von je 2 m hochflexiblem abgeschirmten Kabel (auch aus DDR-Zeiten) anzulöten. Also gar keine »Spitzen«. So hat man die Hände frei. Bei Reichelt gibt's da nichts vernünftiges.
Alternativ lassen sich aus alten Kugelschreibern Tastköpfe nachbilden. Als Spitze geht eine (Edeka?) Rouladennadel prima. (Die Rouladennadel schön spitz lassen - und weit herausgucken lassen – Sie nehmen nie wieder „richtige“ Tastköpfe, ehrlich! Sie können feste Lackschichten durchpieksen und im dicksten Drahtverhau messen.) Für die freien Hände fertigen Sie zwei bis vier Kleps-Leitungen; dünne Strippen mit je einem Mini-Kleps am Ende. Bloß keine Bananenstecker!
Auch „lose“ Drahtenden sind gut, wenn man sowieso immer einen heißen Lötkolben in der Nähe hat.
Wegen des geringen Eingangswiderstandes von Soundkarten (Richtwert: 10 kW) sind fest eingebaute Spannungsteiler eine gute Idee.
Weil Soundkarten ohnehin keine hohen Frequenzen verarbeiten, ist der Aufbau unkritisch. Aber als Klinkenstecker sollte nur eine hochwertige Ausführung zum Einsatz kommen.

#Kalibrierung
Sie müssen es irgendwie schaffen, dass die Soundkarte wirklich Volt misst; sonst eignet sie sich nur als „Schätzkeule“ zur Bewertung der Kurvenform u. ä.
Vorgabe: ?
Hinweis: Ein geeigneter Funktionsgenerator ist die Soundkarte selbst! Man muss dann nur noch die Höhe der Wechselspannung messen. Multimeter zeigen üblicherweise Effektivwert an, wenn die Wechselspannung sinusförmig ist. Dabei sollte die Frequenz nicht allzu hoch sein; einfache Multimeter knicken schon bei 1 kHz ab. Ein Richtwert ist vielleicht 200 Hz.

#Mixer
Weil der Eingangsmixer („Lautstärkesteller“) die Kalibrierung stark beeinflusst und sein (unbeabsichtigtes?) Verstellen kaum oder (nach Murphy stets) zu spät bemerkt wird, kann dieses Programm alle im Eingangspfad befindlichen Mixer-Einstellungen fixieren (festnageln) und beim Beenden des Programms wiederherstellen.
Vorgabe: aus
Hinweis: Ist zurzeit in Entwicklung! Wird in der 16-bit-Version systembedingt nicht unterstützt.

#Kopplung
Soundkarten haben Eingangskondensatoren, damit ungewollte (und ohnehin unhörbare) Gleichspannungen nicht den A/D-Umsetzerbereich einschränken – oder gar die Soundkarte zerstören. Als Oszilloskop betrieben sind sie aber sehr störend! Findige Bastler sollten sie deshalb überbrücken. Als Schutzwiderstands-Wert würde ich 100 W ansetzen.
Vorgabe: AC (also unmodifiziert)
Hinweis: Eine Soundkarte funktioniert als solche auch ohne Kondensatoren! Vorsichtige Naturen bauen einen zweipoligen Schalter ein, um die Kondensatoren bei Bedarf wieder zuzuschalten.

+$#KDatenquelle: Parallelport
Diesen Dialog GIBT'S NOCH GAR NICHT!

Adresse
USB

Am Parallelport wird nicht etwa ein A/D-Wandler angeschlossen (geht aber auch), sondern es wird direkt als Logikanalysator benutzt! 16 von 17 Anschlüssen können benutzt werden; allerdings müssen die drei (der vier) Steuerleitungen, wenn man sie wirklich braucht, sehr niederohmig angesteuert werden.
Die maximale Abtastfrequenz beträgt ca. 100 kHz (Lückenfreiheit nicht garantiert); damit lassen sich bspw. bei Mikrocontrollern langsame serielle Ping-Pong-Busse überprüfen.

#Adresse
Wählen Sie die Adresse für Ihr Parallelport. USB-Konverter gehen hierbei nicht!
Vorgabe: 378h (LPT1)
Hinweis: Heben Sie sich einen Rechner mit richtigem Druckerport auf!

#USB
Der USB-zu-LPT-Umsetzer USB2LPT (siehe WWW-Link), aber nur dieser, enthält den frei programmierbaren EZUSB-Chip AN2131 mit 8051-Kern. Mit ihm ist das gleiche möglich, alles sind echte Eingänge, und die maximale Abtastfrequenz kann 500 kHz (8 bit: 1 MHz) betragen; mehr schafft der USB 1.1 nicht.
Mit dem FX2 des WWW-Projekts sind sogar 24 MHz drin. Mit garantierter Lückenfreiheit.
Vorgabe: aus
Frage: Wer programmiert's aus?

+$#KZeitbasis (X-Ablenkung)
Dieser Dialog ist moduslos. Die Einstellungen werden mit kurzer Verzögerung übernommen, wenn „Automatisch übernehmen“ aktiviert ist.
(Bug: Die Samplerate kann nicht eingestellt werden. Variable Stützstellen sind noch gar nicht implementiert.)

Zeitbasis-Auswahl
Zeitbasis
Abtastrate
Verschiebung
Stützstellen
Farbe (Erklärung trivial)

Auch bei aktivierter Rechts-Nach-Links-Orientierung wird der Graf von links nach rechts gezeichnet.

+$#KZeitbasis-Auswahl
Das Programm wird bis zu vier Zeitbasen unterstützen.
Normalerweise wird eine Zeitbasis „A“ ausreichen; mit den anderen können Sie Ausschnitte aus der Darstellung der ersten Zeitbasis sehen. Hier können Sie Zeitbasen erzeugen oder auch wieder löschen.
Das Eingabefeld ist nicht verfügbar, wenn alle Kanäle im X/Y-Betrieb arbeiten.
O	Vorgabe:	Nur eine Zeitbasis namens A
<	Speicherort:	?; DDE: –
Experte:	Die Abtastrate gibt es nur bei der ersten Zeitbasis; bei allen anderen die Verschiebung. (Bug: Alles Märchen!)

+$#KZeitbasis – Ablenkkoeffizient
Die Zeitbasis kann freizügig eingestellt werden; wer will kann auch „krumme“ Werte eingeben. Eine „Ungefähr“-Einstellung („VAR“, „Kleiner-als“) realer Oszilloskope erübrigt sich am Computer; er kann immer „genau“ rechnen. Der Auf/Abwärtspfeil schaltet in üblichen 1-2-5-Schritten.
Das Eingabefeld ist nicht verfügbar, wenn alle Kanäle im X/Y-Betrieb arbeiten.
O	Vorgabe:	–
7	TB-Fokus:	A, B, C, D
7	Tastatur:	Zum Auf/Abwärtsschalten horizontale Pfeiltasten benutzen!
8	Maus:	Im Readout: Mit rechter Maustaste anklicken.
<	Speicherort:	unter [x] Ablenkung; DDE: Thema: x, Element: Ablenkung
Experte:	Erste Zeitbasis: Die Abtastrate wird auf Basis der gewünschten Stützstellen-Zahl automatisch angepasst. Wird die Abtastrate von der Hardware begrenzt, wird die Stützstellenzahl angepasst. (Bug: Alles Fantasterei!)
Weitere Zeitbasen: Die Stützstellen-Zahl wird entsprechend angepasst.
Negative Werte sind unzulässig.

Der Schalter „Automatische Anpassung“ aktiviert die Aufzeichnung beliebig langer Wellenformen mit expandierender Sample-Zahl (Datenlogger). Damit eigent sich dieses Programm notfalls als Audio- oder Videorekorder.
Das Schalter ist nicht verfügbar, wenn das Gerät und/oder Abtastrate keine lückenlose Datenaufzeichnung ermöglicht. Beim DSO220 ist die Abtastrate unter 1000 Sa/s zu senken! (Bug: Nicht implementiert!) Soundkarten können bei jeder Abtastrate lückenlos aufzeichnen.
Der Schalter ist nur in der ersten Zeitbasis „A“ verfügbar.

+$#KAbtastrate (denglisch: Samplerate)
Die Abtastrate folgt normalerweise der ersten Zeitbasis. Ausnahme: alle Kanäle im X/Y-Betrieb, dann muss der Anwender eine dem Problem angepasste Abtastrate finden. (Problem aller Digitaloszis!) Der Auf/Abwärtspfeil schaltet in üblichen 1-2-5-Schritten.
Das Abtastrate ist nur bei Zeitbasis „A“ verfügbar.
O	Vorgabe:	–
7	TB-Fokus:	A
7	Tastatur:	Zum Auf/Abwärtsschalten Umschalt + horizontale Pfeiltasten benutzen!
8	Maus:	Im Readout: Mit rechter Maustaste anklicken.
<	Speicherort:	unter [A] Samplerate, DDE: Thema: A, Element: Samplerate
Experte:	Die Stützstellen-Zahl wird auf Basis der gewünschten Zeitbasis automatisch angepasst. Andere Abtastraten als von Hardware unterstützt können nicht eingegeben werden. (Bug: Alles nur geträumt!)

+$#KVerschiebung (denglisch: Offset)
Die zweite Zeitbasis ermöglicht das gedehnte Betrachten eines Ausschnitts der ersten Zeitbasis (Ausschnittvergrößerung; Lupenfunktion). Der Auf/Abwärtspfeil schaltet in ganzen Kästchen der ersten Zeitbasis „A“.
Das Eingabefeld ist nur bei den weiteren Zeitbasen verfügbar.
O	Vorgabe:	–
7	TB-Fokus:	B, C, D
7	Tastatur:	Nach Umschalten der Zeitbasis Umschalt + horizontale Pfeiltasten benutzen!
8	Maus:	Hervorgehobenen Bereich in erster Zeitbasis verschieben.
Im Readout: Mit rechter Maustaste anklicken.
<	Speicherort:	unter [x] Verschiebung, DDE: Thema: x, Element: Verschiebung
(x ist der Name der Zeitbasis, A…D)
Experte:	Die Verschiebung kann mit oder ohne Einheit angegeben werden! Ohne Einheit ist die Einheit div der ersten Zeitbasis. (Bug: Fantasiemärchen!)

+$#KStützstellen (denglisch: Sample-Count)
Die eigentliche Stützstellen-Zahl ändert sich regelgerecht bei Begrenzungen der Abtastrate. Dies ist Vorgabewert. Mehr Stützstellen ergeben einen besseren Kurvenzug und deutlich bessere Signalverarbeitung (FFT), das Programm wird jedoch auch deutlich (?) träger! Der Auf/Abwärtspfeil verdoppelt bzw. halbiert.
Das Eingabefeld ist nicht verfügbar, wenn „Variable Zeitbasis“ (Datenlogger) aktiviert ist.
In der ersten Zeitbasis „A“ verkörpert es die Anzahl aller Abtastwerte; in den weiteren Zeitbasen den Lupeneffekt und damit direkt die Ablenkung.
O	Vorgabe:	1000
<	Speicherort:	unter [x] Samples, DDE: Thema: x, Element: Samples
Experte:	Die Stützstellen-Zahl bezieht sich auf die gesamte X-Achse, normalerweise 10 Kästchen. Die Zeitbasis dagegen auf 1 Kästchen. Daher kommen hier auch die Gitternetz-Einstellungen ins Spiel. (Bug: Da fehlt alles! Graue Theorie!)
Eine 2**n-Samplerate ist ohne Geschwindigkeitsvorteil und nicht Zwang.

+$#KTrigger
Dieser Dialog ist moduslos. Die Einstellungen werden mit kurzer Verzögerung übernommen, wenn „Automatisch übernehmen“ aktiviert ist.
Von allen Datenverarbeitungsssystemen ist dieses das einzige, was nicht mehrfach vorhanden ist.
Der Trigger ist nicht verfügbar, wenn alle Kanäle im X/Y-Betrieb sind, sowie im Rollbetrieb sowie bei automatischer Zeitbasis (Datenlogger, Audiorekorder).

Flanke
Quelle
Pegel, Hysterese; Muster
Kopplung
Prätrigger (Triggervorgeschichte), Triggerverzögerung, Holdoff
Farbe (Erklärung trivial)

+$#KFlanke (Triggerflanke)
Steigende (+) oder fallende (–) Flanke kann ausgewählt werden.
Flanke ist bei extra Triggereingang nicht immer einstellbar!
O	Vorgabe:	+ (steigend)
7	Tastatur:	?
8	Maus:	Im Readout veränderbar.
<	Speicherort:	unter [T] Flanke, DDE: Thema: T, Element: Flanke
Experte:	Bei Logikanalysator-Betrieb benutzt man den Quelle-Kanal für die Flankentriggerung, für die übrigen das Muster.

+$#KQuelle (Triggerquelle)
Jeder Eingangskanal sowie, wenn vorhanden, ein extra Triggereingang, kann ausgewählt werden.
Bei Ein-Kanal-Betrieb ist das Feld nicht verfügbar.
O	Vorgabe:	Y1
7	Tastatur:	?
8	Maus:	Im Readout veränderbar.
<	Speicherort:	unter [T] Quelle, DDE: Thema: T, Element: Quelle
Experte:	Bei Logikanalysator-Betrieb benutzt man den Quelle-Kanal für die Flankentriggerung, für die übrigen das Muster.

+$#KPegel, Hysterese; Muster (Triggerpegel)
Pegel und Hysterese
Jeder Eingangskanal sowie, wenn vorhanden, ein extra Triggereingang, kann ausgewählt werden.
Pegel ist bei externem Trigger selten einstellbar! Dann ist der Wert auf Null fixiert.
Pegel und Hysterese gibt's nur im „normalen“ Oszi-Betrieb, Muster hingegen bei Betriebsart „Logikanalysator“.
O	Vorgabe:	–
7	Tastatur:	Pegel: Strg + vertikale Pfeiltasten
8	Maus:	Im Readout und durch Verschieben des Triggerkreuzes veränderbar.
<	Speicherort:	unter [T] Pegel, DDE: Thema: T, Element: Pegel
Experte:	Hysterese und Muster sind zurzeit nicht implementiert.
Die Angabe ist mit oder ohne Einheit möglich; im Readout wird stets mit Einheit angezeigt. Bei Angabe der Einheit wandert das Triggerkreuz vertikal mit bei Änderung des Ablenkkoeffizienten! Ohne ist es in div bezüglich des Massesymbols angegeben.

Mögliche Einheiten: div, %, V (mV; µA u. ä. je nach Tastkopf), lsb, FS
Die Syntax für das Muster ist noch nicht festgelegt. Wahrscheinlich ein C-Ausdruck mit booleschen Operatoren &|~^.

+$#KKopplung (Triggerkopplung)
DC (Gleichspannungskopplung, direkte Kopplung) und AC (Wechselspannungskopplung, kapazitive Kopplung) sowie weitere Kopplungen (HF, LF…) sind möglich.
Die Kopplung wird notfalls simuliert. Nicht möglich ist die Simulation der DC-Kopplung bei AC-Geräten, wie der Soundkarte. Als Logikanalysator gibt es nur DC-Kopplung.
O	Vorgabe:	DC, bei Geräten ohne DC-Kopplung AC
7	Tastatur:	keine
8	Maus:	Per Maus im Readout veränderbar.
<	Speicherort:	unter [T] Kopplung, DDE: Thema: T, Element: Kopplung
Experte:	Kopplungssimulation erfolgt vor der Darstellung der Daten.
Zur Visualisierung des wechselnden Triggerpegels wandert dabei das Triggerkeuz auf und ab. (Nee, in meinen Träumen)

+$#KTriggerverzögerung (negativ: Prätrigger), Holdoff
Detaillierte Information
Prätrigger ist bei externem Trigger selten einstellbar! Dann ist der Wert auf Null fixiert.
Beim DSO220 ist Prätrigger auf unrealistische Weise simuliert! Hardware-Fehler!
O	Vorgabe:	–
7	Tastatur:	Strg + horizontale Pfeiltasten
8	Maus:	Per Maus im Readout und durch Verschieben des Triggerkreuzes veränderbar.
<	Speicherort:	unter [T] Prätrigger, DDE: Thema: T, Element: Prätrigger
Experte:	Nur %-Angabe ist implementiert? Holdoff ist nicht implementiert.

Mögliche Einheiten: div, %, s (ms, µs usw.), Sa

+$Triggerverzögerung und Holdoff
Je nach Lage interessieren nicht unbedingt die Daten direkt nach dem Triggerereignis. Prätrigger ermöglicht es, vor dem Triggerereignis die Daten zu sehen. Triggerverzögerung „wartet“ nach dem Triggerereignis eine einstellbare Zeit und stellt die (viel) späteren Daten dar.
Holdoff ermöglicht einen „blinden Fleck“ direkt nach den dargestellten Signaldaten und je nach Problem bessere Ergebnisse.
Die folgenden Bilder sollen die Begriffe einprägsam erläutern. Die Darstellungen unterscheiden sich etwas je nach Verwendung von Prätrigger.
Positive Triggerverzögerung:

Wie man sieht, schiebt die Triggerverzögerung den dargestellten  Ausschnitt nach rechts. Das  Triggerereignis, das im Normalfall (Analogoszilloskop) am linken Bildrand ist, verschwindet nach links.
Der Holdoff kann helfen, unerwünschte Triggerereignisse (Störimpulse) zu unterdrücken. Beim Analogoszilloskop gibt es immer ein minimales Holdoff für den Strahlrücklauf.
Negative Triggerverzögerung:
Žo°ÀÎ0002d01030004000000f0010100040000002d01000004000000f0010200070000001b04e504c409dc01fc050b00000026060f000c004d72456401000200000000000800000025030200e007e001e007e1040b00000026060f000c004d7245640100020000000000080000002503020000066003c00960030a00000026060f000a00ffffffff01000000000008000000fa0206001000100000800000040000002d01010004000000f00103000b00000026060f000c004d72456401000200000000003800000025031a00a0052f0330062f03570605036c066e0390062f03ea0630031a070c032c07720356073603c20736030a0818033408c40288088802b808b202ca081803dc087e030609cc034209de038409c603b4099003d8094e03080a0603200a0603500a3003800a3003b00a30030e00000026060f0012004d7245640300080000000e072a033e075a0307000000fc020000ff000000ffff040000002d01020008000000fa02060000000000ff000000040000002d01030004000000f00101000700000018045a033e072a030e070e00000026060f001200ffffffff000008000000a8048002d805c00208000000fa0206000800080080800000040000002d01010004000000f00103000b00000026060f000c004d72456401000200000000000800000025030200a005a002b004a00207000000fc02000080800000ffff040000002d01030004000000f001020008000000fa0206000000000080800000040000002d01020004000000f00101000b00000026060f000c004d72456401000200000000000a0000002403030070058802d005a0027005b8020a00000026060f000a00ffffffff01000000000005000000090280800000040000002e011a00040000000201010018000000320a7002be0522000000847374696c6c65739320486f6c646f666620776567656e205072e47472696767657208000000fa0206000800080000808000040000002d01010004000000f00102000b00000026060f000c004d72456401000200000000000800000025030200d00570026006700207000000fc02000000808000ffff040000002d01020004000000f0010300040000000201020008000000fa0206000000000000808000040000002d01030004000000f00101000b00000026060f000c004d72456401000200000000000a0000002403030030065802900670023006880205000000090200808000040000002e011e0004000000020101000b000000320a2e02f40507000000486f6c646f66660008000000fa0206000800080080000000040000002d01010004000000f00103000b00000026060f000c004d7245640100020000000000080000002503020090069003f006900307000000fc02000080000000ffff040000002d01030004000000f0010200040000000201020008000000fa0206000000000080000000040000002d01020004000000f00101000b00000026060f000c004d72456401000200000000000a00000024030300c006780320079003c006a8030500000009028000000004000000020101000d000000320a0e0412060c000000547269676765727375636865050000000902ff00ff0010000000fb02b0ff00000000000090010000000000000022417269616c000000040000002d01010004000000f001040012000000320a8e05ab0315000000547269676765726e616368676573636869636874650008000000fa02020000000000ff00ff00040000002d01040004000000f00102000b00000026060f000c004d7245640100020000000000080000002503020010024005b00440050500000009020000000010000000fb02b0ff00000000000090010100000000000022417269616c000000040000002d01020004000000f00101000c000000320a5e0280070a0000005374f672696d70756c7308000000fa0206000800080000000000040000002d01010004000000f00104000b00000026060f000c004d72456401000200000000000800000025030200600630038007700205000000090200ff0000040000002e01180010000000fb02b0ff00000000000090010000000000000022417269616c007735040000002d01040004000000f001020011000000320a2e05f0001400000054726967676572766f726765736368696368746508000000fa0202000000000000ff0000040000002d01020004000000f00101000b00000026060f000c004d72456401000200000000000800000025030200f00040051002400508000000fa02060008000800ff000000040000002d01010004000000f00102000b00000026060f000c004d724564010002000000000008000000250302001002a0051002400510000000fb021000070000000000bc02000000000102022253797374656d0005040000002d01020004000000f001040008000000fa02050000000000ffffff00040000002d01040004000000f0010100040000002d01000004000000f0010300040000002701ffff040000002701ffff030000000000170017000c000c000c000c00170017001700170017001700170017001a001700170017001700
Der „stille Holdoff“ ist erforderlich, weil sonst gleiche Teile der Kurve mehrfach an verschiedenen Stellen abgebildet werden könnten.
Für die Darstellung der Triggervorgeschichte werden entsprechend viele Samples laufend in einem Ringpuffer aufbewahrt und ausgehend vom Triggerereignis links dargestellt. An einem Analogoszilloskop war dafür eine extrem aufwändige Laufzeitleitung erforderlich.

+$#KTriggerpegel und Hysterese
Mit dem Triggerpegel wird der Gleichspannungswert festgelegt, bei dessem Passieren des Signals (in einer der beiden Richtungen je nach Triggerflanke) das Triggerereignis ausgelöst wird.
Mit der Hysterese kann eine Rauschunterdrückung erreicht werden.
„Irrtümliche“ Auslösung ohne Hysterese:

Das Signal scheint trotz eingestellter steigender Triggerflanke beim fallenden Kurvenzug auszulösen. Die  Detailvergrößerung zeigt das Problem: Das Signal ist verrauscht oder gestört.
Die  doppelte Auslösung links ist ohne Folgen; es zählt die erste.
Unterdrückung der Auslösung mit Hysterese:

Die Hysterese ist der Abstand zwischen den beiden  Linien. Der angegebene Triggerpegel bezieht sich auf die obere Linie bei steigender Flanke und auf die untere Linie bei fallender Flanke.
Die Hysterese sollte so groß sein wie die größte erwartete Störwechselspannung (Rauschen).

+$#KKanal (Y-Ablenkung)
Dieser Dialog ist moduslos. Die Einstellungen werden mit kurzer Verzögerung übernommen, wenn „Automatisch übernehmen“ aktiviert ist.
(Bug: Irgendwie gibt's hier einen fetten Absturz.)

Name
Vorteiler
Ablenkkoeffizient
Kopplung
Verschiebung
Farbe (Erklärung trivial)

+$#KName (Kanalname)
Kanäle können entsprechend ihrer Messgröße mit Namen versehen werden.
Durch gleiche Namen bildet sich automatisch eine ungeordnete Gruppe.
Durch gleiche Namen mit verschiedenen Zahlen ist eine geordnete Gruppe (meist ein Bus) definiert.
Die Zahl (Bitnummer) wird dem Namen direkt oder mit Zwischenschaltung eines Doppelpunktes : angehängt. Leerzeichen sind zulässig, aber möglichst zu vermeiden. Mit dem Semikolon sind mehrere Namen für mehrere Gruppen-Mitgliedschaften angebbar.
O	Vorgabe:	(kein Name)
<	Speicherort:	unter [Yn] Name, DDE: Thema: Yn, Element: Name
Experte:	Das Thema Yn ist per DDE auch über Name zugreifbar! Damit ist die Zuordnung von Kanalnummer und Messgröße nicht felsenfest fixiert, Name bildet einen Alias für Yn.
Der Namensteil darf nicht nur aus einem Buchstaben A..Z bestehen! (Chinesische und Sonderzeichen sind jedoch zulässig in der Unicode-Version.) Groß/Kleinschreibung wird intern (wegen DDE) nicht unterschieden.

+$#KVorteiler (Tastkopf-Verhältnis)
Eine Stärke dieses Programms ist die Verwendungsmöglichkeit beliebiger Tastköpfe mit beliebigen Messgrößen! Hauptsache, es kommt eine Spannung heraus, und der Zusammenhang ist proportional.
Am Eingabefeld werden die beiden Standard-Tastköpfe 1:1 und 10:1 vorgehalten.
O	Vorgabe:	1:1
7	Kanal-Fokus:	Zifferntasten oder TAB
7	Tastatur:	! (Ausrufezeichen)
8	Maus:	Per Maus im Readout veränderbar.
<	Speicherort:	unter [Yn] Tastkopf, DDE: Thema: Yn, Element: Tastkopf
Experte:	Ein gewöhnlicher Tastteiler ist mit 10:1 anzugeben, ein 10fach-Verstärker mit 1:10. Einheitumsetzungen werden in der Form (beispielhaft) 1A:10V oder 1:10 A:V akzeptiert. Natürlich sind auch „krumme“ Zusammenhänge zulässig.
Die Zahl Null ist unzulässig. Negative Zahlen bewirken Invertierung.

Bei Verhältnis 1:1 ist kein Tastkopf-Symbol zu sehen.
Bei Verhältnis 10:1 wird das Tastkopf-Symbol ! im Menü und im Readout angezeigt.
Bei allen anderen Verhältnissen ist das angezeigte Zeichen #.

+$#KAblenkkoeffizient
Der Auf/Abwärtspfeil schaltet in üblichen 1-2-5-Schritten. Eine Einheiten-Angabe ist mit Vorsatz möglich; diese muss mit der Einheit vom Vorteiler übereinstimmen!
O	Vorgabe:	–
7	Kanal-Fokus:	Zifferntasten oder TAB
7	Tastatur:	Zum Auf/Abwärtsschalten vertikale Pfeiltasten benutzen!
Invertierung: Taste / oder ¸ (Division).
8	Maus:	Im Readout und mit Rollrad auf Massesymbol veränderbar.
<	Speicherort:	unter [Yn] Ablenkung, DDE: Thema: Yn, Element: Ablenkung
Experte:	Das Programm nutzt eine Verstärkungs-Umschaltung so ausgiebig wie möglich. Dann skaliert es bis zu 5 lsb/div „groß“ bzw. 1 FS/div „klein“; als Logikanalysator gelten andere Grenzen. Auch „krumme“ Werte sind möglich und ersparen die VAR-Einstellung gewöhnlicher Oszilloskope.
Die Zahl Null ist unzulässig. Negative Zahlen bewirken Invertierung.

+$#KKopplung
DC (Gleichspannungskopplung, direkte Kopplung), AC (Wechselspannungskopplung, kapazitive Kopplung) und GND (Erdkopplung, Erdung) sind möglich.
Die Kopplung wird notfalls simuliert. Nicht möglich ist die Simulation der DC-Kopplung bei AC-Geräten, wie der Soundkarte. Als Logikanalysator gibt es keine AC-Kopplung.
O	Vorgabe:	DC, bei Geräten ohne DC-Kopplung AC
7	Kanal-Fokus:	Zifferntasten oder TAB
7	Tastatur:	Tasten = (DC), ~ (AC), _ (GND) benutzen!
8	Maus:	Im Readout veränderbar.
<	Speicherort:	unter [Yn] Kopplung, DDE: Thema: Yn, Element: Kopplung
Experte:	Die Simulation von AC und GND erfolgt nach der Triggersuche und sonstigen Signalverarbeitung. Wie echte Wechselspannungskopplung auf den Trigger einwirkt ist hardware-abhängig! Bei Soundkarten wird trotz verfügbaren Mixers GND simuliert.

Invertierung erreicht man bei diesem Programm nicht mittels „Kopplung“, sondern mit einem anderen Ablenkkoeffizienten.
Eine Umschaltung des Lastwiderstandes (bspw. 50 W) ist zurzeit nicht vorgesehen.

+$#KVerschiebung
Legt die Höhe des Signals im (festen) Gitternetz fest.
Die Verschiebung wird zumeist simuliert.
Bei Auswahl mehrerer Kanäle (Gruppe) ist die alternative Syntax (beispielhaft) 0@1 nützlich, um die Einzelkanäle gestaffelt um 1 div (nach unten!) anordnen zu lassen.
Bei Angabe einer Einheit wird mit dieser verschoben, nicht in div!
O	Vorgabe:	0 (Signal auf Mittellinie)
7	Kanal-Fokus:	Zifferntasten oder TAB
7	Tastatur:	Zum Auf/Abwärtsschieben um 1 Kästchen Umschalt + vertikale Pfeiltasten benutzen!
8	Maus:	Per Maus durch vertikale Verschiebung des Massesymbols veränderbar.
<	Speicherort:	unter [Yn] Nulllinie (mit drei „l“ gemäß neuer deutscher Rechtschreibung), DDE: Thema: Yn, Element: Nulllinie
Experte:	Ob mit oder ohne Einheit wird fortan beibehalten! Mit Einheit verändert sich das Massesymbol beim Umschalten des Ablenkkoeffizienten, ohne bleibt das Massesymbol stehen! 

+$#KGruppe
Bei vielen Kanälen müssen zur Handhabbarkeit bestimmte Kanäle irgendwie zusammengefasst werden, bspw. durch Busse. In diesem Programm verwende ich den Terminus Gruppe.

Gruppenbildung erfolgt automatisch durch geschickte Namensgebung der Kanäle:
·	Gleiche Kanalnamen ergeben eine ungeordnete Gruppe
·	Gleiche Kanalnamen mit angehängten (unterschiedlichen) Zahlen (Bit-Nummern, entweder direkt angehängt oder mit Doppelpunkt : abgetrennt) ergeben eine geordnete Gruppe. Eine geordnete Gruppe mit durchgehenden Bit-Nummern könnte man Bus nennen.

Weiterhin gibt es bis zu zwei „automatische Gruppen“:
·	Erste zwei Kanäle (nur bei mehr als 2 Kanälen — nicht implementiert)
·	Alle Kanäle (bei 2 Kanälen heißt diese „Beide Kanäle“)

Gruppen mit null oder einem Kanal gibt es per se nicht!

Mit diesen Gruppen sind die gleichen Aktionen wie mit Kanälen möglich; dann wirken sich die Einstellungen gleichartig auf alle beteiligten Kanäle einer Gruppe.

Einige andere Sonder-Aktionen sind nur mit Gruppen möglich. Für diese Aktionen gibt es einen gesonderten Dialog.

Additionsbetrieb
X/Y-Betrieb
Bus-Darstellung

+$#KAdditionsbetrieb
Die Abtastwerte werden addiert. Bei gleichen Koeffizienten wird das auch so angezeigt; bei ungleichen gibt's auf dem Readout keine Ablenkungs-Anzeige.
Die Addition kann binär gewichtet und/oder zeitlich versetzt erfolgen; dazu ist eine geordnete Gruppe erforderlich. Dies ist auch bei Logikanalysator-Betrieb möglich, bspw. um einen angeschlossenen A/D-Wandler „darzustellen“.
Subtraktion erreicht man durch Inversion eines der beiden beteiligten Kanäle.
<	Speicherort:	unter [Gruppenname] gewichtet bzw. Versatz, DDE: Thema: Gruppenname, Element: gewichtet bzw. Versatz
Experte:	?

+$#KX/Y-Betrieb
Der erste Kanal liefert die X-Daten, der zweite die Y-Daten. Es gibt weder Zeitbasis noch Trigger. Bei ungeordneter Gruppe geht die Auswahl von X und Y nach tatsächlicher Kanalnummer.
Für X/Y-Betrieb muss die Gruppe aus genau 2 Kanälen (oder Gruppen??) bestehen.
Experte:	?

+$#KBus-Darstellung
Die Daten werden rein binär interpretiert anhand der angebbaren Schaltschwelle. Dann werden sie als „Datenbündel“ mit eingeschriebenen Hexadezimalzahlen dargestellt.
Wurde eine Symboldatei geladen, werden statt der Hexadezimalzahlen die Symbole dargestellt.
Für Bus-Darstellung sollte es eine geordnete Gruppe sein.
Die Schaltschwelle ist im Logikanalysator-Betrieb nicht angebbar. (Es sei denn, die angeschlossene Hardware lässt eine Einstellung zu.)
Experte:	Die Symboldatei besteht aus einer zweispaltigen Liste, links Hexadezimalzahl, rechts Symbol. Ist die Symboldatei einspaltig, werden die Zahlen von Null ab angenommen. Symboltabellen sind perfekt für das Betrachten von Mikroprozessor-Datenbussen und ihrer Befehls-Mnemonics.

+$#KReadout (»Aus-Lesen«)
Dieser hässliche Begriff, für den nichts deutsches eingebürgert wurde, bezeichnet die auf dem Oszilloskopschirm ausgegebenen Daten für Zeitbasis, Trigger und Ablenkkoeffizient.
Die Daten sind schneller erfassbar als beim Blick auf entsprechende Einstell-Organe, und sind bei der Bildschirmkopie gleich mit dabei.
Experte:	Betrifft analoge Oszilloskope: Das Readout bedingt eine „Lücke“ bei der Darstellung des Signals bzw. einen periodischen „blinden Fleck“ bei der Trigger-Erkennung. Deshalb haben alle Analog-Oszilloskope eine Möglichkeit der Abschaltung des Readouts.
Im Digitalbetrieb führen Readouts zu keinem Nachteil.
OSZI.EXE greift das Konzept der Readouts auf und erweitert diese zu möglichen Einstellorganen.

#$K+Tastatur-Belegung
Dieses Programm hat eine klare Tastaturunterstützung für die gängigsten Funktionen. Sie müssen nicht laufend zur Maus greifen!
Dazu brauchen Sie diese Liste:

Strg		Alt	Taste	Funktion
		Alt	Enter ¿	Vollbild / Wiederherstellen
Zeitbasis
			A..D	Zeitbasis-Fokus setzen (Zeitbasis für Aktion auswählen)
			¬ ®	Zeitbasis-Ablenkkoeffizient 1-2-5 schalten
	Ý		¬ ®	Abtastrate (Zeitbasis A) oder Verschiebung bzgl. A
Trigger
			Leertaste	Triggern / Einfrieren (Run/Stop)
			Enter ¿	auf Single schalten und 1x auslösen
Strg			Leertaste	Kontextmenü Trigger (am Triggerkreuz)
Strg			¬ ®	Triggerverzögerung (Triggerkreuz) ganze Kästchen
Strg	Ý		¬ ®	Triggerverzögerung (Triggerkreuz) ein Teilstrich
Strg			­ ¯	Triggerpegel (Triggerkreuz) ganze Kästchen
Strg	Ý		­ ¯	Triggerpegel (Triggerkreuz) ein Teilstrich
Kanal
			0..9	Kanal-Fokus setzen (Kanal für Aktion auswählen)
			TAB	Kanal-Fokus vorwärts schalten
	Ý		TAB	Kanal-Fokus rückwärts schalten
	Ý		Leertaste	Kontextmenü Kanal (am Massesymbol)
			­ ¯ + –	Kanal-Ablenkkoeffizient 1-2-5 schalten
	Ý		­ ¯	Kanal-Nullpegel (Massesymbol) schieben
	(Ý)		=	DC-Kopplung
(Strg)		(Alt)	~	AC-Kopplung
	(Ý)		_	GND-Kopplung
	(Ý)		!	Tastkopf 1:1 / 10:1 umschalten
	(Ý)		/	invertieren (Vorzeichenwechsel)
	(Ý)		*	automatische Skalierung (kein Auto-Setup)

(Strg) (Ý) (Alt): Auf einer deutschen Tastatur müssen Sie für diese Zeichen ohnehin diese Modifiziertasten drücken. (Statt Strg+Alt geht natürlich auch AltGr.)
Bei anderssprachigen Tastaturen ist das erreichbare Zeichen maßgeblich, nicht die Tastenposition.

#$K+DDE
Vorläufige Information, keine Funktion!
Wer sollte das lesen?
Dieser Abschnitt ist für Sie als Anwender nur interessant, wenn Sie:
·	etwas automatisieren wollen,
·	mit dem DDE-Konzept vertraut sind und eine geeignete Client-Anwendeung haben
Es sind eine Reihe von Variablen zum Lesen und Schreiben freigegeben. Mittels Netzwerk-DDE oder D2S ist der Zugriff über Rechnergrenzen hinweg möglich.
Schauen Sie einfach die .INI-Datei an, um die Themen- und Elementnamen zu erfahren!

#$K+Benutzerdefinierte DLL erstellen
Vorläufige Information, keine Funktion!
Kennt sich jemand mit COM aus, ist ein solcher Ansatz vielleicht besser?

Wer sollte das lesen?
Dieser Abschnitt ist für Sie als Anwender nur interessant, wenn Sie:
·	programmieren können,
·	über ein als Oszilloskop-Datenquelle geeignetes, nicht unterstütztes Gerät haben
Vorzugsweise sollte in C/C++ programmiert werden; Pascal/Delphi sowie Assembler sind genauso akzeptabel, Visual Basic unpraktisch. Ein spezieller Compiler ist nicht vorgeschrieben.

API
Die zu erstellende DLL muss einen Eintrittspunkt mit folgenden Namen und Definitionen aufweisen:

function RelayMsg(Msg:EMsg; lParam:Pointer):Boolean;
{$IFDEF Win32} stdcall {$ELSE} export {$ENDIF};
 {Funktionsverteiler}
 ...

exports
 RelayMsg;

Die Ordinalzahlen für den Export sind beliebig.
Für die Nachrichten-Kodes muss "quelle.h" inkludiert werden.

Callback
Diese Routine kann sich zur Bewältigung ihrer Arbeit folgender Unterprogramme aus dem Aufrufer (OSZI.EXE) bedienen:

function GetInfo:PInfo; far; external 'OSZI' index 2;
 {Info-Strings, wie INI-Dateiname, Hilfe-Datei usw. beschaffen}

Zum Testen der DLL ist es nützlich, einen Breakpoint (asm int 3 end) zu Beginn des Unterprogramms RelayMsg zu setzen.

Hinweis: Eine solche DLL wurde noch nie geschrieben, wer's macht, ist der erste!