Hallo zusammen,
ich hab in Bascom diesen Code geschrieben:
$regfile = "attiny13.dat"
$crystal = 1200000
Dim B As Byte
Dim I As Integer
Open "comd.0:19200,8,n,1" For Input As #2
For I = 1 To 60
B = Inkey(#2)
If B = 126 _
Then
Else
If B = 255 _
Then
End If
End If
Next I
Close #2
End
Bascom zeigt mir immer an, dass die letzte Zeile fehlerhaft wäre, wieso?
Vielen Dank für eure Unterstützung!
>Bascom zeigt mir immer an, dass die letzte Zeile fehlerhaft wäre, wieso?
Ich rate mal: ein END IF zuviel wegen ELSE?
Das ist es nicht, dann zeigt er immer noch einen Fehler an, ich hab zwei If und zwei End If benutzt.
>Das ist es nicht, dann zeigt er immer noch einen Fehler an, ich hab zwei >If und zwei End If benutzt. Stimmt;) Ich sollte zu bascom besser nix posten:( Soll dein Programm eigentlich nach der for loop aufhören? Oder fehlt da irgendwo ein do loop oder sowas? Wie gesagt kenn mich mit bascom nich so aus.
Nochmal abschreiben wirkt wunder, obwohl es das gleiche ist. Komisch! $regfile = "attiny13.dat" $crystal = 1200000 Dim B As Byte Dim I As Integer Open "comb.0:1000, 8,n,1,Inverted" For Input As #1 For I = 1 To 60 B = Inkey(#1) If B = 126 _ Then Else If B = 255 _ Then End If End If Next I Close #1 End
Ja, nach der For-Schleife hörts aus, aber bei Then und Then schreib ich noch was rein.
>Ja, nach der For-Schleife hörts aus, aber bei Then und Then schreib ich >noch was rein. Dein Programm läuft also genau so lange bis i=60? Und danach gar nicht mehr? Ist das so gewollt?
>Nochmal abschreiben wirkt wunder, obwohl es das gleiche ist. >Komisch! Es ist nicht das Gleiche! Du hast oben Comd.0 als Port öffnen wollen. Der kleine Kerl hat aber nur Port B. Das passiert schon mal....;-) MfG Paul
Oh, das hab ich übersehen.
Vielen Dank.
Ich hab leider noch nen Problem, Bascom ist recht dumm.
Ich öffne in einem If einen ComPort, Bascom meint, der wäre aber schon
geöffnet, nur weil das Close im If steht. Wie kann ich das ändern, oder
kann ich den Fehler einfach ignorieren?
$regfile = "attiny13.dat"
$crystal = 1200000
Dim B As Byte
Dim I As Integer
Open "comb.0:1000, 8,n,1,Inverted" For Input As #1
Do
B = Inkey(#1)
Loop Until B > 0
If B = 126 _
Then
For I = 0 To 63
Do
B = Inkey(#1)
Loop Until B > 0
Writeeeprom B , I
Next
Close #1
Else
If B = 255 _
Then
Close #1
Open "comb.0:1000, 8,n,1,Inverted" For Output As #2
For I = 0 To 63
Readeeprom B , I
Print #2 , B
Next
Close #2
End If
End If
End
Den Fehler kannst Du nicht ignorieren, weil dann ganz einfach nicht kompiliert wird und Du keine .hex-Datei bekommst. Bascom ist nicht so dumm, wie du denkst... ;-) Du hast einen Denkfehler drin: Nur wenn B= 126 oder 255 ist, wird der Stream 1 geschlossen. MfG Paul
Weiß ich, aber der andere Stream wird doch auch nur in einem dieser Fälle geöffnet.
Mußt Du wirklich über den gleichen Pin senden und empfangen?
Es wäre einfacher, Pinb.0 und Pinb.1 für Senden und Empfangen zu nehmen.
Dann könntest Du Close#1 und close #2 ganz unten hinschreiben, wie es
Bascom gerne hätte.
$regfile = "attiny13.dat"
$crystal = 1200000
$hwstack = 8
$swstack = 2
$framesize = 5
Dim B As Byte
Dim I As Integer
Do
Open "comb.0:19200, 8,n,1,Inverted" For Input As #1
Open "comb.1:19200, 8,n,1,Inverted" For Output As #2
Do
B = Inkey(#1)
Loop Until B > 0
If B = 126 Then
For I = 0 To 63
Do
B = Inkey(#1)
Loop Until B > 0
Writeeeprom B , I
Next
Else
If B = 255 Then
For I = 0 To 63
Readeeprom B , I
Print #2 , B
Next
End If
End If
End
Close #1
Close #2
Loop
MfG Paul
>Mußt Du wirklich über den gleichen Pin senden und empfangen?
Das geht sowieso nur wenn die Gegenstelle das erlaubt;)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.