4 Min

Simulator Milestone 2

Die Weiterentwicklung ist primär geprägt durch die Features, die für den 8-Bit-Computer benötigt werden.

 

Tri-State

Der eigentliche TriState bekommt zwei weitere Stati, "up" und "down", jeweils, wenn ein ein Pull-Up oder Pull-Down Element involviert ist. Effektiv identisch zu High (true) oder Low (false), jedoch benötigen einige Funktionen diesen Semi-Zustand um z.B. Kurzschlüsse zu erkennen. Als weiteren Helfer gibt es in der basecomponent.js nun die bool Methode, die einen Original Tristate zurückgibt. Die entsprechenden Komponenten werden dann angepasst.

Drehen + Zoom

Ein weiteres neues Feature ist Zoom, damit können alle Elemente in der Größe skaliert werden. Ebenso gibt es die Möglichkeit zum drehen des Elements. Beides ist in der basecomponent.js implementiert und gilt für alle Komponenten.

 

Laden from Json-Variable

Als neues Feature kann nun eine Json-Variable zum initialisieren verwendet werden. Es müsen nicht die Komponenten einzeln geladen und initialisert werden.
Die Funktion ist fromJson.
Format der Daten:

{
  "+": {
    "component": "Power",
    "position": [20, 20],
    "label": [10, 5],
    "param": {}
  },
  ...
}

Der Key ist jeweils der Name der Komponente, component gibt den Typ an, "position" ist die Position und "label" gibt die Position des Labels an (relativ zur Positionierung). Gibt es kein label, wir keine Beschriftung angezeigt.
Weitere Optionen können in "param" angegeben werden. Z.B. "color" für die Farbe von LEDs, "rotate" zum drehen der Komponente oder "scale" für Skalierung. Einige Komponenten akzeptieren weitere Parameter.
Die Verkabelung erfolgt via:

  "BusLED": {
    "component": "Wire",
    "paths": [
      ["LEDa0.b","a01.pa49"],
    ],

    "param": {"color": "black"}
  }

Als Komponente wird hier "Wire" angegeben. Die Verkabelung selbst wird definiert durch "paths", hier können beliebig viele Verbindungen angeben werden. Ebenso kann über "param" Einfluss genommen werden. Aktuell wird nur "color", also die Farbe der Verbindung verwendet.

Die Pfade der Kabel unterstützen folgende Eigenschafte:

  • "Komponente.Anschluss", z.B. LEDa0.b wird verbunden mit Komponente LEDa0 und Anschluss b,
  • [x,y], wobei x und y Zahlen sind: Damit können Zwischenpunkt als Koordinaten angegeben werden,
  • [x,y,true], analog zu obigem, allerdings wird an der Koordinate ein Verbindungs-Punkt gezeichnet,
  • Zahl: Damit wird ein vorheriger Punkt auf der aktuellen Liste referenziert, das erste Element hat die 0
  • null, damit wird das Kabel unterbrochen, mit dem nächste Datensatz wird ein neuer Abschnitt angefangen
  • ["pOffset","nOffset"], anstelle fester Koordinaten kann auch mit p (previous) die Koordinaten-Komponente des Vorgängers verwendet werden. Mit n (next) wird die Koordinaten-Komponente des Nachfolgers genommen. Offset ist optional und kann die Vorgänger/Nachfolger Komponente um die angegebene Pixel verschieben.

Laden von Json-Datei

Analog zu ober Funktion kann auch eine Datei vom Server/Platte geladen werden. Die Formatierung ist dabei identisch zur from Json Funktion.

Weitere Komponenten

 

Weitere Basisklassen für Komponenten

Ebenfalls neu ist die Möglichkeit, dass Komponenten gemeinsame Basisklassen haben, z.B. die obigen Logik-Elemente verwenden eine gemeinsame Basisklasse. Dazu wird in die jeweilge Komponente eine Funktion eingebaut, die dem Namensschema KomponenteDepends folgt, z.B. LogicOrDepends. Rückgabe ist jeweils die Basisklasse. Der Simulator lädt diese dann und fürht die KomponenteInit Funktion aus. Hier wird dann die restliche Initialisierung durchgeführt.

Breadboards

Breadboards sind sehr komplete Komponten mit viel Eigenlogik.

Auf ihnen werden verschiedene Bauteile platziert und die Kabel verbunden. Die Komponente erzeugt dann selbst die interne Verkabelung für den Simulator

Verkabelung

Nach der ersten Initialiserung aller Komponenten und evtl. automatisch angelegter Verkabelung folgt ein Kombinationslauf, der Verbindungen zusammenfasst. Z.B. bei einem Breadboard ist ein Kabel an dem Anschluss A1 und eine anderen Komponente an E1 angeschlossen. Dabei entstanden 3 Kabel: Das an A1, von A1 nach E1 und E1 an die Komponente. Diese werden nun alle zu einem Kabel verbunden.

Weiteres Design

zu dem bisherigen Logik-Design (grün auf dunkelgrau) gibt es nun das "Echt"-Design für Breadboard und Platinenansichten. Die Komponten sehen dann realistischer aus. Dies funktioniert logischerweise nur für "echte" Komponenten wie LEDs, ICs oder Buttons.

Im "Echt"-Modus bekommen die Leitungen die definierte Farbe, der Zustand (high/low) wird sichtbar, wenn man mit der Maus über die Leitung geht. Wird die Leitung schwarz, ist sie low, bei rot ist sie high. So kann auch der Leitungsweg verfolgt werden, alle elektisch verbundenen Teilstücke werden angezeigt.

Diverse Bugfixes

Zoom, Scroll und Vollbildansicht

Zusätzlich hat der Simulator nun oben rechts Buttons für Zoom (oder Strg+Mausrad) und Vollbild. Scrollen geht per linker Maustaste und verschieben.

Download

v2.zip x (41 KB)

 

Anschauungsbeispiel

Das ganze in Aktion gibt es unter Computer Stufe 1 zu sehen.