Ich möchte $timeout verwenden, weil bei meinem Programm in ungünstigen Fällen auf einen input gewartet wird, wo keiner kommt. Diese Endlosschleife will ich mit $timeout abbrechen. In der Hilfe steht dazu beim Beispielprogramm:
Dim Sname As String * 10
Dim B As Byte
Do
$timeout = 1000000
Input "Name : " , Sname
Print "Hello " ; Sname
$timeout = 5000000
Input "Name : " , Sname
Print "Hello " ; Sname
Loop
'you can re-configure $timeout
In meinem Programm (das von Babette natürlich ) geht das auch so, hier ein Ausschnitt
Alles anzeigen
Zeile 3 und Zeile 33. Keine Fehlermeldung, das Programm läuft soweit.
Jetzt kommt's, wenn ich Zeile 3 auskommentiere, weil ich meine, da will ich noch kein timeout, dann gibt es weiterhin keine Fehlermeldung, nur das Programm läuft nicht, weil der Befehl aus Zeile 43 offensichtlich nicht ausgeführt wird. Nehme ich Zeile 33 auch heraus, läuft wieder alles. Lasse ich Zeile 3 drin und nehme Zeile 33 raus, läuft auch alles, also, was das power_enable betrifft. Ich hab' jetzt Zweifel am Rest vom Programm, da es sowieso sehr eigenwillig ist. Um das stackProblem möglichst auszuschalten, hab' ich für mein zweidimensionales array einen Platzhalter eingebaut, damit das 'free sram' ordentlich angezeigt wird. Die stackwerte liegen jetzt bei
$hwstack = 100
$swstack = 100
$framesize = 200
und es ist noch 9% vom ram frei.
Irgendwo mache ich wohl einen grundsätzlichen Fehler, wer kann mir einen Tipp geben?
Dim Sname As String * 10
Dim B As Byte
Do
$timeout = 1000000
Input "Name : " , Sname
Print "Hello " ; Sname
$timeout = 5000000
Input "Name : " , Sname
Print "Hello " ; Sname
Loop
'you can re-configure $timeout
In meinem Programm (das von Babette natürlich ) geht das auch so, hier ein Ausschnitt
BASCOM-Quellcode
- ...
- $timeout = 4000000 '8 Sekunden
- Power_enable = 0
- Wait 1
- Lautstaerke = Lautstaerke_eram
- If Lautstaerke > 30 Then
- Lautstaerke = 25
- Lautstaerke_eram = Lautstaerke
- End If
- Gosub Player_init
- Files_in_mp3 = Mp3_getcountusb() 'Gesamtanzahl von files
- Files_in_mp3 = Files_in_mp3 + Mp3_getcountcard()
- For N = 0 To 19
- Ordner = N + 20
- Anzahl_files(n) = Mp3_getfilesinfolder(ordner)
- If Anzahl_files(n) > 20 Then Anzahl_files(n) = 20
- Auswahlbereich(n) = Anzahl_files(n)
- files_in_mp3 = files_in_mp3 - Anzahl_files(n) 'Anzahl der Witze
- Next N
- File_in_play = File_in_play_eram
- If File_in_play > files_in_mp3 Then
- File_in_play_eram = files_in_mp3
- File_in_play = files_in_mp3
- End If
- For N = 0 To 19
- For M = 0 To 19
- Filenummer(n , M) = M + 1
- Next M
- Next N
- Call Mp3_playfromfolder(39 , 1)
- Gosub Warte_auf_file_ende
- $timeout = 1000000 '2 Sekunden
- Enable Pcint0
- Enable Pcint1
- Gosub Aufwachen
- ...
- Player_init:
- Abgeschaltet = 0
- Power_on_zeit = 0
- Mp3_clear_serialbuffer
- Power_enable = 1 'Strom einschalten
- Inputbin #255 , Mp3_asend(mp3_array0) , 10 'nimmt die Meldung des players nach poweron auf
- 'es gibt verschiedene player-Module 10bytes werden immer gesendet, bei manchen wird noch ein zusätzliches &HFF vorneweg ausgegeben
- ' Waitms 100
- N = 1
- If Mp3_asend(mp3_array7) <> 2 And Mp3_asend(mp3_array6) <> 2 Then 'player ist nicht initialisiert
- Do
- Power_enable = 0 'Strom ausschalten
- Wait N
- Mp3_clear_serialbuffer
- Power_enable = 1 'Strom einschalten
- Inputbin #255 , Mp3_asend(mp3_array0) , 10 'nimmt die Meldung des players nach poweron auf
- Incr N
- Loop Until Mp3_asend(mp3_array7) = 2 Or Mp3_asend(mp3_array6) = 2
- End If
- Waitms 10
- Call Mp3_setvolume(lautstaerke) 'Lautstärke setzen
- Waitms 50
- Return
- ...
Zeile 3 und Zeile 33. Keine Fehlermeldung, das Programm läuft soweit.
Jetzt kommt's, wenn ich Zeile 3 auskommentiere, weil ich meine, da will ich noch kein timeout, dann gibt es weiterhin keine Fehlermeldung, nur das Programm läuft nicht, weil der Befehl aus Zeile 43 offensichtlich nicht ausgeführt wird. Nehme ich Zeile 33 auch heraus, läuft wieder alles. Lasse ich Zeile 3 drin und nehme Zeile 33 raus, läuft auch alles, also, was das power_enable betrifft. Ich hab' jetzt Zweifel am Rest vom Programm, da es sowieso sehr eigenwillig ist. Um das stackProblem möglichst auszuschalten, hab' ich für mein zweidimensionales array einen Platzhalter eingebaut, damit das 'free sram' ordentlich angezeigt wird. Die stackwerte liegen jetzt bei
$hwstack = 100
$swstack = 100
$framesize = 200
und es ist noch 9% vom ram frei.
Irgendwo mache ich wohl einen grundsätzlichen Fehler, wer kann mir einen Tipp geben?
Raum für Notizen
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------