Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Fehlermeldung: erwartete 'OEF' Kategorie: Programmierung Basic (von Markus - 5.12.2012 23:06)
Als Antwort auf Re: Fehlermeldung: erwartete 'OEF' von Jürgen A. - 5.12.2012 16:08
Ich nutze:
C-Control Pro Mega128
> > > > > > Hallo,
> > > > > >
> > > > > > ich bin absoluter Neuling beim Programmieren mit BASIC. Bei jedem Versuch ein Programm
> > > > > > zu Kompilieren wird die Fehlermeldung
> > > > > > "Syntax Fehler - erwartete 'EOF'  , gefunden 'define'"
> > > > > > angezeigt
> > > > > >
> > > > > > Mein Miniprogramm zum Ausprobieren lautet im Moment :
> > > > > >
> > > > > > define eingang1 PORT[1]
> > > > > > define eingang2 PORT[2]
> > > > > > define ausgang3 PORT[3]
> > > > > >
> > > > > > Sub main()
> > > > > > If       eingang1 = True
> > > > > >     And  eingang2 = True
> > > > > >     Then ausgang3 = True
> > > > > >     Else ausgang3 = False
> > > > > > End If
> > > > > >
> > > > > > End Sub

> > > > > >
> > > > > > Ich programmiere mit C-Control Pro IDE eine C- Controll Pro Mega 128
> > > > > >
> > > > > > Beim Doppelklicken auf den Fehlercode wird immer die erste beschriebene Programmzeile markiert.
> > > > > > Bei "gefunden" im Fehlertext wird immer das erste Wort im Programm angezeigt.
> > > > > >
> > > > > > Was muss ich tun, dass dieses Problem nicht mehr Auftaucht.
> > > > > >
> > > > > >
> > > > > > Vielen Dank im Vorraus
> > > > > > Markus
> > > > > >
> > > > >
> > > > > Hallo Markus,
> > > > >
> > > > > die Syntax die Du benutzt ist nicht kompatibel zur C-Control Pro. Stammt die vielleicht
> > > > > von der C-Control I? Bitte schau in die Demoprogramme die mitgeliefert werden.
> > > > >
> > > > > Gruss Peter
> > > >
> > > >
> > > > Hallo Peter,
> > > > Danke für die schnelle Antwort. Ich werde mich mal durch die Demoprogramme wühlen. Wei�t du ob
> > > > es irgendwo ein Dokument gibt in dem der Syntax der C-Control Pro anschaulich und allgemein
> > > > gehalten aufgelistet ist?
> > > >
> > > > GruÃ? Markus
> > >
> > > Hallo Markus,
> > >
> > > die Syntax des BASIC ist an Visual Basic angelehnt. Im Handbuch ist unter
> > > Compiler die Syntax knapp zusammengefasst. Schau Dir mal eine Einführung
> > > in ein älteres Visual Basic an, dann versuch vielleicht mal die Demoprogramme
> > > zu verstehen. Einige Features wie Klassen oder Structures werden aber nicht
> > > unterstützt.
> > >
> > > Gruss Peter
> >
> >
> > Danke
>
>
> hi
>
> bin auch noch nicht so der Mega Programmer, aber
> das scheint wirklich ein Code aus der ccBasic Reihe zu sein.
>
> bei der Mega habe ICH noch keine Zuweisung des Portes auf eine define Alias zuweisung gefunden.
> Was nicht heiÃ?en soll das es diese garnicht gibt, mir ist es eben nur noch nicht vor die Augen
> gekommen.
>
> Deinen Code würde ich, mit meinen geringen wissen zur 128 wie folgt umsetzen.
> Ob jetzt 100%ig richtig weiÃ? ich nicht.... denke ja
>
> #define eingang1 1                            'Achte auf die Raute am anfang # PORT[1] etc. gibt
> #define eingang2 2                            'es soweit ich weiÃ? nicht.
> #define ausgang3 3
>
> Sub main()
>       Port_DataDirBit(eingang1,0)             'die richtung des Portes auf Eingang
>       Port_DataDirBit(eingang2,0)             'die richtung des Portes auf Eingang
>       Port_WriteBit(eingang1,1)               'Die Funktion  Port_WriteBit setzt den Wert
>                                               'eines Pins, der auf Ausgang geschaltet ist.
>                                               'Ist ein Pin auf Eingang geschaltet, so kann der
>                                               'interne Pullup Widerstand eingeschaltet (1)
>                                               'oder abgeschaltet (0) werden.
>       Port_WriteBit(eingang2,1)               '
>
>
>       Port_DataDirBit(ausgang3,1)             'die richtung des Portes auf Ausgang
>
>       Do While(1)                             'Endloser Programmlauf, sonst würde es sofort
>                                               'nach C-C Start beendet werden
>
>               If eingang1 = True And  eingang2 = True Then
>                       Port_WriteBit(ausgang3,PORT_ON)
>               Else
>                       Port_WriteBit(ausgang3,PORT_OFF)
>               End If
>       End While                               'Ende der While schleife
> End Sub
>

>
> Ich hoffe ich Anfänger konnte dir etwas helfen, die sache zu verstehen, falls ich mist hier erzähle
> bzw. fabriziert habe, darf gern jemand uns auf den rechten Pfad bringen ;)
>
> Gru� Jürgen

Hallo,
Vielen Dank für deine Antwort. Leider funktioniert das so auch nicht. Der Kompilierfehler
ist zwar behoben (Klar der Syntax stimmt) allerdings ist die Funktion nicht gegeben.
Um zu verstehen warum sollte ich folgendes wissen:
Mit dem #define Befehl wird doch einer Variable eine Textkonstante zugeordnet
- kann diese als Text hinterlegte Zahl überhaupt noch als Zahlenwert verwendet werden?
- Wenn Ja, steht dann nicht in der IF Then Funktion nicht

  If 1 = True And  2 = True Then
                        Port_WriteBit(ausgang3,PORT_ON)
                Else
                        Port_WriteBit(ausgang3,PORT_OFF)
                End If

  ich meine mal gelesen zu haben (bitte korriegieren falsch falsch!!!), dass alle
  Zahlenwerte die nicht 0 sind True sind. Das würde erklären warum am Ausgang
  dauernd ein High signal anliegt.

  falls das soweit alles richtig war müsste diese IF THEN Funktion so lauten:

  If Port_ReadBit(Eingang1) = True And Port_ReadBit(Eingang2) = True  Then
     Port_WriteBit (Ausgang1,PORT_ON)
     Else
     Port_WriteBit (Ausgang1,PORT_OFF)
  End If


leider Funktioniert das so auch nicht! Jetzt kommt nach einer kurzen Zeit nach dem
Start drücken der Ausgang. Beim Betätigen des Eingang1 passiert nichts. Beim
Betätigen von Eingang2 geht der Ausgang aus und kommt wieder nach einer kurzen zeit.

Mein Programm lautet:

Sub main()

' Variablen deklarieren

#define Eingang1 16
#define Eingang2 17
#define Ausgang1 18

' Ports deklarieren

Port_DataDirBit(Eingang1,0) ' Eingang 1
Port_DataDirBit(Eingang2,0) ' Eingang 2
Port_DataDirBit(Ausgang1,1) ' Ausgang

Port_WriteBit (Eingang1,1)
Port_WriteBit (Eingang1,1)

Do While (1)
' Programm starten

If Port_ReadBit(Eingang1) = True And Port_ReadBit(Eingang2) = True  Then
Port_WriteBit (Ausgang1,PORT_ON)
Else
Port_WriteBit (Ausgang1,PORT_OFF)
End If

End While




End Sub

GruÃ? Markus



    Antwort schreiben


Antworten:

Re: Fehlermeldung: erwartete 'OEF' (von Jürgen A. - 6.12.2012 12:41)