 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
funkeld gesperrt
Anmeldungsdatum: 10.10.2009 Beiträge: 179
|
Verfasst am: 10.07.2010, 13:04 Titel: Timer in While-Schleife gelöst |
|
|
Hallo, wie kann ich diese Timerabfrage in eine While machen, das die abfrage am Anfang kommt? |
|
Nach oben |
|
 |
-schumi-

Anmeldungsdatum: 28.10.2009 Beiträge: 131 Wohnort: Südbayern
|
Verfasst am: 10.07.2010, 13:40 Titel: |
|
|
Code: |
DIM AS SINGLE anftime
anftime = TIMER
WHILE anftime+3.5 < TIMER
' Mach irgendwas
WEND
|
Meinst du sowas?
Währ gut, wenn du deine Frage ein wenig präzisieren könntest..
MfG
-schumi-
ps: Warum das "gelöst" in deinem Threadtitel? |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 10.07.2010, 14:29 Titel: |
|
|
 _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
funkeld gesperrt
Anmeldungsdatum: 10.10.2009 Beiträge: 179
|
Verfasst am: 10.07.2010, 16:10 Titel: |
|
|
Jup, danke.
Hatte ich jetzt auch im Beispiel gefunden.
Bin mit den Timer aber noch nicht so zufrieden.
Ich brauche für eine Y-Pixellinie(110 Pixel) exakt die Zeit : 1/44100*110.25.
Es müssen exakt nach einer Zeit 1/44100 1 y-Pixel gesetzt werden, wobei bei jeden Pixel die Zeit 1/44100 mit dem Timer gemessen werden muss und evtl die Schleife angehalten werden muss.
In der Schleife werden auch noch andere Tätikeiten durchgeführt.
Es wird aus einer Wave 44100hz ein Nipkow-Bild erstellt mit 32 Zeilen.
Wobei die y-Höhe nur durch die Wav(Zeit) bestimmt wird. Es wird also nicht danach gefragt ob zb y=110.
Die x-Linie wird gezählt.
Jedes Bild fängt bei 4x "00000000" an.
Diese Werte müssen auch abgefagt werden, weil sie zur Zeitmessung gehören.
Das Bild ist schon gut zu erkennen.
Es fehlt aber die Präzision des Timers.
Oben und unten haben die letzten 5-6 x-Linien eine leichte Wellenform bis hin zu Zacken.
Durch den Wert "pix" kann ich etwas ausgleichen, die Wellen und Zacken verschwinden aber nicht.
Code: |
#include "fbgfx.bi"
#Include "vbcompat.bi"
#INCLUDE "windows.bi"
#INCLUDE "win/mmsystem.bi"
screen 18,32
VIEW PRINT 15 TO 30
Dim shared as Integer nsamples ,wavlaenge,zaehler,ff,hell,farbe
Dim Shared As Integer x, y, xs, ys,zz
Dim Shared As UInteger wert
dim Shared As byte ptr wavbuffer
Dim shared As String dateiname
Dim Shared img As Byte Ptr
Dim Shared As Double xzeit1,xzeit2,pixelz1,pixelz2,pix,dd
Declare Sub lade_datei()
ff= FreeFile
nsamples = 56
xs=63
ys=110
pixelz1= 1 / 44100 * 110.25
pixelz2= 1 / 44100
dd=3600
pix = dd/ 10000000
hell=100
img=ImageCreate(64,120)
Do
Print "1 = Ende ";"2 = neue Datei"
Input zaehler
If zaehler=1 Then
Exit Do
EndIf
If zaehler=2 Then
DeAllocate(wavbuffer)
lade_datei()
Print
Print "laenge = ";wavlaenge
Print
EndIf
weiter:
while xs > 0
xzeit1 = Timer
While TIMER < (xzeit1 + pixelz1+pix)
xzeit2 = Timer
If nsamples > wavlaenge Then
GoTo ende
EndIf
wert=Peek(UInteger,wavbuffer+nsamples)
If wert = 0 Then
nsamples=nsamples+4
wert=Peek(UInteger,wavbuffer+nsamples)
If wert = 0 Then
nsamples=nsamples+4
wert=Peek(UInteger,wavbuffer+nsamples)
If wert = 0 Then
nsamples=nsamples+4
wert=Peek(UInteger,wavbuffer+nsamples)
If wert = 0 then
nsamples=nsamples+4
While TIMER < (xzeit1 + pixelz2*4)
Wend
GoTo neues_bild
EndIf
EndIf
EndIf
EndIf
farbe=HiByte(wert)
ys=ys-1
PSet (10+xs,10+ys),RGB(farbe+hell,farbe+hell,farbe+hell)
PSet (10+xs-1,10+ys),RGB(farbe+hell,farbe+hell,farbe+hell)
nsamples=nsamples+4
While Timer < (xzeit2 + pixelz2)
Wend
Wend
If MultiKey( FB.SC_q ) Then
dd=dd+1
pix = dd/ 10000000
Print dd
End If
If MultiKey( FB.SC_a ) Then
dd=dd-1
pix = dd/ 10000000
Print dd
End If
ys=110
xs=xs-2
Wend
neues_bild:
ys=110
xs=63
GoTo weiter
ende:
Loop
DeAllocate(wavbuffer)
Sub lade_datei()
Input "Dateiname : ";dateiname
If FileExists( dateiname+".wav" ) Then
Open dateiname+".wav" for Binary as #ff
wavlaenge=LOF(1)
wavbuffer= Allocate(wavlaenge)
Get #ff , ,wavbuffer[0], wavlaenge
Close #ff
Else
Print "Datei ist nicht vorhanden !"
print
Exit sub
EndIf
End Sub
|
|
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|