Home   -   Gallery   Geology   Music   Software   Hiking   Links   Sport   What?  
Projects   Sources   V4   Flightsim   Joystick   Workshop  
1   2   3   4   5   6   7   8   Anl  
Page 344 of 401
 <   > 

(Kap. 5)   Improvement Possibilities   < Verbesserungs-Möglichkeiten >

The table below shows where and how it could be possible to improve the joystick input for PCs. (The table is sorted from the low to the high system levels.)   < Die Tabelle unten zeigt, wo und wie es möglich wäre, den Joysick-Input bei PCs zu verbessern. (Die Tabelle ist sortiert von den nierdrigen zu den hohen System-Schichten.) >

 

Verbesserungs-Möglichkeiten
(Update 1998-Juli-31)
Point of attack   < Angriffspunkt > Possibility   < Möglichkeit > Comment   < Notiz >
 
.
Joystick
.
Better parts.   < Bessere Bauteile. > The cheapest products should be sorted out, the potentiometer must not be bad. No improvement on principal.   < Die billigste Ware sollte aussortiert werden. Das Potentiometer darf nicht schlecht sein. Keine prinizipielle Verbesserungs-Möglichkeit. >
.
.
Extern A/D-converting   < Externe A/D-Wandlung >
.
Not existing with the given hardware. New standard must be created, probably serial.   < Gibt es nicht mit herkömmlicher Hardware. Neuer Standard muß geschaffen werden, wahrscheinlich seriell. > This is the only way to get a boost to unlimited precision. As good as the A/D-translator can be.   < Das ist der einzige Weg, einen beliebigen Qualitäts-Schub zu bekommen. So gut wie der A/D-Wandler sein kann. >
The current restriction results from the fact, that the processor with its wanted runtime is abused as a part of the A/D-converter.   < Die momentane Einschränkung ergibt sich daraus, daß der Prozessor mit seiner wertvollen Laufzeit als Teil des A/D-Wandler mißbraucht wird. >
.
Adapter-Card   < Adapter-Karte >
.
Variation of the capacity for calibrating to maximum amplitude.   < Variation der Kapazität um die Kalibrierung maximal auszusteuern. > Ensures, that the given hardware gives its best.   < Stellt sicher, daß die vorhandene Hardware voll ausgenutzt wird. >
Something for solding people, not too complicated. < Etwas für lötende Leute, nicht allzu kompliziert. >
.
System-Ressources (Ports and Interrupts)
.
The card could use more ports to deliver higher resolution. The software must know about this.   < Die Karte könnte mehrere Ports verwenden, um mit besserer Auflösung zu übertragen. Die Software muß das wissen. > No standard established. Only your programm would understand this card. Except packed with a fitting new driver (see below)!   < Kein Standard etabliert. Nur Ihr Programm würde diese Karte verstehen. Außer gepackt mit einem passenden Treiber (siehe unten) >
If attempting on standards, then look to serial port plus extern A/D-translation, which might become established with Force Feedback.   < Wenn schon am Standard herumwerkeln, dann am Seriell-Port, das zumindest in Zusammenhang mit Force Feedback sowieso zu kommen scheint. >
.
Driver   < Treiber >
This is, in combination with the Adapter-Card, the intern A/D-converter!   < Das ist, in Kombination mit der Adapter-Karte, der interne A/D-Wandler! >
Could perform oversampling and the like directly at the port. All higher API accesses have the profit!   < Kann direkt am Port Oversampling und ähnliches durchführen. Alle darüberliegenden API-Zugriffe profitieren davon. > This is the only point of attack to achiev effective improvement with software on the given hardware. < Das ist der einzige Software-Weg für eine effektive Verbesserung bei gegebener Hardware. >
For sure also the hardest way   < Mit Sicherheit auch der härteste Weg. >  
.
Windows-API
.
getJoyPosEx() receives its input from the driver, so the main influence is over.   < getJoyPosEx() erhält seine Werte wohl vom Treiber, so sind die wichtigsten Einflußmöglichkeiten schon vorbei. > Hardly any influence. One could think about the polling techniqe, perhaps a little bit oversampling or the like is possible. < Kaum Einfluß Man könnte über Polling-Techniken nachdenken, vielleicht ist ein bißchen Oversampling o.ä. möglich. >
.
.
DirectX
.
Based on getJoyPosEx (see above). .
Hardly influence   < Kaum Einfluß >
.
GLUT
.
Based on getJoyPosEx (see above). Hardly influence   < Kaum Einfluß >
.
Application   < Anwendung >
.
Usually based on getJoyPosEx (see above). Hardly influence. An exception is Radtke/Lampton with it's driver inside the application.   < Kaum Einfluß. Ausnahme Radtke/Lampton mit Treiber in der Applikation. >
.
Flight Model   < Flugmodell >
.
Must not have artificial resonances.   < Darf keine künstlichen Resonanzen haben. > No influece for higher frequenced joystick effects, but perhaps for lower frequenced flight effects.   < Kein Einfluß bei den (höherfrequenten) Joystick-Effekten, aber vielleicht für (niederfrequente) Flug- oder Flugmodell-Effekte. >
.

.

The above table looks nice brick-like modular. But be careful, reality might be fuzzy. Below some points of attack are listed again, alphabetically and described with more detail.   < Obige Tabelle sieht schön blockartig modular aus. Aber Vorsicht, die Wirklichkeit ist verwoben. Unten sind einige Punkte noch einmal aufgelistet, alphabetisch und evtl. detaillierter beschrieben. >

.

A/D-Wandlung (extern)

Mit der herkömmlichen Methode lassen sich verfahrensbedingt keine HiFi-Signale übertragen, selbst wenn der Joystick sie bietet.

Eine Alternative zur internen A/D-Wandlung ist die serielle Schnittstelle mit externer A/D-Wandlung in beliebiger Qualität. Diese Technik käme allerdings nur Programmen zugute, die darauf hin programmiert sind. Außer man programmiert einen zugehörigen Treiber, der joyGetPosEx mit Zahlen versorgt. Dann merken die Programme gar nichts von der neuen Hardware, und profitieren alle von dem seriellen Joystick! (das ist nicht unrealistisch).

Eine grobe Abschätzung der Bandbreite der seriellen Schnittstelle bei z.B. 100000 Baud ergibt z.B. 10 bis 100 HiFi-Achsen.

.

A/D-Wandlung (intern)

Die A/D-Wandlung scheint der Schlüssel für die Qualität des Joystick-Signals zu sein. Aber die A/D-Wandlung im PC ist technisch vernachlässigt, genau wie das Thema Joystick in den Systemfunktionen. Der Prozessor soll nebenbei die Messung erledigen. Je genauer er mißt, je langsamer wird das Programm! Das kann keine Präzissions-Messung geben.

Die Qualität einer A/D-Wandlung wird von zwei Faktoren bestimmt: (1) Qualität der Hardware, also Potentiometer, Kondensator, usw. (2) Die Qualität Software, d.h. der Auswertung des von der Hardware gelieferten Signals.

Vor Hardware-Änderungen mit evtl. neuen Karten-Standards ist zu prüfen, ob nicht die Qualität der herkömmlichen A/D-Wandlung auf Software-Weg schon genug verbessert werden kann, z.B. Treiber mit Oversampling.

Die A/D-Wandlung generell bringt zwei Fehler:

(1)   Das Signal wird stufenförmig. Z.B. durch Oversampling können die Stufen verkleinert werden, d.h. die Weg/Zeit-Kurve wird glatter. Oversampling muß auf Treiber-Ebene durchgeführt werden. Auf Anwendungs-Ebene denkbar für langsame Steuerbewegungen (je langsamer, umso genauer kann ausgewertet werden). Sicher nicht für Ballerspiele.

(2)   Unlinearitäten der Weg/Zeit-Kurve. Bewirkt Unlinearitäten der Steuerung im Flugmodell. Kann Auf Treiber- und Anwendungs-Ebene erfolgen, die Werte müssen lediglich über eine Tabelle gemappt werden. Die Kalibrierungen erfassen normalerweise nur die Mittelstellung und die Extremstellung. Die Zwischenstellungen könnten auch erfasst werden, mit beliebig viel Aufwand, bis hin zur manuellen Festlegung der Kurve. Ähnlich wie mit den Schiebereglern an einem Equalizer.

.

Adapter-Karte

Eine Karte, die sich ganz an die übliche Spezifikation hät, die aber bessere Bauteile enthät, und vielleicht den einen oder anderen Kondensator extra spendiert, um meßgeräte-technisch auf der Höhe der Zeit zu sein. So eine Karte wäre voll kompatibel zu allen anderen Gameport-Karten und würde eine Verbesserung für das Gesamt-System bedeuten. Die Karte alleine kann aber nicht die Effekte der A/D-Wandlung als solche beseitigen, das kann nur die (Treiber-)Software.

Wie mit Tischers joystc.exe leicht zu beobachten, liegen die vom BIOS gelieferten Zahlen meist im Bereich unter 100, das ist mäßig. Denn das "Plusminus-Eins-Flackern" wird sich grundsätzlich niemals vemeiden lassen. Da wäre es doch besser, im Bereich z.B. unter 100000 zu liegen, da würde man das Abscheiden des Kommas gar nicht mehr merken! Ideal wäre eine etwas höhere Genauigkeit als die Simulaor-interne Rechengenauigkeit.

Beim Lesen des Joystick-Inputs müssen unbedingt höhere Ganz-Zahlen als 100 verwendet werden, sonst kann niemals ein annähernd analog wirkender Input erreicht werden! Z.B. bei 100000 wird es anfangen, HiFi zu werden. Hier sind aber dem Lesen aus einem einzelnen Bit, d.h. der gängigen Technik, grundsätzliche Grenzen gesetzt.   <Die in der bisherigen Konstellation schon erreicht sind? Das klärt der Aussteuerungstest.>

.

Aussteuerung

Das folgende beschreibt einen Vorgang, der durchgeführt werden kann, wenn der Kondensator auf der Adapter-Karte austauschbar gestaltet ist.

Denkbar wäre eine Einstellmöglichkeit für die Dauer der Kondensator-Entladung. Z.B. könnte der Anwender (manuell) bzw. das Programm (mit Adapterkarte interaktiv) dann zwischen verschiedenen Optimierungs-Strategien wählen. Denn:

Je nachdem, ob der Joystick schnell reagieren muß oder nicht, kann eine optimierte Lese-Strategie gewählt werden. Damit Adapter-Karte und Software derart automatisch zusammenarbeiten können, ist neben dem Port 201H eine weitere Resource notwendig. <(Die dem System wahrscheinlich irgendwie bekannt gegeben muß, was aber kein Problem sein sollte.)>

Auch eine manuelle Verstell-Möglichkeit der Entlade-Dauer auf der Adapter-Karte, ohne Verwendung zusätzlicher Ressourcen, und ohne daß die Software davon weiß, brächte schon Verbesserung! Nach jeder Veränderung der Entlade-Dauer muß kalibriert werden. Eine Verlängerung der Entlade-Dauer bewirkt in der Port-Meß-Routine ein höheres Ergebnis, d.h. ein genaueres. Dann muß man die obere Toleranz-Grenze der Kalibrierung herausfinden und die Entlade-Dauer knapp darunter einstellen. Dann ist man jedenfalls sicher, daß man in diesem Punkt die Fähigkeiten der vorhandenen Umgebung ausschöpft, und nicht Genauigkeit verschenkt.

Das ist ein vergleichbarer Vorgang wie das Einstellen der Aussteuerung bei einer Tonband-Aufnahme. Die Dynamik des Signals spielt eine Rolle. Man möchte möglichst nahe ans Maximum, darf aber auch nicht übersteuern. Wenn man zu niedrig aussteuert, erhält man eine schlechte Aufnahme, bis hin zur Unhörbarkeit. Wenn man zu hoch aussteuert, erhät man eine Menge Lärm, aber auch keine Musik.

< CHECK   -   Vorschlag für ein einfaches Experiment. (1) Auf der Karte ein Potentiometer einbauen parallel oder seriell zum Achsen-Eingang (2) Verschiedene Kondensatoren schaltbar einbauen (3) Verschieden Potentiometer im Joystick verwenden. Wahrscheinlich ist (2) am wirksamsten - Kondensator vergrößern. Durch diese Maßnahmen kann der Operationsbereich der Entlade-Dauer beeinflußt werden. Dann kalibrieren und das Zeit-Maximum herausfinden, dort hat man die bestmögliche Qualität. (Aussteuerung) >

.

DirectX

.

.

.

Joystick

.

.

.

Oversampling

Oversampling ist eine gängige Methode, ein Roh-Signal zu frisieren. Es bedeutet, daß die Lese-Frequenz höher ist als die Nutz-Frequenz. Für jede genutzte Zahl stehen also mehrere gelesene Zahlen zur Verfügung.

Oversampling ist ein zeitkritisches Low-Level-Feature, das in der Anwendung schlecht mehr bewerkstelligt werden kann, es muß auf Treiber-Ebene geschehen.

Das ist es, was an anderen Stellen oft "Mittelwert bilden" genannt wird.

.

Port 201H und seine Bits.

(Kommentar)   In diesem Papier klingt es ausschließlich nach Minuspunkten für die Signal-Übertragung über ein einzelnes Bit. Bitte denken Sie dazu immer folgenden Pluspunkt: Es funktioniert! Und zwar mit einem einzigen Drähtchen, an dem irgendetwas hängt. Hängen Sie statt des Joysticks eine Thermo-Widerstand daran, haben Sie ein Thermometer. Hängen Sie einen Foto-Widerstand daran, haben Sie eine Lichtschranke.

.

Ressourcen

.

.

.

Technische Grenzen des Game-Ports

Man kann die technischen Grenzen der Signal-Qualität beim herkömmlichen Verfahren abschätzen. Aus einem einzelnen Bit durch Zeitmessung Zahlen herauszuholen - bei dieser Technik sind per Definition aufgewendete Prozessorzeit und Genauigkeit proportional! Und Prozessorzeit ist kostbar - der Prozessor soll die Simulation rechnen, und nicht seine Zeit mit Joystick-Messen verplempern.

Um die grundsätzlichen Grenzen der herkömmlichen Adapter-Karte zu überwinden, müssen in irgendeiner Weise die verwendeten Resourcen erweitert werden, z.B. die Karte nutzt weitere Ports oder andere Wege. Aus mehreren Bits wären (in gleicher Zeit) bessere Achsen-Werte zu extrahieren als aus einem Bit, je mehr je besser, wie überall.

HiFi-Signale lassen sich über den Game-Port nicht transportieren. So gesehen kommt man leicht auf die Idee, eine externe A/D-Wandlung mit beliebiger Qualität zu fordern, typischerweise liefert sie ihre Zahlen dann über die serielle Schnittstelle.

Die herkömmliche Technik mit ihren grundsätzlichen Grenzen kann aber noch Mitteln verbessert werden! Bevor man sich daran macht, völlig neues Joystick-Equipment zu entwickeln, kann man prüfen, daß die Qualität des bereits vorhandenen Equipments voll ausgereizt ist. Und da gibt es ein paar rel. leicht zu kontrollierende Stellen, hardware- und software-seitig.

.

Treiber

Die mangelnde Joystick-Signal-Qualität ist z.T. auf die Einfältigkeit des Treibers zurückzuführen. Zumindest für DOS-Programme, die den BIOS-INT 15H Funktion 85H nutzen, ist das bewiesen. In Windows wird von den Anwendungs-Programmen die Win32-Multimedia-API-Funktion joyGetPosEx verwendet, die in der Qualität der Signal-Verarbeitung kaum besser sein wird als die BIOS-Funktion.

Ein neuer Joystick-Treiber, der das Port auswertet und das Win32-API mit Werten versorgt - das wäre die einzige Lösung, eine optimale Signal-Qualität bei gegebener Hardware zu erreichen.

So ein Programm würde die alte Treiber-Routine, die joyGetPosEx() versorgt, durch eine neue ersetzen. Es würde zu Beginn der Sitzung gestartet, oder fest als Treiber installiert. Es hängt sich in joyGetPosEx() ein, und ersetzt dort die alte Meß-Routine durch eine neue, aufgerüstet mit Oversampling und anderen Schikanen. Alle Windows-Progamme erhalten dann qualitativ verbesserten Joystick-Input!

.

Windows-API

.

.

.

.