-         
+ Antworten
Ergebnis 1 bis 6 von 6

Thema: CCBasic++ nun in der Beta Phase und fast fertig

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.06.2004
    Ort
    Düsseldorf
    Alter
    32
    Beiträge
    158

    CCBasic++ nun in der Beta Phase und fast fertig

    Hallo,

    ich wollte allen Interessierten mitteilen, dass die Programmiersprache CCBasic++ nun in der Beta Phase (Beta 1.3 zu diesem Zeitpunkt) angelangt ist. Damit ist die erste Hauptversion des Compilers und der Entwicklungsumgebung (unter Vorbehalt) fertig.

    CCBasic++ ist eine Programmiersprache für die C-Control I Generation und unterstützt auch die neue M Unit. So ist CCBasic++ auch in der Lage einige Bugs der neuen M Unit "on the fly" beim Kompilieren zu beheben.

    Der Syntax der Sprache ist gekennzeichnet durch einen modernen und intuitiven, sprich einfachen, Basic Dialekt, der jedoch soweit modifiziert wurde, dass Umsteiger vom "alten" CCBasic keine Probleme mit der Syntax haben sollten. Neben strukturierter Programmierung (Funktionen, Funktionsparameter, Lokale und Globale Variablen) bietet CCBasic++ noch vieles mehr (u.a. Objekte, eigene Datentypen, Referenzen (~Zeiger), Festkommazahlen, ...). Die mitgelieferte Entwicklungsumgebung des Compilers verfügt über Syntax Hervorhebung und die sog. "IntelliSenseBox". Außerdem liegt dem Entwicklerpaket noch eine umfangreiche Dokumentation und Entwicklerreferenz bei.

    Das gesamte Paket steht kostenlos auf der Homepage (http://www.fdos.de/ccbpp) von CCBasic++ zum download bereit. Anregungen und Kritik können gerne im CCBasic++ eigenen Forum geäußert werden.

    Schönes Wochenende noch ;o)
    http://www.tappertzhofen.eu/bpp2

    Basic++ Programmiersprache
    für den C-Control I Mikrocontroller

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    23.11.2004
    Ort
    Heidelberg
    Beiträge
    10
    hallo tappi,

    ich habe gerade deine dokumentation für BASIC++ gelesen und möchte dir meine hochachtung für diese arbeit mitteilen.
    ich habe mich in meiner arbeit sehr viel mit objektorientierter programmierung befasst und kann dir bestätigen,
    dass dein BASIC++ dem simplen CCBasic um welten voraus ist!

    eine kleinigkeit ist mir jedoch noch aufgefallen, die mich als objekt-guru stören würde:

    Leider ist es nicht möglich auf ein Objekt zuzugreifen, wenn ein anderes Objekt
    noch "aktiv" ist. Deswegen muss zunächst das Objekt mit der Standart Funktion
    [ObjektName].INIT initialisiert werden. Am Ende müssen Sie dann noch
    sicherstellen, dass mit der Funktion "OFF" Das Objekt abgeschaltet wird.
    woher diese einschränkung kommt, ist mir natürlich klar.
    im CCBasic muss man vor jeder PRINT-operation eine umleitung aktivieren!

    aber warum kannst du dir nicht über ein status-byte merken, welche umleitung zuletzt aktiv war und bei einem zugriff
    auf eines dieser objekte dann (automatisch) die notwendige umleitung aktivieren ?

    nach meinem verständnis sollte das kein problem sein.
    es kostet nur ein byte ram und einen IF, der bei jedem objektzugriff sicherstellt, dass die umleitung (noch) richtig steht.

    dann können deine anwender problemlos folgenden oo-code schreiben:

    Code:
    WITH IR
    	.SEND MyAddress, MyCommand
    	LCD.CLEAR ' Display leeren
    	LCD.PRINT "Test"
    	.GET MyAddress, MyCommand
    END WITH
    gruss
    martin
    Mein Link für Visual-Basic Grossprojekte (Architektur, Objektrelationales Mapping, Code-Generator, etc.):
    http://www.TypeLift.com und privat: http://www.lago-rundflug.de

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.06.2004
    Ort
    Düsseldorf
    Alter
    32
    Beiträge
    158
    Hallo,

    die Idee finde ich sehr gut. Mit dem OPTION Befehl kann man ja gewisse Modi beim Compilieren erzeugen (habe grade den Option Explicit Modi eingeführt). Da kann ich das mit einbauen, zum Beispiel: "OPTION Dynamic" für Dynamische Speicherzuweisung und Objekte. Da kann ich mir mal Gedanken drüber machen.

    Gruß,

    Stefan
    http://www.tappertzhofen.eu/bpp2

    Basic++ Programmiersprache
    für den C-Control I Mikrocontroller

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    23.11.2004
    Ort
    Heidelberg
    Beiträge
    10
    hallo stefan,

    ich hänge hier noch ein beispiel code-stück (visual-basic) an,
    mit dem ich nochmal zeigen will, wie ich das mit dem einen IF und dem einen byte RAM meine.

    jede extended class (SERIAL, LCD, IR, etc.) kann damit den ausgabekanal für sich reservieren.

    gruss martin


    Code:
    'Global Namespace
    '----------------
    Const ObjSERIAL = 0 'Jede Klasse bekommt eine eigene ID
    Const ObjLCD = 1
    Const ObjIR = 2
    Const ObjRD = 3
    Const ObjIIC = 4
    
    Public ActiveObjID As Integer '<-- dieses eine Byte RAM wird zur Status-Verwaltung gebraucht und hält
                                      'fest, weiche ID gerade den PRINT-Kanal für sich reserviert hat
    
    'LCD.cls
    '-------
    Function Clear()
        'Die Umleitung auf das LCD wird mit PRINT"#ON_LCD#"; aktiviert.
        'Danach können Sie mit PRINT oder PUT auf das LCD schreiben bzw. Kommandos zur
        'Formatierung übermitteln.
        If Not ActiveObjID = ObjLCD Then
            'Schalte Umleitung für LCD-Objekt aktiv
            PRINT"#OFF#";
            PRINT"#ON_LCD#";
            ActiveObjID = ObjLCD 'Reservierung jetzt für mich
        End If
        Print "#CLR"; '-> LCD Löschen
    End Function
    
    Function PRINT(Var)
        If Not ActiveObjID = ObjLCD Then
            'Schalte Umleitung für LCD-Objekt aktiv
            PRINT"#OFF#";
            PRINT"#ON_LCD#";
            ActiveObjID = ObjLCD 'Reservierung jetzt für mich
        End If
        Print Var; '-> Schreibt den Wert ins LCD
    End Function
    
    'IR.cls
    '------
    Function Send(Address As Long, Command As Long)
        'Ist die Umleitung auf das IR MODULE mit
        'PRINT"#ON_IR#";
        'aktiviert, so können sie mit PUT u. GET Daten senden bzw. empfangen.
        If Not ActiveObjID = ObjIR Then
            'Schalte Umleitung für IR-Objekt aktiv
            PRINT"#OFF#";
            PRINT"#ON_IR#";
            ActiveObjID = ObjIR 'Reservierung jetzt für mich
        End If
        PUT Address
        PUT Command
    End Function
    
    Function Get(Address As Long, Command As Long)
        '... genauso
    End Function
    Mein Link für Visual-Basic Grossprojekte (Architektur, Objektrelationales Mapping, Code-Generator, etc.):
    http://www.TypeLift.com und privat: http://www.lago-rundflug.de

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.08.2004
    Ort
    Stuttgart
    Alter
    41
    Beiträge
    849
    Hallo Tappi!

    Ich habe eben die BASIC++ IDE von dir in der deutschen Version heruntergelade und auf meiner 2.0er getestet. Die Sache mit den Funktionen finde ich super. Das entspricht meiner Vorstellung von Programmierung da ich in VB6.0 fit bin und sehr viel damit programmiere. Das mit den Type-Blöcken ist auch gut geeignet in meinem Fall. Dies lässt mir die Möglichkeit beim sequenziellen Schreiben von Daten "Datensätze" zu erzeugen. Damit kann ich im EEPROM geschickt und übersichtlich herumscrollen zur Laufzeit. Das mit der I2C-Funktionalität will ich in den nächsten Tagen noch testen da ich es eh brauche und auch auf Pin 9 und 10 arbeite. Ebenso den Freq-Port zu einem Ereignisszähler zu verwenden um nicht den Int-Pin zu belasten. Woran ich eben noch knoble ist die Realisierung einer Zeitscheibe für ein simultanes Multitasking mehrerer Routinen. Da fehlt leider das Assembler. Schade eigentlich. Muss eben irgendwie auch ohne gehen.

    Das einzigst störende ist da du eine RTF-Box verwendest beim Speichern immer der Inhalt der RTF-Box neu geladen wird und damit nach oben gescrollt wird zum Anfang des Programms. Ich überlege eben schon welche API man dafür verwenden könnte die aktuelle Position einer RTF-Box zu ermitteln und diese auch wieder an die alte Stelle zu scrollen. Vieleicht als Anregung für die nächste Version wäre es geschickt wenn die Gross- / Kleinschreibung der Befehle automatisch ablaufen würde. Also eine Eingabe von 'end if' zu 'End If' korregiert würde. Macht den Code einfach säuberer.

    Grüsse Wolfgang

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.06.2004
    Ort
    Düsseldorf
    Alter
    32
    Beiträge
    158
    Zitat Zitat von BlueNature
    Hallo Tappi!

    Ich habe eben die BASIC++ IDE von dir in der deutschen Version heruntergelade und auf meiner 2.0er getestet. Die Sache mit den Funktionen finde ich super. Das entspricht meiner Vorstellung von Programmierung da ich in VB6.0 fit bin und sehr viel damit programmiere. Das mit den Type-Blöcken ist auch gut geeignet in meinem Fall. Dies lässt mir die Möglichkeit beim sequenziellen Schreiben von Daten "Datensätze" zu erzeugen. Damit kann ich im EEPROM geschickt und übersichtlich herumscrollen zur Laufzeit. Das mit der I2C-Funktionalität will ich in den nächsten Tagen noch testen da ich es eh brauche und auch auf Pin 9 und 10 arbeite. Ebenso den Freq-Port zu einem Ereignisszähler zu verwenden um nicht den Int-Pin zu belasten. Woran ich eben noch knoble ist die Realisierung einer Zeitscheibe für ein simultanes Multitasking mehrerer Routinen. Da fehlt leider das Assembler. Schade eigentlich. Muss eben irgendwie auch ohne gehen.

    Das einzigst störende ist da du eine RTF-Box verwendest beim Speichern immer der Inhalt der RTF-Box neu geladen wird und damit nach oben gescrollt wird zum Anfang des Programms. Ich überlege eben schon welche API man dafür verwenden könnte die aktuelle Position einer RTF-Box zu ermitteln und diese auch wieder an die alte Stelle zu scrollen.

    Grüsse Wolfgang
    Hallo,

    mit der IDE bin ich auch noch nicht zufrieden. Übrigens kann man Objekte nicht ins EEPROM schreiben. Dafür musst Du jedes Element seperat eintragen. Das liegt daran, dass der EEPROM Speicher kein Objekt ist (zumindest nicht als solches Aufgefasst wird). "Multitasking" geht mit der _ganz_ neuen M Unit (die grade auf dem Markt ist/kommt). Auf jedenfall mit der Unit, welche nen Timer Interrupt machen kann (schau mal auf www.c-control-support.de). Da wird dann alle 20 ms ein Timer ausgelöst und darüber kann man mit ein wenig Wissen über Multitasking von Betriebssystemen was mit machen. Aber halt nur in Ansätzen... aber immerhin!

    Gruß,

    Stefan
    http://www.tappertzhofen.eu/bpp2

    Basic++ Programmiersprache
    für den C-Control I Mikrocontroller

+ Antworten

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •