Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Timer in While-Schleife gelöst

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
funkeld
gesperrt


Anmeldungsdatum: 10.10.2009
Beiträge: 179

BeitragVerfasst am: 10.07.2010, 13:04    Titel: Timer in While-Schleife gelöst Antworten mit Zitat

Hallo, wie kann ich diese Timerabfrage in eine While machen, das die abfrage am Anfang kommt?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
-schumi-



Anmeldungsdatum: 28.10.2009
Beiträge: 131
Wohnort: Südbayern

BeitragVerfasst am: 10.07.2010, 13:40    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 10.07.2010, 14:29    Titel: Antworten mit Zitat


_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
funkeld
gesperrt


Anmeldungsdatum: 10.10.2009
Beiträge: 179

BeitragVerfasst am: 10.07.2010, 16:10    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz