Archiv verlassen und diese Seite im Standarddesign anzeigen : komische Fehler in Bascom? was ist falsch???
wie ist die oben genannte frage zu beantworten? ich denke ja bin mir aber nicht sicher ...
dankeschön
Das läst sich sehr leicht ohne besonderes Equip herausfinden indem man einfach einen langen Wait nimmt und dann einen IRQ auslöst.
Zb. Wait 10 und bei einem Pin-IRQ (Taster am Pin) eine LED an einem anderen Pin Toggelt.(Debounce nicht vergessen)
gut die frage hat sich eh erledigt das ichs nu ganz anders mach;) trotzdem danke....
nun hab ich ein anderes problem.
ich möchte 7 zeichen auswerten ->so aufgebaut:
"licht:1"
demnach muss ich 7 zeichen empfangen
da ich das rn128 funk board habe.... mache ich das mit
Do
Zahl = Zahl + 1
Z = Inkey()
If Z <> 0 Then Licht = Licht + Chr(z)
If Len(licht) = 7 Or Zahl = 20 Then Exit Do
Loop
zahl is sowas wie ein überlauf das die schleife nicht ewig weiterläuft wenn nix kommt...(ja hätte auch ne for to next schleife nehmen können.
dannach folgt das:
If Len(licht) = 7 Then
Tempo = Mid(licht , 7 , 1)
Modus = Val(tempo)
Select Case Modus
Case 0 'beide Modis aus
Portb.6 = 0
Portb.7 = 0
Case 1 '2. Blinkmodus an
Portb.6 = 1
Portb.7 = 0
Case 2 'Landelichter an
Portb.6 = 0
Portb.7 = 1
Case 3 'beide Modis an
Portb.6 = 1
Portb.7 = 1
End Select
End If
hier meckert er 4 mal...ka warum...
in der zeile:
tempo=mid(lciht,7,1)
der fehler :
Error:46 Assignement error [Tempo: 0 MID(LICHT,7,1):200]
dann
modus=val(tempo)
der fehler :
Error:46 Assignement error [MODUS: 0 VAL(TEMPO):200]
error:7 IF THEN expectet [158]
der letzte
error:123 END IF expectet
vor allem die letzten 2 versteh ich nicht....is ja alles da?!stört sich bascom an dem select case darin???
Ich sehe nicht wo du synchronisierst.
Wo willst du wissen wo Anfang und Ende ist ?
Ich würde es mit Startbit,Stopbit und am besten noch mit CRC-summe machen damit du weißt ob das "Telegramm" auch gültig ist.
hmm das is ja erst mal egal...ich will ja erst mal diese blöden fehler rausbekommen....dann kann ich den string noch überprüfen
Is denn "tempo" sicher als "string" definiert ?
Wär besser, du stellst den ganzen Code (aber unzensiert) da rein.
ok..hier....das ganz lies noch einen temperatursensor aus..
$regfile = "m128def.dat" ' Bei Mega 128 "
$framesize = 60
$swstack = 60
$hwstack = 60
$crystal = 16000000 'Quarzfrequenz
$baud = 19200 'Baudrate für Funkmodul
$baud1 = 9600 'Baudrate für MAX
Dim A As Single
Dim B As Single
Dim Z As Byte
Dim Zahl As Single
Dim Licht As String * 7
'Aus- und Eingänge
Ddrb = &B11000000
'I2C Deklarationen
Config Scl = Portd.0
Config Sda = Portd.1
Declare Function I2cstart() As Byte
Declare Sub Ic2send(byval Databyte As Byte) As Byte
Declare Sub Funtion I2creceive(byref Databyte As Byte) As Byte
Declare Sub Sub I2cstop
'Deklaration abgeschlossen
Config Pine.2 = Output
Rdy_hostempfangsbereit Alias Porte.2 'Auf Low setzen wenn Empfangsbereit für Daten vom Funkmodul
Config Pine.5 = Input
Bsy_funkmodulsendebereit Alias Porte.5 'Ist Low wenn Funkmodul frei zum senden
Open "com2:" For Binary As #2 'Ausgabe über zweite serielle Schnittstelle (MAX)
Sound Portg.2 , 2000 , 800 'gibt einen langen Kontrollton aus
Sound Portg.2 , 1000 , 600 'gibt einen kurzen Kontrollton aus
Config Serialin = Buffered , Size = 120
Config Serialout = Buffered , Size = 120
Config Serialout1 = Buffered , Size = 120
Enable Interrupts
' ---------------------------------------------------
Print "### Initalisierung erfolgreich abgeschlossen! ###" 'Kopfzeilen senden
Print "### Dieses Programm wurde im Rahmen einer Facharbeit von Stefan Rau geschrieben. ###"
Print ""
Wait 1
Print "### Messung initalisieren... ###"
Wait 1
'i2cstart
Dim Device As Byte
Dim Deviceread As Byte
Dim Lowtemp As Byte
Dim Hightemp As Byte
Dim Value As Word '!!!!!!!
I2cinit
Device = 144 'Wenn alle Adressleitungen des 1621 auf GND sind.
Deviceread = 145
'----------------------------------------------Hauptprogramm------------------------------------------------------------
B = 0
Do
I2cstart
I2cwbyte Device
I2cwbyte &HEE 'Temperaturmessung anstoßen
I2cstop
I2cstart
I2cwbyte Device
I2cwbyte &HAA 'Temperaturmessung Lesekommando
I2cstop
I2cstart
I2cwbyte Deviceread
I2crbyte Lowtemp , Ack 'LSB holen
I2crbyte Hightemp , Nack 'MSB holen
I2cstop
Value = Lowtemp * 10
If Hightemp = 128 Then
Value = Value + 5
End If
Print "Temp:" ; Value
B = B + 1
If B = 15 Then Sound Portg.2 , 20 , 800 : B = 0
Waitms 500 'Pause bis zur nächsten Messung
'lichtmodus überprüfen
Rdy_hostempfangsbereit = 0 'empfangsbereitschaft am funkmodul herstellen
Do
Zahl = Zahl + 1
Z = Inkey()
If Z <> 0 Then Licht = Licht + Chr(z)
If Len(licht) = 7 Or Zahl = 20 Then Exit Do
Loop
If Len(licht) = 7 Then
Tempo = Mid(licht , 7 , 1)
Modus = Val(tempo)
Select Case Modus
Case 0 'beide Modis aus
Portb.6 = 0
Portb.7 = 0
Case 1 '2. Blinkmodus an
Portb.6 = 1
Portb.7 = 0
Case 2 'Landelichter an
Portb.6 = 0
Portb.7 = 1
Case 3 'beide Modis an
Portb.6 = 1
Portb.7 = 1
End Select
End If
'lichtmodustest
'Portb.6 = 1
'Wait 5
'Portb.6 = 0
'Wait 5
'ende lichtmodustest
Loop
End
*grmpf*
Tempo, Modus: Diese beiden Seppeln hast du gleich gar nicht definiert, wohl, um nix falsch zu machen
Füg' das mal ein, und ein weiteres Weihnachtswunder wird geschehen
Dim Tempo As String * 3
Dim Modus As Byte
Das ist erstmal nur, damit Bascom nicht gar so verzweifelt ist.
Wenn's nicht funzt, reden wir weiter :-)
oha....das war mein fehler.....das hatte ich schon mal drinne aber als es net funktionierte hab ich alles was ich geändert hatte wieder rausgelöscht....dann hab ich das wohl vergessen...dankeschön...;)
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.