Änderungen V9.1 Changes V9.1 

Liste der Änderungen und Neuerungen in EasyCODE 9.1

 

 

(Wichtige und/oder größere Änderungen/Neuerungen sind mit !!! gekennzeichnet.)

Struktogramme

  • !!!
    Struktogramme für Java:
    • Java-Dateien als Struktogramm öffnen
    • Neues Java-Struktogramm erstellen
    • Java-Code im Struktogramm editieren
    • Struktogramm als Java-Datei speichern

  • !!!
    Struktogramme für C#:
    • C#-Dateien als Struktogramm öffnen
    • Neues C#-Struktogramm erstellen
    • C#-Code im Struktogramm editieren
    • Struktogramm als C#-Datei speichern

  • !!!
    EasyCODE unterstützt nun auch die Zusammenarbeit mit dem Entwicklungstool MPLAB® X von Microchip®:
    Ein Plugin für MPLAB® X sorgt für den Austausch von Debug-Daten zwischen MPLAB® X und EasyCODE und ermöglicht das Debuggen im Struktogramm.
    Das Plugin befindet sich im EasyCODE-Unterverzeichnis „Plugins“ und muss in MPLAB® X installiert werden. Weitere Informationen in der Dokumentation zum Plugin.

  • Struktogramme für C/C++:
    Auch Funktionen, bei denen das Schlüsselwort struct oder enum als Rückgabe angegeben ist, können nun als Struktogrammelemente eingelesen werden.

  • Struktogramme für C/C++:
    Unter Optionen > Sprachspezifische Struktogrammeinstellungen kann nun eingestellt werden, dass beim Einfügen von switch-Elementen die case-Elemente jeweils ein leeres Anweisungselement enthalten.

  • In der EasyCODE-Standard-Debugschnittstelle ist nun auch die Anzeige von Variableninfos bei MouseOver in der Struktogrammansicht möglich, ähnlich wie bei der Debug-Schnittstelle zu Keil uVision (UVSOCK).

  • Struktogramme für C/C++:
    Bugfix bei Präprozessorelementen:
    Das Einfügen von Präprozessor-Alternativen war manchmal schwierig, weil kein Freiraum zum Anklicken der #ifdef-Anweisung vorhanden war.
    Jetzt ist hinter der Bedingung ein Leerraum geschaffen worden; zusätzlich kann nun während des Einfügevorgangs auch auf den Plus/Minus-Button oder auf das Schlüsselwort geklickt werden, um die #ifdef-Anweisung zu markieren.

Zustandsdiagramme

  • !!!
    Über den Befehl „Neues Projekt für Zustandsdiagramme“ (zu finden im Menü „Projekt“ und im Startfenster) kann nun mit wenigen Klicks ein Projekt erstellt werden, das mehrere zusammengehörige Zustandsdiagramme verwaltet und daraus den Code generiert.

  • !!!
    Optional wird nun für ein Zustandsdiagramm die Membervariable „extra“ generiert. Damit hat jede Instanz des generierten Zustandsautomaten ein eigenes angehängtes Datenobjekt.
    Unterhalb des Zustandsdiagramms kann der Typ für diese Membervariable angegeben werden. (Wenn kein Typ angegeben ist, wird die Membervariable nicht generiert.)
    Auf die Membervariable kann in den Aktionen und Guards des Zustandsdiagramms per „me.extra“ (C++, C) oder „this->extra“ (C++) bzw. „pThis->extra“ (C) zugegriffen werden.
    Im exportierten XML-Baum befindet sich der Typ unter:
    DOCUMENT/STATEMACHINE/TYPE_OF_EXTRA

  • !!!
    In den Guards und Aktionen des Zustandsdiagramms können nun die folgenden Bezeichner verwendet werden, um auf aktuelle Instanzen zuzugreifen:

    me:
    Der Zustandsautomat

    base:
    Der von CEcBaseStatemachine geerbte Teil des Zustandsautomaten

    base_extra:
    Die Extra-Membervariable des von CEcBaseStatemachine geerbten Teils des Zustandsautomaten

    sub:
    Der ggfs. in einem Zustand inkludierte Zustandsautomat

    Beispiele:
    me.extra greift auf die Extra-Membervariable des aktuellen Zustandsautomaten zu.
    base_extra greift auf die Extra-Membervariable des Basis-Zustandsautomaten zu.
    sub.extra greift auf die Extra-Membervariable des ggfs. inkludierten Zustandsautomaten zu.

  • !!!
    Statechart-Debugging:
    EasyCODE kann nun Debug-Daten für Statecharts auch von einer UART-Schnittstelle (serielle Schnittstelle) oder aus einer Datei lesen.
    Somit sind die meisten Microcontroller in der Lage, die Debug-Daten, mit denen der aus den Statecharts generierte Quellcode instrumentalisiert ist, zur Laufzeit über UART direkt an EasyCODE zu übermitteln.
    EasyCODE verwendet die empfangenen Debug-Daten unter anderem, um den aktuellen Zustand zur Laufzeit im Diagramm hervorzuheben. (Animation des Zustandsdiagramms.)

    Die Konfiguration für das Lesen von UART oder aus einer Datei erfolgt unter Menü Optionen > Zustandsdiagramm-Einstellungen > Debugging.

    Die Funktion CEcFramework_sendDebugInfoToEasyCODE() in der Framework-Datei EcCustomize.c/cpp ist erweitert worden um Code für die Übermittlung der Debug-Daten an EasyCODE via DebugStatechart.exe, via UART und via Datei.

    Das Beispielprojekt „Uart_...“ (zu finden im Unterverzeichnis „Samples“ des EasyCODE-Programmverzeichnisses) zeigt eine UART-Implementierung.

  • !!!
    Statechart-Debugging:
    Steuerung des Zielsystems, Ereignis-Injektion:
    Während einer Statechart-Debug-Session über UART kann das Target von EasyCODE aus gesteuert werden:
    • Zustandsautomaten-Debugging starten (Framework initialisieren, Zustandsautomaten starten)
    • Zustandsautomaten-Debugging beenden (Zustandsautomaten stoppen, Framework bereinigen)
    • Ereignis-Injektion:
      Der Befehl dazu kann aus dem Kontextmenü gewählt werden, wenn das Ereignis oder die zugehörige Transition oder Transitionsbeschriftung im Statechart oder im Statechart-Strukturbaum markiert ist.
    • ClockTick-Ereignis-Injektion
    • „do“ auslösen

  • Diese Änderung betrifft das Verhalten eines mittels des EasyCODE-Generierungsskripts erzeugten Zustandsautomaten:
    Wenn der Zielzustand einer Transition innerhalb des Ausgangszustands liegt (SourceState == TargetState.Parent.Parent....), dann wurde bislang bei der Durchführung der Transition auch die Exit-Aktion des Ausgangszustands ausgeführt.
    UML 2.0 verlangt jedoch, dass in diesen Fällen die Exit-Aktion nicht ausgeführt wird:
    „A high-level transition with a target utside the composite state will imply the execution of the exit action of the composite state, while a high-level transition with a target inside the composite state will not imply execution of the exit action of the composite state.” (UML Superstructure Specification v2.0, Seite 555.)
    Jetzt haben wir in der zum EasyCODE-Framework gehörigen Datei EcBaseStatemachine.c/cpp zwei Änderungen vorgenommen (gekennzeichnet mit 120727-02), sodass in dem oben beschriebenen Fall die Exit-Aktion nicht mehr ausgeführt wird und das Verhalten somit UML2.0-konform ist.

  • Bei der Generierung eines switch-case aus einem Zustandsdiagramm werden in die bislang leeren default-Zweige jetzt breaks eingefügt. (Einige Compiler erwarten dies.)

  • Beim Bewegen eines Zustands über ein ursprünglich außerhalb des Zustands liegendes Kreuzungsobjekt (Junction) kam es bislang zu dem unerwünschten Effekt, dass das Kreuzungsobjekt vom Zustand „gefangen“ wurde, d.h. fortan wurde das Kreuzungsobjekt automatisch mit dem umschließenden Zustand gemeinsam bewegt.
    Dieser Effekt ist nun weitgehend beseitigt worden:
    Ein Kreuzungsobjekt wird jetzt nur mitbewegt, wenn auch die Objekte, die mit dem Kreuzungsobjekt über eine Transition direkt verbunden sind, innerhalb des Zustands liegen.
    (In diesen Fällen gehören die Kreuzungsobjekte meist zum Subautomaten des Zustands, so dass eine Kopplung Sinn macht.)

  • Beim Schließen eines Editierfelds im Zustandsdiagramm werden Whitespaces (Leerzeichen, Tabs, \r, \n) am Anfang und am Ende des bearbeiteten Textes entfernt. Das erspart dem Anwender Korrekturen und Fehlersuche wegen Texten, die versehentlich nicht leer sind, sondern aus Whitespaces bestehen.

  • Beim Einbinden eines anderen Statecharts als Substatechart eines Zustands: Im Dialog zur Auswahl der Statechart-Datei ist nun das Verzeichnis der aktuellen Statechart-Datei voreingestellt.

  • Bugfix im EcFramework beim Ermitteln von Entry-Ketten.
    Betroffen ist die Funktion
    CEcBaseStatemachine_setupEntryChain_() (in C)
    bzw.
    CEcBaseStatemachine::setupEntryChain() (in C++)

  • Änderungen in EcBaseStatemachine.h/hpp bei der Definition der Makros
    EC_DEBUG_REGISTER_SIGNAL und EC_DEBUG_CLEAR.
    Durch diese Änderungen werden bei einigen Compilern Warnungsmeldungen vermieden.

  • Bugfix:
    Wenn sich ein DeepHistory-Element in einem Zustand befindet, der eine externe Submachine inkludiert, und diese Submachine wird zum ersten Mal aktiviert über eben dieses DeepHistory-Element (d.h. vorher wurde niemals der Startzustand und die Initialtransition der Submachine erreicht):
    Dann wurde bislang nicht der Zustand aktiv, zu dem die DeepHistory-Transition führt, sondern der Zustand, zu dem die Initialtransition führt.

  • Die wichtigsten Codesnippets, die benötigt werden, um die generierten Statemachines in ein Projekt zu integrieren, finden sich jetzt auskommentiert an praktischer Stelle, nämlich in der Framework-Datei EcIncludeInStatemachine.h:
    Code für Initialisierung, Start, Stop, Destruktion der Statemachines sowie für Übergabe von ClockTick- und anderen Events an die Statemachines.
    Diese Codesnippets sollte der Anwender per Copy+Paste an den passenden Stellen in seinem Projekt-Code einfügen.

  • Am EcFramework und in den Codegenerierungsskripts wurden mehrere kleine Optimierungen bzgl. Speicherbedarf vorgenommen.

  • Verbesserung am Verhalten der Auswahlbox beim Text-Editieren im Zustandsdiagramm.

  • In EcDynamic.c/cpp entfernt und in EcDynamic.h/hpp hinzugefügt:
    #include "EcFramework.h/hpp“. Dies ist nötig in dem Fall, dass keine Statemachine inkludiert wurde; andernfalls gibt es Fehlermeldungen beim Kompilieren der Simulation.

  • Bugfix:
    Im Statechart-Strukturbaum funktioniert das Kontextmenü nun auch, wenn ein Element selektiert ist.

  • Bugfix:
    Sporadisch kam es beim Einfügen von Text aus der Zwischenablage in ein Editierfeld zu einem Absturz.

Projektverwaltung

  • !!!
    Neuer Befehl „Neues Projekt für Zustandsdiagramme“.
    Siehe oben unter „Zustandsdiagramme“.

  • Verbesserung bei Funktion „Dateien zum selektierten Ordner hinzufügen“.

Benutzerdefinierte Erstellung

  • Auf Anwenderwunsch wird jetzt bei der Benutzerdefinierten Erstellung optional eine Logdatei ins Arbeitsverzeichnis (i.d.R. das Projektverzeichnis) geschrieben:
    Wenn der Registryeintrag
    Project/BuildManager_UD_strDefaultLogFileName
    nicht leer ist, dann wird dieser als LogFile-Name verwendet (z.B. „Build.log“).
    (Defaultmäßig ist der Eintrag aber leer, und in diesem Fall wird keine Logdatei geschrieben.)

  • Die Platzhalter %PROJECTDIR% und %PROJECTNAME%, die bislang bei der SPX-Generierung, aber nicht in der Benutzerdef. Erstellung verfügbar waren, wurden ersetzt durch %PROJECT_DIR% und %PROJECT_NAME%, die auch in der Benutzerdef. Erstellung verfügbar sind.

  • Wenn in einer Erstellungsstufe ein Text in einer Batch-Datei (*.bat, *.cmd) gespeichert werden soll, dann wird der Text nun ins OEM-Format (= DOS-Format) umgewandelt, wenn er in die Datei geschrieben wird.
    Damit wird vermieden, dass Umlaute und andere Sonderzeichen zu Problemen bei der Ausführung der Batch-Datei führen.

Allgemein

  • Ob das Startfenster beim Öffnen von EasyCODE angezeigt werden soll, kann nun über eine Checkbox unter Menü
    Optionen > Struktogramm-Einstellungen > Öffnen/Speichern
    eingestellt werden.

EASYCODE GmbH, Löwenberger Str. 50, 90475 Nürnberg | Tel: +49 (0)911 / 99 840 60 | Fax: +49 (0)911 / 99 840 97 | info(at)easycode.de 

Impressum | Datenschutzerklärung