-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Displaymenü

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    08.10.2008
    Alter
    25
    Beiträge
    44

    Displaymenü

    Anzeige

    Hi,

    hab ein kleines Problem:

    Ich will ein Displaymenü für eine Zündbox erstellen. Im Displaymenü kann man den kanal und die dazugehörige Zeit einstellen.

    Warum geht aber eine If Bedingung in einer Case Bedingung nicht?

    Ich hab mal einen Ausschnitt mit Kanal A+B angehängt.

    Bin echt am verzweifeln .
    Angehängte Dateien Angehängte Dateien

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Das hat nichts mit der Case Anweisung zu tun, sondern mit der falschen Syntax der IFs.
    Hier fehlt ein Leerzeichen
    If Pinb.3 = 1then
    If Pinb.3 = 1 Then

    Hier fehlt das then
    If Pinb.2 = 1
    If Pinb.2 = 1 Then

    Gruß

    Rolf

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    08.10.2008
    Alter
    25
    Beiträge
    44
    Hi,
    Danke erst einmal. Hab jetzt alles verbessert, es gibt aber trotzdem noch Fehler:
    Code:
       Cls
       Locate 1 , 1
       Lcd "Zündkanal" Menuewert
       Locate 2 , 1
       Lcd "Zündabstand" A
    Hier zeigt er Numeric Parameter expected an. Muss ich die Variablen anders anzeigen lassen?
    Es sollte z.b. am Ende dastehen:
    Zündkanal2
    Zündabstand27

    Dann findet er noch in Line 0 ein If then expected und ein End Select expected. Hab aber am Ende der Case-Bedingung End Select hingeschrieben.

    Mfg,
    Flo[/code]

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Zitat Zitat von fofi1
    Hi,
    Lcd "Zündkanal" Menuewert
    Müsste heißen:
    Lcd "Zündkanal"; Menuewert

    Lies dir mal die Bascom Hilfe genauer durch. Sonst fragst du noch wegen jeden Befehls.
    Zitat Zitat von fofi1
    Dann findet er noch in Line 0 ein If then expected und ein End Select expected. Hab aber am Ende der Case-Bedingung End Select hingeschrieben.
    Dies ist normalerweise ein Hinweis auf einen fehlenden If oder Select Case Befehl.

    Gruß

    Rolf

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    08.10.2008
    Alter
    25
    Beiträge
    44
    Hi,

    das mit dem ; hab ich in der Bascom hilfe nicht gefunden. Danke deswegen.
    Edit: Jetzt zeigt er No more space for bit[LCD_No] und [syntax error token='{] an. Werd daraus ned schlau. Hier noch der verbesserte Prog Text:



    Mfg,
    Flo
    Code:
    $regfile = "m8def.dat"
    $crystal = 1000000
    
    Config Pinb.5 = Input                                       'Cursor Up
    Config Pinb.4 = Input                                       'Cursor Down
    Config Pinb.3 = Input                                       'Vergrößern der zeit
    Config Pinb.2 = Input                                       'Verkleinern der Zeit
    
    Dim A As Integer
    Dim B As Integer
    Dim C As Integer
    Dim D As Integer
    Dim E As Integer
    Dim F As Integer
    Dim G As Integer
    Dim H As Integer
    Dim I As Integer
    Dim J As Integer
    Dim K As Integer
    Dim L As Integer
    Dim M As Integer
    Dim N As Integer
    Dim O As Integer
    Dim P As Integer
    Dim R As Integer
    Dim S As Integer
    Dim T As Integer
    
    Dim Menuewert As Integer
    Menuewert = 0
    
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , E2 = Portc.6 , Rs = Portc.4
    
    Do
    
    If Pinb.5 = 1 Then
    Menuewert = Menuewert + 1
    End If
    
    If Pinb.4 = 1 Then
    Menuewert = Menuewert - 1
    End If
    
    Select Case Menuewert
    
       Case 1
       If Pinb.3 = 1 Then
       A = A + 1
       End If
       If Pinb.2 = 1 Then
       A = A - 1
       End If
       Cls
       Locate 1 , 1
       Lcd "Zündkanal" ; Menuewert
       Locate 2 , 1
       Lcd "Zündabstand" ; A
    
       Case 2
       If Pinb.3 = 1 Then
       B = B + 1
       End If
       If Pinb.2 = 1 Then
       B = B - 1
       End If
       Cls
       Locate 1 , 1
       Lcd "Zündkanal" ; Menuewert
       Locate 2 , 1
       Lcd "Zündabstand" ; B
    
    End Select                                                  'Das geht dann die Buchstaben bis Q durch
    Loop
    End

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Füge mal dies noch oben bei den DIMs hinzu:
    Dim ___lcdno As Byte

    Gruß

    Rolf

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von Bammel
    Registriert seit
    11.12.2004
    Ort
    Bremen
    Alter
    30
    Beiträge
    1.400
    statt "Menuewert = Menuewert + 1"
    kannst du auhc "incr Menuewert" schreiben
    fürs subtraieren gibts auhcnoch ein befehle den weiß ich grad leider net

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    08.10.2008
    Alter
    25
    Beiträge
    44
    Hi,

    danke jetzt funktioniert alles. @Bammel: du meinst increase und decrease, oder?

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.08.2004
    Beiträge
    101
    Incr xxx erhöht den Wert xxx um eins
    und Decr um eins weniger.

  10. #10
    Erfahrener Benutzer Roboter Genie Avatar von Bammel
    Registriert seit
    11.12.2004
    Ort
    Bremen
    Alter
    30
    Beiträge
    1.400
    jap genau das meine ich.. bewirkt zwar das selbe ist aber leichter zu schreiben. und vllt auch im endgültigen code schneller. aber das weis ich nicht

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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