Archiv verlassen und diese Seite im Standarddesign anzeigen : Displaymenü
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 :-k .
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
Hi,
Danke erst einmal. Hab jetzt alles verbessert, es gibt aber trotzdem noch Fehler:
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]
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.
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
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
$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
Füge mal dies noch oben bei den DIMs hinzu:
Dim ___lcdno As Byte
Gruß
Rolf
statt "Menuewert = Menuewert + 1"
kannst du auhc "incr Menuewert" schreiben
fürs subtraieren gibts auhcnoch ein befehle den weiß ich grad leider net
Hi,
danke jetzt funktioniert alles. @Bammel: du meinst increase und decrease, oder?
Incr xxx erhöht den Wert xxx um eins
und Decr um eins weniger.
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
Hast recht ist um einiges schneller.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.